Ethical › Module 1 › Lesson 4
Lab — Write Your Personal RoE
Write authorized-target rules for YOUR lab only, then lock the notes.
Visual · illustration
ceh-roe.txt is a permission file for YOUR lab only: in-scope assets you own, out-of-scope everyone else, then chmod 600.
Opening
Lab: write ceh-roe.txt for YOUR lab only — then chmod 600. No third-party targets, no movie stealth.
Lessons 1–3 gave you the switches (permission, intent), the five-phase map, and why “I was practicing” is not a defense. This lab is the artifact later modules will assume you have: $HOME/cyberlium-lab/ceh-roe.txt. It is not a scanner. It is not an exploit. It is not a copied EC-Council form. It is YOUR authorized-target rules: what you may touch in this course, what you must never touch, which techniques stay banned even at home (attacking others, availability attacks on shared family devices, storing live secrets), and how you lock the file. This is original Cyberlium curriculum mapped to the CEH v13 introduction domain. It is NOT official EC-Council training, NOT a CEH exam dump, and completing it does NOT grant CEH. Empty notes fail. Notes that list a classmate, employer, campus, neighbor, or random internet range as in-scope fail ethics even if Python printed OK. chmod 600 is part of the mission, not extra credit. You will run a small checker that only reads YOUR file and confirms required headings exist. It does not probe the network. If the checker complains, you fix the text — you do not “make it pass” by adding someone else’s IP. Next is Quiz — Ethical Hacking Intro, then Module 2 opens Passive Recon: What the Internet Already Says — still inside this RoE.
1. What you are writing: a living RoE for one student lab, not a pentest of the planet
A personal RoE is shorter than a law-firm stack and stricter than a vibe. It must name you as tester, name you (or a legal entity you actually control) as owner, list in-scope assets in concrete language, list out-of-scope examples so you cannot later claim confusion, list allowed activities for Cyberlium (notes, local files, VMs you create, loopback), list banned activities (anything against systems you do not own or lack writing for), set a stop rule, and set data handling: this folder, mode 600, no public gists, no live passwords from real accounts.
Concrete in-scope language looks like: 127.0.0.1; VMs I created whose disks live on this computer; Docker compose apps I started on localhost ports I chose; files I authored under $HOME/cyberlium-lab. Concrete out-of-scope language looks like: roommate devices; campus or employer networks; cloud accounts I do not own; public companies; bug-bounty targets I have not separately enrolled in under their policy (and this course does not require that); any IP I cannot justify as mine in one sentence. If a later lesson offers example.com as a public-read (certificate, DNS), that is a documented exception for browser-equivalent reads — not a license to exploit example.com.
The file is for you to reread when a future module is exciting. Excitement is when people “just nmap the dorm.” The RoE is the dull page that says no. If you live with others, say so in the out-of-scope list. If you use a cloud VM, it is in scope only if the account is yours and the instance is yours — not a trial you found, not a classmate’s box. Write dates: this RoE is for Cyberlium Topic 9 labs starting today. You can amend it; you cannot silently expand it to the internet.
Command guide
Create personal RoE — WHAT/WHY (one student lab)
═══ INSTALL ═══
Linux (Debian/Ubuntu):
Command — copy this
sudo apt install nmap
macOS:
Command — copy this
brew install nmap
Windows:
Command — copy this
choco install nmap # or download https://nmap.org/download.html
═══ COMMANDS ═══
Command — copy this
test -f "$NOTES" && echo "RoE exists — you will fill headings"
Command — copy this
cat > "$NOTES" << 'EOF' === PERSONAL RoE (Cyberlium M01 L04) === DISCLAIMER: original Cyberlium — not official CEH training, not a cert OWNER: IN_SCOPE: OUT_OF_SCOPE: TECHNIQUES_ALLOWED: TECHNIQUES_FORBIDDEN: nmap 192.168.0.0/24 ; hydra ; cafe ; campus DATA_HANDLING: chmod 600 notes; no trophies STOP_BUTTON: router-admin at 192.168.0.1 => use 127.0.0.1 EOF
2. Required headings the checker will look for — fill them in YOUR words
The lab script writes a template, then a Python checker looks for heading keys. You must replace parentheticals. Required keys: DISCLAIMER, TESTER, OWNER, IN_SCOPE, OUT_OF_SCOPE, ALLOWED, BANNED, STOP_RULE, DATA_HANDLING, ETHICS. The checker also fails if IN_SCOPE is still a placeholder, if OUT_OF_SCOPE is empty, or if the file contains bait phrases that mean you tried to authorize the planet (for example leaving TODO_SCAN_THE_INTERNET in place). It does not try to be a lawyer. It tries to stop a blank file from counting as a lab.
DISCLAIMER must include the Cyberlium legal sentence in spirit: original curriculum, mapped to a CEH v13 domain, not official EC-Council training, not a CEH exam dump, completing it does not grant CEH. Copying that idea in your own words is required because Module 1 keeps lying to people who skip it. TESTER and OWNER should usually both be you for this lab. If OWNER is “my employer” and IN_SCOPE is production, you failed the course ethics even if the checker’s string match passes — the checker cannot see employment law. You can. Do not gaslight it.
ALLOWED should mention notes, chmod 600, local/lab-only work, and describing the five-phase map. BANNED should mention attacking others, unauthorized scanning, exploiting strangers, wiping others’ logs, storing dumped personal data, and claiming this file is official CEH courseware. STOP_RULE can be ordinary: if I am unsure whether a target is mine, I stop. DATA_HANDLING: path $HOME/cyberlium-lab/ceh-roe.txt, mode 600, no gist. ETHICS: authorized lab only.
Command guide
Check RoE headings — WHAT/WHY (fill in YOUR words)
═══ INSTALL ═══
Linux (Debian/Ubuntu):
Command — copy this
sudo apt install python3
macOS:
Command — copy this
brew install python3
Windows: Download https://python.org/downloads/
═══ COMMANDS ═══
Command — copy this
grep -E "DISCLAIMER|OWNER|IN_SCOPE|OUT_OF_SCOPE|STOP_BUTTON" "$NOTES"
Command — copy this
python3 - << 'PY'
from pathlib import Path
p = Path.home() / 'cyberlium-lab' / 'ceh-roe.txt'
t = p.read_text(encoding='utf-8') if p.exists() else ''
keys = ['DISCLAIMER','OWNER','IN_SCOPE','OUT_OF_SCOPE','STOP_BUTTON']
print('missing:', [k for k in keys if k not in t] or 'none')
PY3. What the commands do: create a folder, write a file, check headings, lock mode — no network probe
mkdir -p creates the lab directory. The here-document writes ceh-roe.txt. Python reads the file as UTF-8 text, checks for keys, prints PASS or FAIL with missing keys. chmod 600 restricts the file to you on Unix-like systems. On Windows, use WSL or Git Bash for chmod, or tighten NTFS permissions on your user profile. There is no nmap, no curl to a third party, no socket connect in the checker. If you added those, you left the lab.
Rerun the checker after you edit. A PASS that still lists a neighbor in IN_SCOPE is an ethics fail you must catch with your eyes. The confirmation checkbox is you asserting you used your eyes. Do not check it because Python printed a banner. Do not email the file to a stranger to “grade.” Do not put real SSO passwords in it. A toy lab password you made for a VM is already generous; prefer not even that — name the VM instead.
Command guide
Lock RoE — WHAT/WHY (create, check, chmod — no probe)
═══ COMMANDS ═══
Command — copy this
ls -l "$NOTES"
4. Ethics line: YOUR lab, YOUR rules — never others, never dumps, never a fake cert claim
Authorized lab only. Do not attack others. Do not treat this RoE as permission to join a ransomware simulation on a hospital. Do not paste copyrighted vendor labs into the file. Do not title it “Official CEH v13 RoE.” If you already ran a scan on something you do not own, this lab does not launder that. Stop those activities. This file is forward-looking rules, not an indulgence.
Keep ceh-ethics-notes.txt, ceh-five-phases-notes.txt, and ceh-law-roe-notes.txt as siblings. They are not substitutes for ceh-roe.txt. The RoE is the operational page. If they contradict, the stricter out-of-scope list wins. chmod 600 all of them. Empty any file that still contains someone else’s secrets if you pasted those by mistake — deleting stolen data is cleanup, not covering tracks as a crime.
5. Wrong vs right: internet-as-scope vs a locked RoE that only names what you own
Worked failure — same filename, opposite contents. Right never adds a third-party IP to pass a feeling of completeness.
Wrong
IN_SCOPE: 0.0.0.0/0, campus, employer production, neighbor Wi-Fi. Skip chmod. Gist the file. Claim it is official EC-Council paper. Add nmap in the checker “to verify hosts.” Leave placeholders. Use “I was practicing” as STOP_RULE. Store live account passwords. Check the mission box on an empty file.
Right
IN_SCOPE: localhost, VMs/containers you created, files under $HOME/cyberlium-lab. OUT_OF_SCOPE: everyone else. Fill all required headings in your words. Run the checker. chmod 600 ceh-roe.txt. Next: Quiz — Ethical Hacking Intro. Still not a CEH grant.
6. Hands-on: write ceh-roe.txt, pass the heading checker, lock mode 600
Run the block on a machine you own. Edit parentheticals. Re-run python3 check_ceh_roe.py until PASS. Then chmod 600. Do not add network tools. Do not point the checker at /etc/shadow. Windows: WSL/Git Bash, or create the same text file in your profile and restrict ACLs if chmod is missing.
Command guide
ceh-roe.txt + check_ceh_roe.py — YOUR lab rules only (no scanning)
═══ INSTALL ═══
Linux (Debian/Ubuntu):
Command — copy this
sudo apt install python3
macOS:
Command — copy this
brew install python3
Windows: Download https://python.org/downloads/
═══ COMMANDS ═══
Command — copy this
cd "$HOME/cyberlium-lab"
Command — copy this
ROE="$HOME/cyberlium-lab/ceh-roe.txt" cat > "$ROE" << 'EOF' === CYBERLIUM PERSONAL RoE (MODULE 1 LAB) === DISCLAIMER: This is original Cyberlium curriculum mapped to the CEH v13 introduction domain. It is NOT official EC-Council training, NOT a CEH exam dump, and completing it does NOT grant CEH or any EC-Council credential. TESTER: (my name or handle — I am the only tester for this student lab) OWNER: (I own this computer / these VMs — not my school, not my employer) IN_SCOPE: - 127.0.0.1 and localhost services I started - Virtual machines and containers I created on this machine - Files I authored under $HOME/cyberlium-lab OUT_OF_SCOPE: - Roommate, family, neighbor, cafe, campus, and employer systems - Cloud or SaaS I do not own - Random public IPs, whole internet, "anything with a login form" - Bug-bounty assets unless I separately enroll under THAT program's rules (Cyberlium does not assign that) ALLOWED: - Writing notes, running course checkers on MY files - Later course labs that explicitly name MY VM/localhost - Describing recon/scan/access/maintain/cover-tracks as a defender map BANNED: - Attacking others; unauthorized scanning or exploitation - Wiping someone else's logs; stealing or storing their data - Availability attacks on shared household devices - Claiming this file is official CEH courseware STOP_RULE: If I am unsure the target is mine, I stop. I do not "practice" on it. DATA_HANDLING: This file lives at $HOME/cyberlium-lab/ceh-roe.txt; chmod 600; no public gist; no live account passwords. ETHICS: authorized lab only; I will not attack others. EOF
Command — copy this
cat > check_ceh_roe.py << 'PY'
from pathlib import Path
path = Path.home() / "cyberlium-lab" / "ceh-roe.txt"
text = path.read_text(encoding="utf-8")
keys = [
"DISCLAIMER",
"TESTER",
"OWNER",
"IN_SCOPE",
"OUT_OF_SCOPE",
"ALLOWED",
"BANNED",
"STOP_RULE",
"DATA_HANDLING",
"ETHICS",
]
missing = [k for k in keys if k not in text]
if missing:
raise SystemExit("FAIL missing keys: " + ", ".join(missing))
if "(my name" in text or "TODO_SCAN_THE_INTERNET" in text:
raise SystemExit("FAIL replace placeholders; do not authorize the internet")
if "NOT official EC-Council" not in text and "not official EC-Council" not in text:
raise SystemExit("FAIL disclaimer must say this is not official EC-Council training")
print("PASS: required headings present for", path)
print("ethics reminder: YOUR lab only; chmod 600; no attacking others")
PYCommand — copy this
python3 check_ceh_roe.py || python check_ceh_roe.py
Command — copy this
ls -l "$ROE"
Mission: $HOME/cyberlium-lab/ceh-roe.txt (mode 600)
1) Fill DISCLAIMER, TESTER, OWNER, IN_SCOPE, OUT_OF_SCOPE, ALLOWED, BANNED, STOP_RULE, DATA_HANDLING, ETHICS in your own words. IN_SCOPE must be YOUR lab only (localhost, VMs you created, files you authored). 2) Run check_ceh_roe.py so it PASSes; chmod 600 $HOME/cyberlium-lab/ceh-roe.txt (and the checker). 3) Do not list third-party targets. Do not attack others. Do not claim this is official EC-Council training or a CEH grant. Include that “I was practicing” is not a defense in STOP_RULE or ETHICS.
Stuck? Ask Cyberlium AI Mentor
If “a real RoE must include a public company so it looks professional” still feels true, ask for a hint — not a target. Try: "Hint only: which IN_SCOPE lines are honest for a student lab (localhost, my VMs, cyberlium-lab files), why OUT_OF_SCOPE must name campus/employer/neighbors, why chmod 600 on $HOME/cyberlium-lab/ceh-roe.txt, and why this is not official EC-Council training?" You still fill the file. No nmap. No third-party IPs.
You now have a personal RoE that later lessons can point at: authorized lab only, locked notes, no practicing on other people’s systems, no fake certification claim. Next — Quiz — Ethical Hacking Intro — ten APPLY items on permission, the five-phase map, and legal scope. After the quiz, Passive Recon: What the Internet Already Says begins Module 2, still inside ceh-roe.txt, still original Cyberlium, still not a CEH exam dump.
Knowledge Check
APPLY: check_ceh_roe.py prints PASS. IN_SCOPE still lists the campus /24 and a neighbor router. What did you demonstrate, and what is this lab not?
Multiple choice
Knowledge Check
APPLY: True or False: Because this lab maps to a CEH v13 domain, ceh-roe.txt is official EC-Council training, grants CEH when chmod 600, and “I was practicing” covers any host you add to IN_SCOPE.
True or False
Knowledge Check
APPLY: Where does the RoE live, what mode, and what comes next?
Multiple choice
Knowledge Check
APPLY: curl of http://192.168.0.1/ shows a home router login (TP-Link / Netgear / Huawei / "Router Admin"). Is that DEMO in scope as a hacking target?
Multiple choice