A fully interactive, browser-based Linux terminal simulator for cybersecurity students and beginners.
Practice 100+ real Linux commands with zero setup β no VM, no installation, no risk.
π Live Demo Β Β·Β π Command List Β Β·Β π¨ Themes Β Β·Β π Practice Challenges Β Β·Β π€ Contributing
π‘ Tip for your repo: record a short screen capture of the terminal in action (boot animation β running a few commands β switching themes), save it as
assets/demo.gif, and it will automatically appear here.
Cyber Assassins is a zero-dependency, fully client-side Linux terminal simulator that runs entirely in your browser. It is designed for:
- π Cybersecurity students learning Linux for the first time
- π§ Beginners who want to practice without breaking a real system
- π CTF players brushing up on command-line fundamentals
- π©βπ» Developers who want a quick Linux command reference
Everything runs in-memory in your browser. No data is sent anywhere. No installation needed. Just open and type.
| Feature | Details |
|---|---|
| 100+ Commands | Full coverage of navigation, files, permissions, processes, networking, and more |
| Virtual Filesystem | In-memory filesystem that mirrors real Linux structure (/home, /etc, /var, /tmp, etc.) |
| Interactive nano Editor | Full nano simulation with Ctrl+O save and Ctrl+X exit |
| Command History | Arrow keys navigate history, just like a real shell |
| Tab Autocomplete | Completes commands and filenames instantly |
| Multiple Tabs | Open multiple terminal sessions side by side |
| Piping Support | Basic pipe ` |
| Redirection | > and >> operators write to virtual files |
A real Unix-style permission model β not just a display string, but an actual rules engine every command respects:
- Numeric mode: 3-digit (
755,644) and 4-digit with special bits (4755setuid,2755setgid,1777sticky) - Symbolic mode: single (
u+x), comma-chained (u+rwx,g+rx,o-rwx), multi-class (ug+rw), bare operator defaults to "all" (+x) chmod -Rrecursive andchmod -vverbose (shows before β after)chown user:group file(root only) andchown -Rrecursivechgrpandchgrp -Rrecursive- Real groups:
groupadd,usermod -aG group user,groups [user]β group-based access actually works, not just owner-vs-everyone - Enforced everywhere:
cat/grep/head/tailneed read Β·cdneeds execute on the directory (the real Linux rule beginners always miss) Β·rmneeds write on the parent directory, not the file itself Β·./script.shneeds+x, whilebash script.shonly needs read - Educational "Permission denied" messages β every denial explains why (which class, which bit) and suggests the exact
chmodfix
Three files seeded in a deliberately broken state, exactly like the classic sysadmin examples:
~/.ssh/id_rsaβ world-readable private key (should be600)~/backup.shβ script missing its execute bit (should be755)/var/www/html/index.htmlβ world-writable website file (should be644)
Run scenarios to see the problems, fix them with real chmod commands, then scenarios check to verify.
revision chmodβ an exam-style cheat sheet (numeric values, common modes, symbolic syntax, command summary)quiz chmodβ interview-style practice questions with hints, graded in real time
nmap, ssh, and scp are no longer flavor text. There's a second, fully independent virtual machine living inside the simulator:
nmap 10.0.0.5β scans a real simulated target (webserver01) and returns its actual open ports (22/SSH, 80/HTTP, 3306/MySQL)ssh deploy@10.0.0.5(password: discoverable on the remote machine itself) β really connects, swapping your entire session into the remote filesystem, remote users, remote promptssh root@10.0.0.5β escalate to remote root and explore root-only filesscp user@host:file ./file/scp file user@host:fileβ real file transfer in both directions, with its own password authenticationexitβ disconnects cleanly back to your local Kali machine; everything you did remotely persists for next time- 4 additional CTF flags hidden exclusively on the remote machine β reconnaissance, breaking in, exfiltration, and remote privilege escalation
ps, top, kill, and jobs read from and mutate an actual process table, not static printed text:
- A runaway process puzzle is seeded on boot β something is quietly consuming 97%+ CPU. Find it with
ps auxortop(sorted by CPU, so it's impossible to miss), thenkill -9 <PID>to stop it sleep 10 &starts a real background job that completes over simulated time as you keep typing commands βjobsshows it transition fromRunningtoDonekill <PID>actually removes the process from the table; a laterpsreflects the change
- Default user:
studentΒ· password:toor(Kali default) sudo suβ prompts for password β switches to rootpasswdβ interactive password change flowexitfrom root β returns to studentwhoami,id,groupsreturn realistic output
- π‘ Inline Tips β contextual tips appear after commands (40% chance, non-spammy)
- π Command Cheatsheet β full sidebar with all 100+ commands, click any to insert
- π File Explorer β visual sidebar showing the virtual filesystem tree
β οΈ Danger Zone Warnings βrm -rf /shows a real-world impact warning- π Man Pages β
man <command>shows simplified, readable manual pages
- 8 Built-in Themes β GitHub Dark, Matrix, VS Code, Kali Red, Midnight, Hacker, Dracula, Light
- Custom Color Picker β change background, prompt, text, and accent colors live
- Font Size Control β increase/decrease with
+/βbuttons - Collapsible Panels β sidebar and cheatsheet can be toggled
- 7 hidden flags scattered across the filesystem, each teaching a real technique: hidden files, hidden directories, permission bypass, base64 decoding, archive extraction, root access, and recursive search
- Live scoreboard panel with progress bar, points, and per-flag hints
- Toast notifications the moment a flag is captured, right in the terminal
- Hint system β type
ctf hintsor open the π© CTF panel for nudges without spoilers - Commands:
ctf,ctf hints,flags
- Your filesystem, command history, theme, and CTF progress are automatically saved to
the browser's
localStorageafter every command - Close the tab, come back later β Cyber Assassins remembers exactly where you left off
- A faster "Welcome back" boot sequence plays for returning users, showing your saved CTF score
saveβ manually force a save Β·factory-resetβ wipe everything and start clean
- Write actual
.shscripts in the built-innanoeditor β comments, variables (VAR=value), and variable substitution ($VAR,${VAR}) are all supported - Run them for real with
run script.shorbash script.shβ each line executes through the same command engine as the interactive terminal, so anything you can type, a script can do - A safety cap (500 lines) prevents runaway loops from freezing the browser
# Just open index.html in any browser β no server needed
open index.htmlFork this repo β Go to Settings β Pages β Set source to main branch β Done.
git clone https://github.com/shivam/cyber-assassins.git
cd cyber-assassins
# Python
python3 -m http.server 8080
# Node.js
npx serve .
# Then open: http://localhost:8080| Command | Description |
|---|---|
pwd |
Print working directory |
ls |
List directory contents |
ls -la |
Detailed listing with hidden files |
cd <dir> |
Change directory |
cd .. |
Go up one level |
cd ~ |
Go to home directory |
cd - |
Go to previous directory |
tree |
Show directory tree |
| Command | Description |
|---|---|
touch file |
Create empty file |
mkdir dir |
Create directory |
mkdir -p a/b/c |
Create nested directories |
rm file |
Remove file |
rm -r dir |
Remove directory recursively |
rm -rf dir |
Force remove (shows danger warning) |
cp src dst |
Copy file |
cp -r src dst |
Copy directory |
mv src dst |
Move or rename |
ln -s src link |
Create symbolic link |
| Command | Description |
|---|---|
cat file |
Display file contents |
cat -n file |
Display with line numbers |
less file |
Paginate through file |
head file |
First 10 lines |
head -n 20 file |
First N lines |
tail file |
Last 10 lines |
tail -f file |
Follow log file |
wc -l file |
Count lines |
wc -w file |
Count words |
nano file |
Open interactive editor |
echo "text" |
Print text |
echo "text" > file |
Write to file |
echo "text" >> file |
Append to file |
| Command | Description |
|---|---|
chmod 755 file |
Set permissions (numeric) |
chmod 4755 file |
Numeric with setuid bit |
chmod -R 755 dir/ |
Apply recursively |
chmod -v 644 file |
Verbose β shows before β after |
chmod +x file |
Add execute permission (all classes) |
chmod u+r file |
Add owner read permission |
chmod o-w file |
Remove others write |
chmod u+rwx,g+rx,o-rwx f |
Comma-chained symbolic mode |
chown user file |
Change file owner (root only) |
chown user:group file |
Change owner + group together (root) |
chown -R user dir/ |
Recursive ownership change (root) |
chgrp group file |
Change file group |
chgrp -R group dir/ |
Recursive group change |
umask |
Show default permission mask |
| Command | Description |
|---|---|
revision chmod |
Exam-style cheat sheet (numeric values, common modes, syntax) |
quiz chmod |
Interview-style Q&A practice, graded in real time |
scenarios |
3 real-world permission problems to fix |
scenarios check |
Verify your fixes against the real-world scenarios |
groupadd name |
Create a new group (root) |
usermod -aG group user |
Add a user to a group (root) |
groups [user] |
Show group memberships |
| Command | Description |
|---|---|
grep "pattern" file |
Search for pattern in file |
grep -r "pattern" . |
Recursive search |
grep -i "pattern" file |
Case-insensitive search |
grep -n "pattern" file |
Show line numbers |
grep -v "pattern" file |
Invert match |
find . -name "*.txt" |
Find by filename |
find . -type f |
Find files only |
find . -type d |
Find directories only |
locate filename |
Quick file search |
which command |
Locate a command |
whereis command |
Find binary, man, source |
| Command | Description |
|---|---|
whoami |
Current username |
id |
User ID and group memberships |
groups |
List user groups |
uname -a |
Full system information |
hostname |
Machine hostname |
uptime |
System uptime and load |
date |
Current date and time |
cal |
Calendar |
df -h |
Disk space usage |
du -h |
Directory size |
lsblk |
Block devices |
env |
Environment variables |
| Command | Description |
|---|---|
ps aux |
All running processes β find the runaway one |
top |
Live monitor, sorted by CPU (runaway jumps to the top) |
kill -9 <PID> |
Actually stops the process β verify with ps aux after |
sleep 10 & |
Starts a real background job |
jobs |
Shows your background jobs (Running β Done over time) |
fg |
Bring the most recent background job to foreground |
| Command | Description |
|---|---|
sudo <command> |
Run command as root |
sudo su |
Switch to root shell |
su <user> |
Switch user |
passwd |
Change your password |
useradd <user> |
Create new user (root) |
adduser <user> |
Create user interactively (root) |
userdel <user> |
Delete user (root) |
| Command | Description |
|---|---|
nmap 10.0.0.5 |
Real scan of the simulated remote server |
nmap -sV 10.0.0.5 |
Real scan with service version detection |
ssh deploy@10.0.0.5 |
Really connects β find the password on the remote machine itself |
ssh root@10.0.0.5 |
Connect directly as remote root (password: toor) |
scp user@host:file ./file |
Real download from the remote machine |
scp file user@host:file |
Real upload to the remote machine |
exit |
Disconnect SSH cleanly back to local Kali |
ping host |
Test connectivity (flavor text) |
ifconfig |
Network interfaces |
ip addr show |
IP addresses (modern) |
ip route |
Routing table |
netstat |
Network connections |
curl url |
Fetch URL (flavor text) |
wget url |
Download file (flavor text) |
| Command | Description |
|---|---|
tar -czf archive.tgz dir/ |
Create compressed archive |
tar -xzf archive.tgz |
Extract archive |
tar -tzf archive.tgz |
List archive contents |
zip -r file.zip dir/ |
Create zip |
unzip file.zip |
Extract zip |
gzip file |
Compress with gzip |
gunzip file.gz |
Decompress gzip |
| Command | Description |
|---|---|
sort file |
Sort lines alphabetically |
sort -r file |
Reverse sort |
sort -n file |
Numeric sort |
uniq file |
Remove consecutive duplicates |
diff file1 file2 |
Show differences |
cut -d: -f1 file |
Cut by delimiter |
wc file |
Word, line, byte count |
strings file |
Extract readable strings |
| Command | Description |
|---|---|
nmap |
Network mapper |
sqlmap |
SQL injection tester |
nikto |
Web server scanner |
john |
Password cracker |
hydra |
Login brute-forcer |
hashcat |
Hash cracker |
metasploit / msfconsole |
Exploit framework |
aircrack-ng |
WiFi security tool |
wireshark |
Packet analyzer (GUI note) |
| Command | Description |
|---|---|
git init/status/log/clone |
Git version control |
python3 / python |
Python interpreter info |
pip install |
Python package manager |
apt install/update |
Package manager |
bash script.sh |
Run shell script |
crontab -l / -e |
Manage cron jobs |
systemctl status |
Service management |
journalctl |
System logs |
| Theme | Description |
|---|---|
| GitHub Dark | Clean dark with green accent (default) |
| Matrix | Classic green-on-black hacker look |
| VS Code | Familiar VS Code dark palette |
| Kali Red | Deep red inspired by Kali Linux |
| Midnight | Dark navy with purple accents |
| Hacker | Pure green terminal |
| Dracula | Popular Dracula color scheme |
| Light | Clean white theme for bright environments |
Custom colors: pick any hex for background, prompt, text, and accent.
| Shortcut | Action |
|---|---|
Tab |
Autocomplete command or filename |
β / β |
Navigate command history |
Ctrl + L |
Clear terminal screen |
Ctrl + C |
Cancel current input |
Ctrl + O (in nano) |
Save file |
Ctrl + X (in nano) |
Exit nano editor |
1. Navigation β pwd, ls, cd, tree
2. File Basics β touch, mkdir, cat, echo, nano
3. File Management β cp, mv, rm, ln
4. Permissions β chmod, chown, sudo, su
5. Search & Filter β grep, find, locate, which
6. Text Processing β sort, uniq, diff, wc, head, tail
7. System Info β ps, top, uname, df, env
8. Networking β ping, ifconfig, nmap, ssh
9. Archive β tar, zip, gzip
10. Security Tools β nmap, sqlmap, nikto, metasploit
π Want guided, hands-on exercises instead? Work through CHALLENGES.md β 10 progressive levels from "who am I?" to a full recon workflow, each with hidden solutions.
cyber-assassins/
β
βββ index.html β Single-file application (entire simulator)
β βββ <style> β All CSS with CSS custom properties for theming
β βββ <script> β JavaScript modules:
β βββ Virtual Filesystem (FS object)
β βββ State management
β βββ 100+ Command implementations
β βββ Tab autocomplete engine
β βββ Nano editor simulation
β βββ sudo/su auth flow
β βββ Theme system
β βββ Boot animation
β
βββ CHALLENGES.md β 10 guided practice levels with solutions
βββ CONTRIBUTING.md β How to add new commands
βββ LICENSE β MIT License
βββ .gitignore β Standard ignores for editors/OS files
βββ README.md β This file
Design decision: The entire simulator lives in a single index.html file. This means:
- β Zero dependencies
- β Works offline
- β One file to share, host, or fork
- β No build step required
Contributions are welcome! Here's how to add a new command:
// In the COMMANDS object inside index.html:
mycommand(args) {
// args = array of arguments passed to the command
if (!args.length) return [cl('mycommand: missing argument', 'out-error')];
const target = resolvePath(args[0]); // resolve path
return [
cl('Output line 1', 'out-normal'),
cl('Output line 2', 'out-success'),
];
},Color classes available:
| Class | Color |
|---|---|
out-normal |
Default text |
out-success |
Green (good output) |
out-error |
Red (errors) |
out-warn |
Yellow (warnings) |
out-info |
Blue (informational) |
out-accent |
Purple (highlights) |
out-dim |
Grey (secondary text) |
out-dir |
Blue bold (directories) |
out-exec |
Green (executable files) |
// In the TIPS object:
mycommand: 'Your tip about what this command does and when to use it.',- Fork the repository
- Create a branch:
git checkout -b feature/add-command-xyz - Make your changes in
index.html - Test thoroughly in a browser
- Submit a Pull Request with a description of what you added
This simulator is for educational purposes only.
All security tool commands (
nmap,sqlmap,hydra,metasploit, etc.) are fully simulated β they produce realistic-looking output but perform zero real network activity, scanning, or exploitation.In the real world, running security tools against systems you do not own or have explicit written permission to test is illegal. Always practice in authorized environments such as HackTheBox, TryHackMe, or your own lab.
- 130+ Linux commands implemented
- 11 CTF flags hidden across two machines (local + remote)
- 3 real-world permission scenarios (SSH key, script, website file)
- 1 real runaway-process puzzle to find and kill
- 2 fully independent virtual machines (local Kali + remote Ubuntu server)
- 8 built-in color themes
- 0 dependencies
- 0 network requests (fully offline capable)
- 1 file to rule them all
- π Networking Mode β a second, fully independent virtual machine (
webserver01at10.0.0.5) with its own filesystem, users, and open ports - π Real
nmapβ scans actually return the remote machine's real open ports (22/SSH, 80/HTTP, 3306/MySQL) - π Real
sshβ genuinely authenticates and swaps your entire session into the remote machine;exitcleanly disconnects back to local - π€ Real
scpβ file transfer in both directions between local and remote filesystems, with its own password prompt - π© 4 new CTF flags exclusive to the remote machine: reconnaissance, breaking in via SSH, exfiltration via scp, and remote privilege escalation (11 flags total now)
- βοΈ Real process table β
ps,top,kill, andjobsnow read from and mutate an actual process list, not static text - π Runaway process puzzle β a suspicious
xmrig-helperprocess eating 97%+ CPU is seeded on boot; find it withps aux/top, stop it withkill -9 - β±οΈ Real background jobs β
sleep 10 &starts a job that completes over simulated time, visible transitioning fromRunningtoDoneinjobs - π§ Fixed
resolvePath/displayPath/renderFileTreehardcoding/home/studentβ~now correctly resolves per active session (local student, local root, or remote user) - π§ Fixed
exitnot knowing how to disconnect an SSH session (it would incorrectly say "cannot close simulator") - π§ Fixed
ls -la's./..entries always showing "student" regardless of the active user
- π Real Unix permission model β permissions are now parsed into a structured object (owner/group/other Γ read/write/execute + setuid/setgid/sticky), not just a display string
- π’ Complete chmod β numeric (3 & 4-digit), symbolic (single, comma-chained, multi-class),
-Rrecursive,-vverbose - π₯ Real groups β
groupadd,usermod -aG,groups [user]; group-based file access actually works for a second simulated identity, not just owner-vs-everyone - π§ chown/chgrp upgraded β
chown user:group file,-Rrecursive on both - π‘οΈ Permissions enforced everywhere β
cdnow correctly requires the execute bit (not read) to enter a directory;rmnow correctly requires write on the parent directory, not the file itself;./script.shrequires+xwhilebash script.shonly requires read β all classic real-Linux gotchas, faithfully reproduced - π©Ί Educational "Permission denied" messages β every denial now explains which permission class and bit is missing, plus the exact
chmodfix - π§° Real-world scenario files β a world-readable SSH key, a non-executable backup script, and a world-writable website file, seeded broken and fixable with
scenarios/scenarios check - π
revision chmodβ instant exam-style cheat sheet - π
quiz chmodβ interview-style Q&A practice with hints and grading - π§ Fixed
chmodsymbolic mode being a complete no-op (it printed success without changing the file) - π§ Fixed
ls -l <file>ignoring the-lflag for single-file targets
- π© CTF Mode β 7 hidden flags, live scoreboard panel, hints, toast notifications
- πΎ Persistent sessions β filesystem, history, theme, and CTF progress saved via localStorage
- π Real bash script execution β write
.shscripts in nano, run them withrun/bash - π§ Fixed a tar flag-detection bug where filenames containing certain letters were misread as flags
- π§ Added a proper shell-style tokenizer so quoted multi-word arguments (
grep -r "some text" /) work correctly - π§ Added real permission enforcement on
cat(read-protected files now correctly requirechmod/sudo) - Updated to Kali GNU/Linux 2026.1 and kernel 6.12
- Initial release
- 100+ commands implemented
- 8 themes + custom color picker
- Virtual filesystem with full CRUD
- Interactive nano editor
- sudo/su authentication flow
- Tab autocomplete + history navigation
- Educational tips system
- Multiple terminal tabs
- Boot animation sequence
- Sidebar file explorer + cheatsheet panel
MIT License β Copyright (c) 2026 Shivam
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software to use, copy, modify, merge, publish, and
distribute, subject to the conditions in the LICENSE file.
See LICENSE for full text.
Made with β€οΈ by Shivam
If this helped you learn Linux, please give it a β β it helps others find it too!