对pcap文件中每个包进行内容提取,提取出pcap头每个包header和data部分,存入txt
这是对网上的一份代码的优化修改
#!/usr/bin/env python
#coding=utf-8
#读取pcap文件,解析相应的信息,为了在记事本中显示的方便,把二进制的信息
import struct
import time, datetime
def time_trans(GMTtime):
#print(GMTtime)
timeArray = time.localtime(GMTtime)
otherStyleTime = time.strftime("%Y--%m--%d %H:%M:%S", timeArray)
return otherStyleTime # 2013--10--10 23:40:00
class pcap_packet_header:
def __init__(self):
self.GMTtime = b'\x00\x00'
self.MicroTime = b'\x00\x00'
self.caplen = b'\x00\x00'
self.lens = b'\x00\x00'
if __name__=='__main__':
fpcap = open('1.pcap','rb')
ftxt = open('result.txt','w')
string_data = fpcap.read()
#pcap文件包头解析
pcap_header = {}
pcap_header['magic_number'] = string_data[0:4]
pcap_header['version_major'] = string_data[4:6]
pcap_header['version_minor'] = string_data[6:8]
pcap_header['thiszone'] = string_data[8:12]
pcap_header['sigfigs'] = string_data[12:16]
pcap_header['snaplen'] = string_data[16:20]
pcap_header['linktype'] = string_data[20:24]
#把pacp文件头信息写入result.txt
ftxt.write("Pcap文件的包头内容如下: \n")
for key in ['magic_number','version_major','version_minor','thiszone',
'sigfigs','snaplen','linktype']:
ftxt.write(key+ " : " + repr(pcap_header[key])+'\n')
#pcap文件的数据包解析
step = 0
packet_num = 0
packet_data = []
pcap_packet_header_list = []
i =24
while(i