Página 1 de 1

FireFox Recovery ?

Publicado: 28 Dic 2014, 04:50
por M3
Buenas , que tal ?

Acaso alguen que lo tenga , en qualquiera language sirve , pero que sea funcional a la version de Firefox actualizada .

O una referencia ? en google solo he encontrado versiones desactualizadas

Gracias desde ya ....

Saludos

Re: FireFox Recovery ?

Publicado: 28 Dic 2014, 17:47
por joselin
en delphi ( no lo probe)
[Enlace externo eliminado para invitados]

Re: FireFox Recovery ?

Publicado: 28 Dic 2014, 18:21
por Pink
Hola Feo.

por casualidad me arme este hace un par de dias. funciona solo en las versiones donde se guardan las password en un archivo .json como la 34.0.5
este solo funciona en la versión 34.0.5 porque para que funcione en otras con el archivo .json hay que hacer dinámica la función GetFireFoxPath().
;Written By Pink/Danyfirex
#include <WinAPI.au3>
#include <Array.au3>
Opt("MustDeclareVars", 1)

Global Const $CRYPT_STRING_BASE64 = 0x00000001
Global $h_NSS3 = 0
Global Const $eURL = 1
Global Const $eUser = 3
Global Const $ePass = 5
Global Const $tagSECItem = "dword SECItemType;ptr Data;dword Len"

Global Const $aLibraries[] = ["msvcr100.dll", "msvcp100.DLL", "mozglue.dll", "nss3.dll"]
Global $hSlot = 0
Local $sFireFoxPath = GetFireFoxPath()
Local $sFireFoxProfilePath = _FireFoxProFilePath()


;Start
If _LoadLibraries($sFireFoxPath) And _iniNSS3($sFireFoxPath, $sFireFoxProfilePath) Then
;~ 	ConsoleWrite("Libaries Loaded" & @CRLF)
;~ 	ConsoleWrite("FireFox Recovery" & @CRLF)
;Recovery FireFox
FireFoxRecovery($sFireFoxProfilePath)
Exit
Else
;~ 	ConsoleWrite("Can't load the Libaries" & @CRLF)
	Exit
EndIf






Func FireFoxRecovery($sFireFoxProfilePath)

	Local $sJsonFile = $sFireFoxProfilePath & "logins.json"
	Local $aList = GetJsonArray(FileRead($sJsonFile))

	If Not (IsArray($aList)) Or Not (UBound($aList) >= 6) Then
		Return False
	EndIf


	ConsoleWrite("!>>>>>>>>>>>>>FireFox Password Recovery<<<<<<<<<<<<<<" & @CRLF & @CRLF)
	For $i = 0 To UBound($aList) - 1 Step 6
		ConsoleWrite("URL: " & $aList[$i + $eURL] & @CRLF)
		ConsoleWrite("UserName: " & FireFoxDecrypt($aList[$i + $eUser]) & @CRLF)
		ConsoleWrite("PassWord: " & FireFoxDecrypt($aList[$i + $ePass]) & @CRLF)
		ConsoleWrite(@CRLF)
	Next
	ConsoleWrite("!>>>>>>>>>>>>>FireFox Password Recovery<<<<<<<<<<<<<<" & @CRLF & @CRLF)
	Free()

EndFunc   ;==>FireFoxRecovery


Func FireFoxDecrypt($sCryptedData)
	Local $iRet = 0
	Local $tByteData = DllStructCreate("byte Data[1024]")
	Local $dwSize = 0
	Local $sDecrypData = ""
	Local $DataIn = 0
	Local $DataOut = 0
	Local $tData = 0
	$iRet = DllCall("Crypt32.dll", "bool", "CryptStringToBinary", "str", $sCryptedData, "dword", StringLen($sCryptedData), "dword", $CRYPT_STRING_BASE64, "ptr", DllStructGetPtr($tByteData), "dword*", 8096, "ptr", 0, "ptr", 0)
	If $iRet[0] = True Then
		$dwSize = $iRet[5]

		$hSlot = DllCall($h_NSS3, "ptr:CDECL", "PK11_GetInternalKeySlot")
		$hSlot = $hSlot[0]


		If Not $hSlot Then
			Return $sDecrypData
		EndIf
		$iRet = DllCall($h_NSS3, "dword:CDECL", "PK11_Authenticate", "ptr", $hSlot, "BOOL", True, "ptr", Null)
		Local $iStatus = $iRet[0]


		If $iStatus Then Return $sDecrypData

		Local $DataIn = DllStructCreate($tagSECItem)
		Local $DataOut = DllStructCreate($tagSECItem)
		$DataIn.Data = DllStructGetPtr($tByteData)
		$DataIn.len = $dwSize

		$iRet = DllCall($h_NSS3, "DWORD:CDECL", "PK11SDR_Decrypt", "ptr", DllStructGetPtr($DataIn), "ptr", DllStructGetPtr($DataOut), "ptr", Null)
		$iStatus = $iRet[0]
		If $iStatus Then Return $sDecrypData

		$tData = DllStructCreate("char String[" & $DataOut.len & "]", $DataOut.Data)
		$sDecrypData = $tData.String


		Return $sDecrypData
	Else

		Return $sDecrypData
	EndIf

EndFunc   ;==>FireFoxDecrypt

Func GetJsonArray($sData)
	Local $aList = StringRegExp($sData, '\"(hostname|encryptedPassword|encryptedUsername)":"(.*?)"', 3)
	Return $aList
EndFunc   ;==>GetJsonArray

Func _FireFoxProFilePath()
	Local $sPath = @AppDataDir & "\Mozilla\Firefox\"
	Return ($sPath & IniRead($sPath & "profiles.ini", "Profile0", "Path", "") & "\")
EndFunc   ;==>_FireFoxProFilePath


Func Free()
	If $hSlot Then DllCall($h_NSS3, "NONE:CDECL", "PK11_FreeSlot", "ptr", $hSlot)
	DllCall($h_NSS3, "NONE:CDECL", "NSS_Shutdown")
	DllClose($h_NSS3)
EndFunc   ;==>Free



Func _LoadLibraries($sPath)

	If _WinAPI_LoadLibrary($sPath & $aLibraries[0]) And _WinAPI_LoadLibrary($sPath & $aLibraries[1]) And _WinAPI_LoadLibrary($sPath & $aLibraries[2]) Then
		Return True
	Else
		Return False
	EndIf

EndFunc   ;==>_LoadLibraries


Func _iniNSS3($sPath, $sProfilePath)
	Local $hResult = 0
	$h_NSS3 = DllOpen($sPath & $aLibraries[3])
	$hResult = DllCall($h_NSS3, "dword:CDECL", "NSS_Init", "str", $sProfilePath)
	If $hResult[0] = 0 And $h_NSS3 Then
		Return True
	Else
		Return False
	EndIf
EndFunc   ;==>_iniNSS3


Func GetFireFoxPath()
	Local $sPath = ""
	Local Const $sRegFireFox = "HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox 34.0.5\bin"
	Local Const $sKeyName = "PathToExe"
	$sPath = RegRead($sRegFireFox, $sKeyName)
	If FileExists($sPath) Then
		Return StringReplace($sPath, "Firefox.exe", "")
	Else
		Return ""
	EndIf
EndFunc   ;==>GetFireFoxPath
Saludos

Re: FireFox Recovery ?

Publicado: 28 Dic 2014, 19:33
por Pink
Me falto algo en el codigo. ahi lo acomodo:
;Written By Pink/Danyfirex
#include <WinAPI.au3>
#include <Array.au3>
Opt("MustDeclareVars", 1)

Global Const $CRYPT_STRING_BASE64 = 0x00000001
Global $h_NSS3 = 0, $h_msvcr = 0, $h_msvcp = 0, $h_mozglue = 0
Global Const $eURL = 1
Global Const $eUser = 3
Global Const $ePass = 5
Global Const $tagSECItem = "dword SECItemType;ptr Data;dword Len"

Global Const $aLibraries[] = ["msvcr100.dll", "msvcp100.DLL", "mozglue.dll", "nss3.dll"]
Global $hSlot = 0
Local $sFireFoxPath = GetFireFoxPath()
Local $sFireFoxProfilePath = _FireFoxProFilePath()


;Start
If _LoadLibraries($sFireFoxPath) And _iniNSS3($sFireFoxPath, $sFireFoxProfilePath) Then
;~ 	ConsoleWrite("Libaries Loaded" & @CRLF)
;~ 	ConsoleWrite("FireFox Recovery" & @CRLF)
	;Recovery FireFox
	FireFoxRecovery($sFireFoxProfilePath)
	Exit
Else
;~ 	ConsoleWrite("Can't load the Libaries" & @CRLF)
	Exit
EndIf






Func FireFoxRecovery($sFireFoxProfilePath)

	Local $sJsonFile = $sFireFoxProfilePath & "logins.json"
	Local $aList = GetJsonArray(FileRead($sJsonFile))

	If Not (IsArray($aList)) Or Not (UBound($aList) >= 6) Then
		Return False
	EndIf


	ConsoleWrite("!>>>>>>>>>>>>>FireFox Password Recovery<<<<<<<<<<<<<<" & @CRLF & @CRLF)
	For $i = 0 To UBound($aList) - 1 Step 6
		ConsoleWrite("URL: " & $aList[$i + $eURL] & @CRLF)
		ConsoleWrite("UserName: " & FireFoxDecrypt($aList[$i + $eUser]) & @CRLF)
		ConsoleWrite("PassWord: " & FireFoxDecrypt($aList[$i + $ePass]) & @CRLF)
		ConsoleWrite(@CRLF)
	Next
	ConsoleWrite("!>>>>>>>>>>>>>FireFox Password Recovery<<<<<<<<<<<<<<" & @CRLF & @CRLF)
	Free()

EndFunc   ;==>FireFoxRecovery


Func FireFoxDecrypt($sCryptedData)
	Local $iRet = 0
	Local $tByteData = DllStructCreate("byte Data[1024]")
	Local $dwSize = 0
	Local $sDecrypData = ""
	Local $DataIn = 0
	Local $DataOut = 0
	Local $tData = 0
	$iRet = DllCall("Crypt32.dll", "bool", "CryptStringToBinary", "str", $sCryptedData, "dword", StringLen($sCryptedData), "dword", $CRYPT_STRING_BASE64, "ptr", DllStructGetPtr($tByteData), "dword*", 8096, "ptr", 0, "ptr", 0)
	If $iRet[0] = True Then
		$dwSize = $iRet[5]

		$hSlot = DllCall($h_NSS3, "ptr:CDECL", "PK11_GetInternalKeySlot")
		$hSlot = $hSlot[0]


		If Not $hSlot Then
			Return $sDecrypData
		EndIf
		$iRet = DllCall($h_NSS3, "dword:CDECL", "PK11_Authenticate", "ptr", $hSlot, "BOOL", True, "ptr", Null)
		Local $iStatus = $iRet[0]


		If $iStatus Then Return $sDecrypData

		Local $DataIn = DllStructCreate($tagSECItem)
		Local $DataOut = DllStructCreate($tagSECItem)
		$DataIn.Data = DllStructGetPtr($tByteData)
		$DataIn.len = $dwSize

		$iRet = DllCall($h_NSS3, "DWORD:CDECL", "PK11SDR_Decrypt", "ptr", DllStructGetPtr($DataIn), "ptr", DllStructGetPtr($DataOut), "ptr", Null)
		$iStatus = $iRet[0]
		If $iStatus Then Return $sDecrypData

		$tData = DllStructCreate("char String[" & $DataOut.len & "]", $DataOut.Data)
		$sDecrypData = $tData.String


		Return $sDecrypData
	Else

		Return $sDecrypData
	EndIf

EndFunc   ;==>FireFoxDecrypt

Func GetJsonArray($sData)
	Local $aList = StringRegExp($sData, '\"(hostname|encryptedPassword|encryptedUsername)":"(.*?)"', 3)
	Return $aList
EndFunc   ;==>GetJsonArray

Func _FireFoxProFilePath()
	Local $sPath = @AppDataDir & "\Mozilla\Firefox\"
	Return ($sPath & IniRead($sPath & "profiles.ini", "Profile0", "Path", "") & "\")
EndFunc   ;==>_FireFoxProFilePath


Func Free()
	If $hSlot Then DllCall($h_NSS3, "NONE:CDECL", "PK11_FreeSlot", "ptr", $hSlot)
	DllCall($h_NSS3, "NONE:CDECL", "NSS_Shutdown")
	DllClose($h_NSS3)
	If $h_msvcr Then _WinAPI_FreeLibrary($h_msvcr)
	If $h_msvcp Then _WinAPI_FreeLibrary($h_msvcp)
	If $h_mozglue Then _WinAPI_FreeLibrary($h_mozglue)

EndFunc   ;==>Free



Func _LoadLibraries($sPath)
	$h_msvcr = _WinAPI_LoadLibrary($sPath & $aLibraries[0])
	$h_msvcp = _WinAPI_LoadLibrary($sPath & $aLibraries[1])
	$h_mozglue = _WinAPI_LoadLibrary($sPath & $aLibraries[2])


	If $h_msvcr And $h_msvcp And $h_mozglue Then
		Return True
	Else
		Return False
	EndIf

EndFunc   ;==>_LoadLibraries


Func _iniNSS3($sPath, $sProfilePath)
	Local $hResult = 0
	$h_NSS3 = DllOpen($sPath & $aLibraries[3])
	$hResult = DllCall($h_NSS3, "dword:CDECL", "NSS_Init", "str", $sProfilePath)
	If $hResult[0] = 0 And $h_NSS3 Then
		Return True
	Else
		Return False
	EndIf
EndFunc   ;==>_iniNSS3


Func GetFireFoxPath()
	Local $sPath = ""
	Local Const $sRegFireFox = "HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox 34.0.5\bin"
	Local Const $sKeyName = "PathToExe"
	$sPath = RegRead($sRegFireFox, $sKeyName)
	If FileExists($sPath) Then
		Return StringReplace($sPath, "Firefox.exe", "")
	Else
		Return ""
	EndIf
EndFunc   ;==>GetFireFoxPath
Saludos

Re: FireFox Recovery ?

Publicado: 28 Dic 2014, 19:36
por Blau
Gracias Pink

Re: FireFox Recovery ?

Publicado: 28 Dic 2014, 21:11
por M3
Gracias a los 2

Pink , sos la cana compadre , muchas gracias

Saludos

Re: FireFox Recovery ?

Publicado: 28 Dic 2014, 21:17
por Pink
joselin
Blau escribió:Gracias Pink
De nada.
M3 escribió:Gracias a los 2

Pink , sos la cana compadre , muchas gracias

Saludos
De nalgas.

de nada.

Saludos capo.

Feliz Navidad brothers.

Re: FireFox Recovery ?

Publicado: 29 Dic 2014, 03:04
por joselin
Pink escribió:joselin
jajaja me generalizaron en el agradecimiento.. jajaja
es que suma mas si el codigo es de tu autoria, se entiende.

y les deseo un anticipado feliz año nuevo para todos
navidad ya paso , borracho:) jaja

Re: FireFox Recovery ?

Publicado: 29 Dic 2014, 03:13
por Scorpio
A mi me vale muchisimo tambien señores!
Estaba perdido con el archivo Key3.db, que resulta que tambien está cifrado y no sabia que hacer, voy a mirar estos a ver si me aclaro.

Edit: No me funciona el codigo, me tira error en $DataIn.Data = DllStructGetPtr($tByteData) ==> Variable must be of type "Object".

//Regards.

Re: FireFox Recovery ?

Publicado: 29 Dic 2014, 13:36
por Pink
joselin escribió:
Pink escribió:joselin
jajaja me generalizaron en el agradecimiento.. jajaja
es que suma mas si el codigo es de tu autoria, se entiende.

y les deseo un anticipado feliz año nuevo para todos
navidad ya paso , borracho:) jaja
es que me gusta trollearte :*
Scorpio escribió:A mi me vale muchisimo tambien señores!
Estaba perdido con el archivo Key3.db, que resulta que tambien está cifrado y no sabia que hacer, voy a mirar estos a ver si me aclaro.

Edit: No me funciona el codigo, me tira error en $DataIn.Data = DllStructGetPtr($tByteData) ==> Variable must be of type "Object".

//Regards.
No te funciona porque esta para la ultima version de autoit. solo modificalo y ya. para las ultimas versiones no necesitas usar Key3.db.

saludos

Re: FireFox Recovery ?

Publicado: 30 Dic 2014, 02:03
por Scorpio
Pink escribió:
Scorpio escribió:A mi me vale muchisimo tambien señores!
Estaba perdido con el archivo Key3.db, que resulta que tambien está cifrado y no sabia que hacer, voy a mirar estos a ver si me aclaro.

Edit: No me funciona el codigo, me tira error en $DataIn.Data = DllStructGetPtr($tByteData) ==> Variable must be of type "Object".

//Regards.
No te funciona porque esta para la ultima version de autoit. solo modificalo y ya. para las ultimas versiones no necesitas usar Key3.db.

saludos
Eso me temia yo, pero no encontraba tampoco informacion sobre el NSS3, me viene de lujo.

//Regards.

Re: FireFox Recovery ?

Publicado: 30 Dic 2014, 14:06
por Pink
Scorpio escribió:
Pink escribió:
Scorpio escribió:A mi me vale muchisimo tambien señores!
Estaba perdido con el archivo Key3.db, que resulta que tambien está cifrado y no sabia que hacer, voy a mirar estos a ver si me aclaro.

Edit: No me funciona el codigo, me tira error en $DataIn.Data = DllStructGetPtr($tByteData) ==> Variable must be of type "Object".

//Regards.
No te funciona porque esta para la ultima version de autoit. solo modificalo y ya. para las ultimas versiones no necesitas usar Key3.db.

saludos
Eso me temia yo, pero no encontraba tampoco informacion sobre el NSS3, me viene de lujo.

//Regards.
Todo esta en el source de firefox.
[Enlace externo eliminado para invitados]

Saludos

Re: FireFox Recovery ?

Publicado: 20 Mar 2015, 16:58
por vobuscaminhatrakinas
hey M3
you can use nirsoft on commandline
i really dont know if still working but was