
Una herramienta OSINT para buscar cuentas por nombre de usuario en redes sociales.
El Lockheed SR-71 "Blackbird" es un avión de reconocimiento estratégico de gran altitud, largo alcance y Mach 3+ desarrollado y fabricado por la empresa aeroespacial estadounidense Lockheed Corporation.
This or previous program is for Educational purpose ONLY. Do not use it without permission.
The usual disclaimer applies, especially the fact that me (P1ngul1n0) is not liable for any
damages caused by direct or indirect use of the information or functionality provided by these
programs. The author or any Internet provider bears NO responsibility for content or misuse
of these programs or any derivatives thereof. By using these programs you accept the fact
that any damage (dataloss, system crash, system compromise, etc.) caused by the use of these
programs is not P1ngul1n0's responsibility.
git clone https://github.com/p1ngul1n0/blackbird
cd blackbird
pip install -r requirements.txt
python blackbird.py -u username
python blackbird.py --web
Accede a http://127.0.0.1:9797 en el navegador
python blackbird.py -f username.json
python blackbird.py --list-sites
python blackbird.py -u crash --proxy http://127.0.0.1:8080
Por defecto solo se mostrarán las cuentas encontradas; sin embargo, puedes usar el argumento de abajo para verlas todas.
python blackbird.py -u crash --show-all
Blackbird también se puede usar con Docker.
docker pull p1ngul1n0/blackbird:v2
docker run -p 9797:9797 p1ngul1n0/blackbird:v2 "--web"
Los resultados se pueden exportar como un informe en PDF.
blackbird-pdf-cover
Cuando sea posible, Blackbird extraerá los metadatos del usuario, obteniendo datos como nombre, bio, ubicación y foto de perfil.
Blackbird usa un UserAgent aleatorio de una lista de 1000 UserAgents en cada petición para evitar bloqueos.
Blackbird envía peticiones HTTP asíncronas, lo que permite mucha más velocidad al descubrir cuentas de usuario.
El archivo data.json almacena todos los sitios que Blackbird verifica.
GET
{
"app": "ExampleAPP1",
"url": "https://www.example.com/{username}",
"valid": "response.status == 200",
"id": 1,
"method": "GET"
}
POST JSON
{
"app": "ExampleAPP2",
"url": "https://www.example.com/user",
"valid": "jsonData['message']['found'] == True",
"json": "{{\"type\": \"username\",\"input\": \"{username}\"}}",
"id": 2,
"method": "POST"
}
GET con extracción de metadatos
{
"app": "Twitter",
"id": 3,
"method": "GET",
"url": "https://nitter.net/{username}",
"valid": "response.status == 200",
"metadata": [
{
"type": "generic-data",
"key": "Name",
"value": "soup.find('a', class_='profile-card-fullname')['title']"
},
{
"type": "generic-data",
"key": "Bio",
"value": "soup.find('div',class_='profile-bio').string"
},
{
"type": "generic-data",
"key": "Site",
"value": "soup.find('div',class_='profile-website').text.strip('\\t\\r\\n')"
},
{
"type": "generic-data",
"key": "Member since",
"value": "soup.find('div',class_='profile-joindate').find('span')['title']"
},
{
"type": "image",
"key": "picture",
"value": "'https://nitter.net'+soup.find('a', class_='profile-card-avatar')['href']"
},
{
"type": "location",
"key": "location",
"value": "soup.select_one('.profile-location:nth-of-type(2)').text.strip('\\t\\r\\n')"
}
]
}
Estoy agradecido a todos los contribuyentes que mejoraron y corrigieron errores del proyecto.
enumerate y división de código para funciones.No dudes en contactarme en Twitter
Si tienes alguna sugerencia de un sitio para incluir en la búsqueda, haz un pull request siguiendo la plantilla.