【摘要】 本文闡述了衛星地球站下行信號監測報警的一種低成本高實用性的實現方案,解決了其中內網與外網連接的安全問題,利用微信的普及性實現了報警信息的及時傳達。
【關鍵詞】 監測 報警 單向通信 python 操作微信
一.引言
當前,衛星地球站上行信號傳輸系統需要7X24小時雙人值守,然而人非機器,總有臨時的特殊情況。如一人臨時離開主控室且另一人緊急上廁所等導致特殊情況,這時如果突發故障導致節目信號無法正常傳輸, 其余備勤人員又都不在技術樓(主控室所在)無法聽到警報聲,將導致故障無法及時排除而引發安全播出事故。因此,一種能自動將報警信息傳達到站區內所有相關人員的自動報警系統是有現實需求的。
二.設計要求
如今人人都是手機不離身,連上廁所都帶手機,并且手機上也基本都安裝了微信。所以,本自動報警系統首先考慮把報警信息傳送到手機的微信上,這樣值班組成員將能更及時有效地收到報警信息,這意味著自動報警系統需要連接外網,通過互聯網傳送報警信息。然而,自動報警系統的監測源是在內網(衛星下行信號監測設備組成的內網),這又需要自動報警系統把內網和外網連接起來。
內網連接外網,這將面臨網絡安全方面的重大挑戰。如2021年5月美國燃料管道運營商遭受黑客攻擊勒索,影響五千多萬居民的正常生活。衛星地球站作為廣播電視節目的實時傳輸單位,面臨著黑客、法輪功組織、境外反對勢力等的攻擊干擾威脅。因此,自動報警系統在需要內網連接外網的情況下,必須具備完全阻擋網絡攻擊的能力。
目前商業運用中,大部分仍然采用防火墻技術,試圖保護內網免于來自外網的攻擊。然而防火墻是基于現有傳輸協議,協議本身的漏洞難以避免,而且防火墻屬于策略防護,總有邏輯上的漏洞,無法抵擋黑客的新型攻擊。事實上,只要是存在雙向通信的防護技術,都存在漏洞被攻擊的可能,唯有在物理上實施單向傳輸,即要么信息只進不出,要么信息只出不進,去除信息的反饋,才可徹底隔斷網絡攻擊。
如今物理上實現單向傳輸技術主要有數據二極管技術和光波單向傳輸技術。數據二極管技術,應用了二極管電子流動的單向特性,克服了基于現有傳輸協議對數據包進行控制而導致的可靠性不足的缺點,實現數據的單向流動。然而數據二極管技術仍屬于稀有技術,市場應用較少,產品稀缺,無法低成本實現。光波單向傳輸技術,采用了光信號的單向傳播特點,傳輸過程中,將電信號轉化為光信號,以光纖作為介質進行傳輸,再把光信號傳輸給接收模塊,接收模塊把光信號轉化成電信號,信號路徑為“電信號——光信號——電信號”。依托該技術的單向光卡,在物理上實現了單一方向的信息傳輸,確保不同安全級別的網絡之間數據傳輸的安全性,且傳輸速度輕松達千兆級別,其現有產品成熟豐富,稍加改造即可實現單向 傳輸。
三.實現單向傳輸的關鍵硬件模塊
我們考慮采用光纖網卡來實現單向傳輸,實物如圖1所示。一般情況下,兩個光纖網卡之間是通過兩根光纖交叉連接實現的,是雙向通信的。如圖2所示,A口只負責發送,B口只負責接收,1光卡和2光卡是對稱關系,一般工作模式下無法實現物理上的單向傳輸。

圖1 光纖網卡實物圖
為此,我們嘗試只連接一根光纖,理論上就可以實現單向傳輸了。如圖 3所示,然而,經測試,輸入ethtool ethx命令行得知1光卡Link detected狀態為no,1光卡在這種模式下無法正常工作,自然2光卡在這種模式下也無法正常工作。多次實驗發現,只有B口有信號輸入的光卡,才能正常工作。

為此,我們考慮使用光分路器,嘗試通過一個光卡發送端的信號激活兩個光卡。連接模式改造如圖 4所示。經測試,在此連接模式下,兩個光卡均能正常工作。1光卡的發出信號通過光分路器一分為二,一路返回1光卡的接收端口以激活本光卡,另一路傳輸到2光卡接收端口實現數據的傳輸,自始自終,信號均只能從1光卡傳輸到2光卡,而無法從2光卡傳輸到1光卡[1]。此種連接模式能很好地解決兩個光卡的激活問題,同時確保物理上的單向傳輸。

四.硬件架構
如圖5所示,整個硬件系統由內網部分和外網部分組成。內網部分,4副衛星天線接收的信號接入衛星接收機,解調解碼后,經過交換機,傳輸到監測報警系統計算機,監測報警系統一旦監測到信號異常,則將報警信號經1光卡、2光卡,傳輸至外網傳輸電腦,外網傳輸電腦收到報警信號后,立即通過互聯網,向目標手機用戶的微信app發出報警消息。

圖5 硬件架構圖
五.監測報警系統軟件實現
監測報警系統接收來自衛星接收機的視頻信號,對4路視頻信號截圖,依次判斷是否為黑場,是則輸出報警編碼,否則循環操作以上步驟。輸出報警編碼時,涉及到通信協議,考慮到單向傳輸的特性,我們排除使用TCP等需要握手的協議,而采用UDP(用戶數據報協議)。UDP協議是一種無連接、不保證準確無誤傳輸的傳輸協議,由于傳輸數據前不需要多次反饋握手確認,因此該協議特別適合單向傳輸的特殊要求。在編程時需要注意避免出現反饋的語句。流程圖如圖 6所示。

圖6 監測報警系統流程圖
六.外網傳輸系統軟件實現
如圖7所示,外網傳輸系統將監測報警系統傳來的編碼進行翻譯,如果編碼為110,則連續三次向微信群發出消息 “下行信號黑場”。

圖7 外網傳輸系統流程圖
0 python編程實現自動向微信群發送消息
由于微信沒有提供關于聊天信息發送的應用程序編程接口,我們考慮使用python編程語言提供的pywin32庫,以此模擬鍵盤鼠標操作,實現自動模擬人操作微信發送群消息[2]。“操作微信發送報警”子程序流程圖如圖8所示。編程前需要使用winspy工具獲取微信窗體的類名和標題。

圖8 “操作微信發送報警”子程序流程圖
部分代碼如圖9所示:

圖9“操作微信發送報警”子程序部分代碼
七.結束語
本系統中,為了保證內網安全,采用光纖模塊的特殊連接模式,實現只出不進的單向通信。為了使報警信息能及時送達相關人員,通過python操控微信,使報警信息通過微信及時送達。本系統除了“黑場”報警,后期還可以增加“靜止幀”和“無聲音”報警,通過分配不同的報警編碼,實現多種故障情形的區別 報警。B&P
參考文獻
[1] 馬會新 基于物理隔離的單向文件傳輸系統的設計與實現[D],華中科技大學,2015:18-19.
[2] a iyoma ju n用p y t h o n 自動給微信好友發消息[OL],CSDN,2020.