Scanner NetBios

5 respostas
programaçãojava
M

E ai galera blz, tenho um dispositivo(Monitor ambiental) ligado a minha rede através de IP dinâmico, e para me conectar a ele, preciso inserir o IP manualmente, portanto, queria um algoritmo que fizesse uma busca na rede com NetBios do dispositivo por parâmetro. E se encontrado, capturar o IP, mascara e fazer uma conexão automática !! Alguém pode me ajudar Pfv ??

5 Respostas

V

A rede é sua…é de empresa…como é a estrutura dessa rede? Existem maneiras de se fazer isso, porém elas podem fazer muito barulho na sua rede e atrapalhar no monitoramento de vulnerabilidades.

M

Opa boa tarde Villagram, então a rede é de uma empresa pequena, tem um servidor para a base de dados e no máximo 30 dispositivos ligados a ela !! Eu andei pesquisando e cheguei a conclusão que esse método abordado antes não vai funcionar, pois o dispositivo não possui HostName, e sim NetBios. Então preciso fazer uma busca para encontrar o nome NetBios do dispositivo. A biblioteca JCIFS tem bastante recursos para isso, só que ainda não consegui obter sucesso. Se puder me ajudar eu agradeço mt, vlw !!

V

Boa tarde amigo.

Tudo bem então, vou montar um algoritimo com netbios aqui e posto assim que terminar. Você sabe qual a identificação do dispositivo na rede ou o mac andress?

M

Identificação NetBios eu sei, O mac não !! Cara agradeço mt a ajuda, obrigado por enquanto !!

G

Boa noite @MatheusLemes
Para achar o DHCP (nome NetBIOS) das máquinas na LAN não é necessário nenhuma biblioteca adicional, deixo aqui um script para procurar até 100 nomes e ip’s internos na rede.

Este programa só vai entregar os nomes e ip’s na intranet, para lidar com os protocolos NetBIOS (smb, etc…) é necessário bastante trabalho com socket tcp, dai a preferencia ser a biblioteca jcifs, mas para listar os dispositivos, este programa é suficiente, adapte ao seu gosto.

public class Main
{
private static byte[] INTRANET_ADDRESS = {(byte) 192, (byte) 168, 1, 0};
private static final byte ADDRESS_RANGE = 100;

private static final String LINE_SEPARATOR;

static{
	LINE_SEPARATOR = System.lineSeparator();
}

private List<InetAddress> reachableAddresses;

public Main(){
	
	reachableAddresses = new ArrayList<InetAddress>();
	
	executeNetworkSearch();
}

private void executeNetworkSearch(){
	new Thread(new Runnable(){
		@Override
		public void run(){
			try{
				long startTime = System.currentTimeMillis();
				
				System.out.println("Searching local network..." + LINE_SEPARATOR);

				for(byte i = 2; i <= ADDRESS_RANGE; i++){
					INTRANET_ADDRESS[3] = i;
					InetAddress addr = InetAddress.getByAddress(INTRANET_ADDRESS);

					if(!addr.isReachable(100))continue;

					reachableAddresses.add(addr);
					
					System.out.println("DHCP: " + addr.getHostName());
					System.out.println("Local IP: " + addr.getHostAddress() + LINE_SEPARATOR);
				}

				System.out.println("Finish searching!" + LINE_SEPARATOR);
				
				System.out.printf("Found %d reachable intranet adresses!", reachableAddresses.size());
				System.out.println();
				
				long finishTime = System.currentTimeMillis();
				long timeSpan = (finishTime - startTime) / 1000;
				
				System.out.printf("Take %d seconds to search the intranet!", timeSpan);
				System.out.println();

			}catch(UnknownHostException e){
				//TODO: Handle Exceptions
			}catch(IOException e){
				//TODO: Handle Exceptions
			}
		}
	}).start();
}
}

public static void main(String[] args)
{
	new Main();
}
}
Criado 19 de janeiro de 2019
Ultima resposta 26 de fev. de 2020
Respostas 5
Participantes 3