Skip to content

Terminal 指令參考

Terminal 是 SimNet 的核心操作介面。在 SimNet 中,不同的設備有不同的可用指令——就像不同職位的人有不同的工具箱一樣。路由器有路由器的指令,伺服器有伺服器的工具。

本頁依「設備類型」分類,讓你快速找到在特定設備上可以用什麼指令。

快速查詢

在 Terminal 裡隨時輸入 help 可以列出當前設備上所有可用的指令;想查某個指令的語法時,直接輸入 指令名稱 --help

通用指令(所有設備)

不管你目前在哪台設備上——PC、Router、Server 還是 Switch——這些指令都可以使用。它們就像每個人手機裡都有的基本 App。

help

顯示當前設備上所有可用的指令及簡短說明。

語法: help

說明: 任何時候忘記指令,輸入 help 就對了。因為不同設備的指令集不同,help 的輸出也會跟著變——SSH 到 Router 上輸入 help,你會看到 Router 專屬的指令。


--help

顯示指令的語法與用途摘要。

語法: <command> --help

範例:

bash
simnet@pc1:~$ ping --help
Usage: ping [-c count] <host>
  Send ICMP ECHO_REQUEST to network hosts

說明: SimNet 不提供獨立的 man 指令。要查語法時,直接對目標指令加上 --help,例如 tcpdump --helpssh --helpping --help


clear

清除終端機畫面上的所有文字。

語法: clear

說明: 畫面太亂的時候,clear 讓你重新開始。指令歷史記錄不會被清除,你仍然可以用上方向鍵叫回之前的指令。也可以用快捷鍵 Ctrl+L


ssh

連線到另一台設備,切換 Terminal 的操作對象。

語法: ssh <device-id>

範例:

bash
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>

範例:

bash
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>]

範例:

bash
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]

範例:

bash
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

範例:

bash
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

說明: 當你用 tcpdumptshark 啟動持續擷取(沒有加 -c)後,需要用同一個指令的 stop 形式來結束並查看結果,例如 tcpdump stoptshark 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> — 透過指定介面新增路由

範例:

bash
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.1
bash
simnet@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

範例:

bash
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> — 停止服務

範例:

bash
simnet@dns-server:~$ systemctl status dns
 dns.service - DNS Server
   Loaded: loaded
   Active: inactive (dead)
bash
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 — 查看狀態

範例:

bash
simnet@dns-server:~$ service dns start
Starting DNS server... OK

說明: service 是比較舊的指令格式,但很多管理員還是習慣用它。在 SimNet 中,service dns startsystemctl start dns 效果一樣。


cat

顯示檔案的內容。

語法: cat <file>

範例:

bash
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>

範例:

bash
simnet@pc1:~$ curl http://10.0.0.3/flag
<html><body>FLAG{http_basics}</body></html>
bash
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>

範例:

bash
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>

範例:

bash
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]

範例:

bash
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]

範例:

bash
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>

範例:

bash
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>

範例:

bash
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>

範例:

bash
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

說明: 啟用後,你的 curlwget 請求會透過 TLS 加密通道傳送。中間人即使攔截到封包,也只會看到亂碼。另一個做法是直接在 URL 中使用 https://


dns verify

驗證 DNS 解析結果是否被篡改。

語法: dns verify <domain>

範例:

bash
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>

範例:

bash
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 routeRouter查看/修改路由表
show interfacesRouter查看介面狀態
systemctlServer管理系統服務
serviceServer管理服務(簡化版)
catServer / PC讀取檔案
curlPC發送 HTTP 請求
wgetPC下載檔案
nslookupPCDNS 查詢
tcpdumpPC擷取封包
tsharkPC擷取封包(Wireshark 風格)
nmapPC掃描通訊埠
arpspoofPCARP 欺騙攻擊
arp -sPC設定靜態 ARP
tls enablePC啟用 TLS 加密
dns verifyPC驗證 DNS 解析