小编Lei*_*eif的帖子

使用dpkt(Python)解析pcap文件

我正在尝试使用dpkt模块解析以前捕获的HTTP标头的跟踪:

import dpkt
import sys

f=file(sys.argv[1],"rb")
pcap=dpkt.pcap.Reader(f)


for ts, buf in pcap:
  eth=dpkt.ethernet.Ethernet(buf)
  ip=eth.data
  tcp=ip.data

if tcp.dport==80 and len(tcp.data)>0:
    try:
        http=dpkt.http.Request(tcp.data)
        print http.uri
    except:
        print 'issue'
        continue


  f.close()
Run Code Online (Sandbox Code Playgroud)

虽然它似乎有效地解析了大多数数据包,但我收到了一些NeedData("标头的过早结束")异常.它们似乎是WireShark中的有效数据包,所以我对为什么抛出异常感到有点困惑.

一些输出:

/ec/fd/ls/GlinkPing.aspx?IG=4a06eefebcc1495f8f4de7cb41f0ce5c&CID=2265e1228f3451ff8011dcbe5e0cdff7&ID=API.YAds%2C5037.1&1307036510547
issue
issue #misses one packet here, two exceptions
/?ld=4vyO5h1FkjCNjBpThUTGnzF50sB7QUGL0Ok8YefDTWNmO6RXghgDqHXtcp1OqeXATbCAHliIkglLj95-VEwG6ZJN3fblgd3Lh5NvTp4mZPcBGXUyKqXn9FViBAsmt1T96oumpCL5gm7gZ3qlZqSdLNUWjpML_9I8FvB2TLKPSYcJmb_VwwvJhiHpiUIvrjRdzqdVVnuQZVjQmZIIlfaMq0LOmgew_plopjt7hYvOSzBi3VJl4bqOBVk3zdhIvgZK0SfJp3kEWTXAr2_UU_q9KHBpSTnvuhY2W1xo3K2BOHKGk1VAlMiWtWC_nUaJdZmhzzWfb6yRAmY3M9YkUzFGs9z10-70OszkkNpVMSS3-p7xsNXQnC3Zpaxks

感谢帮助; 也许需要一个替代的图书馆建议.

python parsing pcap

6
推荐指数
1
解决办法
2万
查看次数

在地图矢量中找到对

我正在使用以下函数试图在地图矢量中查找地图元素的键.

Entry* SymTab::lookup(const char* name)
{
for (int i=0;i<table.size();i++) //table is the vector
 {
  map<const char*, Entry, ltstr>::iterator its= table.at(i).find(name); 
    if (its != cur.end())
    {
    Entry* obj = &its->second;
    cout<<(*its).first<<endl;
    return obj;
    }


  }
}     
Run Code Online (Sandbox Code Playgroud)

该函数正确返回第一个向量索引中的任何项的值(at(0)).但每当我尝试访问第二个索引中的元素时(在(1)处),它就会出现段错误.我确信已正确插入地图并填充在第二个索引处.

有没有人在这看到这个问题?

c++ stl vector map

0
推荐指数
1
解决办法
426
查看次数

标签 统计

c++ ×1

map ×1

parsing ×1

pcap ×1

python ×1

stl ×1

vector ×1