mark2 Posted March 30, 2016 Share Posted March 30, 2016 Hi All, i am going to get the interface name of the connection that is connected in my PC. tried using stdoutread but have no idea how to get the value. #include <Constants.au3> Global $DOS, $Message $DOS = Run(@ComSpec & " /c netsh interface show interface", "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD) ProcessWaitClose($DOS) $Message = StdoutRead($DOS) ;have no idea for how to get the value of the connected connection ? MsgBox(0, "", $Message) appreciate for the help. thanks. Link to comment Share on other sites More sharing options...
UEZ Posted March 30, 2016 Share Posted March 30, 2016 Try something like this: #include <Array.au3> #include <Constants.au3> Global $sDOS $iPID = Run(@ComSpec & " /c netsh interface show interface", "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD) While 1 $sDOS &= StdoutRead($iPID) ; Read the Stdout stream of the PID returned by Run. If @error Then ; Exit the loop if the process closes or StdoutRead returns an error. ExitLoop EndIf WEnd ConsoleWrite($sDOS & @CRLF) $aFilter = StringRegExp($sDOS, "(?m).+\hConnected.+\h+\h+(.*)\s", 3) _ArrayDisplay($aFilter, "Interface Name", "", 0, Default, "Interface Name") Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ Link to comment Share on other sites More sharing options...
mark2 Posted March 30, 2016 Author Share Posted March 30, 2016 Hi UEZ, please try to see my script below. what i am trying to do is set my arp as a static automatically after detect an different mac address between the first and second file. tried to use manual interface first for testing but also didnt work for set it to be static. could you please help to solve it (with an automatic interface name instead of manual)? thanks alot expandcollapse popup#RequireAdmin #include <Constants.au3> Local $CompIP = @IPAddress1 Local $Gateway = DefaultGateway($CompIP) Global $file,$file2,$time, $TheCommand Global $interface="Wi-Fi" ;manual interface ;------------------------------------------------------------------------------------------ $concheck = DllCall("WinInet.dll","int","InternetGetConnectedState","int_ptr",0,"int",0) If $concheck[0] Then $comand=" /c arp " $comand=$comand&$Gateway&" -g>D:\ORIGINAL.txt" $cmd = Run(@Comspec & $comand, "", @SW_HIDE) $comand=" /c arp " $comand=$comand&$Gateway&" -g>D:\UPDATE.txt" ;------------------------------------------------------------------------------------------ DO $cmd = Run(@Comspec & $comand, "", @SW_HIDE) ;------------------------------------------------------------------------------------------ sleep ($time) $file=FileOpen("D:\Update.txt",0) $first=FileReadLine($file, 4) $first=StringTrimRight($first,15) $first=StringTrimLeft($first,24) $file=FileClose("D:\Update.txt") $file2=FileOpen("D:\ORIGINAL.txt",0) $second=FileReadLine($file2, 4) $second=StringTrimRight($second,15) $second=StringTrimLeft($second,24) $file2=FileClose("D:\ORIGINAL.txt") if $first=$second Then $time=5000 Else MsgBox(0,"DETECTION", "YOUR MAC ADDRESS WAS CHANGED, TRYING TO RESOLVING") $TheComand= "netsh -c ""interface ipv4"" set neighbors " &$interface&" "" "&$Gateway&" "" """&$first&"""" RunWait($TheCommand, "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD) EndIf local $exit=0 until $exit=1 Else MsgBox(0,"","you are not connected") RunWait($concheck[0]) EndIf ;------------------------------------------------------------------------------------------ ;------------------------------------------------------------------------------------------ Func DefaultGateway($a) Local $vObjWMI = ObjGet("winmgmts:\\"&$a&"\root\cimv2") $vObjItems = $vObjWMI.ExecQuery('SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True') If IsObj($vObjItems) Then For $vObjItem In $vObjItems For $i = 0 To UBound($vObjItem.IPAddress) - 1 If $vObjItem.IPAddress($i) == @IPAddress1 Then Return SetError(0, 0, $vObjItem.DefaultIPGateway($i)) EndIf Next Next EndIf Return SetError(1, 0, "") EndFunc ;------------------------------------------------------------------------------------------ Link to comment Share on other sites More sharing options...
UEZ Posted March 30, 2016 Share Posted March 30, 2016 Can you provide Update.txt / ORIGINAL.txt and explain which differences you are looking for. I'm not familiar with the netsh command and I don't want to misconfigure my settings. Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ Link to comment Share on other sites More sharing options...
mark2 Posted March 30, 2016 Author Share Posted March 30, 2016 as attached. the different which i looking for is the mac address of the router. this is for arp spoofing needed so i am trying to set the arp as static after the mac address stated in Update.txt different with the original.txt. ORIGINAL.txt UPDATE.txt Link to comment Share on other sites More sharing options...
mark2 Posted March 30, 2016 Author Share Posted March 30, 2016 i mean anti arp spoofing needed Link to comment Share on other sites More sharing options...
mark2 Posted March 31, 2016 Author Share Posted March 31, 2016 hi, i have modified my script and now it is work using manual interface name. now the problem is how to get the interface name automatically so my script will work as expected expandcollapse popup#RequireAdmin Local $CompIP = @IPAddress1 Local $Gateway = DefaultGateway($CompIP) Global $file, $file2, $time Global $interface="Wi-Fi" ;------------------------------------------------------------------------------------------ $concheck = DllCall("WinInet.dll","int","InternetGetConnectedState","int_ptr",0,"int",0) If $concheck[0] Then $comand=" /c arp " $comand=$comand&$Gateway&" -g>D:\ORIGINAL.txt" $cmd = Run(@Comspec & $comand, "", @SW_HIDE) $comand=" /c arp " $comand=$comand&$Gateway&" -g>D:\UPDATE.txt" ;------------------------------------------------------------------------------------------ DO $cmd = Run(@Comspec & $comand, "", @SW_HIDE) ;------------------------------------------------------------------------------------------ sleep ($time) $file=FileOpen("D:\Update.txt",0) $first=FileReadLine($file, 4) $first=StringTrimRight($first,15) $first=StringTrimLeft($first,24) $file=FileClose("D:\Update.txt") $file2=FileOpen("D:\ORIGINAL.txt",0) $second=FileReadLine($file2, 4) $second=StringTrimRight($second,15) $second=StringTrimLeft($second,24) $file2=FileClose("D:\ORIGINAL.txt") if $first=$second Then $time=5000 Else MsgBox(0,"DETECTION", "YOUR MAC ADDRESS WAS CHANGED, TRYING TO RESOLVING") $comand=" /c netsh -c ""interface ipv4"" set neighbors "&$interface&" "&$Gateway&" "&$second&" " $cmd = Run(@Comspec & $comand, "", @SW_HIDE) sleep(5000) EndIf local $exit=0 until $exit=1 Else MsgBox(0,"","you are not connected") RunWait($concheck[0]) EndIf ;------------------------------------------------------------------------------------------ ;------------------------------------------------------------------------------------------ Func DefaultGateway($a) Local $vObjWMI = ObjGet("winmgmts:\\"&$a&"\root\cimv2") $vObjItems = $vObjWMI.ExecQuery('SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True') If IsObj($vObjItems) Then For $vObjItem In $vObjItems For $i = 0 To UBound($vObjItem.IPAddress) - 1 If $vObjItem.IPAddress($i) == @IPAddress1 Then Return SetError(0, 0, $vObjItem.DefaultIPGateway($i)) EndIf Next Next EndIf Return SetError(1, 0, "") EndFunc ;------------------------------------------------------------------------------------------ Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now