Get IP from MAC address. arp -a not showing device

后端 未结 4 1660
不知归路
不知归路 2021-02-04 06:47

I\'m trying to write a batch file that\'s supposed to find the dynamically assigned IP of my Android phone when it\'s connected to the network (Tenda WiFi router).

So I

相关标签:
4条回答
  • 2021-02-04 07:02

    This Batch Code will fetch the below,

    1. PC Name
    2. IP Address
    3. MAC Address
    4. Computer Description(If Available)

    Please save the below code in anyname.bat format and run it. It will output the results in a separate text file.

        :: This Windows Batch(CMD) File fetches All the Details of the Nearby PC's of Same VLAN (Upto 254 host's).
        :: Windows OS (CMD)
        :: Author : [M.S.Arun][1]
    
        :: #****************************************************************** Start of Script ********************************************************************#
    
        @echo off
        title Remote PC Details Fetching Script(PC Name / IP's / Computer Description)
        echo. > %cd%\PC_Details_Temp.txt
        echo Remote PC Details Fetching Script (PC Name / IP's / Computer Description) details of the Nearby PC's of Same VLAN.(Upto 254 Hosts)
        echo.
        set /p input_ip="Please Enter the IP Range(Eg:192.168.1) :  " && echo
        set /p input_ip_start="Please Enter Start IP Range(Eg:1) :  " && echo
        set /p input_ip_end="Please Enter End IP Range(Eg:254) :  " && echo
        echo. >> %cd%\PC_Details_Temp.txt
        @echo on
        for /l %%i in (%input_ip_start%, 1, %input_ip_end%) do nbtstat -a %input_ip%.%%i | findstr /c:"MAC" /c:"<00>" | findstr /c:"MAC" /c:"UNIQUE" >> %cd%\PC_Details_Temp.txt && echo     IP Address  = %input_ip%.%%i >> %cd%\PC_Details_Temp.txt
        @echo off
        echo. > %cd%\PC_Details_Logs.txt
        echo. > %cd%\PC_Details_Logs.txt
        echo This Batch Script fetches All the Details of the Nearby PC's of Same VLAN.(Starting from 1 to 254 host's) >> %cd%\PC_Details_Logs.txt
        echo. >> %cd%\PC_Details_Logs.txt
        echo. >> %cd%\PC_Details_Logs.txt
        echo PC Host Name: >> %cd%\PC_Details_Logs.txt
        find "UNIQUE" PC_Details_Temp.txt >> %cd%\PC_Details_Logs.txt
        echo. >> %cd%\PC_Details_Logs.txt
        echo PC IP Address: >> %cd%\PC_Details_Logs.txt
        find "IP" PC_Details_Temp.txt >> %cd%\PC_Details_Logs.txt
        echo. >> %cd%\PC_Details_Logs.txt
        echo PC MAC Address: >> %cd%\PC_Details_Logs.txt
        find "MAC" PC_Details_Temp.txt >> %cd%\PC_Details_Logs.txt
        echo. >> %cd%\PC_Details_Logs.txt
        echo PC Seat No's. and Vnet No's: >> %cd%\PC_Details_Logs.txt
        echo. >> %cd%\PC_Details_Logs.txt
        echo. >> %cd%\PC_Details_Logs.txt
        net view /all >> %cd%\PC_Details_Logs.txt
        echo. >> %cd%\PC_Details_Logs.txt
        echo. >> %cd%\PC_Details_Logs.txt
        arp -a >> %cd%\PC_Details_Logs.txt
        :: del %cd%\PC_Details_Temp.txt
        echo.
        echo Completed Successfully..!
        echo.
        pause
    
        :: #****************************************************************** End of Script ********************************************************************#
    

    Screenshots For References,

    0 讨论(0)
  • 2021-02-04 07:03

    M.S.Arun's answer is close to the best. I had this problem for retrieveing some virtual machines IP address for which all I had was the MAC address. A lot of answers like M.S.Aruns's all over stackoverflow and elsewhere, but nobody explains them, nor explains the solution correctly (IMHO).

    I tried the technique of pinging all subnet and then do an arp command. The problem was my IP range had 60k+ possible IP address and after scanning all of them (which was not so simple, and really ugly with the start command) the arp table was really poorly populated... Btw it was taking like 30 secs, even while trying with "start ping". I eventually figured out that the arp, being a cache table, flushes itself periodically, which is why this method rarely succeeded.

    The solution is to ping all subnet, but after each ping perform an arp command to see if the IP matches your MAC address, which ensures you not to loose information because of the cache nature of the arp tables. To make it proper, I implemented this in Java; the isReachable() method is really cleaner and there are no cmd prompts spawning everywhere on my screen. Moreover, the 60k+ range of IPs scanning takes up to 10sec using Java threads. I think it's a more secure way than batch scripting...

    See threadedScan() method here which takes in an array of IPs and looks for the MAC address.

    Hope this can help ;)

    0 讨论(0)
  • 2021-02-04 07:06

    I have tried this and it works:

    for /L %N in (1,1,254) do start /b ping -n 1 -w 200 192.168.0.%N
    

    provided the phone has ICMP enabled, you should have no problem.

    0 讨论(0)
  • 2021-02-04 07:13

    If you want find IP from MAC do this

    $  arp -n | grep -w -i 'YOUR-MAC' | awk '{print $1}'
    

    Note you must replace YOUR-MAC, with your mac address, keep single quotes

    Now, if you want find MAC Address from some IP Try this:

    $  arp -n | grep -w -i 'YOUR-IP' | awk '{print $3}'
    

    Enjoy!

    0 讨论(0)
提交回复
热议问题