我要重写pypcap
我要重写pypcap
接触信息安全由来已久,因为一直用python比较多,于是刚开始玩抓包时也是用pypcap的。开始时很方便,发现原来生活可以这么美好,抓包原来可以放在循环里的。后来,问题一点点出来了。列举一下,当然这里也有我对pcap知识不够全面的问题:
1、在不同机器上setnonblock后效果不同,有些机器上设置以后可以支持Ctrl+C的中止,而有些机器上则直接进入死循环,死得很惨。
2、pcap_next_ex()函数丢失了,这个可是用于支持可超时抓包的重要工具。
3、建立pcap对象时无法指定超时,同样很好理解,不过这里也顺便把pcap_dispatch()函数搞得很惨。
pypcap最初是用pyrex写的,很好的避免了很多复杂性,不过同样的问题是丢失了很多细节控制。最终的发行版本已经是使用pyrex转换后的C代码了。
直到最近我给lua加上pcap的支持模块时,才开始真正接触pcap的更多细节,这时候恍然大悟。我在pypcap中郁闷好久的功能,其实pcap本身已经提供了,只是被pypcap给忽略掉了。唉,以前我还经常嘲笑有IDE综合症的人呢,现在自己也不小心落入了这个陷阱。