
Инструмент OSINT для поиска аккаунтов по имени пользователя в социальных сетях.
Lockheed SR-71 «Blackbird» — это стратегический разведывательный самолёт большой дальности, высотный, со скоростью более 3 Маха, разработанный и произведённый американской аэрокосмической компанией 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
Откройте в браузере http://127.0.0.1:9797
python blackbird.py -f username.json
python blackbird.py --list-sites
python blackbird.py -u crash --proxy http://127.0.0.1:8080
По умолчанию отображаются только найденные аккаунты, однако вы можете использовать следующий аргумент, чтобы увидеть все.
python blackbird.py -u crash --show-all
Blackbird также можно использовать с Docker.
docker pull p1ngul1n0/blackbird:v2
docker run -p 9797:9797 p1ngul1n0/blackbird:v2 "--web"
Результаты можно экспортировать в виде PDF-отчёта.
blackbird-pdf-cover
По возможности Blackbird извлекает метаданные пользователя, такие как имя, биография, местоположение и аватар.
Blackbird использует случайный UserAgent из списка из 1000 UserAgent’ов при каждом запросе для предотвращения блокировки.
Blackbird отправляет асинхронные HTTP-запросы, что позволяет значительно ускорить обнаружение учётных записей.
Файл data.json содержит все сайты, которые проверяет Blackbird.
app - Название сайтаurlvalid - Выражение Python, возвращающее True, если пользователь существуетid - Уникальный числовой идентификаторmethod - HTTP-методjson - Тело JSON для POST (необходимо экранировать; используйте: https://codebeautify.org/json-escape-unescape){username} - Место подстановки имени пользователя (URL или Body)response.status - HTTP-статус ответаresponseContent - Сырое тело ответаsoup - Тело ответа, разобранное BeautifulSoupЯ благодарен всем участникам, которые улучшили проект и исправили ошибки.
enumerate и выполнено разбиение на функции.Свяжитесь со мной в Twitter
jsonData - Тело ответа в JSONmetadata - Список объектов для извлечения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 с извлечением метаданных
{
"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')"
}
]
}
Если у вас есть предложение по сайту, который следует включить в поиск, создайте pull request, следуя этому шаблону.