Código de C/Visual C - FUNCIONES LIBPCAP

Imágen de perfil

FUNCIONES LIBPCAPgráfica de visualizaciones


C/Visual C

Publicado el 15 de Septiembre del 2022 por Hilario (122 códigos)
483 visualizaciones desde el 15 de Septiembre del 2022
/*
-----------------------------------
Ut desint vires, tamen est laudanda voluntas.
-------------------------------------
Funciones_pcap.c
------------------------------------
En este programa se explica el
funcionamiento general de varias funciones
de la librería libpcap.
El programa fue realizado en una plataforma
LINUX Ubuntu 20.04.4 LTS.
Bajo el standard ANSI-C.

Para compilar este programa
utilizar el siquiente comando
bajo una consola Linux, con las
librerías libpcap cargadas
en el sistema operativo.
Compilar:

$ gcc -Wall -Werror -o Funciones_pcap Funciones_pcap.c -lpcap

Para ejecutar el programa:

./Funciones_pcap
------------------------------------
Hilario Iglesias Martínez.
-------------------------------------

*/

Requerimientos

LINUX Ubuntu 20.04.4 LTS.
Bajo el standard ANSI-C.

v.0

Publicado el 15 de Septiembre del 2022gráfica de visualizaciones de la versión: v.0
484 visualizaciones desde el 15 de Septiembre del 2022
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

/*
-----------------------------------
Ut desint vires, tamen est laudanda voluntas.
-------------------------------------
Funciones_pcap.c
------------------------------------
En este programa se explica el
funcionamiento general de varias funciones
de la librería libpcap.
El programa fue realizado en una plataforma
LINUX Ubuntu 20.04.4 LTS.
Bajo el standard ANSI-C.

Para compilar este programa
utilizar el siquiente comando
bajo una consola Linux, con las
librerías libpcap cargadas
en el sistema operativo.
Compilar:

$ gcc -Wall -Werror -o Funciones_pcap Funciones_pcap.c -lpcap

Para ejecutar el programa:

./Funciones_pcap
------------------------------------
Hilario Iglesias Martínez.
-------------------------------------

*/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
/*
-----------------------------------
Ut desint vires, tamen est laudanda voluntas.
-------------------------------------
    Funciones_pcap.c
 ------------------------------------
En este programa se explica el
funcionamiento general de varias funciones
de la librería libpcap.
El programa fue realizado en una plataforma
LINUX Ubuntu 20.04.4 LTS.
Bajo el standard ANSI-C.
Para compilar este programa
utilizar el siquiente comando
bajo una consola Linux, con las
librerías libpcap cargadas
en el sistema operativo.
Compilar:
$ gcc -Wall -Werror -o Funciones_pcap  Funciones_pcap.c -lpcap
Para ejecutar el programa:
./Funciones_pcap
------------------------------------
Hilario Iglesias Martínez.
-------------------------------------
*/
 
#include <stdio.h>
#include <stdlib.h>
#include <pcap.h>
#include <errno.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
 
int main()
{
 
  char *IP; /* notación de punto de la dirección IP de red */
  char *Mascara;/* notación de punto de la dirección de la mascara de red*/
  int Retorno_Look;   /*Retorno del código de la llamada pcap_lookupnet */
  char errbuf[PCAP_ERRBUF_SIZE];/*Bufer para devolver los errores*/
  bpf_u_int32 IP_RAW; /* Valor IP bruta-Kernel */
  bpf_u_int32 Mascara_RAW;/* Mascara de red bruta-kernel */
  struct in_addr Direccion_Addr;/*Asociacion de llamada
                                  a la struct in_addr*/
  pcap_if_t *Dispositivo ;
 
  /*
pcap_if *   next
  si no es NULL, un puntero al siguiente
  elemento de la lista;siendo NULL para
  el último elemento de la lista
  ------
char *  name. un puntero a una cadena
que da un nombre para que el dispositivo pase a pcap_open_live()
  ----------
char *  description
  si no es NULL, un puntero a una cadena
  que proporciona una descripción legible
  por humanos del dispositivo
  -------------
pcap_addr * addresses
  un puntero al primer elemento de una
  lista de direcciones para la interfaz
  -------------
u_int   flags
 Indicadores de interfaz PCAP_IF_. Actualmente,
 el único indicador posible es PCAP_IF_LOOPBACK,
 que se establece si la interfaz es una
 interfaz de bucle invertido.
---------------------
  */
 
  /*
  Estructura Tipo in_addr Direccion_Addr
  -----------------
 situada en: include <netinet/in.h>
struct sockaddr_in {
    short            sin_family;   // e.g. AF_INET
    unsigned short   sin_port;     // e.g. htons(3490)
    struct in_addr   sin_addr;     // see struct in_addr, below
    char             sin_zero[8];  // zero this if you want to
};
Estructura anidada.
struct in_addr {
    unsigned long s_addr;   abierta con inet_aton()
};
  */
 
  /* Llamamos a la función pcap_findalldevs()
  para elegir el primer dispositivo válido del equipo */
 
 
    if(pcap_findalldevs(&Dispositivo, errbuf) == 0) {
 
            printf("%s \n", Dispositivo->name);
 
        }
 
    else {
        printf("error: %s\n", errbuf);
        exit(-1);
    }
 
 
  /* Llamada a pcap_lookupnet(), para asociadar el dispositivo o tarjeta
  de red, con la dirección IP y la máscara de red */
  Retorno_Look = pcap_lookupnet(Dispositivo->name,&IP_RAW,&Mascara_RAW,errbuf);
 
  if(Retorno_Look == -1)
  {
   printf("%s\n",errbuf);
   exit(1);
  }
 
  /* Procedemos a optener en formato legible la dirección Ip
  y la máscara de red mediante la función
  inet_aton(),que convierte la dirección de host de Internet
  de la notación de números y puntos IPv4 en forma binaria
  (en orden de bytes de red) y la almacena en la estructura
  a la que apunta un puntero.
  inet_aton() devuelve un valor distinto de cero
  si la dirección es válida, cero si no lo es.
  La dirección suministrada en el resultado
  será válida e inteligible como salida por consola.
  */
  Direccion_Addr.s_addr = IP_RAW;
  IP = inet_ntoa(Direccion_Addr);
 
  if(IP == NULL)
  {
    perror("inet_ntoa");
    exit(1);
  }
/*imprimimos IP*/
  printf("Dirección IP: %s\n",IP);
 
  /* Hacemos lo mismo  para la máscara de red */
  Direccion_Addr.s_addr = Mascara_RAW;
  Mascara = inet_ntoa(Direccion_Addr);
 
  if(Mascara == NULL)
  {
    perror("inet_ntoa");
    exit(1);
  }
  /*Imprimimos máscara de red*/
  printf("Máscara de Red: %s\n",Mascara);
 
  return 0;
}



Comentarios sobre la versión: v.0 (0)


No hay comentarios
 

Comentar la versión: v.0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s7283