Bash Script: Jämför MAC för alla datorer i ett nätverk med ett specifikt

Här kommer jag att prata om ett bash-skript som jag skapade för ett mycket specifikt syfte, som jag tvivlar på att andra har den här situationen men eftersom jag programmerade det ... kostar det mig ingenting att dela det

På övervåningen, vad handlar det om?

Det händer att i min stad finns ett ganska stort nätverk, många av oss ansluter på ett trådbundet sätt (en nätverkskabel till en switch, länkad till en annan och många switchar hehe), men stora länkar (som inte kan göras via kabel) De gör med Wi-Fi-utrustning, på detta sätt har du ett nätverk med flera tusen användare, att även om det inte finns någon e-posttjänst och mycket mindre internet så spelar du WoW (bland andra), du lär dig, delar information etc.

Faktum är att det har varit så att viss Wi-Fi-utrustning är förbjuden eller utvisad från nätverket, antingen för att dess ägare bryter mot nätverksregler eller vad som helst. Så det är nödvändigt att göra en skanning var X: e gång för att kontrollera om någon har anslutit MAC: n till den utmatade datorn, och det är här detta skript kommer in.

Enkelt uttryckt, vad gör manuset?

  1. Först gör den en skanning i undernätet där den körs och upptäcker live-värdarna (de aktiva IP-adresserna)
  2. Kontrollera sedan om någon av dessa IP-adresser är en Ubiquiti (utrustning som används för länkar). Det detekterar faktiskt bara om port 443 är öppen på var och en av ovanstående IP-adresser.
  3. Det tar bort MAC för varje live-enhet och med port 443 öppen, samtidigt som varje MAC som extraheras jämförs med den som söks.
  4. Om den hittar en matchning genererar den en rapport.

Kom igen till koden!

Giltigt för att klargöra att för sin drift behöver följande paket installeras: nmap ... nc ... arping

Tja, med nmap gör det kartläggningen för att upptäcka aktiva IP: er, med nc kontrollerar den vilken som har port 443 öppen, och slutligen med arping extraherar den MAC.

Ja, jag vet att med nmap kan du göra allt detta, men det tog flera sekunder (eller minuter mer), jag föredrog att använda flera verktyg istället för bara ett för att få allt att fungera snabbare.

Ja nu…. koden!

#! / bin / bash # # Kräver att paketen är installerade: # nmap, arping, nc # # Författare: KZKG ^ Gaara rensa # Förklarar variabler DATE = `date + '% Y-% m-% d_% H-% M '' GRÄNSSNITT = 'wlo1' WANTEDMAC = 'C8: CB: B8: B1: DA: E6' YOURIP = `ifconfig | grep "192.168" | awk '{print $ 2}' '`` YOURZONE = `echo $ YOURIP | awk -F "." '{print $ 3}' '' # Pulling Alive Hosts on the network (your IP) nmap -sn 192.168. $ YOURZONE.0 / 24 | grep "rapport för" | awk '{print $ 5}'> hosts-ip # Att se vilken av dessa värdar som kan vara en nano genom att ha port 443 öppna rm-värdar-nanos &> / dev / null för TMPVAR i `cat hosts-ip` do nc -zv -w 2 $ TMPVAR 443 &> / dev / null if [$? -ne 1]; sedan echo "$ TMPVAR" >> hosts-nanos fi done # Få MAC från Nanos i nätverket rm hosts-mac &> / dev / null för TMPVAR i `cat hosts-nanos` do arping -I $ INTERFACE -f $ TMPVAR | grep "svar från" | awk '{print $ 5}' | klipp -d '[' -f2 | klipp -d ']' -f1 >> hosts-mac done # Jämföra extraherade MAC-filer med den sökte efter MAC i `cat hosts-mac` gör om [" $ MAC "=" $ WANTEDMAC "]; sedan MACLINE = `cat hosts-mac | grep -n $ MAC | klipp -d ':' -f1` IPMAC = `cat hosts-nanos | sed $ MACLINE'q; d'` echo -e "\ n \ t ALERT, MAC för stulen enhet upptäckt: $ MAC ... Med IP: $ IPMAC" echo -e "\ t ... Skapar rapport ... "echo -e" -rapport genererad av SpyMac \ n "> final_report_ $ YOURZONE.info echo -e" Rapportera ögonblick: $ DATE \ n ">> final_report_ $ YOURZONE.info echo -e" MAC för stulen enhet upptäckt: $ WANTEDMAC \ n ">> final_report_ $ YOURZONE.info echo -e" IP som för närvarande används av den här datorn: $ IPMAC \ n ">> final_report_ $ YOURZONE.info echo -e" Rapport genererad av: $ YOURIP \ n ">> final_report_ $ YOURZONE.info slutfört

Om en matchning hittas kommer den att visa oss den MAC som hittats och även den IP som används av utrustningen.

Detta (fortfarande) har luckor hehe

server

Jag vet att det finns saker att förbättra, till exempel MAC kan förfalskas, MAC kan ändras till datorn och det är det, jag letar fortfarande efter hur man ser den riktiga MAC och inte den falska om det är fall.

Genom att lägga till en annan för loop kan jag göra att flera MAC-enheter kan jämföras samtidigt och inte bara jämföra / söka efter en specifik, det vill säga söka efter MAC-enheterna som finns i en lista, 5, 10, vad de än är . Det har jag ännu inte gjort.

Kanske är det en Nano men den har port 443 blockerad, jag vet hur man kan veta med total säkerhet om det är en Ubiquiti-enhet eller inte, det vill säga med curl (eller wget) kan jag få inloggningsformuläret och jämföra det med en av en Ubiquiti är detta en säkrare metod än med port 443. Det är en annan detalj att lägga till i framtida versioner.

Jag skulle också vilja (vilket redan kommer att vara svårt för mig) att skapa ett litet skript eller till och med en APK för att ha det här verktyget på min Android. Jag vet att jag inte kommer att kunna lägga den i Play butik men…. bueh, det är inte det jag vill to

Ah, iPhone-användare ... inte ens om jag kan (för kunskap och tid) skulle jag överföra detta verktyg till iOS ... JUAZ JUAZ JUAZ ... titta i din app Store Låt oss se om de av en slump har något liknande, vilket jag tvivlar på 😀

end

Bra är allt. Jag upprepar, jag tror att det specifika skriptet kanske inte är användbart för många (det är för en ganska specifik situation), men kanske delar av koden ja, förhoppningsvis och så som


Innehållet i artikeln följer våra principer om redaktionell etik. Klicka på för att rapportera ett fel här.

13 kommentarer, lämna din

Lämna din kommentar

Din e-postadress kommer inte att publiceras.

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   ängelblad sade

    Med nmap kan du få MAC-ADRESSEN utan att behöva göra den ips-mappningen och den verifieringen med nc och att använda arping

    alternativet är -PR

    något sådant
    sudo nmap -sn IpAddress / netmask -PR | grep MAC | awk '{skriv ut $ 3}

    1.    eliotime3000 sade

      Bra tips, även om det nödvändigtvis kräver rot.

  2.   daryo sade

    bash är vanligtvis ganska oläslig såvida du inte gjorde manuset själv. men dina koder är begripliga xD

    En annan sak du kan göra är att enkelt pinga till de olika IP-adresserna och sedan titta på arp-tabellerna med kommandot arp -a (i vissa fall måste du installera nätverktyg) och mac-adresserna som pingades tror jag att det är det snabbaste lösning.

  3.   daryo sade

    eller ännu bättre
    echo "test"> /dev/tcp/www.google.com/80
    om det ger ett fel stängs porten (80)

  4.   Mario sade

    Hej, kan du implementera SNMP för att kunna identifiera problem som vilken typ av utrustning det är, vilket märke, vilka funktioner det har, det kan också vara svaret på fallet en förändrad eller virtuell MAC; du kan till och med komma till "hantera" om konf. snmp-tjänsten är svag. Bara en åsikt, öppnar utbudet av möjligheter för ditt manus. Mycket bra blogg, jag är glad att jag hittade dem, jag läser dem ofta! kram.

  5.   Frank alexander sade

    Det bash-skriptet är oerhört inspirerande.

  6.   fyrköld sade

    Manuset är väldigt förståeligt och mycket bra, tack, det gav mig bra idéer, hälsningar

  7.   Pegasus online sade

    Det skulle vara jättebra om du lägger det på GITHUB, så vi skulle alla samarbeta där.

    Tack för att du delar!
    hälsningar

  8.   Luciano Lagassa sade

    Hej, ditt bash-skript är väldigt bra, för min del rekommenderar jag att du för att förbättra säkerheten kan implementera en autentiseringsmetod, till exempel wisps, för att förhindra att obehöriga eller utvisade användare kommer in. det finns mycket programvara de kan använda.

  9.   djägare sade

    När du spoofar en mac vad du gör är att skicka den falska macen i paket (lager 2 OSI), kan du inte upptäcka den verkliga om inte angriparens nätverkskort återställs.

  10.   alexander seijas sade

    Jag är intresserad av ditt manus ... ja, jag har letat efter en lite mer komplex eller kanske enkel ...

    saken är att jag har ett stort nätverk med 250 maskiner och det finns Wi-Fi-poäng men de köper samma tomt ...

    Du kommer att veta hur jag skulle kunna göra en mac jämför med en ip och att den tidigare skulle deklareras, så när det finns en rolig person som ändrar ip, ha en varning om att ip och mac inte matchar.

    Jag hoppas att jag har förklarat mig själv ....

    Trots att jag har tittat överallt kan jag inte hitta någonting om det ....

  11.   Hotmail sade

    Tack för att du delar skriptet, jag måste göra några ändringar i det men i grund och botten är det det jag letade efter, igen uppskattat. Skål

  12.   Isidoro sade

    Precis vad jag letade efter, för jag behöver mitt hallon för att upptäcka när min telefon ansluter till wifi för att köra en annan bash.
    tack så mycket