在线流量分析

安装 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

参考

https://www.youtube.com/watch?v=tKzlfiCIwjI

https://blog.csdn.net/wuzhimang/article/details/54178598

posted @ 2018-11-25 19:01  春雨冰河  阅读(528)  评论(0编辑  收藏  举报