亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? modaccessfinality.bas

?? 關于access數據庫解密的源碼
?? BAS
字號:
Attribute VB_Name = "modAccessFinality"
Option Explicit

#Const USE_DAO = 1
#If USE_DAO Then
  Public gDAO       As DAO.Database
#Else
  Public gADO       As ADODB.Connection
#End If
Public gbExit As Boolean
Public glCounts As Long
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Public Function INNER_GetFileName(ByVal fbOpen As Boolean, _
                                  Optional ByVal fsFilter As String, _
                                  Optional ByVal fsDefaultExt As String, _
                                  Optional ByVal fsDefFile As String, _
                                  Optional ByVal fsDialogTitle As String) As String

   On Error GoTo ErrLabel
    Dim iReplace As Integer
    With frmMain.CommonDialog1
        If fsFilter = "" Then
          .Filter = "所有文件 (*.*)|*.*"
        Else
          .Filter = fsFilter
        End If
        .Flags = cdlOFNHideReadOnly Or cdlOFNExplorer
        .CancelError = True
        .DefaultExt = fsDefaultExt
        If fsDialogTitle <> "" Then .DialogTitle = fsDialogTitle
        If fsDefFile <> "" Then .FileName = fsDefFile
        Do
          If fbOpen Then
            .ShowOpen
          Else
            .ShowSave
          End If
          If Len(.FileName) = 0 Then
            Exit Function
          End If
          If Not fbOpen Then
            If Len(Dir(.FileName)) > 0 Then
               iReplace = MsgBox("代替存在的 " + .FileName + " 嗎?", vbYesNoCancel + vbQuestion)
            Else
               iReplace = 0
            End If
            If iReplace = vbCancel Then
              Exit Function
            End If
          Else
            If Not (Len(Dir(.FileName)) > 0) Then Exit Function
          End If
        Loop While iReplace = vbNo  '不覆蓋
        If Not fbOpen Then
         If iReplace = vbYes Then
            Kill .FileName
         End If
        End If
        INNER_GetFileName = .FileName
    End With
ErrLabel:
  Select Case Err.Number
    Case 75
      MsgBox Err.Description & ",請重新選擇文件路徑!", vbExclamation
  End Select
End Function

'fsRetVer為返回的數據庫版本,可用于創建連接
'fbDirect=True,直接給出密碼,不使用暴力破解
Public Function INNER_GetAccessPwd(fsDBsee As String, _
                                   fsRetVer As String, _
                                   Optional fbDirect As Boolean = True) As String
    Dim bytVer(2)      As Byte
    Dim bytDB_ID       As Byte
    Dim bytFile(39)    As Byte
    Dim bytDateKey(127) As Byte
    Dim l              As Long
    Dim n              As Long
    Dim iFreeFile      As Integer
    Dim sFileFlag      As String * 15
    
    Dim sKey2K         As String
    Dim sKey97         As String
    Dim bytKey()       As Byte
    Dim bytRslt()      As Byte
    Dim lAscii         As Long
    Dim lTemp          As Long
    Dim sPassword      As String
    
    On Error GoTo ErrLabel
    
    iFreeFile = FreeFile
    Open fsDBsee For Binary As #iFreeFile
    
    l = LOF(iFreeFile)
    
    If l > &H140 Then
      Get #iFreeFile, &H43, bytFile
      Get #iFreeFile, &H9D, bytVer
      Get #iFreeFile, &H15, bytDB_ID
      Get #iFreeFile, &H19, bytDateKey
      Get #iFreeFile, &H5, sFileFlag
    End If
    Close #iFreeFile
    
    If sFileFlag <> "Standard Jet DB" Then
      sPassword = "非ACCESS數據庫文件"
      '實際上,文件開始的0x0001標志也可以做為判斷依據
      GoTo Endlabel
    End If
    
    sKey2K = "3074EC37EBCB9CFA70D128E6A5398A60E21B7B3643FDDFB1C17B13437920B13382EE795B243A7C2A"
    sKey97 = "86FBEC375D449CFAC65E28E613"
    
    If bytVer(0) = 0 Then
      fsRetVer = "3.51"
    Else
      'Microsoft 似乎想在今后的版本中用該數據表示建立ADO的連接
      fsRetVer = Chr(bytVer(0)) & Chr(bytVer(1)) & Chr(bytVer(2))
    End If
    
    fsRetVer = IIf(bytDB_ID = 0, "ACCESS_97;", "ACCESS_2K;") & fsRetVer
    
    If (bytDB_ID = 1) And fbDirect Then
      sPassword = INNER_GetPwdDirect(bytDateKey)
      GoTo Endlabel
    End If
    
    If bytDB_ID = 1 Then
      '以下為解密過程
      If INNER_CanOpenDateBase(fsDBsee, "") Then '先假定數據庫無密碼
        GoTo Endlabel
      End If
      
      bytKey = INNER_Hex2ByteA(sKey2K)
      ReDim bytRslt(UBound(bytKey))
      For l = 0 To UBound(bytKey)
        bytRslt(l) = bytKey(l) Xor bytFile(l)
      Next l
      
      For n = 0 To glCounts
        If gbExit Then
          Exit Function
        End If
        sPassword = ""
        
        '這里,n值與本數據庫創建的時間是相關的,n值一旦確定,密碼便迎刃而解了。
        '由于此處演示暴力破解,因此n值的解法從略
        
        frmMain.Shape1.Width = frmMain.lblProcess.Width * (n + 1) / glCounts
'        bytTemp = 0
        For l = 0 To UBound(bytKey) \ 2
          If l Mod 2 = 0 Then
            If glCounts = 255 Then
              lAscii = bytRslt(2 * l) Xor n
            Else
              lAscii = (CLng(bytRslt(2 * l + 1)) * 256 + bytRslt(2 * l)) Xor n
            End If
            lTemp = lTemp Xor lAscii
          Else
            lAscii = CLng(bytRslt(2 * l + 1)) * 256 + bytRslt(2 * l)
          End If
          If lAscii <> 0 Then
            '在2000的數據庫中,一個雙字節的密碼只占用一個位置。
            '這就是當前市面上大部分解密軟件無法解密中文密碼的關鍵。
            '因此,一個2000數據庫,可以最長使用20個中文字來組成密碼。
            'VB中恰好有ChrW來代替API  WideCharToMultiByte 對Unicode字節進行轉換
            sPassword = sPassword & ChrW(lAscii)
          End If
        Next l
        If sPassword <> "" Then
          If INNER_CanOpenDateBase(fsDBsee, sPassword) Then
            GoTo Endlabel
          End If
        End If
      Next n
      If glCounts = 255 Then
        sPassword = "未找到密碼,請嘗試更多的密碼!"
      End If
    ElseIf bytDB_ID = 0 Then
      bytKey = INNER_Hex2ByteA(sKey97)
      For l = 0 To UBound(bytKey)
        lAscii = bytKey(l) Xor bytFile(l)
        If lAscii <> 0 Then
          sPassword = sPassword & Chr(lAscii)
        End If
      Next l
    Else
      sPassword = "非ACCESS數據庫文件"
    End If
    
    If sPassword = "" Then sPassword = "無密碼"
    
Endlabel:
    INNER_GetAccessPwd = sPassword
    Exit Function
ErrLabel:
    INNER_GetAccessPwd = Err.Description
End Function

Public Function INNER_GetPwdDirect(fbytFile() As Byte) As String
    Dim l As Long
    Dim bytEncriptKey(3) As Byte '初始密碼
    Dim bytEncriptRet(257) As Byte
    Dim dbl As Double
    Dim lKey As Long
    Dim lRslt(19)    As Long
    Dim sPassword As String
    
    bytEncriptKey(0) = &HC7
    bytEncriptKey(1) = &HDA
    bytEncriptKey(2) = &H39
    bytEncriptKey(3) = &H6B
    
    '先直接使用上面的初始密碼通過查表的方法形成新的密鑰
    '本函數有點DES算法的味道
    Call LoGetEncryptStr(bytEncriptKey, bytEncriptRet, 4)
    '利用上面形成的密鑰對文件中的加密字串fbytFile進行解密,得到結果bytEncriptRet
    Call LoGetKey(bytEncriptRet, fbytFile, &H80)
    '比爾的原版ACCESS算法中,使用了數學協處理器的浮點指令FISTP、FSTCW等,
    '但我發現,采用CopyMemory方法有種殊途同歸的感覺
    CopyMemory ByVal VarPtr(dbl), ByVal VarPtr(fbytFile(0)) + 90, 8
    'lKey是整個過程的關鍵,如果不是跟蹤到核心算法,我是永遠猜不透這個數值的來歷的。
    '這就是我先前使用暴力的原因。
    lKey = Int(dbl)
    For l = 0 To 19
      lRslt(l) = fbytFile(l * 2 + 42) + 256 * CLng(fbytFile(l * 2 + 43))
      If l Mod 2 = 0 Then
        lRslt(l) = lRslt(l) Xor lKey
      End If
      If lRslt(l) <> 0 Then
        '用ChrW來代替WideCharToMultiByte對Unicode字節進行轉換
        sPassword = sPassword & ChrW(lRslt(l))
      End If
    Next l
    INNER_GetPwdDirect = sPassword
End Function

Public Function INNER_CanOpenDateBase(fsFilename As String, fsPasswd As String) As Boolean
  On Error GoTo ErrLabel
  Dim sConn As String
  '通過暴力來測試連接是否正確的方式很多,這里,可以根據情況確定使用ADO或DAO來測試
  '實際上,也可以使用對Microsoft Access 10.0 Object Library的引用來進行測試。
  '這里,大家也可以學習到如何建立ADO或DAO的連接字串
  #If USE_DAO Then
    Set gDAO = DAO.OpenDatabase(fsFilename, False, 0, ";pwd=" & fsPasswd)
    INNER_CanOpenDateBase = True
    Set gDAO = Nothing
  #Else
    Set gADO = New ADODB.Connection
    sConn = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & fsFilename & _
            ";Jet OLEDB:Database Password =" & fsPasswd & ";"
    gADO.Open sConn
    INNER_CanOpenDateBase = True
    Set gADO = Nothing
  #End If
ErrLabel:
  DoEvents
End Function

'實用函數,將16進制的字符串轉換成字節型的數組
Public Function INNER_Hex2ByteA(fsData As String) As Byte()
    Dim i As Integer
    Dim btyTemp() As Byte
    
    If fsData = "" Then fsData = 0
    If Len(fsData) < 2 Then
      ReDim btyTemp(0)
      btyTemp(0) = CByte("&H" & fsData)
    Else
      ReDim btyTemp(0 To Len(fsData) \ 2 - 1)
      For i = 0 To Len(fsData) \ 2 - 1
          btyTemp(i) = CByte("&H" & Mid(fsData, (i + 1) * 2 - 1, 2))
      Next i
    End If
    INNER_Hex2ByteA = btyTemp
End Function

'本函數將得到解密用的KEY
Private Function LoGetEncryptStr(fbytEncriptKey() As Byte, fbytEncriptRet() As Byte, flModeValue As Long)
  Dim l As Long
  Dim lTemp1 As Long
  Dim lTemp2 As Long
  Dim lTemp3 As Long
  Dim lTemp4 As Long
  Dim lTemp5 As Long
  
  For l = 0 To 255
    fbytEncriptRet(l) = l
  Next l
  lTemp1 = 0
  For l = 0 To 255
     lTemp1 = lTemp2
     lTemp1 = fbytEncriptKey(lTemp1)
     lTemp4 = fbytEncriptRet(l)
     lTemp1 = lTemp1 + lTemp4
     lTemp4 = lTemp3
     lTemp1 = lTemp1 + lTemp4
     lTemp1 = lTemp1 And &H800000FF
     lTemp3 = lTemp1
     lTemp1 = fbytEncriptRet(l)
     lTemp5 = lTemp1
     lTemp1 = lTemp3
     lTemp1 = fbytEncriptRet(lTemp1)
     fbytEncriptRet(l) = lTemp1
     lTemp4 = lTemp3
     fbytEncriptRet(lTemp4) = lTemp5
     lTemp1 = lTemp2
     lTemp1 = lTemp1 + 1
     lTemp4 = lTemp1 Mod flModeValue
     lTemp2 = lTemp4
  Next l
End Function

Private Function LoGetKey(fbytEncriptKey() As Byte, fbytKeyRet() As Byte, flMaxValue As Long)
   Dim l As Long
   Dim lTemp1 As Long
   Dim lTemp2 As Long
   Dim lTemp3 As Long
   Dim lTemp4 As Long
   Dim lTemp5 As Long
   Dim lTemp6 As Long
   Dim lTemp7 As Long
   Dim lTemp8 As Long
  
  lTemp4 = fbytEncriptKey(&H100)
  lTemp1 = fbytEncriptKey(&H101)
   
  For l = 1 To flMaxValue
    lTemp4 = lTemp4 + 1
    lTemp4 = lTemp4 And &H800000FF
    lTemp3 = lTemp4 And &HFF
    lTemp5 = fbytEncriptKey(lTemp3)
    lTemp1 = lTemp1 And &HFF
    lTemp5 = lTemp5 + lTemp1
    lTemp1 = lTemp5 And &H800000FF
    lTemp6 = fbytEncriptKey(lTemp4)
    lTemp5 = fbytEncriptKey(lTemp1)
    fbytEncriptKey(lTemp3) = lTemp5
    lTemp2 = lTemp1
    fbytEncriptKey(lTemp2) = lTemp6
    lTemp5 = fbytEncriptKey(lTemp3)
    lTemp3 = fbytEncriptKey(lTemp1 And &HFF)
    lTemp5 = lTemp5 + lTemp3
    lTemp5 = lTemp5 And &H800000FF
    lTemp7 = lTemp5
    lTemp3 = lTemp8
    lTemp5 = fbytEncriptKey(lTemp5)
    fbytKeyRet(lTemp3) = fbytKeyRet(lTemp3) Xor lTemp5
    lTemp8 = lTemp8 + 1
  Next l
  fbytEncriptKey(&H100) = lTemp4
  fbytEncriptKey(&H101) = lTemp1
End Function

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品ww久久久久久p站 | 美女被吸乳得到大胸91| 国产呦精品一区二区三区网站| 国产91露脸合集magnet| 欧美视频中文一区二区三区在线观看| 久久午夜老司机| 日本中文字幕一区| 日本电影欧美片| 国产日韩欧美精品一区| 麻豆精品国产传媒mv男同 | 国产乱码精品1区2区3区| 欧美日韩中文字幕一区| 亚洲欧洲在线观看av| 久久福利视频一区二区| 欧美酷刑日本凌虐凌虐| 亚洲综合在线电影| 91在线porny国产在线看| 国产亚洲欧美中文| 国产一区二区在线看| 欧美成人伊人久久综合网| 亚洲va欧美va人人爽| 在线观看一区日韩| 成人欧美一区二区三区黑人麻豆 | 欧美在线观看你懂的| 国产精品天干天干在观线| 国产一区91精品张津瑜| 日韩你懂的在线观看| 免费在线观看精品| 欧美精品丝袜中出| 午夜精品免费在线| 欧美一区三区四区| 另类小说色综合网站| 日韩欧美专区在线| 精品一区二区免费在线观看| 日韩久久免费av| 国内成人精品2018免费看| 久久新电视剧免费观看| 国产福利精品一区二区| 国产精品传媒入口麻豆| 99麻豆久久久国产精品免费优播| 亚洲视频小说图片| 欧美日韩在线不卡| 日韩在线观看一区二区| 欧美大片免费久久精品三p| 裸体一区二区三区| 国产午夜精品一区二区| 99热这里都是精品| 午夜激情综合网| 亚洲精品在线一区二区| 粉嫩av一区二区三区粉嫩| 亚洲欧美视频在线观看| 在线播放日韩导航| 国产专区欧美精品| 亚洲欧洲韩国日本视频| 精品视频一区二区三区免费| 久久99国产精品久久| 欧美激情在线免费观看| 欧美在线观看一区| 经典三级视频一区| 国产精品久久久久久久久久久免费看 | 成人app下载| 一区二区三区四区精品在线视频| 欧美日韩一级二级三级| 国产在线精品一区二区三区不卡| 国产精品久久久久一区二区三区共| 在线精品视频一区二区三四| 国产一区二区在线免费观看| 亚洲另类春色国产| 久久女同互慰一区二区三区| 欧美伊人精品成人久久综合97| 麻豆一区二区三| 17c精品麻豆一区二区免费| 9191精品国产综合久久久久久| 国产精品99久久久久久似苏梦涵| 亚洲电影第三页| 中文字幕不卡在线| 337p亚洲精品色噜噜| 成人性生交大片免费看中文| 秋霞电影一区二区| 亚洲欧美视频在线观看| wwwwww.欧美系列| 欧美日韩久久久一区| av一区二区三区| 韩国成人精品a∨在线观看| 午夜精品一区在线观看| 亚洲免费观看高清完整版在线观看熊 | 国产精品天天摸av网| 日韩一级欧美一级| 在线视频欧美区| 成人小视频在线| 蜜桃传媒麻豆第一区在线观看| 亚洲人成人一区二区在线观看| 久久这里只有精品视频网| 欧美三电影在线| 91美女福利视频| 成人午夜在线播放| 国产精品中文字幕一区二区三区| 婷婷六月综合网| 日韩理论电影院| 国产精品乱码久久久久久| 久久先锋影音av| 日韩欧美成人一区| 日韩欧美不卡在线观看视频| 欧美日韩免费一区二区三区| 91久久精品一区二区二区| 成人av综合一区| eeuss国产一区二区三区| 国产99久久久国产精品免费看| 激情亚洲综合在线| 久久99精品久久久久久| 人妖欧美一区二区| 日本美女一区二区三区视频| 亚洲va欧美va人人爽午夜| 午夜精品在线视频一区| 丝袜诱惑亚洲看片| 日韩专区在线视频| 日本aⅴ亚洲精品中文乱码| 亚洲成人免费看| 青娱乐精品在线视频| 美脚の诱脚舐め脚责91| 国内精品伊人久久久久av影院| 激情av综合网| 国产精品99久久久久久久女警| 国产999精品久久久久久绿帽| 成人丝袜视频网| 色呦呦网站一区| 欧美精品第1页| 精品盗摄一区二区三区| 中文av一区二区| 亚洲精品国产精华液| 婷婷开心久久网| 国产一区二区三区免费播放| 夫妻av一区二区| 91福利在线导航| 日韩精品影音先锋| 国产欧美视频在线观看| 亚洲色图在线视频| 日韩成人一级大片| 狠狠色狠狠色综合日日91app| 成人小视频免费在线观看| 欧美色大人视频| 久久久久久久久久久黄色| 亚洲同性gay激情无套| 香蕉成人啪国产精品视频综合网| 免费看欧美美女黄的网站| 国产成人av福利| 欧美色网一区二区| 久久综合狠狠综合| 樱花影视一区二区| 久久99精品一区二区三区| 成人国产精品免费网站| 欧美精品乱码久久久久久按摩| 精品国产麻豆免费人成网站| 国产精品久久久久久久久晋中 | 成人免费高清视频在线观看| 日本精品一区二区三区高清| 欧美不卡一区二区| 一区二区三区四区在线| 国产一区久久久| 欧美日韩专区在线| 国产精品丝袜黑色高跟| 青青草97国产精品免费观看无弹窗版| 成人一区二区视频| 日韩久久精品一区| 亚洲大片精品永久免费| 成人教育av在线| 精品国产免费人成电影在线观看四季| 一区二区三区四区中文字幕| 国产精品一级片| 91精品国产欧美一区二区成人| 亚洲欧美激情在线| 国产精品综合二区| 91精品国产综合久久香蕉的特点| 亚洲精品中文字幕乱码三区| 风间由美一区二区av101| 日韩一区二区在线观看视频 | 91精品国产欧美一区二区成人| 亚洲色欲色欲www在线观看| 国产乱码精品一区二区三| 91精品欧美综合在线观看最新| 亚洲裸体xxx| 成人动漫一区二区在线| 精品国产乱子伦一区| 日韩国产欧美在线播放| 欧美视频三区在线播放| 亚洲激情自拍偷拍| 97精品国产97久久久久久久久久久久| 久久久久久久久久久黄色| 美女mm1313爽爽久久久蜜臀| 欧美一区二区三区视频免费| 首页国产欧美久久| 欧美日韩国产免费| 性欧美疯狂xxxxbbbb| 欧美日韩高清一区| 亚洲va国产va欧美va观看| 91久久免费观看| 亚洲成a人在线观看| 欧美人与性动xxxx| 午夜精品久久久久影视| 69av一区二区三区|