2017-01-16 2 views
0

사용자 입력을 기반으로 특정 URL을 차단해야하는 클라이언트 요구 사항이 있습니다. 나는 이것을 구현하기 위해 드라이버를 구축하는 것을 생각하고 있었는데,이를 통해 모든 세부 사항을 포함한 패킷 응답을 얻을 수있다. 응용 프로그램을 만들면 차단할 수있다. (이것은 "netfilter"드라이버가 윈도우에서하는 것과 비슷하다.)OS X 용 드라이버를 사용하는 URL 필터링

하지만 난이 문서 및 웹 사이트를 통해 읽으면서 내가이 특정 요구 사항에 대한 진행하기에 충분한 정보를 얻지 못했다는. (나는 BPF에 대해 찾았지만 진행하기에 충분한 세부 사항이 아니었다) 나는 매우 생각으로

은 운전자 필드에 새로운 것이 있습니다.이 경우 진행 방법을 제안 할 사람이 있습니까? (진행 방법 단계)

참고 : USB 드라이버와 관련된 많은 프로젝트/문서를 발견했습니다. 모두를 제외하고는 계속 진행할 충분한 아이디어를주지 못했습니다.

답변

1

"URL"은 매우 광범위하며 URL의 종류 (어떤 프로토콜? 암호화는 무엇입니까?) 및 필요한 세분성에 따라 맞춤 kext 이외의 다른 해결책이 더 나은 방법 일 수 있습니다. 귀하의 요구 사항을 알지 못해서, 나는 그것이 사실인지 여부를 말할 수 없습니다.

내가 대답, Network Kernel Extensions 당신이로 볼 필요가 무엇 그러나, 당신이 경우가 KEXT에서이 작업을 수행하기로 결정한다는 것입니다.

Apple은 NKE API 사용 방법을 설명하기 위해 the enetlognke example code도 제공합니다.

+0

당신의 제안에 대해 대단히 감사드립니다. 예를 들어 URL을 가져 왔지만 주로 패킷 기반 컨트롤과 예제에 집중하여 주로 개념을 이해하는 데 많은 도움이되었습니다. 내가 kext를 알고 있기 때문에 나는 같은 것을 계속하고 싶다. – Darshan

+0

그러나 출력되는 로그는 [...] enetlognke out IPv4 a820662e49ca | 000c29f281ec | 0800 | 45000054 98 그러나 위의 출력에서 ​​원본 및 대상 IP를 검색 할 수 없습니다. (이 16 진수 값을 변환하려고했습니다. IP 형식에 a820662e49ca하지만 항상 잘못된 IP 세부 정보를 제공했습니다.) 위의 값을 변환 할 수있는 방법이 있습니까? – Darshan

+0

'a820662e49ca'는 MAC 주소처럼 보입니다. (공급 업체 : Apple)이 출력이 인쇄되는 주변의 코드 주석은 패킷이 이더넷 프레임임을 나타냅니다. 따라서 IP 패킷이 시작되는 위치를 먼저 찾은 다음 헤더를 확인해야 할 가능성이 큽니다. – pmdj