当前位置: 首页 > news >正文

wordpress 微博秀河北seo网站设计

wordpress 微博秀,河北seo网站设计,个人微信小程序免费制作,商丘雷光网络科技有限公司1.前言 最近有个在学校读书的迷弟问我:大德德, 有没有这么一款软件, 能够批量读取多个抓包文件,并把我想要的数据呈现出来, 比如:源IP、目的IP、源mac地址、目的mac地址等等。我说#xff1a;“这样的软件你要认真找真能找出不少开源软件, 但毕竟没有你自己的灵魂在里面,要不…1.前言 最近有个在学校读书的迷弟问我:大德德, 有没有这么一款软件, 能够批量读取多个抓包文件,并把我想要的数据呈现出来, 比如:源IP、目的IP、源mac地址、目的mac地址等等。我说“这样的软件你要认真找真能找出不少开源软件, 但毕竟没有你自己的灵魂在里面,要不咱自己用Go实现一个吧”, OK , Lets go。 2.摘要 能够实现网络协议解析和分析的工具有很多,最有名使用最多的是基于图形化界面的Wireshark, 除了能够实现网络实时抓包,还能够离线分析Pcap包文件, 虽然它通常用于手动分析网络数据包, 但也支持自动化脚本和插件来提取元数据。而Wireshark还有一个基于命令行版本的Tshark, 可以用于自动化任务, 可以批量处理Pcap文件, 提取所需数据并导出到文件中。 本次用Go语言实现的网络协议解析功能是基于Google公司开发一个开源库:gopacket, 该库帮我们完成了网络协议的一些底层封装, 它允许我们能够捕获、解析和处理网络数据包, 与Wireshark一样,也支持对离线抓包文件的分析。gopacket库提供了一系列功能,包括:数据包捕获、解析和构建, 以及对多种协议的支持,如:Ethernet、IP、TCP、UDP、HTTP等。它还提供了方便的API, 以帮助开发者操作和分析网络数据包。 3.实现原理 谷歌公司开发的gopacket提供了5个子包接口供使用者调用,其中Layers子包负责协议解析;pcap子包实际是libpcap的包装,主要用于数据包格式解析;pfring子包和afpacket用于快速数据库包抓取;tcpassembly用于TCP流重组。 在本篇文章中,主要利用gopacket提供的Layers和pcap接口实现上层业务逻辑。在流量解析引擎中,调用pcap接口对离线pcap抓包文件进行数据包解析,并配合Layers接口实现协议解析,目前根据业务种类,实现的协议解析包括:HTTP协议、TCP/UDP协议、ICMP协议和802.11协议。流量解析引擎的整体架构如下: 我们实现的流量解析引擎主要针对离线pcap包文件, 支持的协议类型包括:HTTP协议、TCP/UDP协议、ICMP协议、802.11(无线协议) ,通过对各类协议的解析,可以实现一些高级功能,例如: 特征库匹配、漏洞扫描检测、一些网络攻击检测等等。 通过对gopacket开源包的研究,整理出其使用方法如下: 利用pcap子包的OpenOffline方法加载离线数据包文件,加载成功返回离线数据包文件句柄。 离线包文件句柄通过SetBPFFilter方法过滤数据类型,调用LinkType()方法获取链路类型。 将第2步中的文件句柄和LinkType作为参数调用方法NewPacketSource。 NewPacketSource调用Packet()方法获取离线包文件中所有的数据包,通过遍历每个数据包进行下一步操作。 每个数据包对象通过调用Layer()方法获取数据对象层,参数为数据对象的种类,种类有很多种,根据不同的协议类型进行区分。 获取的数据层级操作对象是数据包解析基础方法需要达到的目的,即将解析的具体数据将在数据层级中进行不同方法的筛选。 大致的调用关系整理如下图: 4.功能代码实现 在我们的工程项目中,首先要引入三个包,它们是: import(github.com/google/gopacketgithub.com/google/gopacket/layersgithub.com/google/gopacket/pcap ) 因为我们操作的对象主要是针对离线pcap包, 因此首先要加载离线包文件,代码如下: handle, err pcap.OpenOffline(pcapFilePath) if err ! nil {log.Panic(err) } handle是加载离线包文件后返回的文件句柄,类型为:*pcap.Handle,接下来我们要设置一下过滤,只针对tcp连接的包,所以通过上面的文件句柄调用过滤函数: err handle.SetBPFFilter(tcp)if err ! nil {log.Panic(err) } 根据上面的调用关系图,我们需要调用NewPacketSource方法,代码如下: packetSource : gopacket.NewPacketSource(handle, handle.LinkType()) packets : packetSource.Packets() packetSource.Packets()方法返回的是一个通道, 用来接收gopacket解析出来的每一个数据包, 因此这里需要做循环接收,并在循环内容解析ethernet层, 解析大致过程如下: 下面我们根据上面的流程图解析LayerTypeEthernet, 代码如下: for packet : range packetSource.Packets() {ethernetLayer : packet.Layer(layers.LayerTypeEthernet)if ethernetLayer nil {continue}ethernetPacket, _ : ethernetLayer.(*layers.Ethernet) } 下面涉及到协议的层级,我们对照Wireshark的包对比看一下,如图: 从上图的协议结构中我们可以看到,源IP地址和目的IP地址是在IPv4层上, 源端口和目的端口是在TCP层上, 而mac地址是在Ethernet层上, 因此要想获取这6个元数据,我们至少要解析三层协议, 添加以下代码: for packet : range packetSource.Packets() {ethernetLayer : packet.Layer(layers.LayerTypeEthernet)if ethernetLayer nil {continue}ethernetPacket, _ : ethernetLayer.(*layers.Ethernet)if ethernetPacket.EthernetType.String() IPv4 {ipLayer : packet.Layer(layers.LayerTypeIPv4)if ipLayer nil { continue }// 这里从IPv4协议层取源IP和目的IP数据ipInfo, _ : ipLayer.(*layers.IPv4)tcpLayer : packet.Layer(layers.LayerTypeTCP)if tcpLayer nil { continue }// 这里从TCP协议层取TCP数据,获取源端口和目的端口数据tcpInfo, _ : tcpLayer.(*layers.TCP)//下面的代码取具体的PayloadapplicationLayer : packet.ApplicationLayer()if applicationLayer nil { continue }payload : string(applicationLayer.Payload())// 从GET或POST请求中取出元数据if strings.HasPrefix(payload, GET) || strings.HasPrefix(payload, POST) {fmt.Println(源mac地址:, ethernetPacket.SrcMAC.String())fmt.Println(目的Mac地址:, ethernetPacket.DstMAC.String())fmt.Println(源IP地址:, ipInfo.SrcIP.String())fmt.Println(目的IP地址:, ipInfo.DstIP.String())fmt.Println(源端口:, int(tcpInfo.SrcPort))fmt.Println(目的端口:, int(tcpInfo.DstPort))}} } 5.行为检测实现 这里我们以检测数据库的匿名登录行为为例子, 首先在kali系统上对目标数据库尝试匿名登录,如图: 在登录过程中,使用Wireshark进行网络抓包,如图: 从上面的抓包文件中,我们可以根据Payload偏移提取一些行为特征,例如: 将特征检测的逻辑加入到代码中: for packet : range packetSource.Packets() {ethernetLayer : packet.Layer(layers.LayerTypeEthernet)if ethernetLayer nil {continue}ethernetPacket, _ : ethernetLayer.(*layers.Ethernet)if ethernetPacket.EthernetType.String() IPv4 {ipLayer : packet.Layer(layers.LayerTypeIPv4)if ipLayer nil { continue }// 这里从IPv4协议层取源IP和目的IP数据ipInfo, _ : ipLayer.(*layers.IPv4)if ipInfo.Protocol.String() TCP {tcpLayer : packet.Layer(layers.LayerTypeTCP)tcp, _ : tcpLayer.(*layers.TCP)if (len(tcp.Payload) 36 bytes.Equal(tcp.Payload[13:37], []byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0})) || (len(tcp.Payload) 39 bytes.Equal(tcp.Payload[13:40], []byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 111, 111, 116})) {fmt.Println(发现数据库匿名登录行为!)}}} } 将上面的代码编译后加载离线pcap包跑一下,可以看到已经匹配到行为特征,如图: 可以看到,已经成功命中行为特征。
http://www.dnsts.com.cn/news/230456.html

相关文章:

  • 网站开发后台做些什么网站备案授权书
  • 如何解决网站兼容四站合一网站建设
  • o2o系统网站建设温州网站开发公司
  • 怎么做网站投放adsense新手自己做网站
  • 做网站的外部链接关系分析的工具运城市做网站价格
  • 四站合一网站制作织梦医疗网站
  • 做k12网站做暧暧暧昧网站
  • 延吉市住房城乡建设局官方网站网站建设包括备案吗
  • 河南工程招标网站企查宝企业查询
  • 免费logo网站泰安专业网站建设
  • 平面设计软件网站google seo怎么做
  • 如何在工商局网站做身份确认网站没备案做淘宝客
  • centos7是怎么做网站的公众号模板制作精美
  • 山东省建设厅网站 - 百度太原百度推广开户
  • 网站做文件检查如何给一个网站做定时的更新
  • 网站建设与管理计划友情链接seo
  • joomla! 1.5 网站建设基础教程 :宁皓网建e网室内设计网下载
  • 域名站长工具wordpress子标题
  • 网站开发整套资料湖南做旅游网站哪家最好
  • 网站推广文案怎么写服务器做jsp网站教程视频播放
  • 做网站开发的营业执照企业邮箱登录入口网页版
  • 自己买服务器做网站软通动力外包怎么样
  • 家教网站制作珠海移动网站建设公司
  • 食品公司网站建设国内百度云网站建设
  • 山东省建设执业师之家官方网站建筑网课回放
  • 湖北省建设厅网站怎么打不开wordpress批量替换图片路径
  • 企业网站需要什么百度帐号登录个人中心
  • 有利于优化的网站模板制作企业网站得多长时间
  • 淘宝客导购网站wordpress源码下载模板
  • 怎样可以有自己的网站谷歌优化排名公司