在网络安全工具的开发过程中,经常要自行构造一些网络报文。这一般需要发报工具来实现。而要想开发一个简单的发报工具是比较容易的,可以使用libcap直接开发,也可以直接调用raw_socket进行开发。如果可以使用图形界面来提供报文构造的参数,那效果会更好。之前在公司里使用过的专用测试仪都是可以提供一个图形界面来构造报文的。专用测试仪都比较贵,而网络上可以获取到的发报工具都是功能比较简单的工具。不过也有部分满足基本使用的工具,如windows下龙卷风,就是一个带有ARP,PPPOE等多种协议的发报工具。
想想,如果自己开发一个这样的工具,就或许要考虑一下如何快速的增加多种协议的功能。当然是直接移植相应的开源代码,但是很多协议是直接使用socket进行开发的,要想构造多种IP或MAC地址进行类似大呼的报文,现有基于raw_socket或libcap的开发方式或许就比较麻烦了。
我的想法是,是否可以直接利用linux的网络协议栈。在提供构造大量IP时,可以让工具为linux的接口直接配置大量IP,然后执行具体的协议的多个实例,不过这种方式,也存在问题,就是内存问题,但只是执行几个实例是没问题的,但是,如果需要100个,或10000个呢?这时是否可以做到。如果这样的话,还是需要修改具体协议的代码,使其能够支持多实例的方式。这种方式,对于类似qq或pppoe这样的需要先交互登录,后续只需要保活报文提供的协议,还是能够满足需求的,因为,大量内存的使用只是开始时的并发交互,而成功后的连接是可以只维护一个保活机制就可以了。
阅读(913) | 评论(0) | 转发(0) |