如何使用dpkt创建原始套接字(自定义TCP头)?
我正在写一个端口扫描器,所以我需要发送一个原始数据包。我查了一下,发现使用dpkt库会比较好,但我没有找到任何能帮助我的文档。所以请问有没有人能帮忙,解释一下如何创建一个带有自定义TCP头的数据包,也就是如何根据需要设置TCP头的标志。
谢谢!
1 个回答
1
这个问题有点老了,但我还是想回答,因为我也在寻找类似的解决方案。dpkt的文档几乎不存在。他们只提供了一些示例,联合开发者Jon Oberheide写了一些教程。所以如果你想使用dpkt,其实不难,你可以从这些教程中找到答案:
- http://jon.oberheide.org/blog/2008/08/25/dpkt-tutorial-1-icmp-echo/
- http://jon.oberheide.org/blog/2008/12/20/dpkt-tutorial-3-dns-spoofing/
- 或者,你可以看看这个链接 http://www.bases-hacking.org/sources/Reseau/IP%20Spoofing/rst_hijack.py,这是我觉得有用的示例代码,文档写得很好。如果你在网上搜索,还能找到很多其他的代码。
如果你想要一个更简单的接口,我用过以下这两个:
http://libdnet.sourceforge.net/。它有一些基本的TCP和IP创建功能,但文档要好得多。
或者使用这个libnet的Python封装,http://pylibnet.sourceforge.net/。这个库非常强大,文档也很棒,但我在OS X上无法让注入功能正常工作。此外,到目前为止,每个版本都是测试版。