mirror of
git://slackware.nl/current.git
synced 2024-12-30 10:24:23 +01:00
788 lines
26 KiB
Diff
788 lines
26 KiB
Diff
|
--- netcat-1.10.orig/Makefile
|
||
|
+++ netcat-1.10/Makefile
|
||
|
@@ -14,8 +14,8 @@
|
||
|
XLIBS = # xtra libs if necessary?
|
||
|
# -Bstatic for sunos, -static for gcc, etc. You want this, trust me.
|
||
|
STATIC =
|
||
|
-CC = cc $(CFLAGS)
|
||
|
-LD = $(CC) -s # linker; defaults to stripped executables
|
||
|
+CC = gcc $(CFLAGS)
|
||
|
+LD = $(CC) # linker; defaults to unstripped executables
|
||
|
o = o # object extension
|
||
|
|
||
|
ALL = nc
|
||
|
--- netcat-1.10.orig/debian/nc.1
|
||
|
+++ netcat-1.10/debian/nc.1
|
||
|
@@ -0,0 +1,146 @@
|
||
|
+.TH NC 1
|
||
|
+.SH NAME
|
||
|
+nc \- TCP/IP swiss army knife
|
||
|
+.SH SYNOPSIS
|
||
|
+.B nc
|
||
|
+.I "[-options] hostname port[s] [ports] ..."
|
||
|
+.br
|
||
|
+.B nc
|
||
|
+.I "-l -p port [-options] [hostname] [port]"
|
||
|
+.SH "DESCRIPTION"
|
||
|
+.B netcat
|
||
|
+is a simple unix utility which reads and writes data across network
|
||
|
+connections, using TCP or UDP protocol. It is designed to be a
|
||
|
+reliable "back-end" tool that can be used directly or easily driven by
|
||
|
+other programs and scripts. At the same time, it is a feature-rich
|
||
|
+network debugging and exploration tool, since it can create almost any
|
||
|
+kind of connection you would need and has several interesting built-in
|
||
|
+capabilities. Netcat, or "nc" as the actual program is named, should
|
||
|
+have been supplied long ago as another one of those cryptic but
|
||
|
+standard Unix tools.
|
||
|
+.P
|
||
|
+In the simplest usage, "nc host port" creates a TCP connection to the
|
||
|
+given port on the given target host. Your standard input is then sent
|
||
|
+to the host, and anything that comes back across the connection is
|
||
|
+sent to your standard output. This continues indefinitely, until the
|
||
|
+network side of the connection shuts down. Note that this behavior is
|
||
|
+different from most other applications which shut everything down and
|
||
|
+exit after an end-of-file on the standard input.
|
||
|
+.P
|
||
|
+Netcat can also function as a server, by listening for inbound
|
||
|
+connections on arbitrary ports and then doing the same reading and
|
||
|
+writing. With minor limitations, netcat doesn't really care if it
|
||
|
+runs in "client" or "server" mode -- it still shovels data back and
|
||
|
+forth until there isn't any more left. In either mode, shutdown can be
|
||
|
+forced after a configurable time of inactivity on the network side.
|
||
|
+.P
|
||
|
+And it can do this via UDP too, so netcat is possibly the "udp
|
||
|
+telnet-like" application you always wanted for testing your UDP-mode
|
||
|
+servers. UDP, as the "U" implies, gives less reliable data
|
||
|
+transmission than TCP connections and some systems may have trouble
|
||
|
+sending large amounts of data that way, but it's still a useful
|
||
|
+capability to have.
|
||
|
+.P
|
||
|
+You may be asking "why not just use telnet to connect to arbitrary
|
||
|
+ports?" Valid question, and here are some reasons. Telnet has the
|
||
|
+"standard input EOF" problem, so one must introduce calculated delays
|
||
|
+in driving scripts to allow network output to finish. This is the
|
||
|
+main reason netcat stays running until the *network* side closes.
|
||
|
+Telnet also will not transfer arbitrary binary data, because certain
|
||
|
+characters are interpreted as telnet options and are thus removed from
|
||
|
+the data stream. Telnet also emits some of its diagnostic messages to
|
||
|
+standard output, where netcat keeps such things religiously separated
|
||
|
+from its *output* and will never modify any of the real data in
|
||
|
+transit unless you *really* want it to. And of course telnet is
|
||
|
+incapable of listening for inbound connections, or using UDP instead.
|
||
|
+Netcat doesn't have any of these limitations, is much smaller and
|
||
|
+faster than telnet, and has many other advantages.
|
||
|
+.SH OPTIONS
|
||
|
+.TP 13
|
||
|
+.I \-g gateway
|
||
|
+source-routing hop point[s], up to 8
|
||
|
+.TP 13
|
||
|
+.I \-G num
|
||
|
+source-routing pointer: 4, 8, 12, ...
|
||
|
+.TP 13
|
||
|
+.I \-h
|
||
|
+display help
|
||
|
+.TP 13
|
||
|
+.I \-i secs
|
||
|
+delay interval for lines sent, ports scanned
|
||
|
+.TP 13
|
||
|
+.I \-l
|
||
|
+listen mode, for inbound connects
|
||
|
+.TP 13
|
||
|
+.I \-n
|
||
|
+numeric-only IP addresses, no DNS
|
||
|
+.TP 13
|
||
|
+.I \-o file
|
||
|
+hex dump of traffic
|
||
|
+.TP 13
|
||
|
+.I \-p port
|
||
|
+local port number (port numbers can be individual or ranges: lo-hi
|
||
|
+[inclusive])
|
||
|
+.TP 13
|
||
|
+.I \-q seconds
|
||
|
+after EOF is detected, wait the specified number of seconds and then
|
||
|
+quit.
|
||
|
+.TP 13
|
||
|
+.I \-b
|
||
|
+allow UDP broadcasts
|
||
|
+.TP 13
|
||
|
+.I \-r
|
||
|
+randomize local and remote ports
|
||
|
+.TP 13
|
||
|
+.I \-s addr
|
||
|
+local source address
|
||
|
+.TP 13
|
||
|
+.I \-t
|
||
|
+enable telnet negotiation
|
||
|
+.TP 13
|
||
|
+.I \-e prog
|
||
|
+specify program to exec after connect (use with caution)
|
||
|
+.TP 13
|
||
|
+.I \-u
|
||
|
+UDP mode
|
||
|
+.TP 13
|
||
|
+.I \-v
|
||
|
+verbose [use twice to be more verbose]
|
||
|
+.TP 13
|
||
|
+.I \-w secs
|
||
|
+timeout for connects and final net reads
|
||
|
+.TP 13
|
||
|
+.I \-z
|
||
|
+zero-I/O mode [used for scanning]
|
||
|
+.SH COPYRIGHT
|
||
|
+Netcat is entirely my own creation, although plenty of other code was
|
||
|
+used as examples. It is freely given away to the Internet community
|
||
|
+in the hope that it will be useful, with no restrictions except giving
|
||
|
+credit where it is due. No GPLs, Berkeley copyrights or any of that
|
||
|
+nonsense. The author assumes NO responsibility for how anyone uses
|
||
|
+it. If netcat makes you rich somehow and you're feeling generous,
|
||
|
+mail me a check. If you are affiliated in any way with Microsoft
|
||
|
+Network, get a life. Always ski in control. Comments, questions, and
|
||
|
+patches to hobbit@avian.org.
|
||
|
+.SH BUGS
|
||
|
+Efforts have been made to have netcat "do the right thing" in all its
|
||
|
+various modes. If you believe that it is doing the wrong thing under
|
||
|
+whatever circumstances, please notify me and tell me how you think it
|
||
|
+should behave. If netcat is not able to do some task you think up,
|
||
|
+minor tweaks to the code will probably fix that. It provides a basic
|
||
|
+and easily-modified template for writing other network applications,
|
||
|
+and I certainly encourage people to make custom mods and send in any
|
||
|
+improvements they make to it. Continued feedback from the Internet
|
||
|
+community is always welcome!
|
||
|
+.P
|
||
|
+Some port names in /etc/services contain hyphens -- netcat currently
|
||
|
+will not correctly parse those, so specify ranges using numbers if you
|
||
|
+can.
|
||
|
+.SH "SEE ALSO"
|
||
|
+/usr/share/doc/netcat/README.gz
|
||
|
+.SH AUTHOR
|
||
|
+This manual page was written by Joey Hess <joeyh@debian.org> and
|
||
|
+Robert Woodcock <rcw@debian.org>, cribbing heavily from Netcat's
|
||
|
+README file.
|
||
|
+.P
|
||
|
+Netcat was written by a guy we know as the Hobbit <hobbit@avian.org>.
|
||
|
--- netcat-1.10.orig/debian/control
|
||
|
+++ netcat-1.10/debian/control
|
||
|
@@ -0,0 +1,18 @@
|
||
|
+Source: netcat
|
||
|
+Section: net
|
||
|
+Priority: optional
|
||
|
+Maintainer: Decklin Foster <decklin@red-bean.com>
|
||
|
+Standards-Version: 3.5.6
|
||
|
+Build-Depends: debhelper (>= 3.0.0)
|
||
|
+
|
||
|
+Package: netcat
|
||
|
+Architecture: any
|
||
|
+Depends: ${shlibs:Depends}
|
||
|
+Description: TCP/IP swiss army knife
|
||
|
+ A simple Unix utility which reads and writes data across network
|
||
|
+ connections using TCP or UDP protocol. It is designed to be a reliable
|
||
|
+ "back-end" tool that can be used directly or easily driven by other
|
||
|
+ programs and scripts. At the same time it is a feature-rich network
|
||
|
+ debugging and exploration tool, since it can create almost any kind of
|
||
|
+ connection you would need and has several interesting built-in
|
||
|
+ capabilities.
|
||
|
--- netcat-1.10.orig/debian/netcat.examples
|
||
|
+++ netcat-1.10/debian/netcat.examples
|
||
|
@@ -0,0 +1,2 @@
|
||
|
+data/
|
||
|
+scripts/
|
||
|
--- netcat-1.10.orig/debian/rules
|
||
|
+++ netcat-1.10/debian/rules
|
||
|
@@ -0,0 +1,64 @@
|
||
|
+#!/usr/bin/make -f
|
||
|
+# Sample debian/rules that uses debhelper.
|
||
|
+# This file is public domain software, originally written by Joey Hess.
|
||
|
+
|
||
|
+# Uncomment this to turn on verbose mode.
|
||
|
+#export DH_VERBOSE=1
|
||
|
+
|
||
|
+# This is the debhelper compatibility version to use.
|
||
|
+export DH_COMPAT=3
|
||
|
+
|
||
|
+DEB_CFLAGS = -O2
|
||
|
+ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
|
||
|
+DEB_CFLAGS += -g
|
||
|
+endif
|
||
|
+
|
||
|
+build: build-stamp
|
||
|
+build-stamp:
|
||
|
+ dh_testdir
|
||
|
+ $(MAKE) linux CFLAGS='$(DEB_CFLAGS)' STATIC='' \
|
||
|
+ DFLAGS='-DLINUX -DTELNET -DGAPING_SECURITY_HOLE'
|
||
|
+ touch build-stamp
|
||
|
+
|
||
|
+clean:
|
||
|
+ dh_testdir
|
||
|
+ dh_testroot
|
||
|
+ rm -f build-stamp
|
||
|
+ # Add here commands to clean up after the build process.
|
||
|
+ -$(MAKE) clean
|
||
|
+ dh_clean
|
||
|
+
|
||
|
+install:
|
||
|
+ dh_testdir
|
||
|
+ dh_testroot
|
||
|
+ dh_clean -k
|
||
|
+ dh_installdirs
|
||
|
+ install -m 0755 nc debian/netcat/usr/bin
|
||
|
+ ln -s nc debian/netcat/usr/bin/netcat
|
||
|
+
|
||
|
+# Build architecture-independent files here.
|
||
|
+binary-indep: build install
|
||
|
+# We have nothing to do by default.
|
||
|
+
|
||
|
+# Build architecture-dependent files here.
|
||
|
+binary-arch: build install
|
||
|
+ dh_testdir
|
||
|
+ dh_testroot
|
||
|
+ dh_installdocs
|
||
|
+ dh_installexamples
|
||
|
+# dh_installmenu
|
||
|
+ dh_installman
|
||
|
+ ln -s nc.1.gz debian/netcat/usr/share/man/man1/netcat.1.gz
|
||
|
+ dh_installchangelogs Changelog
|
||
|
+ dh_link
|
||
|
+ dh_strip
|
||
|
+ dh_compress -Xexamples
|
||
|
+ dh_fixperms
|
||
|
+ dh_installdeb
|
||
|
+ dh_shlibdeps
|
||
|
+ dh_gencontrol
|
||
|
+ dh_md5sums
|
||
|
+ dh_builddeb
|
||
|
+
|
||
|
+binary: binary-indep binary-arch
|
||
|
+.PHONY: build clean binary-indep binary-arch binary install
|
||
|
--- netcat-1.10.orig/debian/netcat.copyright
|
||
|
+++ netcat-1.10/debian/netcat.copyright
|
||
|
@@ -0,0 +1,12 @@
|
||
|
+The netcat Debian package was originally created by Michael Shields
|
||
|
+<shields@crosslink.net>. It is currently maintained by Decklin Foster
|
||
|
+<decklin@red-bean.com>.
|
||
|
+
|
||
|
+Netcat was written by *Hobbit* <hobbit@avian.org>, and can be
|
||
|
+downloaded from <URL:ftp://avian.org/src/hacks/>.
|
||
|
+
|
||
|
+The following permission statement is excerpted from `netcat.blurb':
|
||
|
+
|
||
|
+ Netcat and the associated package is a product of Avian Research,
|
||
|
+ and is freely available in full source form with no restrictions
|
||
|
+ save an obligation to give credit where due.
|
||
|
--- netcat-1.10.orig/debian/changelog
|
||
|
+++ netcat-1.10/debian/changelog
|
||
|
@@ -0,0 +1,157 @@
|
||
|
+netcat (1.10-21) unstable; urgency=low
|
||
|
+
|
||
|
+ * Documented -e in man page. (Closes: #131269)
|
||
|
+
|
||
|
+ -- Decklin Foster <decklin@red-bean.com> Tue, 29 Jan 2002 16:30:30 -0500
|
||
|
+
|
||
|
+netcat (1.10-20) unstable; urgency=low
|
||
|
+
|
||
|
+ * Moved around shutdown call in -q patch to be more compatible with standard
|
||
|
+ nc. Thanks to Dmitry Chernyak <cdl@inkasbank.ru> for pointing this out.
|
||
|
+ * Applied UDP broadcast patch from NetBSD (Closes: #108182)
|
||
|
+ - Updated man page to document this option
|
||
|
+ - Also applied patch to use inet_aton instead of IADDR_NONE (which is
|
||
|
+ obsolete), so that it will work.
|
||
|
+ * Bumped Standards-Version to 3.5.6
|
||
|
+
|
||
|
+ -- Decklin Foster <decklin@red-bean.com> Tue, 9 Oct 2001 18:08:24 -0400
|
||
|
+
|
||
|
+netcat (1.10-19) unstable; urgency=low
|
||
|
+
|
||
|
+ * Reupload source package (my typo fix was lost due to a misconfigured
|
||
|
+ dput). This should really fix #97583.
|
||
|
+
|
||
|
+ -- Decklin Foster <decklin@red-bean.com> Fri, 1 Jun 2001 18:18:17 -0400
|
||
|
+
|
||
|
+netcat (1.10-18) unstable; urgency=low
|
||
|
+
|
||
|
+ * Applied patch from Joe Pepin <jdp@ll.mit.edu> to fix multiple timeouts
|
||
|
+ (Closes: #97583)
|
||
|
+ * Lookup services with getservbyname even if resolving hostnames with DNS is
|
||
|
+ disabled (Closes: #98902)
|
||
|
+ * Install a symlink to the nc binary called 'netcat'. (Closes: #97625)
|
||
|
+
|
||
|
+ -- Decklin Foster <decklin@red-bean.com> Fri, 1 Jun 2001 13:13:25 -0400
|
||
|
+
|
||
|
+netcat (1.10-17) unstable; urgency=low
|
||
|
+
|
||
|
+ * Added include for <resolv.h>, which is needed to compile with recent
|
||
|
+ versions of glibc.
|
||
|
+ * Added patch to always print "connection refused" messages, without having
|
||
|
+ to turn on the other junk that -v prints. (Closes: #65413)
|
||
|
+ * Upgraded to debhelper 3 and policy 3.5.2.0.
|
||
|
+ * Added DEB_BUILD_OPTIONS =~ /debug/ support.
|
||
|
+
|
||
|
+ -- Decklin Foster <decklin@red-bean.com> Wed, 28 Feb 2001 16:53:33 -0500
|
||
|
+
|
||
|
+netcat (1.10-16) unstable; urgency=low
|
||
|
+
|
||
|
+ * Rebuild with dpkg 1.8.1.2 to fix bad .diff.gz
|
||
|
+
|
||
|
+ -- Decklin Foster <decklin@red-bean.com> Mon, 8 Jan 2001 14:54:48 -0500
|
||
|
+
|
||
|
+netcat (1.10-15) unstable; urgency=low
|
||
|
+
|
||
|
+ * Add shutdown() patch back in (Closes: #81384)
|
||
|
+ * updated /usr/doc -> /usr/share/doc in man page.
|
||
|
+
|
||
|
+ -- Decklin Foster <decklin@red-bean.com> Sat, 6 Jan 2001 08:58:21 -0500
|
||
|
+
|
||
|
+netcat (1.10-14) unstable; urgency=low
|
||
|
+
|
||
|
+ * Ship with -e turned on. (Closes: #66355)
|
||
|
+ * Fix debian/copyright typo.
|
||
|
+
|
||
|
+ -- Decklin Foster <decklin@red-bean.com> Sat, 30 Dec 2000 13:27:33 -0500
|
||
|
+
|
||
|
+netcat (1.10-13) unstable; urgency=low
|
||
|
+
|
||
|
+ * New maintainer. (Closes: #80305)
|
||
|
+ * Updated debhelper rules to v2. Also cleaned up/moved some targets and dh_*
|
||
|
+ options.
|
||
|
+ * Bumped Standards-Version to 3.2.1.0.
|
||
|
+ * Compress README file, as per policy.
|
||
|
+ * Applied -q patch properly (Closes: #62402). I think that this is also what
|
||
|
+ caused #71616, but I'll hold off on closing that one.
|
||
|
+ * Added README.Debian explanation about -e. This is possibly the problem
|
||
|
+ behind #66355, so maybe I can close that as well.
|
||
|
+
|
||
|
+ -- Decklin Foster <decklin@red-bean.com> Thu, 28 Dec 2000 19:02:56 -0500
|
||
|
+
|
||
|
+netcat (1.10-12.1) frozen unstable; urgency=low
|
||
|
+
|
||
|
+ * Non-maintained upload.
|
||
|
+ * Rename arm() to arm_timer() (Closes: #56390)
|
||
|
+
|
||
|
+ -- Edward Brocklesby <ejb@styx.uucp.openprojects.net> Tue, 22 Feb 2000 12:59:12 +0000
|
||
|
+
|
||
|
+netcat (1.10-12) unstable; urgency=low
|
||
|
+
|
||
|
+ * Fixed bugs #45669 and #45675 (removed extraneous sleep(1) command and also
|
||
|
+ removed the "punt!" message; added -q feature)
|
||
|
+
|
||
|
+ -- Robert S. Edmonds <stu@novare.net> Wed, 22 Sep 1999 19:29:47 -0400
|
||
|
+
|
||
|
+netcat (1.10-11) unstable; urgency=low
|
||
|
+
|
||
|
+ * Applied patch from Graham Stoney <greyham@research.canon.com.au> that
|
||
|
+ fixes deadlock if the server doesn't close its end until it reads EOF on
|
||
|
+ the connection
|
||
|
+
|
||
|
+ -- Robert S. Edmonds <stu@novare.net> Mon, 13 Sep 1999 21:53:59 -0400
|
||
|
+
|
||
|
+netcat (1.10-10) unstable; urgency=low
|
||
|
+
|
||
|
+ * Man page fixed (/usr/doc/netcat/README.gz). Fixes bug #35811
|
||
|
+
|
||
|
+ -- Robert S. Edmonds <edmonds@freewwweb.com> Sat, 12 Jun 1999 15:21:31 -0400
|
||
|
+
|
||
|
+netcat (1.10-9) unstable; urgency=low
|
||
|
+
|
||
|
+ * Compiled with -DTELNET.
|
||
|
+
|
||
|
+ -- Robert S. Edmonds <edmonds@freewwweb.com> Wed, 4 Nov 1998 09:27:40 -0500
|
||
|
+
|
||
|
+netcat (1.10-8) unstable frozen; urgency=low
|
||
|
+
|
||
|
+ * At the request of many users (and a few bug reports) the binary is now
|
||
|
+ going to be called "nc" as it always was.
|
||
|
+
|
||
|
+ -- Robert S. Edmonds <edmonds@freewwweb.com> Sun, 26 Apr 1998 19:36:00 -0400
|
||
|
+
|
||
|
+netcat (1.10-7) unstable; urgency=low
|
||
|
+
|
||
|
+ * Fixed lintian error possible-name-space-pollution. (binary nc -> netcat)
|
||
|
+
|
||
|
+ -- Robert S. Edmonds <edmonds@freewwweb.com> Mon, 30 Mar 1998 19:11:49 -0500
|
||
|
+
|
||
|
+netcat (1.10-6) unstable; urgency=low
|
||
|
+
|
||
|
+ * Upgraded to Standards-Version 2.4.0.0.
|
||
|
+
|
||
|
+ -- Robert S. Edmonds <edmonds@freewwweb.com> Tue, 17 Feb 1998 13:06:22 -0500
|
||
|
+
|
||
|
+netcat (1.10-5) unstable; urgency=low
|
||
|
+
|
||
|
+ * Merged in changes from Robert Woodcock <rcw@oz.net>.
|
||
|
+ - Man page updates.
|
||
|
+ - Compiled with -DTELNET
|
||
|
+ * Removed bogus menu file.
|
||
|
+ * Full source upload.
|
||
|
+
|
||
|
+ -- Joey Hess <joeyh@master.debian.org> Sat, 10 Jan 1998 13:53:59 -0500
|
||
|
+
|
||
|
+netcat (1.10-4) unstable; urgency=low
|
||
|
+
|
||
|
+ * Updated to "new" source format. (#9489)
|
||
|
+ * Libc6. (#11716)
|
||
|
+ * Orphaned the package.
|
||
|
+ * Fixed up description in control file to conform with policy, short
|
||
|
+ description doesn't include package name now.
|
||
|
+ * Fixed documentation location to comply with current policy. (#13194,
|
||
|
+ #11530, #9785)
|
||
|
+ * Wrote a man page. (#9785, #5304, #6647)
|
||
|
+ * Rewrote debian/rules to use debhelper.
|
||
|
+ * Install upstream changelog.
|
||
|
+
|
||
|
+ -- Joey Hess <joeyh@master.debian.org> Sat, 10 Jan 1998 00:53:45 -0500
|
||
|
--- netcat-1.10.orig/debian/netcat.manpages
|
||
|
+++ netcat-1.10/debian/netcat.manpages
|
||
|
@@ -0,0 +1 @@
|
||
|
+debian/nc.1
|
||
|
--- netcat-1.10.orig/debian/netcat.README.Debian
|
||
|
+++ netcat-1.10/debian/netcat.README.Debian
|
||
|
@@ -0,0 +1,17 @@
|
||
|
+netcat for Debian
|
||
|
+-----------------
|
||
|
+
|
||
|
+netcat has been compiled with -DGAPING_SECURITY_HOLE turned on. I do
|
||
|
+not believe this is as much of a security hole as the author makes it
|
||
|
+out to be, *if* you know what you're doing (but then, if you didn't,
|
||
|
+you'd still be using telnet ;-)). Since the spawned program will run
|
||
|
+as whatever user started netcat, don't use -e as root. You have been
|
||
|
+warned, so if some cracker breaks into your system due to your own
|
||
|
+stupidity, don't blame me.
|
||
|
+
|
||
|
+A symlink to the netcat binary called 'netcat' has been installed.
|
||
|
+However, the canonical name is still 'nc'. If you use netcat on other
|
||
|
+systems, it will probably only be installed as 'nc', so keep this in
|
||
|
+mind when writing scripts.
|
||
|
+
|
||
|
+ -- Decklin Foster <decklin@red-bean.com> Fri, 1 Jun 2001 13:38:10 -0400
|
||
|
--- netcat-1.10.orig/debian/netcat.dirs
|
||
|
+++ netcat-1.10/debian/netcat.dirs
|
||
|
@@ -0,0 +1 @@
|
||
|
+usr/bin
|
||
|
--- netcat-1.10.orig/debian/netcat.docs
|
||
|
+++ netcat-1.10/debian/netcat.docs
|
||
|
@@ -0,0 +1 @@
|
||
|
+README
|
||
|
--- netcat-1.10.orig/netcat.c
|
||
|
+++ netcat-1.10/netcat.c
|
||
|
@@ -59,6 +59,14 @@
|
||
|
#define RAND rand
|
||
|
#endif /* HAVE_RANDOM */
|
||
|
|
||
|
+/* #define POSIX_SETJMP /* If you want timeouts to work under the */
|
||
|
+ /* posixly correct, yet non-standard glibc-2.x*/
|
||
|
+ /* then define this- you may also need it for */
|
||
|
+ /* IRIX, and maybe some others */
|
||
|
+#ifdef LINUX
|
||
|
+#define POSIX_SETJMP
|
||
|
+#endif
|
||
|
+
|
||
|
/* includes: */
|
||
|
#include <sys/time.h> /* timeval, time_t */
|
||
|
#include <setjmp.h> /* jmp_buf et al */
|
||
|
@@ -73,6 +81,9 @@
|
||
|
#include <errno.h>
|
||
|
#include <signal.h>
|
||
|
#include <fcntl.h> /* O_WRONLY et al */
|
||
|
+#ifdef LINUX /* Linux needs the HERE, oh well. */
|
||
|
+#include <resolv.h>
|
||
|
+#endif
|
||
|
|
||
|
/* handy stuff: */
|
||
|
#define SA struct sockaddr /* socket overgeneralization braindeath */
|
||
|
@@ -106,7 +117,11 @@
|
||
|
#define PINF struct port_poop
|
||
|
|
||
|
/* globals: */
|
||
|
+#ifdef POSIX_SETJMP
|
||
|
+sigjmp_buf jbuf; /* timer crud */
|
||
|
+#else
|
||
|
jmp_buf jbuf; /* timer crud */
|
||
|
+#endif
|
||
|
int jval = 0; /* timer crud */
|
||
|
int netfd = -1;
|
||
|
int ofd = 0; /* hexdump output fd */
|
||
|
@@ -151,6 +166,7 @@
|
||
|
|
||
|
/* global cmd flags: */
|
||
|
USHORT o_alla = 0;
|
||
|
+USHORT o_allowbroad = 0;
|
||
|
unsigned int o_interval = 0;
|
||
|
USHORT o_listen = 0;
|
||
|
USHORT o_nflag = 0;
|
||
|
@@ -160,6 +176,7 @@
|
||
|
USHORT o_verbose = 0;
|
||
|
unsigned int o_wait = 0;
|
||
|
USHORT o_zero = 0;
|
||
|
+int o_quit = -1; /* 0 == quit-now; >0 == quit after o_quit seconds */
|
||
|
/* o_tn in optional section */
|
||
|
|
||
|
/* Debug macro: squirt whatever message and sleep a bit so we can see it go
|
||
|
@@ -211,7 +228,6 @@
|
||
|
o_verbose = 1;
|
||
|
holler (str, p1, p2, p3, p4, p5, p6);
|
||
|
close (netfd);
|
||
|
- sleep (1);
|
||
|
exit (1);
|
||
|
} /* bail */
|
||
|
|
||
|
@@ -222,7 +238,15 @@
|
||
|
errno = 0;
|
||
|
if (o_verbose > 1) /* normally we don't care */
|
||
|
bail (wrote_txt, wrote_net, wrote_out);
|
||
|
- bail (" punt!");
|
||
|
+ bail ("");
|
||
|
+}
|
||
|
+
|
||
|
+/* quit :
|
||
|
+ handler for a "-q" timeout (exit 0 instead of 1) */
|
||
|
+void quit()
|
||
|
+{
|
||
|
+ close(netfd);
|
||
|
+ exit(0);
|
||
|
}
|
||
|
|
||
|
/* timeout and other signal handling cruft */
|
||
|
@@ -232,12 +256,16 @@
|
||
|
alarm (0);
|
||
|
if (jval == 0)
|
||
|
bail ("spurious timer interrupt!");
|
||
|
+#ifdef POSIX_SETJMP
|
||
|
+ siglongjmp (jbuf, jval);
|
||
|
+#else
|
||
|
longjmp (jbuf, jval);
|
||
|
+#endif
|
||
|
}
|
||
|
|
||
|
-/* arm :
|
||
|
+/* arm_timer :
|
||
|
set the timer. Zero secs arg means unarm */
|
||
|
-void arm (num, secs)
|
||
|
+void arm_timer (num, secs)
|
||
|
unsigned int num;
|
||
|
unsigned int secs;
|
||
|
{
|
||
|
@@ -250,7 +278,7 @@
|
||
|
alarm (secs);
|
||
|
jval = num;
|
||
|
} /* if secs */
|
||
|
-} /* arm */
|
||
|
+} /* arm_timer */
|
||
|
|
||
|
/* Hmalloc :
|
||
|
malloc up what I want, rounded up to *4, and pre-zeroed. Either succeeds
|
||
|
@@ -333,6 +361,7 @@
|
||
|
struct in_addr iaddr;
|
||
|
register HINF * poop = NULL;
|
||
|
register int x;
|
||
|
+ int rc;
|
||
|
|
||
|
/* I really want to strangle the twit who dreamed up all these sockaddr and
|
||
|
hostent abstractions, and then forced them all to be incompatible with
|
||
|
@@ -361,9 +390,9 @@
|
||
|
bail ("gethostpoop fuxored");
|
||
|
strcpy (poop->name, unknown); /* preload it */
|
||
|
/* see wzv:workarounds.c for dg/ux return-a-struct inet_addr lossage */
|
||
|
- iaddr.s_addr = inet_addr (name);
|
||
|
+ rc = inet_aton(name, &iaddr);
|
||
|
|
||
|
- if (iaddr.s_addr == INADDR_NONE) { /* here's the great split: names... */
|
||
|
+ if (rc == 0) { /* here's the great split: names... */
|
||
|
if (numeric)
|
||
|
bail ("Can't parse %s as an IP address", name);
|
||
|
hostent = gethostbyname (name);
|
||
|
@@ -444,8 +473,10 @@
|
||
|
if (pstring) /* one or the other, pleeze */
|
||
|
return (0);
|
||
|
x = pnum;
|
||
|
- if (o_nflag) /* go faster, skip getservbyblah */
|
||
|
- goto gp_finish;
|
||
|
+ /* disabled, see bug #98902. if this is *really* slowing someone
|
||
|
+ * down I'll reconsider. */
|
||
|
+ /* if (o_nflag) */ /* go faster, skip getservbyblah */
|
||
|
+ /* goto gp_finish; */
|
||
|
y = htons (x); /* gotta do this -- see Fig.1 below */
|
||
|
servent = getservbyport (y, whichp);
|
||
|
if (servent) {
|
||
|
@@ -620,6 +651,13 @@
|
||
|
rr = setsockopt (nnetfd, SOL_SOCKET, SO_REUSEADDR, &x, sizeof (x));
|
||
|
if (rr == -1)
|
||
|
holler ("nnetfd reuseaddr failed"); /* ??? */
|
||
|
+#ifdef SO_BROADCAST
|
||
|
+ if (o_allowbroad) {
|
||
|
+ rr = setsockopt (nnetfd, SOL_SOCKET, SO_BROADCAST, &x, sizeof (x));
|
||
|
+ if (rr == -1)
|
||
|
+ holler ("nnetfd reuseaddr failed"); /* ??? */
|
||
|
+ }
|
||
|
+#endif
|
||
|
#ifdef SO_REUSEPORT /* doesnt exist everywhere... */
|
||
|
rr = setsockopt (nnetfd, SOL_SOCKET, SO_REUSEPORT, &x, sizeof (x));
|
||
|
if (rr == -1)
|
||
|
@@ -743,14 +781,23 @@
|
||
|
} /* if gatesidx */
|
||
|
|
||
|
/* wrap connect inside a timer, and hit it */
|
||
|
- arm (1, o_wait);
|
||
|
+ arm_timer (1, o_wait);
|
||
|
+#ifdef POSIX_SETJMP
|
||
|
+ if (sigsetjmp (jbuf,1) == 0) {
|
||
|
+ rr = connect (nnetfd, (SA *)remend, sizeof (SA));
|
||
|
+ } else { /* setjmp: connect failed... */
|
||
|
+ rr = -1;
|
||
|
+ errno = ETIMEDOUT; /* fake it */
|
||
|
+ }
|
||
|
+#else
|
||
|
if (setjmp (jbuf) == 0) {
|
||
|
rr = connect (nnetfd, (SA *)remend, sizeof (SA));
|
||
|
} else { /* setjmp: connect failed... */
|
||
|
rr = -1;
|
||
|
errno = ETIMEDOUT; /* fake it */
|
||
|
}
|
||
|
- arm (0, 0);
|
||
|
+#endif
|
||
|
+ arm_timer (0, 0);
|
||
|
if (rr == 0)
|
||
|
return (nnetfd);
|
||
|
close (nnetfd); /* clean up junked socket FD!! */
|
||
|
@@ -820,14 +867,15 @@
|
||
|
actually does work after all. Yow. YMMV on strange platforms! */
|
||
|
if (o_udpmode) {
|
||
|
x = sizeof (SA); /* retval for recvfrom */
|
||
|
- arm (2, o_wait); /* might as well timeout this, too */
|
||
|
- if (setjmp (jbuf) == 0) { /* do timeout for initial connect */
|
||
|
+ arm_timer (2, o_wait); /* might as well timeout this, too */
|
||
|
+#ifdef POSIX_SETJMP
|
||
|
+ if (sigsetjmp (jbuf,1) == 0) { /* do timeout for initial connect */
|
||
|
rr = recvfrom /* and here we block... */
|
||
|
(nnetfd, bigbuf_net, BIGSIZ, MSG_PEEK, (SA *) remend, &x);
|
||
|
Debug (("dolisten/recvfrom ding, rr = %d, netbuf %s ", rr, bigbuf_net))
|
||
|
} else
|
||
|
goto dol_tmo; /* timeout */
|
||
|
- arm (0, 0);
|
||
|
+ arm_timer (0, 0);
|
||
|
/* I'm not completely clear on how this works -- BSD seems to make UDP
|
||
|
just magically work in a connect()ed context, but we'll undoubtedly run
|
||
|
into systems this deal doesn't work on. For now, we apparently have to
|
||
|
@@ -842,15 +890,45 @@
|
||
|
rr = connect (nnetfd, (SA *)remend, sizeof (SA));
|
||
|
goto whoisit;
|
||
|
} /* o_udpmode */
|
||
|
+#else
|
||
|
+ if (setjmp (jbuf) == 0) { /* do timeout for initial connect */
|
||
|
+ rr = recvfrom /* and here we block... */
|
||
|
+ (nnetfd, bigbuf_net, BIGSIZ, MSG_PEEK, (SA *) remend, &x);
|
||
|
+Debug (("dolisten/recvfrom ding, rr = %d, netbuf %s ", rr, bigbuf_net))
|
||
|
+ } else
|
||
|
+ goto dol_tmo; /* timeout */
|
||
|
+ arm (0, 0);
|
||
|
+/* I'm not completely clear on how this works -- BSD seems to make UDP
|
||
|
+ just magically work in a connect()ed context, but we'll undoubtedly run
|
||
|
+ into systems this deal doesn't work on. For now, we apparently have to
|
||
|
+ issue a connect() on our just-tickled socket so we can write() back.
|
||
|
+ Again, why the fuck doesn't it just get filled in and taken care of?!
|
||
|
+ This hack is anything but optimal. Basically, if you want your listener
|
||
|
+ to also be able to send data back, you need this connect() line, which
|
||
|
+ also has the side effect that now anything from a different source or even a
|
||
|
+ different port on the other end won't show up and will cause ICMP errors.
|
||
|
+ I guess that's what they meant by "connect".
|
||
|
+ Let's try to remember what the "U" is *really* for, eh? */
|
||
|
+ rr = connect (nnetfd, (SA *)remend, sizeof (SA));
|
||
|
+ goto whoisit;
|
||
|
+ } /* o_udpmode */
|
||
|
+#endif
|
||
|
|
||
|
/* fall here for TCP */
|
||
|
x = sizeof (SA); /* retval for accept */
|
||
|
- arm (2, o_wait); /* wrap this in a timer, too; 0 = forever */
|
||
|
+ arm_timer (2, o_wait); /* wrap this in a timer, too; 0 = forever */
|
||
|
+#ifdef POSIX_SETJMP
|
||
|
+ if (sigsetjmp (jbuf,1) == 0) {
|
||
|
+ rr = accept (nnetfd, (SA *)remend, &x);
|
||
|
+ } else
|
||
|
+ goto dol_tmo; /* timeout */
|
||
|
+#else
|
||
|
if (setjmp (jbuf) == 0) {
|
||
|
rr = accept (nnetfd, (SA *)remend, &x);
|
||
|
} else
|
||
|
goto dol_tmo; /* timeout */
|
||
|
- arm (0, 0);
|
||
|
+#endif
|
||
|
+ arm_timer (0, 0);
|
||
|
close (nnetfd); /* dump the old socket */
|
||
|
nnetfd = rr; /* here's our new one */
|
||
|
|
||
|
@@ -1216,6 +1294,18 @@
|
||
|
if (rr <= 0) { /* at end, or fukt, or ... */
|
||
|
FD_CLR (0, ding1); /* disable and close stdin */
|
||
|
close (0);
|
||
|
+ /* if the user asked to exit on EOF, do it */
|
||
|
+ if (o_quit == 0) {
|
||
|
+ shutdown(netfd, 1);
|
||
|
+ close (fd);
|
||
|
+ exit (0);
|
||
|
+ }
|
||
|
+ /* if user asked to die after a while, arrange for it */
|
||
|
+ if (o_quit > 0) {
|
||
|
+ shutdown(netfd, 1);
|
||
|
+ signal (SIGALRM, quit);
|
||
|
+ alarm(o_quit);
|
||
|
+ }
|
||
|
} else {
|
||
|
rzleft = rr;
|
||
|
zp = bigbuf_in;
|
||
|
@@ -1389,12 +1479,14 @@
|
||
|
|
||
|
/* If your shitbox doesn't have getopt, step into the nineties already. */
|
||
|
/* optarg, optind = next-argv-component [i.e. flag arg]; optopt = last-char */
|
||
|
- while ((x = getopt (argc, argv, "ae:g:G:hi:lno:p:rs:tuvw:z")) != EOF) {
|
||
|
+ while ((x = getopt (argc, argv, "abe:g:G:hi:lno:p:q:rs:tuvw:z")) != EOF) {
|
||
|
/* Debug (("in go: x now %c, optarg %x optind %d", x, optarg, optind)) */
|
||
|
switch (x) {
|
||
|
case 'a':
|
||
|
bail ("all-A-records NIY");
|
||
|
o_alla++; break;
|
||
|
+ case 'b':
|
||
|
+ o_allowbroad++; break;
|
||
|
#ifdef GAPING_SECURITY_HOLE
|
||
|
case 'e': /* prog to exec */
|
||
|
pr00gie = optarg;
|
||
|
@@ -1443,6 +1535,8 @@
|
||
|
break;
|
||
|
case 'r': /* randomize various things */
|
||
|
o_random++; break;
|
||
|
+ case 'q': /* quit after stdin does EOF */
|
||
|
+ o_quit = atoi(optarg); break;
|
||
|
case 's': /* local source address */
|
||
|
/* do a full lookup [since everything else goes through the same mill],
|
||
|
unless -n was previously specified. In fact, careful placement of -n can
|
||
|
@@ -1602,8 +1696,16 @@
|
||
|
/* if we're scanning at a "one -v" verbosity level, don't print refusals.
|
||
|
Give it another -v if you want to see everything. */
|
||
|
if ((Single || (o_verbose > 1)) || (errno != ECONNREFUSED))
|
||
|
+ {
|
||
|
+ /* bug 65413 - if we're not scanning, we always want an
|
||
|
+ * error to be printed for refused connects. This is a
|
||
|
+ * disgustingly ugly way to do it, I really should just
|
||
|
+ * rewrite the holler() interface... */
|
||
|
+ if (Single) o_verbose++;
|
||
|
holler ("%s [%s] %d (%s)",
|
||
|
whereto->name, whereto->addrs[0], curport, portpoop->name);
|
||
|
+ if (Single) o_verbose--;
|
||
|
+ }
|
||
|
} /* if netfd */
|
||
|
close (netfd); /* just in case we didn't already */
|
||
|
if (o_interval)
|
||
|
@@ -1642,6 +1744,7 @@
|
||
|
-e prog program to exec after connect [dangerous!!]");
|
||
|
#endif
|
||
|
holler ("\
|
||
|
+ -b allow broadcasts\n\
|
||
|
-g gateway source-routing hop point[s], up to 8\n\
|
||
|
-G num source-routing pointer: 4, 8, 12, ...\n\
|
||
|
-h this cruft\n\
|
||
|
@@ -1651,6 +1754,7 @@
|
||
|
-o file hex dump of traffic\n\
|
||
|
-p port local port number\n\
|
||
|
-r randomize local and remote ports\n\
|
||
|
+ -q secs quit after EOF on stdin and delay of secs\n\
|
||
|
-s addr local source address");
|
||
|
#ifdef TELNET
|
||
|
holler ("\
|