WireShark是很是流行的網絡封包分析軟件,功能十分強大。能夠截取各類網絡封包,顯示網絡封包的詳細信息。html
WireShark界面簡介java
啓動WireShark的界面以下:express
wireshark是捕獲機器上的某一塊網卡的網絡包,當你的機器上有多塊網卡的時候,你須要選擇一個網卡。windows
點擊Caputre->Interfaces.. 出現下面對話框,選擇正確的網卡。而後點擊"Start"按鈕, 開始抓包。網絡
窗口的主要組成部分app
抓取包對應的OSI七層模型tcp
抓取的TCP包的具體內容函數
封包詳細信息工具
封包列表的面板中顯示,編號,時間戳,源地址,目標地址,協議,長度,以及封包信息。 你能夠看到不一樣的協議用了不一樣的顏色顯示。
你也能夠修改這些顯示顏色的規則, View ->Coloring Rules. post
wireshark過濾語法總結
wireshark進行過濾時,按照過濾的語法可分爲協議過濾和內容過濾:
tcp.port==53 http.request.method=="GET"
tcp[20:3] == 47:45:54
wireshark有兩種過濾器:
捕捉過濾器在抓抱前進行設置,決定抓取怎樣的數據;顯示過濾器用於過濾抓包數據,方便stream的追蹤和排查。捕捉過濾器僅支持協議過濾,顯示過濾器既支持協議過濾也支持內容過濾。兩種過濾器它們支持的過濾語法並不同。
下面來詳細學習兩種過濾器
Protocol Direction Host(s) Value Logical Operations Other expression
(host 10.4.1.12 or src net 10.6.0.0/16) and tcp dst portrange 200-10000 and dst net 10.0.0.0/8
Protocol.String1.String2 Comparison operator Value LogicalOperations Otherexpression
//按協議進行過濾 snmp || dns || icmp //顯示SNMP或DNS或ICMP封包。 //按協議的屬性值進行過濾 ip.addr == 10.1.1.1 ip.src != 10.1.2.3 or ip.dst != 10.4.5.6 ip.src == 10.230.0.0/16 //顯示來自10.230網段的封包。 tcp.port == 25 //顯示來源或目的TCP端口號爲25的封包。 tcp.dstport == 25 //顯示目的TCP端口號爲25的封包。 http.request.method== "POST" //顯示post請求方式的http封包。 http.host == "tracker.1ting.com" //顯示請求的域名爲tracker.1ting.com的http封包。 tcp.flags.syn == 0×02 //顯示包含TCP SYN標誌的封包。
//顯示payload中包含"http"字符串的tcp封包。 tcp contains "http" //顯示請求的uri包含"online"的http封包。 http.request.uri contains "online"
//16進制形式,tcp頭部通常是20字節,因此這個是對payload的前三個字節進行過濾 tcp[20:3] == 47:45:54 http.host[0:4] == "trac"
示例upper(string-field) - converts a string field to uppercase
lower(string-field) - converts a string field to lowercase
upper(http.request.uri) contains "ONLINE"
wireshark過濾支持比較運算符、邏輯運算符,內容過濾時還能使用位運算。 若是過濾器的語法是正確的,表達式的背景呈綠色。若是呈紅色,說明表達式有誤。
PS:
今天總結完這篇使用手冊後,寫了一個捕獲過濾器:
tcp src host 10.9.146.113
使用"Compile selected BPFs",但WireShark總是不經過,提示錯誤
'tcp' modifier applied to host
一直疑惑不解,我是按照語法來寫的,怎麼編譯不經過呢?!
最後各類查呀,才知道「對於tcp/udp協議只能監聽端口號,而ip協議只能監聽主機地址,tcp/udp位於傳輸層」!!
這是逼我這看TCP/IP協議呀!在查的過程當中又順帶知道了有同類tcpdump工具不能用於windows),而tcpdump工具是基於libpcap。
libpcap是一個網絡數據包捕獲函數庫,不少抓包工具都是基於它來開發的,WireShark也不例外,而在windows上WireShark是基於wincap的。
在「man tcpdump」的時候看到Expression是語法是pcap-filter,這個語法應該就是libcap的語法。
經過上面的總結,因而我決定須要看:《TCP/IP協議》、tcpdump工具、libcap。