이런 종류의 프로젝트는 전에 블루투스로 수행되었지만 30 피트 범위와 추가 배터리 소비로 인해 사람들의 전화 대신 라우터를 핑하고 싶습니다. 라우터가 각 장치의 고유 한 MAC 주소를 추적한다는 것을 알고 있습니다. 각 전화의 주소를 등록하고 PI가 정기적으로 라우터를 확인하여 누가 집에 왔는지 동적 웹 페이지를 업데이트하도록했습니다.
PI로이 정보를 가져 오는 합리적인 방법이 있는지 알고 싶습니다.
이런 종류의 프로젝트는 전에 블루투스로 수행되었지만 30 피트 범위와 추가 배터리 소비로 인해 사람들의 전화 대신 라우터를 핑하고 싶습니다. 라우터가 각 장치의 고유 한 MAC 주소를 추적한다는 것을 알고 있습니다. 각 전화의 주소를 등록하고 PI가 정기적으로 라우터를 확인하여 누가 집에 왔는지 동적 웹 페이지를 업데이트하도록했습니다.
PI로이 정보를 가져 오는 합리적인 방법이 있는지 알고 싶습니다.
답변:
것이 가능하다. 스크립트에 로그인 자격 증명을 제공하고 정보를 표시하는 페이지를 읽으십시오. 그런 다음 내용을 구문 분석하고 원하는 데이터로 배열을 채울 수 있습니다. 이 페이지에는 날짜 및 시간과 같은 더 많은 정보가 포함되어 있기 때문에 정말 멋진 로그를 만들 수 있습니다.
다음은 진행 방법에 대한 간단한 예입니다.
라우터 페이지에서 다음과 같은 것을 찾을 수 있습니다.
<div id="flex">
<div id="dm-name">
name : Your_device_name
</div>
<div id="dm-ip">
IP : 192.168.x.xxx
</div>
<div id="dm-mac">
<span>MAC:D4:04:CD:FE:5A:17</span>
</div>
</div>
그래서 우리는 모든 장치가 그렇게 나열 될 것이라는 것을 알고 있습니다. 그리고 모든 MAC 주소의 길이는 같습니다.
스크립트는 그런 식일 수 있습니다.
var string_to_parse = "file read from router.html";
cursor = 0; // The position of your cursor;
i =0;
while(cursor > 0){
begin_at = string_to_parse.indeOf('MAC:');
end_at = length_of_Mac; // this is standard for al mac
mac[i] = string_to_parse.substring(begin_at, begin_at + end_at);
cursor = begin_at + end_at;
i++;
}
이 코드는 수정이 필요하지만 아이디어가 있습니다. 모든 파일을 실행하여 모든 Mac 주소를 찾는 루프입니다. 파일 끝에 도달 할 때까지
Raspberry Pi에서 고유 한 Mac 주소를 추적하려면 arpwatch 라는 도구 (서비스가 아님)가 필요합니다 . BSD에서 arpwatch를 광범위하게 사용했으며 모든 arp 및 rarp 요청을 syslog에 기록합니다.
Syslog에서 날짜와 시간 및 mac 주소를 구문 분석 할 수 있습니다.
ARP 작업 및 테이블은 실제 네트워크 (기술 단어 : 충돌 도메인)에만 존재합니다. 패킷이 다른 네트워크로 나가면 소스 mac 주소가 라우터의 mac 주소로 바뀝니다.
실행 arp
라즈베리 파이에 명령 만 명령이 실행되는 호스트 (라즈베리 파이)와 거래 한 호스트 (IP 통신)의 맥 + IP 주소를 나열합니다. 네트워크에있는 다른 호스트의 mac 주소 는 표시 되지 않습니다 .
또 다른 고급 방법 은 Raspberry Pi에서 nmap 을 사용 하여 호스트 검색을 수행하는 것입니다. nmap -sP
네트워크의 모든 호스트를 핑 하는 데 사용할 수 있습니다 . 네트워크에서 모든 활성 호스트의 IP 주소를 알려줍니다. 그런 다음 arp 명령을 실행하여 누가 활동 중인지 mac을 찾을 수 있습니다.
chetan@Linux:~$ nmap -sP 192.168.100.0/24
Starting Nmap 6.40 ( http://nmap.org ) at 2016-02-23 16:08 PST
Nmap scan report for 192.168.100.4
Host is up (0.0087s latency).
Nmap scan report for 192.168.100.58
Host is up (0.0024s latency).
Nmap scan report for 192.168.100.160
Host is up (0.049s latency).
Nmap scan report for 192.168.100.164
Host is up (0.063s latency).
Nmap done: 256 IP addresses (4 hosts up) scanned in 2.68 seconds
방금 커맨드 라인 버전 fing 을 가지고 놀았습니다 . 네트워크에서 모든 것을 찾고 다음을 포함하는 CSV 파일 을 추출 하는 적절한 작업을 수행 합니다 .
- IP 주소
- 노드의 사용자 정의 이름 (.properties 파일에 사용자 정의 이름을 지정한 경우)
- 상태 (UP / DOWN)
- 마지막 변경의 타임 스탬프
- 호스트 이름 (DNS를 활성화 한 경우)
- 하드웨어 주소 (로컬 네트워크를 발견하는 경우)
- 하드웨어 공급 업체
이전 답변에 따라 CSV의 내용을 웹 페이지로 가져오고 외부에 게시 하는 내용에 주의를 기울 이려면 일부 텍스트 조작이 필요합니다 .
나는 안드로이드 버전을 꽤 광범위하게 사용했으며 내 홈 네트워크의 모든 것을 찾는 데 도움이됩니다 (공용 와이파이에서 놀기 재미 있습니다).
이 명령 arp
은 네트워크에 연결된 장치 목록을 제공합니다. 원하는 데이터를 얻으려면 기본 문자열 조작을 수행해야하지만 정보를 직접 얻는 것보다 훨씬 쉽습니다.
기능 메모 :
일부 라우터는 기본적으로이 유형의 기능을 차단하며 사용자의 구성 방식 일 수도 있습니다. 그래도 작동하지 않으면 문서를 조금 둘러보고 허용 방법을 확인하십시오.
보안 정보 :
현재 집에있는 사람을 표시하는 웹 사이트를 만들면 보안에 심각한 영향을 미칩니다. 보안이 제대로 갖추어져 있는지, 보안이 위험에 충분히 적합한 지 신중하게 생각하십시오.