易语言-使用 RawSocket 捕获网卡/指定程序/指定端口/指定IP 数据包
本文章将介绍如何使用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。
- 1
- StoneChan2023-07-25通过阅读这个文件,我对网络数据包捕获的原理有了更深入的理解,非常感谢作者的分享。
- 有只风车子2023-07-25文档详细地介绍了如何使用RawSocket来捕获指定程序、指定端口和指定IP的数据包,非常实用。
- 晕过前方2023-07-25对于想要了解网络数据包捕获的人来说,这个文件提供了简明扼要的指导,很容易上手。
- 兰若芊薇2023-07-25文件的语言简单易懂,没有过多的专业术语,适合初学者学习。
- 神康不是狗2023-07-25这个文件介绍了使用RawSocket捕获网络数据包的方法,让人受益匪浅。
- 粉丝: 1
- 资源: 973
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助