А именно с функциями
PK11_Encrypt
и
PK11_Decrypt
Шифрование:
Base64 - PK11_Decrypt и обратно (c PK11_Encrypt соответственно)
PK11Decrypt будет выглядеть примерно вот так, наверное, если что-то не так поправьте:
UPD
О господи, что за?
Может мне кто объяснить, что я делаю не так?
Скрипт подвисает на несколько секунд и крашается.
Лог:
Код всего этого чуда:
Вот документация по теме:http://mxr.mozilla.org/mozilla-central/source/security/nss/lib/pk11wrap/pk11sdr.c#303
Я хочу сделать свой собственный менеджер паролей (с блекджеком и сами знаете чем).
p.s. Проблемы из браузеров вызвал только firefox, ибо документации на это я не нашёл(а ещё я криворукий идиот и не умею оперировать со структурами и вызовом dll, научился ).
PK11_Encrypt
и
PK11_Decrypt
Шифрование:
Base64 - PK11_Decrypt и обратно (c PK11_Encrypt соответственно)
PK11Decrypt будет выглядеть примерно вот так, наверное, если что-то не так поправьте:
Код:
$str = 'char *data; int len'
$sReq = DllStructCreate($str)
$sRepl = DllStructCreate($str)
DllStructSetData($sReq,'*data', $decodingData)
DllStructSetData($sReq,'len', $decodingLength)
DllStructSetData($sRepl,'*data', 0)
DllStructSetData($sRepl,'len', 0)
$Result = DllCall ($dllpath, "int", "PK11SDR_Decrypt" ,"ptr", DllStructGetPtr($sReq), "ptr", DllStructGetPtr($sRepl), "ptr", "")
Return($Result)
EndFunc
UPD
О господи, что за?
Может мне кто объяснить, что я делаю не так?
Скрипт подвисает на несколько секунд и крашается.
Лог:
Код:
C:\Program Files (x86)\Mozilla Firefox\sqlite3.dll
20392624
Reading password data: 1
MDoEEPgAAAAAAAAAAAAAAAAAAAEwFAYIKoZIhvcNAwcECCjcV49rqOkaBBAvfzObm9vy4W2PydmLi+en
Base64 decoded!
Decrypting!
!>21:42:34 AutoIT3.exe ended.rc:-1073741783
>Exit code: -1073741783 Time: 8.120
Код всего этого чуда:
Код:
#include<sqlite.au3>
$dat = _SQLite_Startup(@ScriptDir & "\sqlite3.dll")
ConsoleWrite($dat & @CRLF)
$DB = _SQLite_Open(@ScriptDir & "\signons.sqlite")
ConsoleWrite($db & @CRLF)
$iRows = 10
Local $aResult, $iRows, $iColumns, $iRval
$iColumns = 10
$iRval = _SQLite_GetTable2d(-1, "SELECT * FROM moz_logins;", $aResult, $iRows, $iColumns)
$ld = ''
If $iRval = $SQLITE_OK Then
;_ArrayDisplay($aResult)
For $i = 1 To UBound($aResult,1) - 1
ConsoleWrite('Reading password data: ' & $i & @CRLF)
ConsoleWrite($aResult[$i][7] & @CRLF)
$b64decoded = _Base64Decode($aResult[$i][7])
ConsoleWrite('Base64 decoded!' & @CRLF)
$decodingLength = StringLen($b64decoded)
$decodedData = ''
$finalLength = ''
ConsoleWrite('Decrypting!' & @CRLF)
$res = PK11DECR('C:\Program Files (x86)\Mozilla Firefox\nss3.dll', $b64decoded, $decodingLength, $decodedData ,$finalLength)
;$Res = DllCall ('C:\Program Files (x86)\Mozilla Firefox\nss3.dll', "int", "PK11SDR_Decrypt" , "str", $b64decoded, "int", $decodingLength, "str", $decodedData , "int", $finalLength)
ConsoleWrite($res & @CRLF)
ConsoleWrite($decodingLength & @CRLF)
ConsoleWrite($decodedData & @CRLF)
ConsoleWrite($finalLength & @CRLF)
Next
EndIf
Func PK11DECR($dllpath, $decodingData, $decodingLength, $decodedData ,$finalLength)
$str = 'char *data; int len'
$sReq = DllStructCreate($str)
$sRepl = DllStructCreate($str)
DllStructSetData($sReq,'*data', $decodingData)
DllStructSetData($sReq,'len', $decodingLength)
DllStructSetData($sRepl,'*data', 0)
DllStructSetData($sRepl,'len', 0)
$Result = DllCall ($dllpath, "int", "PK11SDR_Decrypt" ,"ptr", DllStructGetPtr($sReq), "ptr", DllStructGetPtr($sRepl), "ptr", "")
Return($Result)
EndFunc
Func _Base64Decode($sData)
Local $oXml = ObjCreate("Msxml2.DOMDocument")
If Not IsObj($oXml) Then
SetError(1, 1, 0)
EndIf
Local $oElement = $oXml.createElement("b64")
If Not IsObj($oElement) Then
SetError(2, 2, 0)
EndIf
$oElement.dataType = "bin.base64"
$oElement.Text = $sData
Local $sReturn = BinaryToString($oElement.nodeTypedValue, 4)
If StringLen($sReturn) = 0 Then
SetError(3, 3, 0)
EndIf
Return $sReturn
EndFunc ;==>_Base64Decode
Вот документация по теме:http://mxr.mozilla.org/mozilla-central/source/security/nss/lib/pk11wrap/pk11sdr.c#303
Я хочу сделать свой собственный менеджер паролей (с блекджеком и сами знаете чем).
p.s. Проблемы из браузеров вызвал только firefox, ибо документации на это я не нашёл(