Получить уникальный идентификатор клиента от пользователей на моем WiFi

287
Sicko

Я написал командный файл, чтобы определить, подключен ли новый клиент к моему локальному WiFi. Весь пакетный файл работает отлично.

Скрипт обнаруживает новые подключенные клиенты WiFi и показывает их IP-адрес и MAC.

Дело в том, что я хочу обнаружить поддельные MAC-адреса или идентифицировать клиентов уникальным способом, чтобы я мог сам определять поддельные или нет, сравнивая их с предыдущими соединениями.

Погуглил кучу, но все, что я получаю, это программное обеспечение; Мне нужен какой-то способ сделать это в командном файле.

Кто-нибудь знает, с чего начать?

Вот сценарий: (игнорировать комментарии :: они в голландском)

@echo off color E0 Title VerbondenIP vindenmet ARP -a set wifi= if exist ArpedIPs.txt del ArpedIPs.txt if exist connectedIPs.txt del connectedIPs.txt if exist eerste3.txt del eerste3.txt if exist Eigen_IP.txt del Eigen_IP.txt if exist FilteredArpedIPs.txt del FilteredArpedIPs.txt if exist FilteredArpedIPs1.txt del FilteredArpedIPs1.txt if exist FilteredArpedIPs2.txt del FilteredArpedIPs2.txt if exist newIPs.txt del newIPs.txt if exist newVerbondenmet.txt del newVerbondenmet.txt if exist previousconnectedIPs.txt del previousconnectedIPs.txt if exist previousVerbondenmet.txt del previousVerbondenmet.txt if exist Verbondenmet.txt type nul > "Verbondenmet.txt" :: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX :: eerst arp tabel flushen: echo flushen van arptabel... netsh interface ip delete arpcache :: echo arp tabel geflushed :: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX :begin :: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX :: kijk met welke wifi verbonden is... @echo off @Netsh wlan show interface | for /F "tokens=2 delims=: " %%A in ('findstr /r "^....SSID"') do ( @set wifi=%%A @type nul > "Verbondenmet.txt" @echo %%A>> "Verbondenmet.txt" ) @set /p wifi=<"Verbondenmet.txt" echo Verbondenmet:%wifi% :: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX :: Check of wifi-netwerk veranderd is:  if not exist previousVerbondenmet.txt goto same @FC previousVerbondenmet.txt Verbondenmet.txt @if %errorlevel% == 0 ( @goto same ) @findstr /vxg:previousVerbondenmet.txt Verbondenmet.txt > newVerbondenmet.txt @echo (Dit was op %date% om %time% uur) >> newIPs.txt :same @type "Verbondenmet.txt" > "previousVerbondenmet.txt"  :: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX :: Checken of verbonden met internet: :: echo checken of er internet beschikbaar is... SET Connected=false FOR /F "usebackq tokens=1" %%A IN (`PING google.com`) DO ( IF /I "%%A"=="Reply" SET Connected=true ) IF "%Connected%"=="true" ( goto Internet  ) ELSE ( goto Geeninternet ) :Internet echo Internet beschikbaar goto sub1  :Geeninternet echo Internet niet beschikbaar :sub1 :: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX :: Echo eigen IP bepalen... for /f "tokens=2 delims=:" %%a in ( 'ipconfig ^| find "IP" ^| find "Address" ^| find /v "v6"') do ( set IPAddr=%%a echo %%a > "Eigen_IP.txt" goto ipbepaald ) :ipbepaald set /p EigenIP=<"Eigen_IP.txt" echo Eigen IP is:%EigenIP% : XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX :: kijk eerste3... setlocal enabledelayedexpansion for /f "tokens=1-3 delims=. " %%a in ("%EigenIP%") do ( echo %%a.%%b.%%c > "eerste3.txt" ) set /p eerste3=<"eerste3.txt" :: spatie die erachter staat verwijderen: set eerste3=%eerste3:~0,-1% :: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX :: Na wachttijd van 5 seconden, lokaal wifi-netwerk aanpingen van .1 tot .254 om alles in Arp tabel te krijgen:  @TIMEOUT /T 5 /NOBREAK if "%ip%"=="" ( echo Pingen van alle IP's in lokaak netwerk (dat begint met %eerste3%) for /L %%N in (1,1,254) do ( start /b ping -n 1 -w 200 %eerste3%.%%N >nul echo Ping naar %eerste3%.%%N ) timeout 1 >nul ) @echo off :: echo Lokaal Wifi-netwerk gepingd. :: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX :: Echo Arp-tabel opvragen... if exist "ArpedIPs.txt" type nul > "ArpedIPs.txt" for /F "tokens=1,2,3" %%d in ('Arp -a') do echo %%d %%e %%f >> "ArpedIPs.txt" :: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX :: Regels die GEEN " %eerste3%" bevatten verwijderen, resultaat schrijven naar "FilteredArpedIPs.txt": findstr "%eerste3%" ArpedIPs.txt > FilteredArpedIPs.txt :: 1e regel verwijderen: More +1 "FilteredArpedIPs.txt" > "FilteredArpedIPs1.txt" :: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX :: %eerste3%.255 verwijderen: findstr /v " %subnet%.255" FilteredArpedIPs1.txt > FilteredArpedIPs2.txt :: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX type nul > connectedIPs.txt for /F "tokens=1,2,3 delims= " %%a in (FilteredArpedIPs2.txt) do ( @echo %%a %%b %%c @echo IP-adres:%%a Type verbinding: %%c MAC-adres: %%b wifinetwerk: %wifi% >> connectedIPs.txt  @echo off ) :: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX :: Bepaal 1e loop of niet: if not exist previousconnectedIPs.txt goto eersteloop :: echo bestaat :: echo vergelijken... :: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX :: check of previousconnectedIPs groter is of connectedIPs:  :: bepaal grootte van "previousconnectedIPs.txt: for %%I in (previousconnectedIPs.txt) do ( :: echo %%~zI echo %%~zI > pCIPs set pCIPs=%%~ZI ) set /p pCIPs=<pCIPs :: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  :: bepaal grootte van "connectedIPs.txt: for %%J in (connectedIPs.txt) do ( :: echo %%~zJ echo %%~zJ > CIPs set CIPs=%%~ZJ ) set /p CIPs=<CIPs :: echo grootte previousconnectedIPs.txt is: %pCIPs% :: echo grootte connectedIPs.txt is: %CIPs% :: Als PReviousconnectedIPs groter is, dan naar weggegaan, anders naar bijgekomen: if %pCIPs% GTR %CIPs% ( set eerstegrotertweede=1 ) else ( set eerstegrotertweede=0 ) if %eerstegrotertweede% == 1 ( goto weggegaan ) else ( goto bijgekomen ) :: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX :bijgekomen @FC previousconnectedIPs.txt connectedIPs.txt if %errorlevel% == 0 ( goto wrote ) :: Bij verschil, dit verschil wegschrijven naar "newIPs.txt"  findstr /vxg:previousconnectedIPs.txt connectedIPs.txt >> newIPs.txt echo (Deze is erbij gekomen op %date% om %time% uur) >> newIPs.txt :: echo vergeleken goto wrote :weggegaan @FC connectedIPs.txt previousconnectedIPs.txt if %errorlevel% == 0 ( goto wrote ) :: Bij verschil, dit verschil wegschrijven naar "newIPs.txt"  findstr /vxg:connectedIPs.txt previousconnectedIPs.txt >> newIPs.txt echo (Deze is weggegaan op %date% om %time% uur) >> newIPs.txt :: echo vergeleken goto wrote  :eersteloop type connectedIPs.txt > newIPs.txt echo (Dit was op %date% om %time% uur) >> newIPs.txt :wrote :: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX type connectedIPs.txt > previousconnectedIPs.txt :einde :: echo klaar, nogmaals? :: pause goto begin 
0
Если MAC подделан клиентом, сеть WiFi не будет знать, что это такое (иначе подмена не будет работать). Ƭᴇcʜιᴇ007 7 лет назад 2
Хорошо, да так. Есть ли способ идентифицировать клиента, какой-то уникальный способ, чтобы я мог изолировать его сам? Sicko 7 лет назад 0

0 ответов на вопрос

Похожие вопросы