Algoritmo para escanear direcciones IP en una red local

Iniciado por Enemy, 14 Julio 2021, 13:11 PM

0 Miembros y 3 Visitantes están viendo este tema.

Enemy

Buen dia.

Les comento, quiero desarrollar una herramienta de escaneo de direcciones IP en una red pero no se que lenguaje usar o que api. Los lenguajes que conozco son Java(android), javascript, C#, vb6.

Preferiria hacerlo en vb6 por cuestiones de comodidad. Pero si no se puede, lo hago en otro lenguaje.

Algo lei de python y este tipo de trabajo pero no conozco python, aunque ya vi el algoritmo que utiliza para el escaneo. Alguna recomendacion?

engel lex

VB6? sabes que eso fue descontinuado hace 20 años verdad?  :rolleyes: en tal caso .net

para hacer un escaneo lo que necesitas es acceso a socket o si no tienes suficiente experiancia con el protocolo tcp/ip y manejo de paquetes icmp, entonces que el programa tenga acceso a ejecutar comando y usar la herramienta ping

sobre el agoritmo es simple un ciclo y vas probando ip por ip... ya dependerá de la dirección base, y mascara de red cual sea tu alcance, siempre es buena idea aquí usar multihilo para consultar multiples en simultaneo
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Enemy

Cita de: engel lex en 14 Julio 2021, 14:59 PM
VB6? sabes que eso fue descontinuado hace 20 años verdad?  :rolleyes: en tal caso .net

para hacer un escaneo lo que necesitas es acceso a socket o si no tienes suficiente experiancia con el protocolo tcp/ip y manejo de paquetes icmp, entonces que el programa tenga acceso a ejecutar comando y usar la herramienta ping

sobre el agoritmo es simple un ciclo y vas probando ip por ip... ya dependerá de la dirección base, y mascara de red cual sea tu alcance, siempre es buena idea aquí usar multihilo para consultar multiples en simultaneo

Si, pero aun tengo herramientas simples que siguen funcionando sobre win10.

Si, era algo asi el algoritmo de escaneo, el tema es que no sabia si habian comandos de consola para pingear un rango establecido de direcciones ip o si habia que usar alguna api del sistema.

Se puede conseguir los resultados con un simple batch o necesito desarrollar algo mas complejo? En ese caso, que lenguaje recomendas?

pd: En cuanto a exp con sockets, algo tengo, justamente en vb6 y winsock. Podrias explicar un poco mas?

Gracias.

engel lex

Citarpara pingear un rango establecido de direcciones ip o si habia que usar alguna api del sistema.

si quieres un programa que ya lo haga revisa nmap que es para consola de comandos y está muy bien diseñadp y optimizado (tambien tienes zenmap que es nmap + una interfaz grafica)

sobre si quieres desarrollarlo, el lenguaje, el que más te guste excepto javascript (a menos que sea con node)

sobre la herramienta, lo más simple sería llamar a ping y leer la salida, lee las opciones que tiene disponible ese comando, tambien vas a necesitar usar multihilo (multithreading) porque ping normalmente tiene una diración minima de 1 segundo, entonces un simple rango /24 te va a durar un minimo de 4 minutos, haciendo multihilo puedes ir por lote, por ejemplo de 16 en 16, tomaría 16 segundos en terminar
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

fzp

Código (bash) [Seleccionar]
for /l %i in (1,1,254) do ping -w 50 -n 1 192.168.1.%i

Código (bash) [Seleccionar]
arp -a

Enemy

Cita de: engel lex en 14 Julio 2021, 19:02 PM
si quieres un programa que ya lo haga revisa nmap que es para consola de comandos y está muy bien diseñadp y optimizado (tambien tienes zenmap que es nmap + una interfaz grafica)

sobre si quieres desarrollarlo, el lenguaje, el que más te guste excepto javascript (a menos que sea con node)

sobre la herramienta, lo más simple sería llamar a ping y leer la salida, lee las opciones que tiene disponible ese comando, tambien vas a necesitar usar multihilo (multithreading) porque ping normalmente tiene una diración minima de 1 segundo, entonces un simple rango /24 te va a durar un minimo de 4 minutos, haciendo multihilo puedes ir por lote, por ejemplo de 16 en 16, tomaría 16 segundos en terminar

No, no quiero usar un programa ajeno, quiero hacerlo yo y es para la red de mi trabajo, la idea es monitorear el estado actual de los dispositivos de esa red, de cualquier sector al que se le deje el script o server instalado en al menos 1 de las maquinas, de manera remota, es decir, poder ver desde un cliente, en otra red, la latencia, nombre de equipo y demas datos que se puedan recuperar.

Recuerdo, hace tiempo, haber hecho una herramienta que devolvia en "ms" la latencia de un servidor, habia usado una api, pero no recuerdo cual. Tendria que revisar un poco.

Volviendo al tema:

for /L %z in (1,1,254) do @ping 10.0.0.%z -w 10 -n 1 | find "Reply"

Encontré este comando en batch para pingear un rango de direcciones, lo idea seria que devuelva la latencia, no si responde o no. Bah, aunque no es tan importante ver cuanto tienen de lantecia cada equipo de la red pero, quedaria mas prolijo y preciso. Aunque demandaria tener que estar pingeando de manera constante.

pd: Hay manera de recuperar los distintos tipos de resultados que devuelva? es decir, tiempo agotado, inaccesible, etc.


Enemy

Cita de: fzp en 14 Julio 2021, 19:15 PM
Código (bash) [Seleccionar]
for /l %i in (1,1,254) do ping -w 50 -n 1 192.168.1.%i

Código (bash) [Seleccionar]
arp -a


claro, practicamente lo mismo. El tema es recuperar el resultado y verlos desde una maquina remota, que de eso luego veo como hago.

Tengo pensado conectarme de manera inversa.

el-brujo

Un programa super-sencillo y muy conocido que hace exactamente lo que comentas es:



Wireless Network Watcher v2.25
https://www.nirsoft.net/utils/wireless_network_watcher.html

Enemy

#8
Cita de: el-brujo en 15 Julio 2021, 17:20 PM
Un programa super-sencillo y muy conocido que hace exactamente lo que comentas es:



Wireless Network Watcher v2.25
https://www.nirsoft.net/utils/wireless_network_watcher.html

Hola Brujo, es un placer que te pases por mi post.

Si, el programa se ve bastante similar a lo que intento desarrollar, pero lo haré bastante mas grafico y esos mismos datos que se ven en WNW, recibirlos a mi computadora (ajena a la red, debido a que estoy en otro sector)

La cuestion se dio porque usamos WhatsUp Gold, pero no tenemos todas las redes conectadas por fibra y hay sectores apartes repartidos por toda la ciudad pero que pertenecen a la misma empresa. Por eso quiero, de manera remota, poder captar esos datos, para mantener monitoreada la red. Su estado actual mas que nada.

Entonces, es una manera de saber si, (cuando nos llaman por algun problema de conectividad), el problema es una pc, el router, el switch o el servicio.

Solo eso, ver de manera grafica, el estado actual de los equipos (Apagado, Sin conexion a internet, en linea) con colores, verde, rojo, etc. Y de paso, tener esos datos extras que le darian un toque de precision al programa.

Volvi a instalar Visual Studio 17 para empezar en C# o VB.

Se que es algo simple y probablemente existan herramientas iguales a esta y mejores incluso. Pero quiero ser yo quien la desarrolle a gusto mio.

pd: El tema ahora es como capturar esos datos desde la CMD y recibirlos via ftp, sino tendria que empezar a leer como hacerlo desde esos 2 lenguajes mencionados.

Danielㅤ

Hola, eso es fácil obtener los datos una respuesta a un comando en CMD, simplemente tenés que guardar la salida en una variable string o en un archivo de texto y listo usando stdout.
Podes usar una función del sistema para ejecutar el comando necesario y volcar/guardar sus datos sobre una variable tipo string.


Saludos
¡Regresando como cual Fenix! ~
Bomber Code © 2021 https://www.bombercode.net/foro/

Ayudas - Aportes - Tutoriales - Y mucho mas!!!