高清无码男男同同性,久久久久日韩AV无码一区,自拍 另类 综合 欧美小说,尤物网址在线观看

0371-63319761
您的當前位置:主頁 > 安全研究 > 安全研究 >

智能電表安全之通訊分析

時間:2022-05-10


平時研究二進制漏洞和內(nèi)核遇到的問題都在看雪得到了答案,也很感謝這些前輩將自己解決問題的思路共享出來,讓后人少踩坑。
 
設備信息和結(jié)構(gòu)組成
 
參數(shù)信息:
 

 
功能配置:
 
 
組成結(jié)構(gòu):
 

 
實物圖:
 
 
通訊方式
    
從電表的詳細參數(shù)可以得知主要支持的通訊方式為脈沖通訊和載波通訊,該款電表支持使用載波RS485協(xié)議建立通訊連接,RS485是串口的一種,常見的還有RS232,RS422都屬于串口,485是半雙工通訊,傳輸速率在10Mbps左右,發(fā)送數(shù)據(jù)的時候,控制CTRL為高電平,數(shù)據(jù)通過TXD發(fā)送出去(這個在電表圖中右下角的位置),要接收數(shù)據(jù)的時候,控制CTRL為低電平,數(shù)據(jù)通過RXD(這個在電表圖中右下角第二的位置)接收回來實現(xiàn)收發(fā),簡單說就是把TTL的“0-3.3V/5V之間擺動”的信號,轉(zhuǎn)換為“5V壓差顛倒反轉(zhuǎn)的AB線信號”。
 
 
最左側(cè)的編號從5開始到12分別代表了對外的接口,每個接口都各自對應在PCB上。
 
 
我使用了RS485用子線接A/B后進行異步串行通信,如下圖所示。 正對正負對負(data+ data-)。
 
 
如果出現(xiàn)部分通信不正常,可以確定問題是否出現(xiàn)在轉(zhuǎn)接器中(我在實際實驗過程中就出現(xiàn)了轉(zhuǎn)接器故障最后通過短接測試才發(fā)現(xiàn)問題出在哪,最后買了一個新的轉(zhuǎn)接器)轉(zhuǎn)換器子線正接正、負接負進行短接測試。
 
 
通過系統(tǒng)設備管理器查看是否有COM口已經(jīng)接入,如果有就可以串口通信了,一般波特率可以設置在2400或者9600其中一個,校驗位改成“偶校驗”。
 
波特率的字節(jié)格式每字節(jié)含8位二進制碼,傳輸時加上一個起始位(0)、一個偶校驗位和一個停止位(1)共11位。如下圖,D0是字節(jié)的最低有效位,D7是字節(jié)的最高有效位。先傳低位,后傳高位。
 

 
嘗試發(fā)送數(shù)據(jù)看看是否能夠正常接收到數(shù)據(jù),因為是短接測試所以發(fā)送什么數(shù)據(jù)就會收到什么數(shù)據(jù)。
 

 
如果收不到數(shù)據(jù)可能你的轉(zhuǎn)換接口或者子線接入是有問題的。以上測試完成后就可以給電表上電了,先將轉(zhuǎn)接器一頭接入電腦USB,然后將子線接入電表RS485 A/B口,記住:正對正負對負。
 
我這款就是單相電能表,單相電表從左到右有四個接線端依次為1、2、3、4,通過單相電表的剖析圖可以得知分火、零兩線(1、3為進,2、4為出,1火3零)。
 
 
這里我自己制作了簡單的一條電線,我使用了1和4口構(gòu)成電回路(1接3和4都行,別接2火線接火線會跳閘。)
 
 
插入插座上電后就可以通過USB打開串口和電表通訊了。
 
電表有專用的電力通訊標準,也是國家的一個標準統(tǒng)稱叫645《DL/T 645》最早在1997年發(fā)布一個《DL/T 645-1997》的通訊標準,而后在2007發(fā)布《DL/T 645-2007》,現(xiàn)在2007已經(jīng)替代了1997的標準了,從信息頭可以看到。
 

 
電力協(xié)議是一個相對比較復雜的協(xié)議,光看完標準得半個月-1個月。
 
電表數(shù)據(jù)讀取
 
目前新表主流還是07版的,下面就解析這兩種表通信協(xié)議:
 

 
標準中提到協(xié)議為主/從結(jié)構(gòu)的半雙工通信方式。每幀由前導符、幀長度、特征域、地址域、控制域、數(shù)據(jù)域、校驗域、結(jié)束符等8個域組成。
 
 
那么依據(jù)此標準的格式域就可以對電表數(shù)據(jù)進行讀取,在實際應用場景從主節(jié)點到基表 MCU 之間的下行和上行數(shù)據(jù)傳輸格式如下:
 
 
還會遇到中繼路由的情況,可能還存在其他場景也挺復雜的,通過串口方式實現(xiàn)一個數(shù)據(jù)讀寫的代碼來實現(xiàn)數(shù)據(jù)讀取,這里我使用C/C++來完成了。
 
先嘗試讀取電表的地址,通過標準可以發(fā)現(xiàn)在不知道電表地址的情況下可以使用AAH去替代地址
發(fā)送數(shù)據(jù):68H AAH AAH AAH AAH AAH AAH 68H 13H 00H DFH 16H
 
 
因為寫代碼花的時間比較少,這里沒有把串口同步的代碼寫上不過沒有關系,根據(jù)標準的要求提到16H為結(jié)束符。(代碼寫的丑就不貼了)
 

 
整理后的數(shù)據(jù)為:68 89 41 53 20 51 17 68 93 06 BC 74 86 53 84 4A E5 16
        至此成功獲取了電表的返回數(shù)據(jù),通過標準解析:
        894153205117(地址域)
        93(控制碼)
        06(數(shù)據(jù)域長度)
        BC 74 86 53(數(shù)據(jù)域寄存器地址)
        84 4A(數(shù)據(jù)項)
        E5 16(校驗碼\結(jié)束符)
 
根據(jù)傳輸次序-低在前,高在后得到175120534189 為電表的地址,后來我發(fā)現(xiàn)該地址其實就是外殼貼條上的那一串No.號。
 
 
        電表數(shù)的計算公式:數(shù)據(jù)項-33H=電表數(shù)
        84H-33H=51H
        4AH-33H=17H
        電表數(shù)為:1751
 
        
也可獲取如電量數(shù)據(jù)、電表時間、峰平谷值、用電總量、金額等。
 
*本文由看雪論壇 blck四 原創(chuàng),轉(zhuǎn)載請注明來自看雪社區(qū)
來源:看雪學苑

 

Copyright © 2017-2024 河南中瀚安全技術有限公司 版權所有 豫ICP備18011434號-1 豫公網(wǎng)安備 41019702002746號