China Open source community
站内导航:
站内排行前50热点文章

精华文章  GDB调试精粹及使用实例
普通文章  STL中map用法详解
精华文章  负载均衡软件比较(Hapr...
普通文章  头文件的重复引用
普通文章  递归函数的调用过程
普通文章  TCP三次握手/四次挥手详解
普通文章  epoll的实现原理
普通文章  贪心策略的理论基础——...
普通文章  BMH算法原理与实现(模...
普通文章  http请求的详细过程
普通文章  DP动态规划
普通文章  GNU LD用法
普通文章  排列组合与回溯算法
普通文章  Linux内核中的红黑树
精华文章  linux下使用minicom的几...
普通文章  Linux socket编程之套接字
精华文章  Android线程模型
精华文章  enum类型的本质
普通文章  Java开源Html解析类库
普通文章  linux源代码包(.tar.g...
普通文章  L.A.M.P配置过程
普通文章  linux设置环境变量的方法
普通文章  python的memcache和jso...
普通文章  应用程序二进制接口---ABI
普通文章  memcached server LRU ...
普通文章  gcc编译过程概述
普通文章  Java多线程实现简单实例
普通文章  android核心模块及相关...
普通文章  linux内核编译问题
普通文章  brk和sbrk详述
普通文章  Python程序员常用的IDE...
普通文章  C/C++程序员常见面试题...
普通文章  优化C语言代码(程序员必...
普通文章  Unix操作系统的历史演变
普通文章  发行版发布:CentOS 5.4
普通文章  模版函数指针,C++委托...
普通文章  在windows中构建gtk开发...
普通文章  在ubuntu9.10下安装QT4...
普通文章  关于Qvariant类--万能的...
普通文章  Debian sudo 设置
普通文章  i++循环与i--循环的执行...
普通文章  busybox1.15.x 交叉编译
普通文章  python非贪婪,多行匹配...
普通文章  cscope使用简介
普通文章  关于僵死进程zombie
普通文章  [翻译]Django初窥
普通文章  函数指针传递和全局指针...
普通文章  Android Porting Exper...
普通文章  判断链表是否存在环并找...
普通文章  递归思想的妙用

 
 
 
当前位置: 首页 >> 网络协议与安全 >> 强大的TCP/IP工具-hping
 
 

强大的TCP/IP工具-hping

作者:      来源:zz     发表时间:2008-06-18     浏览次数:      字号:    

hping是一个基于命令行的TCP/IP工具,它在UNIX上得到很好的应用,不过它并非仅仅一个ICMP请求/响应工具,它还支持TCP.UDP.ICMP,RAW-IP协议,以及一个路由模型HPING一直被用作安全工具,可以用来测试网络及主机的安全,它有以下功能 

1:防火墙探测 
2:高级端口扫描 
3:网络测试;(可以用不同的协议,TOS,数据包碎片来实现此功能) 
4:手工MTU发掘 
5:高级路由(在任何协议下都可一实现) 
6S指纹判断 
7:细微UPTIME猜测 

HPING也可以被研究人员用来学习TCP/IP,在以下OS上它可以运行于LINUX,FREEBSD,NETBSD,OPENBSD,SOLARIS. 目前最新版本为HPING3(我用的是HPING2,,呵呵 

HPING参数,可以用HPING -H来看,我就不多说了.下面介绍各参数的用法 

-H --HELP 显示帮助 
-v -VERSION 版本信息 
-c --count count 发送数据包的次数 关于countreached_timeout 可以在hping2.h里编辑 
-i --interval 包发送间隔时间(单位是毫秒) 缺省时间是1秒,此功能在增加传输率上很重要,在idle/spoofing扫描时此功能也会被用到,你可以参考hping-howto获得更多信息-fast 每秒发10个数据包,(似乎可用作dos攻击,没测试过,不忍拿同学开刀) 
-n -nmeric 数字输出,象征性输出主机地址(用处不大) 
-q -quiet 退出.什么都不会输出,除了开始结诉时间 
-I --interface interface name 无非就是eth0之类的参数,自己的机器自己看吧,别告诉我你连这都不知道,一般我不指定这参数,hping一样工作正常. 
-v --verbose 显示很多信息,TCP回应一般如下: 
len=46 ip=192.168.1.1 flags=RADF seq=0 ttl=255 id=0 win=0 rtt=0.4ms tos=0 iplen=40 seq=0 ack=1380893504 sum=2010 urp=0 
-D --debug 进入debug模式 当你遇到麻烦时,比如用HPING遇到一些不合你习惯的时候,你可以用此模式修改HPING,(INTERFACE DETECTION,DATA LINK LAYER ACCESS,INTERFACE SETTINGS,.......) 
-z --BIND 快捷键的使用 (按自己个人喜好设定吧) 
-Z --unbind 消除快捷键 

以下是协议选择项 

-O --rawip RAWIP模式,在此模式下,HPING会发送带数据的IP头,....原文如下:RAW IP mode, in this mode hping2 will send IP header with data appended with --signature and/or 
--file, see also --ipproto that allows you to set the ip protocol field.(具体,不好翻译)  
-1 --icmp ICMP模式,此模式下,HPING会发送IGMP应答报文,你可以用--ICMPTYPE --ICMPCODE选项发送其他类型/模式的ICMP报文 
-2 --udp UDP 模式,缺省下,HPING会发送UDP报文到主机的0端口,你可以用--baseport --destport --keep选项指定其模式 
-9 --listen signatuer hping的listen模式,用此模式,HPING会接收指定的数据,比如:命令如下:hping 
--listen TEST 接收数据如下时:234-5488-TESThello_word,会显示hello_word以下是有关IP的选项 
-a --spoof hostname 伪造IP攻击,防火墙就不会记录你的真实IP了,当然,回应的包你也接收不到了,比如,你是192.168.3.1, 你装成192.168.3.2发包给192.168.3.3, 192.168.3.3的防火墙会记录192.168.3.2发包记录,但是192.168.3.3的回应也会发回192.168.3.2,而你却接收不到192.168.3.3的回答包的,具体可以参见HPING2-HOWTO 
-t --ttl time to live 本选项可以指定发出包的TTL值,我用了一下,实在看不出什么区别,这选项一般和--traceroute 或 
--bind一齐用,比如:hping 1.1.1.1 -t 1 --traceroute,(这选项数值大了,和PING没区别,数值小了,包似乎到不了主机,只停留在到达路由主机上,你自己慢慢看吧) 
-H --ipproto 在RAW IP模式里选择IP协议 
-W --WINID UNIX ,WINDIWS的id回应不同的 ,这选项可以让你的ID回应和WINDOWS一样 
-r --rel 更改ID的,可以让ID曾递减输出,详见HPING-HOWTO 
-F --FRAG 更改包的FRAG ,这可以测试对方对于包碎片的处理能力,缺省的‘virtual mtu‘是16字节, 
-x --morefrag 此功能可以发送碎片使主机忙于恢复碎片而造成主机的拒绝服务 
-y -dontfrag 发送不可恢复的IP碎片,这可以让你了解更多的MTU PATH DISCOVERY 
-G --fragoff fragment offset value set the fragment offset 
-m --mtu mtu value 用此项后 ID数值变得很大 50000没指定此项时3000-20000左右,具体作用,我得再去看看 
-o --tos hex tos TOS=TYPE OF SERVICE 知道什么回事了吧? 
-G --rroute 记录路由,可以看到详悉的数据等等,最多可以经过9个路由,即使主机屏蔽了ICMP报文,路由只涉及IP,所以任可以记录,在TCP UDP下,也可以记录路由的 

ICMP选项 

-C --ICMPTYPE TYPE 指定ICMP类型,缺省是ICMP ECHO REQUEST 
-K --ICMPCODE CODE 指定ICMP代号,缺省0 
--icmp-ipver 把IP版本也插入IP头, 
--icmp-iphlen 设置IP头的长度,缺省为5 (32字节) 
--icmp-iplen 设置IP包长度 
--icmp-ipid 设置ICMP报文IP头的ID,缺省是RANDOM 
--icmp-ipproto 设置协议的,缺省是TCP 
-icmp-cksum 设置校验和的,没什么的 
-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 选项 

-s --baseport source port hping用源端口猜测回应的包,它从一个基本端口计数,每收一个包,端口也加1,这规则你可以自己定义,如用-K --KEEP可以使端口不会增加,每次的基本端口是\随意的 
-p --deskport [+][+]desk port 设置目标端口,缺省为0,一个加号设置为:每发送一个请求包到达后,端口加1,两个加号为:每发一个包,端口数加1, 
--keep 上面说过了 
-w --win 发的大小和windows一样大,64BYTE 
-O --tcpoff Set fake tcp data offset. Normal data offset is tcphdrlen / 4. 
-m --tcpseq 设置TCP序列数, 
-l --tcpck 设置TCP ack的 
-Q --seqnum 搜集序列号的,这对于你分析TCP序列号有很大作用,例如: 

#hping2 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 
第一排是序列号,第2排是应答的序列号,所以你可以预见主机的序列号(三次握手后,数值基本不再变,定在167772160了) 

-b --badcksum 发出一个错误校验和的UDP/TCP包 
-tcp-timestamp 
-F -fin set FIN tcp flag 
-S --syn set SYN tcp flag. 
-R --rst set RST tcp flag. 
-P --push set PUSH tcp flag. 
-A --ack set ACK tcp flag. 
-U --urg set URG tcp flag. 
-X --xmas set Xmas tcp flag. 
-Y --ymas set Ymas tcp flag. 

[1] [2]

编辑 webmaster

 
 
 
评论
 
 
发表
 
姓名: QQ:
性别: MSN:
E-mail: 主页:
评分: 1 2 3 4 5
评论内容:
验证码:
  
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  •  
    中国源码网 - www.YuanMa.org - 中国 开放源代码+编程 社区