离线流量分析

介绍

通过本地已经生成的pcap/cap文件,读取并分析数据

正文

PCAP_Parser.py

login_invalid.pcap 查找关键词 invalid ,如果有符合的数据包,把所有数据包详细打印出来。

import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)#清除报错
from scapy.all import *
import re

def pcap_parser(filename,keyword):
	pkts = rdpcap(filename)
	return_pkts_list = [] #返回匹配数据包的清单!
	for pkt in pkts.res:
		try:#为什么用try呢,decode有可能失败
			pkt_load = pkt.getlayer('Raw').fileds['load'].decode().strip()#提取负载内容
			re_keyword = '.*' + keyword + '.*' #形成关于关键字的正则表达式
			#如果负载内容匹配,并且源端口为23,把数据包添加到 return_pkts_list
			if re.match(re_keyword, pkt_load) and pkt.getlayer('TCP').fields['sport'] == 23:#如果该包符合正则表达式,并且TCP端口为23
				return_pkts_list.append(pkt) # 把符合内容的追加到  return_pkts_list
		except:
			pass

	return return_pkts_list #返回匹配数据包的清单

if __name__ == "__main__":
	pkts = pcap_parser("login_invalid.pcap","invalid")
	i = 1
	for pkt in pkts:
		print('=========第' + str(i) + "个包('=========")
		pkt.show()
		i += 1

login_invalid.pcap 这个文件怎么生成的,可以戳 在线流量分析

参考

参考推荐:https://www.jianshu.com/p/8eab70118fad

https://www.youtube.com/watch?v=_wb-e1edRhM

原文地址:https://www.cnblogs.com/maskerk/p/10015660.html