在线流量分析
安装 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 过滤的格式:
- 如果仅仅是想过滤出IP层的特定IP的数据,需要使用ip host X.X.X.X或ip src X.X.X.X或ip dst X.X.X.X
- 如果仅仅是想过滤出ARP或RARP协议的IP数据包时,需要使用arp host X.X.X.X 或 rarp host X.X.X.X
- 更多帮助:man pcap-filter