
Ideaslocas Repository
Este proyecto tiene como objetivo ayudar en la búsqueda de contraseñas filtradas manteniendo un alto nivel de privacidad utilizando el método de k-anonimato.
Para lograrlo, se utilizan las API de diferentes servicios, enviando solo una parte del Hash de la contraseña que queremos verificar, por ejemplo, los primeros 5 caracteres.
El proyecto necesita algunas librerías para funcionar; para instalarlas use el siguiente comando:
pip install -r requirements
Recuerde que se requiere Python 3.
passme.py [FUNC] [ELEMENT] -engine [ENGINE] -api_key [API_KEY]
FUNC: El tipo de elemento que desea verificar, puede ser -h/--hash o -p/--password
o -f/--file o -l/--list o --help.
ELEMENT: El "Hash", "Contraseña" o el nombre del archivo que contiene una lista de
hashes o contraseñas separadas por una nueva línea.
ENGINE: El motor de filtraciones que desea usar, por defecto usa HIBP (Have I been PWN).
API_KEY: La API_KEY necesaria para algunas funciones de algunos motores.
La función principal del proyecto recibe la contraseña hasheada, el motor a utilizar y la clave API.
Dependiendo del motor recibido, tanto la clave API como la contraseña hasheada se enviarán a una función u otra.
Si desea agregar su propio motor o uno que aún no esté implementado, simplemente agregue una opción más aquí.
passme_hash(hashed_password, engine="HIBP", api_key="0")
Esta función hashea la contraseña recibida usando SHA-1 y envía el hash a la función passme_hash().
passme_password(password, engine="HIBP", api_key="0")
Esta función lee una por una las líneas del archivo recibido para verificar cada contraseña, proporcionando información sobre la contraseña recibida y si ha sido filtrada o no.
passme_file(filename, engine="HIBP", api_key="0")
Esta función lee una por una las líneas del archivo recibido para verificar cada hash, proporcionando información sobre el hash recibido y si ha sido filtrado o no.
passme_list(filename, engine="HIBP", api_key="0")
La función que se encarga de la API de HIBP (Have i been pwned) envía los primeros cinco caracteres del hash, luego lo compara con el hash completo para ver si la contraseña/hash ha sido filtrado.
engine_HIBP(hashed_password, engine, api_key)
Este proyecto cuenta con una serie de pruebas para verificar el correcto funcionamiento de todas sus funciones; para ello se ha utilizado la librería "pytest". Para ejecutar las pruebas, instale pytest con el siguiente comando:
pip install pytest
Una vez instalado, simplemente ejecute el comando "pytest" para que las pruebas se ejecuten automáticamente; cualquier error encontrado será devuelto por la terminal.
Los resultados de las pruebas en el laboratorio son los siguientes:
Este proyecto está licenciado bajo la Licencia Pública General de GNU (GNU General Public License) - consulte el archivo LICENSE para más detalles.
EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO PERO NO LIMITADO A LAS GARANTÍAS DE COMERCIABILIDAD, IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DE LOS DERECHOS DE AUTOR SERÁN RESPONSABLES POR CUALQUIER RECLAMO, DAÑOS U OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN CONTRACTUAL, EXTRACONTRACTUAL O DE OTRA MANERA, QUE SURJA DE, O EN CONEXIÓN CON, EL SOFTWARE O EL USO U OTRO TIPO DE ACCIONES EN EL SOFTWARE.
Este software no tiene un proceso de control de calidad. Este software es una Prueba de Concepto (PoC).
Si tiene algún problema, puede contactar:
[email protected] - Ideas Locas CDCO - Telefónica
En muchos lugares puede ser un delito instalar software en un ordenador que no le pertenece, sin el consentimiento del propietario. No aprobamos el uso de PoC para ningún propósito ilegal. Para descargar o usar nuestro software de cualquier manera, debe reconocer y aprobar lo siguiente:
1 - Declara que esta PoC se utilizará exclusivamente de manera legal. Si tiene dudas sobre la legalidad, consulte a un abogado autorizado en la jurisdicción donde usará esta PoC.
2 - Reconoce que el ordenador en el que se instalará el software es suyo o tiene el consentimiento del propietario para administrarlo e instalar el software en él.
| Versión de Python | Función Hash | Función List | Función Password | Hash ALEATORIO | Contraseña ALEATORIA | Comentario |
|---|
| 3.9 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 3.8 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 3.7 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 3.6 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| 3.5 | ✅ | ✅ | ✅ | ❌ | ❌ | Random.choice no está disponible en Python 3.5 // Versión de Python obsoleta |