基于原始套接字的嗅探器

嗅探器这个代码我去年的时候就已经写过了,这个学期并不是非常忙,顺手复习网络,就又尝试着写了一遍。

其实在写嗅探器的时候,最主要的还是要将网卡设置为混杂模式。在此基础之上,对抓到的数据包进行分析。

这个是我写出来的效果图,目前只是方便于查看,连菜单都没添加:

左面的界面显示的是主机和主机之间的链接信息,而右面则是选中主机信息之间的数据交互情况。

我觉得我这个嗅探器应该是个失败品,或者说,没能够真正的将网卡设置为混杂模式。因为可以看到,上面的源地址全部都是本地主机地址,我在下载视频文件的时候,每秒几百kb的数据交互我的这个程序基本没响应。网页信息也都是发送的数据请求,根本抓不到接收数据。对于这一点希望高手能帮我指点一下。

使用原始套接字写嗅探器的流程:

1 使用socket创建基于IP协议的原始套接字。

2 获取本地IP地址。

3 将原始套接字绑定到本地IP地址上。

4 使用ioctlsocket函数设置套接字选项SIO_RCVALL,即接受所有数据。

5 无尽调用recv函数。

为了方便界面化我将Sniffer的核心代码封装到了一个类中,原本应该做成单件类的,但是懒得改了。

 1 class CSniffer
 2 {
 3 public:
 4     static DWORD WINAPI SnifferThread(LPVOID lpData);//线程函数
 5 public:
 6     CSniffer(HostArray * pOutPut);//构造函数,数据输出指针
 7     ~CSniffer(void);//析构函数,负责终止线程
 8     DWORD IsSucceed();//判断构造函数是否成功,我代码中没用上,就是单纯的返回dwSucceed
 9 private://Method
10     int IPHeadAnylasis(const char * pRecvBuf, const int nLen);//将IP数据存放到对应数据结构中。
11     unsigned short q_ntohs(const unsigned short nVal);//之前的遗留代码,没用上
12     const char * TypeTell(unsigned char type);//同上
13     unsigned short CheckSum(const void * pData, int size);//校验和函数,可以用一下,但是我没检验
14     void AddToInfoVector(PPortArray pInfoVector, ip_hdr * pIp, int nLen);//添加新的端口信息
15 private://Data
16     PHostArray pSnifferPool;//指向输出数据,全部的信息都存在其指向
17     HANDLE hThread;//线程句柄
18     DWORD dwSucceed;//标示参数
19 };

然后值得看一看的就是线程函数代码了,其余的没有太多需要介绍的,这段代码其实就是从之前的控制台程序扒下来的,现在单独放到一个函数中。

 1 DWORD WINAPI CSniffer::SnifferThread(LPVOID lpData)
 2 {
 3     CSniffer * pSniffer = (CSniffer *)lpData;
 4 
 5     SOCKET hSnifferSock = socket(AF_INET, SOCK_RAW, IPPROTO_IP);
 6     DWORD dwSetVal = 1;
 7     char szhostname[32];
 8     char RecvBuff[65536];
 9     hostent * phost;
10     SOCKADDR_IN LocalIP;
11     //先进行绑定,绑定前先获取本地地址
12     LocalIP.sin_family = AF_INET;
13     LocalIP.sin_port = htons(0);
14     gethostname(szhostname, 32);
15     phost = gethostbyname(szhostname);
16     memcpy(&LocalIP.sin_addr.S_un.S_addr, phost->h_addr_list[0], phost->h_length);
17     //cout << "LocalIP" << inet_ntoa(LocalIP.sin_addr) << endl;
18     if(SOCKET_ERROR == bind(hSnifferSock, (sockaddr *)&LocalIP, sizeof(sockaddr)))
19     {
20         ;//cout << "bind error" << endl;
21     }
22     //设置套接字选项
23     ioctlsocket(hSnifferSock, SIO_RCVALL, &dwSetVal);
24     //cout << q_ntohs(0x3100) << endl;
25     //std::vector<ConnectBetweenTwoHost> SnifferPool;
26 
27     while(1)
28     {
29         int nRecvLen = recv(hSnifferSock, RecvBuff, 65536, 0);
30         if(nRecvLen != SOCKET_ERROR)
31         {
32             //cout << "Get Message" << endl;
33             pSniffer->IPHeadAnylasis(RecvBuff, 65536);
34         }
35         else
36         {
37             continue;//cout << "Nothing Valid" << endl;
38         }
39     }
40 
41     return 0;
42 }

感觉这一套下来却是是没什么东西,不过我也是在程序跑出来之后,才观察到我的这个程序在数据抓包上面真心做的不怎么样。chrome浏览器的数据请求能抓到,但是反馈回来的数据就完全抓不到了。

列表数据原本应该做个排序的,整个散列也不错,这样当数据量比较大的时候插入效率能高一点。而我这个就呵呵了。。。

值得一提的就是我这次两个列表全部使用的虚拟列表。使用之前还查看了我以前代码中关于ListCtrl的使用文档,这算是没白写。不过这里要补充的就是,使用虚拟列表前,需要设置ownerdata选项,也即是用户拥有数据,列表仅仅负责数据的显示,而不是把所有的数据都放到列表中。

对虚拟列表进行显示刷新的方法比较简单,只要调用SetItemCountEx就能实现刷新过程。

另外我昨天在网上下载了一个嗅探器,这叫一个惨啊,各种弹网页,估计现在电脑是出于中木马状态。后来程序好不容易跑起来了,结果和我这个差不多,就是能判断出来网页请求信息资源的类型,仅仅是比我分析的深入了一点,至于数据接收,也是没找到。如果您知道哪有比较好的嗅探器,麻烦给发个链接,我学习下。

另外关于网卡混杂模式设置貌似需要借助winpcap.dll的帮助,有没有大神比较了解,给个学习链接往我看一下。

转载于:https://www.cnblogs.com/matrix-r/p/3665109.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/493305.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3D打印探讨:三个应用方向与四项风险

来源&#xff1a;学习时报摘要&#xff1a;3D打印技术已经诞生超过30年&#xff0c;今天已经被应用到众多领域。它在解决国际人道主义危机、提高医学水平、保护生态环境方面具有重要的应用价值&#xff0c;同时也在危机就业、新型犯罪与安全威胁等方面存在风险。3D打印技术从诞…

discuz x2.5用户注册后邮箱认证后无法收到邮件或者直接进垃圾箱

又是一个周末&#xff0c;jquery特效继续折腾我那discuz论坛&#xff0c;我开启了个邮箱验证&#xff0c;恶意注册的太恶心了&#xff0c;没有办法。 能稍微屏蔽点&#xff0c;但是问题来了&#xff0c;据亲们反应&#xff0c;无法收到验证邮件&#xff0c;或者有时间直接进入垃…

新能源汽车产业链:锂电设备站上风口

来源&#xff1a;乐晴智库精选摘要&#xff1a;政策宠儿&#xff0c;高额补贴下新能源汽车行业快速成长。全球新能源汽车在过去几年高速成长&#xff0c;从2011年到2017年&#xff0c;全球新能源汽车销量从5.1万辆增长到162.1万辆&#xff0c;期间的复合增速达到77.9%。中国对全…

CNN分类,ResNet V1 ,ResNet V2,ResNeXt,DenseNet

一.CNN分类 1.基于空间利用的CNN 2.基于深度的CNN 3.基于多路径的CNN 4.基于宽度的多连接 5.基于特征图的CNN 6.基于通道的CNN 7.基于注意力的CNN 二&#xff0c;ResNet V1 2015 ILSVRC 第一 论文指出归一化包括BN,权重初始化已经很大程度解决了梯度消失和爆炸的问题&…

基于AI的视频分析正在推动智能社会的到来

来源&#xff1a;资本实验室摘要&#xff1a;随着我们日渐掌握越来越强大的计算能力、更先进的计算算法、更易用的软件系统&#xff0c;以及不断下降的数据存储成本&#xff0c;我们正在具备对无处不在的大量视频进行实时分析的能力。尤其值得关注的是&#xff0c;当人工智能技…

Reporting Services 的伸缩性和性能表现规划(转载)

简介 Microsoft? SQL Server? Reporting Services 是一个将集中管理的报告服务器具有的伸缩性和易管理性与基于 Web 和桌面的报告交付手段集于一身的报告平台。Reporting Services 是微软功能全面的商业智能平台的重要组件。 对于许多组织&#xff0c;通过报告提供信息是日常…

卷积在计算机中实现+pool作用+数据预处理目的+特征归一化+理解BN+感受野理解与计算+梯度回传+NMS/soft NMS

一&#xff0e;卷积在计算机中实现 1.卷积 将其存入内存当中再操作&#xff08;按照“行先序”&#xff09;&#xff1a; 这样就造成混乱&#xff0e; 故需要im2col操作&#xff0c;将特征图转换成庞大的矩阵来进行卷积计算&#xff0c;利用矩阵加速来实现&#xff0c;牺牲了…

业界 | 清华发布《人工智能芯片技术白皮书(2018)》

来源&#xff1a;大数据文摘12月11日&#xff0c;在第三届未来芯片论坛上&#xff0c;清华大学联合北京未来芯片技术高精尖创新中心发布《人工智能芯片技术白皮书&#xff08;2018&#xff09;》。整个《白皮书》总共分为10个章节&#xff0c;第一章节首先对芯片发展的背景做了…

玩转html5canvas画图

导航 前言基本知识绘制矩形清除矩形区域圆弧路径 绘制线段绘制贝塞尔曲线 线性渐变径向渐变&#xff08;发散&#xff09;图形变形&#xff08;平移、旋转、缩放&#xff09;矩阵变换&#xff08;图形变形的机制&#xff09;图形组合给图形绘制阴影绘制图像&#xff08;图片平铺…

Gartner预测:2019年七大AI科技趋势,百万行业将颠覆!

来源&#xff1a;网络大数据摘要&#xff1a;尽管科幻小说可能将人工智能机器人描绘成坏人&#xff0c;但一些科技巨头现在也将其用于安全。 微软和优步等公司使用Knightscope K5机器人巡逻停车场和大型户外区域来预测和预防犯罪。 机器人可以读取车牌&#xff0c;报告可疑活动…

Xception,Inception-ResNet,SENet(Squeeze-and-Excitation)

一.Xception Xception是在InceptionV3基础上修改的&#xff0c;主要引入了深度可分离卷积&#xff0c;将空间和通道的操作进行解耦合。 与“extreme” Inception两个区别&#xff1a; 1,11卷积的顺序&#xff0c;Xcption用于33之后&#xff0c;而Inception用于之前 2,Xcepti…

物联网白皮书【2018】重磅发布|今年的物联网产业交出了一张怎样的答卷

来源&#xff1a;中国信息通信研究院摘要&#xff1a;物联网白皮书&#xff08;2018&#xff09;由中国信息通信研究院、中国信息通信研究院西部分院、物联网智库、上海市物联网行业协会、杭州市物联网行业协会、中信建投证券股份有限公司、国家智能传感器创新中心联合撰写发布…

Deep Alignment Network(人脸对齐)

一&#xff0c;DAN 由于使用了关键点热力图的可视化信息&#xff0c;故可以将整张图输入网络。 网络分为多个阶段&#xff08;STAGE&#xff09;&#xff0c;每个阶段的结构都是相同的&#xff08;STAGE 1除外&#xff09;。第一阶段的输入仅有原始图片&#xff0c;和S0。面部…

斯坦福全球AI报告:人才需求两年暴增35倍,中国机器人部署量涨500%

来源&#xff1a;量子位作者&#xff1a;安妮 栗子 乾明 一璞刚刚&#xff0c;斯坦福全球AI报告正式发布。从去年开始&#xff0c;斯坦福大学主导、来自MIT、OpenAI、哈佛、麦肯锡等机构的多位专家教授&#xff0c;组建了一个小组&#xff0c;每年发布AI index年度报告&#xf…

ubuntu安装nvidia显卡驱动+cuda9.0+cudnn7.0+查看cuda版本+安装tensorrt+python查看gpu显存

一,驱动安装 显卡驱动和cuda版本关系 卸载原先驱动 sudo apt-get remove --purge nvidia-\*ubuntu-drivers devices 查看显卡类型 Nvidia驱动下载地址&#xff1a;https://www.geforce.com/drivers选择对应的显卡和Linux 64 系统&#xff0c;可以下载最新版本。 要注意的是…

英特尔发布全新CPU架构 称摩尔定律未死 中国研究院迎20周年

来源&#xff1a;网易智能摘要&#xff1a;英特尔分别在大洋两岸&#xff0c;几乎同时上演了两个大秀。在中国&#xff0c;研究院院长宋继强与各实验室负责人详细阐述了团队构成以及目前的四大研究领域&#xff0c;在彼岸&#xff0c;英特尔举行架构日活动&#xff0c;英特尔处…

2018 年最引人注目的科学时刻,《科学》杂志选出14 张年度最佳科学照片

来源&#xff1a;Deeptech深科技摘要&#xff1a;2018 年 12 月 11 日&#xff0c;《科学》杂志从 2018 年发表的科学报道中&#xff0c;筛选出 14 张年度最佳照片&#xff0c;记录了 2018 年最引人注目的科学时刻。伊瓜苏大瀑布INGE JOHNSSON/ALAMY STOCK PHOTO伊瓜苏瀑布位于…

Linked dylibs built for GC-only but object files built for retain/release for architecture x86_64

编译开源Xcode 插件 SCXcodeSwitchExpander 源码地址&#xff1a; https://github.com/stefanceriu/SCXcodeSwitchExpander 编译环境&#xff1a;Xcode5.1 系统版本&#xff1a;OSX 10.8.5 提示下面错误 考虑是不是ARC引起的&#xff0c;发现building setting 已经设置了开启ar…

不平等加剧与问责机制:纽约大学AI Now研究所2018 AI现状报告 | 报告

来源&#xff1a;AI NOW Institute编译&#xff1a;机器之心 微胖摘要&#xff1a;纽约大学 AI Now 研究所发布了第三份关于人工智能现状的年度报告。2018 年 AI Now 报告重点关注行业 AI 丑闻和不平等加剧等主题&#xff0c;还评估了人工智能道德与有意义的问责制之间的差距&a…

二叉树的基础知识

一,树 E为根节点,BCD互称为兄弟节点,G、H、I、J、K、L互称为叶子节点(没有子节点) 树的高度,深度,层数. 高度从下往上数(0开始),深度从上往下数(0开始). 二,二叉树 2为满二叉树,二叉树中除了叶子结点&#xff0c;每个结点的度都为 2. 3为完全二叉树,如果二叉树中除去最后一层…