基於Modbus協議實現Openplc與Kingview的仿真通訊與模擬測試

2022-01-02 FreeBuf
一、前言

工業控制系統離不開上位機監控系統和下位機控制器即PLC,上位機軟體相對比較容易獲得,比如本文採用kingview6.53,但PLC的獲得相對來說就沒有那麼輕鬆,考慮這種情況,本文藉助一款模擬工業自動化環境的開源軟體OpenPLC基於modbus協議實現與組態王的通訊仿真。同時基於環境進行模擬測試,對組態王的組態畫面、OpenPLC Editor梯形圖簡單編程進行簡單介紹,親測效果不錯。

二、環境準備

(1)Kali linux虛擬機(IP:192.168.180.146)安裝OpenPLC

安裝過程參考https://github.com/thiagoralves/OpenPLC_v3,安裝後,Kali linux虛擬機內置瀏覽器輸入如下地址,帳戶/密碼:openplc/openplc。

(2)Kali linux虛擬機(IP:192.168.180.146)安裝OpenPLC_Editor,安裝過程參考https://github.com/thiagoralves/OpenPLC_Editor,安裝後,在應用裡面搜索OpenPLC_Editor,打開後,編寫簡單程序如下,下載連結:openplc_test.st。

(3)winxp sp3虛擬機(IP:192.168.180.157)安裝組態王6.53,新建test工程下載連結https://github.com/sxd0216/kingview—test,並按下圖所示添加OpenPLC設備OpenPLC_test。

(4)設定變量並和OpenPLC_test連接

(5)組態簡單畫面,點擊Start,電機運行,點擊Stop,電機停止

三、仿真通訊

(1)Kali linux虛擬機(IP:192.168.180.146)中運行OpenPLC,導入OpenPLC_Editor編輯好的程序openplc_test.st。

待程序編譯好後,Go to Dashboard,然後Start PLC

待PLC出現Running後,進入Monitoring

(2)winxp sp3虛擬機(IP:192.168.180.157)中運行test工程

(3)通過信息窗口查看,已經通訊成功

(4)點擊Start後,指示燈亮,電機啟動,進入PLC,發現Start和MV1變量值已經變為TRUE,對比圖如下:

(5)點擊Stop後,指示燈滅,電機停止,進入PLC,發現Start和MV1變量值已經變為FALSE,Stop變量值變為TRUE,對比圖如下:

四、模擬測試

(1)winxp sp3虛擬機(IP:192.168.180.157)中利用wireshark抓取03.仿真通訊中Start(14幀、16幀)和Stop(19幀、21幀)的數據包,下載連結https://github.com/sxd0216/attack-packets。

查看數據包,搜索modbus協議」05」功能碼Write Coil,捕獲到Start(14幀、16幀)和Stop(19幀、21幀)的攻擊數據包,modbus協議常用功能碼如下:

01 :讀取線圈狀態

02:讀取輸入狀態

03:保持型寄存器讀取

05:寫單一線圈

06:寫單一寄存器

(2)基於wireshark捕獲的Write Coil,編寫Python攻擊包,下載連結https://github.com/sxd0216/attack-packets。

(3)利用攻擊包也可以達到(4)和(5)的效果

五、總結

本文主要利用OpenPLC模擬modbus協議實現了OpenPLC實現了與Kingview的通訊仿真與模擬測試,大家如果感興趣也可以基於OpenPLC模擬其他協議,進而仿真其他環境;同時本文也對kingview如何建立工程、組態畫面,OpenPLC Editor編輯簡單梯形圖程序進行了簡單介紹,希望對熱愛工控的人士有所幫助。

*本文作者:fangyu0216,轉載請註明來自FreeBuf.COM

相關焦點

  • 工控安全:Openplc 仿真項目環境搭建實驗
    OpenPLCOpenPLC是一個基於易於使用軟體的開源可編程邏輯控制器。OpenPLC項目是根據IEC 61131-3標準創建的,該標準定義了PLC的基本軟體架構和程式語言。並且 openplc 已經內置嵌入式平臺 I/O 硬體的驅動。Openplc 內部已經和嵌入式 I/O 進行了地址映射,可以對 I/O 進行操作與控制。Openplc 支持 modbus 協議,支持讀線圈(1)、讀輸入(2)、讀保存寄存器(3)、讀輸入寄存器(4)、寫線圈(5)、寫寄存器(6)、寫多線圈(15)、寫多寄存器(16)等基本功能碼。目前支持 modbus 和 dnp3 協議。
  • 工控安全 : Modbus仿真環境搭建
    前言2004 年,中國國家標準委員會正式把 Modbus 作為了國家標準, 雖然 Modbus 協議獲得了廣泛的應用,但是在實現具體的工業控制系統時,安全問題在卻很少被注意到。Modbus PollModbus 主機仿真器,用於測試和調試 Modbus 從設備。該軟體支持 ModbusRTU、ASCII、TCP/IP。用來幫助開發人員測試 Modbus 從設備,或者其它 Modbus 協議的測試和仿真。它支持多文檔接口,即,可以同時監視多個從設備 / 數據域。
  • 解讀 | MODBUS通訊協議連接電機及簡單調試
    投稿有禮投稿郵箱:tougao@51wctt.com來源 | 網絡剛好手頭有兩個電機,其驅動器支持MODBUS協議Modbus的庫:Modbus_tk :完整modbus協議棧的實現,支持modbus tcp/RTU{1.提供slave模擬器,即模擬modbus server:502), web-based hmi master支持}Pymodbus:使用twisted實現的modbus完整協議(支持異步通訊
  • Modbus測試小工具
    由於工作需要,碰到很多客戶調試modbus通訊的問題。針對在空調項目中,Modbus RTU通訊測試,這裡發一個modbus測試小工具小教程。1,首先是用什麼工具,工欲善其事必先利其器。功能強大,(可連結參考其他高手寫的教程):Modbus Poll是一個主機仿真器,用來幫助開發人員測試Modbus從設備,或者其它MOdbus協議的測試和仿真。它支持多文檔接口,即,可以同時監視多個從設備/數據域。每個窗口簡單地設定從設備ID,功能,地址,大小和輪詢間隔。你可以從任意一個窗口讀寫寄存器和線圈。
  • 【實戰】工控網絡協議模糊測試:用peach對modbus協議進行模糊測試
    本文來自  熊貓(s_panda)  的投稿
  • 【通訊】MODBUS協議實現PLC與變頻器通訊
    【通訊】MODBUS協議實現PLC與變頻器通訊
  • labview與plc的modbus通訊(含labview源碼)
    小夥伴們一直關注modbus通訊,本期小林子就為大家講解下,關於PLC與labview的modbus通訊~
  • Modbus協議及其攻防
    工業控制系統廣泛使用的Modbus協議由於其可靠、簡單、免費的特點,在工業控制領域長期廣泛使用,但其安全性值得我們深入探討!Modbus協議是一個應用層協消息傳遞協議,位於OSI模型的第7層,在經由不同類型的通信總線或通信媒介連接的設備之間提供客戶端/伺服器通信,Modbus憑藉其實現簡單、傳輸可靠且免費的優勢,至今仍是目前使用最廣泛的工業控制系統協議。Modbus建立在請求和響應模型之上,由功能碼代碼和數據兩部分組成。功能代碼指定請求那個服務或響應哪個服務,數據部分則提供用於功能的數據。
  • 2021看雪SDC議題回顧 | 基於模擬仿真的藍牙協議棧漏洞挖掘
    賈舵先生的議題以NRF52平臺的模擬為案例,深入淺出的介紹了如何結合虛擬仿真技術對物聯網中的藍牙固件進行全狀態的模擬,實現動態執行與調試,並且進一步就模擬器在實際漏洞挖掘應用中的實踐經驗進行分享。下面就讓我們來回顧2021看雪第五屆安全開發者峰會上《基於模擬仿真的藍牙協議棧漏洞挖掘》此議題的精彩內容。
  • 西門子博途的MODBUS RTU通訊實例
    在水處理領域尤其是流量計,一般要求採集累計流量,累計流量可以通過脈衝方式累加獲得,但是也存在誤差,採用通訊方式可以將瞬時流量和累計流量一起採集。二、案例實現項目背景:本項目採用的S7-1200的擴展modbus卡,作為MODBUS RTU的接口,採集電磁流量計的瞬時流量和累計流量。
  • 【案例】ABB機器人MODBUS TCP通訊案例
    導讀:在工作現場,經常會用到通訊與其它設備交互信息,而ABB機器人做為四大家族之一,通訊功能也是極其豐富。如果在現場要和PLC進行通訊,而PLC支持的是MODBUS  TCP 通訊協議,ABB並沒有提供標準的MODBUS相關處理函數,要使用modbus/tcp,可以使用普通socket收發,按照modbus TCP格式進行數據傳輸。
  • ModbusTcp協議的實驗室測試淺析
    1996年施耐德公司推出基於乙太網TCP/IP的Modbus協議:ModbusTCP。目前,modbus協議已經是工控網絡中最常用的通信協議之一。Modbus協議是一項應用層報文傳輸協議,包括ASCII、RTU、TCP三種報文類型。標準的Modbus協議物理層接口有RS232、RS422、RS485和乙太網接口,採用master/slave方式通信。
  • ModBusRTU問題匯總及西門子200smart modbus rtu通訊實例
    (點擊上方紅字,免費領取資料)一、ModBusRTU通訊協議與ModBus通訊協議有什麼區別?其實VB中編程很簡單從組建添加MSComm組建就行了,難的是校驗, 三、modbus、rtu、modbusrtu分別是什麼?modbus協議是工控行業的標準協議,前身為莫迪康所寫,現已被施奈德收購。
  • 西門子博途 TIA 的 Modbus 主站通訊技術講解
    西門子PLC因其市場佔有率較高,且被廣大用戶使用,應用比較廣泛,而其博圖TIA平臺得到了推廣應用,本文將介紹使用CP341進行Modbus 主站通訊
  • python modbus 測試
    python 需要安裝modbus_tk軟體包。由於是測試,所以硬體都用程序虛擬了。
  • Modbus TCP移植二
    上次推送,給大家移植了lwip協議棧,我們這次移植modbus TCP就是基於這個網絡協議棧,lwip協議棧是開源的應用非常廣泛的TCP協議棧。
  • 遠程滲透SCADA--Modbus
    modbus功能碼+0x80ModbusTCP協議模擬軟體實現抓包,修改轉發查看伺服器是否響應。4、modbus協議攻擊無線軟路由實現:樹莓派燒錄SD卡,無屏幕下設置開機自動連結無線樹莓派燒錄Win32DiskImageSD卡格式化  SD Card Formatter樹莓派配置無線登陸方式:新建  ssh  文件  wpa_supplicant.conf
  • 寄存器PLC地址與寄存器modbus協議地址
    寄存器modbus協議地址指通信時使用的寄存器地址,在實際編程中,由於寄存器PLC地址前綴的區分作用,所以只需說明後4位數,而且需轉換為4位十六進位地址。例如PLC地址40001對應尋址地址0x0000,40002對應尋址地址0x0001,寄存器尋址地址一般使用16進位描述。再如,PLC寄存器地址40003對應協議地址0002,PLC寄存器地址30003對應協議地址0002。
  • MODBUS TCP 通訊框架概覽
    Modbus協議介紹Modbus是一種工業協議,於1979年開發,旨在實現自動化設備之間的通信。Modbus最初是作為通過串行層傳輸數據的應用級協議實現的--Modbus RTU,1996年施耐德公司推出了基於乙太網TCP/IP的Modbus協議--Modbus TCP。
  • 基於TCP/IP的Modbus工控協議
    TCP/IP協議的成功很大程度上取決於它能適應幾乎所有底層通信技術。20世紀80年代初,先在X.25上運行TCP/IP協議;而後又在一個撥號語音網絡(如電話系統)上使用TCP/IP協議,又有TCP/IP在令牌環網上運行成功;最後又實現了TCP/IP遠程分組無線網點與其他Internet網點間TCP/IP通信。所以TCP/IP協議極其靈活,具備連接不同網絡的能力。