Bienvenido a Linux Party
Inicio | Foros | Envía Tu Historia | Tu Cuenta | Tienda | Topics | Descargas | Hemeroteca | Juegos | Blogs/Opinión | Faq | Top
Linux Party: Noticias para usted, temas que le interesan.: Foros

Linux-Party.com :: Ver tema - Código Fuente: neped.c
 FAQFAQ   BuscarBuscar   Grupos de UsuariosGrupos de Usuarios   PerfilPerfil   Entre para ver sus mensajes privadosEntre para ver sus mensajes privados   LoginLogin 

Código Fuente: neped.c

 
Este foro está cerrado y no puede publicar, responder o editar temas   Este tema está cerrado y no puede editar mensajes o responder    Foros de discusión -> Red - NAT
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Eggun



Registrado: Nov 22, 2005
Mensajes: 126

MensajePublicado: Vie Nov 03, 2006 8:10 pm    Asunto: Código Fuente: neped.c Responder citando

El código fuente es este:

Código:

/* -----------------------------------------
     Network Promiscuous Ethernet Detector.
      Linux 2.0.x / 2.1.x, libc5 & GlibC
   -----------------------------------------
         (c) 1998 savage@apostols.org
   -----------------------------------------
   Scan your subnet, and detect promiscuous
   linuxes. It really works, not a joke.
   ----------------------------------------- */
   
/*
 * $Id: neped.c,v 1.4 1998/07/20 22:31:52 savage Exp $
 */
 
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <malloc.h>
#include <ctype.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netinet/tcp.h>
#include <net/if.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <time.h>

#define ETH_P_ARP    0x0806
#define MAX_PACK_LEN    2000
#define ETHER_HEADER_LEN 14
#define ARPREQUEST    1
#define ARPREPLY    2
#define perr(s) fprintf(stderr,s)

struct arp_struct
  {
    u_char  dst_mac[6];
    u_char  src_mac[6];
    u_short pkt_type;
    u_short hw_type;
    u_short pro_type;
    u_char  hw_len;
    u_char  pro_len;
    u_short arp_op;
    u_char  sender_eth[6];
    u_char  sender_ip[4];
    u_char  target_eth[6];
    u_char  target_ip[4];
  };

union
  {
    u_char full_packet[MAX_PACK_LEN];
    struct arp_struct arp_pkt;
  }
a;

#define full_packet a.full_packet
#define arp_pkt a.arp_pkt

char *
inetaddr ( u_int32_t ip )
{
  struct in_addr in;
  in.s_addr = ip;
  return inet_ntoa(in);
}

char *
hwaddr (u_char * s)
{
  static char buf[30];
  sprintf (buf, "%02X:%02X:%02X:%02X:%02X:%02X", s[0], s[1], s[2], s[3], s[4], s[5]);
  return buf;
}

void
main (int argc, char **argv)
{
  int rec;
  int len, from_len, rsflags;
  struct ifreq if_data;
  struct sockaddr from;
  u_int8_t myMAC[6];
  u_int32_t myIP, myNETMASK, myBROADCAST, ip, dip, sip;

  if (getuid () != 0)
    {
      perr ("You must be root to run this program!\n");
      exit (0);
    }

  if (argc != 2)
    {
      fprintf(stderr,"Usage: %s eth0\n", argv[0]);
      exit (0);
    }

  if ((rec = socket (AF_INET, SOCK_PACKET, htons (ETH_P_ARP))) < 0)
    {
      perror("socket");
      exit (0);
    }

  printf ("----------------------------------------------------------\n");
  strcpy (if_data.ifr_name, argv[1]);
  if (ioctl (rec, SIOCGIFHWADDR, &if_data) < 0) {
    perr ("can't get HW addres of my interface!\n");
    exit(1);
  }
  memcpy (myMAC, if_data.ifr_hwaddr.sa_data, 6);
  printf ("> My HW Addr: %s\n", hwaddr (myMAC));

  if (ioctl (rec, SIOCGIFADDR, &if_data) < 0) {
    perr ("can't get IP addres of my interface!\n");
    exit(1);
  }
  memcpy ((void *) &ip, (void *) &if_data.ifr_addr.sa_data + 2, 4);
  myIP = ntohl (ip);
  printf ("> My IP Addr: %s\n", inetaddr(ip));

  if (ioctl (rec, SIOCGIFNETMASK, &if_data) < 0)
    perr ("can't get NETMASK addres of my interface!\n");
  memcpy ((void *) &ip, (void *) &if_data.ifr_netmask.sa_data + 2, 4);
  myNETMASK = ntohl (ip);
  printf ("> My NETMASK: %s\n", inetaddr(ip));

  if (ioctl (rec, SIOCGIFBRDADDR, &if_data) < 0)
    perr ("can't get BROADCAST addres of my interface!\n");
  memcpy ((void *) &ip, (void *) &if_data.ifr_broadaddr.sa_data + 2, 4);
  myBROADCAST = ntohl (ip);
  printf ("> My BROADCAST: %s\n", inetaddr(ip));

  if ((rsflags = fcntl (rec, F_GETFL)) == -1)
    {
      perror ("fcntl F_GETFL");
      exit (1);
    }

  if (fcntl (rec, F_SETFL, rsflags | O_NONBLOCK) == -1)
    {
      perror ("fcntl F_SETFL");
      exit (1);
    }

 
  printf ("----------------------------------------------------------\n");
  printf ("> Scanning ....\n");
  for (dip = (myIP & myNETMASK) + 1; dip < myBROADCAST; dip++)
    {
      bzero(full_packet, MAX_PACK_LEN);

      memcpy (arp_pkt.dst_mac, "\0\6\146\3\23\67", 6); /* 00:06:66:03:13:37 :) */
      memcpy (arp_pkt.src_mac, myMAC, 6);
      arp_pkt.pkt_type = htons( ETH_P_ARP );
      arp_pkt.hw_type = htons( 0x0001 );
      arp_pkt.hw_len = 6;
      arp_pkt.pro_type = htons( 0x0800 );
      arp_pkt.pro_len = 4;
      arp_pkt.arp_op = htons (ARPREQUEST);
      memcpy (arp_pkt.sender_eth, myMAC, 6);
      ip = htonl (myIP);
      memcpy (arp_pkt.sender_ip, &ip, 4);
      memcpy (arp_pkt.target_eth, "\0\0\0\0\0\0", 6);
      ip = htonl (dip);
      memcpy (arp_pkt.target_ip, &ip, 4);

      strcpy(from.sa_data, argv[1]);
      from.sa_family = 1;
         
      if( sendto (rec, full_packet, sizeof (struct arp_struct), 0, &from, sizeof(from)) < 0)
     perror ("sendto");

      usleep (50);      

      len = recvfrom (rec, full_packet, MAX_PACK_LEN, 0, &from, &from_len);
      if (len <= ETHER_HEADER_LEN)
   continue;

      memcpy (&ip, arp_pkt.target_ip, 4);
      memcpy (&sip, arp_pkt.sender_ip, 4);

      if (ntohs (arp_pkt.arp_op) == ARPREPLY
     && ntohl (ip) == myIP
     && ( dip - ntohl(sip) >= 0 )
     && ( dip - ntohl(sip) <= 2 ) )
   {
     printf ("*> Host %s, %s **** Promiscuous mode detected !!!\n",
        inetaddr (sip),
        hwaddr (arp_pkt.sender_eth));
   }

    }

  printf ("> End.\n");

  exit (0);
}


Bueno, no hace falta decir como se compila pero por si acaso...

gcc neped.c -o neped

El Post, está relacionado con el artículo:
Detección de Sniffers, buscando modos promiscuos.
http://www.linux-party.com/modules.php?name=News&file=article&sid=1082
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mostrar mensajes de anteriores:   
Este foro está cerrado y no puede publicar, responder o editar temas   Este tema está cerrado y no puede editar mensajes o responder    Foros de discusión -> Red - NAT Todas las horas son GMT + 7 Horas
Página 1 de 1

 
Cambiar a:  
Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro

Partners Gold.

La Tienda de Linux Party.



En Línea
Actualmente hay 85 invitados, 0 miembro(s) conectado(s).

Eres un usuario anónimo. Puedes registrarte aquí

Encuesta
Será "lo 3D" algo...

Pasajero
Insano
Fracasable
Exitoso
Mejorable
Que no compraré



Resultados
Encuestas

votos: 6
Comentarios: 0

Login
Nickname

Contraseña

Código de Seguridad:
Código de Seguridad
Teclea Código de Seguridad

¿Todavía no tienes una cuenta? Puedes crearte una. Como usuario registrado tendrás ventajas como seleccionar la apariencia de la página, configurar los comentarios y enviar los comentarios con tu nombre.

Historias Pasadas
Jueves, 02 septiembre
· Tendremos que buscar Inteligencia Artificial (IA) no Aliens.
· ¿Por qué los hombres no pueden hacer dos cosas a la vez?
· ISPConfig 3/Debian Multiserver instalación en un servidor dedicado Web/correo el
· Microsoft patenta el apagado del Sistema Operativo (Shutdown)
· IBM presenta el procesador más rápido jamás creado.
· Apple anuncia nuevos iPods, iTunes 10, Red Social y AppleTV
Miércoles, 01 septiembre
· LinApp, aplicaciones comerciales para linux
· Descubierto un hermano del sistema Solar, con siete planetas.
· La tele, el medio de comunicación entre los mafiosos
· ¿El inminente fin de las tarifas planas?

Artículos Viejos

TopBlock
· 1: Cómo configurar la tarjeta de Red Inalámbrica ( WiFi ) en Linux. - (83575 Lecturas)
· 2: Manual para hackear una red wifi - (69098 Lecturas)
· 3: Cómo configurar el Modem USB o Tarjeta GPRS / 3G para Linux. - (59969 Lecturas)
· 4: 40 cosas que probablemente no sepas sobre Linux - (45875 Lecturas)
· 5: Exportar Bases de Datos de Access (MDB) a MySQL - (43061 Lecturas)
· 6: Cómo bloquear fotos e imágenes porno con SafeSquid, servidor proxy - (42289 Lecturas)
· 7: Cambiar la Hora y la Fecha al sistema Linux - (40697 Lecturas)
· 8: No encuentro la página de los cojones - (35202 Lecturas)
· 9: Sexo, Violencia, y Tensión en los Juegos. - (32229 Lecturas)
· 10: Lara Croft Desnuda! - (28695 Lecturas)
· 11: Programar y depurar en un IDE para PHP, plugin phpeclipse, xdebug y Remote debug - (26804 Lecturas)
· 12: Activar Compiz Fusion en Ubuntu 8.10 Desktop (NVIDIA GeForce FX 5200) - (25439 Lecturas)
· 13: Redireccionar puertos ( iptables / ipchains / proxy / squid ) - (23829 Lecturas)
· 14: Conexión Linux GPRS/EDGE via bluetooth, Cómo. - (23104 Lecturas)
· 15: Descargar videos de YouTube y Google video con Firefox - (23024 Lecturas)
· 16: Las chicas virtuales más guapas - (20877 Lecturas)

Usarios, Info
nada Bienvenido, Un Partydario
Nickname
Contraseña
(Regístrate)
nada Membresía:
nada Último: Guidononexero
nada Nuevos Hoy: 0
nada Nuevos Ayer: 8
nada Total: 2641

nada Gente en línea:
nada Visitantes: 85
nada Miembros: 0
nada Total: 85

Tutorial de Linux


Rastrillo.
Rastrillo

Últimos Comentarios.
· Re: Tres copas al día te mantendrá alejado del Médico
· Re: La Barra de Alexa en Firefox
· Re: La Vida Silvestre desafía la radiación de Chernóbil
· Re: 50 herramientas gratuitas para blogueros y escritores
· Re: El día que decidí, no migrar a Windows. (por ser muy dificil de usar)
· Re: El día que decidí, no migrar a Windows. (por ser muy dificil de usar)
· Re: ¿Los empleados prefieren jefes o jefas?

[ Más en la Sección de Noticias ]

Foros

 Foros LinuxParty temporalmente cerrados hasta solucionr spam
 ¿Cual distribucion de linux me recomiendan?
 Algo parecido al Inno setup pero para linux
 ¿alguien sabe de ejemplos de lazarus algun link?
 Grave problema / Error en la Indexación de Google.
 LinuxParty, pronto liberará su distro: LPVD versión 1.0
 Mensajes Midi en Gambas
 pantalla completa gambas
 necesito ayuda gracias
 Como puedo leer archivos XLS desde gambas

Linux Party: Noticias para usted, temas que le interesan. Forums


LinuxParty: Noticias de Linux, software libre y tecnología.
Todos los logos y marcas son propiedad de sus respectivos dueños.
Los comentarios son propiedad de sus posters
Licencia Creative Commons

Puedes incluir nuestras noticias incluyendo nuestros ficheros: backend.php o ultramode.txt


Página Generada en: 0.97 Segundos
Todos los logos y marcas corresponden a sus respectivos dueños, los comentarios son propiedad de quienes los enviaron
Inicio | Foros | Contacto | Publicidad | Enviar Historia | Tu Cuenta | Docs | Tu tienda.