HackRF實現無線門鈴信號分析重放


文章特點:數據解碼方面實在是沒什么信心,存在分析錯亂的可能性,所幸發出來共同探討,懇請鞭策。

0x01 概述

這是一款工作在315Mhz頻段的無線遙控門鈴,根據查閱官方手冊以及芯片信息,確定其采用了eV1527 百萬組編碼芯片。這是一款無線發碼專用集成電路,采用 CMOS 工藝制造,擁有 20 位內碼,可預燒 100 萬組內碼組合,發射頻率支持315Mhz與433Mhz。本文僅對基於錄制的信號波形圖進行簡單分析,詳細發碼結構可參考相關文檔。

EV1527芯片說明:http://www.sc-tech.cn/ev1527.pdf
EV1527碼位波形圖:http://wenku.baidu.com/view/1b54c361ddccda38376baf7c.html

 

編碼模塊特寫:

 

0x02 信號分析

首先通過gqrx或SDR#對無線門鈴的工作頻率進行精確定位,我自己這款檢測到的頻率值為315.1Mhz,而公司的門鈴則與說明書標稱的一樣為315Mhz ;

出現不同是因為EV1527芯片可根據電壓和振盪電阻的匹配情況來確定其振盪頻率,電壓越高,頻率越大,電阻越大,頻率越小,從組合來看可以構成無數種振盪頻率,大大降低了重復幾率。

接下來對工作頻段數據進行捕獲錄制,執行以下命令:

hackrf_transfer -r hell.iq -f 315100000 -s 8000000 -n 40000000

解釋:記錄數據到文件hell.iq、指定工作頻率為315.1Mhz,指定采樣率8Msps/s,指定采樣樣本數為40M,采樣時間也就是5秒

並在5秒內按下遙控器按鈕,此時鈴聲響起,數據也被記錄下來了

重放信號以測試樣本可靠性:

hackrf_transfer -t hell.iq -f 315100000 -s 8000000 -a 1 -l 40 -x 47

解釋:指定發射信號源文件,指定工作頻率315.1Mhz,指定采樣率8Msps,開啟天線增益控制,指定RX LNA(IF)增益為40,指定TX VGA(IF)增益為47

如果聽見鈴聲響起,那說明這段信號是有效的,如果沒有響起,可能是錄制指定的頻率不對或采樣到的信號樣本不完整,可多次嘗試錄制,如果是車鑰匙等其他設備,其信號只有一次或幾次有效性,俗稱滾動碼,這點請注意。

如果從單純分析信號的角度考量,現階段不一定需要重放信號;

現在我們使用音頻處理軟件 Audacity 對hell.iq文件進行信號分析,我們可以通過其展現信號波形圖來判斷信號的調制方式並加以分析

打開程序后點選“文件”—“導入”—“原始數據”— 配置如下

導入成功后顯示如下圖:

 

上面有14段完整的信號采樣,我們選擇一段信號后點擊放大鏡來進一步觀察信號特征

上面是兩段相同的脈沖信號,由1和0組成 ,因為我們已經預先知曉了該無線模塊的調制模式為ASK/OOK 所以接下來的分析比較簡單,這里面的OOK是ASK的一種特殊調制模式,叫做(On-Off-Keying),簡單說它就是摩爾斯電碼的工作方式。由於OOK的抗噪聲性能不如其他調制方式,所以該調制方式在目前的衛星通信、數字微波通信中沒有被采用,但是由於該調制方式的實現簡單,在遙控、RFID等領域中仍然有着廣泛應用。

我們將第一個最窄寬度的藍色條狀物當作標准寬度 1,空白區域當作0,空白區域的寬度能容納幾個標准寬度藍條,就代表有幾個0,以此類推,較寬的藍色條狀物能容納幾個標准寬度藍條就代表有幾個1。

經過計算和統計后,我們得出如下數據:

1000100011101000111011101000100011101110100011101110100011101000111010001110100010001000100011101

在我們按住遙控按鈕的過程中,信號實際上是在持續不斷的重復發射的,后面距離第二段脈沖信號經過計算大約有30個0,所以整段數據為

1000100011101000111011101000100011101110100011101110100011101000111010001110100010001000100011101000000000000000000000000000000

根據EV1527芯片說明,當工作電壓在12V、振盪阻值80K情況下,其脈沖周期 T≈400μs,即0.4毫秒,脈沖周期是指前后相鄰脈沖的間隔時間,這一參數將在后面模擬仿真時使用到。

由上面兩組相同的信號樣本結合芯片說明可知這是兩組相同的幀碼,每一幀碼有25位,由同步碼、內碼、數據碼組成,一幀碼發完馬上發下一幀碼。

時序圖:

數據解碼:

接下來對上面捕獲的數據進行解碼,其他位我們可以這樣理解,第一位SYN也就是1000,這段我們不予分析(實在不會,這是一段高低電平比t:31t的脈沖信號 ),后面的部分可以分為“百萬組內碼”和“數據碼”,數據碼我們已知是后四組,也就是1000100011101000,根據上訴分析可解出4個數字代表一位,每個數字脈沖周期是4t,這里的1代表高電平,0代表低電平,則1000可解為0,因為4t+12t先高后低表示0碼,而1110可解為12t+4t先高后低,代表1碼,最后整段解碼得出0010這個發碼組合,參考芯片說明一共有15種按鍵組合,當門鈴被按下后則發出對應的發碼組合給接收器中的EV1527芯片,接收器收到后就會處理響應,播放鈴音了。

內碼部分按照上述原理解碼后得出:01011001101101010100,將二進制轉換后得出 十進制:367444 十六進制:0x59B54 也就是這款芯片的百萬組編碼號了。

公司門鈴內碼解碼后得出:1101001101101100101 十進制:432997 十六進制:0x69B65

0x03 數據匯總

#自己的門鈴
產品型號:朗瑞特 LR-1688 直流款
發射模塊:eV1527 百萬組編碼芯片
調制模式:ASK/OOK
工作頻率:315.1Mhz
Vector:(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
#公司門鈴
產品型號:朗瑞特 LR-1688 交流款
發射模塊:eV1527 百萬組編碼芯片
調制模式:ASK/OOK
工作頻率:315Mhz
Vector:(1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

0x04 模擬信號源發射

Repate模塊用於設置脈沖周期;

由於我們的框圖中使用采樣率為1MHz,那么想讓每個數字所占用的時間t=0.4ms的話,則需要使Vector Source里的每個數字重復 1e6*0.5*10^(-3)=400 次。於是將Repeat模塊的Interpolation設置為400即可。

Gnuradio框圖:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM