OSINT › Module 7 › Lesson 4
Lab — Archive and Header Snapshot
curl -I YOUR site or toy; save robots/headers; chmod 600.
Visual · archive_header_lab
Lab evidence is headers YOU fetched on YOUR URL or loopback. GATE 192.168.0.1. STOP if router.
Opening
A dated curl -I file is a snapshot. A LAN sweep is not extra credit.
Start (optional) a toy on that serves robots.txt and sitemap.xml. curl -I that toy or YOUR public site. Save headers. Optional: CDX for YOUR URL, urlscan UI for YOUR URL, Observatory for YOUR hostname. chmod 600. No 0.0.0.0. No nmap /24. Original Cyberlium. Next: Quiz — Archives and Fingerprints.
1. GATE, then choose YOUR site or the loopback toy
. Official labs still name https://web.archive.org/, CDX, https://urlscan.io/, Wappalyzer, WhatWeb, BuiltWith, https://observer.mozilla.org/, https://securityheaders.com/, https://github.com/gitleaks/gitleaks.
If you have a public site in t12-scope.yaml, curl -I that HTTPS URL. Otherwise use the toy on Both count. Scanning the apartment building does not.
Command guide
GATE, then choose YOUR site or the loopback toy
═══ INSTALL ═══
Linux (Debian/Ubuntu):
Command — copy this
brew install gitleaks # or go install sudo apt install whatweb sudo apt install python3
macOS:
Command — copy this
brew install gitleaks brew install whatweb brew install python3
Windows:
Command — copy this
choco install gitleaks
Optional command
git clone https://github.com/urbanadventurer/WhatWeb
Download https://python.org/downloads/
═══ COMMANDS ═══
Command — copy this
cat > "$HOME/cyberlium-lab/t12-m07-toy.py" << 'PY'
from http.server import BaseHTTPRequestHandler, HTTPServer
class H(BaseHTTPRequestHandler):
def _send(self, code, ctype, body):
self.send_response(code)
self.send_header("Content-Type", ctype)
self.send_header("Server", "Cyberlium-M07-Toy")
self.send_header("X-Robots-Tag", "noindex")
self.end_headers()
self.wfile.write(body)
def do_HEAD(self):
self._send(200, "text/plain", b"")
def do_GET(self):
if self.path.startswith("/robots.txt"):
self._send(200, "text/plain", b"User-agent: *
Disallow: /lab
")
elif self.path.startswith("/sitemap.xml"):
self._send(200, "application/xml", b"<urlset></urlset>")
else:
self._send(200, "text/plain", b"cyberlium t12 m07 toy")
def log_message(self, fmt, *args):
return
print("python3 this file binds 127.0.0.1:8806 only")
HTTPServer(("127.0.0.1", 8806), H).serve_forever()
PY2. Fetch headers, robots, sitemap — then stop adding tools
curl -I SAFE (or YOUR site). Save the first twenty header lines. curl robots.txt and sitemap.xml on the same host. That is the snapshot. Optional Observatory/securityheaders on a public name YOU own.
Do not WhatWeb the café. Do not urlscan 192.168.0.1. Do not gitleaks a stranger in this lab — that was YOUR clone in lesson 3.
3. Lock the snapshot, refuse the sweep
chmod 600 every file. Write whether gitleaks ran on YOUR clone (yes/skip). Stop. Quiz next.
Binding the toy to 0.0.0.0 fails the lab culturally even if curl still works.
4. What you ship: header/robots snapshot from YOUR URL or loopback
t12-m07-l04-headers.txt (or honest skip + YOUR site curl). robots/sitemap if toy ran. chmod 600. Toy bind only. DEMO GATE holds.
5. What you record before the next lesson
Snapshot paths. DEMO identified/STOP. NEVER 0.0.0.0, never /24. Next: Quiz — Archives and Fingerprints.
6. Wrong vs right: strangers vs identifiers YOU own
Worked failure — same OSINT word, opposite target. Right never needs a classmate or a dump site.
Wrong
python -m http.server --bind 0.0.0.0. urlscan the router. WhatWeb 192.168.0.0/24.
Right
curl -I YOUR site or Save files. Stop. Next: Quiz — Archives and Fingerprints.
Mission: snapshot headers YOU are allowed to fetch
1) / STOP if router. 2) Start toy or curl -I YOUR site. 3) Save headers (and robots/sitemap if toy). Never nmap. Never bind 0.0.0.0. Never urlscan strangers.
Stuck? Ask Cyberlium AI Mentor
If the toy fails to bind, ask Mentor about an in-use port — not how to publish 0.0.0.0 so a phone can join.
Knowledge Check
APPLY: The loopback toy is down and you have no public site. You:
Multiple choice
Knowledge Check
APPLY: True or False: curl -I is an authorized lab command when YOUR toy is bound there.
True or False
Knowledge Check
APPLY: securityheaders.com in this lab:
Multiple choice