/* Output looks similar to tcpdump -p arp ;-) */ #include <usi++/usi++.h> #include <iostream> int main() { /* The ARP-objects don't need to call * init_device() before monitoring the network, * because initialization is done in constructor. */ #ifdef linux ARP *a = new ARP("eth0", 1); #else ARP *a = new ARP("ed0", 1); #endif char smac[100], dmac[100], shw[100], dhw[100], sip[100], dip[100]; while (1) { a->sniffpack(); if (a->get_op() == ARPOP_REQUEST) { cout<<"["<<a->get_hwsrc(shw, 100)<<"-"<<a->get_hwdst(dhw, 100)<<"]" <<"arp who has "<<a->get_tpa(0, dip, 100) <<" tell "<<a->get_spa(1, sip, 100)<<endl; } if (a->get_op() == ARPOP_REPLY) { cout<<a->get_spa(0, sip, 100)<<" is at " <<a->get_sha(smac, 100)<<endl; } } return 0; }