diff --git a/CHANGES b/CHANGES index 28dc8c8..e78f25c 100644 --- a/CHANGES +++ b/CHANGES @@ -1,14 +1,21 @@ Changelog for driftnet -$Id: CHANGES,v 1.17 2003/08/12 14:01:58 chris Exp $ +$Id: CHANGES,v 1.18 2003/10/16 11:56:37 chris Exp $ + + +Added support for reading packets from a pcap dump file (thanks to Rob Timko +and Joshua Wright for this); and for extracting URLs from HTTP requests (not +yet exposed in the user interface). + +Driftnet will now discard connections after 8Mb of data has been transferred. + +Fixed adjunct mode so that stdout is line-buffered, following a suggestion by +Jonas Jensen. 0.1.6 Changed the algorithm used to search for image start blocks to Boyer-Moore, for a performance improvement. Fixed some build errors. -Added support for reading packets from a pcap dump file (thanks to Rob Timko -and Joshua Wright for this). - 0.1.5 Allow user to save images by clicking on them. diff --git a/Makefile b/Makefile index 8e892cf..1dbd41f 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ # Copyright (c) 2001 Chris Lightfoot. All rights reserved. # Email: chris@ex-parrot.com; WWW: http://www.ex-parrot.com/~chris/ # -# $Id: Makefile,v 1.37 2003/10/16 11:56:37 chris Exp $ +# $Id: Makefile,v 1.38 2003/10/16 11:56:47 chris Exp $ # # @@ -111,438 +111,3 @@ nodepend: rm -f depend Makefile.bak # DO NOT DELETE - -audio.o: /usr/include/string.h /usr/include/features.h -audio.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h -audio.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stddef.h driftnet.h -audio.o: /usr/include/sys/types.h /usr/include/bits/types.h -audio.o: /usr/include/time.h /usr/include/endian.h /usr/include/bits/endian.h -audio.o: /usr/include/sys/select.h /usr/include/bits/select.h -audio.o: /usr/include/bits/sigset.h /usr/include/bits/time.h -audio.o: /usr/include/sys/sysmacros.h /usr/include/sys/socket.h -audio.o: /usr/include/sys/uio.h /usr/include/bits/uio.h -audio.o: /usr/include/bits/socket.h /usr/include/limits.h -audio.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/limits.h -audio.o: /usr/include/bits/sockaddr.h /usr/include/asm/socket.h -audio.o: /usr/include/asm/sockios.h /usr/include/netinet/in.h -audio.o: /usr/include/stdint.h /usr/include/bits/wchar.h -audio.o: /usr/include/bits/wordsize.h /usr/include/bits/in.h -audio.o: /usr/include/bits/byteswap.h /usr/include/arpa/inet.h -audio.o: /usr/include/sys/time.h /usr/include/stdio.h /usr/include/libio.h -audio.o: /usr/include/_G_config.h /usr/include/wchar.h /usr/include/gconv.h -audio.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stdarg.h -audio.o: /usr/include/bits/stdio_lim.h mpeghdr.h -mpeghdr.o: /usr/include/stdio.h /usr/include/features.h -mpeghdr.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h -mpeghdr.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stddef.h -mpeghdr.o: /usr/include/bits/types.h /usr/include/libio.h -mpeghdr.o: /usr/include/_G_config.h /usr/include/wchar.h -mpeghdr.o: /usr/include/bits/wchar.h /usr/include/gconv.h -mpeghdr.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stdarg.h -mpeghdr.o: /usr/include/bits/stdio_lim.h mpeghdr.h /usr/include/stdint.h -mpeghdr.o: /usr/include/bits/wordsize.h -gif.o: /usr/include/gif_lib.h img.h /usr/include/stdint.h -gif.o: /usr/include/features.h /usr/include/sys/cdefs.h -gif.o: /usr/include/gnu/stubs.h /usr/include/bits/wchar.h -gif.o: /usr/include/bits/wordsize.h /usr/include/stdio.h -gif.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stddef.h -gif.o: /usr/include/bits/types.h /usr/include/libio.h -gif.o: /usr/include/_G_config.h /usr/include/wchar.h /usr/include/gconv.h -gif.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stdarg.h -gif.o: /usr/include/bits/stdio_lim.h -img.o: /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h -img.o: /usr/include/gnu/stubs.h -img.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stddef.h -img.o: /usr/include/bits/types.h /usr/include/libio.h -img.o: /usr/include/_G_config.h /usr/include/wchar.h -img.o: /usr/include/bits/wchar.h /usr/include/gconv.h -img.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stdarg.h -img.o: /usr/include/bits/stdio_lim.h /usr/include/stdlib.h -img.o: /usr/include/alloca.h /usr/include/string.h driftnet.h -img.o: /usr/include/sys/types.h /usr/include/time.h /usr/include/endian.h -img.o: /usr/include/bits/endian.h /usr/include/sys/select.h -img.o: /usr/include/bits/select.h /usr/include/bits/sigset.h -img.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h -img.o: /usr/include/sys/socket.h /usr/include/sys/uio.h -img.o: /usr/include/bits/uio.h /usr/include/bits/socket.h -img.o: /usr/include/limits.h -img.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/limits.h -img.o: /usr/include/bits/sockaddr.h /usr/include/asm/socket.h -img.o: /usr/include/asm/sockios.h /usr/include/netinet/in.h -img.o: /usr/include/stdint.h /usr/include/bits/wordsize.h -img.o: /usr/include/bits/in.h /usr/include/bits/byteswap.h -img.o: /usr/include/arpa/inet.h /usr/include/sys/time.h img.h -jpeg.o: /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h -jpeg.o: /usr/include/gnu/stubs.h -jpeg.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stddef.h -jpeg.o: /usr/include/bits/types.h /usr/include/libio.h -jpeg.o: /usr/include/_G_config.h /usr/include/wchar.h -jpeg.o: /usr/include/bits/wchar.h /usr/include/gconv.h -jpeg.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stdarg.h -jpeg.o: /usr/include/bits/stdio_lim.h /usr/include/stdlib.h -jpeg.o: /usr/include/alloca.h /usr/include/setjmp.h -jpeg.o: /usr/include/bits/setjmp.h /usr/include/bits/sigset.h -jpeg.o: /usr/include/jpeglib.h /usr/include/jconfig.h /usr/include/jmorecfg.h -jpeg.o: driftnet.h /usr/include/sys/types.h /usr/include/time.h -jpeg.o: /usr/include/endian.h /usr/include/bits/endian.h -jpeg.o: /usr/include/sys/select.h /usr/include/bits/select.h -jpeg.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h -jpeg.o: /usr/include/sys/socket.h /usr/include/sys/uio.h -jpeg.o: /usr/include/bits/uio.h /usr/include/bits/socket.h -jpeg.o: /usr/include/limits.h -jpeg.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/limits.h -jpeg.o: /usr/include/bits/sockaddr.h /usr/include/asm/socket.h -jpeg.o: /usr/include/asm/sockios.h /usr/include/netinet/in.h -jpeg.o: /usr/include/stdint.h /usr/include/bits/wordsize.h -jpeg.o: /usr/include/bits/in.h /usr/include/bits/byteswap.h -jpeg.o: /usr/include/arpa/inet.h /usr/include/sys/time.h img.h -png.o: /usr/include/png.h /usr/include/zlib.h /usr/include/zconf.h -png.o: /usr/include/pngconf.h /usr/include/stdio.h /usr/include/features.h -png.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h -png.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stddef.h -png.o: /usr/include/bits/types.h /usr/include/libio.h -png.o: /usr/include/_G_config.h /usr/include/wchar.h -png.o: /usr/include/bits/wchar.h /usr/include/gconv.h -png.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stdarg.h -png.o: /usr/include/bits/stdio_lim.h /usr/include/sys/types.h -png.o: /usr/include/time.h /usr/include/endian.h /usr/include/bits/endian.h -png.o: /usr/include/sys/select.h /usr/include/bits/select.h -png.o: /usr/include/bits/sigset.h /usr/include/bits/time.h -png.o: /usr/include/sys/sysmacros.h /usr/include/setjmp.h -png.o: /usr/include/bits/setjmp.h /usr/include/string.h img.h -png.o: /usr/include/stdint.h /usr/include/bits/wordsize.h -driftnet.o: /usr/include/assert.h /usr/include/features.h -driftnet.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h -driftnet.o: /usr/include/dirent.h /usr/include/bits/types.h -driftnet.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stddef.h -driftnet.o: /usr/include/bits/dirent.h /usr/include/bits/posix1_lim.h -driftnet.o: /usr/include/bits/local_lim.h /usr/include/linux/limits.h -driftnet.o: /usr/include/errno.h /usr/include/bits/errno.h -driftnet.o: /usr/include/linux/errno.h /usr/include/asm/errno.h -driftnet.o: /usr/include/pcap/pcap.h /usr/include/sys/types.h -driftnet.o: /usr/include/time.h /usr/include/endian.h -driftnet.o: /usr/include/bits/endian.h /usr/include/sys/select.h -driftnet.o: /usr/include/bits/select.h /usr/include/bits/sigset.h -driftnet.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h -driftnet.o: /usr/include/sys/time.h /usr/include/pcap/net/bpf.h -driftnet.o: /usr/include/stdio.h /usr/include/libio.h -driftnet.o: /usr/include/_G_config.h /usr/include/wchar.h -driftnet.o: /usr/include/bits/wchar.h /usr/include/gconv.h -driftnet.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stdarg.h -driftnet.o: /usr/include/bits/stdio_lim.h /usr/include/netinet/in.h -driftnet.o: /usr/include/stdint.h /usr/include/bits/wordsize.h -driftnet.o: /usr/include/bits/socket.h /usr/include/limits.h -driftnet.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/limits.h -driftnet.o: /usr/include/bits/sockaddr.h /usr/include/asm/socket.h -driftnet.o: /usr/include/asm/sockios.h /usr/include/bits/in.h -driftnet.o: /usr/include/bits/byteswap.h /usr/include/arpa/inet.h -driftnet.o: /usr/include/netinet/in_systm.h /usr/include/netinet/ip.h -driftnet.o: /usr/include/netinet/tcp.h /usr/include/ctype.h -driftnet.o: /usr/include/fcntl.h /usr/include/bits/fcntl.h -driftnet.o: /usr/include/pthread.h /usr/include/sched.h -driftnet.o: /usr/include/bits/sched.h /usr/include/signal.h -driftnet.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h -driftnet.o: /usr/include/bits/sigthread.h /usr/include/stdlib.h -driftnet.o: /usr/include/alloca.h /usr/include/string.h /usr/include/unistd.h -driftnet.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h -driftnet.o: /usr/include/sys/stat.h /usr/include/bits/stat.h -driftnet.o: /usr/include/sys/wait.h /usr/include/sys/resource.h -driftnet.o: /usr/include/bits/resource.h /usr/include/bits/waitflags.h -driftnet.o: /usr/include/bits/waitstatus.h driftnet.h -driftnet.o: /usr/include/sys/socket.h /usr/include/sys/uio.h -driftnet.o: /usr/include/bits/uio.h -image.o: /usr/include/stdio.h /usr/include/features.h -image.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h -image.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stddef.h -image.o: /usr/include/bits/types.h /usr/include/libio.h -image.o: /usr/include/_G_config.h /usr/include/wchar.h -image.o: /usr/include/bits/wchar.h /usr/include/gconv.h -image.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stdarg.h -image.o: /usr/include/bits/stdio_lim.h /usr/include/stdlib.h -image.o: /usr/include/alloca.h /usr/include/string.h -image.o: /usr/include/netinet/in.h /usr/include/stdint.h -image.o: /usr/include/bits/wordsize.h /usr/include/bits/socket.h -image.o: /usr/include/limits.h -image.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/limits.h -image.o: /usr/include/sys/types.h /usr/include/time.h /usr/include/endian.h -image.o: /usr/include/bits/endian.h /usr/include/sys/select.h -image.o: /usr/include/bits/select.h /usr/include/bits/sigset.h -image.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h -image.o: /usr/include/bits/sockaddr.h /usr/include/asm/socket.h -image.o: /usr/include/asm/sockios.h /usr/include/bits/in.h -image.o: /usr/include/bits/byteswap.h img.h driftnet.h -image.o: /usr/include/sys/socket.h /usr/include/sys/uio.h -image.o: /usr/include/bits/uio.h /usr/include/arpa/inet.h -image.o: /usr/include/sys/time.h -display.o: /usr/include/sys/types.h /usr/include/features.h -display.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h -display.o: /usr/include/bits/types.h -display.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stddef.h -display.o: /usr/include/time.h /usr/include/endian.h -display.o: /usr/include/bits/endian.h /usr/include/sys/select.h -display.o: /usr/include/bits/select.h /usr/include/bits/sigset.h -display.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h -display.o: /usr/include/errno.h /usr/include/bits/errno.h -display.o: /usr/include/linux/errno.h /usr/include/asm/errno.h -display.o: /usr/include/fcntl.h /usr/include/bits/fcntl.h -display.o: /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h -display.o: /usr/include/wchar.h /usr/include/bits/wchar.h -display.o: /usr/include/gconv.h -display.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stdarg.h -display.o: /usr/include/bits/stdio_lim.h /usr/include/stdlib.h -display.o: /usr/include/alloca.h /usr/include/string.h /usr/include/unistd.h -display.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h -display.o: /usr/include/gtk-1.2/gtk/gtk.h /usr/include/gtk-1.2/gdk/gdk.h -display.o: /usr/include/gtk-1.2/gdk/gdktypes.h /usr/include/glib-1.2/glib.h -display.o: /usr/lib/glib/include/glibconfig.h /usr/include/limits.h -display.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/limits.h -display.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/float.h -display.o: /usr/include/gtk-1.2/gdk/gdkcursors.h -display.o: /usr/include/gtk-1.2/gdk/gdkrgb.h -display.o: /usr/include/gtk-1.2/gtk/gtkaccelgroup.h -display.o: /usr/include/gtk-1.2/gtk/gtkobject.h -display.o: /usr/include/gtk-1.2/gtk/gtkarg.h -display.o: /usr/include/gtk-1.2/gtk/gtktypeutils.h -display.o: /usr/include/gtk-1.2/gtk/gtktypebuiltins.h -display.o: /usr/include/gtk-1.2/gtk/gtkenums.h -display.o: /usr/include/gtk-1.2/gtk/gtkdebug.h -display.o: /usr/include/gtk-1.2/gtk/gtkaccellabel.h -display.o: /usr/include/gtk-1.2/gtk/gtklabel.h -display.o: /usr/include/gtk-1.2/gtk/gtkmisc.h -display.o: /usr/include/gtk-1.2/gtk/gtkwidget.h -display.o: /usr/include/gtk-1.2/gtk/gtkadjustment.h -display.o: /usr/include/gtk-1.2/gtk/gtkdata.h -display.o: /usr/include/gtk-1.2/gtk/gtkstyle.h -display.o: /usr/include/gtk-1.2/gtk/gtkalignment.h -display.o: /usr/include/gtk-1.2/gtk/gtkbin.h -display.o: /usr/include/gtk-1.2/gtk/gtkcontainer.h -display.o: /usr/include/gtk-1.2/gtk/gtkaspectframe.h -display.o: /usr/include/gtk-1.2/gtk/gtkframe.h -display.o: /usr/include/gtk-1.2/gtk/gtkarrow.h -display.o: /usr/include/gtk-1.2/gtk/gtkbindings.h -display.o: /usr/include/gtk-1.2/gtk/gtkbox.h -display.o: /usr/include/gtk-1.2/gtk/gtkbbox.h -display.o: /usr/include/gtk-1.2/gtk/gtkbutton.h -display.o: /usr/include/gtk-1.2/gtk/gtkcalendar.h -display.o: /usr/include/gtk-1.2/gtk/gtksignal.h -display.o: /usr/include/gtk-1.2/gtk/gtkmarshal.h -display.o: /usr/include/gtk-1.2/gtk/gtkcheckbutton.h -display.o: /usr/include/gtk-1.2/gtk/gtktogglebutton.h -display.o: /usr/include/gtk-1.2/gtk/gtkcheckmenuitem.h -display.o: /usr/include/gtk-1.2/gtk/gtkmenuitem.h -display.o: /usr/include/gtk-1.2/gtk/gtkitem.h -display.o: /usr/include/gtk-1.2/gtk/gtkclist.h -display.o: /usr/include/gtk-1.2/gtk/gtkhscrollbar.h -display.o: /usr/include/gtk-1.2/gtk/gtkscrollbar.h -display.o: /usr/include/gtk-1.2/gtk/gtkrange.h -display.o: /usr/include/gtk-1.2/gtk/gtkvscrollbar.h -display.o: /usr/include/gtk-1.2/gtk/gtkcolorsel.h -display.o: /usr/include/gtk-1.2/gtk/gtkwindow.h -display.o: /usr/include/gtk-1.2/gtk/gtkvbox.h -display.o: /usr/include/gtk-1.2/gtk/gtkpreview.h -display.o: /usr/include/gtk-1.2/gtk/gtkentry.h -display.o: /usr/include/gtk-1.2/gtk/gtkeditable.h -display.o: /usr/include/gtk-1.2/gtk/gtkhbox.h -display.o: /usr/include/gtk-1.2/gtk/gtkmain.h -display.o: /usr/include/gtk-1.2/gtk/gtkscale.h -display.o: /usr/include/gtk-1.2/gtk/gtkhscale.h -display.o: /usr/include/gtk-1.2/gtk/gtktable.h -display.o: /usr/include/gtk-1.2/gtk/gtkeventbox.h -display.o: /usr/include/gtk-1.2/gtk/gtkcombo.h -display.o: /usr/include/gtk-1.2/gtk/gtkcompat.h -display.o: /usr/include/gtk-1.2/gtk/gtkctree.h -display.o: /usr/include/gtk-1.2/gtk/gtkcurve.h -display.o: /usr/include/gtk-1.2/gtk/gtkdrawingarea.h -display.o: /usr/include/gtk-1.2/gtk/gtkdialog.h -display.o: /usr/include/gtk-1.2/gtk/gtkdnd.h -display.o: /usr/include/gtk-1.2/gtk/gtkselection.h -display.o: /usr/include/gtk-1.2/gtk/gtkfeatures.h -display.o: /usr/include/gtk-1.2/gtk/gtkfilesel.h -display.o: /usr/include/gtk-1.2/gtk/gtkfixed.h -display.o: /usr/include/gtk-1.2/gtk/gtkfontsel.h -display.o: /usr/include/gtk-1.2/gtk/gtknotebook.h -display.o: /usr/include/gtk-1.2/gtk/gtkgamma.h -display.o: /usr/include/gtk-1.2/gtk/gtkgc.h -display.o: /usr/include/gtk-1.2/gtk/gtkhandlebox.h -display.o: /usr/include/gtk-1.2/gtk/gtkhbbox.h -display.o: /usr/include/gtk-1.2/gtk/gtkhpaned.h -display.o: /usr/include/gtk-1.2/gtk/gtkpaned.h -display.o: /usr/include/gtk-1.2/gtk/gtkhruler.h -display.o: /usr/include/gtk-1.2/gtk/gtkruler.h -display.o: /usr/include/gtk-1.2/gtk/gtkhseparator.h -display.o: /usr/include/gtk-1.2/gtk/gtkseparator.h -display.o: /usr/include/gtk-1.2/gtk/gtkimage.h -display.o: /usr/include/gtk-1.2/gtk/gtkinputdialog.h -display.o: /usr/include/gtk-1.2/gtk/gtkitemfactory.h -display.o: /usr/include/gtk-1.2/gtk/gtkmenufactory.h -display.o: /usr/include/gtk-1.2/gtk/gtklayout.h -display.o: /usr/include/gtk-1.2/gtk/gtklist.h -display.o: /usr/include/gtk-1.2/gtk/gtklistitem.h -display.o: /usr/include/gtk-1.2/gtk/gtkmenu.h -display.o: /usr/include/gtk-1.2/gtk/gtkmenushell.h -display.o: /usr/include/gtk-1.2/gtk/gtkmenubar.h -display.o: /usr/include/gtk-1.2/gtk/gtkoptionmenu.h -display.o: /usr/include/gtk-1.2/gtk/gtkpacker.h -display.o: /usr/include/gtk-1.2/gtk/gtkpixmap.h -display.o: /usr/include/gtk-1.2/gtk/gtkplug.h -display.o: /usr/include/gtk-1.2/gtk/gtkprogress.h -display.o: /usr/include/gtk-1.2/gtk/gtkprogressbar.h -display.o: /usr/include/gtk-1.2/gtk/gtkradiobutton.h -display.o: /usr/include/gtk-1.2/gtk/gtkradiomenuitem.h -display.o: /usr/include/gtk-1.2/gtk/gtkrc.h -display.o: /usr/include/gtk-1.2/gtk/gtkscrolledwindow.h -display.o: /usr/include/gtk-1.2/gtk/gtkviewport.h -display.o: /usr/include/gtk-1.2/gtk/gtksocket.h -display.o: /usr/include/gtk-1.2/gtk/gtkspinbutton.h -display.o: /usr/include/gtk-1.2/gtk/gtkstatusbar.h -display.o: /usr/include/gtk-1.2/gtk/gtktearoffmenuitem.h -display.o: /usr/include/gtk-1.2/gtk/gtktext.h -display.o: /usr/include/gtk-1.2/gtk/gtkthemes.h -display.o: /usr/include/gtk-1.2/gtk/gtktipsquery.h -display.o: /usr/include/gtk-1.2/gtk/gtktoolbar.h -display.o: /usr/include/gtk-1.2/gtk/gtktooltips.h -display.o: /usr/include/gtk-1.2/gtk/gtktree.h -display.o: /usr/include/gtk-1.2/gtk/gtktreeitem.h -display.o: /usr/include/gtk-1.2/gtk/gtkvbbox.h -display.o: /usr/include/gtk-1.2/gtk/gtkvpaned.h -display.o: /usr/include/gtk-1.2/gtk/gtkvruler.h -display.o: /usr/include/gtk-1.2/gtk/gtkvscale.h -display.o: /usr/include/gtk-1.2/gtk/gtkvseparator.h -display.o: /usr/include/gtk-1.2/gdk/gdkx.h -display.o: /usr/include/gtk-1.2/gdk/gdkprivate.h -display.o: /usr/X11R6/include/X11/Xlib.h /usr/X11R6/include/X11/X.h -display.o: /usr/X11R6/include/X11/Xfuncproto.h -display.o: /usr/X11R6/include/X11/Xosdefs.h /usr/X11R6/include/X11/Xutil.h -display.o: /usr/include/sys/stat.h /usr/include/bits/stat.h driftnet.h -display.o: /usr/include/sys/socket.h /usr/include/sys/uio.h -display.o: /usr/include/bits/uio.h /usr/include/bits/socket.h -display.o: /usr/include/bits/sockaddr.h /usr/include/asm/socket.h -display.o: /usr/include/asm/sockios.h /usr/include/netinet/in.h -display.o: /usr/include/stdint.h /usr/include/bits/wordsize.h -display.o: /usr/include/bits/in.h /usr/include/bits/byteswap.h -display.o: /usr/include/arpa/inet.h /usr/include/sys/time.h img.h -playaudio.o: /usr/include/sys/types.h /usr/include/features.h -playaudio.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h -playaudio.o: /usr/include/bits/types.h -playaudio.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stddef.h -playaudio.o: /usr/include/time.h /usr/include/endian.h -playaudio.o: /usr/include/bits/endian.h /usr/include/sys/select.h -playaudio.o: /usr/include/bits/select.h /usr/include/bits/sigset.h -playaudio.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h -playaudio.o: /usr/include/errno.h /usr/include/bits/errno.h -playaudio.o: /usr/include/linux/errno.h /usr/include/asm/errno.h -playaudio.o: /usr/include/pthread.h /usr/include/sched.h -playaudio.o: /usr/include/bits/sched.h /usr/include/signal.h -playaudio.o: /usr/include/bits/pthreadtypes.h /usr/include/bits/initspin.h -playaudio.o: /usr/include/bits/sigthread.h /usr/include/stdio.h -playaudio.o: /usr/include/libio.h /usr/include/_G_config.h -playaudio.o: /usr/include/wchar.h /usr/include/bits/wchar.h -playaudio.o: /usr/include/gconv.h -playaudio.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stdarg.h -playaudio.o: /usr/include/bits/stdio_lim.h /usr/include/stdlib.h -playaudio.o: /usr/include/alloca.h /usr/include/string.h -playaudio.o: /usr/include/unistd.h /usr/include/bits/posix_opt.h -playaudio.o: /usr/include/bits/confname.h /usr/include/sys/wait.h -playaudio.o: /usr/include/sys/resource.h /usr/include/bits/resource.h -playaudio.o: /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h -playaudio.o: driftnet.h /usr/include/sys/socket.h /usr/include/sys/uio.h -playaudio.o: /usr/include/bits/uio.h /usr/include/bits/socket.h -playaudio.o: /usr/include/limits.h -playaudio.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/limits.h -playaudio.o: /usr/include/bits/sockaddr.h /usr/include/asm/socket.h -playaudio.o: /usr/include/asm/sockios.h /usr/include/netinet/in.h -playaudio.o: /usr/include/stdint.h /usr/include/bits/wordsize.h -playaudio.o: /usr/include/bits/in.h /usr/include/bits/byteswap.h -playaudio.o: /usr/include/arpa/inet.h /usr/include/sys/time.h -connection.o: /usr/include/sys/types.h /usr/include/features.h -connection.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h -connection.o: /usr/include/bits/types.h -connection.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stddef.h -connection.o: /usr/include/time.h /usr/include/endian.h -connection.o: /usr/include/bits/endian.h /usr/include/sys/select.h -connection.o: /usr/include/bits/select.h /usr/include/bits/sigset.h -connection.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h -connection.o: /usr/include/assert.h /usr/include/stdio.h /usr/include/libio.h -connection.o: /usr/include/_G_config.h /usr/include/wchar.h -connection.o: /usr/include/bits/wchar.h /usr/include/gconv.h -connection.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stdarg.h -connection.o: /usr/include/bits/stdio_lim.h /usr/include/stdlib.h -connection.o: /usr/include/alloca.h /usr/include/string.h driftnet.h -connection.o: /usr/include/sys/socket.h /usr/include/sys/uio.h -connection.o: /usr/include/bits/uio.h /usr/include/bits/socket.h -connection.o: /usr/include/limits.h -connection.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/limits.h -connection.o: /usr/include/bits/sockaddr.h /usr/include/asm/socket.h -connection.o: /usr/include/asm/sockios.h /usr/include/netinet/in.h -connection.o: /usr/include/stdint.h /usr/include/bits/wordsize.h -connection.o: /usr/include/bits/in.h /usr/include/bits/byteswap.h -connection.o: /usr/include/arpa/inet.h /usr/include/sys/time.h -media.o: /usr/include/assert.h /usr/include/features.h -media.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h -media.o: /usr/include/dirent.h /usr/include/bits/types.h -media.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stddef.h -media.o: /usr/include/bits/dirent.h /usr/include/bits/posix1_lim.h -media.o: /usr/include/bits/local_lim.h /usr/include/linux/limits.h -media.o: /usr/include/fcntl.h /usr/include/bits/fcntl.h -media.o: /usr/include/sys/types.h /usr/include/time.h /usr/include/endian.h -media.o: /usr/include/bits/endian.h /usr/include/sys/select.h -media.o: /usr/include/bits/select.h /usr/include/bits/sigset.h -media.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h -media.o: /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h -media.o: /usr/include/wchar.h /usr/include/bits/wchar.h /usr/include/gconv.h -media.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stdarg.h -media.o: /usr/include/bits/stdio_lim.h /usr/include/stdlib.h -media.o: /usr/include/alloca.h /usr/include/string.h /usr/include/unistd.h -media.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h -media.o: driftnet.h /usr/include/sys/socket.h /usr/include/sys/uio.h -media.o: /usr/include/bits/uio.h /usr/include/bits/socket.h -media.o: /usr/include/limits.h -media.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/limits.h -media.o: /usr/include/bits/sockaddr.h /usr/include/asm/socket.h -media.o: /usr/include/asm/sockios.h /usr/include/netinet/in.h -media.o: /usr/include/stdint.h /usr/include/bits/wordsize.h -media.o: /usr/include/bits/in.h /usr/include/bits/byteswap.h -media.o: /usr/include/arpa/inet.h /usr/include/sys/time.h -util.o: /usr/include/stdlib.h /usr/include/features.h -util.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h -util.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stddef.h -util.o: /usr/include/alloca.h /usr/include/string.h driftnet.h -util.o: /usr/include/sys/types.h /usr/include/bits/types.h -util.o: /usr/include/time.h /usr/include/endian.h /usr/include/bits/endian.h -util.o: /usr/include/sys/select.h /usr/include/bits/select.h -util.o: /usr/include/bits/sigset.h /usr/include/bits/time.h -util.o: /usr/include/sys/sysmacros.h /usr/include/sys/socket.h -util.o: /usr/include/sys/uio.h /usr/include/bits/uio.h -util.o: /usr/include/bits/socket.h /usr/include/limits.h -util.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/limits.h -util.o: /usr/include/bits/sockaddr.h /usr/include/asm/socket.h -util.o: /usr/include/asm/sockios.h /usr/include/netinet/in.h -util.o: /usr/include/stdint.h /usr/include/bits/wchar.h -util.o: /usr/include/bits/wordsize.h /usr/include/bits/in.h -util.o: /usr/include/bits/byteswap.h /usr/include/arpa/inet.h -util.o: /usr/include/sys/time.h /usr/include/stdio.h /usr/include/libio.h -util.o: /usr/include/_G_config.h /usr/include/wchar.h /usr/include/gconv.h -util.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stdarg.h -util.o: /usr/include/bits/stdio_lim.h -http.o: /usr/include/sys/types.h /usr/include/features.h -http.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h -http.o: /usr/include/bits/types.h -http.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stddef.h -http.o: /usr/include/time.h /usr/include/endian.h /usr/include/bits/endian.h -http.o: /usr/include/sys/select.h /usr/include/bits/select.h -http.o: /usr/include/bits/sigset.h /usr/include/bits/time.h -http.o: /usr/include/sys/sysmacros.h /usr/include/stdlib.h -http.o: /usr/include/alloca.h /usr/include/string.h driftnet.h -http.o: /usr/include/sys/socket.h /usr/include/sys/uio.h -http.o: /usr/include/bits/uio.h /usr/include/bits/socket.h -http.o: /usr/include/limits.h -http.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/limits.h -http.o: /usr/include/bits/sockaddr.h /usr/include/asm/socket.h -http.o: /usr/include/asm/sockios.h /usr/include/netinet/in.h -http.o: /usr/include/stdint.h /usr/include/bits/wchar.h -http.o: /usr/include/bits/wordsize.h /usr/include/bits/in.h -http.o: /usr/include/bits/byteswap.h /usr/include/arpa/inet.h -http.o: /usr/include/sys/time.h /usr/include/stdio.h /usr/include/libio.h -http.o: /usr/include/_G_config.h /usr/include/wchar.h /usr/include/gconv.h -http.o: /usr/lib/gcc-lib/i386-redhat-linux/2.96/include/stdarg.h -http.o: /usr/include/bits/stdio_lim.h diff --git a/connection.c b/connection.c index 5b7411c..e2f48bf 100644 --- a/connection.c +++ b/connection.c @@ -7,7 +7,7 @@ * */ -static const char rcsid[] = "$Id: connection.c,v 1.6 2003/08/25 12:34:21 chris Exp $"; +static const char rcsid[] = "$Id: connection.c,v 1.7 2003/10/16 11:56:37 chris Exp $"; #include @@ -19,8 +19,9 @@ static const char rcsid[] = "$Id: connection.c,v 1.6 2003/08/25 12:34:21 chris E #include "driftnet.h" -/* connection_new: - * Allocate a new connection structure between the given addresses. */ +/* connection_new SOURCE DEST SPORT DPORT + * Allocate a new connection structure for data sent from SOURCE:SPORT to + * DEST:DPORT. */ connection connection_new(const struct in_addr *src, const struct in_addr *dst, const short int sport, const short int dport) { connection c; alloc_struct(_connection, c); @@ -35,8 +36,8 @@ connection connection_new(const struct in_addr *src, const struct in_addr *dst, return c; } -/* connection_delete: - * Free the named connection structure. */ +/* connection_delete CONNECTION + * Free CONNECTION. */ void connection_delete(connection c) { struct datablock *b; for (b = c->blocks; b;) { @@ -49,8 +50,8 @@ void connection_delete(connection c) { free(c); } -/* connection_push: - * Put some more data in a connection. */ +/* connection_push CONNECTION DATA OFFSET LENGTH + * Add LENGTH bytes of DATA received at OFFSET in the stream to CONNECTION. */ void connection_push(connection c, const unsigned char *data, unsigned int off, unsigned int len) { struct datablock *B, *b, *bl, BZ = {0}; int a; @@ -58,8 +59,9 @@ void connection_push(connection c, const unsigned char *data, unsigned int off, assert(c->alloc > 0); if (off + len > c->alloc) { /* Allocate more memory. */ - while (off + len > c->alloc) + do c->alloc *= 2; + while (off + len > c->alloc); c->data = (unsigned char*)xrealloc(c->data, c->alloc); } diff --git a/driftnet.c b/driftnet.c index e168cf1..16fb6da 100644 --- a/driftnet.c +++ b/driftnet.c @@ -7,7 +7,7 @@ * */ -static const char rcsid[] = "$Id: driftnet.c,v 1.31 2003/08/25 12:23:43 chris Exp $"; +static const char rcsid[] = "$Id: driftnet.c,v 1.32 2003/10/16 11:56:37 chris Exp $"; #undef NDEBUG @@ -142,6 +142,7 @@ connection *find_connection(const struct in_addr *src, const struct in_addr *dst /* sweep_connections: * Free finished connection slots. */ #define TIMEOUT 5 +#define MAXCONNECTIONDATA (8 * 1024 * 1024) void sweep_connections(void) { time_t now; @@ -152,8 +153,11 @@ void sweep_connections(void) { connection c = *C; /* We discard connections which have seen no activity for TIMEOUT * or for which a FIN has been seen and for which there are no - * gaps in the stream. */ - if ((now - c->last) > TIMEOUT || (c->fin && (!c->blocks || !c->blocks->next))) { + * gaps in the stream, or where more than MAXCONNECTIONDATA have + * been captured. */ + if ((now - c->last) > TIMEOUT + || (c->fin && (!c->blocks || !c->blocks->next)) + || c->len > MAXCONNECTIONDATA) { connection_extract_media(c, extract_type); connection_delete(c); *C = NULL; @@ -608,6 +612,12 @@ int main(int argc, char *argv[]) { if (beep && adjunct) fprintf(stderr, PROGNAME": can't beep in adjunct mode\n"); + /* In adjunct mode, it's important that the attached program gets + * notification of images in a timely manner. Make stdout line-buffered + * for this reason. */ + if (adjunct) + setvbuf(stdout, NULL, _IOLBF, 0); + /* If a directory name has not been specified, then we need to create one. * Otherwise, check that it's a directory into which we may write files. */ if (tmpdir) { diff --git a/driftnet.h b/driftnet.h index 319c11b..93e318f 100644 --- a/driftnet.h +++ b/driftnet.h @@ -5,7 +5,7 @@ * Copyright (c) 2001 Chris Lightfoot. All rights reserved. * Email: chris@ex-parrot.com; WWW: http://www.ex-parrot.com/~chris/ * - * $Id: driftnet.h,v 1.11 2003/08/25 12:34:21 chris Exp $ + * $Id: driftnet.h,v 1.12 2003/10/16 11:56:37 chris Exp $ * */ @@ -28,7 +28,7 @@ #define alloc_struct(S, p) do { struct S as__z = {0}; p = xmalloc(sizeof *p); *p = as__z; } while (0) /* enum mediatype: - * Characterise types of media which we can extract. */ + * Bit field to characterise types of media which we can extract. */ enum mediatype { m_image = 1, m_audio = 2, m_text = 4 }; #define NMEDIATYPES 5 /* keep up to date with media.c */