문제

패킷을 사용하는 응용 프로그램을 작성하고 있습니다 SharppCap.

그러나 패킷을 직접 구성하고 대상의 IP 주소 만 알고 있으므로 다음 홉의 물리적 주소를 결정해야합니다. 항상 핑을 리모컨으로 보낼 수 있습니다 IP 주소, 스니핑하고 Mac 주소 스니핑 된 패킷에서. 그러나 나는 그렇게 할 수있는 덜 복잡한 방법이 있기를 바랐다. 씨#.

분명히 다음 홉의 IP 주소를 얻는 것도 매우 도움이 될 것입니다. 그런 다음 SendArp를 사용하여 Mac 주소를 결정할 수 있습니다.

라우팅 테이블을 얻으면됩니다. 코드를 사용하여 어떻게 얻을 수 있습니까?

도움이 되었습니까?

해결책

WMI에 약간의 문제가있었습니다.

그래서 나는 관리되지 않는 것을 사용하기로 결정했습니다 GetBestroute, 실제로 Windows가 라우팅 결정을 수행하고 다음 HOP의 IP 주소와 NIC 식별자를 반환하여 해당 주소로 이어지기 때문에 실제로 많은 시간을 절약했습니다. 또한 WMI에 대한 쿼리를 실행하는 것보다 훨씬 빠릅니다.

그런 다음 반환 된 목록에서 해당 식별자를 찾아 NIC 자체를 찾을 수 있습니다. getAdaptersinfo.

도움이되기를 바랍니다 ...

다른 팁

물리적 주소는 다음에 의해 해결됩니다 주소 해결 프로토콜 - 그냥 보내십시오 ARP Reuest 해결할 IP 주소가 있습니다.

대상이 로컬 네트워크에 있지 않은 경우 패킷을 표준 게이트웨이로 보내야하며 표준 게이트웨이에 대한 ARP 요청을 수행해야합니다. 표준 게이트웨이는 System.net.networkInformation 네임 스페이스.

 NetworkInterface.GetAllNetworkInterfaces()[0].GetIPProperties().GatewayAddresses

완전히 해킹 된 방법은 "arp -a"명령을 실행하고 명령의 결과를 읽고 구문 분석하는 것입니다 ( 아프 이미 Windows에서 보유한 캐시).

그렇지 않으면 프로토콜 스택에 ARP를 포함해야합니다. 이것이 시스템 자체가 프레임을 보낼 위치를 파악하는 방법입니다. 또는 마지막으로 비효율적 인 것에 대해 걱정하지 않으면 이더넷 대상을 다음과 같이 설정할 수 있습니다. FF : FF : FF : FF : FF와 같은 LAN의 모든 사람을 범람시킬 수 있습니다. 무언가가 응답하거나 패킷을 얻으면 직접 캐시하여 적절한 대상 MAC 주소를 갖습니다.

개인적으로, 당신이 홍수를했다면 모든 사람들이 내 네트워크에 접근한다면, 나는 당신을 다치게 할 것입니다. 그러나 당신의 상황에 따라 그것은 매우 쉬운 해킹 일 수 있습니다. 그러나 100% 풀 스택 구현을 수행하는 것은 잘 지원되어야하는 에지 케이스가 많이 있기 때문에 상당히 복잡합니다 (예 : 프록시 ARP, gratuitous arp 등).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top