介绍
通过本地已经生成的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 这个文件怎么生成的,可以戳 在线流量分析