mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-12-21 05:18:59 +02:00
4436e94916
git-svn-id: svn://svn.openwrt.org/openwrt/trunk/openwrt@1201 3c298f89-4303-0410-b956-a3cf2f4a3e73
205 lines
4.5 KiB
Diff
205 lines
4.5 KiB
Diff
diff -Nur dsniff-2.3/configure dsniff-2.3.patched/configure
|
|
--- dsniff-2.3/configure 2005-06-11 18:13:59.000000000 +0200
|
|
+++ dsniff-2.3.patched/configure 2005-06-11 18:14:37.000000000 +0200
|
|
@@ -16,6 +16,8 @@
|
|
ac_help="$ac_help
|
|
--with-db=DIR use Berkeley DB (with --enable-compat185) in DIR"
|
|
ac_help="$ac_help
|
|
+ --with-gdbm=DIR use GNU DBM in DIR"
|
|
+ac_help="$ac_help
|
|
--with-libpcap=DIR use libpcap in DIR"
|
|
ac_help="$ac_help
|
|
--with-libnet=DIR use libnet in DIR"
|
|
@@ -3051,7 +3053,40 @@
|
|
|
|
fi
|
|
|
|
+echo $ac_n "checking for libgdbm""... $ac_c" 1>&6
|
|
+echo "configure:3059: checking for libgdbm" >&5
|
|
+# Check whether --with-gdbm or --without-gdbm was given.
|
|
+if test "${with_gdbm+set}" = set; then
|
|
+ withval="$with_gdbm"
|
|
+ case "$withval" in
|
|
+ yes|no)
|
|
+ echo "$ac_t""no" 1>&6
|
|
+ ;;
|
|
+ *)
|
|
+ echo "$ac_t""$withval" 1>&6
|
|
+ if test -f $withval/include/gdbm.h -a -f $withval/lib/libgdbm.a; then
|
|
+ owd=`pwd`
|
|
+ if cd $withval; then withval=`pwd`; cd $owd; fi
|
|
+ DBINC="-I$withval/include"
|
|
+ DBLIB="-L$withval/lib -lgdbm"
|
|
+ else
|
|
+ { echo "configure: error: gdbm.h or libgdbm.a not found in $withval" 1>&2; exit 1; }
|
|
+ fi
|
|
+ ;;
|
|
+ esac
|
|
+else
|
|
+ if test -f ${prefix}/include/gdbm.h; then
|
|
+ LNETINC="-I${prefix}/include"
|
|
+ LNETLIB="-L${prefix}/lib -lgdbm"
|
|
+ elif test -f /usr/include/gdbm.h; then
|
|
+ LNETLIB="-lgdbm"
|
|
+ else
|
|
+ echo "$ac_t""no" 1>&6
|
|
+ { echo "configure: error: libgdbm not found" 1>&2; exit 1; }
|
|
+ fi
|
|
+ echo "$ac_t""yes" 1>&6
|
|
|
|
+fi
|
|
|
|
|
|
echo $ac_n "checking for libnet""... $ac_c" 1>&6
|
|
diff -Nur dsniff-2.3/record.c dsniff-2.3.patched/record.c
|
|
--- dsniff-2.3/record.c 2000-11-14 16:51:02.000000000 +0100
|
|
+++ dsniff-2.3.patched/record.c 2005-06-11 18:14:56.000000000 +0200
|
|
@@ -13,12 +13,7 @@
|
|
#include <stdio.h>
|
|
#include <time.h>
|
|
#include <md5.h>
|
|
-#ifdef HAVE_DB_185_H
|
|
-#define DB_LIBRARY_COMPATIBILITY_API
|
|
-#include <db_185.h>
|
|
-#elif HAVE_DB_H
|
|
-#include <db.h>
|
|
-#endif
|
|
+#include <gdbm.h>
|
|
#include <libnet.h>
|
|
#include "options.h"
|
|
#include "record.h"
|
|
@@ -34,7 +29,7 @@
|
|
struct netobj data;
|
|
};
|
|
|
|
-static DB *db;
|
|
+GDBM_FILE dbf;
|
|
|
|
static int
|
|
xdr_rec(XDR *xdrs, struct rec *rec)
|
|
@@ -61,7 +56,6 @@
|
|
|
|
tm = localtime(&rec->time);
|
|
strftime(tstr, sizeof(tstr), "%x %X", tm);
|
|
-
|
|
srcp = libnet_host_lookup(rec->src, Opt_dns);
|
|
dstp = libnet_host_lookup(rec->dst, Opt_dns);
|
|
|
|
@@ -86,10 +80,10 @@
|
|
fflush(stdout);
|
|
}
|
|
|
|
-static DBT *
|
|
+static datum
|
|
record_hash(struct rec *rec)
|
|
{
|
|
- static DBT key;
|
|
+ static datum key;
|
|
static u_char hash[16];
|
|
MD5_CTX ctx;
|
|
|
|
@@ -102,16 +96,16 @@
|
|
MD5Update(&ctx, rec->data.n_bytes, rec->data.n_len);
|
|
MD5Final(hash, &ctx);
|
|
|
|
- key.data = hash;
|
|
- key.size = sizeof(hash);
|
|
+ key.dptr = hash;
|
|
+ key.dsize = sizeof(hash);
|
|
|
|
- return (&key);
|
|
+ return (key);
|
|
}
|
|
|
|
static int
|
|
record_save(struct rec *rec)
|
|
{
|
|
- DBT *key, data;
|
|
+ datum key, data;
|
|
XDR xdrs;
|
|
u_char buf[2048];
|
|
|
|
@@ -120,15 +114,15 @@
|
|
if (!xdr_rec(&xdrs, rec))
|
|
return (0);
|
|
|
|
- data.data = buf;
|
|
- data.size = xdr_getpos(&xdrs);
|
|
+ data.dptr = buf;
|
|
+ data.dsize = xdr_getpos(&xdrs);
|
|
|
|
xdr_destroy(&xdrs);
|
|
|
|
key = record_hash(rec);
|
|
|
|
- if (db->put(db, key, &data, R_NOOVERWRITE) == 0)
|
|
- db->sync(db, 0);
|
|
+ if (gdbm_store(dbf, key, data, GDBM_INSERT) == 0)
|
|
+ gdbm_sync(dbf);
|
|
|
|
return (1);
|
|
}
|
|
@@ -136,18 +130,22 @@
|
|
void
|
|
record_dump(void)
|
|
{
|
|
- DBT key, data;
|
|
+ datum nextkey, key, content;
|
|
XDR xdrs;
|
|
struct rec rec;
|
|
|
|
- while (db->seq(db, &key, &data, R_NEXT) == 0) {
|
|
+ key = gdbm_firstkey(dbf);
|
|
+ while (key.dptr) {
|
|
+ nextkey = gdbm_nextkey(dbf, key);
|
|
+ content = gdbm_fetch(dbf, key);
|
|
memset(&rec, 0, sizeof(rec));
|
|
- xdrmem_create(&xdrs, data.data, data.size, XDR_DECODE);
|
|
-
|
|
+ xdrmem_create(&xdrs, content.dptr, content.dsize, XDR_DECODE);
|
|
if (xdr_rec(&xdrs, &rec)) {
|
|
record_print(&rec);
|
|
}
|
|
xdr_destroy(&xdrs);
|
|
+ free(key.dptr);
|
|
+ key = nextkey;
|
|
}
|
|
}
|
|
|
|
@@ -155,16 +153,23 @@
|
|
record_init(char *file)
|
|
{
|
|
int flags, mode;
|
|
-
|
|
+ // needed for gdbm_open, which does not have the option to create
|
|
+ // a database in memory
|
|
+ if(file == NULL) {
|
|
+ char *record_file = "/tmp/.dsniff.db";
|
|
+ file = record_file;
|
|
+ }
|
|
+
|
|
if (Opt_read) {
|
|
- flags = O_RDONLY;
|
|
+ flags = GDBM_READER;
|
|
mode = 0;
|
|
}
|
|
else {
|
|
- flags = O_RDWR|O_CREAT;
|
|
+ flags = GDBM_WRCREAT;
|
|
mode = S_IRUSR|S_IWUSR;
|
|
}
|
|
- if ((db = dbopen(file, flags, mode, DB_BTREE, NULL)) == NULL)
|
|
+
|
|
+ if ((dbf = gdbm_open(file, 1024, flags, mode, NULL)) == NULL)
|
|
return (0);
|
|
|
|
return (1);
|
|
@@ -203,6 +208,6 @@
|
|
void
|
|
record_close(void)
|
|
{
|
|
- db->close(db);
|
|
+ gdbm_close(dbf);
|
|
}
|
|
|