summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2009-12-11 13:16:37 +0100
committerWaldemar Brodkorb <wbx@openadk.org>2009-12-11 13:16:37 +0100
commit8c45eacba4fa94578529e315df3330d0bfd2e7b3 (patch)
treec3849fccac5777c233bc75d50542287983edc6d7
parent192d96ee05fb8aa253c94a3504cada2d37a94291 (diff)
fix compile with libnet 1.1.x, from macports
-rw-r--r--package/dsniff/Makefile10
-rw-r--r--package/dsniff/patches/patch-arpspoof_c166
-rw-r--r--package/dsniff/patches/patch-dnsspoof_c149
-rw-r--r--package/dsniff/patches/patch-dsniff_services9
-rw-r--r--package/dsniff/patches/patch-filesnarf_c22
-rw-r--r--package/dsniff/patches/patch-macof_c116
-rw-r--r--package/dsniff/patches/patch-mount_c100
-rw-r--r--package/dsniff/patches/patch-mount_h154
-rw-r--r--package/dsniff/patches/patch-nfs_prot_c740
-rw-r--r--package/dsniff/patches/patch-nfs_prot_h531
-rw-r--r--package/dsniff/patches/patch-record_c12
-rw-r--r--package/dsniff/patches/patch-sshmitm_c11
-rw-r--r--package/dsniff/patches/patch-tcp_raw_c20
-rw-r--r--package/dsniff/patches/patch-tcp_raw_h11
-rw-r--r--package/dsniff/patches/patch-tcpkill_c105
-rw-r--r--package/dsniff/patches/patch-tcpnice_c196
-rw-r--r--package/dsniff/patches/patch-trigger_c29
-rw-r--r--package/dsniff/patches/patch-trigger_h16
-rw-r--r--package/dsniff/patches/patch-urlsnarf_c19
-rw-r--r--package/dsniff/patches/patch-webmitm_c20
-rw-r--r--package/dsniff/patches/patch-webspy_c20
21 files changed, 2435 insertions, 21 deletions
diff --git a/package/dsniff/Makefile b/package/dsniff/Makefile
index 276e5fc13..bd54813c5 100644
--- a/package/dsniff/Makefile
+++ b/package/dsniff/Makefile
@@ -7,7 +7,7 @@ PKG_NAME:= dsniff
PKG_VERSION:= 2.4b1
PKG_RELEASE:= 2
PKG_MD5SUM:= 2f761fa3475682a7512b0b43568ee7d6
-PKG_DESCR:= collection of tools for network auditing and penetration testing
+PKG_DESCR:= tools for network auditing and penetration testing
PKG_SECTION:= net
PKG_DEPENDS:= libnet libpcap libnids libopenssl libgdbm
PKG_URL:= http://www.monkey.org/~dugsong/dsniff
@@ -17,9 +17,9 @@ WRKDIST= ${WRKDIR}/${PKG_NAME}-2.4
include ${TOPDIR}/mk/package.mk
-$(eval $(call PKG_template,DSNIFF,dsniff,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
+$(eval $(call PKG_template,DSNIFF,${PKG_NAME},${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-CONFIGURE_STYLE= gnu
+CONFIGURE_STYLE:= gnu
CONFIGURE_ENV+= ac_cv_lib_nsl_gethostbyname=no
CONFIGURE_ARGS+= --without-db \
--without-x \
@@ -28,8 +28,8 @@ CONFIGURE_ARGS+= --without-db \
--with-libpcap="${STAGING_DIR}/usr" \
--with-libnet="${STAGING_DIR}/usr" \
--with-openssl="${STAGING_DIR}/usr"
-BUILD_STYLE= auto
-INSTALL_STYLE= auto
+BUILD_STYLE:= auto
+INSTALL_STYLE:= auto
FAKE_FLAGS+= install_prefix="${WRKINST}"
post-install:
diff --git a/package/dsniff/patches/patch-arpspoof_c b/package/dsniff/patches/patch-arpspoof_c
index 8f04ee1c1..6d8a6a35c 100644
--- a/package/dsniff/patches/patch-arpspoof_c
+++ b/package/dsniff/patches/patch-arpspoof_c
@@ -1,7 +1,93 @@
-$Id$
--- dsniff-2.4.orig/arpspoof.c 2001-03-15 09:32:58.000000000 +0100
-+++ dsniff-2.4/arpspoof.c 2007-01-23 00:20:48.000000000 +0100
-@@ -113,7 +113,7 @@ arp_find(in_addr_t ip, struct ether_addr
++++ dsniff-2.4/arpspoof.c 2009-12-11 13:14:45.000000000 +0100
+@@ -14,6 +14,7 @@
+ #include <sys/types.h>
+ #include <sys/param.h>
+ #include <netinet/in.h>
++#include <netinet/if_ether.h>
+
+ #include <stdio.h>
+ #include <string.h>
+@@ -25,9 +26,9 @@
+ #include "arp.h"
+ #include "version.h"
+
+-extern char *ether_ntoa(struct ether_addr *);
++//extern char *ether_ntoa(struct ether_addr *);
+
+-static struct libnet_link_int *llif;
++static libnet_t *l;
+ static struct ether_addr spoof_mac, target_mac;
+ static in_addr_t spoof_ip, target_ip;
+ static char *intf;
+@@ -41,47 +42,49 @@ usage(void)
+ }
+
+ static int
+-arp_send(struct libnet_link_int *llif, char *dev,
+- int op, u_char *sha, in_addr_t spa, u_char *tha, in_addr_t tpa)
++arp_send(libnet_t *l, int op, u_int8_t *sha,
++ in_addr_t spa, u_int8_t *tha, in_addr_t tpa)
+ {
+- char ebuf[128];
+- u_char pkt[60];
+-
++ int retval;
++
+ if (sha == NULL &&
+- (sha = (u_char *)libnet_get_hwaddr(llif, dev, ebuf)) == NULL) {
++ (sha = (u_int8_t *)libnet_get_hwaddr(l)) == NULL) {
+ return (-1);
+ }
+ if (spa == 0) {
+- if ((spa = libnet_get_ipaddr(llif, dev, ebuf)) == 0)
++ if ((spa = libnet_get_ipaddr4(l)) == -1)
+ return (-1);
+- spa = htonl(spa); /* XXX */
+ }
+ if (tha == NULL)
+ tha = "\xff\xff\xff\xff\xff\xff";
+
+- libnet_build_ethernet(tha, sha, ETHERTYPE_ARP, NULL, 0, pkt);
++ libnet_autobuild_arp(op, sha, (u_int8_t *)&spa,
++ tha, (u_int8_t *)&tpa, l);
++ libnet_build_ethernet(tha, sha, ETHERTYPE_ARP, NULL, 0, l, 0);
+
+- libnet_build_arp(ARPHRD_ETHER, ETHERTYPE_IP, ETHER_ADDR_LEN, 4,
+- op, sha, (u_char *)&spa, tha, (u_char *)&tpa,
+- NULL, 0, pkt + ETH_H);
+-
+ fprintf(stderr, "%s ",
+ ether_ntoa((struct ether_addr *)sha));
+
+ if (op == ARPOP_REQUEST) {
+ fprintf(stderr, "%s 0806 42: arp who-has %s tell %s\n",
+ ether_ntoa((struct ether_addr *)tha),
+- libnet_host_lookup(tpa, 0),
+- libnet_host_lookup(spa, 0));
++ libnet_addr2name4(tpa, LIBNET_DONT_RESOLVE),
++ libnet_addr2name4(spa, LIBNET_DONT_RESOLVE));
+ }
+ else {
+ fprintf(stderr, "%s 0806 42: arp reply %s is-at ",
+ ether_ntoa((struct ether_addr *)tha),
+- libnet_host_lookup(spa, 0));
++ libnet_addr2name4(spa, LIBNET_DONT_RESOLVE));
+ fprintf(stderr, "%s\n",
+ ether_ntoa((struct ether_addr *)sha));
+ }
+- return (libnet_write_link_layer(llif, dev, pkt, sizeof(pkt)) == sizeof(pkt));
++ retval = libnet_write(l);
++ if (retval)
++ fprintf(stderr, "%s", libnet_geterror(l));
++
++ libnet_clear_packet(l);
++
++ return retval;
+ }
+
+ #ifdef __linux__
+@@ -113,13 +116,13 @@ arp_find(in_addr_t ip, struct ether_addr
int i = 0;
do {
@@ -10,3 +96,77 @@ $Id$
return (1);
#ifdef __linux__
/* XXX - force the kernel to arp. feh. */
+ arp_force(ip);
+ #else
+- arp_send(llif, intf, ARPOP_REQUEST, NULL, 0, NULL, ip);
++ arp_send(l, ARPOP_REQUEST, NULL, 0, NULL, ip);
+ #endif
+ sleep(1);
+ }
+@@ -136,9 +139,9 @@ cleanup(int sig)
+ if (arp_find(spoof_ip, &spoof_mac)) {
+ for (i = 0; i < 3; i++) {
+ /* XXX - on BSD, requires ETHERSPOOF kernel. */
+- arp_send(llif, intf, ARPOP_REPLY,
+- (u_char *)&spoof_mac, spoof_ip,
+- (target_ip ? (u_char *)&target_mac : NULL),
++ arp_send(l, ARPOP_REPLY,
++ (u_int8_t *)&spoof_mac, spoof_ip,
++ (target_ip ? (u_int8_t *)&target_mac : NULL),
+ target_ip);
+ sleep(1);
+ }
+@@ -151,7 +154,8 @@ main(int argc, char *argv[])
+ {
+ extern char *optarg;
+ extern int optind;
+- char ebuf[PCAP_ERRBUF_SIZE];
++ char pcap_ebuf[PCAP_ERRBUF_SIZE];
++ char libnet_ebuf[LIBNET_ERRBUF_SIZE];
+ int c;
+
+ intf = NULL;
+@@ -163,7 +167,7 @@ main(int argc, char *argv[])
+ intf = optarg;
+ break;
+ case 't':
+- if ((target_ip = libnet_name_resolve(optarg, 1)) == -1)
++ if ((target_ip = libnet_name2addr4(l, optarg, LIBNET_RESOLVE)) == -1)
+ usage();
+ break;
+ default:
+@@ -176,26 +180,26 @@ main(int argc, char *argv[])
+ if (argc != 1)
+ usage();
+
+- if ((spoof_ip = libnet_name_resolve(argv[0], 1)) == -1)
++ if ((spoof_ip = libnet_name2addr4(l, argv[0], LIBNET_RESOLVE)) == -1)
+ usage();
+
+- if (intf == NULL && (intf = pcap_lookupdev(ebuf)) == NULL)
+- errx(1, "%s", ebuf);
++ if (intf == NULL && (intf = pcap_lookupdev(pcap_ebuf)) == NULL)
++ errx(1, "%s", pcap_ebuf);
+
+- if ((llif = libnet_open_link_interface(intf, ebuf)) == 0)
+- errx(1, "%s", ebuf);
++ if ((l = libnet_init(LIBNET_LINK, intf, libnet_ebuf)) == NULL)
++ errx(1, "%s", libnet_ebuf);
+
+ if (target_ip != 0 && !arp_find(target_ip, &target_mac))
+ errx(1, "couldn't arp for host %s",
+- libnet_host_lookup(target_ip, 0));
++ libnet_addr2name4(target_ip, LIBNET_DONT_RESOLVE));
+
+ signal(SIGHUP, cleanup);
+ signal(SIGINT, cleanup);
+ signal(SIGTERM, cleanup);
+
+ for (;;) {
+- arp_send(llif, intf, ARPOP_REPLY, NULL, spoof_ip,
+- (target_ip ? (u_char *)&target_mac : NULL),
++ arp_send(l, ARPOP_REPLY, NULL, spoof_ip,
++ (target_ip ? (u_int8_t *)&target_mac : NULL),
+ target_ip);
+ sleep(2);
+ }
diff --git a/package/dsniff/patches/patch-dnsspoof_c b/package/dsniff/patches/patch-dnsspoof_c
new file mode 100644
index 000000000..6616431a1
--- /dev/null
+++ b/package/dsniff/patches/patch-dnsspoof_c
@@ -0,0 +1,149 @@
+--- dsniff-2.4.orig/dnsspoof.c 2001-03-15 09:33:03.000000000 +0100
++++ dsniff-2.4/dnsspoof.c 2009-12-11 12:41:53.000000000 +0100
+@@ -38,7 +38,7 @@ SLIST_HEAD(, dnsent) dns_entries;
+
+ pcap_t *pcap_pd = NULL;
+ int pcap_off = -1;
+-int lnet_sock = -1;
++libnet_t *l;
+ u_long lnet_ip = -1;
+
+ static void
+@@ -90,19 +90,18 @@ static void
+ dns_init(char *dev, char *filename)
+ {
+ FILE *f;
+- struct libnet_link_int *llif;
++ libnet_t *l;
++ char libnet_ebuf[LIBNET_ERRBUF_SIZE];
+ struct dnsent *de;
+ char *ip, *name, buf[1024];
+
+- if ((llif = libnet_open_link_interface(dev, buf)) == NULL)
+- errx(1, "%s", buf);
++ if ((l = libnet_init(LIBNET_LINK, dev, libnet_ebuf)) == NULL)
++ errx(1, "%s", libnet_ebuf);
+
+- if ((lnet_ip = libnet_get_ipaddr(llif, dev, buf)) == -1)
+- errx(1, "%s", buf);
++ if ((lnet_ip = libnet_get_ipaddr4(l)) == -1)
++ errx(1, "%s", libnet_geterror(l));
+
+- lnet_ip = htonl(lnet_ip);
+-
+- libnet_close_link_interface(llif);
++ libnet_destroy(l);
+
+ SLIST_INIT(&dns_entries);
+
+@@ -180,7 +179,7 @@ dns_lookup_ptr(const char *name)
+ static void
+ dns_spoof(u_char *u, const struct pcap_pkthdr *pkthdr, const u_char *pkt)
+ {
+- struct libnet_ip_hdr *ip;
++ struct libnet_ipv4_hdr *ip;
+ struct libnet_udp_hdr *udp;
+ HEADER *dns;
+ char name[MAXHOSTNAMELEN];
+@@ -189,7 +188,7 @@ dns_spoof(u_char *u, const struct pcap_p
+ in_addr_t dst;
+ u_short type, class;
+
+- ip = (struct libnet_ip_hdr *)(pkt + pcap_off);
++ ip = (struct libnet_ipv4_hdr *)(pkt + pcap_off);
+ udp = (struct libnet_udp_hdr *)(pkt + pcap_off + (ip->ip_hl * 4));
+ dns = (HEADER *)(udp + 1);
+ p = (u_char *)(dns + 1);
+@@ -212,7 +211,7 @@ dns_spoof(u_char *u, const struct pcap_p
+ if (class != C_IN)
+ return;
+
+- p = buf + IP_H + UDP_H + dnslen;
++ p = buf + dnslen;
+
+ if (type == T_A) {
+ if ((dst = dns_lookup_a(name)) == -1)
+@@ -234,38 +233,38 @@ dns_spoof(u_char *u, const struct pcap_p
+ anslen += 12;
+ }
+ else return;
+-
+- libnet_build_ip(UDP_H + dnslen + anslen, 0, libnet_get_prand(PRu16),
+- 0, 64, IPPROTO_UDP, ip->ip_dst.s_addr,
+- ip->ip_src.s_addr, NULL, 0, buf);
+-
+- libnet_build_udp(ntohs(udp->uh_dport), ntohs(udp->uh_sport),
+- NULL, dnslen + anslen, buf + IP_H);
+
+- memcpy(buf + IP_H + UDP_H, (u_char *)dns, dnslen);
++ memcpy(buf, (u_char *)dns, dnslen);
+
+- dns = (HEADER *)(buf + IP_H + UDP_H);
++ dns = (HEADER *)buf;
+ dns->qr = dns->ra = 1;
+ if (type == T_PTR) dns->aa = 1;
+ dns->ancount = htons(1);
+
+ dnslen += anslen;
++
++ libnet_clear_packet(l);
++ libnet_build_udp(ntohs(udp->uh_dport), ntohs(udp->uh_sport),
++ LIBNET_UDP_H + dnslen, 0,
++ (u_int8_t *)buf, dnslen, l, 0);
++
++ libnet_build_ipv4(LIBNET_IPV4_H + LIBNET_UDP_H + dnslen, 0,
++ libnet_get_prand(LIBNET_PRu16), 0, 64, IPPROTO_UDP, 0,
++ ip->ip_dst.s_addr, ip->ip_src.s_addr, NULL, 0, l, 0);
+
+- libnet_do_checksum(buf, IPPROTO_UDP, UDP_H + dnslen);
+-
+- if (libnet_write_ip(lnet_sock, buf, IP_H + UDP_H + dnslen) < 0)
++ if (libnet_write(l) < 0)
+ warn("write");
+
+ fprintf(stderr, "%s.%d > %s.%d: %d+ %s? %s\n",
+- libnet_host_lookup(ip->ip_src.s_addr, 0), ntohs(udp->uh_sport),
+- libnet_host_lookup(ip->ip_dst.s_addr, 0), ntohs(udp->uh_dport),
++ libnet_addr2name4(ip->ip_src.s_addr, 0), ntohs(udp->uh_sport),
++ libnet_addr2name4(ip->ip_dst.s_addr, 0), ntohs(udp->uh_dport),
+ ntohs(dns->id), type == T_A ? "A" : "PTR", name);
+ }
+
+ static void
+ cleanup(int sig)
+ {
+- libnet_close_raw_sock(lnet_sock);
++ libnet_destroy(l);
+ pcap_close(pcap_pd);
+ exit(0);
+ }
+@@ -276,6 +275,7 @@ main(int argc, char *argv[])
+ extern char *optarg;
+ extern int optind;
+ char *p, *dev, *hosts, buf[1024];
++ char ebuf[LIBNET_ERRBUF_SIZE];
+ int i;
+
+ dev = hosts = NULL;
+@@ -306,7 +306,7 @@ main(int argc, char *argv[])
+ strlcpy(buf, p, sizeof(buf));
+ }
+ else snprintf(buf, sizeof(buf), "udp dst port 53 and not src %s",
+- libnet_host_lookup(lnet_ip, 0));
++ libnet_addr2name4(lnet_ip, LIBNET_DONT_RESOLVE));
+
+ if ((pcap_pd = pcap_init(dev, buf, 128)) == NULL)
+ errx(1, "couldn't initialize sniffing");
+@@ -314,10 +314,10 @@ main(int argc, char *argv[])
+ if ((pcap_off = pcap_dloff(pcap_pd)) < 0)
+ errx(1, "couldn't determine link layer offset");
+
+- if ((lnet_sock = libnet_open_raw_sock(IPPROTO_RAW)) == -1)
++ if ((l = libnet_init(LIBNET_RAW4, dev, ebuf)) == NULL)
+ errx(1, "couldn't initialize sending");
+
+- libnet_seed_prand();
++ libnet_seed_prand(l);
+
+ signal(SIGHUP, cleanup);
+ signal(SIGINT, cleanup);
diff --git a/package/dsniff/patches/patch-dsniff_services b/package/dsniff/patches/patch-dsniff_services
deleted file mode 100644
index 7b4827426..000000000
--- a/package/dsniff/patches/patch-dsniff_services
+++ /dev/null
@@ -1,9 +0,0 @@
-$Id$
---- dsniff-2.4.orig/dsniff.services 2000-12-15 21:10:58.000000000 +0100
-+++ dsniff-2.4/dsniff.services 2007-01-23 00:20:48.000000000 +0100
-@@ -66,5 +66,3 @@ napster 8888/tcp
- aim 9898/tcp
- pcanywhere 65301/tcp
- mountd 100005/rpc
--ypserv 100004/rpc
--yppasswd 100009/rpc
diff --git a/package/dsniff/patches/patch-filesnarf_c b/package/dsniff/patches/patch-filesnarf_c
new file mode 100644
index 000000000..fd71816e9
--- /dev/null
+++ b/package/dsniff/patches/patch-filesnarf_c
@@ -0,0 +1,22 @@
+--- dsniff-2.4.orig/filesnarf.c 2001-03-15 09:33:03.000000000 +0100
++++ dsniff-2.4/filesnarf.c 2009-12-11 12:54:55.000000000 +0100
+@@ -134,8 +134,8 @@ nfs_save(struct tuple4 *addr, struct myr
+ int fd;
+
+ warnx("%s.%d > %s.%d: %s (%d@%d)",
+- libnet_host_lookup(addr->daddr, 0), addr->dest,
+- libnet_host_lookup(addr->saddr, 0), addr->source,
++ libnet_addr2name4(addr->daddr, LIBNET_DONT_RESOLVE), addr->dest,
++ libnet_addr2name4(addr->saddr, LIBNET_DONT_RESOLVE), addr->source,
+ ma->filename, len, ma->offset);
+
+ if ((fd = open(ma->filename, O_WRONLY|O_CREAT, 0644)) >= 0) {
+@@ -353,7 +353,7 @@ decode_nfs(struct tuple4 *addr, u_char *
+ }
+
+ static void
+-decode_udp_nfs(struct libnet_ip_hdr *ip)
++decode_udp_nfs(struct libnet_ipv4_hdr *ip)
+ {
+ static struct tuple4 addr;
+ struct libnet_udp_hdr *udp;
diff --git a/package/dsniff/patches/patch-macof_c b/package/dsniff/patches/patch-macof_c
new file mode 100644
index 000000000..d8121b908
--- /dev/null
+++ b/package/dsniff/patches/patch-macof_c
@@ -0,0 +1,116 @@
+--- dsniff-2.4.orig/macof.c 2001-03-15 09:33:04.000000000 +0100
++++ dsniff-2.4/macof.c 2009-12-11 12:56:13.000000000 +0100
+@@ -48,8 +48,8 @@ usage(void)
+ static void
+ gen_mac(u_char *mac)
+ {
+- *((in_addr_t *)mac) = libnet_get_prand(PRu32);
+- *((u_short *)(mac + 4)) = libnet_get_prand(PRu16);
++ *((in_addr_t *)mac) = libnet_get_prand(LIBNET_PRu32);
++ *((u_short *)(mac + 4)) = libnet_get_prand(LIBNET_PRu16);
+ }
+
+ int
+@@ -59,22 +59,23 @@ main(int argc, char *argv[])
+ extern int optind;
+ int c, i;
+ struct libnet_link_int *llif;
+- char ebuf[PCAP_ERRBUF_SIZE];
++ char pcap_ebuf[PCAP_ERRBUF_SIZE];
++ char libnet_ebuf[LIBNET_ERRBUF_SIZE];
+ u_char sha[ETHER_ADDR_LEN], tha[ETHER_ADDR_LEN];
+ in_addr_t src, dst;
+ u_short sport, dport;
+ u_int32_t seq;
+- u_char pkt[ETH_H + IP_H + TCP_H];
++ libnet_t *l;
+
+ while ((c = getopt(argc, argv, "vs:d:e:x:y:i:n:h?V")) != -1) {
+ switch (c) {
+ case 'v':
+ break;
+ case 's':
+- Src = libnet_name_resolve(optarg, 0);
++ Src = libnet_name2addr4(l, optarg, 0);
+ break;
+ case 'd':
+- Dst = libnet_name_resolve(optarg, 0);
++ Dst = libnet_name2addr4(l, optarg, 0);
+ break;
+ case 'e':
+ Tha = (u_char *)ether_aton(optarg);
+@@ -101,13 +102,13 @@ main(int argc, char *argv[])
+ if (argc != 0)
+ usage();
+
+- if (!Intf && (Intf = pcap_lookupdev(ebuf)) == NULL)
+- errx(1, "%s", ebuf);
++ if (!Intf && (Intf = pcap_lookupdev(pcap_ebuf)) == NULL)
++ errx(1, "%s", pcap_ebuf);
+
+- if ((llif = libnet_open_link_interface(Intf, ebuf)) == 0)
+- errx(1, "%s", ebuf);
++ if ((l = libnet_init(LIBNET_LINK, Intf, libnet_ebuf)) == NULL)
++ errx(1, "%s", libnet_ebuf);
+
+- libnet_seed_prand();
++ libnet_seed_prand(l);
+
+ for (i = 0; i != Repeat; i++) {
+
+@@ -117,39 +118,39 @@ main(int argc, char *argv[])
+ else memcpy(tha, Tha, sizeof(tha));
+
+ if (Src != 0) src = Src;
+- else src = libnet_get_prand(PRu32);
++ else src = libnet_get_prand(LIBNET_PRu32);
+
+ if (Dst != 0) dst = Dst;
+- else dst = libnet_get_prand(PRu32);
++ else dst = libnet_get_prand(LIBNET_PRu32);
+
+ if (Sport != 0) sport = Sport;
+- else sport = libnet_get_prand(PRu16);
++ else sport = libnet_get_prand(LIBNET_PRu16);
+
+ if (Dport != 0) dport = Dport;
+- else dport = libnet_get_prand(PRu16);
++ else dport = libnet_get_prand(LIBNET_PRu16);
+
+- seq = libnet_get_prand(PRu32);
+-
+- libnet_build_ethernet(tha, sha, ETHERTYPE_IP, NULL, 0, pkt);
+-
+- libnet_build_ip(TCP_H, 0, libnet_get_prand(PRu16), 0, 64,
+- IPPROTO_TCP, src, dst, NULL, 0, pkt + ETH_H);
++ seq = libnet_get_prand(LIBNET_PRu32);
+
+ libnet_build_tcp(sport, dport, seq, 0, TH_SYN, 512,
+- 0, NULL, 0, pkt + ETH_H + IP_H);
++ 0, 0, LIBNET_TCP_H, NULL, 0, l, 0);
+
+- libnet_do_checksum(pkt + ETH_H, IPPROTO_IP, IP_H);
+- libnet_do_checksum(pkt + ETH_H, IPPROTO_TCP, TCP_H);
++ libnet_build_ipv4(LIBNET_TCP_H, 0,
++ libnet_get_prand(LIBNET_PRu16), 0, 64,
++ IPPROTO_TCP, 0, src, dst, NULL, 0, l, 0);
+
+- if (libnet_write_link_layer(llif, Intf, pkt, sizeof(pkt)) < 0)
++ libnet_build_ethernet(tha, sha, ETHERTYPE_IP, NULL, 0, l, 0);
++
++ if (libnet_write(l) < 0)
+ errx(1, "write");
+
++ libnet_clear_packet(l);
++
+ fprintf(stderr, "%s ",
+ ether_ntoa((struct ether_addr *)sha));
+ fprintf(stderr, "%s %s.%d > %s.%d: S %u:%u(0) win 512\n",
+ ether_ntoa((struct ether_addr *)tha),
+- libnet_host_lookup(Src, 0), sport,
+- libnet_host_lookup(Dst, 0), dport, seq, seq);
++ libnet_addr2name4(Src, 0), sport,
++ libnet_addr2name4(Dst, 0), dport, seq, seq);
+ }
+ exit(0);
+ }
diff --git a/package/dsniff/patches/patch-mount_c b/package/dsniff/patches/patch-mount_c
new file mode 100644
index 000000000..513d906d5
--- /dev/null
+++ b/package/dsniff/patches/patch-mount_c
@@ -0,0 +1,100 @@
+--- dsniff-2.4.orig/mount.c 1970-01-01 00:00:00.000000000 +0100
++++ dsniff-2.4/mount.c 2009-12-11 12:42:08.000000000 +0100
+@@ -0,0 +1,97 @@
++/*
++ * Please do not edit this file.
++ * It was generated using rpcgen.
++ */
++
++#include "mount.h"
++
++bool_t
++xdr_fhandle (XDR *xdrs, fhandle objp)
++{
++ register int32_t *buf;
++
++ if (!xdr_opaque (xdrs, objp, FHSIZE))
++ return FALSE;
++ return TRUE;
++}
++
++bool_t
++xdr_fhandle3 (XDR *xdrs, fhandle3 *objp)
++{
++ register int32_t *buf;
++
++ if (!xdr_bytes (xdrs, (char **)&objp->fhandle3_val, (u_int *) &objp->fhandle3_len, FHSIZE3))
++ return FALSE;
++ return TRUE;
++}
++
++bool_t
++xdr_fhstatus (XDR *xdrs, fhstatus *objp)
++{
++ register int32_t *buf;
++
++ if (!xdr_u_int (xdrs, &objp->fhs_status))
++ return FALSE;
++ switch (objp->fhs_status) {
++ case 0:
++ if (!xdr_fhandle (xdrs, objp->fhstatus_u.fhs_fhandle))
++ return FALSE;
++ break;
++ default:
++ break;
++ }
++ return TRUE;
++}
++
++#define fhs_fh fhstatus_u.fhs_fhandle
++
++bool_t
++xdr_mountstat3 (XDR *xdrs, mountstat3 *objp)
++{
++ register int32_t *buf;
++
++ if (!xdr_enum (xdrs, (enum_t *) objp))
++ return FALSE;
++ return TRUE;
++}
++
++bool_t
++xdr_mountres3_ok (XDR *xdrs, mountres3_ok *objp)
++{
++ register int32_t *buf;
++
++ if (!xdr_fhandle3 (xdrs, &objp->fhandle))
++ return FALSE;
++ if (!xdr_array (xdrs, (char **)&objp->auth_flavors.auth_flavors_val, (u_int *) &objp->auth_flavors.auth_flavors_len, ~0,
++ sizeof (int), (xdrproc_t) xdr_int))
++ return FALSE;
++ return TRUE;
++}
++
++bool_t
++xdr_mountres3 (XDR *xdrs, mountres3 *objp)
++{
++ register int32_t *buf;
++
++ if (!xdr_mountstat3 (xdrs, &objp->fhs_status))
++ return FALSE;
++ switch (objp->fhs_status) {
++ case MNT_OK:
++ if (!xdr_mountres3_ok (xdrs, &objp->mountres3_u.mountinfo))
++ return FALSE;
++ break;
++ default:
++ break;
++ }
++ return TRUE;
++}
++
++bool_t
++xdr_dirpath (XDR *xdrs, dirpath *objp)
++{
++ register int32_t *buf;
++
++ if (!xdr_string (xdrs, objp, MNTPATHLEN))
++ return FALSE;
++ return TRUE;
++}
diff --git a/package/dsniff/patches/patch-mount_h b/package/dsniff/patches/patch-mount_h
new file mode 100644
index 000000000..bc8629664
--- /dev/null
+++ b/package/dsniff/patches/patch-mount_h
@@ -0,0 +1,154 @@
+--- dsniff-2.4.orig/mount.h 1970-01-01 00:00:00.000000000 +0100
++++ dsniff-2.4/mount.h 2009-12-11 12:42:08.000000000 +0100
+@@ -0,0 +1,151 @@
++/*
++ * Please do not edit this file.
++ * It was generated using rpcgen.
++ */
++
++#ifndef _MOUNT_H_RPCGEN
++#define _MOUNT_H_RPCGEN
++
++#include <rpc/rpc.h>
++
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++#define MNTPATHLEN 1024
++#define MNTNAMLEN 255
++#define FHSIZE 32
++#define FHSIZE3 64
++
++typedef char fhandle[FHSIZE];
++
++typedef struct {
++ u_int fhandle3_len;
++ char *fhandle3_val;
++} fhandle3;
++
++struct fhstatus {
++ u_int fhs_status;
++ union {
++ fhandle fhs_fhandle;
++ } fhstatus_u;
++};
++typedef struct fhstatus fhstatus;
++
++#define fhs_fh fhstatus_u.fhs_fhandle
++
++enum mountstat3 {
++ MNT_OK = 0,
++ MNT3ERR_PERM = 1,
++ MNT3ERR_NOENT = 2,
++ MNT3ERR_IO = 5,
++ MNT3ERR_ACCES = 13,
++ MNT3ERR_NOTDIR = 20,
++ MNT3ERR_INVAL = 22,
++ MNT3ERR_NAMETOOLONG = 63,
++ MNT3ERR_NOTSUPP = 10004,
++ MNT3ERR_SERVERFAULT = 10006,
++};
++typedef enum mountstat3 mountstat3;
++
++struct mountres3_ok {
++ fhandle3 fhandle;
++ struct {
++ u_int auth_flavors_len;
++ int *auth_flavors_val;
++ } auth_flavors;
++};
++typedef struct mountres3_ok mountres3_ok;
++
++struct mountres3 {
++ mountstat3 fhs_status;
++ union {
++ mountres3_ok mountinfo;
++ } mountres3_u;
++};
++typedef struct mountres3 mountres3;
++
++typedef char *dirpath;
++
++#define MOUNTPROG 100005
++#define MOUNTVERS 1
++
++#if defined(__STDC__) || defined(__cplusplus)
++#define MOUNTPROC_NULL 0
++extern void * mountproc_null_1(void *, CLIENT *);
++extern void * mountproc_null_1_svc(void *, struct svc_req *);
++#define MOUNTPROC_MNT 1
++extern fhstatus * mountproc_mnt_1(dirpath *, CLIENT *);
++extern fhstatus * mountproc_mnt_1_svc(dirpath *, struct svc_req *);
++extern int mountprog_1_freeresult (SVCXPRT *, xdrproc_t, caddr_t);
++
++#else /* K&R C */
++#define MOUNTPROC_NULL 0
++extern void * mountproc_null_1();
++extern void * mountproc_null_1_svc();
++#define MOUNTPROC_MNT 1
++extern fhstatus * mountproc_mnt_1();
++extern fhstatus * mountproc_mnt_1_svc();
++extern int mountprog_1_freeresult ();
++#endif /* K&R C */
++#define MOUNTVERS_POSIX 2
++
++#if defined(__STDC__) || defined(__cplusplus)
++extern void * mountproc_null_2(void *, CLIENT *);
++extern void * mountproc_null_2_svc(void *, struct svc_req *);
++extern fhstatus * mountproc_mnt_2(dirpath *, CLIENT *);
++extern fhstatus * mountproc_mnt_2_svc(dirpath *, struct svc_req *);
++extern int mountprog_2_freeresult (SVCXPRT *, xdrproc_t, caddr_t);
++
++#else /* K&R C */
++extern void * mountproc_null_2();
++extern void * mountproc_null_2_svc();
++extern fhstatus * mountproc_mnt_2();
++extern fhstatus * mountproc_mnt_2_svc();
++extern int mountprog_2_freeresult ();
++#endif /* K&R C */
++#define MOUNTVERS3 3
++
++#if defined(__STDC__) || defined(__cplusplus)
++extern void * mountproc_null_3(void *, CLIENT *);
++extern void * mountproc_null_3_svc(void *, struct svc_req *);
++extern mountres3 * mountproc_mnt_3(dirpath *, CLIENT *);
++extern mountres3 * mountproc_mnt_3_svc(dirpath *, struct svc_req *);
++extern int mountprog_3_freeresult (SVCXPRT *, xdrproc_t, caddr_t);
++
++#else /* K&R C */
++extern void * mountproc_null_3();
++extern void * mountproc_null_3_svc();
++extern mountres3 * mountproc_mnt_3();
++extern mountres3 * mountproc_mnt_3_svc();
++extern int mountprog_3_freeresult ();
++#endif /* K&R C */
++
++/* the xdr functions */
++
++#if defined(__STDC__) || defined(__cplusplus)
++extern bool_t xdr_fhandle (XDR *, fhandle);
++extern bool_t xdr_fhandle3 (XDR *, fhandle3*);
++extern bool_t xdr_fhstatus (XDR *, fhstatus*);
++extern bool_t xdr_mountstat3 (XDR *, mountstat3*);
++extern bool_t xdr_mountres3_ok (XDR *, mountres3_ok*);
++extern bool_t xdr_mountres3 (XDR *, mountres3*);
++extern bool_t xdr_dirpath (XDR *, dirpath*);
++
++#else /* K&R C */
++extern bool_t xdr_fhandle ();
++extern bool_t xdr_fhandle3 ();
++extern bool_t xdr_fhstatus ();
++extern bool_t xdr_mountstat3 ();
++extern bool_t xdr_mountres3_ok ();
++extern bool_t xdr_mountres3 ();
++extern bool_t xdr_dirpath ();
++
++#endif /* K&R C */
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif /* !_MOUNT_H_RPCGEN */
diff --git a/package/dsniff/patches/patch-nfs_prot_c b/package/dsniff/patches/patch-nfs_prot_c
new file mode 100644
index 000000000..4f137d921
--- /dev/null
+++ b/package/dsniff/patches/patch-nfs_prot_c
@@ -0,0 +1,740 @@
+--- dsniff-2.4.orig/nfs_prot.c 1970-01-01 00:00:00.000000000 +0100
++++ dsniff-2.4/nfs_prot.c 2009-12-11 12:53:10.000000000 +0100
+@@ -0,0 +1,737 @@
++/*
++ * Please do not edit this file.
++ * It was generated using rpcgen.
++ */
++
++#include "nfs_prot.h"
++#include "config.h"
++
++bool_t
++xdr_nfsstat (XDR *xdrs, nfsstat *objp)
++{
++ register int32_t *buf;
++
++ if (!xdr_enum (xdrs, (enum_t *) objp))
++ return FALSE;
++ return TRUE;
++}
++
++bool_t
++xdr_ftype (XDR *xdrs, ftype *objp)
++{
++ register int32_t *buf;
++
++ if (!xdr_enum (xdrs, (enum_t *) objp))
++ return FALSE;
++ return TRUE;
++}
++
++bool_t
++xdr_nfs_fh (XDR *xdrs, nfs_fh *objp)
++{
++ register int32_t *buf;
++
++ int i;
++ if (!xdr_opaque (xdrs, objp->data, NFS_FHSIZE))
++ return FALSE;
++ return TRUE;
++}
++
++bool_t
++xdr_nfstime (XDR *xdrs, nfstime *objp)
++{
++ register int32_t *buf;
++
++ if (!xdr_u_int (xdrs, &objp->seconds))
++ return FALSE;
++ if (!xdr_u_int (xdrs, &objp->useconds))
++ return FALSE;
++ return TRUE;
++}
++
++bool_t
++xdr_fattr (XDR *xdrs, fattr *objp)
++{
++ register int32_t *buf;
++
++
++ if (xdrs->x_op == XDR_ENCODE) {
++ if (!xdr_ftype (xdrs, &objp->type))
++ return FALSE;
++ buf = XDR_INLINE (xdrs, 10 * BYTES_PER_XDR_UNIT);
++ if (buf == NULL) {
++ if (!xdr_u_int (xdrs, &objp->mode))
++ return FALSE;
++ if (!xdr_u_int (xdrs, &objp->nlink))
++ return FALSE;
++ if (!xdr_u_int (xdrs, &objp->uid))
++ return FALSE;
++ if (!xdr_u_int (xdrs, &objp->gid))
++ return FALSE;
++ if (!xdr_u_int (xdrs, &objp->size))
++ return FALSE;
++ if (!xdr_u_int (xdrs, &objp->blocksize))
++ return FALSE;
++ if (!xdr_u_int (xdrs, &objp->rdev))
++ return FALSE;
++ if (!xdr_u_int (xdrs, &objp->blocks))
++ return FALSE;
++ if (!xdr_u_int (xdrs, &objp->fsid))
++ return FALSE;
++ if (!xdr_u_int (xdrs, &objp->fileid))
++ return FALSE;
++
++ } else {
++ IXDR_PUT_U_LONG(buf, objp->mode);
++ IXDR_PUT_U_LONG(buf, objp->nlink);
++ IXDR_PUT_U_LONG(buf, objp->uid);
++ IXDR_PUT_U_LONG(buf, objp->gid);
++ IXDR_PUT_U_LONG(buf, objp->size);
++ IXDR_PUT_U_LONG(buf, objp->blocksize);
++ IXDR_PUT_U_LONG(buf, objp->rdev);
++ IXDR_PUT_U_LONG(buf, objp->blocks);
++ IXDR_PUT_U_LONG(buf, objp->fsid);
++ IXDR_PUT_U_LONG(buf, objp->fileid);
++ }
++ if (!xdr_nfstime (xdrs, &objp->atime))
++ return FALSE;
++ if (!xdr_nfstime (xdrs, &objp->mtime))
++ return FALSE;
++ if (!xdr_nfstime (xdrs, &objp->ctime))
++ return FALSE;
++ return TRUE;
++ } else if (xdrs->x_op == XDR_DECODE) {
++ if (!xdr_ftype (xdrs, &objp->type))
++ return FALSE;
++ buf = XDR_INLINE (xdrs, 10 * BYTES_PER_XDR_UNIT);
++ if (buf == NULL) {
++ if (!xdr_u_int (xdrs, &objp->mode))
++ return FALSE;
++ if (!xdr_u_int (xdrs, &objp->nlink))
++ return FALSE;
++ if (!xdr_u_int (xdrs, &objp->uid))
++ return FALSE;
++ if (!xdr_u_int (xdrs, &objp->gid))
++ return FALSE;
++ if (!xdr_u_int (xdrs, &objp->size))
++ return FALSE;
++ if (!xdr_u_int (xdrs, &objp->blocksize))
++ return FALSE;
++ if (!xdr_u_int (xdrs, &objp->rdev))
++ return FALSE;
++ if (!xdr_u_int (xdrs, &objp->blocks))
++ return FALSE;
++ if (!xdr_u_int (xdrs, &objp->fsid))
++ return FALSE;
++ if (!xdr_u_int (xdrs, &objp->fileid))
++ return FALSE;
++
++ } else {
++ objp->mode = IXDR_GET_U_LONG(buf);
++ objp->nlink = IXDR_GET_U_LONG(buf);
++ objp->uid = IXDR_GET_U_LONG(buf);
++ objp->gid = IXDR_GET_U_LONG(buf);
++ objp->size = IXDR_GET_U_LONG(buf);
++ objp->blocksize = IXDR_GET_U_LONG(buf);
++ objp->rdev = IXDR_GET_U_LONG(buf);
++ objp->blocks = IXDR_GET_U_LONG(buf);
++ objp->fsid = IXDR_GET_U_LONG(buf);
++ objp->fileid = IXDR_GET_U_LONG(buf);
++ }
++ if (!xdr_nfstime (xdrs, &objp->atime))
++ return FALSE;
++ if (!xdr_nfstime (xdrs, &objp->mtime))
++ return FALSE;
++ if (!xdr_nfstime (xdrs, &objp->ctime))
++ return FALSE;
++ return TRUE;
++ }
++
++ if (!xdr_ftype (xdrs, &objp->type))
++ return FALSE;
++ if (!xdr_u_int (xdrs, &objp->mode))
++ return FALSE;</