链式网络协议封装
今天设计了一个通讯接口,准备运行在TCP/IP上。实现反扫描,反通讯分析,反IDS,反嗅探。其中反扫描需要使用Sniffer来做侦听诱导或者是反穿诱导(我更倾向后者),反通讯分析需要封装整个协议到ICMP层或者一些比较不容易被察觉很跟踪的协议层上去,还要兼顾反IDS的行为分析。最后反嗅探需要数据加密。这些能力还要能动态叠加和消除,这样只有设计一个动态的通讯接口了。
我先设计了一个虚基类,保证用于每个子类继承后可以自动产生链。通过链式规则,我们从上层将数据层层递推。任何层都可以发出数据,并且终止链的递推。基类有六个虚方法,链接,监听,发送,接收,判断数据进入,关闭。构造函数可以接收一个基类指针作为参数,并且传递给基类构造函数。基类构造函数将会自动产生链,并且加以管理。每次我们调用某个方法时,虚方法会自动按照链的结构依次被调用。同时基类的管理作用也作用于缓冲区,使得所有子类构成链后共享同一个缓冲。当我们设定缓冲并且发送时,最上层的发送函数就被调用,然后处理缓冲内容(如果这个子类是反嗅探用的话)。然后调用下个链上的节点,下个节点继续处理。每个节点都可以决定是否要终止调用链。
我正在编写并且测试整个系统,如果运行良好的话,我准备将虚基类的代码和部分的实现代码公开。可能数据加密方法不会公开(我可能会使用一些比较巧妙而非严谨的方法来保证安全)。使用者可以利用整个接口来收发数据(即使不是网络通讯),并且自行扩展能力。当然,作为普通的网络通讯接口,这个东西也是比较好用的。