为编程爱好者分享易语言教程源码的资源网
好用的代理IP,游戏必备 ____广告位招租____ 服务器99/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器
好用的代理IP,游戏必备 ____广告位招租____ 服务器低至38/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器

网站首页 > 易语言相关 > 网络相关源码 正文

使用 RawSocket 捕获网卡/指定程序/指定端口/指定IP 数据包

三叶资源网 2019-08-22 11:03:54 网络相关源码 3498 ℃ 3 评论

本文章将介绍如何使用RawSocket(原始套接字)开发网络嗅探器:


首先我们得了解什么是套接字,这个我就不多说,自己百度,百度百科比我说的好。

那么什么又是原始套接字呢,常用的套接字分为 SOCK_STREAM(流套接字) 用于TCPXY通讯。 SOCK_DGRAM(数据报套接字) 同于UDPXY通讯。

那么原始呢,他则是和名字一样原始套接字;举例:要想用流套接字进行一次TCP的发包,那么直接连接上对方服务器然后用Send就可以发送指定的内容,但其实发送的数据并不止你的那些内容,有一些东西是流套接字会给你自动补上的。TCP是属于IPXY的一个子XY,那么要发送一个TCP数据包就得加上(以太网XY报头这个先不提),IPXY的报头,和TCPXY报头,这些东西流套接字都会帮你处理,而原始套接字则不会(当然也可以设置让原始套接字构造IP报头)。原始套接字他有更多的用途,但相对来说也比流套接字或数据报套接字麻烦。 原始套接字还可以设置成允许接收本地所有的套接字数据。那么我们就利用这个功能来做嗅探器!



首先:1.使用  WSAStartup (合并短整数 (2, 2), WSADATA)  来初始化Winsocket服务 其参数有2个  第一个 (短整数型/双字节型):wVersionRequired  这个参数表明使用的winsock版本号,高位指定修订版本号,低位指定主版本号。第二个参数 WSADATA类型 用于接收Winsocket细节东西,咱不用管它。


//下面就不说那么详细了,源码里面全是注释,自己看。


2.然后使用socket (#AF_INET, #SOCK_RAW, #IPPROTO_IP)  来创建一个套接字   第一个参数应该是表明Internet地址格式反正只能固定这个,仅仅支持这个  参数2:表明要创建的是一个原始套接字,参数3:指定IPXY  IPXY包括其子XY TCP UDP 等。成功返回套接字句柄

3.  bind (s, addr, sizeof (addr))  将套接字绑定至指定网卡,参数1=套接字句柄    参数2为一个addr结构的值,该值表明要绑定的网卡IP及端口号

4.  ioctlsocket (Socket, 2550136833, 1) 将套接字的模式改变为允许接收所有数据

顺利完成上面的操作后咱就可以用Recv来接收数据包了,只要不断的调用Recv就OK。

@小白熊

文件下载

来源:三叶资源网,欢迎分享,公众号:iisanye,(三叶资源网⑤群:21414575

已有3位网友发表了看法:

  • fiddler

    fiddler  评论于 [2022-03-02 19:20:38]  回复

    原始套接字+指定网卡+

欢迎 发表评论:

百度站内搜索
关注微信公众号
三叶资源网⑤群:三叶资源网⑤群

网站分类
随机tag
易语言CEF3模块ICMPEXUI缓动登陆界面源码精易源码QQ群引流线程安全Flutter技术入门与实战会员管理系统易语言客户端胆码不重复算法地图坐标系转换模块云外归鸟鼠标自动点击器扫码枪数据获取音遇QQ好友计数器软件快手二维码易语言直尺工具源码自动下单工资管理系统
最新评论