1. 程式人生 > >shell腳本實現網絡掃描 自動抓包 協議分析 nmap

shell腳本實現網絡掃描 自動抓包 協議分析 nmap

shell腳本 nmap 網絡抓包 協議分析 掃描

此文章提供思想基礎用法:關於自動檢測功能,各個端口和抓包功能,項目中使用的為nmap軟件,Linux操作系統,首先我們要安裝nmap的軟件 項目中使用的為nmap-6.40-7.el7.x86_64版本,

命令格式為: #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