Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: Enemy en 14 Julio 2021, 13:11 pm



Título: Algoritmo para escanear direcciones IP en una red local
Publicado por: Enemy en 14 Julio 2021, 13:11 pm
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?


Título: Re: Algoritmo para escanear direcciones IP en una red local
Publicado por: 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


Título: Re: Algoritmo para escanear direcciones IP en una red local
Publicado por: Enemy en 14 Julio 2021, 18:39 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.


Título: Re: Algoritmo para escanear direcciones IP en una red local
Publicado por: engel lex en 14 Julio 2021, 19:02 pm
Citar
para 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


Título: Re: Algoritmo para escanear direcciones IP en una red local
Publicado por: fzp en 14 Julio 2021, 19:15 pm
Código
  1. for /l %i in (1,1,254) do ping -w 50 -n 1 192.168.1.%i

Código
  1. arp -a


Título: Re: Algoritmo para escanear direcciones IP en una red local
Publicado por: Enemy en 14 Julio 2021, 19:27 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.



Título: Re: Algoritmo para escanear direcciones IP en una red local
Publicado por: Enemy en 14 Julio 2021, 19:45 pm
Código
  1. for /l %i in (1,1,254) do ping -w 50 -n 1 192.168.1.%i

Código
  1. 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.


Título: Re: Algoritmo para escanear direcciones IP en una red local
Publicado por: el-brujo en 15 Julio 2021, 17:20 pm
Un programa super-sencillo y muy conocido que hace exactamente lo que comentas es:

(https://www.nirsoft.net/utils/wnetwatcher.gif)

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


Título: Re: Algoritmo para escanear direcciones IP en una red local
Publicado por: Enemy en 15 Julio 2021, 21:52 pm
Un programa super-sencillo y muy conocido que hace exactamente lo que comentas es:

(https://www.nirsoft.net/utils/wnetwatcher.gif)

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.


Título: Re: Algoritmo para escanear direcciones IP en una red local
Publicado por: Danielㅤ en 15 Julio 2021, 22:27 pm
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


Título: Re: Algoritmo para escanear direcciones IP en una red local
Publicado por: WHK en 15 Julio 2021, 22:48 pm
Citar
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

Eso te lo debería decir el firewall de tu red, bocas conectadas, panel del switch, etc. Que vas a hacer si hay un equipo que tiene deshabilitado los paquetes icmp y no le puedas hacer un ping?

Para eso existen soluciones corporativas de visibilidad de red, no te recomiendo que fabriques una aplicación productiva para una empresa si no estas 100% seguro de lo que estás haciendo.

Saludos.


Título: Re: Algoritmo para escanear direcciones IP en una red local
Publicado por: Enemy en 15 Julio 2021, 23:08 pm
Eso te lo debería decir el firewall de tu red, bocas conectadas, panel del switch, etc. Que vas a hacer si hay un equipo que tiene deshabilitado los paquetes icmp y no le puedas hacer un ping?

Para eso existen soluciones corporativas de visibilidad de red, no te recomiendo que fabriques una aplicación productiva para una empresa si no estas 100% seguro de lo que estás haciendo.

Saludos.

No sera de conexion directa, sino inversa. Nada deberia bloquear las peticiones ni los datos, conque 1 de las maquinas lleve instalado el escaner y envie el resultado de la latencia, seria suficiente, que logre recuperar nombre de equipo, S.O, arquitectura y demas, seria un plus.  De todas formas yo tengo acceso de forma fisica a los dispositivos, ya que trabajo en el sector tecnico de la empresa. La herramienta seria solo para mi y mi compañero, nadie mas.



Título: Re: Algoritmo para escanear direcciones IP en una red local
Publicado por: WHK en 15 Julio 2021, 23:35 pm
Citar
No sera de conexion directa, sino inversa. Nada deberia bloquear las peticiones ni los datos, conque 1 de las maquinas lleve instalado el escaner y envie el resultado de la latencia, seria suficiente

Para eso existe el protocolo de red SNMP ( https://es.wikipedia.org/wiki/Protocolo_simple_de_administraci%C3%B3n_de_red ), donde a través de credenciales válidas tus equipos pueden obtener visibilidad entre ellos, por ejemplo, nombre de la máquina, servicios (puertos), nombres, interfaces de red, velocidad de uso, disponibilidad del equipo, etc.

Imagina el esenario en que alguien no autorizado dentro de la red comience a hacer un escaneo con nmap, si tu ya lo estás haciendo de manera manual ¿cómo podrías saber si es un equipo válido o un atacante?, ¿cómo podrás hacer inteligencia de datos a traves de un correlacionador de eventos si tu mismo le estas pasando un escaneador desde tus mismos equipos?, no sabrás el dia de mañana si te están atacando, metiendo un ransomware, robando tus bases de datso o si realmente eres tu.

Para redes productivas y mas aun en empresas, te recomiendo mejor utilizar los mecanismos de red ya existentes en ves de programar algo propio que ve a saber si quedará perfecto a la primera o tendrá problemas de seguridad en el camino.


Título: Re: Algoritmo para escanear direcciones IP en una red local
Publicado por: Danielㅤ en 15 Julio 2021, 23:41 pm
El compañero WHK no te lo dice por si vos vas a poner a disposición tu herramienta para que toda la empresa la use, sinó que te lo está diciendo a modo de prevención, porque un error que tenga tu aplicación puede poner en riesgo la red entera, por la información que puedas manejar desde tu herramienta y los métodos que vas a usar, por eso te lo dijo.


Saludos


Título: Re: Algoritmo para escanear direcciones IP en una red local
Publicado por: WHK en 15 Julio 2021, 23:44 pm
Claro, cualquiera es libre de crear sus herramientas, el tema está en cuando lo quieres utilizar en un ambiente productivo.


Título: Re: Algoritmo para escanear direcciones IP en una red local
Publicado por: Enemy en 16 Julio 2021, 12:59 pm
Para eso existe el protocolo de red SNMP ( https://es.wikipedia.org/wiki/Protocolo_simple_de_administraci%C3%B3n_de_red ), donde a través de credenciales válidas tus equipos pueden obtener visibilidad entre ellos, por ejemplo, nombre de la máquina, servicios (puertos), nombres, interfaces de red, velocidad de uso, disponibilidad del equipo, etc.

Imagina el esenario en que alguien no autorizado dentro de la red comience a hacer un escaneo con nmap, si tu ya lo estás haciendo de manera manual ¿cómo podrías saber si es un equipo válido o un atacante?, ¿cómo podrás hacer inteligencia de datos a traves de un correlacionador de eventos si tu mismo le estas pasando un escaneador desde tus mismos equipos?, no sabrás el dia de mañana si te están atacando, metiendo un ransomware, robando tus bases de datso o si realmente eres tu.

Para redes productivas y mas aun en empresas, te recomiendo mejor utilizar los mecanismos de red ya existentes en ves de programar algo propio que ve a saber si quedará perfecto a la primera o tendrá problemas de seguridad en el camino.

Es muy cierto lo que decis.

El tema es que no es la misma red, tienen un isp aparte, redes apartes, y muchas otras las (las de fibra) las miramos por whatsup Gold.

Queria, de alguna forma, monitorear el estado de esas redes a las cual no podemos hacerlo con whatsup Gold, de manera remota. Es como si fuera una version simple, pobre y casera de whatsup gold.

Es posible hacerse con C#, usando el protocolo SNMP?

Tendrian a disposicion algun enlace o libro para desarrollar algo simple como lo que les comento?

pd: Gracias, sus comentarios son de mucha ayuda.


Título: Re: Algoritmo para escanear direcciones IP en una red local
Publicado por: BloodSharp en 16 Julio 2021, 13:30 pm
Les comento, quiero desarrollar una herramienta de escaneo de direcciones IP en una red pero no se que lenguaje usar o que api.

Eso ya existe, unite al lado oscuro de la terminal en Linux y juntos dominaremos la galaxia con netdiscover (https://manpages.debian.org/unstable/netdiscover/netdiscover.8.en.html) / código fuente acá (https://github.com/netdiscover-scanner/netdiscover).

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?

Creo que la librería scapy de python debería servirte, pero en caso contrario deberías también poder descargar el código fuente del programa netdiscover y analizarlo...


Título: Re: Algoritmo para escanear direcciones IP en una red local
Publicado por: Enemy en 16 Julio 2021, 19:44 pm
Eso ya existe, unite al lado oscuro de la terminal en Linux y juntos dominaremos la galaxia con netdiscover (https://manpages.debian.org/unstable/netdiscover/netdiscover.8.en.html) / código fuente acá (https://github.com/netdiscover-scanner/netdiscover).

Creo que la librería scapy de python debería servirte, pero en caso contrario deberías también poder descargar el código fuente del programa netdiscover y analizarlo...

jajajaja, te agradezco pero no, yo paso con linux.

Y python no se nada, tampoco esta buena la idea de hacer copy paste del codigo sin poder mejorar o añadir, justamente por no saber nada.
Siempre preferi los programas bien graficos jaja por eso lo empezé en C#.

Me parece que el camino es por ahí, ya estoy investigando sobre C# y SNMP.

Alguna recomendacion mas? Todo me sirve.