diff -ruN dsniff-2.3/dsniff.8 dsniff-2.3-kos/dsniff.8 --- dsniff-2.3/dsniff.8 2000-12-15 11:05:36.000000000 -0500 +++ dsniff-2.3-kos/dsniff.8 2004-08-01 17:09:02.000000000 -0400 @@ -59,6 +59,8 @@ .IP "\fB-w \fIfile\fR" Write sniffed sessions to \fIsavefile\fR rather than parsing and printing them out. +.IP "\fB-R \fIpcap savefile\fR" +Read in from previous capture file rather than a live connection. .IP "\fIexpression\fR" Specify a tcpdump(8) filter expression to select traffic to sniff. .LP diff -ruN dsniff-2.3/dsniff.c dsniff-2.3-kos/dsniff.c --- dsniff-2.3/dsniff.c 2000-12-01 16:27:15.000000000 -0500 +++ dsniff-2.3-kos/dsniff.c 2004-08-01 17:10:20.000000000 -0400 @@ -45,7 +45,8 @@ { fprintf(stderr, "Version: " VERSION "\n" "Usage: dsniff [-cdmn] [-i interface] [-s snaplen] [-f services]\n" - " [-t trigger[,...]] [-r|-w savefile] [expression]\n"); + " [-t trigger[,...]] [-r|-w savefile] [expression]\n" + " [-R pcapfile]\n"); exit(1); } @@ -75,7 +76,7 @@ services = savefile = triggers = NULL; - while ((c = getopt(argc, argv, "cdf:i:mnr:s:t:w:h?V")) != -1) { + while ((c = getopt(argc, argv, "cdf:i:mnr:s:t:w:h?VR:")) != -1) { switch (c) { case 'c': Opt_client = 1; @@ -88,6 +89,7 @@ break; case 'i': nids_params.device = optarg; + nids_params.filename = NULL; break; case 'm': Opt_magic = 1; @@ -110,6 +112,10 @@ Opt_write = 1; savefile = optarg; break; + case 'R': + nids_params.filename = optarg; + nids_params.device = NULL; + break; default: usage(); } @@ -163,11 +169,15 @@ } else nids_register_tcp(trigger_tcp); - if (nids_params.pcap_filter != NULL) { - warnx("listening on %s [%s]", nids_params.device, - nids_params.pcap_filter); + if (nids_params.filename != NULL) { + warnx("reading from %s", nids_params.filename); + } else { + if (nids_params.pcap_filter != NULL) { + warnx("listening on %s [%s]", nids_params.device, + nids_params.pcap_filter); + } + else warnx("listening on %s", nids_params.device); } - else warnx("listening on %s", nids_params.device); nids_run();