Francisco
Aca usando un poco de una pagina que te indica cual es el fabricante del dispositivo, tal vez te sirva un poco mas
#include "FiveWin.ch"
FUNCTION Main()
LOCAL oWnd, oBrw, aData, cOutput
// Ejecuta el comando ARP para obtener la tabla ARP
memowrit( 'ips.bat', "arp -a > ips.txt" )
WaitRun( 'ips.bat' , 0 )
cOutput := MemoRead(".\ips.txt")
aData := hb_ATokens(cOutput, chr(10))
ADEL(aData,1)
ADEL(aData,1)
ADEL(aData,1)
aData := Separar(aData)
aData := Verifica(aData)
xbrowse(aData)
RETURN NIL
STATIC FUNCTION Separar(aData)
LOCAL aData1 := {}, aData2 := {}, cText, i, j := 1
FOR i := 1 TO LEN(aData)
cText := aData[i]
if !empty(cText)
AADD(aData1,{ALLTRIM(LEFT(cText,17)),ALLTRIM(SUBSTR(cText,18,25)),ALLTRIM(RIGHT(cText,12))})
endif
NEXT i
FOR i := 1 TO LEN(aData1)
IF( aData1[i,1] > '192' .OR. aData1[i,2] = 'ff-ff-ff-ff-ff-ff')
LOOP
ENDIF
AADD(aData2,{aData1[i,1],aData1[i,2],aData1[i,3],'https://aruljohn.com/mac/'+STRTRAN(aData1[i,2],'-','')})
NEXT i
RETURN aData2
STATIC FUNCTION Verifica(aData)
LOCAL cText, i , cResult
FOR i := 1 TO LEN(aData)
cText := WebPageContents(ALLTRIM(aData[i,4]))
cResult := SUBSTR(cText,At('<tr><td>Vendor</td><td><span id="vdr14999879">',cText)+46,200 )
cResult := LEFT(cResult,At('</span>',cResult)-1)
aData[i,4] := cResult
NEXT i
RETURN aData
Esta medio poco eficiente el codigo, pero en mi caso me funciono con los dispostivos que tengo conectados en casa

Es muy parecido a lo que me da el producto IP Scanner

Creo que lo que no me da es mi PC, porque hago el ipconfig y yo tengo la ip que falta
El lunes puedo probar en el trabajo a ver que me tira
Espero que al menos te de una punta
Saludos