2013-07-20 26 views
0

我遇到了问题WinDivert。 DivertSend不起作用,GetLastError()返回1237?WinDivert问题

我还有一个问题。我想转移基于IP列表的流量,我有一个包含20000条记录的CSV文件,每条记录都包含一个IP范围,问题是我只需将我的CSV文件的500条记录作为过滤字符串就可以调用DivertOpen。如果我将超过500条记录的DivertOpen称为过滤器,则会出现“过滤器语法错误”。我该如何解决这个问题。 谢谢

+0

一次一个问题。 :)并更具体地与您的第一个问题。像显示你的代码一样。 – lulyon

+0

对不起,我的坏。第一个问题修复了因为ESET Endpoint安全问题而无法使用DivertSend,现在它已修复。 – user2601950

+0

Lulyon你能帮我解决第二个问题吗? – user2601950

回答

0

WinDivert并非设计用于处理长/复杂的过滤字符串(例如20,000个IP地址的列表)。这在WinDivert documentation中简单地提到:即,滤波器串理想地应该是选择性的短的,并且越短/选择性越好。

的盛情申请中,在一个简短的字符串是不可能的,你是关闭捕捉所有网络流量(例如,使用到DivertOpen("true", ...)的调用),并使用一些有效的方法做滤波在用户模式应用程序更好(如二进制搜索)。只需重新注入不匹配的数据包即可。 PS:感谢1237错误问题的报告。

+0

谢谢亲爱的罗勒。我想用DivertSend报告另一个问题。有时会返回1233错误。你有什么想法吗? – user2601950

+0

1233 = ERROR_PROTOCOL_UNREACHABLE。不知道是什么原因造成的。也许试图注入一个无效的ip.Version或ip.Protocol值的数据包? – Basil

+0

我只是运行passthrue的例子。 – user2601950