Script Bash : 네트워크에있는 모든 컴퓨터의 MAC을 특정 컴퓨터와 비교

여기서는 제가 매우 특정한 목적을 위해 만든 bash 스크립트에 대해 이야기하겠습니다. 다른 사람들이 이런 상황을 가지고 있는지 의심 스럽지만 제가 프로그래밍했기 때문에 공유하는 데 비용이 들지 않습니다 🙂

위층,이게 무슨 소리 야?

우리 도시에는 상당히 큰 네트워크가 있고, 우리 중 많은 사람들이 유선 방식 (네트워크 케이블을 스위치에 연결, 다른 스위치에 연결)으로 연결하지만 큰 링크 (케이블로는 연결할 수 없음)가 있습니다. 그들은 Wi-Fi 장비를 사용합니다. 이렇게하면 수천 명의 사용자가있는 네트워크가 있고, 메일 서비스가없고 인터넷이 훨씬 적더라도 WoW를 플레이하고 (다른 것들 중에서) 배우고 정보를 공유하는 등의 작업을합니다.

사실 특정 Wi-Fi 장비는 소유자가 네트워크 규칙을 위반하거나 어떤 이유로 든 네트워크에서 금지되거나 추방 된 경우가 있습니다. 따라서 누군가가 꺼낸 컴퓨터의 MAC에 다시 연결되었는지 확인하기 위해 매 X 회 검사를 수행해야하며, 여기에서이 스크립트가 들어옵니다.

간단히 말해, 스크립트는 무엇을합니까?

  1. 먼저 실행중인 서브넷에서 스캔을 수행하고 라이브 호스트 (활성 IP)를 감지합니다.
  2. 그런 다음 해당 IP 중 Ubiquiti (링크에 사용되는 장비)가 있는지 확인합니다. 실제로 위의 각 IP에서 포트 443이 열려 있는지 여부 만 감지합니다.
  3. 각 라이브 장치의 MAC을 제거하고 포트 443이 열린 상태에서 동시에 추출 된 각 MAC을 검색중인 MAC과 비교합니다.
  4. 일치하는 항목을 찾으면 보고서를 생성합니다.

코드에 가자!

작동을 위해 다음 패키지가 설치되어야 함을 명확히하는 데 유효합니다. nmap… nc… arping

음, nmap을 사용하면 활성 IP를 감지하는 매핑을 수행하고 nc를 사용하여 포트 443이 열려있는 것을 확인하고 마지막으로 arping을 사용하여 MAC을 추출합니다.

예, nmap을 사용하면이 모든 작업을 수행 할 수 있지만 몇 초 (또는 몇 분 더)가 걸렸기 때문에 모든 도구가 더 빠르게 작동하도록 하나가 아닌 여러 도구를 사용하는 것을 선호했습니다.

네 지금 요…. 코드!

#! / bin / bash # # 패키지 설치 필요 : # nmap, arping, nc # # Author : KZKG ^ Gaara clear # 변수 선언 DATE =`date + '% Y- % m- % d_ % H- % M '`인터페이스 ='wlo1 'WANTEDMAC ='C8 : CB : B8 : B1 : DA : E6 'YOURIP =`ifconfig | grep "192.168"| awk '{print $ 2}'``YOURZONE =`echo $ YOURIP | awk -F "." '{print $ 3}'``# 네트워크 (귀하의 IP)에서 살아있는 호스트 가져 오기 nmap -sn 192.168. $ YOURZONE.0 / 24 | grep "보고"| awk '{print $ 5}'> hosts-ip # 포트 443을 열어서 이러한 호스트 중 어느 것이 Nano가 될 수 있는지 확인합니다. rm hosts-nanos &> / dev / null for TMPVAR in`cat hosts-ip` do nc -zv -w 2 $ TMPVAR 443 &> / dev / null if [$? -ne 1]; then echo "$ TMPVAR">> hosts-nanos fi done # 네트워크의 Nanos에서 MAC 제거 rm hosts-mac &> / dev / null for TMPVAR in`cat hosts-nanos` do arping -I $ INTERFACE -f $ TMPVAR | grep "답장"| awk '{print $ 5}'| cut -d '['-f2 | cut -d ']'-f1 >> hosts-mac done # 추출 된 MAC을`cat hosts-mac '에서 검색 한 MAC과 비교 do if [ "$ MAC"= "$ WANTEDMAC"]; 그러면 MACLINE =`cat hosts-mac | grep -n $ MAC | cut -d ':'-f1` IPMAC =`cat hosts-nanos | sed $ MACLINE'q; d'`echo -e "\ n \ t ALERT, 도난 된 장치의 MAC 감지 : $ MAC ... IP 사용 : $ IPMAC"echo -e "\ t ... 보고서 생성 중 ... "echo -e"SpyMac에서 생성 된 보고서 \ n "> final_report_ $ YOURZONE.info echo -e"보고 순간 : $ DATE \ n ">> final_report_ $ YOURZONE.info echo -e"도난당한 장치의 MAC 감지 : $ WANTEDMAC \ n ">> final_report_ $ YOURZONE.info echo -e"이 컴퓨터에서 현재 사용중인 IP : $ IPMAC \ n ">> final_report_ $ YOURZONE.info echo -e"생성 된 보고서 : $ YOURIP \ n ">> final_report_ $ YOURZONE.info fi 완료 종료

일치하는 항목이 발견되면 발견 된 MAC과 해당 장비에서 사용하는 IP도 표시됩니다.

이 (여전히) 간격이 있습니다 hehe

섬기는 사람

개선해야 할 점이 있다는 것을 알고 있습니다. 예를 들어 MAC이 위조 될 수 있고 MAC이 컴퓨터로 변경 될 수 있으며 그게 전부입니다. 그렇다면 실제 MAC이 아닌 실제 MAC을 보는 방법을 찾고 있습니다.

또한 다른 for 루프를 추가하여 여러 MAC을 동시에 비교하고 특정 MAC 만 비교 / 검색하지 않도록 할 수 있습니다. 즉, 목록에있는 MAC 5, 10 등 무엇이든 검색합니다. 아직해야 할 일입니다.

Nano 일 수도 있지만 포트 443이 차단되어 있습니다. Ubiquiti 장치인지 아닌지 전체 보안으로 알 수있는 방법을 알고 있습니다. 즉, curl (또는 wget)을 사용하여 로그인 양식을 가져 와서 Ubiquiti 중 하나와 비교할 수 있습니다. 이것은 포트 443보다 더 안전한 방법입니다. 향후 버전에 추가 할 또 다른 세부 사항입니다.

또한 Android에서이 도구를 사용하기 위해 작은 스크립트 또는 APK를 생성하기를 원합니다. 넣을 수 없다는 걸 알아 Play 스토어 그러나…. 부에, 내가 원하는 게 아니에요 😀

아, iPhone 사용자 ... 할 수 있어도 (지식과 시간을 위해)이 도구를 iOS로 이식 할 수 있습니까 ... JUAZ JUAZ JUAZ ... 앱 스토어 우연히 비슷한 것이 있는지 봅시다.

좋은 것이 전부입니다. 반복합니다. 특정 스크립트가 많은 사람들에게 유용하지 않을 수 있다고 생각합니다 (아주 특정 상황에 해당).하지만 코드의 일부일 수도 있습니다.


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   엔젤 블레이드

    nmap을 사용하면 ips 매핑과 nc 및 arping 사용을 통한 확인을 수행하지 않고도 MAC 주소를 얻을 수 있습니다.

    옵션은 -PR입니다.

    그런 것
    sudo nmap -sn IpAddress / 넷 마스크 -PR | grep MAC | awk '{print $ 3}

    1.    엘리오타임3000

      반드시 루트가 필요하지만 좋은 팁.

  2.   Daryo

    bash는 일반적으로 스크립트를 직접 작성하지 않으면 읽을 수 없습니다. 하지만 당신의 코드는 이해할 수있는 xD입니다

    당신이 할 수있는 또 다른 일은 다른 IP에 대한 간단한 핑입니다. 그런 다음 arp -a 명령을 사용하여 arp 테이블을보고 (어떤 경우에는 net 도구를 설치해야 함) 핑 된 mac 주소는 다음과 같습니다. 가장 빠른 솔루션입니다.

  3.   Daryo

    또는 더 나은
    echo "test"> /dev/tcp/www.google.com/80
    오류가 발생하면 포트 (80)가 닫힙니다.

  4.   마리오

    안녕하세요, SNMP를 구현하여 장비 유형, 브랜드, 보유한 기능, 변경된 또는 가상 MAC과 같은 문제를 식별 할 수도 있습니다. conf의 경우 "관리"할 수도 있습니다. snmp 서비스가 약합니다. 스크립트의 가능성의 범위를 여는 의견입니다. 아주 좋은 블로그, 나는 그들을 발견해서 기쁘고 자주 읽었습니다! 포옹.

  5.   프랭크 알렉산더

    그 bash 스크립트는 엄청나게 고무적입니다.

  6.   불의

    대본은 매우 이해하기 쉽고 매우 좋습니다. 감사합니다. 좋은 아이디어를주었습니다. 인사말

  7.   페가수스 온라인

    GITHUB에 올려 주시면 좋을 텐데, 우리 모두 거기서 협업 할 것입니다.

    공유해 주셔서 감사합니다!
    안부

  8.   루치아노 라 가사

    안녕하세요, 귀하의 bash 스크립트는 매우 좋습니다. 제 부분에서는 보안을 향상시키기 위해 권한이 없거나 추방 된 사용자가 입력하는 것을 방지하기 위해 wisps와 같은 인증 방법을 구현할 것을 권장합니다. 그들이 사용할 수있는 많은 소프트웨어가 있습니다.

  9.   사냥꾼

    Mac을 스푸핑 할 때 패킷 (레이어 2 OSI)으로 가짜 Mac을 보내면 공격자의 네트워크 카드가 재설정되지 않는 한 실제 Mac을 찾을 수 없습니다.

  10.   알렉산더 세이 자스

    나는 당신의 스크립트에 관심이 있습니다 ... 글쎄, 나는 조금 더 복잡하거나 어쩌면 간단한 스크립트를 찾고있었습니다.

    문제는 250 대의 컴퓨터 네트워크가 있고 wifi 포인트가 있지만 동일한 플롯을 구입한다는 것입니다 ...

    당신은 내가 어떻게 맥을 ip와 비교할 수 있는지 그리고 이전에 선언되어야한다는 것을 알게 될 것입니다. 그래서 ip를 변경하는 재미있는 사람이있을 때, ip와 mac이 일치하지 않는다는 경고를받습니다.

    내가 스스로 설명했으면 좋겠다….

    모든 곳을 검색했지만 그것에 대해 아무것도 찾을 수 없습니다….

  11.   핫메일

    스크립트를 공유 해주셔서 감사합니다. 약간 수정해야하지만 기본적으로 제가 찾던 것입니다. 다시 한 번 감사드립니다. 건배

  12.   Isidore

    내가 찾던 바로 그 이유는 내 전화가 다른 bash를 실행하기 위해 Wi-Fi에 연결될 때 감지하기 위해 내 라즈베리가 필요하기 때문입니다.
    정말 감사합니다