基于winpcap和syn的dos攻击,亲测

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">网上这样的帖子很多,但有几个问题一直没解决。</span>

1、在计算TCP报头的校验和时应该还有伪报头,很多人都没有。

2、在封装以太网数据包时需要用到目的地址的mac地址,由于很多人是在虚拟机上测,目的mac也就知道,但事实上,对于真正的远端主机来说,我们只能获取它的IP地址,而mac地址是无法获取的。而事实上,这儿的目标mac应该写的是网关mac地址。

下面看我一步一步写syn攻击。

一、首先要清楚TCP/IP报头,清楚三次握手,这个别的地方将的很多。而syn flood攻击就是向服务器发送大量的syn请求包,让服务器保持这些连接而拒绝其他正常连接请求。

/*                       IP报文格式
	0            8           16                        32
	+------------+------------+-------------------------+
	| ver + hlen |  服务类型  |         总长度          |
	+------------+------------+----+--------------------+
	|           标识位        |flag|   分片偏移(13位)   |
	+------------+------------+----+--------------------+
	|  生存时间  | 高层协议号 |       首部校验和        |
	+------------+------------+-------------------------+
	|                   源 IP 地址                      |
	+---------------------------------------------------+
	|                  目的 IP 地址                     |
	+---------------------------------------------------+

*/

struct IP_HEADER
{
	byte versionAndHeader;
	byte serviceType;
	byte totalLen[2];
	byte seqNumber[2];
	byte flagAndFragPart[2];
	byte ttl;
	byte hiProtovolType;
	byte headerCheckSum[2];
	byte srcIpAddr[4];
	byte dstIpAddr[4];
};

/*
	                      TCP 报文
	0                       16                       32	
	+------------------------+-------------------------+
	|      源端口地址        |      目的端口地址       |
	+------------------------+-------------------------+
	|                      序列号                      |
	+--------------------------------------------------+
	|                      确认号                      |
	+------+--------+--------+-------------------------+
	|HLEN/4| 保留位 |控制位/6|         窗口尺寸        |
	+------+--------+--------+-------------------------+
	|         校验和         |         应急指针        |
	+------------------------+-------------------------+
*/

struct TCP_HEADER
{
	byte srcPort[2];
	byte dstPort[2];
	byte seqNumber[4];
	byte ackNumber[4];
	byte headLen;
	byte contrl;
	byte wndSize[2];
	byte checkSum[2];
	byte uragentPtr[2];
};
struct PSDTCP_HEADER //这是TCP的伪报头,在计算TCP的校验和时需要包含
{ 
    byte srcIpAddr[4];     //Source IP address; 32 bits
    byte dstIpAddr[4];     //Destination IP address; 32 bits 
    byte padding;          //padding
    byte protoco
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值