¿El paquete IP se genera manualmente? [cerrado]

0

He escuchado que podemos crear paquetes ip por nuestra cuenta y enviarlos a una red o host. ¿Cómo se puede hacer esto? Explique paso a paso?

    
pregunta VijayPandey 15.08.2013 - 13:53
fuente

1 respuesta

0

PCap la biblioteca puede usarse no solo para detectar paquetes, sino también para construir y enviar paquetes.

  

En el campo de la administración de redes de computadoras, pcap (captura de paquetes)   consiste en una interfaz de programación de aplicaciones (API) para capturar   tráfico de red. Unix-like sistemas implementan pcap en el libpcap   biblioteca; Windows usa un puerto de libpcap conocido como WinPcap.

Hay un buen ejemplo :

  

La forma más sencilla de enviar un paquete se muestra en el siguiente código   retazo. Después de abrir un adaptador, se llama a pcap_sendpacket () para enviar   Un paquete hecho a mano. pcap_sendpacket () toma como argumentos un búfer   Contiene los datos a enviar, la longitud del buffer y el adaptador.   Eso lo enviaremos. Observe que el búfer se envía a la red como está,   Sin ninguna manipulación. Esto significa que la aplicación tiene que   Crea los encabezados de protocolo correctos para enviar algo.   significativo.

Tenga en cuenta que usted tiene el control total. También puedes cambiar el marco de Ethernet.

#include <stdlib.h>
#include <stdio.h>

#include <pcap.h>


void main(int argc, char **argv)
{
pcap_t *fp;
char errbuf[PCAP_ERRBUF_SIZE];
u_char packet[100];
int i;

    /* Check the validity of the command line */
    if (argc != 2)
    {
        printf("usage: %s interface (e.g. 'rpcap://eth0')", argv[0]);
        return;
    }

    /* Open the output device */
    if ( (fp= pcap_open(argv[1],            // name of the device
                        100,                // portion of the packet to capture (only the first 100 bytes)
                        PCAP_OPENFLAG_PROMISCUOUS,  // promiscuous mode
                        1000,               // read timeout
                        NULL,               // authentication on the remote machine
                        errbuf              // error buffer
                        ) ) == NULL)
    {
        fprintf(stderr,"\nUnable to open the adapter. %s is not supported by WinPcap\n", argv[1]);
        return;
    }

    /* Supposing to be on ethernet, set mac destination to 1:1:1:1:1:1 */
    packet[0]=1;
    packet[1]=1;
    packet[2]=1;
    packet[3]=1;
    packet[4]=1;
    packet[5]=1;

    /* set mac source to 2:2:2:2:2:2 */
    packet[6]=2;
    packet[7]=2;
    packet[8]=2;
    packet[9]=2;
    packet[10]=2;
    packet[11]=2;

    /* Fill the rest of the packet */
    for(i=12;i<100;i++)
    {
        packet[i]=i%256;
    }

    /* Send down the packet */
    if (pcap_sendpacket(fp, packet, 100 /* size */) != 0)
    {
        fprintf(stderr,"\nError sending the packet: \n", pcap_geterr(fp));
        return;
    }

    return;
}

Actualizar

Hay varios envoltorios disponibles:

respondido por el Renat Gilmanov 15.08.2013 - 14:26
fuente

Lea otras preguntas en las etiquetas