The I am Tool Source Code

Example 11-6 shows the full source code to the I am tool. It should compile on most Linux distributions as follows:

gcc -o iam iam.c -ln

If that does not work, libnet provides a tool called libnet-config that contains definitions and library references that might be required for your libnet installation. You can use this with back quotes as follows:

gcc -o iam iam.c `libnet-config -defines` \
         `libnet-config -libs` `libnet-config -cflags`

This tool was written on Gentoo Linux. It should work on most Linux installations; however, some tweaking might be necessary to get this working on other Unix and Unix-like environments.

Example 11-6. Source code to the I am tool

#include <stdio.h> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <libnet.h> /* usage */ void usage (char *name) { printf ("%s - Send arbitrary ARP replies\n", name); printf ("Usage: %s [-i interface] -s ip_address -t dest_ip\n", name); printf (" -i interface to send on\n"); printf (" -s IP address we are claiming to be\n"); printf (" -t IP address of recipient\n"); printf (" -m Ethernet MAC address of recipient\n"); exit (1); } int main (int argc, char *argv[]) { char *device = NULL; /* network device */ char o; /* for option processing */ in_addr_t ipaddr; /* claimed ip address */ in_addr_t destaddr; /* destination ip address */ u_int8_t *macaddr; /* destination mac address */ libnet_t *l; /* libnet context */ libnet_ptag_t arp = 0, eth = 0; ...

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.