2013-07-20 3 views
0

나는 WinDivert에 문제가 있습니다. DivertSend가 작동하지 않습니다. GetLastError()가 1237을 반환합니까?WinDivert Issue

다른 질문이 있습니다. 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", ...)를 호출 예) 모든 네트워크 트래픽을 캡처하고 몇 가지 효율적인 방법을 사용하여 사용자 모드 응용 프로그램에서 필터링을하는 것이 더 낫다 (예 : 2 진 검색). 일치하지 않는 패킷을 다시 주입하기 만하면됩니다.

추신 : 1237 오류 문제에 대한 보고서를 보내 주셔서 감사합니다.

+0

Dear Basil에게 감사드립니다. DivertSend에서 또 다른 문제를보고하고자합니다. 때로는 1233 오류를 반환합니다. 너는 그것에 대해 어떤 생각을 가지고 있니? – user2601950

+0

1233 = ERROR_PROTOCOL_UNREACHABLE. 무엇이 원인이 될지 확실하지 않습니다. 아마도 잘못된 ip.Version 또는 ip.Protocol 값이 포함 된 패킷을 주입하려고합니까? – Basil

+0

난 그냥 패스 스루 예제를 실행합니다. – user2601950