Página 1 de 1

Google Chrome Password Recovery

Publicado: 11 Sep 2014, 20:40
por Dany
Un simple password recovery para google chrome.


Imagen


Código: Seleccionar todo

#include <File.au3>
#include <MsgBoxConstants.au3>
#include <SQLite.au3>
#include <SQLite.dll.au3>
#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <GuiListView.au3>




Local $hGUI = GUICreate("Google Chrome Password Recovery", 410, 260)
Local $hListview = GUICtrlCreateListView("", 5, 5, 400, 200, $LVS_REPORT, $LVS_EX_GRIDLINES)
Local $Boton = GUICtrlCreateButton("Get Passwords", 165, 220, 80, 30)
GUISetBkColor(0x0000)
_GUICtrlListView_InsertColumn($hListview, 0, "Url", 100)
_GUICtrlListView_InsertColumn($hListview, 1, "Username", 100)
_GUICtrlListView_InsertColumn($hListview, 2, "Password", 100)

_GUICtrlListView_SetColumnWidth($hListview, 0, 200)
_GUICtrlListView_SetColumnWidth($hListview, 1, 98)
_GUICtrlListView_SetColumnWidth($hListview, 2, 98)
GUISetState(@SW_SHOW)

Local $aArray = 0
Local $Pass = ""
While 1
	$idMsg = GUIGetMsg()
	Select
		Case $idMsg = $GUI_EVENT_CLOSE
			ExitLoop
		Case $idMsg = $Boton
			_GUICtrlListView_DeleteAllItems($hListview)
			$aArray = Recovery()

			For $i = 1 To UBound($aArray) - 1
				$Pass = UncryptRDPPassword($aArray[$i][5])
				If Not (Binary($Pass) = "0x00000000") Then
					_GUICtrlListView_AddItem($hListview, $aArray[$i][0])
					_GUICtrlListView_AddSubItem($hListview, _GUICtrlListView_GetItemCount($hListview) - 1, $aArray[$i][3], 1)
					_GUICtrlListView_AddSubItem($hListview, _GUICtrlListView_GetItemCount($hListview) - 1, $Pass, 2)
				EndIf
				$Pass = ""
			Next
			$aArray = 0


	EndSelect
WEnd



Func Recovery()
Local $aResult, $iRows, $iColumns, $iRval, $hData
	Local $sDataLoginPath = @LocalAppDataDir & "\Google\Chrome\User Data\Default\Login Data"
	Local $TempData = @TempDir & "\TempData.db"
	Local $sPathData = ""
	FileCopy($sDataLoginPath, $TempData, 1)

	If FileExists($TempData) Then
		$sPathData = $TempData
	EndIf



	_SQLite_Startup()
	If @error Then
		MsgBox($MB_SYSTEMMODAL, "SQLite Error", "SQLite.dll Can't be Loaded!")
		Exit -1
	EndIf


	$hData = _SQLite_Open($sPathData)
	If @error Then
		MsgBox($MB_SYSTEMMODAL, "SQLite Error", "Can't Load Database!")
		Exit -1
	EndIf

	$iRval = _SQLite_GetTable2d(-1, "SELECT * FROM logins;", $aResult, $iRows, $iColumns)

	_SQLite_Close($hData)
	_SQLite_Shutdown()

	If FileExists($TempData) Then
		FileDelete($TempData)
	EndIf

	Return $aResult

EndFunc   ;==>Recovery


Func UncryptRDPPassword($bin)
	;This Func From >> http://www.autoitscript.com/forum/topic/96783-dllcall-for-cryptunprotectdata/#entry695769
	Local Const $CRYPTPROTECT_UI_FORBIDDEN = 0x1
	Local Const $DATA_BLOB = "int;ptr"

	Local $passStr = DllStructCreate("byte[1024]")
	Local $DataIn = DllStructCreate($DATA_BLOB)
	Local $DataOut = DllStructCreate($DATA_BLOB)
	$pwDescription = 'psw'
	$PwdHash = ""

	DllStructSetData($DataOut, 1, 0)
	DllStructSetData($DataOut, 2, 0)

	DllStructSetData($passStr, 1, $bin)
	DllStructSetData($DataIn, 2, DllStructGetPtr($passStr, 1))
	DllStructSetData($DataIn, 1, BinaryLen($bin))

	$return = DllCall("crypt32.dll", "int", "CryptUnprotectData", _
			"ptr", DllStructGetPtr($DataIn), _
			"ptr", 0, _
			"ptr", 0, _
			"ptr", 0, _
			"ptr", 0, _
			"dword", $CRYPTPROTECT_UI_FORBIDDEN, _
			"ptr", DllStructGetPtr($DataOut))
	If @error Then Return ""

	$len = DllStructGetData($DataOut, 1)
	$PwdHash = Ptr(DllStructGetData($DataOut, 2))
	$PwdHash = DllStructCreate("byte[" & $len & "]", $PwdHash)
	Return BinaryToString(DllStructGetData($PwdHash, 1), 4)
EndFunc   ;==>UncryptRDPPassword
saludos

Re: Google Chrome Password Recovery

Publicado: 12 Sep 2014, 17:43
por qpongo
Vaya con lo simple......!!!
Está muy bien
Gracias por compartirlo

qpongo