【发布时间】:2015-01-13 20:34:27
【问题描述】:
目前我正在从 pcap 文件中解析 HTTP 标头,如下所示:
f = file(sys.argv[1],"rb") # pass in pcap file as argument to script
fout = open("path to header output file", "a")
pcap = dpkt.pcap.Reader(f)
# master holds string to write
master = ""
print "Working ..."
for ts, buf in pcap:
l2 = dpkt.ethernet.Ethernet(buf)
if l2.type == 2048: #only for IP (ip id 2048), no ARP
l3=l2.data
if l3.p == dpkt.ip.IP_PROTO_TCP: #IP TCP
l4=l3.data
if l4.dport==80 and len(l4.data)>0:
try:
http=dpkt.http.Request(l4.data)
dict_headers = http.headers
http_method = http.method
http_uri = http.uri
http_body = http.body
http_version = http.version
# this is for first line, method + uri, e.g. GET URI
master += unicode( http_method + ' ' + http_uri + ' ' + 'HTTP/' + http_version + '\n','utf-8')
for key,val in dict_headers.iteritems():
master += unicode( key + ': ' + val + '\n', 'utf-8')
master += '\n'
except:
master += unicode( l4.data, 'utf-8')
continue
# perform writing and closing of files, etc
问题是,dpkt 将 http 字段存储在字典(http.headers)中,这是无序的。我需要保留字段的顺序。有没有办法解决这个问题?
【问题讨论】:
标签: python parsing http http-headers