微博

QQ

基于单向通信和python操作微信的信号监测报警系统

2022-07-15 黄钦越 广东省广播电视卫星地球站 依马狮视听工场


【摘要】 本文阐述了卫星地球站下行信号监测报警的一种低成本高实用性的实现方案,解决了其中内网与外网连接的安全问题,利用微信的普及性实现了报警信息的及时传达。

【关键词】 监测  报警  单向通信  python  操作微信


一.引言

当前,卫星地球站上行信号传输系统需要7X24小时双人值守,然而人非机器,总有临时的特殊情况。如一人临时离开主控室且另一人紧急上厕所等导致特殊情况,这时如果突发故障导致节目信号无法正常传输, 其余备勤人员又都不在技术楼(主控室所在)无法听到警报声,将导致故障无法及时排除而引发安全播出事故。因此,一种能自动将报警信息传达到站区内所有相关人员的自动报警系统是有现实需求的。

二.设计要求

如今人人都是手机不离身,连上厕所都带手机,并且手机上也基本都安装了微信。所以,本自动报警系统首先考虑把报警信息传送到手机的微信上,这样值班组成员将能更及时有效地收到报警信息,这意味着自动报警系统需要连接外网,通过互联网传送报警信息。然而,自动报警系统的监测源是在内网(卫星下行信号监测设备组成的内网),这又需要自动报警系统把内网和外网连接起来。

内网连接外网,这将面临网络安全方面的重大挑战。如2021年5月美国燃料管道运营商遭受黑客攻击勒索,影响五千多万居民的正常生活。卫星地球站作为广播电视节目的实时传输单位,面临着黑客、法轮功组织、境外反对势力等的攻击干扰威胁。因此,自动报警系统在需要内网连接外网的情况下,必须具备完全阻挡网络攻击的能力。

目前商业运用中,大部分仍然采用防火墙技术,试图保护内网免于来自外网的攻击。然而防火墙是基于现有传输协议,协议本身的漏洞难以避免,而且防火墙属于策略防护,总有逻辑上的漏洞,无法抵挡黑客的新型攻击。事实上,只要是存在双向通信的防护技术,都存在漏洞被攻击的可能,唯有在物理上实施单向传输,即要么信息只进不出,要么信息只出不进,去除信息的反馈,才可彻底隔断网络攻击。

如今物理上实现单向传输技术主要有数据二极管技术和光波单向传输技术。数据二极管技术,应用了二极管电子流动的单向特性,克服了基于现有传输协议对数据包进行控制而导致的可靠性不足的缺点,实现数据的单向流动。然而数据二极管技术仍属于稀有技术,市场应用较少,产品稀缺,无法低成本实现。光波单向传输技术,采用了光信号的单向传播特点,传输过程中,将电信号转化为光信号,以光纤作为介质进行传输,再把光信号传输给接收模块,接收模块把光信号转化成电信号,信号路径为“电信号——光信号——电信号”。依托该技术的单向光卡,在物理上实现了单一方向的信息传输,确保不同安全级别的网络之间数据传输的安全性,且传输速度轻松达千兆级别,其现有产品成熟丰富,稍加改造即可实现单向 传输。

三.实现单向传输的关键硬件模块

我们考虑采用光纤网卡来实现单向传输,实物如图1所示。一般情况下,两个光纤网卡之间是通过两根光纤交叉连接实现的,是双向通信的。如图2所示,A口只负责发送,B口只负责接收,1光卡和2光卡是对称关系,一般工作模式下无法实现物理上的单向传输。

基于单向通信和python操作微信的信号监测报警系统
图1 光纤网卡实物图

为此,我们尝试只连接一根光纤,理论上就可以实现单向传输了。如图 3所示,然而,经测试,输入ethtool ethx命令行得知1光卡Link detected状态为no,1光卡在这种模式下无法正常工作,自然2光卡在这种模式下也无法正常工作。多次实验发现,只有B口有信号输入的光卡,才能正常工作。

基于单向通信和python操作微信的信号监测报警系统

为此,我们考虑使用光分路器,尝试通过一个光卡发送端的信号激活两个光卡。连接模式改造如图 4所示。经测试,在此连接模式下,两个光卡均能正常工作。1光卡的发出信号通过光分路器一分为二,一路返回1光卡的接收端口以激活本光卡,另一路传输到2光卡接收端口实现数据的传输,自始自终,信号均只能从1光卡传输到2光卡,而无法从2光卡传输到1光卡[1]。此种连接模式能很好地解决两个光卡的激活问题,同时确保物理上的单向传输。

基于单向通信和python操作微信的信号监测报警系统

四.硬件架构

如图5所示,整个硬件系统由内网部分和外网部分组成。内网部分,4副卫星天线接收的信号接入卫星接收机,解调解码后,经过交换机,传输到监测报警系统计算机,监测报警系统一旦监测到信号异常,则将报警信号经1光卡、2光卡,传输至外网传输电脑,外网传输电脑收到报警信号后,立即通过互联网,向目标手机用户的微信app发出报警消息。

基于单向通信和python操作微信的信号监测报警系统

图5 硬件架构图

五.监测报警系统软件实现

监测报警系统接收来自卫星接收机的视频信号,对4路视频信号截图,依次判断是否为黑场,是则输出报警编码,否则循环操作以上步骤。输出报警编码时,涉及到通信协议,考虑到单向传输的特性,我们排除使用TCP等需要握手的协议,而采用UDP(用户数据报协议)。UDP协议是一种无连接、不保证准确无误传输的传输协议,由于传输数据前不需要多次反馈握手确认,因此该协议特别适合单向传输的特殊要求。在编程时需要注意避免出现反馈的语句。流程图如图 6所示。

基于单向通信和python操作微信的信号监测报警系统

图6 监测报警系统流程图

六.外网传输系统软件实现

如图7所示,外网传输系统将监测报警系统传来的编码进行翻译,如果编码为110,则连续三次向微信群发出消息 “下行信号黑场”。

基于单向通信和python操作微信的信号监测报警系统

图7 外网传输系统流程图

0 python编程实现自动向微信群发送消息

由于微信没有提供关于聊天信息发送的应用程序编程接口,我们考虑使用python编程语言提供的pywin32库,以此模拟键盘鼠标操作,实现自动模拟人操作微信发送群消息[2]。“操作微信发送报警”子程序流程图如图8所示。编程前需要使用winspy工具获取微信窗体的类名和标题。

基于单向通信和python操作微信的信号监测报警系统

图8 “操作微信发送报警”子程序流程图

部分代码如图9所示: 

基于单向通信和python操作微信的信号监测报警系统

图9“操作微信发送报警”子程序部分代码

七.结束语

本系统中,为了保证内网安全,采用光纤模块的特殊连接模式,实现只出不进的单向通信。为了使报警信息能及时送达相关人员,通过python操控微信,使报警信息通过微信及时送达。本系统除了“黑场”报警,后期还可以增加“静止帧”和“无声音”报警,通过分配不同的报警编码,实现多种故障情形的区别 报警。B&P


参考文献

[1] 马会新 基于物理隔离的单向文件传输系统的设计与实现[D],华中科技大学,2015:18-19.

[2] a iyoma ju n用p y t h o n 自动给微信好友发消息[OL],CSDN,2020.

监测 报警 单向通信 python 操作微信

视听科技视频号 广告
发表评论