Archive for April 28th, 2008

sendpkt已经更新到winpcap4.0.1了

Monday, April 28th, 2008

sendpkt已经更新到winpcap4.0.1了

因为一直崇尚“最新的软件不一定是最好的”,所以向来不适用最新版本的各类软件,不过终于在所有朋友的催促之下,将winpcap由3.1升级到4.0.1了。并且提供了sendpkt的新windows二进制发行版。

sendpkt是提供win32/linux兼容接口的发包函数库。倪补了长久以前python只能抓包不能发包的问题,另外同时提供的兼容接口,也提高了程序的可移植性和适用范围。

最近因为给朋友帮忙封装了供lua使用的winpcap,现在已经积累了好多东西了,可以考虑以后把一些常用的组包和ARP查询等函数一起加入提供方便。再者,就是仔细考虑一下自己封装一个供win32使用的使用mingw编译的libnet包。毕竟libnet总比winpcap自带的那个要专业许多,也省事许多。

至于解包,我现在还没找到比较合适的库,一直自己写呢,现在已经完善而稳定的包含ethernet、arp、ip包三种,tcp包几天内就要开始写了。

http://sendpkt.googlecode.com

我要重写pypcap

Monday, April 28th, 2008

我要重写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综合症的人呢,现在自己也不小心落入了这个陷阱。