FING(또는 IP/MAC 주소 매퍼)은 어떻게 작동합니까?

FING(또는 IP/MAC 주소 매퍼)은 어떻게 작동합니까?

이에 따르면논평, 제안을 받아 별도의 질문으로 제기하겠습니다. 저는 네트워킹과 보안에 대해 더 많이 배우려고 노력 중이며 이해를 높이는 데 도움이 되는 도구를 사용하고 싶습니다.

Fing은 정말 멋진 도구인 것 같습니다. 네트워크에서 장치와 관련 MAC 주소를 찾는 것입니다. 감지 및 경고를 제공하는 모든 솔루션을 쉽게 구현할 수 있지만 이러한 도구가 어떻게 구현되는지 알고 싶습니다. 이것은 낮은 수준의 Linux 유틸리티의 조합입니까, 아니면 일부 사용자 정의 프로그래밍이 진행되고 있습니까?

두 번째라면 알고리즘은 어떻게 생겼을까요?

답변1

방금 무선 네트워크에서 Fing을 실행했습니다. 를 사용하면 tcpdumpFing이 생성하는 것으로 보입니다.주소 확인 프로토콜(ARP) 요청 패킷. ARP는 이더넷 프로토콜 수준(데이터 링크, OSI 수준 2)에서 실행되는 매우 간단한 프로토콜입니다. ARP 요청 패킷에는 "to" 주소로 브로드캐스트 주소(ff:ff:ff:ff:ff:ff), "from" 정보로 Android 휴대폰의 MAC 및 IP 주소, Fing이 보내려는 IP 주소가 있습니다. 에 대해 알고 싶습니다. Fing은 서브넷이 무엇이든 통과만 하는 것으로 보입니다. 제 경우에는 172.31.0.0/24이므로 172.31.0.1에서 172.31.0.254까지 255개의 IP 주소가 있습니다. 퍼레이드가 끝난 후 응답하지 않는 IP 주소에서 다시 시도하는 것 같습니다. Fing이 IP 주소를 일괄적으로 시도하고 Fing 스레드가 가능한 한 빨리 처리할 수 있도록 기본 Linux 커널을 사용하여 ARP 응답을 버퍼링하는 것처럼 보입니다. Fing이 시간 초과를 확인하면 다시 전송됩니다. Fing(Java 프로그램)이 전화기의 Linux 커널을 가져와 ARP 패킷을 생성하는 방법을 모르겠습니다.

유명한지도-sn"ping scan" 플래그로 호출되어 동일한 작업을 수행합니다. 커널이 ARP 요청을 보내도록 하는 방법을 알아보기 위해 strace실험 을 수행했습니다 . 이는 일반 TCP/IP 소켓을 생성하고 IP 주소를 사용하여 해당 소켓을 TCP 포트 80으로 호출하는 nmap -sn 172.31.0.0/24것처럼 보입니다 . 이는 IP 주소가 있는 호스트가 없을 때 Linux가 시간 초과를 결정할 수 있는 것보다 더 빠르게 많은 수의 호출을 연속적으로 수행하기 때문에 비차단 모드에서 수행되어야 합니다 .nmapconnect()nmapconnect()connect()

따라서 대답은 다음과 같습니다. TCP/IP 소켓을 만들고 connect()특정 포트와 IP 주소를 사용하여 호출한 다음 오류가 무엇인지 확인하세요. 오류가 ECONNREFUSED인 경우 이는 라이브 IP 주소이지만 해당 포트에서 수신 대기 중인 항목이 아무것도 없는 것입니다. TCP 연결이 이루어지면 해당 IP 주소에 대한 호스트가 있습니다. 통화 시간 초과에는 connect()IP 주소와 연결된 컴퓨터가 없습니다. 속도를 위해 호출을 일괄 처리 해야 하며 , IP 주소에 연결된 컴퓨터가 없는지 확인하려면 호출이 시간 초과될 때 connect()까지 기다려야 합니다 .connect()

관련 정보