Сетевые технологии. Баканов В.М. - 6 стр.

UptoLike

Составители: 

- 6 -
#include <unistd.h>
#include <signal.h>
#include <stdio.h>
static volatile int done;
void
handler(int signum)
{
done = 1;
} /* конец HANDLER */
int
main(int argc, char **argv)
{
char buff[0x10000];
struct ifreq ifr;
int s, n;
if (argc < 2)
{
fprintf(stderr, "Usage: %s <interface>\n", argv[0]);
return 1;
}
s = socket(PF_INET, SOCK_PACKET, htons(0x0003));
if (s == -1)
{
perror("socket");
return 1;
}
strcpy(ifr.ifr_name, argv[1]);
if (ioctl(s, SIOCGIFFLAGS, &ifr) < 0)
{
perror("ioctl(SIOCGIFFLAGS)");
return 1;
}
/**********************************************************************************************/
ifr.ifr_flags |= IFF_PROMISC; /* установка режима перехвата */
/* ВСЕХ пакетов, поступающих */
/* на сетевую карту */
if (ioctl(s, SIOCSIFFLAGS, &ifr) < 0)
{
perror("ioctl(SIOCGIFFLAGS)");
return 1;
}
signal(SIGINT, handler);
puts("starting capturing:\n");
#include 
#include 
#include 

static volatile int done;

void
handler(int signum)
{
 done = 1;
} /* конец HANDLER */

int
main(int argc, char **argv)
{
 char buff[0x10000];
 struct ifreq ifr;
 int s, n;
 if (argc < 2)
  {
    fprintf(stderr, "Usage: %s \n", argv[0]);
    return 1;
  }
 s = socket(PF_INET, SOCK_PACKET, htons(0x0003));
 if (s == -1)
 {
   perror("socket");
   return 1;
 }
 strcpy(ifr.ifr_name, argv[1]);
 if (ioctl(s, SIOCGIFFLAGS, &ifr) < 0)
 {
   perror("ioctl(SIOCGIFFLAGS)");
   return 1;
 }
/**********************************************************************************************/
 ifr.ifr_flags |= IFF_PROMISC; /* установка режима перехвата */
                                    /* ВСЕХ пакетов, поступающих */
                                    /* на сетевую карту */
 if (ioctl(s, SIOCSIFFLAGS, &ifr) < 0)
 {
   perror("ioctl(SIOCGIFFLAGS)");
   return 1;
 }
 signal(SIGINT, handler);
 puts("starting capturing:\n");


                                                -6-