
ソーシャルネットワーク上でユーザー名からアカウントを検索するOSINTツール。
ロッキードSR-71 "Blackbird"は、アメリカの航空宇宙企業ロッキード社が開発・製造した長距離・高高度・マッハ3以上の戦略偵察機です。
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は、ブロックを防ぐために、各リクエストで1000件のUserAgentリストからランダムなUserAgentを使用します。
Blackbirdは非同期HTTPリクエストを送信するため、ユーザーアカウントの検出が大幅に高速化されます。
data.jsonファイルには、blackbirdが検証するすべてのサイトが保存されています。
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')"
}
]
}
プロジェクトを改善し、バグ修正してくれたすべてのコントリビューターに感謝します。
enumerateを実装して関数のコード分割を行いました。お気軽にTwitterでご連絡ください。
検索に含めるサイトの提案があれば、テンプレートに従ってプルリクエストを作成してください。