Terminal 指令參考
Terminal 是 SimNet 的核心操作介面。在 SimNet 中,不同的設備有不同的可用指令——就像不同職位的人有不同的工具箱一樣。路由器有路由器的指令,伺服器有伺服器的工具。
本頁依「設備類型」分類,讓你快速找到在特定設備上可以用什麼指令。
快速查詢
在 Terminal 裡隨時輸入 help 可以列出當前設備上所有可用的指令;想查某個指令的語法時,直接輸入 指令名稱 --help。
通用指令(所有設備)
不管你目前在哪台設備上——PC、Router、Server 還是 Switch——這些指令都可以使用。它們就像每個人手機裡都有的基本 App。
help
顯示當前設備上所有可用的指令及簡短說明。
語法: help
說明: 任何時候忘記指令,輸入 help 就對了。因為不同設備的指令集不同,help 的輸出也會跟著變——SSH 到 Router 上輸入 help,你會看到 Router 專屬的指令。
--help
顯示指令的語法與用途摘要。
語法: <command> --help
範例:
simnet@pc1:~$ ping --help
Usage: ping [-c count] <host>
Send ICMP ECHO_REQUEST to network hosts說明: SimNet 不提供獨立的 man 指令。要查語法時,直接對目標指令加上 --help,例如 tcpdump --help、ssh --help、ping --help。
clear
清除終端機畫面上的所有文字。
語法: clear
說明: 畫面太亂的時候,clear 讓你重新開始。指令歷史記錄不會被清除,你仍然可以用上方向鍵叫回之前的指令。也可以用快捷鍵 Ctrl+L。
ssh
連線到另一台設備,切換 Terminal 的操作對象。
語法: ssh <device-id>
範例:
simnet@pc1:~$ ssh router1
simnet@router1:~$說明: 在真實世界中,SSH(Secure Shell)是遠端登入伺服器的標準工具。在 SimNet 中,它讓你「跳」到另一台設備上操作,看到那台設備的網路設定、執行那台設備專屬的指令。詳細說明請參考 SSH 裝置切換。
exit
離開當前的 SSH 連線,返回上一層設備。
語法: exit
說明: 如果你已經在最底層(你的玩家裝置),exit 不會做任何事。如果你 SSH 了好幾層,每次 exit 退回一層。
ping
向指定主機發送 ICMP Echo Request(回音請求),測試網路連通性。
語法: ping [-c count] <host>
範例:
simnet@pc1:~$ ping -c 3 10.0.0.1
PING 10.0.0.1 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=20 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=20 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=20 ms
--- 10.0.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 60ms說明: -c 3 表示只發送 3 個封包。Ping 是網路診斷的第一個工具——就像打電話確認「喂,你在嗎?」。如果 ping 不到,可能是對方不在線上,或者網路路徑有問題。
ip addr
顯示網路介面(Network Interface)的設定,包括 IP 位址和 MAC 位址。
語法: ip addr [show <iface>]
範例:
simnet@pc1:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP
link/ether aa:bb:cc:00:00:02 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.2/24 brd 10.0.0.255 scope global eth0說明: lo 是 Loopback(環回介面),每台電腦都有,指向自己。eth0 是乙太網路介面,link/ether 後面是 MAC 位址,inet 後面是 IP 位址。/24 表示子網路遮罩(Subnet Mask)為 255.255.255.0。
arp -a
顯示 ARP(Address Resolution Protocol,位址解析協定)表,列出已知的 IP 對 MAC 位址映射。
語法: arp [-a]
範例:
simnet@pc1:~$ arp -a
Address HWtype HWaddress Flags Iface
10.0.0.1 ether aa:bb:cc:00:00:01 C eth0
10.0.0.3 ether aa:bb:cc:00:00:03 C eth0說明: ARP 表就像一本「通訊錄」——它記錄了哪個 IP 位址對應到哪張網路卡。Flags 中的 C 代表動態學習到的條目,M 代表手動設定的靜態條目。
tcpdump stop
停止目前正在進行的封包擷取,並顯示已擷取的封包。
語法: tcpdump stop
範例:
simnet@pc1:~$ tcpdump -i eth0
tcpdump: listening on eth0...
Use 'tcpdump stop' to collect results.
simnet@pc1:~$ tcpdump stop
tcpdump: 2 packet(s) captured:
1 ARP pc1 > switch1 ARP Request
2 ARP switch1 > pc1 ARP Reply說明: 當你用 tcpdump 或 tshark 啟動持續擷取(沒有加 -c)後,需要用同一個指令的 stop 形式來結束並查看結果,例如 tcpdump stop 或 tshark stop。
Flag 提交(由 UI 處理)
完成挑戰後,使用頁面上的 Flag 提交介面送出答案。
操作: 在頁面右上角或挑戰介面中的提交欄位輸入 Flag。
範例: 在 UI 輸入 FLAG{arp_poisoning_detected} 後送出,系統會立刻顯示是否正確。
路由器指令(Router)
Router 是網路的十字路口——它決定封包該往哪個方向走。SSH 到 Router 上時,你可以查看和修改路由表。
ip route
顯示或修改路由表(Routing Table)。
語法:
ip route— 顯示所有路由ip route add <network> via <gateway>— 新增路由ip route add <network> dev <interface>— 透過指定介面新增路由
範例:
simnet@router1:~$ ip route
default via 10.0.0.1 dev eth0 proto static
10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.1
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.1simnet@router1:~$ ip route add 172.16.0.0/24 dev eth2
Route added: 172.16.0.0/24 dev eth2說明: 路由表就像一張「交通指引表」,告訴封包該往哪個方向走。Default route 是預設路徑——找不到更具體的路時,封包就走這條。在 Network Repair 挑戰中,你常常需要在 Router 上新增缺失的路由。
show interfaces
顯示路由器所有網路介面的狀態。
語法: show interfaces
範例:
simnet@router1:~$ show interfaces
Interface Status IP Address MAC Address
eth0 UP 10.0.0.1/24 aa:bb:cc:00:01:00
eth1 UP 192.168.1.1/24 aa:bb:cc:00:01:01
eth2 DOWN — aa:bb:cc:00:01:02說明: 一台路由器通常有多個介面,每個介面連到不同的子網路。UP 表示介面啟用中,DOWN 表示關閉。如果你發現某個介面是 DOWN 的,那可能就是問題所在。
伺服器指令(Server)
Server 是提供服務的設備——它可能跑著 Web Server、DNS Server,或其他服務。你需要管理這些服務來修復問題或取得 Flag。
systemctl
查看或管理系統服務(System Service)。
語法:
systemctl status <service>— 查看服務狀態systemctl start <service>— 啟動服務systemctl stop <service>— 停止服務
範例:
simnet@dns-server:~$ systemctl status dns
● dns.service - DNS Server
Loaded: loaded
Active: inactive (dead)simnet@dns-server:~$ systemctl start dns
● dns.service - DNS Server
Active: active (running)說明: systemctl 是 Linux 上管理服務的標準工具。就像餐廳的經理控制哪個窗口開門營業一樣。在 Network Repair 挑戰中,你可能需要重啟故障的服務。
service
systemctl 的簡化版,用來啟動或停止服務。
語法:
service <name> start— 啟動服務service <name> stop— 停止服務service <name> status— 查看狀態
範例:
simnet@dns-server:~$ service dns start
Starting DNS server... OK說明: service 是比較舊的指令格式,但很多管理員還是習慣用它。在 SimNet 中,service dns start 和 systemctl start dns 效果一樣。
cat
顯示檔案的內容。
語法: cat <file>
範例:
simnet@web-server:~$ cat /etc/nginx/nginx.conf
server {
listen 80;
server_name flag.simnet.local;
root /var/www/html;
}說明: cat 是 Concatenate(串接)的縮寫,最常見的用法就是拿來看檔案內容。在 Server 上,你可以用它來查看設定檔(config files),了解服務是怎麼設定的。Flag 有時候也藏在檔案裡。
用戶端指令(Client / PC)
PC 是你的玩家裝置,也是大多數挑戰中你的起點。用戶端的特色指令是發起網路請求——向 Server 要資料。
curl
發送 HTTP/HTTPS 請求,就像瀏覽器造訪網頁一樣,但用指令的方式。
語法: curl [options] <url>
範例:
simnet@pc1:~$ curl http://10.0.0.3/flag
<html><body>FLAG{http_basics}</body></html>simnet@pc1:~$ curl https://10.0.0.3/flag
<html><body>FLAG{encrypted_flag}</body></html>說明: curl 把 URL 想像成一封信——你告訴它「去這個地址拿東西回來」。用 http:// 是明文傳輸(像寄明信片),用 https:// 是加密傳輸(像密封信件)。在 Transmission Defense 挑戰中,用 HTTPS 是保護自己不被竊聽的關鍵。
wget
下載指定 URL 的檔案,功能與 curl 類似。
語法: wget <url>
範例:
simnet@pc1:~$ wget http://10.0.0.3/secret.txt
Downloading... done.
Contents: FLAG{file_retrieved}說明: wget 是 Web Get 的意思。和 curl 的差異在於,wget 通常用來下載檔案,而 curl 更常用來測試 API 或查看回應。在 SimNet 中兩者都可以用來取得 Flag。
nslookup
查詢 DNS(Domain Name System)記錄,把域名翻譯成 IP 位址。
語法: nslookup <domain>
範例:
simnet@pc1:~$ nslookup flag.simnet.local
Server: 10.0.0.10
Address: 10.0.0.10#53
Name: flag.simnet.local
Address: 10.0.0.3說明: DNS 就是網路世界的電話簿——你告訴它名字(域名),它告訴你電話號碼(IP)。如果 DNS 被攻擊者竄改,你查到的 IP 可能指向假的伺服器。
安全工具
這些工具在真實世界中屬於資安偵察和攻擊性工具。在 SimNet 的安全模擬環境裡,你可以放心學習它們的原理。
注意
這些工具僅供教育用途。在未經授權的真實網路上使用這些工具是違法的。
tcpdump
擷取並顯示通過網路介面的封包。資安分析師最常用的工具之一。
語法: tcpdump [-i iface] [-nn] [-c count] [-d device] [filter]
範例:
simnet@pc1:~$ tcpdump -i eth0 -c 5
tcpdump: listening on eth0
1 ARP pc1 > switch1 ARP Request: Who has 10.0.0.1?
2 ARP switch1 > pc1 ARP Reply: 10.0.0.1 is at aa:bb:cc:00:00:01
3 IPv4 pc1 > server1 ICMP Echo Request
4 IPv4 server1 > pc1 ICMP Echo Reply
5 TCP pc1 > server1 SYN seq=1000
5 packet(s) captured說明: -i eth0 指定監聽的介面,-nn 跳過名稱解析,-c 5 擷取 5 個封包後自動停止。-d device 是 SimNet 特有的參數,可以擷取指定設備上的封包(不需要 SSH 過去)。如果不加 -c,需要用 tcpdump stop 來結束。
tshark
網路協定分析工具,Wireshark 的命令列版本。在 SimNet 中與 tcpdump 行為相同。
語法: tshark [-i iface] [-c count] [filter]
範例:
simnet@pc1:~$ tshark -i eth0 -c 3
tshark: listening on eth0
1 ARP pc1 > switch1 ARP Request
2 ARP switch1 > pc1 ARP Reply
3 IPv4 pc1 > server1 ICMP Echo Request
3 packet(s) captured說明: 在真實世界中,tshark 比 tcpdump 能解析更多協定層的細節。在 SimNet 中兩者功能相同——學會其中一個,另一個也就會了。
nmap
掃描目標主機的通訊埠(Port)和服務。就像在一棟大樓外面看哪些窗戶是開的。
語法: nmap [-p ports] [-sV] <host>
範例:
simnet@pc1:~$ nmap -p 80,443 10.0.0.3
Starting Nmap scan on 10.0.0.3
PORT STATE SERVICE
80/tcp open http
443/tcp closed https
Nmap done: 1 host scanned說明: -p 80,443 指定只掃描第 80 和 443 號通訊埠。-sV 可以偵測服務版本。open 表示有服務在監聽,closed 表示通訊埠關閉。Nmap 是資安偵察的瑞士刀。
arpspoof
發動 ARP 欺騙攻擊(ARP Spoofing),讓目標設備把你誤認為閘道器,藉此攔截流量。
語法: arpspoof [-i iface] -t <target> <gateway>
範例:
simnet@pc1:~$ arpspoof -i eth0 -t 10.0.0.3 10.0.0.1
arpspoof: poisoning 10.0.0.3 → pretending to be 10.0.0.1
Sending forged ARP replies...說明: 這個指令會偽造 ARP Reply,告訴目標說「閘道器的 MAC 位址是我的」。這樣目標原本要送給閘道器的流量就會送到你這裡——這就是經典的中間人攻擊(Man-in-the-Middle Attack)。
防禦工具
這些工具幫助你抵擋攻擊、保護通訊安全。在 Transmission Defense 類別的挑戰中會大量使用。
詳細說明請參考 防禦工具。
arp -s
設定靜態 ARP 條目,防止 ARP 欺騙。
語法: arp -s <ip> <mac>
範例:
simnet@pc1:~$ arp -s 192.168.1.1 aa:bb:cc:dd:ee:01
Static ARP entry added: 192.168.1.1 → aa:bb:cc:dd:ee:01說明: 靜態 ARP 條目不會被偽造的 ARP Reply 覆蓋,就像在通訊錄裡用筆寫死一筆資料。攻擊者再怎麼發假的 ARP 封包,你的設備都不會理會。
tls enable
啟用 TLS 加密,讓後續的 HTTP 連線自動升級為 HTTPS。
語法: tls enable
說明: 啟用後,你的 curl 和 wget 請求會透過 TLS 加密通道傳送。中間人即使攔截到封包,也只會看到亂碼。另一個做法是直接在 URL 中使用 https://。
dns verify
驗證 DNS 解析結果是否被篡改。
語法: dns verify <domain>
範例:
simnet@pc1:~$ dns verify flag.simnet.local
⚠ DNS response mismatch detected!
Expected: 10.0.0.3
Got: 10.0.0.99 (possible DNS spoofing)說明: 如果攻擊者篡改了 DNS 回應,dns verify 會告訴你。它就像出門前再確認一次 Google Maps 上的地址有沒有被偷改。
其他系統指令
一些基本的檔案系統和環境操作指令。
pwd
顯示目前所在的工作目錄路徑。
語法: pwd
說明: pwd 是 Print Working Directory 的縮寫。告訴你現在「站」在哪個資料夾裡。
ls
列出目錄中的檔案和子目錄。
語法: ls [-la] [dir]
說明: -l 顯示詳細資訊,-a 顯示隱藏檔案。看到可疑的檔案?用 cat 打開看看。
echo
將文字印到終端機上。
語法: echo <text>
說明: 搭配變數使用時很實用。例如 echo $MY_VAR 可以查看變數的值。
set
設定一個環境變數。
語法: set <name> <value>
範例:
simnet@pc1:~$ set TARGET 10.0.0.3
TARGET=10.0.0.3說明: 設定後可以在其他指令中用 $TARGET 來引用。當你需要反覆輸入同一個 IP 時,先存起來會方便很多。
env
顯示目前所有已設定的環境變數。
語法: env
說明: 忘了之前用 export 設過什麼?用 env 看一下。
指令速查表
| 指令 | 適用設備 | 用途 |
|---|---|---|
help | 全部 | 列出可用指令 |
<command> --help | 全部 | 查看指令語法 |
clear | 全部 | 清除畫面 |
ssh | 全部 | 連線到其他設備 |
exit | 全部 | 返回上一層 |
ping | 全部 | 測試連通性 |
ip addr | 全部 | 查看網路介面 |
arp -a | 全部 | 查看 ARP 表 |
tcpdump stop | 全部 | 停止封包擷取 |
ip route | Router | 查看/修改路由表 |
show interfaces | Router | 查看介面狀態 |
systemctl | Server | 管理系統服務 |
service | Server | 管理服務(簡化版) |
cat | Server / PC | 讀取檔案 |
curl | PC | 發送 HTTP 請求 |
wget | PC | 下載檔案 |
nslookup | PC | DNS 查詢 |
tcpdump | PC | 擷取封包 |
tshark | PC | 擷取封包(Wireshark 風格) |
nmap | PC | 掃描通訊埠 |
arpspoof | PC | ARP 欺騙攻擊 |
arp -s | PC | 設定靜態 ARP |
tls enable | PC | 啟用 TLS 加密 |
dns verify | PC | 驗證 DNS 解析 |