線上流量分析
阿新 • • 發佈:2018-11-25
安裝 hexdump
pip3 install hexdump
正文
Telnet是典型的互動式流量,要分析Telnet流量,需要把整個TCP流中的所有資料包進行拼接,最後對拼接後的資料進行Decode分析!
Telent_Monitor.py 程式碼
import logging logging.getLogger("scapy.runtime").setLevel(logging.ERROR) from scapy.all import * import re import hexdump def qythexdump(src,length = 16):#每16個位元組被提取出來,進行16進位制的decode for i in range(0,len(src),length):#range(start, stop[, step]) s = src[i:i+length] hex_result = hexdump.hexdump(s) qyt_string = b'' def telnet_monitor_callback(pkt): global qyt_string try: qyt_string = qyt_string + pkt.getlayer(Raw).fields['load']#提取Telnet中的資料,並且把他們拼在一起 except Exception as e:#非ascii時候可能decode失敗 pass PTKS = sniff(prn=telnet_monitor_callback, store = 1, timeout = 10, iface = "乙太網")#iface為上網的網口名稱,根據自己實際情況修改 wrpcap("telnet.cap",PTKS) qythexdump(qyt_string)#顯示輸出 # filter = "tcp port 23 and ip host 202.100.1.2"
解釋
以上程式碼是獲取當前網口乙太網
網路資訊10s資料報資訊,並且儲存在“telnet.cap” 檔案中
同時把可以解碼的進行解碼列印在終端顯示
顯示列印結果和wireshark形式差不多,ASCII碼和decode之後的文字
下面貼張wireshark
探取的網路流量對比看下
當然,可以在sniff中新增filter,以過濾更加符合心意的資料報。例如,在sniff
中加入filter = "ip host 172.17.168.71"
,可以只看到該ip相關的資料
總結
scapy中filter 格式遵循的是tcpdump 過濾的格式:
1) 如果僅僅是想過濾出IP層的特定IP的資料,需要使用ip host X.X.X.X或ip src X.X.X.X或ip dst X.X.X.X
2) 如果僅僅是想過濾出ARP或RARP協議的IP資料包時,需要使用arp host X.X.X.X 或 rarp host X.X.X.X
3) 更多幫助:man pcap-filter