正如哈里斯先生所说,你可以用
WinDivert做你想做的事.例如.只需执行TCP握手,您可以编写如下内容:
// TCP handshake using Windivert: HANDLE handle = divertOpen("inbound && tcp.SrcPort == 80 && tcp.Syn && tcp.Ack",0); divertSend(handle,synPacket,sizeof(synPacket),dstAddr,NULL); ... divertRecv(handle,synAckPacket,sizeof(synAckPacket),&srcAddr,&length); ... divertSend(handle,ackPacket,sizeof(ackPacket),NULL); ...
divertRecv()函数在Windows TCP / IP堆栈处理之前将服务器响应重定向到用户空间.因此,不会生成任何讨厌的TCP RST. divertSend()注入数据包.
这是Windivert和WinPCAP之间的主要区别.后者仅仅是一个数据包嗅探器,而前者可以拦截/过滤/阻止流量.
Windivert是用C语言编写的,因此您需要编写自己的.NET包装器.
(通常披露:Windivert是我的项目).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。