/hping

hping network tool

Primary LanguageCOtherNOASSERTION

hping3 README file
antirez@invece.org

DESCRIPTION

	hping3 is a network tool able to send custom TCP/IP
	packets and to display target replies like ping do with
	ICMP replies. hping3 can handle fragmentation, and
	almost arbitrary packet size and content, using the
	command line interface.

	Since version 3, hping implements scripting capabilties,
	read the API.txt file under the /docs directory to know
	more about it.

	As a command line utility, hping is useful to test at
	many kind of networking devices like firewalls, routers,
	and so. It can be used as a traceroute alike program over all
	the supported protocols, firewalk usage, OS fingerprinting,
	port-scanner (see the --scan option introduced with hping3),
	TCP/IP stack auditing.

	It's also really a good didactic tool to learn TCP/IP.

	Using Tcl/Tk scripting much more can be done, because
	while the hping3 packet generation code is actually the
	hping2 put there mainly for compatibility with the command
	line interface, all the real news are about scripting.

	See the libs directory for example scripts. To run
	the example scripts type:

		hping3 exec ScriptName.htcl <arguments, if required>

	hping3 is developed and manteined by antirez@invece.org
	with the help of other hackers, and comes under GPL version
	2 of license. Development is open so you can send me
	patches/suggestions/affronts without inhibitions.

	Please check the AUTHORS file for a list of people that
	contribued with code, ideas, bug reports.

	Also vim developer, ee.lbl.gov for tcpdump and GNU in general.

DOCUMENTATION

	For the hping3 API check docs/API.txt

	You can find documentation about hping3 specific functions
	at http://wiki.hping.org

	Make sure to check the page at http://wiki.hping.org/34

DOWNLOAD

	The hping3 primary download site is the following:

		http://www.hping.org

	----------------------------------------------------------------
	How to get the hping3 source code from the anonymous CVS server
	----------------------------------------------------------------

	$ cvs -d :pserver:anonymous@cvs.hping2.sourceforge.net:/cvsroot/hping2 login   

	CVS will ask for the password, just press enter, no password is required

	than type the following to download the full source code.

	$ cvs -z8 -d :pserver:anonymous@cvs.hping2.sourceforge.net:/cvsroot/hping2 checkout hping3s

	-----------------------------------
	How to update your source code tree
	-----------------------------------

	change the current directory to /somewhere/hping2, than just type:

	$ cvs update

REQUIREMENTS

	A supported unix-like OS, gcc, root access.

	Libpcap.

	Tcl/Tk is optional but strongly suggested.

INSTALLATION

	see INSTALL file.

have fun,
antirez



following solution works on my mac:
origin link:
antirez#34

I found installing hping on OS X via brew required making some changes, due to brew installing tcl-tk in a non standard location.

==> Caveats
tcl-tk is keg-only, which means it was not symlinked into /usr/local,
because tk installs some X11 headers and macOS provides an (older) Tcl/Tk.

If you need to have tcl-tk first in your PATH run:
  echo 'export PATH="/usr/local/opt/tcl-tk/bin:$PATH"' >> ~/.bash_profile

For compilers to find tcl-tk you may need to set:
  export LDFLAGS="-L/usr/local/opt/tcl-tk/lib"
  export CPPFLAGS="-I/usr/local/opt/tcl-tk/include"

For pkg-config to find tcl-tk you may need to set:
  export PKG_CONFIG_PATH="/usr/local/opt/tcl-tk/lib/pkgconfig"
So I had to make the following adjustments to the configure file before I ran the ./configure step:

Line 64, add "/usr/local/opt/tcl-tk/bin/" to the end so the script can find the right tcl binary
Line 66, add "8.6" to the end so the script can get the version of tcl-tk brew downloaded (check in /usr/local/opt/tcl-tk/bin for a file starting with tclsh8.? to get the correct version number.)
Line 84, replace the line with the following, so it can get the right include location
  if [ -e /usr/local/opt/tcl-tk/lib/tcl${TCL_VER} ]
  then
      TCL_INC="-I/usr/local/opt/tcl-tk/lib/tcl${TCL_VER}"
  elif [ -e /usr/include/tcl${TCL_VER} ]
Then in the Makefile change all references to /usr/sbin to /usr/local/bin, because on OS X we don't have any rights to write there even as sudo.

After this I could resume the instructions from ./configure. If you've tried this before and failed, be sure and run make clean to remove any artifacts from previous attempts.