`
wx1568444409
  • 浏览: 14569 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

利用winpacp抓取网络数据库包并保存文件

 
阅读更多

`#include "stdafx.h" #include <stdio.h> #include <tchar.h> #include <WinSock2.h> #include <Windows.h> #include "pcap.h" #include <stdlib.h> #include <iostream> #include <string> #include "remote-ext.h" #include <atlstr.h> #include <cstdio>

using namespace std;

#pragma comment(lib, "Packet.lib") #pragma comment(lib, "wpcap.lib") #pragma comment(lib, "ws2_32")

#define FILENAME "PcapFile.pcap" //抓包文件名

void WriteTraceFile( u_char *data, u_long length); BOOL IsProcessExist();

struct ether_header { u_int8_t ether_dhost[6]; /* destination eth addr / u_int8_t ether_shost[6]; / source ether addr / u_int16_t ether_type; / packet type ID field */ };

typedef struct ip_address { u_char byte1; u_char byte2; u_char byte3; u_char byte4; } ip_address; /* IPv4 首部 */ typedef struct header_tcp { u_short src_port; u_short dst_port; u_int seq; u_int ack_seq; u_short doff:4,hlen:4,fin:1,syn:1,rst:1,psh:1,ack:1,urg:1,ece:1,cwr:1; u_short window; u_short check; u_short urg_ptr; }tcp_header;

typedef struct ip_header { u_char ver_ihl; // 版本 (4 bits) + 首部长度 (4 bits) u_char tos; // 服务类型(Type of service) u_short tlen; // 总长(Total length) u_short identification; // 标识(Identification) u_short flags_fo; // 标志位(Flags) (3 bits) + 段偏移量(Fragment offset) (13 bits) u_char ttl; // 存活时间(Time to live) u_char proto; // 协议(Protocol) u_short crc; // 首部校验和(Header checksum) ip_address saddr; // 源地址(Source address) ip_address daddr; // 目的地址(Destination address) u_int op_pad; // 选项与填充(Option + Padding) } ip_header;

int main() { if (IsProcessExist()) { return 0; }

cout<<"请输入过滤规则:";
char Cin_vlaue[1024]="";
memset(Cin_vlaue,0,1024);
gets(Cin_vlaue);
char packet_filter[1024]; 
sprintf(packet_filter ,"%s" ,Cin_vlaue);

u_int netmask;
pcap_if_t *alldevs;
pcap_if_t *d;
pcap_if_t *d2;
int inum;

int i=0;
pcap_t *adhandle;
char errbuf[PCAP_ERRBUF_SIZE];struct bpf_program fcode;


u_short  srcPort, destPort;

/* 获取设备列表 */  
if (pcap_findalldevs(&alldevs, errbuf) == -1)
{
    fprintf(stderr,"错误!: %s\n", errbuf);
    exit(1);
}

 cout<<"请选择网卡:"<<endl;

/* 数据列表 */  
for(d=alldevs; d; d=d->next)
{
    printf("%d. %s", ++i, d->name);
    if (d->description)
        printf(" (%s)\n", d->description);
    else
        printf("(无可用网卡描述!)\n");
}

if(i==0)
{
    printf("\n没有找到接口!.\n");
	
	Sleep(2000);

    return  1;  
}

printf("请输入网卡编号:(1-%d):",i);

scanf("%d", &inum);

if(inum < 1 || inum > i)
{
    printf("\n 输入有误.\n");
    pcap_freealldevs(alldevs);
    return 0;
}  
/* 转到选择的设备 */  
for(d=alldevs, i=0; i< inum-1;d=d->next, i++)
    ;  
/* 打开设备 */  
if ( (adhandle= pcap_open_live(d->name, //设备名  
    65536, // 捕捉完整的数据包  
    1 , // 模式  
    1, // 超时  
    errbuf // 错误缓冲  
    ) ) == NULL)
{
    printf("Unable to open the adapter");
    pcap_freealldevs(alldevs);
}

 pcap_addr *dev_addr = d->addresses;
 if(d->addresses != NULL)
     /* 获得接口第一个地址的掩码 */
     netmask=((struct sockaddr_in *)(d->addresses->netmask))->sin_addr.S_un.S_addr;
 else
     /* 如果接口没有地址,就假设一个C类掩码 */
     netmask=0xffffff;

printf("\nlistening on %s...\n", d->description);

//编译过滤器
if (pcap_compile(adhandle, &fcode, packet_filter, 1, netmask) <0 )
{
    fprintf(stderr,"Unable to compile the packet filter. Check the syntax.\n");
    /* 释放设备列表 */
    pcap_freealldevs(alldevs);
    int x;
    scanf("%d",&x);
    return -1;
}

//设置过滤器
if (pcap_setfilter(adhandle, &fcode)<0)
{
    fprintf(stderr,"nError setting the filter.\n");
    /* 释放设备列表 */
    pcap_freealldevs(alldevs);
    return -1;
}

printf("listening on %s...\n", d->description);

/* 释放设备列表 */
pcap_freealldevs(alldevs);


/* 开始捕获 */
int ret;
struct pcap_pkthdr *header;
const u_char *pkt_data;

while ((ret = pcap_next_ex(adhandle, &header, &pkt_data)) >= 0)
{
    ether_header *eh   = (ether_header *)pkt_data;

    if(ret == 0)
    {
		//超时 
        continue;
    }

    if (header->len > 0)
    {        
        ip_header *ip =(ip_header *) (pkt_data +sizeof(ether_header));
   
        WriteTraceFile((u_char*)pkt_data,sizeof(ether_header)+ntohs(ip->tlen));//写数据
    }
}
return 0;

}

void WriteTraceFile( u_char *data, u_long length) { FILE *pFile; long fileleng; DWORD ticks = ::GetTickCount();

if (!(pFile=fopen(FILENAME,"r")))
{
    pFile = fopen(FILENAME, "wb");

    pcap_file_header pfHeader;
    pfHeader.magic         = 0xA1B2C3D4;
    pfHeader.version_major = PCAP_VERSION_MAJOR;
    pfHeader.version_minor = PCAP_VERSION_MINOR;
    pfHeader.thiszone      = 0;
    pfHeader.sigfigs       = 0;
    pfHeader.snaplen       = 0x0000FFFF;
    pfHeader.linktype      = 1;

    if (pFile!=NULL)
    {
        fwrite((void *)&pfHeader, sizeof(pcap_file_header), 1, pFile);
    }
}
else
{
    
    fileleng=_filelength(_fileno(pFile));
    fclose(pFile);

    if (fileleng==0)
    {
        pFile = fopen(FILENAME, "wb");

        pcap_file_header pfHeader;
        pfHeader.magic         = 0xA1B2C3D4;
        pfHeader.version_major = PCAP_VERSION_MAJOR;
        pfHeader.version_minor = PCAP_VERSION_MINOR;
        pfHeader.thiszone      = 0;
        pfHeader.sigfigs       = 0;
        pfHeader.snaplen       = 0x0000FFFF;
        pfHeader.linktype      = 1;

        fwrite((void *)&pfHeader, sizeof(pcap_file_header), 1, pFile);
    }
    else
    {
        pFile = fopen(FILENAME, "ab");
     
    }
} 

if (pFile == NULL)
    return;

pcap_pkthdr pktHeader;

pktHeader.ts.tv_sec  = ticks/1000;
pktHeader.ts.tv_usec = (ticks%1000)*1000;
pktHeader.caplen     = length;
pktHeader.len        = length;

fwrite((void *)&pktHeader, sizeof(pcap_pkthdr), 1, pFile);
fwrite((void *)data, sizeof(u_char), length, pFile);

if (pFile!=NULL)
{
  
    fclose(pFile);
}

pFile=NULL;

}

BOOL IsProcessExist() { HANDLE m_mutex = ::CreateMutex(NULL, TRUE, "PacpMutex");

if (GetLastError() == ERROR_ALREADY_EXISTS)
{
	return TRUE;
}

return FALSE;

}`

转载于:https://my.oschina.net/Thekillersohot/blog/744409

分享到:
评论

相关推荐

    java-ssm+vue旅游资源网站实现源码(项目源码-说明文档)

    旅游资源网站的主要使用者分为管理员和用户,实现功能包括管理员:首页、个人中心、用户管理、景点信息管理、购票信息管理、酒店信息管理、客房类型管理、客房信息管理、客房预订管理、交流论坛、系统管理,用户:首页、个人中心、购票信息管理、客房预订管理、我的收藏管理,前台首页;首页、景点信息、酒店信息、客房信息、交流论坛、红色文化、个人中心、后台管理、客服等功能。 项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7+ 后端技术:ssm 前端技术:Vue 关键技术:springboot、SSM、vue、MYSQL、MAVEN 数据库工具:Navicat、SQLyog

    【高创新】基于粒子群优化算法PSO-Transformer-BiLSTM实现故障识别Matlab实现.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    这里收集那些神奇的产品经理为我们带来的意想不到的产品功能和改版,又称_MDZZ_PM_awesome-pm.zip

    这里收集那些神奇的产品经理为我们带来的意想不到的产品功能和改版,又称_MDZZ_PM_awesome-pm

    AI City track 5数据集-voc-xml格式

    有戴头盔的人、未戴头盔的人、摩托车三种类别,包含736张图像、对应voc格式标签(xml)

    4-3_Business_BLUE_2017_16-CL-20180524MTAX.potx

    微软演示材料

    VB075期刊信息管理系统(SQL).7z

    VB075期刊信息管理系统(SQL).7z

    西门子SMART200程序 PID的控制写法,突破8路,PID直接做成子程序,无密码,直接调用

    西门子SMART200程序 PID的控制写法,突破8路,PID直接做成子程序,无密码,直接调用。

    VBATM校园自动银行系统设计(源代码+论文).zip

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、5资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。

    基于深度学习的移动物体检测分类源码

    基于YOLOv5的物体检测识别与分类系统,可根据不同的权重模型对不同的物体进行识别,整体分为图片、视频和摄像头三个检测模块,具体检测能力依据模型而定。

    PMSM滑模控制仿真无位置 永磁电机 可提供文档if启动 如果没有收敛,将1e-4搞小一点 e-6或者e-5试下 本次滑模模型

    PMSM滑模控制仿真无位置 永磁电机 可提供文档if启动 如果没有收敛,将1e-4搞小一点 e-6或者e-5试下 本次滑模模型文档包括: 1 simulink界面调整,由于使用这个仿真的时候很可能会出现因为软件环境不同导致无法使用, 或者导致的波形错误,特写了一个关于参数界面的设置,按照那个设置,结合主框图,能够 避免使用出问题。 2 波形记录,将转速波形,转矩波形,位置估计+实际位置波形,三项定子电流波形, 给定转速(蓝绿色)+实际转速(红色)+估算转速(蓝色) 3 另外仿真程序内部,里面标注了各个功能模块的位置及部分原理。 4 lunwen的话推荐看 13 16 开头的lunwen,其他的可以拓展性的看。

    60-AspNet8-jQery-Datatables-5-Code.zip

    构建使用jQuery组件DataTables.net的Asp.Net 8 MVC应用程序的实用指南。

    皮层微创脑机接口传感器的发展现状与未来趋势

    内容概要:文章探讨了皮层微创脑机接口(BCI)传感器作为神经电信号采集与调控装置,在临床上的应用现状与科研进展,并分析了传感器在未来可能的发展趋势和技术革新点。介绍了现有商业化及实验级别的电极器材,并讨论了其如何进一步向着高通量、软界面与更持久的生命设计演化。 适合人群:神经工程专业科研工作者,尤其是关注BCI传感器领域的研究生、教师和其他相关专业的科研人士。 使用场景及目标:旨在增进从业者对于皮层微创BCI的理解,特别是传感器的设计、制作工艺和未来可能的方向;有助于科研与产品研发。 其他说明:文章还强调了技术创新在材料与设计理念层面的重要性,为BCI传感器在实际医疗与神经科研中发挥作用打下了坚实的基础。

    基于python实现的社会力模型仿真+源码+文档(毕业设计&课程设计&项目开发)

    基于python实现的社会力模型仿真+源码+文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档~ 基于python实现的社会力模型仿真+源码+文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档~ 基于python实现的社会力模型仿真+源码+文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档~ 基于python实现的社会力模型仿真+源码+文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档~ 基于python实现的社会力模型仿真+源码+文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档~ 基于python实现的社会力模型仿真+源码+文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档~

    2024.9.18 作业

    2024.9.18 作业

    Python环境一键安装脚本,适用于Linux_lxspacepy.zip

    Python环境一键安装脚本,适用于Linux_lxspacepy

    昕一 - 一样的月光 [qmms2].mp3

    昕一 - 一样的月光 [qmms2].mp3

    【高创新】基于凌日优化算法TSOA-Transformer-BiLSTM实现故障识别Matlab实现.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    http服务器的实现.7z

    http服务器的实现.7z

    java-ssm+vue高校奖学金管理系统实现源码(项目源码-说明文档)

    高校奖学金管理系统的主要实现功能包括:管理员:首页、个人中心、学生管理、辅导员管理、教务处管理、奖学金类型管理、奖学金信息管理、学生成绩管理、奖惩信息管理、奖学金申请管理、公告信息管理。学生:首页、个人中心、奖学金信息管理、学生成绩管理、奖惩信息管理、奖学金申请管理、公告信息管理,辅导员;首页、个人中心、学生管理、学生成绩管理、奖惩信息管理、奖学金申请管理、公告信息管理,教务处;首页、个人中心、学生管理、学生成绩管理、奖惩信息管理、奖学金申请管理、公告信息管理 项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7+ 后端技术:ssm 前端技术:Vue 关键技术:springboot、SSM、vue、MYSQL、MAVEN 数据库工具:Navicat、SQLyog

    Palo Alto Networks PA-220 管理员指导手册

    Palo Alto Networks PA-220 管理员指导手册

Global site tag (gtag.js) - Google Analytics