hping3


SYNOPSIS
       hping3  [ -hvnqVDzZ012WrfxykQbFSRPAUXYjJBuTG ] [ -c count ] [ -i wait ]
       [ --fast ] [ -I interface ] [ -9 signature ] [ -a host ] [ -t ttl  ]  [
       -N ip id ] [ -H ip protocol ] [ -g fragoff ] [ -m mtu ] [ -o tos ] [ -C
       icmp type ] [ -K icmp code ] [ -s source port ] [ -p[+][+] dest port  ]
       [ -w tcp window ] [ -O tcp offset ] [ -M tcp sequence number ] [ -L tcp
       ack ] [ -d data size ] [ -E filename ] [ -e signature ] [  --icmp-ipver
       version   ]  [  --icmp-iphlen  length  ]  [  --icmp-iplen  length  ]  [
       --icmp-ipid id ] [ --icmp-ipproto protocol ] [ --icmp-cksum checksum  ]
       [  --icmp-ts ] [ --icmp-addr ] [ --tcpexitcode ] [ --tcp-mss ] [ --tcp-
       timestamp ] [ --tr-stop ] [ --tr-keep-ttl ] [ --tr-no-rtt ]  [  --rand-
       dest ] [ --rand-source ] [ --beep ] hostname

DESCRIPTION
       hping3 is a network tool able to send custom TCP/IP packets and to dis-
       play target replies like ping program does with  ICMP  replies.  hping3
       handle  fragmentation,  arbitrary packets body and size and can be used
       in order to transfer  files  encapsulated  under  supported  protocols.
       Using hping3 you are able to perform at least the following stuff:

        - Test firewall rules
        - Advanced port scanning
        - Test net performance using different protocols,
          packet size, TOS (type of service) and fragmentation.
        - Path MTU discovery
        - Transferring files between even really fascist firewall
          rules.
        - Traceroute-like under different protocols.
        - Firewalk-like usage.
        - Remote OS fingerprinting.
        - TCP/IP stack auditing.
        - A lot of others.

       It's  also  a  good didactic tool to learn TCP/IP.  hping3 is developed
       and maintained by antirez@invece.org and is licensed under GPL  version
       2.  Development  is  open  so  you  can send me patches, suggestion and
       affronts without inhibitions.

HPING SITE
       primary site at http://www.hping.org.  You can found  both  the  stable
       release  and  the  instruction  to  download  the latest source code at
       http://www.hping.org/download.html

BASE OPTIONS
       -h --help
              Show an help screen on standard output, so you can pipe to less.

       -v --version
              Show version information and API used to  access  to  data  link
              layer, linux sock packet or libpcap.

       -c --count count
              Stop after sending (and receiving) count response packets. After
              information.

       --fast Alias for -i u10000. Hping will send 10 packets for second.

       --faster
              Alias  for -i u1. Faster then --fast ;) (but not as fast as your
              computer can send packets due to the signal-driven design).

       --flood
              Sent packets as fast as possible, without taking  care  to  show
              incoming replies.  This is ways faster than to specify the -i u0
              option.

       -n --numeric
              Numeric output only, No attempt will be made to lookup  symbolic
              names for host addresses.

       -q --quiet
              Quiet  output.  Nothing is displayed except the summary lines at
              startup time and when finished.

       -I --interface interface name
              By default on linux and BSD systems hping3 uses default  routing
              interface.   In  other systems or when there is no default route
              hping3 uses the first non-loopback interface.  However  you  are
              able  to  force  hping3 to use the interface you need using this
              option. Note: you don't need to  specify  the  whole  name,  for
              example  -I  et will match eth0 ethernet0 myet1 et cetera. If no
              interfaces match hping3 will try to use lo.

       -V --verbose
              Enable verbose output. TCP replies will be shown as follows:

              len=46 ip=192.168.1.1  flags=RA  DF  seq=0  ttl=255  id=0  win=0
              rtt=0.4 ms tos=0 iplen=40 seq=0 ack=1380893504 sum=2010 urp=0

       -D --debug
              Enable  debug mode, it's useful when you experience some problem
              with hping3. When debug mode is enabled you will get more infor-
              mation about interface detection, data link layer access, inter-
              face settings, options parsing, fragmentation, HCMP protocol and
              other stuff.

       -z --bind
              Bind  CTRL+Z  to  time  to live (TTL) so you will able to incre-
              ment/decrement ttl of outgoing packets pressing CTRL+Z  once  or
              twice.

       -Z --unbind
              Unbind CTRL+Z so you will able to stop hping3.

       --beep Beep  for  every  matching  received  packet  (but  not for ICMP
              errors).

       -1 --icmp
              ICMP mode, by default hping3 will send  ICMP  echo-request,  you
              can   set  other  ICMP  type/code  using  --icmptype  --icmpcode
              options.

       -2 --udp
              UDP mode, by default hping3 will send udp to target host's  port
              0.   UDP  header  tunable options are the following: --baseport,
              --destport, --keep.

       -8 --scan
              Scan mode, the option expects an argument that describes  groups
              of  ports  to  scan.  port  groups are comma separated: a number
              describes just a single port, so 1,2,3 means port 1,  2  and  3.
              ranges  are  specified  using a start-end notation, like 1-1000,
              that tell hping to scan ports between 1 and 1000 (included). the
              special word all is an alias for 0-65535, while the special word
              known includes all the ports listed in /etc/services.
              Groups can be combined, so the following command line will  scan
              ports  between  1  and  1000  AND  port 8888 AND ports listed in
              /etc/services: hping --scan 1-1000,8888,known -S target.host.com
              Groups can be negated (subtracted) using a ! character  as  pre-
              fix,  so  the following command line will scan all the ports NOT
              listed in  /etc/services  in  the  range  1-1024:  hping  --scan
              '1-1024,!known' -S target.host.com
              Keep  in mind that while hping seems much more like a port scan-
              ner in this mode, most of the hping switches are still  honored,
              so  for example to perform a SYN scan you need to specify the -S
              option, you can change the TCP windows size, TTL, control the IP
              fragmentation as usually, and so on. The only real difference is
              that the standard hping behaviors are encapsulated into a  scan-
              ning algorithm.
              Tech  note:  The  scan  mode  uses  a two-processes design, with
              shared memory for synchronization.  The  scanning  algorithm  is
              still not optimal, but already quite fast.
              Hint:  unlike  most  scanners, hping shows some interesting info
              about received packets, the IP ID, TCP  win,  TTL,  and  so  on,
              don't  forget  to  look  at this additional information when you
              perform a scan! Sometimes they shows interesting details.

       -9 --listen signature
              HPING3 listen mode, using this option hping3  waits  for  packet
              that  contain  signature and dump from signature end to packet's
              end. For example if hping3 --listen TEST  reads  a  packet  that
              contain    234-09sdflkjs45-TESThello_world   it   will   display
              hello_world.

IP RELATED OPTIONS
       -a --spoof hostname
              Use this option in order to set a fake IP source  address,  this
              option ensures that target will not gain your real address. How-
              ever replies will be sent to spoofed address, so you will  can't
              see  them.  In  order  to  see  how  it's  possible  to  perform
              spoofed/idle scanning see the HPING3-HOWTO.
              IP address as target host like 10.0.0.x.  All the occurrences of
              x will be replaced with a random number in the range  0-255.  So
              to  obtain  Internet  IP  addresses  in the whole IPv4 space use
              something like hping x.x.x.x --rand-dest.  If you are  not  sure
              about  what kind of addresses your rule is generating try to use
              the --debug switch to display every new destination address gen-
              erated.  When this option is turned on, matching packets will be
              accept from all the destinations.
              Warning: when this option is  enabled  hping  can't  detect  the
              right  outgoing interface for the packets, so you should use the
              --interface option to select the desired outgoing interface.

       -t --ttl time to live
              Using this option you can set TTL (time  to  live)  of  outgoing
              packets, it's likely that you will use this with --traceroute or
              --bind options. If in  doubt  try  `hping3  some.host.com  -t  1
              --traceroute'.

       -N --id
              Set  ip->id  field. Default id is random but if fragmentation is
              turned on and id isn't specified it will be getpid()  &  0xFFFF,
              to implement a better solution is in TODO list.

       -H --ipproto
              Set the ip protocol in RAW IP mode.

       -W --winid
              id  from Windows* systems before Win2k has different byte order-
              ing, if this option is enable hping3 will  properly  display  id
              replies from those Windows.

       -r --rel
              Display  id  increments  instead of id. See the HPING3-HOWTO for
              more information. Increments aren't  computed  as  id[N]-id[N-1]
              but  using packet loss compensation. See relid.c for more infor-
              mation.

       -f --frag
              Split packets in more fragments, this may be useful in order  to
              test  IP  stacks  fragmentation  performance and to test if some
              packet filter is so weak that can be passed using tiny fragments
              (anachronistic).  Default  'virtual  mtu'  is 16 bytes. see also
              --mtu option.

       -x --morefrag
              Set more fragments IP flag, use this option  if  you  want  that
              target host send an ICMP time-exceeded during reassembly.

       -y --dontfrag
              Set don't fragment IP flag, this can be used to perform MTU path
              discovery.

       -g --fragoff fragment offset value
              Set the fragment offset.
              that the IP header is only large enough for  nine  such  routes.
              Many  hosts  ignore or discard this option. Also note that using
              hping you are able to use record route even if target host  fil-
              ter  ICMP.  Record route is an IP option, not an ICMP option, so
              you can use record route option even in TCP and UDP mode.

ICMP RELATED OPTIONS
       -C --icmptype type
              Set icmp type, default is ICMP echo request (implies --icmp).

       -K --icmpcode code
              Set icmp code, default is 0 (implies --icmp).

       --icmp-ipver
              Set IP version of IP header contained into ICMP data, default is
              4.

       --icmp-iphlen
              Set  IP  header  length  of  IP header contained into ICMP data,
              default is 5 (5 words of 32 bits).

       --icmp-iplen
              Set IP packet length of IP  header  contained  into  ICMP  data,
              default is the real length.

       --icmp-ipid
              Set IP id of IP header contained into ICMP data, default is ran-
              dom.

       --icmp-ipproto
              Set IP protocol of IP header contained into ICMP  data,  default
              is TCP.

       --icmp-cksum
              Set ICMP checksum, for default is the valid checksum.

       --icmp-ts
              Alias for --icmptype 13 (to send ICMP timestamp requests).

       --icmp-addr
              Alias for --icmptype 17 (to send ICMP address mask requests).

TCP/UDP RELATED OPTIONS
       -s --baseport source port
              hping3  uses source port in order to guess replies sequence num-
              ber. It starts with a base source port number, and increase this
              number  for  each  packet sent. When packet is received sequence
              number can be computed as replies.dest.port -  base.source.port.
              Default  base  source  port is random, using this option you are
              able to set different number. If you need that source  port  not
              be increased for each sent packet use the -k --keep option.

       -p --destport [+][+]dest port
              Set  destination  port,  default is 0. If '+' character precedes
              Set fake tcp data offset. Normal data offset is tcphdrlen / 4.

       -M --tcpseq
              Set the TCP sequence number.

       -L --tcpack
              Set the TCP ack.

       -Q --seqnum
              This option can be used in order  to  collect  sequence  numbers
              generated  by  target  host. This can be useful when you need to
              analyze whether TCP sequence number is predictable. Output exam-
              ple:

              #hping3 win98 --seqnum -p 139 -S -i u1 -I eth0
              HPING uaz (eth0 192.168.4.41): S set, 40 headers + 0 data bytes
              2361294848 +2361294848
              2411626496 +50331648
              2545844224 +134217728
              2713616384 +167772160
              2881388544 +167772160
              3049160704 +167772160
              3216932864 +167772160
              3384705024 +167772160
              3552477184 +167772160
              3720249344 +167772160
              3888021504 +167772160
              4055793664 +167772160
              4223565824 +167772160

              The first column reports the sequence number, the second differ-
              ence between current and last sequence number. As  you  can  see
              target host's sequence numbers are predictable.

       -b --badcksum
              Send packets with a bad UDP/TCP checksum.

       --tcp-mss
              Enable the TCP MSS option and set it to the given value.

       --tcp-timestamp
              Enable  the TCP timestamp option, and try to guess the timestamp
              update frequency and the remote system uptime.

       -F --fin
              Set FIN tcp flag.

       -S --syn
              Set SYN tcp flag.

       -R --rst
              Set RST tcp flag.

       -P --push
              Set Ymas tcp flag.

COMMON OPTIONS
       -d --data data size
              Set packet body size. Warning, using --data 40 hping3  will  not
              generate  0  byte  packets  but protocol_header+40 bytes. hping3
              will display packet size information as first line output,  like
              this:  HPING  www.yahoo.com  (ppp0  204.71.200.67): NO FLAGS are
              set, 40 headers + 40 data bytes

       -E --file filename
              Use filename contents to fill packet's data.

       -e --sign signature
              Fill first signature length bytes of data  with  signature.   If
              the  signature  length is bigger than data size an error message
              will be displayed.  If you don't specify  the  data  size  hping
              will  use  the  signature size as data size.  This option can be
              used safely with --file filename option,  remainder  data  space
              will be filled using filename.

       -j --dump
              Dump received packets in hex.

       -J --print
              Dump received packets' printable characters.

       -B --safe
              Enable  safe  protocol,  using  this option lost packets in file
              transfers will be resent. For example  in  order  to  send  file
              /etc/passwd from host A to host B you may use the following:
              [host_a]
              # hping3 host_b --udp -p 53 -d 100 --sign signature --safe --file /etc/passwd
              [host_b]
              # hping3 host_a --listen signature --safe --icmp

       -u --end
              If  you  are using --file filename option, tell you when EOF has
              been reached. Moreover prevent that other end accept more  pack-
              ets. Please, for more information see the HPING3-HOWTO.

       -T --traceroute
              Traceroute  mode. Using this option hping3 will increase ttl for
              each ICMP time to live 0 during  transit  received.  Try  hping3
              host  --traceroute.  This option implies --bind and --ttl 1. You
              can override the ttl of 1 using the --ttl  option.  Since  2.0.0
              stable it prints RTT information.

       --tr-keep-ttl
              Keep  the  TTL fixed in traceroute mode, so you can monitor just
              one hop in the route. For example, to monitor how  the  5th  hop
              changes or how its RTT changes you can try hping3 host --tracer-
              oute --ttl 5 --tr-keep-ttl.

              for  scripts that need, for example, to known if the port 999 of
              some host reply with SYN/ACK or with RST  in  response  to  SYN,
              i.e. the service is up or down.

TCP OUTPUT FORMAT
       The standard TCP output format is the following:

       len=46 ip=192.168.1.1 flags=RA DF seq=0 ttl=255 id=0 win=0 rtt=0.4 ms

       len  is  the  size,  in  bytes, of the data captured from the data link
       layer excluding the data link header size. This may not  match  the  IP
       datagram size due to low level transport layer padding.

       ip is the source ip address.

       flags  are the TCP flags, R for RESET, S for SYN, A for ACK, F for FIN,
       P for PUSH, U for URGENT, X for not standard 0x40, Y for  not  standard
       0x80.

       If the reply contains DF the IP header has the don't fragment bit set.

       seq  is  the  sequence  number of the packet, obtained using the source
       port for TCP/UDP packets, the sequence field for ICMP packets.

       id is the IP ID field.

       win is the TCP window size.

       rtt is the round trip time in milliseconds.

       If you run hping using the -V command line switch it will display addi-
       tional information about the packet, example:

       len=46  ip=192.168.1.1  flags=RA DF seq=0 ttl=255 id=0 win=0 rtt=0.4 ms
       tos=0 iplen=40 seq=0 ack=1223672061 sum=e61d urp=0

       tos is the type of service field of the IP header.

       iplen is the IP total len field.

       seq and ack are the sequence and acknowledge 32bit numbers in  the  TCP
       header.

       sum is the TCP header checksum value.

       urp is the TCP urgent pointer value.


UDP OUTPUT FORMAT
       The standard output format is:

       len=46 ip=192.168.1.1 seq=0 ttl=64 id=0 rtt=6.0 ms

       The  field  meaning  is  just the same as the TCP output meaning of the
       resolved to a name (a dns PTR request) or  UNKNOWN  if  the  resolution
       failed.

       The  ICMP  Time  exceeded  during transit or reassembly format is a bit
       different:

       TTL 0 during transit from ip=192.168.1.1 name=nano.marmoc.net

       TTL 0 during reassembly from ip=192.70.106.25 name=UNKNOWN

       The only difference is the description of the error, it starts with TTL
       0.


AUTHOR
       Salvatore  Sanfilippo <antirez@invece.org>, with the help of the people
       mentioned in AUTHORS file and at http://www.hping.org/authors.html

BUGS
       Even using the --end and --safe options to  transfer  files  the  final
       packet will be padded with 0x00 bytes.

       Data is read without care about alignment, but alignment is enforced in
       the data structures.  This will not be a problem under i386 but,  while
       usually  the  TCP/IP headers are naturally aligned, may create problems
       with different processors and bogus packets if there is some  unaligned
       access around the code (hopefully none).

       On  solaris hping does not work on the loopback interface. This seems a
       solaris problem, as stated in the tcpdump-workers mailing list, so  the
       libpcap can't do nothing to handle it properly.

SEE ALSO
       ping(8), traceroute(8), ifconfig(8), nmap(1)



                                  2001 Aug 14                        HPING3(8)
Man Pages Copyright Respective Owners. Site Copyright (C) 1994 - 2012 Hurricane Electric. All Rights Reserved.