wiresharkデータ(pcap)のデータ解析
python3で wiresharkデータ(pcap)のデータ解析、抽出をしたいと考えていて、下記のスクリプトで UDP のsrc,dscやport をリストアウトできることは確認できたのですが、これに加えて、添付のような(黄色部の)値を取得するにはどのように指定(コード)すれば良いのでしょうか? ※下記スクリプトに拘っていないので、ご助言お待ちしてます
# -*- coding: utf-8 -*-
import dpkt, socket
import string
import binascii
import sys
#メイン関数
def main(filename):
pcr = dpkt.pcap.Reader(open(filename,'rb'))
#パケット数
packet_count = 0
#パケット処理
for ts,buf in pcr:
packet_count += 1
try:
eth = dpkt.ethernet.Ethernet(buf)
except:
continue
#IPデータの場合
if type(eth.data) == dpkt.ip.IP:
ip = eth.data
ipheader(ip)
#TCPデータ
if type(ip.data) == dpkt.tcp.TCP:
tcp = ip.data
#ペイロードが0以外
if len(tcp.data) != 0:
thex = binascii.b2a_hex(tcp.data)
payload(thex)
#UDPデータ
elif type(ip.data) == dpkt.udp.UDP:
udp = ip.data
#ペイロードが0以外
if len(udp.data) != 0:
uhex = binascii.b2a_hex(udp.data)
payload(uhex)
#ICMPデータ
elif type(ip.data) == dpkt.icmp.ICMP:
icmp = ip.data
#ペイロードが0以外
if len(icmp.data) != 0:
ihex = binascii.hexlify(str(icmp.data))
payload(ihex[8:])
print ("処理終了:", packet_count)
#IPヘッダ処理
def ipheader(header):
#ヘッダの処理
src = socket.inet_ntoa(header.src)
dst = socket.inet_ntoa(header.dst)
if type(header.data) == dpkt.udp.UDP:
print ("UDP %s:%s => %s:%s (len:%s)" % (src, header.data.sport, dst, header.data.dport, len(header.data.data)))
#ペイロード
def payload(thex):
#ペイロードの処理
return
////////////////_/
追記
スマートな手法ではないですが、現状のノウハウをふまえ・・・
とりあえず 「 wireshark → jsonデータ(保存) → python解析 」 で
当面の課題としては取り組むこととしました
BACpypes、tshark ともに、理解深めて、今後の手法にしたいと思います