IP, Mac Address, Name desde mi modem

Re: IP, Mac Address, Name desde mi modem

Postby FranciscoA » Sun Jun 23, 2024 1:34 am

Gracias Cesar.
Hasta ahi habia llegado:

Code: Select all  Expand view
#include "FiveWin.ch"

FUNCTION Main()    //Probando()
  local aDispConect := {}, cDir := TrueName(".\")
  local cTexto, n, nLineas, cLinea, cIP, cMac, cNombre, cIpInterfaz

  WAITRUN( "
cmd.exe /c  arp -a > " +cDir+ "\ARP.txt" , .f.)
  WaitRun("
Notepad.exe " +cDir+ "\ARP.txt")

  cTexto  := MEMOREAD(cDir + "
\ARP.txt")
  nLineas := MLCOUNT(cTexto)

  //Agreg dispositivo desde donde se corre el programa. El .txt solo presenta la IP
  cLinea      := MEMOLINE(cTexto,255,2)  //en linea 2 esta la ip del equipo desde donde se corre
  cIpInterfaz := SUBSTR(cLinea,11,12)
  cNombre     := NETNAME()

  AAdd( aDispConect, { cIpInterfaz, "
cMac?", cNombre } )
  //Fin Agreg dispositivo desde donde se corre el programa

  For n := 4 To nLineas      //En lin 4 del .txt comienzan las ip y mac
     cLinea  := MEMOLINE(cTexto,255,n)
     cIP     := SUBSTR(cLinea,3,20)
     cMac    := SUBSTR(cLinea,25,21)  
     cNombre := GetHostByAddress(AllTrim(cIP))  //Obtiene nombre a partir de la IP  

     if Substr(AllTrim(cIP),1,9) == Substr(AllTrim(cIpInterfaz),1,9) .and. AllTrim(cMac) <> "
ff-ff-ff-ff-ff-ff"
        AAdd( aDispConect, { cIP, cMac, cNombre } )
     endif
  Next

  SysRefresh()

  XBROWSER aDispConect TITLE "
Dispositivos Conectados" ;
     SETUP ( oBrw:cHeaders := {"
IP", "MAC", "DISPOSITIVO"} )

 RETURN NIL

Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2132
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: IP, Mac Address, Name desde mi modem

Postby cmsoft » Sun Jun 23, 2024 2:34 am

Francisco:
Tu codigo es más claro y eficiente.
Lo otro te sirve?
User avatar
cmsoft
 
Posts: 1235
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: IP, Mac Address, Name desde mi modem

Postby FranciscoA » Sun Jun 23, 2024 3:30 am

Cesar, por supuesto que me es util.

Como puedes ver, falta obtener los nombres. No sé porqué -> cNombre := GetHostByAddress(AllTrim(cIP)) , aunque lo use entre las func WsaStartUp() y WsaCleanUp()

Continuaré buscando.

Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2132
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: IP, Mac Address, Name desde mi modem

Postby cmsoft » Sun Jun 23, 2024 9:56 am

Francisco:
Acá me muestra los nombres de los que son PC (de los otros, al igual que IP Scanner) me muestra la ip porque no son computadoras
Image
Este es el código
Code: Select all  Expand view
#include "FiveWin.ch"

FUNCTION Main()    //Probando()
  local aDispConect := {}, cDir := TrueName(".\")
  local cTexto, n, nLineas, cLinea, cIP, cMac, cNombre, cIpInterfaz, cFabricante

  WAITRUN( "
cmd.exe /c  arp -a > " +cDir+ "\ARP.txt" , .f.)
  //WaitRun("
Notepad.exe " +cDir+ "\ARP.txt")

  cTexto  := MEMOREAD(cDir + "
\ARP.txt")
  nLineas := MLCOUNT(cTexto)

  //Agreg dispositivo desde donde se corre el programa. El .txt solo presenta la IP
  cLinea      := MEMOLINE(cTexto,255,2)  //en linea 2 esta la ip del equipo desde donde se corre
  cIpInterfaz := SUBSTR(cLinea,11,12)
  WsaStartUp()
  cNombre := GetHostName()
  WsaCleanUp()  

  AAdd( aDispConect, { cIpInterfaz, "
cMac?", cNombre,' '} )
  //Fin Agreg dispositivo desde donde se corre el programa

  For n := 4 To nLineas      //En lin 4 del .txt comienzan las ip y mac
     cLinea  := MEMOLINE(cTexto,255,n)
     cIP     := SUBSTR(cLinea,3,20)
     cMac    := SUBSTR(cLinea,25,21)  
     WsaStartUp()
     cNombre := GetHostByAddress(AllTrim(cIP))  //Obtiene nombre a partir de la IP  
     WsaCleanUp()
     cNombre := if(empty(cNombre),AllTrim(cIP),cNombre)      
     cFabricante := Fabricante(AllTrim(STRTRAN(cMac,'-','')))    

     if Substr(AllTrim(cIP),1,9) == Substr(AllTrim(cIpInterfaz),1,9) .and. AllTrim(cMac) <> "
ff-ff-ff-ff-ff-ff"
        AAdd( aDispConect, { cIP, cMac, cNombre ,cFabricante} )
     endif
  Next

  SysRefresh()

  XBROWSER aDispConect TITLE "
Dispositivos Conectados" ;
     SETUP ( oBrw:cHeaders := {"
IP", "MAC", "DISPOSITIVO","FABRICANTE"} )

 RETURN NIL

STATIC FUNCTION Fabricante(cMac)
LOCAL cText, i , cResult
cText := WebPageContents('https://aruljohn.com/mac/'+cMac)
cResult := SUBSTR(cText,At('<tr><td>Vendor</td><td><span id="
vdr14999879">',cText)+46,200 )    
cResult := LEFT(cResult,At('</span>',cResult)-1)
RETURN cResult

Estuve viendo como obtener el mac de mi equipo pero no logro hacerlo
User avatar
cmsoft
 
Posts: 1235
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: IP, Mac Address, Name desde mi modem

Postby FranciscoA » Sun Jun 23, 2024 6:36 pm

César, muy bien!

Como bien dices, solo falta obtener la MAC del equipo anfitrión, y los nombres de los demás dispositivos que no son computadoras.

Continuaremos investigando.

Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2132
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: IP, Mac Address, Name desde mi modem

Postby FranciscoA » Sun Jun 23, 2024 11:13 pm

César, ésta es una posible solución para obtener la MacAddress del equipo Host:

Code: Select all  Expand view
#include "FiveWin.ch"

FUNCTION Main()    //Probando()
  local aDispConect := {}, cDir := TrueName(".\")
  local cTexto, n, nLineas, cLinea, cIP, cMac, cNombre, cIpInterfaz, cFabricante

  WAITRUN( "
cmd.exe /c  arp -a > " +cDir+ "\ARP.txt" , .f.)

  cTexto  := MEMOREAD(cDir + "
\ARP.txt")
  nLineas := MLCOUNT(cTexto)

  //Agreg dispositivo desde donde se corre el programa. El .txt solo presenta la IP
  cLinea      := MEMOLINE(cTexto,255,2)  //en linea 2 esta la ip del equipo desde donde se corre
  cIpInterfaz := SUBSTR(cLinea,11,12)
  WsaStartUp()
  cNombre := GetHostName()
  WsaCleanUp()  

  cMac        := MacAddrHost()
  cFabricante := Fabricante(AllTrim(STRTRAN(cMac,'-','')))  

  AAdd( aDispConect, { cIpInterfaz, cMac, cNombre, cFabricante '} )
  //Fin Agreg dispositivo desde donde se corre el programa

  For n := 4 To nLineas      //En lin 4 del .txt comienzan las ip y mac
     cLinea  := MEMOLINE(cTexto,255,n)
     cIP     := SUBSTR(cLinea,3,20)
     cMac    := SUBSTR(cLinea,25,21)  
     WsaStartUp()
     cNombre := GetHostByAddress(AllTrim(cIP))  //Obtiene nombre a partir de la IP  
     WsaCleanUp()
     cNombre := if(empty(cNombre),AllTrim(cIP),cNombre)      
     cFabricante := Fabricante(AllTrim(STRTRAN(cMac,'-','')))    

     if Substr(AllTrim(cIP),1,9) == Substr(AllTrim(cIpInterfaz),1,9) .and. AllTrim(cMac) <> "
ff-ff-ff-ff-ff-ff"
        AAdd( aDispConect, { cIP, cMac, cNombre ,cFabricante} )
     endif
  Next

  SysRefresh()

  XBROWSER aDispConect TITLE "
Dispositivos Conectados" ;
     SETUP ( oBrw:cHeaders := {"
IP", "MAC", "DISPOSITIVO","FABRICANTE"} )

 RETURN NIL

STATIC FUNCTION Fabricante(cMac)
LOCAL cText, i , cResult
cText := WebPageContents('https://aruljohn.com/mac/'+cMac)
cResult := SUBSTR(cText,At('<tr><td>Vendor</td><td><span id="
vdr14999879">',cText)+46,200 )    
cResult := LEFT(cResult,At('</span>',cResult)-1)
RETURN cResult

//----------------------------------------------//
STATIC function MacAddrHost()
  local cDir := TrueName("
.\"), cMac, nLin, cTexto, aData

  WAITRUN( "
cmd.exe /c  ipconfig /all > " +cDir+ "\McHost.txt" , .f.)
  cTexto := MEMOREAD(cDir + "
\McHost.txt")
  aData  := hb_ATokens(cTexto, chr(10))
  nLin := AScan(aData, "
Adaptador de LAN inal mbrica Wi-Fi:") +4
  cMac := MEMOLINE(cTexto,255,nLin)
  cMac := Alltrim(Substr(cMac,47,20))
  Ferase(cDir+ "
\McHost.txt")

return cMac
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2132
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: IP, Mac Address, Name desde mi modem

Postby FranciscoA » Mon Jun 24, 2024 12:01 am

Solo funciona en redes WiFi... :oops:
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2132
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: IP, Mac Address, Name desde mi modem

Postby FranciscoA » Mon Jun 24, 2024 12:03 am

FranciscoA wrote:Solo funciona en redes WiFi... :oops:

Code: Select all  Expand view
//----------------------------------------------//
STATIC function MacAddrHost()
  local cDir := TrueName(".\"), cMac, nLin, cTexto, aData

  WAITRUN( "
cmd.exe /c  ipconfig /all > " +cDir+ "\McHost.txt" , .f.)
  cTexto := MEMOREAD(cDir + "
\McHost.txt")
  aData  := hb_ATokens(cTexto, chr(10))
  nLin := AScan(aData, "
Adaptador de LAN inal mbrica Wi-Fi:") +4
  cMac := MEMOLINE(cTexto,255,nLin)
  cMac := Alltrim(Substr(cMac,47,20))
  Ferase(cDir+ "
\McHost.txt")

return cMac
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2132
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: IP, Mac Address, Name desde mi modem

Postby cmsoft » Mon Jun 24, 2024 12:25 am

Francisco, ahi creo que lo que obtienes es la mac de la placa de red, pero no del equipo.
Lo había pensado, pero ya no me dirá la marca de la pc, sino de la placa de red.
Estuve intentando algo por el estilo como esto:
Code: Select all  Expand view

oLocator := CreateObject( "WbemScripting.SWbemLocator" )
oWmi := oLocator:ConnectServer()
FOR EACH oBoard IN oWmi:ExecQuery( "SELECT * FROM Win32_ComputerSystemProduct" )
 

Pero sin exito
Tal vez algún conocedor de estas cuestiones nos indiquen como
User avatar
cmsoft
 
Posts: 1235
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: IP, Mac Address, Name desde mi modem

Postby FranciscoA » Mon Jun 24, 2024 12:55 am

César.
De esta manera parece que funciona. Me da las MacAddress iguales a las que aparecen en el administrador del modem.

#
Code: Select all  Expand view
include "FiveWin.ch"

FUNCTION Main()    //Probando()
  local aDispConect := {}, cDir := TrueName(".\")
  local cTexto, n, nLineas, cLinea, cIP, cMac, cNombre, cIpInterfaz, cFabricante

  WAITRUN( "
cmd.exe /c  arp -a > " +cDir+ "\ARP.txt" , .f.)

  cTexto  := MEMOREAD(cDir + "
\ARP.txt")
  nLineas := MLCOUNT(cTexto)

  //Agreg dispositivo desde donde se corre el programa. El .txt solo presenta la IP
  cLinea      := MEMOLINE(cTexto,255,2)  //en linea 2 esta la ip del equipo desde donde se corre
  cIpInterfaz := SUBSTR(cLinea,11,12)
  WsaStartUp()
  cNombre := GetHostName()
  WsaCleanUp()  

  cMac        := MacAddrHost()
  cFabricante := Fabricante(AllTrim(STRTRAN(cMac,'-','')))  

  AAdd( aDispConect, { cIpInterfaz, cMac, cNombre, cFabricante '} )
  //Fin Agreg dispositivo desde donde se corre el programa

  For n := 4 To nLineas      //En lin 4 del .txt comienzan las ip y mac
     cLinea  := MEMOLINE(cTexto,255,n)
     cIP     := SUBSTR(cLinea,3,20)
     cMac    := SUBSTR(cLinea,25,21)  
     WsaStartUp()
     cNombre := GetHostByAddress(AllTrim(cIP))  //Obtiene nombre a partir de la IP  
     WsaCleanUp()
     cNombre := if(empty(cNombre),AllTrim(cIP),cNombre)      
     cFabricante := Fabricante(AllTrim(STRTRAN(cMac,'-','')))    

     if Substr(AllTrim(cIP),1,9) == Substr(AllTrim(cIpInterfaz),1,9) .and. AllTrim(cMac) <> "
ff-ff-ff-ff-ff-ff"
        AAdd( aDispConect, { cIP, cMac, cNombre ,cFabricante} )
     endif
  Next

  SysRefresh()

  XBROWSER aDispConect TITLE "
Dispositivos Conectados" ;
     SETUP ( oBrw:cHeaders := {"
IP", "MAC", "DISPOSITIVO","FABRICANTE"} )

 RETURN NIL

STATIC FUNCTION Fabricante(cMac)
LOCAL cText, i , cResult
cText := WebPageContents('https://aruljohn.com/mac/'+cMac)
cResult := SUBSTR(cText,At('<tr><td>Vendor</td><td><span id="
vdr14999879">',cText)+46,200 )    
cResult := LEFT(cResult,At('</span>',cResult)-1)
RETURN cResult

//----------------------------------------------//
STATIC function MacAddrHost()
  local cDir := TrueName("
.\"), cMac := "", nLin, cTexto, aData

  WAITRUN( "
cmd.exe /c  ipconfig /all > " +cDir+ "\McHost.txt" , .f.)
  WaitRun("
Notepad.exe " +cDir+ "\McHost.txt")

  cTexto := MEMOREAD(cDir + "
\McHost.txt")
  aData  := hb_ATokens(cTexto, chr(10))

  if ( nLin := AScan(aData, "
Adaptador de LAN inal mbrica Wi-Fi:") ) > 0
  else
     nLin := AScan(aData, "
Adaptador de Ethernet Ethernet:")
  endif
  nLin += 4
 
  cMac := MEMOLINE(cTexto,255,nLin)
  cMac := Alltrim(Substr(cMac,47,20))
  Ferase(cDir+ "
\McHost.txt")

return cMac
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2132
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: IP, Mac Address, Name desde mi modem

Postby cmsoft » Mon Jun 24, 2024 1:17 am

Francisco, en mi caso me esta devolviendo el nombre de la placa de red, no la mac.
Image
User avatar
cmsoft
 
Posts: 1235
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: IP, Mac Address, Name desde mi modem

Postby Danielmaximiliano » Thu Jun 27, 2024 2:36 am

cmsoft wrote:Francisco, ahi creo que lo que obtienes es la mac de la placa de red, pero no del equipo.
Lo había pensado, pero ya no me dirá la marca de la pc, sino de la placa de red.
Estuve intentando algo por el estilo como esto:
Code: Select all  Expand view

oLocator := CreateObject( "WbemScripting.SWbemLocator" )
oWmi := oLocator:ConnectServer()
FOR EACH oBoard IN oWmi:ExecQuery( "SELECT * FROM Win32_ComputerSystemProduct" )
 

Pero sin exito
Tal vez algún conocedor de estas cuestiones nos indiquen como


Hola : en HMGforum utilizamos desde el 2015

Code: Select all  Expand view
oLocator := win_oleCreateObject( "wbemScripting.SwbemLocator" )
    oWmi     := oLocator:ConnectServer()


espero les sirva..

Code: Select all  Expand view

oCollection1 := oWMI:ExecQuery( "SELECT * FROM Win32_NetworkAdapter WHERE Manufacturer != 'Microsoft' AND NOT PNPDeviceID LIKE 'ROOT\\%'" )
    oCollection2 := oWMI:ExecQuery( 'SELECT * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE' )
    For Each obj1 In oCollection1
        nTemp := obj1:NetConnectionStatus
        For Each obj2 In oCollection2
            nInd++
            cDescrip := 'Description'+ALLTRIM(STR(nInd))+': '+CHR(9)+SUBSTR( obj2:description, 1, AT( "-", obj2:description ) -2 )+' / '+aNetConnectStat[ nTemp+1 ]+CRLF
            ServiceName := '   ServiceName'+ALLTRIM(STR(nInd))+': '+CHR(9)+obj2:ServiceName(0)+CRLF
            IPAddress   := '   IPAddress'+ALLTRIM(STR(nInd))+': '+CHR(9)+obj2:IPAddress(0)+CRLF
            *DefaultIPGateway := 'DefaultIPGateway: '+obj:DefaultIPGateway(0)       // ERROR !   ????
            MACAddress  := '   MACAddress'+ALLTRIM(STR(nInd))+': '+CHR(9)+obj2:MACAddress(0)
            data6 += cDescrip+ServiceName+IPAddress+MACAddress+CRLF
        Next
    Next
Danielmaximiliano
 
Posts: 22
Joined: Tue Mar 20, 2012 11:06 pm

Re: IP, Mac Address, Name desde mi modem

Postby Antonio Linares » Thu Jun 27, 2024 6:31 am

gracias Daniel! :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41463
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: IP, Mac Address, Name desde mi modem

Postby cmsoft » Thu Jun 27, 2024 11:56 am

Muchas gracias Daniel!!
User avatar
cmsoft
 
Posts: 1235
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: IP, Mac Address, Name desde mi modem

Postby FranciscoA » Fri Jun 28, 2024 3:11 am

Gracias, Daniel.
Efectivamente, de esa manera tambien logramos obtener IP y MAC del equipo.
Lo que me falta es lograr traer los nombres de todos los dispositivos en la red WiFi, ya que únicamente conseguimos los datos de las computadoras.
Last edited by FranciscoA on Sun Jun 30, 2024 4:22 am, edited 2 times in total.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2132
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

PreviousNext

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 146 guests