1. 论坛系统升级为Xenforo,欢迎大家测试!
    排除公告

Asp Com+生成注册码Dll组件代码

本帖由 notnull2006-05-16 发布。版面名称:后端开发

  1. notnull

    notnull New Member

    注册:
    2005-09-27
    帖子:
    11,720
    赞:
    37
    代码:
    Option Explicit
    
    Public myConn As ADODB.Connection
    Public myRs As ADODB.Recordset
    
    Private MyScriptingContext As ScriptingContext
    Private MyApplication As Application
    Private MyRequest As Request
    Private MyResponse As Response
    Private MyServer As Server
    Private MySession As Session
    
    Private Const BITS_TO_A_BYTE = 8
    Private Const BYTES_TO_A_WORD = 4
    Private Const BITS_TO_A_WORD = 32
    
    Private m_lOnBits(30)
    Private m_l2Power(30)
    
    Private Declare Function GetVolumeInformation& Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal pVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long)
    Private Const MAX_FILENAME_LEN = 256
    Private Const GETSERIALPASSWORD = "lxy"
    
    Public Sub OnStartPage(PassedScriptingContext As ScriptingContext)
    Set MyScriptingContext = PassedScriptingContext
    Set MyApplication = MyScriptingContext.Application
    Set MyRequest = MyScriptingContext.Request
    Set MyResponse = MyScriptingContext.Response
    Set MyServer = MyScriptingContext.Server
    Set MySession = MyScriptingContext.Session
    End Sub
    
    Public Sub OnEndPage()
    Set MyScriptingContext = Nothing
    Set MyApplication = Nothing
    Set MyRequest = Nothing
    Set MyResponse = Nothing
    Set MyServer = Nothing
    Set MySession = Nothing
    End Sub
    Private Function LShift(lvalues, iShiftBitss)
     Dim lvalue, iShiftBits: lvalue = lvalues: iShiftBits = iShiftBitss
      If iShiftBits = 0 Then
        LShift = lvalue
        Exit Function
      ElseIf iShiftBits = 31 Then
        If lvalue And 1 Then
          LShift = &H80000000
        Else
          LShift = 0
        End If
        Exit Function
      ElseIf iShiftBits < 0 Or iShiftBits > 31 Then
        Err.Raise 6
      End If
    
      If (lvalue And m_l2Power(31 - iShiftBits)) Then
        LShift = ((lvalue And m_lOnBits(31 - (iShiftBits + 1))) * m_l2Power(iShiftBits)) Or &H80000000
      Else
        LShift = ((lvalue And m_lOnBits(31 - iShiftBits)) * m_l2Power(iShiftBits))
      End If
    End Function
    
    Private Function RShift(lvalues, iShiftBitss)
     Dim lvalue, iShiftBits: lvalue = lvalues: iShiftBits = iShiftBitss
      If iShiftBits = 0 Then
        RShift = lvalue
        Exit Function
      ElseIf iShiftBits = 31 Then
        If lvalue And &H80000000 Then
          RShift = 1
        Else
          RShift = 0
        End If
        Exit Function
      ElseIf iShiftBits < 0 Or iShiftBits > 31 Then
        Err.Raise 6
      End If
      
      RShift = (lvalue And &H7FFFFFFE) \ m_l2Power(iShiftBits)
    
      If (lvalue And &H80000000) Then
        RShift = (RShift Or (&H40000000 \ m_l2Power(iShiftBits - 1)))
      End If
    End Function
    
    Private Function RotateLeft(lvalues, iShiftBitss)
     Dim lvalue, iShiftBits: lvalue = lvalues: iShiftBits = iShiftBitss
     RotateLeft = LShift(lvalue, iShiftBits) Or RShift(lvalue, (32 - iShiftBits))
    End Function
    
    Private Function AddUnsigned(lXs, lYs)
     Dim lX4, lY4, lX8, lY8, lResult, lX, lY
     lX = lXs: lY = lYs
      lX8 = lX And &H80000000
      lY8 = lY And &H80000000
      lX4 = lX And &H40000000
      lY4 = lY And &H40000000
    
      lResult = (lX And &H3FFFFFFF) + (lY And &H3FFFFFFF)
    
      If lX4 And lY4 Then
        lResult = lResult Xor &H80000000 Xor lX8 Xor lY8
      ElseIf lX4 Or lY4 Then
        If lResult And &H40000000 Then
          lResult = lResult Xor &HC0000000 Xor lX8 Xor lY8
        Else
          lResult = lResult Xor &H40000000 Xor lX8 Xor lY8
        End If
      Else
        lResult = lResult Xor lX8 Xor lY8
      End If
    
      AddUnsigned = lResult
    End Function
    
    Private Function md5_F(x, y, z)
      md5_F = (x And y) Or ((Not x) And z)
    End Function
    
    Private Function md5_G(x, y, z)
      md5_G = (x And z) Or (y And (Not z))
    End Function
    
    Private Function md5_H(x, y, z)
      md5_H = (x Xor y Xor z)
    End Function
    
    Private Function md5_I(x, y, z)
      md5_I = (y Xor (x Or (Not z)))
    End Function
    
    Private Sub md5_FF(A, b, C, d, x, S, ac)
      A = AddUnsigned(A, AddUnsigned(AddUnsigned(md5_F(b, C, d), x), ac))
      A = RotateLeft(A, S)
      A = AddUnsigned(A, b)
    End Sub
    
    Private Sub md5_GG(A, b, C, d, x, S, ac)
      A = AddUnsigned(A, AddUnsigned(AddUnsigned(md5_G(b, C, d), x), ac))
      A = RotateLeft(A, S)
      A = AddUnsigned(A, b)
    End Sub
    
    Private Sub md5_HH(A, b, C, d, x, S, ac)
      A = AddUnsigned(A, AddUnsigned(AddUnsigned(md5_H(b, C, d), x), ac))
      A = RotateLeft(A, S)
      A = AddUnsigned(A, b)
    End Sub
    
    Private Sub md5_II(A, b, C, d, x, S, ac)
      A = AddUnsigned(A, AddUnsigned(AddUnsigned(md5_I(b, C, d), x), ac))
      A = RotateLeft(A, S)
      A = AddUnsigned(A, b)
    End Sub
    
    Private Function ConvertToWordArray(sMessages)
     Dim lMessageLength, lNumberOfWords, lWordArray(), lBytePosition, lByteCount, lWordCount, sMessage
     sMessage = sMessages
      
      Const MODULUS_BITS = 512
      Const CONGRUENT_BITS = 448
      
      lMessageLength = Len(sMessage)
      
      lNumberOfWords = (((lMessageLength + ((MODULUS_BITS - CONGRUENT_BITS) \ BITS_TO_A_BYTE)) \ (MODULUS_BITS \ BITS_TO_A_BYTE)) + 1) * (MODULUS_BITS \ BITS_TO_A_WORD)
      ReDim lWordArray(lNumberOfWords - 1)
      
      lBytePosition = 0
      lByteCount = 0
      Do Until lByteCount >= lMessageLength
        lWordCount = lByteCount \ BYTES_TO_A_WORD
        lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE
        lWordArray(lWordCount) = lWordArray(lWordCount) Or LShift(Asc(Mid(sMessage, lByteCount + 1, 1)), lBytePosition)
        lByteCount = lByteCount + 1
      Loop
    
      lWordCount = lByteCount \ BYTES_TO_A_WORD
      lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE
    
      lWordArray(lWordCount) = lWordArray(lWordCount) Or LShift(&H80, lBytePosition)
    
      lWordArray(lNumberOfWords - 2) = LShift(lMessageLength, 3)
      lWordArray(lNumberOfWords - 1) = RShift(lMessageLength, 29)
      
      ConvertToWordArray = lWordArray
    End Function
    
    Private Function WordToHex(lvalue)
      Dim lByte, lCount
      For lCount = 0 To 3
        lByte = RShift(lvalue, lCount * BITS_TO_A_BYTE) And m_lOnBits(BITS_TO_A_BYTE - 1)
        WordToHex = WordToHex & Right("0" & Hex(lByte), 2)
      Next
    End Function
    
    Public Function MD5(sMessages, sSort)
     Dim sMessage: sMessage = sMessages
      m_lOnBits(0) = CLng(1)
      m_lOnBits(1) = CLng(3)
      m_lOnBits(2) = CLng(7)
      m_lOnBits(3) = CLng(15)
      m_lOnBits(4) = CLng(31)
      m_lOnBits(5) = CLng(63)
      m_lOnBits(6) = CLng(127)
      m_lOnBits(7) = CLng(255)
      m_lOnBits(8) = CLng(511)
      m_lOnBits(9) = CLng(1023)
      m_lOnBits(10) = CLng(2047)
      m_lOnBits(11) = CLng(4095)
      m_lOnBits(12) = CLng(8191)
      m_lOnBits(13) = CLng(16383)
      m_lOnBits(14) = CLng(32767)
      m_lOnBits(15) = CLng(65535)
      m_lOnBits(16) = CLng(131071)
      m_lOnBits(17) = CLng(262143)
      m_lOnBits(18) = CLng(524287)
      m_lOnBits(19) = CLng(1048575)
      m_lOnBits(20) = CLng(2097151)
      m_lOnBits(21) = CLng(4194303)
      m_lOnBits(22) = CLng(8388607)
      m_lOnBits(23) = CLng(16777215)
      m_lOnBits(24) = CLng(33554431)
      m_lOnBits(25) = CLng(67108863)
      m_lOnBits(26) = CLng(134217727)
      m_lOnBits(27) = CLng(268435455)
      m_lOnBits(28) = CLng(536870911)
      m_lOnBits(29) = CLng(1073741823)
      m_lOnBits(30) = CLng(2147483647)
      
      m_l2Power(0) = CLng(1)
      m_l2Power(1) = CLng(2)
      m_l2Power(2) = CLng(4)
      m_l2Power(3) = CLng(8)
      m_l2Power(4) = CLng(16)
      m_l2Power(5) = CLng(32)
      m_l2Power(6) = CLng(64)
      m_l2Power(7) = CLng(128)
      m_l2Power(8) = CLng(256)
      m_l2Power(9) = CLng(512)
      m_l2Power(10) = CLng(1024)
      m_l2Power(11) = CLng(2048)
      m_l2Power(12) = CLng(4096)
      m_l2Power(13) = CLng(8192)
      m_l2Power(14) = CLng(16384)
      m_l2Power(15) = CLng(32768)
      m_l2Power(16) = CLng(65536)
      m_l2Power(17) = CLng(131072)
      m_l2Power(18) = CLng(262144)
      m_l2Power(19) = CLng(524288)
      m_l2Power(20) = CLng(1048576)
      m_l2Power(21) = CLng(2097152)
      m_l2Power(22) = CLng(4194304)
      m_l2Power(23) = CLng(8388608)
      m_l2Power(24) = CLng(16777216)
      m_l2Power(25) = CLng(33554432)
      m_l2Power(26) = CLng(67108864)
      m_l2Power(27) = CLng(134217728)
      m_l2Power(28) = CLng(268435456)
      m_l2Power(29) = CLng(536870912)
      m_l2Power(30) = CLng(1073741824)
    
      Dim x, k, AA, BB, CC, DD, A, b, C, d
      
      Const S11 = 7
      Const S12 = 12
      Const S13 = 17
      Const S14 = 22
      Const S21 = 5
      Const S22 = 9
      Const S23 = 14
      Const S24 = 20
      Const S31 = 4
      Const S32 = 11
      Const S33 = 16
      Const S34 = 23
      Const S41 = 6
      Const S42 = 10
      Const S43 = 15
      Const S44 = 21
    
      x = ConvertToWordArray(sMessage)
      
      A = &H67452301
      b = &HEFCDAB89
      C = &H98BADCFE
      d = &H10325476
    
      For k = 0 To UBound(x) Step 16
        AA = A
        BB = b
        CC = C
        DD = d
      
        md5_FF A, b, C, d, x(k + 0), S11, &HD76AA478
        md5_FF d, A, b, C, x(k + 1), S12, &HE8C7B756
        md5_FF C, d, A, b, x(k + 2), S13, &H242070DB
        md5_FF b, C, d, A, x(k + 3), S14, &HC1BDCEEE
        md5_FF A, b, C, d, x(k + 4), S11, &HF57C0FAF
        md5_FF d, A, b, C, x(k + 5), S12, &H4787C62A
        md5_FF C, d, A, b, x(k + 6), S13, &HA8304613
        md5_FF b, C, d, A, x(k + 7), S14, &HFD469501
        md5_FF A, b, C, d, x(k + 8), S11, &H698098D8
        md5_FF d, A, b, C, x(k + 9), S12, &H8B44F7AF
        md5_FF C, d, A, b, x(k + 10), S13, &HFFFF5BB1
        md5_FF b, C, d, A, x(k + 11), S14, &H895CD7BE
        md5_FF A, b, C, d, x(k + 12), S11, &H6B901122
        md5_FF d, A, b, C, x(k + 13), S12, &HFD987193
        md5_FF C, d, A, b, x(k + 14), S13, &HA679438E
        md5_FF b, C, d, A, x(k + 15), S14, &H49B40821
      
        md5_GG A, b, C, d, x(k + 1), S21, &HF61E2562
        md5_GG d, A, b, C, x(k + 6), S22, &HC040B340
        md5_GG C, d, A, b, x(k + 11), S23, &H265E5A51
        md5_GG b, C, d, A, x(k + 0), S24, &HE9B6C7AA
        md5_GG A, b, C, d, x(k + 5), S21, &HD62F105D
        md5_GG d, A, b, C, x(k + 10), S22, &H2441453
        md5_GG C, d, A, b, x(k + 15), S23, &HD8A1E681
        md5_GG b, C, d, A, x(k + 4), S24, &HE7D3FBC8
        md5_GG A, b, C, d, x(k + 9), S21, &H21E1CDE6
        md5_GG d, A, b, C, x(k + 14), S22, &HC33707D6
        md5_GG C, d, A, b, x(k + 3), S23, &HF4D50D87
        md5_GG b, C, d, A, x(k + 8), S24, &H455A14ED
        md5_GG A, b, C, d, x(k + 13), S21, &HA9E3E905
        md5_GG d, A, b, C, x(k + 2), S22, &HFCEFA3F8
        md5_GG C, d, A, b, x(k + 7), S23, &H676F02D9
        md5_GG b, C, d, A, x(k + 12), S24, &H8D2A4C8A
          
        md5_HH A, b, C, d, x(k + 5), S31, &HFFFA3942
        md5_HH d, A, b, C, x(k + 8), S32, &H8771F681
        md5_HH C, d, A, b, x(k + 11), S33, &H6D9D6122
        md5_HH b, C, d, A, x(k + 14), S34, &HFDE5380C
        md5_HH A, b, C, d, x(k + 1), S31, &HA4BEEA44
        md5_HH d, A, b, C, x(k + 4), S32, &H4BDECFA9
        md5_HH C, d, A, b, x(k + 7), S33, &HF6BB4B60
        md5_HH b, C, d, A, x(k + 10), S34, &HBEBFBC70
        md5_HH A, b, C, d, x(k + 13), S31, &H289B7EC6
        md5_HH d, A, b, C, x(k + 0), S32, &HEAA127FA
        md5_HH C, d, A, b, x(k + 3), S33, &HD4EF3085
        md5_HH b, C, d, A, x(k + 6), S34, &H4881D05
        md5_HH A, b, C, d, x(k + 9), S31, &HD9D4D039
        md5_HH d, A, b, C, x(k + 12), S32, &HE6DB99E5
        md5_HH C, d, A, b, x(k + 15), S33, &H1FA27CF8
        md5_HH b, C, d, A, x(k + 2), S34, &HC4AC5665
      
        md5_II A, b, C, d, x(k + 0), S41, &HF4292244
        md5_II d, A, b, C, x(k + 7), S42, &H432AFF97
        md5_II C, d, A, b, x(k + 14), S43, &HAB9423A7
        md5_II b, C, d, A, x(k + 5), S44, &HFC93A039
        md5_II A, b, C, d, x(k + 12), S41, &H655B59C3
        md5_II d, A, b, C, x(k + 3), S42, &H8F0CCC92
        md5_II C, d, A, b, x(k + 10), S43, &HFFEFF47D
        md5_II b, C, d, A, x(k + 1), S44, &H85845DD1
        md5_II A, b, C, d, x(k + 8), S41, &H6FA87E4F
        md5_II d, A, b, C, x(k + 15), S42, &HFE2CE6E0
        md5_II C, d, A, b, x(k + 6), S43, &HA3014314
        md5_II b, C, d, A, x(k + 13), S44, &H4E0811A1
        md5_II A, b, C, d, x(k + 4), S41, &HF7537E82
        md5_II d, A, b, C, x(k + 11), S42, &HBD3AF235
        md5_II C, d, A, b, x(k + 2), S43, &H2AD7D2BB
        md5_II b, C, d, A, x(k + 9), S44, &HEB86D391
      
        A = AddUnsigned(A, AA)
        b = AddUnsigned(b, BB)
        C = AddUnsigned(C, CC)
        d = AddUnsigned(d, DD)
      Next
      
      Select Case sSort
      Case "short"
       MD5 = LCase(WordToHex(b) & WordToHex(C))
      Case "pay"
       MD5 = LCase(WordToHex(A) & WordToHex(b) & WordToHex(d))
      Case "long"
       MD5 = LCase(WordToHex(A) & WordToHex(b) & WordToHex(C) & WordToHex(d))
      Case Else
       MD5 = sMessage
      End Select
    End Function
    
    
    Public Function DriveSerial(ByVal sDrv As String) As Long  
    
      Dim RetVal As Long
      Dim str As String * MAX_FILENAME_LEN
      Dim str2 As String * MAX_FILENAME_LEN
      Dim A As Long
      Dim b As Long
    
      Call GetVolumeInformation(sDrv & ":\", str, MAX_FILENAME_LEN, RetVal, A, b, str2, MAX_FILENAME_LEN)
      DriveSerial = RetVal
      
    End Function
    
    
    Public Function JaPass()
    Dim Password As String
    Dim A As String
    Dim ObjStream As Object
    Set ObjStream = CreateObject("ADODB.Stream")
    ObjStream.Open
    ObjStream.Type = 1
    ObjStream.LoadFromFile App.Path & "\gdsspt.com"
    Password = ObjStream.Read
    
    a = CStr(StrToByte(Chr(0)))
    Password = Left(Password, 16) + "************"
    Password = Left(Password, 19)
    JaPass = Password
    End Function
    Function StrToByte(Tbody)
      Dim ADS As Object
      Set ADS = CreateObject("Adodb.Stream")
      ADS.Type = 2
      ADS.Mode = 3
      ADS.Charset = "GB2312"
      ADS.Open
      ADS.WriteText Tbody
      ADS.Position = 0
      ADS.Type = 1
      StrToByte = ADS.Read()
      ADS.Close
    End Function
    
    Public Function Cs(S As String)
    Dim SinNum As String
    SinNum = CStr(DriveSerial("c")) + "*********"
    SinNum = MD5(SinNum, "long")
    If S = SinNum Then
    Cs = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & MyServer.MapPath("data.mdb") & ";Jet OLEDB:Database Password=" & JaPass() & " "
    Else
    Cs = "....."
    End If
    End Function
    
    Public Function Ckey(C As String)
    Dim SinNum1 As String
    SinNum1 = CStr(DriveSerial("c")) + "*********"
    SinNum1 = MD5(SinNum1, "long")
    If C = SinNum1 Then
    Ckey = "yes"
    Else
    Ckey = "No"
    End If
    End Function
    
    Public Function RKey()
    RKey = CStr(DriveSerial("c"))
    End Function