私は、ソフトウェアのキーを生成するアプリの (自動化の目的で) オンライン バージョンを作成する任務を負っています。
各ソフトウェアはユーザーに (システム ボリューム情報からの) アクセス コードを表示し、そのコードのキーは小さなアプリによって生成されます。たとえば、クライアントがアクセス コード: 123 を入力すると、キー: 321 が返されます。
問題は、この特定のソフトウェアのキーを生成する小さなアプリのソースが見つからないことですが、検証機能はあります
Public Function ValidateKey(AccessCode As Long, AccessKey As Long)
Dim lngNewKey As Double
Dim strHexKey As String
Dim btCode(1) As Byte
Dim lngCode As Long
If AccessKey = 0 Then
ValidateKey = False
Exit Function
End If
If AccessCode = 0 Then
ValidateKey = False
Exit Function
Else
lngNewKey = AccessKey
strHexKey = Hex(lngNewKey)
If Len(strHexKey) = 5 Then strHexKey = "0" & strHexKey
btCode(0) = CByte("&H" & Mid(strHexKey, 1, 2))
btCode(1) = CByte("&H" & Mid(strHexKey, 5, 2))
lngCode = CLng(btCode(0)) * 256 + CLng(btCode(1))
lngCode = lngCode * 15 + 5
ValidateKey = (lngCode = AccessCode)
End If
End Function
この関数はクライアント ソフトウェアで実行され、ユーザーによって提供されたキー (AccessKey) が AccessCode と比較して正しいかどうかをチェックします。
そのため、キーを生成する関数を見つけるために、次のようにして元に戻しました。
AccessCode = AccessCode - 5
AccessCode = AccessCode / 15
しかし、前の操作はハッシュ操作のように見え、元に戻すのが難しいように見えるため、行き詰まりました。
次のデータがあります(スタンドアロンのキー生成アプリを使用して):
for accesscode 111440 the key should be 1946629
for accesscode 200000 the key should be 3453973
for accesscode 65536 the key should be 1160209
for accesscode 8192 they key should be 177186
for accesscode 4096 they key should be 111633
動作する最小のアクセスコードは 3838 です。
キー生成関数を導出することが可能かどうか疑問に思っていました。
前もって感謝します