Obtenha interface de rede ativa no Windows

6

Estou desenvolvendo um aplicativo que fornece uma interface do usuário para o windump, o sniffer de pacotes. O Windump possui um parâmetro "-D" que lista todas as interfaces de rede que ele pode encontrar e, em seguida, você pode especificar em qual interface deseja ouvir.

No entanto, eu gostaria de evitar forçar o usuário a configurar manualmente a interface para ouvir. No Unix, posso obter a interface de rede correta (en0, en1, etc.) por meio de uma chamada para ifconfig e alguma análise da saída, mas não consigo localizar qualquer API ou comando equivalente do Windows que possa gerar informações semelhantes— ipconfig não parece obter esses dados.

Alguém pode sugerir uma ferramenta de linha de comando do Windows ou uma API que possa ser chamada via VBScript para obter esses dados, para que eu não precise apresentar ao usuário uma caixa de diálogo na GUI, informando-os para selecionar a interface correta. ?

    
por Kevin Walzer 18.11.2011 / 03:34

4 respostas

6

Este comando fornecerá uma lista de interfaces, com o status conectado ou desconectado:

c:\>netsh interface show interface

Admin State    State          Type             Interface Name
-------------------------------------------------------------------------
Enabled        Connected      Dedicated        Local Area Connection
    
por 18.11.2011 / 05:01
3

você pode verificar mais informações sobre a conexão usando ipconfig /all . existem outros utilitários disponíveis como netsh e netstat para outros fins.

Sevocêestáprocurandoumaperspectivadecodificação,deveprocuraralgumcódigodeAPIdoWindowsapartirdoqualpossacriarsuaprópriaAPIqueoajudaráaobterinformaçõessobreosistemaoperacionalWindows.VocêpodeusarowindowsapioualgumaAPIcriadanele.líquido.. aqui é mais informação sobre estes; se você é capaz de programar para isso ..

aqui está um trecho de código para obter todas as informações sobre a rede. verifique esses links. pode ser que eles possam ser incluídos no vbscript. link1 link2 link3 < href="http://msdn.microsoft.com/pt-br/library/windows/desktop/aa384642%28v=VS.85%29.aspx"> link4

espero que isso ajude você ...

    
por 18.11.2011 / 09:26
0

Isso parece resolver o problema:

link

É um script VBS que consulta a interface de rede ativa e a converte em um formato adequado para passar ao windup.exe como um parâmetro.

    
por 18.11.2011 / 17:02
0

Você não precisa criar uma nova API. Use a classe WMI do VBScript.

link

De longe, a melhor maneira de fazer isso é não enumerar os NICs primeiro. Em vez disso, analise a tabela de roteamento. É o mesmo mecanismo que o computador usa para decidir para onde encaminhar pacotes à Internet, o que eu suponho ser seu objetivo principal.

Um exemplo

Set Host = "."  
Set WMI = GetObject("winmgmts:\" & Host & "\root\CIMV2")
Set intIndex = WMI.ExecQuery("SELECT InterfaceIndex FROM Win32_IP4RouteTable WHERE Destination='0.0.0.0'")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter WHERE InterfaceIndex= " & intIndex) 

Isso retornará quaisquer adaptadores no topo da tabela de roteamento.

    
por 18.11.2011 / 10:24