Investigando sobre la detección de equipos en una red local

Me encuentro actualmente investigando sobre cómo detectar los equipos (sus direcciones MAC, concretamente) que estén en una misma red de área local (LAN). Mi objetivo es ofrecer una alternativa al Radar Bluetooth, ya que el bluetooth no funciona como yo esperaba, siendo éste muy inestable. La herramienta que estoy investigando es NMap, la cual obtiene las direcciones IP de los equipos, a partir de las cuales espero poder obtener sus direcciones MAC.

Anuncios

7 Responses to Investigando sobre la detección de equipos en una red local

  1. penyaskito dice:

    Se me ocurre que hagas una consulta a la tabla arp de la maquina (‘arp -a’) o que le eches un ojo a avahi.

  2. jajcarmona dice:

    Ahmm, muy buena idea. Vamos a dar ARP en Comunicaciones 2, así que me viene muy bien. Lo que ya no sé es si la caché ARP siempre tendrá la información que necesito, pero iré haciendo pruebas igualmente. Le echaré un vistazo a Avahi, que no lo conocía.

    ¡Muchas gracias, Christian!.
    Un abrazo.

  3. :O !!! Carmona please, no reinventes la rueda. Avahi está justamente para eso. Permíeteme:

    Avahi es un servicio de micro-dns distribuido. Es una implementación de ZeroConf (no se si conoces Bonjour en entornos MAC) para GNU/Linux cuyo principal desarrollador es el maestro de maestros Lennart Poettering.

    Avahi te permite que un equipo publique una serie de servicios en la red local y que terceros puedan descubrirlos y aprender a cómo hacer uso de ellos. Tu tienes instalado avahi en tus máquinas y ni siquiera lo sabes 🙂

    Te recomiento dos cosas:
    * Instala avahi-discover y trastea un rato: verás la cantidad de información de servicios que publican todas tus máquinas por avahi, entre ellas el servicio de descubrimiento de máquinas (el dominio .local), o el servicio daap

    * Si quieres una implementación sobre la que inspirarte puedes echar un vistazo a CommieCC, una aplicación que desarrollé como control de puestos de un aula informática. En lugar de un modelo cliente/servidor donde los clientes necesiten saber la IP del servidor para poder ser controlados, gracias a avahi construí un modelo donde los clientes publican un servicio de control y la aplicación de control detecta cuántos puestos publican dicho servicio de control.

    http://launchpad.net/commiecc

    Si quieres que hackeemos con avahi un día no tienes más que decirmelo.

  4. jajcarmona dice:

    Uhmm, interesante. Yo la verdad es que mucha idea sobre redes no tengo. Le voy a echar un vistazo, lo que pasa es que los equipos de la red a ser detectados deberían ser casi cualquier tipo de equipo: PC con Linux, PC con Windows, teléfonos móviles… cualquiera que esté conectado por Wifi o cable a la red local, y con lo que dices, necesitarían tener instalado Avahi, ¿no?

    De momento lo tengo ya hecho con NMap y ARP, aunque quizás sea muy basto.

    ¡Muchas gracias!

  5. ¡Vaya! Estaba seguro que se trataría solo para que el equipo que corre el servidor pudiera detectar los radares en la red local. En ese caso puedes ajustar avahi como dependencia de la aplicación radar.

    Si ya se trata de detectar todos los equipos en la red hay que meterse a más bajo nivel. Para esto alguna vez he usado python-scapy:

    http://www.secdev.org/projects/scapy/

    Scapy es una suite de manipulación de paquetes de red. Mucho más potente que símplemente para obtener los hosts en tu red local. Así pues, puestos a matar moscas a cañonazos no veo diferencia entre emplear nmap4python o scapy.

    Apuesto que un scanneo de hosts en red local se puede hacer sin con la librería standar de python, pero ahí ya no sabría cómo. Desde luego sería lo más indicado en pro de no incluir grandes dependencias para hacer un par de operaciones.

    A ver si me instalo la última versión de predesys y hackeo un poco.

    Congrats Carmona!

    • jajcarmona dice:

      Muchas gracias por la información. 🙂

      En el caso de Predesys, son cada uno de los “radares” los que deben detectar los equipos de la red (cada radar estaría en una red distinta) y las direcciones MAC las mandarían al Servidor central.

      Lo que he hecho es con python-nmap (un wrapper a NMap) detectar qué equipos (parece) que están en pie (supongo que lo hará por pings) haciendo intentos de conexión en un rango definido de IPs.

      Cuando ya tengo las IPs, consulto la caché ARP (archivo “/proc/net/arp”) para ver qué MAC tiene cada IP. ARP sólo guarda los pares IP/MAC de aquellos PCs con los que haya tenido actividad/tráfico, pero con python-nmap ya me he asegurado algo de actividad, por lo que tengo seguro que en la caché están todos los PCs.

      Como dependencias, sólo serían python-nmap y la propia nmap.

      Este nuevo “radar” lo tengo en el repositorio SVN pero aun no lo he probado ni empaquetado, pero tiene todo el código que le hace falta (en teoría), por si lo quieres mirar.

      Si tienes dudas sobre cómo instalarlo (en el blog tengo instrucciones pero tiene muchos pasos y entiendo que sea complicado) no dudes en decírmelo. 🙂

      ¡Muchas gracias por la colaboración!

    • jajcarmona dice:

      De todas formas, le echaré un vistazo a Avahi, que me la nombró también Christian, y por lo que dices parece interesante lo de publicar servicios.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: