Что нового

Работа с nss3.dll(Firefox)

s0me0ne

Новичок
Сообщения
19
Репутация
2
А именно с функциями
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
О господи, что за?
Может мне кто объяснить, что я делаю не так?
Скрипт подвисает на несколько секунд и крашается. :scratch:

Лог:
Код:
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, ибо документации на это я не нашёл(а ещё я криворукий идиот и не умею оперировать со структурами и вызовом dll, научился :ok:).
 

armenxxx1

Продвинутый
Сообщения
155
Репутация
56
Здаствуйте ,не нашли решение по этой теме ?
 
Верх