⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 password.bas

📁 OpenPlayer代码
💻 BAS
字号:
Attribute VB_Name = "PassWord"
Option Explicit
'==============================================
'解密屏保密码的模块
'==============================================
Public Const MaxLength = 128                        '屏幕保护的长度最大为128个字符
Public Const MainKey = &H80000001                   '主键:HKEY_CURRENT_USER
Public Const STANDARD_RIGHTS_READ = &H20000
Public Const KEY_QUERY_VALUE = &H1
Public Const KEY_ENUMERATE_SUB_KEYS = &H8
Public Const KEY_NOTIFY = &H10
Public Const SYNCHRONIZE = &H100000
Public Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
Public Const ERROR_SUCCESS = 0&

Global En_Data(128) As Integer                      '存放处理注册表中的口令密码
Global RetString As String

Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Public Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Public Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long
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

Function Query_Reg_Value(SubKeys As String, ValueName As String, ValueType As Long) As String
'======================================
'取得注册表反指定键的值
'======================================
    On Error GoTo err
    Dim RetQueryValue, KeyHandle, lngcbData As Long, RetValue As String
    
    If Not ERROR_SUCCESS = RegOpenKeyEx(MainKey, SubKeys, 0&, KEY_READ, KeyHandle) Then Exit Function
    
    RetQueryValue = RegQueryValueEx(KeyHandle, ValueName, 0&, ValueType, ByVal RetValue, lngcbData)
    RetValue = Space(lngcbData)
    RetQueryValue = RegQueryValueEx(KeyHandle, ValueName, 0&, ValueType, ByVal RetValue, lngcbData)
    RegCloseKey (KeyHandle)
    Query_Reg_Value = RetValue
    
    Exit Function
err:
End Function




Public Sub CharToHex()
'==============================================
'将返回字符串两两合并,形成十六进制数,如:“79DF”转换为"&H79"和"&HDF"
'==============================================
    Dim a1 As String, i  As Integer, k As Long
    '返回字符串中最后一位的ASC码为0,不考虑
    For i = 0 To Len(RetString) - 1
        a1 = Mid$(RetString, i + 1, 1)
        If a1 >= "A" And a1 <= "F" Then
           k = 10 + Asc(a1) - Asc("A")
          Else
           k = Val(a1)
        End If
        If i Mod 2 = 0 Then
           En_Data(Int(i / 2)) = (k * 16) And &HF0                  '左移四位,低四位清零
          Else
           En_Data(Int(i / 2)) = En_Data(Int(i / 2)) + (k And &HF)
        End If
    Next i
End Sub

Public Function Getsecret()
'==============================================
'解码并显示密码内容和密码字符串数目
'==============================================
    Dim strPassWord As String
    Dim Multiplier(4) As Long
    Dim Mdd(2 * MaxLength) As Integer, Data_D(MaxLength) As Long
    Dim i, j1, j2, j3 As Integer
    Dim PasswordData(MaxLength) As Integer
    
    Multiplier(0) = &HB2
    Multiplier(1) = &HDC
    Multiplier(2) = &H90
    Multiplier(3) = &H8F
    
    '给增值器赋初值
    For i = 0 To MaxLength * 2 - 1
        Mdd(i) = i '运算数组中各元素的下标值赋给各元素
    Next i
    
    For i = 0 To MaxLength * 2 - 1
        j1 = Mdd(i)
        j2 = (j1 + j3 + Multiplier(i Mod 4))
        j2 = j2 And &HFF
        Mdd(i) = Mdd(j2)
        Mdd(j2) = j1
        j3 = j2
    Next i
    
    j2 = 0
    For i = 1 To MaxLength
        j1 = Mdd(i)
        j2 = (j2 + j1) And &HFF
        Mdd(i) = Mdd(j2)
        Mdd(j2) = j1
        Data_D(i - 1) = Mdd((Mdd(i) + j1) And &HFF)         '求得密钥
    Next i
    
    Call CharToHex
    
    strPassWord = ""
    
    For i = 0 To (Len(RetString) - 1) / 2 - 1
          PasswordData(i) = En_Data(i) Xor Data_D(i)        '异或运算求得口令
          strPassWord = strPassWord + Chr$(PasswordData(i))
    Next i
    
    Getsecret = strPassWord
End Function

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -