Cyberlium

OSINT › Module 7 › Lesson 4

BeginnerModule 7Lesson 4/5

Lab — Archive and Header Snapshot

curl -I YOUR site or toy; save robots/headers; chmod 600.

25 min+40 XP3 quiz
Module progress4 of 5

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()
PY

2. 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

1

APPLY: The loopback toy is down and you have no public site. You:

Multiple choice

Knowledge Check

2

APPLY: True or False: curl -I is an authorized lab command when YOUR toy is bound there.

True or False

Knowledge Check

3

APPLY: securityheaders.com in this lab:

Multiple choice

← Previous

Answer all 3 knowledge checks to continue. (0/3 answered)