python解析pcap包已text格式输出_python分析pcap包
前兩天需要分析一個(gè)pcap包,寫了一段python腳本,將每個(gè)包的基本信息(源/目的MAC、源/目的IP、源/目的端口)提取出來(lái)。
在實(shí)現(xiàn)過(guò)程中為了省事用了dpkt開(kāi)發(fā)包,不過(guò)只用了幾個(gè)簡(jiǎn)單的函數(shù),具體的信息提取部分都是自己實(shí)現(xiàn)的。
值得注意的是?用到了binascii包中的b2a_hex函數(shù),可以將一段2進(jìn)制數(shù)用16進(jìn)制的方式顯示出來(lái)。
源代碼:
import sys
import dpkt
import socket
import binascii
def addr2str(addrobj):
if len(addrobj) != 4 :
return "addr error!"
else:
return str(ord(addrobj[0]))+"."+str(ord(addrobj[1]))+"."+str(ord(addrobj[2]))+"."+str(ord(addrobj[3]))
def TCPorUDP(obj):
if (ord(obj) == 0x01):
return "ICMP"
elif (ord(obj) == 0x02):
return "IGMP"
elif (ord(obj) == 0x06):
return "TCP"
elif (ord(obj) == 0x08):
return "EGP"
elif (ord(obj) == 0x09):
return "IGP"
elif (ord(obj) == 0x11):
return "UDP"
elif (ord(obj) == 41):
return "IPv6"
elif (ord(obj) == 89):
return "OSPF"
else:
return "error"
def main():
fw = open("result.txt","w")
f = file("./traces_new.cap","rb")
pcap = dpkt.pcap.Reader(f)
for ts, buf in pcap:
fw.writelines("timestamp:"+str(ts)+"\tpacket len:"+str(len(buf))+"\n")
ethheader = buf[0:14]
dstmac = ethheader[0:6]
srcmac = ethheader[6:12]
netlayer_type = ethheader[12:14]
fw.writelines("dstMAC:"+str(binascii.b2a_hex(dstmac))+"\tsrcMAC:"+str(binascii.b2a_hex(srcmac))+"\n")
pktheader = buf[14:34]
trans_type = pktheader[9]
srcip = pktheader[12:16]
dstip = pktheader[16:20]
fw.writelines("dstIP:"+addr2str(dstip)+"\tsrcIP:"+addr2str(srcip)+"\n")
fw.writelines("packet type:"+TCPorUDP(trans_type)+"\n")
if (ord(trans_type) == 0x11): #UDP
udpheader = buf[34:42]
srcport = udpheader[0:2]
dstport = udpheader[2:4]
udplen = udpheader[4:6]
fw.writelines("srcport:"+str(ord(srcport[1])+ord(srcport[0])*16*16)+"\tdstport:"+str(ord(dstport[1])+ord(dstport[0])*16*16)+"\n\n")
elif (ord(trans_type) == 0x06): #TCP
tcpheader = buf[34:54]
srcport = tcpheader[0:2]
dstport = tcpheader[2:4]
fw.writelines("srcport:"+str(ord(srcport[1])+ord(srcport[0])*16*16)+"\tdstport:"+str(ord(dstport[1])+ord(dstport[0])*16*16)+"\n\n")
f.close()
if __name__ == "__main__":
main()
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的python解析pcap包已text格式输出_python分析pcap包的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 经营地址备案需要哪些资料(经营地址备案)
- 下一篇: 防御ddos攻击软件(应用防ddos攻击