🔍 Gitsint OSINT — Extract usernames, names, emails & secrets from GitHub
🕵️♂️ Feel free to open issues, submit PRs, or suggest modules! Contributions are very welcome.
📧 For any professional / personal inquiries or collaborations, reach out to me at: 📧 Contact: Zerostats via GitHub Discussions or 43150869+Zerostats@users.noreply.github.com
Telegram bot
For a quick demo, you can try the bot on telegram.
Here are the commands you can use with the bot:
Telegram bot commands
Atm the bot is down, will be fixed.
help- Display help messageregister $TOKEN- Register your GitHub tokengitsint $USERNAME- Search for a GitHub user
⚠️ To prevent abuse, the bot is rate-limited to 1 request per minute.
⭐ You can use your own token and star this repo to bypass this limitation.
Here’s an updated version of your 📃 Summary section that includes the new --gitleaks capability and reflects the current state of your tool:
🚀 Why Use Gitsint?
- 🕵️ Audit your own or others' public GitHub footprint
- 🔐 Find exposed secrets in commits and repos
- 🧩 Map email addresses to usernames
- 📊 Use in OSINT, red teaming, or compliance workflows
📃 Summary
Efficiently extract usernames, names, emails, and even secrets from a GitHub account.
Gitsint is a GitHub OSINT tool that automates the process of extracting public and private data from GitHub profiles, repositories, and commits.
🔍 Features
- 🧠 Retrieves data from profiles, repositories, and commit history
- 🔒 Scans cloned repositories with Gitleaks to uncover secrets, tokens, emails, and credentials
- 🦻 Does not alert the target (read-only, non-intrusive)
- ⚙️ Supports CLI and library usage
- 📦 Exports results as CSV or JSON
- 🔁 Can clone and scan all user/org repositories (public/private/forked)
- 🧪 Compatible with Python 3.10+
- 💻 Cross-platform: works on Linux, macOS, and Windows
🛠️ Installation
🐍 With PyPI
pip3 install gitsint
🚀 With Github
git clone https://github.com/zerostats/gitsint.git
cd gitsint/
pip install -e .
🐳 With Docker
docker build . -t my-gitsint-image
docker run my-gitsint-image gitsint username
Quick Start
Gitsint can be run from the CLI and rapidly embedded within existing python applications.
Help
usage: gitsint [-h] [--size SIZE] [--token TOKEN [TOKEN ...]] [--fork] [--private]
[--only-used] [--no-color] [--no-clear] [-C] [-J] [-T TIMEOUT]
[--cli] [--clean] [--output OUTPUT] [--version] [--debug]
[--check-update] [--gitleaks]
USERNAME [USERNAME ...]
positional arguments:
USERNAME Target Username
options:
-h, --help Show this help message and exit
--size SIZE Set max repo size in KB (default: 50000)
--token TOKEN [TOKEN ...]
API token (required for private or org access)
--fork Include forked repositories
--private Include private repositories
--only-used Display only the platforms used by the target
--no-color Disable colored terminal output
--no-clear Prevent terminal clearing before display
-C, --csv Save results to CSV
-J, --json Save results to JSON
-T, --timeout TIMEOUT Set max timeout (default: 10 seconds)
--cli Output raw JSON result to console
--clean Clean and reset previous result set
--output OUTPUT Set custom output folder (default: ./output)
--version Show version and exit
--debug Enable debug logging
--check-update Check for latest version on PyPI and auto-update
--gitleaks Run https://github.com/gitleaks/gitleaks to detect secrets in all cloned repositories
📚 CLI Example
# Basic public scan
gitsint exemple
# Scan including forks
gitsint exemple --fork
# Limit by max repo size (in KB)
gitsint exemple --size 5000
# Use GitHub token (required for --private)
gitsint exemple --token $TOKEN
# Scan own private repos
gitsint yourname --token $TOKEN --private
# Save output to a specific folder
gitsint exemple --output ./my-results
# Export to JSON + CSV
gitsint exemple --csv --json
# Run Gitleaks scan on all cloned repos
gitsint exemple --token $TOKEN --private --gitleaks
# Check for Gitsint updates
gitsint exemple --check-update
📈 Python Example
Gitsint can be imported as a module to run targeted scans in your own scripts:
import trio
import httpx
from gitsint.modules.profile.friends import friends
async def main():
username = "exemple"
out = []
client = httpx.AsyncClient()
await friends({'login':username}, client, out, [])
print(out)
await client.aclose()
trio.run(main)
Module Output
For each module, data is returned in a standard dictionary with the following json-equivalent format :
{
"name": "module_name",
"rateLimit": false,
"exists": true,
"data": "[{...}]",
"others": null
}
- name : The name of the module ( friends, profile, repository.. )
- rateLitmit : Lets you know if you've been rate-limited.
- exists : If an account exists for the email on that service.
- data : The data returned by the module.
- others : Any extra info.
Rate limited? Use a token.
🧪 Development
Want to contribute or test modules locally? Here's how to get started.
🔧 Poetry-based Setup (Recommended)
# Clone the repository
git clone https://github.com/zerostats/gitsint.git
cd gitsint
# Install poetry if you haven't
curl -sSL https://install.python-poetry.org | python3 -
# Install dependencies
poetry install
# Activate the virtual environment
poetry shell
# Run the CLI
poetry run gitsint username
🔍 Useful Dev Commands
poetry run black gitsint/ # Format code
poetry run isort gitsint/ # Sort imports
💡 Dev Notes
- Modules live in gitsint/modules/ and are fully async
- Use out.append({...}) to return module results
- Optional flags (--token, --gitleaks, etc.) are available in the args object
TODO
[ ] - Add confidence
Thank you to :
- Megadose ( for the base template )
📝 License
GNU General Public License v3.0
Built for educational purposes only.
Modules
| Name | Method | Frequent Rate Limit |
|---|---|---|
| friends | bs4 | ✔ |
| profile | api | ✘ |
| repository | api | ✘ |
Release files for gitsint 0.3.10
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| gitsint-0.3.10.tar.gz | 28.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gitsint-0.3.10-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 58.2 kB
Release files / gitsint-0.3.10.tar.gz
| Download URL | gitsint-0.3.10.tar.gz |
|---|---|
| Size | 28.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6fcf31e58ae9d8cb0c59addb3183816ec7f76e46c260ed1cd3c4b9f7c671cf10
|
|
BLAKE2b-256 checksum How to use checksums |
2f8586665c834f9e1a5d9d696391789b02b5bd38cf817db65c1eea62e18721dd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.3 CPython/3.10.18 Linux/6.11.0-1015-azure
|
Release files / gitsint-0.3.10-py3-none-any.whl
| Download URL | gitsint-0.3.10-py3-none-any.whl |
|---|---|
| Size | 29.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9a262ca58b8eaaa22d2ea7c776f5688032aa49dc4d7337a76e13472c4564050f
|
|
BLAKE2b-256 checksum How to use checksums |
c28d0e449583c71a780b988bc6c23182aa15f9b87ed4b826d116e6eae6538ec6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.3 CPython/3.10.18 Linux/6.11.0-1015-azure
|