shell腳本實現網絡掃描 自動抓包 協議分析 nmap
命令格式為: #nmap [掃描類型] [選項] <目標主機>
掃描類型:
-sS (TCP SYN掃描半開)
-sT(TCP 連接掃描全開)
-sU (UDP掃描)
-sP (ICMP掃描)
-A //對目標主機做全面分析
選項 :
-n //不對主機名解析
-p //指定端口
選項
-c 數字 //指定抓包次數
-i 接口名稱 //指定抓的網卡
-w 文件名 //將抓到的包存放到文件裏
-A //轉換為ACSII碼顯示,可讀性稍強
-r 文件名 //將文件裏面讀出來
tcpdump -c 3 -i eth0 (默認) -w /a.txt -A
[過濾條件]
類型: host 主機
net 網絡
port 端口
portrange 端口範圍
方向
src : 源地址
dst : 目標地址
協議 : tcp udp ip wlan arp
條件可以由組合而成: and (並且) or(或者) not(取反)
舉例: nmap -A -i eth0 tcp port 80 and host 172.40.50.123 or host 172.40.50.148
這裏執行的為檢測 主機172.40.50.123 的 80 端口 和 172.40.50.148 的tcp 協議 我們可以使用()來提升 or 的優先級來實現監聽兩臺主機的80端口 ()不能被系統命令所認知,我們需要使用 \ 反斜線來取消其定義
nmap -A -i eth0 tcp port 80 and \(host 172.40.50.123 or host 172.40.50.148\)
下面是一個簡單腳本,使用了位置變量,這裏的shift 為跳過前一個定義,所以我們的port端口不會輸入到定義IP 地址裏,grep -q 意思為屏蔽此次輸出若由open 字段 那麽返回值 echo $? =0 做了判斷,大家可以根據自己要求編寫腳本。
#!/bin/bash
port=$1
shift
for ip in $*
do
nmap -n -sS -p $port "172.40.58.$ip" | grep -q open
if [ $? -eq 0 ];then
echo "172.40.58.$ip port $port is open"
else
echo "172.40.58.$ip port $port is down"
fi
do
shell腳本實現網絡掃描 自動抓包 協議分析 nmap