Sorry, now using a proper patch creation method :) Index: dsniff/arpspoof.c =================================================================== --- dsniff.orig/arpspoof.c +++ dsniff/arpspoof.c @@ -300,18 +300,22 @@ main(int argc, char *argv[]) signal(SIGINT, cleanup); signal(SIGTERM, cleanup);
- for (;;) { - struct host *target = targets; - while(target->ip) { - arp_send(l, ARPOP_REPLY, my_ha, spoof.ip, - (target->ip ? (u_int8_t *)&target->mac : brd_ha), - target->ip, - my_ha); - if (poison_reverse) { - arp_send(l, ARPOP_REPLY, my_ha, target->ip, (uint8_t *)&spoof.mac, spoof.ip, my_ha); - } - target++; - } + for (;;) { + if (!n_targets) { + arp_send(l, ARPOP_REPLY, my_ha, spoof.ip, brd_ha, 0, my_ha); + } else { + struct host *target = targets; + while(target->ip) { + arp_send(l, ARPOP_REPLY, my_ha, spoof.ip, + (target->ip ? (u_int8_t *)&target->mac : brd_ha), + target->ip, + my_ha); + if (poison_reverse) { + arp_send(l, ARPOP_REPLY, my_ha, target->ip, (uint8_t *)&spoof.mac, spoof.ip, my_ha); + } + target++; + } + } sleep(2); } On Wed, Mar 8, 2017 at 9:23 PM João Salavisa <joao.salav...@gmail.com> wrote: > Sorry, now in a patch format > > diff -ub ./arpspoof.c ../orig.dsniff/dsniff-2.4b1+debian/arpspoof.c > --- ./arpspoof.c 2017-03-07 22:21:45.037692254 +0000 > +++ ../orig.dsniff/dsniff-2.4b1+debian/arpspoof.c 2017-03-07 > 22:09:32.000000000 +0000 > @@ -46,8 +46,6 @@ > static int cleanup_src_own = 1; > static int cleanup_src_host = 0; > > -int n_targets; > - > static void > usage(void) > { > @@ -162,17 +160,11 @@ > fprintf(stderr, "Cleaning up and re-arping targets...\n"); > for (i = 0; i < rounds; i++) { > struct host *target = targets; > - > + while(target->ip) { > uint8_t *src_ha = NULL; > if (cleanup_src_own && (i%2 || !cleanup_src_host)) { > src_ha = my_ha; > } > - > - if (!n_targets) { > - arp_send(l, ARPOP_REPLY, (u_int8_t *)&spoof.mac, spoof.ip, brd_ha, > 0, src_ha); > - sleep(1); > - } else { > - while(target->ip) { > /* XXX - on BSD, requires ETHERSPOOF kernel. */ > if (fw) { > arp_send(l, ARPOP_REPLY, > @@ -194,12 +186,11 @@ > target++; > } > } > - } > > exit(0); > } > > - int > +int > main(int argc, char *argv[]) > { > extern char *optarg; > @@ -207,7 +198,7 @@ > char pcap_ebuf[PCAP_ERRBUF_SIZE]; > char libnet_ebuf[LIBNET_ERRBUF_SIZE]; > int c; > - > + int n_targets; > char *cleanup_src = NULL; > > spoof.ip = 0; > @@ -304,12 +295,6 @@ > signal(SIGTERM, cleanup); > > for (;;) { > - if (!n_targets) { > - arp_send(l, ARPOP_REPLY, my_ha, spoof.ip, brd_ha, 0, my_ha); > - if (poison_reverse) { > - arp_send(l, ARPOP_REPLY, my_ha, target->ip, (uint8_t > *)&spoof.mac, spoof.ip, my_ha); > - } > - } else { > struct host *target = targets; > while(target->ip) { > arp_send(l, ARPOP_REPLY, my_ha, spoof.ip, > @@ -321,7 +306,6 @@ > } > target++; > } > - } > > sleep(2); > } > > > On Tue, Mar 7, 2017 at 10:13 PM João Salavisa <joao.salav...@gmail.com> > wrote: > > Here you go! > > diff -b ./arpspoof.c ../orig.dsniff/dsniff-2.4b1+debian/arpspoof.c > 49,50d48 > < int n_targets; > < > 165c163 > < > --- > > while(target->ip) { > 170,175d167 > < > < if (!n_targets) { > < arp_send(l, ARPOP_REPLY, (u_int8_t *)&spoof.mac, spoof.ip, brd_ha, > 0, src_ha); > < sleep(1); > < } else { > < while(target->ip) { > 197d188 > < } > 202c193 > < int > --- > > int > 210c201 > < > --- > > int n_targets; > 307,312d297 > < if (!n_targets) { > < arp_send(l, ARPOP_REPLY, my_ha, spoof.ip, brd_ha, 0, my_ha); > < if (poison_reverse) { > < arp_send(l, ARPOP_REPLY, my_ha, target->ip, (uint8_t > *)&spoof.mac, spoof.ip, my_ha); > < } > < } else { > 324d308 > < } > > > On Tue, Feb 28, 2017 at 10:19 PM Marcos Fouces <mfou...@yahoo.es> wrote: > > Hello João > > Could you create a patch and post it in this thread? > > Thank you very much for the fix! > > Greetings, > > Marcos > >