Python论坛  - 讨论区

标题:[python-chinese] 谁用过pycap,发个例子或者使用文档上来吧~

2006年11月12日 星期日 17:35

hijack9 hijack9在gmail.com
星期日 十一月 12 17:35:52 HKT 2006

想使用pycap写抓包和发包的程序 不过文档和例子都太少了
用过的高手们发些文档和例子上来吧
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://python.cn/pipermail/python-chinese/attachments/20061112/ec6c3506/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年11月12日 星期日 23:10

kergee!z kergee在gmail.com
星期日 十一月 12 23:10:26 HKT 2006

我也有兴趣……

2006/11/12, hijack9 <hijack9在gmail.com>:
>
> 想使用pycap写抓包和发包的程序 不过文档和例子都太少了
> 用过的高手们发些文档和例子上来吧
>
>
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
-------------- 下一部分 --------------
一个HTML附件被移除...
URL: http://python.cn/pipermail/python-chinese/attachments/20061112/d8844ffd/attachment-0001.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年11月13日 星期一 08:12

gashero harry.python在gmail.com
星期一 十一月 13 08:12:44 HKT 2006

pypcap还是比较友好的,比pcapy要好用的多。主要的使用流程就是先定义一个pcap对象,然后设置监听过滤器,然后就是对pcap对象使用类似词典的取值方法循环的取出值就可以了。取出的对象是一个Python时间(浮点数)和buffer对象的对(tuple),就是接收到数据包的时间和数据包对象。pypcap主页上的例子已经很详尽了。而且一般来说使用pypcap需要配合dpkt使用。dpkt是负责解包以太网数据包用的,还支持很多高层协议。
下面的例子比较经典,是以前一位兄弟写的。我的很多代码没有在现在的机器上,改日再说。

import dpkt, pcap
pc = pcap.pcap()
pc.setfilter('tcp')
for ts, pkt in pc:
    p = dpkt.ethernet.Ethernet(pkt)
    if p.data.__class__.__name__ == 'IP':
        ip = '%d.%d.%d.%d' % tuple(map(ord, list(p.data.dst)))
        data = p.data.data
        if data.__class__.__name__ == 'TCP':
            if data.dport == 80 and ip == '192.168.2.50':
                print data.data

这个例子中不仅仅可以解包,还可以解出IP地址。

pypcap抓取的包都是以太网包,最大1518字节,最小64字节。而且仅仅是理论上讲最小64字节。但是我实际测试发现64字节以下而且有效的数据包也很常见。而在以往的局域网通信定义中,64字节以下的数据包是无效的冲突包。当然,也有可能是我的错误。

关于dpkt,他的解包速度很慢,优势仅仅在于其支持的数据包格式比较多。我当时用过一段时间以后就不用了,而是自己编了一套可以解包ICMP、IP、TCP、HTTP的解包模块。
另外dpkt还有一个很奇怪的问题,每次导入的时候时间都非常的长,以致于一些很好的电脑都需要3-5秒钟才可以导入完成,这段时间也便没有响应。这并不是首次导入重新编译成字节码的原因,而是每次导入都会发生,很恼火。

有兴趣可以交流一下,我用pypcap写过一些东西。

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年11月13日 星期一 09:48

kergee!z kergee在gmail.com
星期一 十一月 13 09:48:48 HKT 2006

请问为什么我装了WinPcap_3_1.exe和pcap-1.1.win32-py2.4.exe之后还是不行呢,import
时可以找到pcap模块,但是找不到dpkt模块?

2006/11/13, gashero <harry.python在gmail.com>:
>
>
> pypcap还是比较友好的,比pcapy要好用的多。主要的使用流程就是先定义一个pcap对象,然后设置监听过滤器,然后就是对pcap对象使用类似词典的取值方法循环的取出值就可以了。取出的对象是一个Python时间(浮点数)和buffer对象的对(tuple),就是接收到数据包的时间和数据包对象。pypcap主页上的例子已经很详尽了。而且一般来说使用pypcap需要配合dpkt使用。dpkt是负责解包以太网数据包用的,还支持很多高层协议。
> 下面的例子比较经典,是以前一位兄弟写的。我的很多代码没有在现在的机器上,改日再说。
>
> import dpkt, pcap
> pc = pcap.pcap()
> pc.setfilter('tcp')
> for ts, pkt in pc:
>    p = dpkt.ethernet.Ethernet(pkt)
>    if p.data.__class__.__name__ == 'IP':
>        ip = '%d.%d.%d.%d' % tuple(map(ord, list(p.data.dst)))
>        data = p.data.data
>        if data.__class__.__name__ == 'TCP':
>            if data.dport == 80 and ip == '192.168.2.50':
>                print data.data
>
> 这个例子中不仅仅可以解包,还可以解出IP地址。
>
>
> pypcap抓取的包都是以太网包,最大1518字节,最小64字节。而且仅仅是理论上讲最小64字节。但是我实际测试发现64字节以下而且有效的数据包也很常见。而在以往的局域网通信定义中,64字节以下的数据包是无效的冲突包。当然,也有可能是我的错误。
>
>
> 关于dpkt,他的解包速度很慢,优势仅仅在于其支持的数据包格式比较多。我当时用过一段时间以后就不用了,而是自己编了一套可以解包ICMP、IP、TCP、HTTP的解包模块。
>
> 另外dpkt还有一个很奇怪的问题,每次导入的时候时间都非常的长,以致于一些很好的电脑都需要3-5秒钟才可以导入完成,这段时间也便没有响应。这并不是首次导入重新编译成字节码的原因,而是每次导入都会发生,很恼火。
>
> 有兴趣可以交流一下,我用pypcap写过一些东西。
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
-------------- 下一部分 --------------
一个HTML附件被移除...
URL: http://python.cn/pipermail/python-chinese/attachments/20061113/48dc0353/attachment-0001.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年11月13日 星期一 10:26

gashero harry.python在gmail.com
星期一 十一月 13 10:26:43 HKT 2006

dpkt模块需要另外安装的,与pypcap是同一个网站上的,好像是什么monkey的网站。

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年11月13日 星期一 13:29

Xupeng Yun recordus在gmail.com
星期一 十一月 13 13:29:15 HKT 2006

2006/11/13, gashero <harry.python at gmail.com>:
>
>
> 另外dpkt还有一个很奇怪的问题,每次导入的时候时间都非常的长,以致于一些很好的电脑都需要3-5秒钟才可以导入完成,这段时间也便没有响应。这并不是首次导入重新编译成字节码的原因,而是每次导入都会发生,很恼火。
>

刚才我试了一下,导入速度不慢啊,在我这里比导入wx要快的多,是不是别的什么原因造成的?
我的系统是gentoo 2006.1,python是2.4.3,dpkt是1.6
-- 
I like Python & Linux.
Blog: http://recordus.cublog.cn
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://python.cn/pipermail/python-chinese/attachments/20061113/9b07ff37/attachment.htm 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年11月13日 星期一 19:14

hijack9 hijack9在gmail.com
星期一 十一月 13 19:14:45 HKT 2006

gashero兄,记得你曾经说过做过不少网络安全方面的开发,都是python开发的。介不介意多给点代码让兄弟们看看啦?另外要是想发送原始数据包,pypcap似乎没有接口,咋办类?

On 11/13/06, gashero <harry.python at gmail.com> wrote:
>
>
> pypcap还是比较友好的,比pcapy要好用的多。主要的使用流程就是先定义一个pcap对象,然后设置监听过滤器,然后就是对pcap对象使用类似词典的取值方法循环的取出值就可以了。取出的对象是一个Python时间(浮点数)和buffer对象的对(tuple),就是接收到数据包的时间和数据包对象。pypcap主页上的例子已经很详尽了。而且一般来说使用pypcap需要配合dpkt使用。dpkt是负责解包以太网数据包用的,还支持很多高层协议。
> 下面的例子比较经典,是以前一位兄弟写的。我的很多代码没有在现在的机器上,改日再说。
>
> import dpkt, pcap
> pc = pcap.pcap()
> pc.setfilter('tcp')
> for ts, pkt in pc:
>    p = dpkt.ethernet.Ethernet(pkt)
>    if p.data.__class__.__name__ == 'IP':
>        ip = '%d.%d.%d.%d' % tuple(map(ord, list(p.data.dst)))
>        data = p.data.data
>        if data.__class__.__name__ == 'TCP':
>            if data.dport == 80 and ip == '192.168.2.50':
>                print data.data
>
> 这个例子中不仅仅可以解包,还可以解出IP地址。
>
>
> pypcap抓取的包都是以太网包,最大1518字节,最小64字节。而且仅仅是理论上讲最小64字节。但是我实际测试发现64字节以下而且有效的数据包也很常见。而在以往的局域网通信定义中,64字节以下的数据包是无效的冲突包。当然,也有可能是我的错误。
>
>
> 关于dpkt,他的解包速度很慢,优势仅仅在于其支持的数据包格式比较多。我当时用过一段时间以后就不用了,而是自己编了一套可以解包ICMP、IP、TCP、HTTP的解包模块。
>
> 另外dpkt还有一个很奇怪的问题,每次导入的时候时间都非常的长,以致于一些很好的电脑都需要3-5秒钟才可以导入完成,这段时间也便没有响应。这并不是首次导入重新编译成字节码的原因,而是每次导入都会发生,很恼火。
>
> 有兴趣可以交流一下,我用pypcap写过一些东西。
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://python.cn/pipermail/python-chinese/attachments/20061113/42fa47e0/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年11月14日 星期二 08:10

gashero harry.python在gmail.com
星期二 十一月 14 08:10:48 HKT 2006

是的,做过一点,不过有些涉密,不好发布,我试着再写一遍看看。
pcap最早是在BSD下实现的,使用了一种内核级的包过滤机制,速度奇高,所以要最终部署的应用,推荐在BSD下面。在Windows下面的WinPcap只不过是拥有相同接口的一组应用罢了,速度很慢,不过我以前没什么文化,用的就是WinPcap。
UNIX类系统下的libpcap是没有发包函数的,仅仅用于监听。而WinPcap中有一个可发包的函数,但是pypcap中不能用。Winpcap还有一个封装,叫pcapy,几乎是完全封装了Pcap的C接口,不知那个里面有没有发包的函数。
如果确实需要,推荐用libdnet。发包之间的构造包的过程,推荐一下dpkt,当然libdnet中也有,只不过dpkt的包多一些,封装也很好。

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年11月14日 星期二 15:47

hijack9 hijack9在gmail.com
星期二 十一月 14 15:47:07 HKT 2006

谢谢啦 !

On 11/14/06, gashero <harry.python at gmail.com> wrote:
>
> 是的,做过一点,不过有些涉密,不好发布,我试着再写一遍看看。
>
> pcap最早是在BSD下实现的,使用了一种内核级的包过滤机制,速度奇高,所以要最终部署的应用,推荐在BSD下面。在Windows下面的WinPcap只不过是拥有相同接口的一组应用罢了,速度很慢,不过我以前没什么文化,用的就是WinPcap。
>
> UNIX类系统下的libpcap是没有发包函数的,仅仅用于监听。而WinPcap中有一个可发包的函数,但是pypcap中不能用。Winpcap还有一个封装,叫pcapy,几乎是完全封装了Pcap的C接口,不知那个里面有没有发包的函数。
> 如果确实需要,推荐用libdnet。发包之间的构造包的过程,推荐一下dpkt,当然libdnet中也有,只不过dpkt的包多一些,封装也很好。
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://python.cn/pipermail/python-chinese/attachments/20061114/711593b5/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年11月15日 星期三 13:47

wangmm kernellearn在gmail.com
星期三 十一月 15 13:47:15 HKT 2006

ÊÔÊÔscapy°É£¬¸Ð¾õ·â×°µÄ±È½ÏºÃ£¬»¹Ìṩһ¸ö½»»¥µÄ»·¾³¡£

On 11/14/06, hijack9 <hijack9在gmail.com> wrote:
>
> ллÀ² £¡
>
> On 11/14/06, gashero <harry.python在gmail.com> wrote:
> >
> > Êǵģ¬×ö¹ýÒ»µã£¬²»¹ýÓÐЩÉæÃÜ£¬²»ºÃ·¢²¼£¬ÎÒÊÔ×ÅÔÙдһ±é¿´¿´¡£
> > pcap×îÔçÊÇÔÚBSDÏÂʵÏֵģ¬Ê¹ÓÃÁËÒ»ÖÖÄں˼¶µÄ°ü¹ýÂË»úÖÆ£¬ËÙ¶ÈÆæ¸ß£¬ËùÒÔÒª×îÖÕ²¿ÊðµÄÓ¦Óã¬ÍƼöÔÚBSDÏÂÃæ¡£ÔÚWindowsÏÂÃæµÄWinPcapÖ»²»¹ýÊÇÓµÓÐÏàͬ½Ó¿ÚµÄÒ»×éÓ¦ÓðÕÁË£¬ËٶȺÜÂý£¬²»¹ýÎÒÒÔǰûʲôÎÄ»¯£¬ÓõľÍÊÇWinPcap¡£
> >
> >
> > UNIXÀàϵͳϵÄlibpcapÊÇûÓз¢°üº¯ÊýµÄ£¬½ö½öÓÃÓÚ¼àÌý¡£¶øWinPcapÖÐÓÐÒ»¸ö¿É·¢°üµÄº¯Êý£¬µ«ÊÇpypcapÖв»ÄÜÓá£Winpcap»¹ÓÐÒ»¸ö·â×°£¬½Ðpcapy£¬¼¸ºõÊÇÍêÈ«·â×°ÁËPcapµÄC½Ó¿Ú£¬²»ÖªÄǸöÀïÃæÓÐûÓз¢°üµÄº¯Êý¡£
> > Èç¹ûȷʵÐèÒª£¬ÍƼöÓÃlibdnet¡£·¢°üÖ®¼äµÄ¹¹Ôì°üµÄ¹ý³Ì£¬ÍƼöÒ»ÏÂdpkt£¬µ±È»libdnetÖÐÒ²ÓУ¬Ö»²»¹ýdpktµÄ°ü¶àһЩ£¬·â×°Ò²ºÜºÃ¡£
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese在lists.python.cn
> > Subscribe: send subscribe to python-chinese-request在lists.python.cn
> > Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> > Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>
>
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20061115/31e1ec1d/attachment-0001.htm 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年11月15日 星期三 22:37

hijack9 hijack9在gmail.com
星期三 十一月 15 22:37:59 HKT 2006

好东西!~~~ 真强大 scapy

On 11/15/06, wangmm <kernellearn at gmail.com> wrote:
>
> 试试scapy吧,感觉封装的比较好,还提供一个交互的环境。
>
>  On 11/14/06, hijack9 <hijack9 at gmail.com> wrote:
>
> > 谢谢啦 !
> >
> > On 11/14/06, gashero <harry.python at gmail.com > wrote:
> > >
> > > 是的,做过一点,不过有些涉密,不好发布,我试着再写一遍看看。
> > > pcap最早是在BSD下实现的,使用了一种内核级的包过滤机制,速度奇高,所以要最终部署的应用,推荐在BSD下面。在Windows下面的WinPcap只不过是拥有相同接口的一组应用罢了,速度很慢,不过我以前没什么文化,用的就是WinPcap。
> > >
> > >
> > > UNIX类系统下的libpcap是没有发包函数的,仅仅用于监听。而WinPcap中有一个可发包的函数,但是pypcap中不能用。Winpcap还有一个封装,叫pcapy,几乎是完全封装了Pcap的C接口,不知那个里面有没有发包的函数。
> > >
> > > 如果确实需要,推荐用libdnet。发包之间的构造包的过程,推荐一下dpkt,当然libdnet中也有,只不过dpkt的包多一些,封装也很好。
> > > _______________________________________________
> > > python-chinese
> > > Post: send python-chinese at lists.python.cn
> > > Subscribe: send subscribe to python-chinese-request at lists.python.cn
> > > Unsubscribe: send unsubscribe to
> > > python-chinese-request at lists.python.cn
> > > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> >
> >
> >
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese at lists.python.cn
> > Subscribe: send subscribe to python-chinese-request at lists.python.cn
> > Unsubscribe: send unsubscribe to
> > python-chinese-request at lists.python.cn
> > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> >
>
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://python.cn/pipermail/python-chinese/attachments/20061115/bf34c520/attachment-0001.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号