Skip to content

Commit be95e09

Browse files
committed
Content + Styling update
1 parent c8088e9 commit be95e09

30 files changed

+1205
-151
lines changed

website/blog/2025-04-25-welcome.md

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
slug: welcome
3+
title: Welcome to the Python OSINT Notebook Blog
4+
authors: [tegridydev]
5+
date: 2025-04-25
6+
---
7+
8+
This is the new blog for project updates, tutorials, and community stories. Stay tuned for more!

website/blog/authors.yml

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
yangshun:
1+
tegridydev:
22
name: tegridydev
33
title: Mechanistic Interpretability (MI) Research & Buildn' Cool Stuff @toolworks-dev
44
url: https://github.com/tegridydev
55
image_url: https://avatars.githubusercontent.com/u/131409024?v=4
66
page: true
77
socials:
8-
github: tegridydev
9-
8+
github: tegridydev

website/docs/01-introduction.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ title: Introduction & Scope
55

66
# Introduction & Scope
77

8-
Welcome to the **Python-OSINT-Handbook**, your comprehensive, up-to-date reference for performing **passive** Open-Source Intelligence (OSINT) using Python in 2025. Whether you’re a security researcher, threat analyst, journalist, or hobbyist, this guide will help you:
8+
Welcome to the **Python-OSINT-Notebook**, your comprehensive, up-to-date reference for performing **passive** Open-Source Intelligence (OSINT) using Python in 2025. Whether you’re a security researcher, threat analyst, journalist, or hobbyist, this guide will help you:
99

1010
- Discover valuable publicly available data without triggering alerts or violating terms of service
1111
- Leverage a curated selection of Python libraries, tools, and workflows
@@ -19,7 +19,7 @@ Welcome to the **Python-OSINT-Handbook**, your comprehensive, up-to-date referen
1919
2020
---
2121

22-
## How This Handbook Is Organized
22+
## How This Notebook Is Organized
2323

2424
1. **Core Tools & Libraries**: Deep dives into major frameworks, domain-recon tools, social-media scrapers, and threat-intel platforms.
2525
2. **Installation & Configuration**: Step-by-step setup on Linux, Windows, macOS, Docker, plus API key and proxy best practices.

website/docs/advanced-guide.md

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
---
2+
title: Advanced Guide
3+
slug: /advanced-guide
4+
---
5+
6+
# Advanced Guide
7+
8+
You’ve built your foundation — now it’s time to snap together advanced Lego sets! Here you’ll learn how to automate, scale, and ethically handle OSINT at pro level.
9+
10+
## 🤖 Automation Pipelines
11+
- **Why automate?**
12+
- Manual OSINT is slow. Automation lets you cover more ground, faster.
13+
- Analogy: Like building a Lego conveyor belt that assembles blocks for you.
14+
- **Example: Automated domain footprinting**
15+
16+
```python
17+
import subprocess
18+
import sys
19+
# Run sublist3r to enumerate subdomains
20+
subdomains = subprocess.check_output([sys.executable, '-m', 'sublist3r', '-d', 'example.com'])
21+
print(subdomains.decode())
22+
```
23+
- **Workflow tools**: Use cron jobs, Makefiles, or even GitHub Actions to run scripts on a schedule.
24+
25+
## 🕸️ Threat Intelligence
26+
- **What is it?**
27+
- Collecting, analyzing, and sharing info about cyber threats.
28+
- **Lego analogy**: Like building a radar tower to spot incoming threats.
29+
- **Python for threat intel**:
30+
- Parse threat feeds (STIX, MISP, AlienVault OTX)
31+
- Correlate indicators (IP, domain, hash)
32+
- **Example: Fetching threat indicators**
33+
34+
```python
35+
import requests
36+
url = 'https://otx.alienvault.com/api/v1/indicators/export'
37+
data = requests.get(url).text
38+
print(data[:500]) # show a sample
39+
```
40+
41+
## ⚖️ Ethics & Emerging Tools
42+
- **Ethical OSINT**: Always respect privacy, legality, and intent.
43+
- Don’t use OSINT for harassment, doxing, or illegal activity.
44+
- Analogy: Use your Lego blocks to build, not destroy.
45+
- **Emerging Tools**:
46+
- Maltego, SpiderFoot, Shodan, Censys, and more.
47+
- AI and ML for pattern recognition.
48+
49+
## 🧠 Pro Tips
50+
- Document everything! Use README files, diagrams, and code comments.
51+
- Share your Lego builds (scripts, workflows) with the community.
52+
- Stay up to date: Follow OSINT Twitter, Reddit, and GitHub repos.
53+
- Automate responsibly — test scripts on your own assets first.
54+
55+
## 🚀 Next Steps
56+
- Contribute your own automation scripts or threat feeds to the [Showcase](./showcase).
57+
- Suggest improvements or new guides in the [Contributing](./contributing) doc.
58+
- Stay curious, keep building, and help others level up!

website/docs/beginner-guide.md

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
---
2+
title: Beginner Guide
3+
slug: /beginner-guide
4+
---
5+
6+
# Beginner Guide
7+
8+
Welcome! This is your launchpad if you’re new to OSINT or Python. We’ll use simple building blocks, lots of analogies, and hands-on examples.
9+
10+
## 🕵️‍♂️ What is OSINT?
11+
- **Open Source Intelligence (OSINT)** is like being a digital detective using only publicly available info (websites, social media, docs, etc.).
12+
- Think: Google searches, public records, social profiles, and more.
13+
14+
## 🐍 Python Basics for OSINT
15+
- Python is your “toolbox” — easy to learn, super flexible.
16+
- You don’t need to be a coder! Here’s a basic Lego block:
17+
18+
```python
19+
print("Hello, OSINT world!")
20+
```
21+
22+
- You can run this with [Repl.it](https://replit.com/) or your terminal.
23+
24+
## 🦺 Safe OSINT Practices
25+
- Never break the law. Only use public info.
26+
- Use a VPN or privacy browser if you’re researching sensitive topics.
27+
- Respect privacy and ethics. Don’t stalk, harass, or dox anyone.
28+
29+
## 🧩 Lego Block Recipes
30+
- **Google Dorking** (finding hidden info with Google):
31+
```text
32+
site:gov filetype:pdf "confidential"
33+
```
34+
- **Python: Download a webpage**
35+
```python
36+
import requests
37+
r = requests.get('https://example.com')
38+
print(r.text)
39+
```
40+
- **Find all links on a page**
41+
```python
42+
from bs4 import BeautifulSoup
43+
import requests
44+
url = 'https://example.com'
45+
soup = BeautifulSoup(requests.get(url).text, 'html.parser')
46+
for link in soup.find_all('a'):
47+
print(link.get('href'))
48+
```
49+
50+
## 🖼️ Visual Explainers
51+
- [ ] Add diagrams showing how info flows from the web to your screen
52+
- [ ] Add screenshots of tools in action
53+
54+
## 🚀 Next Steps
55+
- Try the code above!
56+
- Move on to the [Intermediate Guide](./intermediate-guide) when you’re ready for more.
57+
58+
If you get stuck, check the [FAQ](./faq) or ask for help on GitHub.

website/docs/contributing.md

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
---
2+
title: Contributing
3+
slug: /contributing
4+
---
5+
6+
# Contributing
7+
8+
Want to help make this the best OSINT resource? You’re awesome! Here’s how you can contribute, step by step:
9+
10+
## 🧩 1. Find Something to Improve
11+
- Is a doc confusing? Suggest edits!
12+
- Have a better code snippet or tool? Add it!
13+
- Want to translate or make the site more accessible? Yes please!
14+
- Built a cool OSINT workflow? Share in the [Showcase](./showcase)!
15+
16+
## 🛠️ 2. How to Contribute
17+
- **Docs**: Edit any `.md` file or suggest new guides/recipes.
18+
- **Code**: Improve scripts, fix bugs, or add new automation.
19+
- **Translations**: Help make guides available in more languages.
20+
- **Accessibility**: Suggest alt text, color tweaks, or structure changes.
21+
- **Community**: Share your story, workflow, or tools.
22+
23+
## 📝 3. Steps (Lego Block Style)
24+
1. Fork the repo on [GitHub](https://github.com/tegridydev/python-OSINT-notebook)
25+
2. Make your changes (docs, code, etc.)
26+
3. Commit with a clear message (e.g. `fix: clearer intro for beginners`)
27+
4. Open a Pull Request (PR) — describe what you changed and why
28+
5. Wait for feedback or approval (we’re friendly!)
29+
30+
## 🧠 Neurodivergent/ADHD/Autism-Friendly Tips
31+
- Use short, clear sentences
32+
- Add visuals or analogies if you can
33+
- Don’t stress about “perfect” — every block helps
34+
- Ask questions in your PR if you’re unsure
35+
36+
## 🏗️ Style Guide
37+
- Use simple language and lots of examples
38+
- Prefer code blocks and checklists
39+
- Be kind and inclusive
40+
41+
## 📢 Questions or Ideas?
42+
- Open an issue or PR on GitHub
43+
- Or just say hi and share what you’re building!
44+
45+
See [CONTRIBUTING.md](https://github.com/tegridydev/python-OSINT-notebook/blob/main/CONTRIBUTING.md) for coding and docs style details.

website/docs/faq.md

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
---
2+
title: FAQ
3+
slug: /faq
4+
---
5+
6+
# Frequently Asked Questions
7+
8+
## ❓ Who is this for?
9+
Anyone interested in OSINT — from total beginners to pros, and especially neurodivergent learners.
10+
11+
## 🧠 Is this ADHD/autism-friendly?
12+
Absolutely. We use:
13+
- Lego block analogies (build in small steps)
14+
- Visuals, code samples, and checklists
15+
- Clear, consistent structure
16+
- No gatekeeping — all are welcome
17+
18+
## 🛠️ How can I contribute?
19+
- See the [Contributing](./contributing) page
20+
- Submit guides, scripts, or improvements via GitHub
21+
- Share your workflows in the [Showcase](./showcase)
22+
23+
## 🚦 Where do I start?
24+
- Check the [Start Here](./start-here) page
25+
- Pick your skill level guide (Beginner, Intermediate, Advanced)
26+
27+
## 🐍 Do I need to know Python?
28+
Nope! The Beginner Guide covers Python basics. You can copy-paste code and learn as you go.
29+
30+
## 🕵️‍♂️ Is OSINT legal?
31+
- Yes, as long as you only use public info and respect privacy/laws.
32+
- Don’t dox, stalk, or harass anyone.
33+
34+
## 🧩 What if I get stuck or overwhelmed?
35+
- Take breaks — learning is like building Lego, one block at a time
36+
- Ask for help via GitHub issues
37+
- Use the search bar for quick answers
38+
39+
## 🌍 Can I use this in languages other than English?
40+
- We’re working on translations! Want to help? See [Contributing](./contributing).
41+
42+
## 🏗️ Can I use this for my own project or training?
43+
- Yes! Everything here is open source (see LICENSE). Fork, remix, share — just credit the project.
44+
45+
## ❓ More questions?
46+
Open an issue on GitHub or suggest an edit!

website/docs/intermediate-guide.md

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
---
2+
title: Intermediate Guide
3+
slug: /intermediate-guide
4+
---
5+
6+
# Intermediate Guide
7+
8+
Welcome to the next level! Here you’ll start snapping together more complex Lego blocks — building your own OSINT tools, automating workflows, and solving real-world problems.
9+
10+
## 🔎 Tool Deep-Dives
11+
- **Recon-ng**: Modular OSINT framework for automation.
12+
- Lego analogy: Like a big baseplate you can add modules to.
13+
- Try: `pip install recon-ng`
14+
- **theHarvester**: Finds emails/domains from public sources.
15+
- Lego analogy: Like a search radar brick.
16+
- Try: `pip install theHarvester`
17+
- **SpiderFoot**: All-in-one OSINT automation tool (GUI/web).
18+
- Lego analogy: Like a robot that assembles blocks for you.
19+
20+
## 🛠️ Scripting Workflows
21+
- Automate repetitive tasks with Python scripts.
22+
- Example: Find all PDF links on a site and download them:
23+
24+
```python
25+
import requests
26+
from bs4 import BeautifulSoup
27+
url = 'https://example.com'
28+
soup = BeautifulSoup(requests.get(url).text, 'html.parser')
29+
pdfs = [link.get('href') for link in soup.find_all('a') if link.get('href', '').endswith('.pdf')]
30+
for pdf in pdfs:
31+
print('Downloading:', pdf)
32+
r = requests.get(pdf)
33+
with open(pdf.split('/')[-1], 'wb') as f:
34+
f.write(r.content)
35+
```
36+
37+
## 🌐 Real-World Scenarios
38+
- **Username checks**: See if a username exists across social platforms.
39+
- **Domain footprinting**: Map out all subdomains and related assets.
40+
- **Data enrichment**: Combine info from multiple sources for a fuller picture.
41+
42+
## 🧩 Troubleshooting & Pro Tips
43+
- If a script fails, check:
44+
- Typos in URLs
45+
- Missing Python packages (`pip install ...`)
46+
- Website blocks (try headers or proxies)
47+
- Use print statements to debug (like Lego instructions for each step)
48+
- Don’t be afraid to break things — that’s how you learn!
49+
50+
## 🚀 Next Steps
51+
- Try writing your own script for a small OSINT task.
52+
- Move on to the [Advanced Guide](./advanced-guide) for automation pipelines and threat intel.
53+
54+
If you get stuck, check the [FAQ](./faq) or open an issue on GitHub.

website/docs/scripts/README.md

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Scripts
2+
3+
A curated collection of ready-to-go, multi-tool Python OSINT scripts. Drop these into your workflow to automate recon, data collection, and analysis across multiple sources.
4+
5+
---
6+
7+
- Each script is self-contained, well-documented, and designed for beginner friendly, step-by-step usage.
8+
- Scripts use only legal, passive sources and respect rate limits/ToS.
9+
- Copy, run, and customize as needed!
10+
11+
## Contents
12+
- [Domain Recon Combo](./domain-recon-combo.md)
13+
- [Social Media Multi-Profile](./social-media-multi-profile.md)
14+
- [Threat Intel Aggregator](./threat-intel-aggregator.md)
15+
- [Passive Metadata Harvester](./passive-metadata-harvester.md)
16+
- [All-in-One Passive Recon](./all-in-one-passive-recon.md)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# All-in-One Passive Recon
2+
3+
A super-script that combines domain, social, threat, and metadata checks. Ez, modular, and safe.
4+
5+
---
6+
7+
## Usage
8+
- Requires: `requests`, `whois`, `rich`, `exifread`, `python-magic`
9+
- Run: `python all_in_one_passive_recon.py <domain> <username> <urls.txt>`
10+
11+
---
12+
13+
```python
14+
import sys
15+
from domain_recon_combo import main as domain_recon
16+
from social_media_multi_profile import main as social_media
17+
from threat_intel_aggregator import main as threat_intel
18+
from passive_metadata_harvester import main as metadata
19+
20+
if __name__ == "__main__":
21+
if len(sys.argv) < 4:
22+
print("Usage: python all_in_one_passive_recon.py <domain> <username> <urls.txt>")
23+
sys.exit(1)
24+
domain = sys.argv[1]
25+
username = sys.argv[2]
26+
urls_file = sys.argv[3]
27+
print("\n=== DOMAIN RECON ===")
28+
domain_recon(domain)
29+
print("\n=== SOCIAL MEDIA ===")
30+
social_media(username)
31+
print("\n=== THREAT INTEL ===")
32+
threat_intel()
33+
print("\n=== METADATA ===")
34+
metadata(urls_file)
35+
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# Archive.org Snapshot Finder
2+
3+
Finds all snapshots for a domain or URL using the Wayback Machine API.
4+
5+
---
6+
7+
## Usage
8+
- Requires: `requests`, `rich`
9+
- Run: `python archive_org_snapshots.py <domain_or_url>`
10+
11+
---
12+
13+
```python
14+
import sys, requests
15+
from rich import print
16+
17+
API = "http://web.archive.org/cdx/search/cdx?url={}&output=json&fl=timestamp,original&collapse=urlkey"
18+
19+
def main(target):
20+
r = requests.get(API.format(target))
21+
if r.status_code != 200:
22+
print("[red]Not found or error")
23+
return
24+
data = r.json()
25+
print(f"[bold cyan]Snapshots for {target}:[/]")
26+
for entry in data[1:]:
27+
print(f"- {entry[0]} {entry[1]}")
28+
29+
if __name__ == "__main__":
30+
if len(sys.argv) < 2:
31+
print("Usage: python archive_org_snapshots.py <domain_or_url>")
32+
sys.exit(1)
33+
main(sys.argv[1])
34+
```

0 commit comments

Comments
 (0)