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

利用原始套接字解决mac地址错误问题【南瑞SysKeeper-2000】

一:案例描述

一键可视顺控图像智能项目在网络部署过程中,对网络限制隔离安全性要求很高,用到正向隔离装置(南瑞SysKeeper-2000型号)。

      

图一 正向装置示意图

现场发现问题:直连网线情况下,我方系统A抓包到有数据报文,但是不进行业务处理。

二:案例分析和解决
2.1 抓包分析问题

       1.防火墙

考虑到抓包只是到了网卡,可能被防火墙拦截了

       确认已经是关闭状态的。

       2.对比测试

       利用不过正向隔离装置进行测试(直接其他电脑发送数据),抓包发现系统A收到数据了数据,并进行了业务处理。

       通过对比抓包,发现两个差别点时候链路层的目的MAC地址不一样:目的mac如果非本机,则本机的应用程序无法收到此数据。

       图2 三个窗口(左窗口为mac值;而中窗口因为目的mac错误导致应用程序无法接收到数据;右窗口目的mac正确,应用程序能够接收到数据)

     由此,推断是这正向隔离装置的目的mac地址配置错误,导致无法被应用程序接收。

       3.配置确认

百度排查此正向隔离装置---南瑞SysKeeper-2000,确实需要配置此mac地址,进一步证

了此猜测。

     项目实施过程中,南瑞厂家技术已经离开,为保证演示,需要其他方式进行规避解决处理。

2.2 解决方案----原始套接字

2.2.1 理论

       考虑到数据已经到了网卡,理论上我们可以从网卡得到数据。而我们应用程序无法得到数据是因为使用了UDP/TCP套接字,UDP/TCP套接字编程得到的只是负载数据(没有ip,mac等信息),且对方的网络报文有误(目的mac有误),导致操作系统内核过滤丢弃此数据,不转发给应用层。

       而原始套接字可以直接从链路层得到更多的数据,包括ip,mac等信息,对于的七层模型中的数据链路层+网络层+传输层。

       对于七层模型:

      

对应于模型来看:

             

       从抓包看也能对应上:

      

正常的UDP报文截图

原始套接字编程

Tcp/udp编程

读写数据内容

eth+ip+udp/tcp+data

data(本例中的220字节)

         

2.2.2 实现

伪代码实现:

  1. 开启混杂模式
    ifconfig eth0 promisc  设置混杂模式
    ifconfig eth0 -promisc 取消混杂模式

2)创建原始套接字:

//ETH_P_ALL 接收发往本机mac的所有类型ip arp rarp的数据帧, 接收从本机发出的所有类型的数据帧.

       //(混杂模式打开的情况下,会接收到非发往本地mac的数据帧 ),

int sock_raw_fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));

3)接受数据

//获取链路层的数据帧---null 所有网卡

 int iRevNum = recvfrom(sock_raw_fd, buf, sizeof(buf),0,NULL,NULL);

4)处理数据

       eth+ip+udp/tcp+data对于的

if( 0x0800 == ntohs(ethdr->ether_type) ) 判断为IP数据包,占用14字节

       ip+udp/tcp 占用了56字节,

       剩下的就是data负载数据了。

      

从图上,可以看到从IP数据包中得到了mac信息,且data收到了8个负载数据字节。

由此,来解决现场的错误目的mac的问题。

相关文章:

利用原始套接字解决mac地址错误问题【南瑞SysKeeper-2000】

一:案例描述 一键可视顺控图像智能项目在网络部署过程中,对网络限制隔离安全性要求很高,用到正向隔离装置(南瑞SysKeeper-2000型号)。 图一 正向装置示意图 现场发现问题:直连网线情况下,我方…...

JVM- 为什么G1垃圾回收器需要有大对象区

G1(Garbage-First)垃圾回收器在Java虚拟机(JVM)中引入了大对象区(也称为Humongous Region或H-Region)的概念,主要是为了高效地处理大型对象。在垃圾回收的上下文中,大对象指的是那些…...

操作系统的界面

(1) 请说明系统生成和系统引导的过程。 解: 系统的生成过程:当裸机启动后,会运行一个特殊的程序来自动进行系统的生成(安装),生成系统之前需要先对硬件平台状况进行检查,或者从指定文件处读取…...

User 怎么在anaconda的虚拟环境中安装下载好的jieba.tar.gz包呢

...

1.【分布式】分布式事务详解

分布式事务 1.分布式事务是什么?数据库事务 2.分布式事务产生的原因?存储层拆分服务层拆分 3.分布式事务解决方案4.分布式事务有哪些开源组件SeateTCC 分布式服务组件基于消息补偿的最终一致性 5.两阶段提交,三阶段协议详解二阶段提交协议三阶…...

selenium-wire简介

一.简介 以下来自chatGPT回答: selenium-wire是一个基于selenium的Python库,它扩展了selenium的功能,使得我们可以在自动化测试中直接访问和修改浏览器的网络请求和响应。selenium-wire可以拦截和修改HTTP请求和响应,从而可以在…...

华为组播配置案例

igmp-snooping主要用于生成二层组播表项,防止交换机全部接口都发组播报文 PC端配置: 组播源配置: R1 interface GigabitEthernet0/0/0 ip address 10.0.0.1 255.255.255.0 pim dm interface GigabitEthernet0/0/1 ip address 192.168.0…...

lua语法

lua语法 1.lua数据类型 lua 脚本输出乱码,将lua脚本改为UTF-8编码,并且需要DOS下修改代码页:CHCP 65001 即可。 基本语法 注释 print("script lua win")-- 单行注释--[[多行注释]]--标识符 类似于:java当中 变量、…...

5A-Downloader,m3u8文件转mp4文件,音视频分离ts合并、转mp4

获取方式: 1.https://www.pgyer.com/DpxhpE 2.https://github.com/JoeLeeto/5A-Downloader 3.https://play.google.com/store/apps/details?idcom.leet.downloader...

标准IO与文件IO

标准IO通过缓冲机制减少系统调用,实现更高的效率 全缓冲:当流的缓冲区无数据或无空间时才执行实际IO操作 行缓冲:当在输入和输出中遇到换行符(\n)时,进行IO操作 当流和一个终端关联时,典型的行缓…...

流行的 React 相关库和框架

React 本身就是一个非常流行的 JavaScript 库,用于构建用户界面,特别是单页面应用。不过,有许多其他的库和框架与 React 结合使用,以提供额外的功能和优化开发体验。以下是一些最流行的 React 相关库和框架: Next.js&a…...

游戏引擎?

游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。大部分都支持多种操作平台,如Linux、…...

C语言--字符函数与字符串函数

大家好,我是残念,希望在你看完之后,能对你有所帮助,有什么不足请指正!共同学习交流 本文由:残念ing 原创CSDN首发,如需要转载请通知 个人主页:残念ing-CSDN博客,欢迎各位…...

整理了一些热门、含免费次数的api,分享给大家

IP归属地-IPv4区县级:根据IP地址查询归属地信息,包含43亿全量IPv4,支持到中国地区(不含港台地区)区县级别,含运营商数据。IP应用场景- IPv4:IPv4应用场景是获取IP场景属性的在线调用接口&#x…...

Wireshark在网络性能调优中的应用

第一章:Wireshark基础及捕获技巧 1.1 Wireshark基础知识回顾 1.2 高级捕获技巧:过滤器和捕获选项 1.3 Wireshark与其他抓包工具的比较 第二章:网络协议分析 2.1 网络协议分析:TCP、UDP、ICMP等 2.2 高级协议分析:HTTP…...

关于设计师的自我评价(合集)

设计师的自我评价篇一 本人接受过正规的美术教育,具有较好的美术功底及艺术素养,能够根据公司的需要进行设计制作,熟练掌握多种电脑制作软件,能够高效率地完成工作。本人性格开朗、思维活跃、极富创造力,易于沟通&…...

Hudi Clustering

核心概念 Hudi Clustering对于在数据写入和读取提供一套相对完善的解决方案。它的核心思想就是: 在数据写入时,运行并发写入多个小文件,从而提升写入的性能;同时通过一个异步(也可以配置同步,但不推荐&…...

通过与 Team Finance 整合,Casper Network 让 Token 的创建、部署更加高效

随着 Team Finance 整合到 Casper 系统中,Token 创建的过程变得更加迅速而简便。Casper Network 的方案正在使代币的创建变得易于访问与调整,这将让任何有创意和业务理念的人能够以高效、可信的方式,更快速、安全地在 Casper 上推出他们的项目…...

Linux软件管理rpm和yum

rpm方式管理 rpm软件包名称: 软件名称 版本号(主版本、次版本、修订号) 操作系统 -----90%的规律 #有依赖关系,不能自动解决依赖关系。 举例:openssh-6.6.1p1-31.el7.x86_64.rpm 数字前面的是名称 数字是版本号:第一位主版本号,第二位次版本…...

uart和usart的区别

UART 通用异步收发器,一般来说,在单片机上,名为UART的接口只能用于异步串行通信。 USART 名为USART的接口既可用于同步串行通信,也可用于异步串行通信。...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

【Oracle APEX开发小技巧12】

有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

数据库分批入库

今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

深度学习习题2

1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...