第1步:材料
我通常從ebay購買,在那里我可以找到非常便宜的工作部件免費或幾乎免費送貨。
以下是我用于此項目的主要部分:
Arduino uno - USD 5.17
(請注意,這不是最初的Arduino。如果你使用廉價的克隆Arduino就像我一樣請轉到Arduino網站貢獻幾美元。如果他們從來沒有開源這些原理圖我們永遠不會有這么便宜的arduino)
DVB-T SDR電視調諧器接收棒RTL2832U + R820T - 7.09美元
(我買了這個時間回到了R820T的地方) RTL2832U是最便宜的選擇,頻率范圍為24-1766 MHz。有一個新版本的R820T2芯片組據說與以前相比不易出現射頻噪聲。如果你能找到一個帶R820T2的加密狗,那就買它而不是R820T。 )
433Mhz射頻發射器/接收器模塊 - USD 0.74
315Mhz射頻發射器/接收器模塊 - 0.99美元
以下項目用于使這個項目更便攜和易于處理:
(請注意,我在家里發現了這些項目,但我會發布ebay鏈接以便購買它們)
Veroboard - 1美元
少數連接器母頭 - USD 0.99
少量插頭引腳 - USD 0.2
(可選)USB B型公端口
注意:如果可以只需從當地商店或ebay購買“USB B型A型公對公連接器”,無需另外購買USB型A型,B型公端口。由于我家里沒有連接器,我不得不用可用的物品制作。
除了這些物品外,我們還需要很少的連接線和電腦。即使我已經在Windows 7,mac osx和ubuntu中完成了這個,我將解釋Mac OSX-10.9.4(64位)的分步說明。如果您對操作系統有一定的了解,這些說明將與其他操作系統非常相似。如果您使用的是windows或linux/ubuntu,請隨意在評論部分提出任何問題。
第2步:步驟摘要
以下是主要步驟需要遵循。
識別被動代碼:
在計算機上安裝RTL-433庫。
(這是必要的,因為這些庫將使我們能夠監聽加密狗可以處理的任何無線電頻率)。
開始收聽315MHz和433.92MHz頻率并進行解碼。
傳輸被動代碼(使用Arduino):
設置Arduino硬件和草圖。
使用串行監視器測試Arduino設置。
設置Arduino設置的GUI界面。
(我編寫了一個java swing GUI應用程序,可以隨時輕松更改參數,無需使用串行監視器或上傳每個參數更改的Arduino草圖)
完成原型設計:
構建簡單的射頻發射器屏蔽
(可選)構建USB A型到B型適配器
步驟3:識別被動代碼:安裝RTL-433庫
RTL庫會將基于Realtek RTL2832的DVB加密狗轉換為通用數據接收器。由于RTL2832芯片組允許調整24-1766 MHz范圍,因此它也可用于各種其他項目。例如監控從每個商業航班廣播的adb飛機轉發器數據。
我將嘗試通過給出每一步盡可能完整地使這個指示完整。要安裝RTL庫,我們有以下幾個先決條件:
此步驟的主要目標是在計算機上設置merbanan/rtl_433。通過一些谷歌搜索和小小的頭腦風暴,你會發現快速而骯臟的方式來設置它。但我總是喜歡從基礎開始構建以保持控制。
先決條件:
請注意,這些步驟適用于 Mac OSX 。如果您需要任何細節或陷入死胡同,請在評論部分告訴我。我已經在所有主要操作系統(Windows 7,ubuntu 14.04和mac osx 10.9.4)上測試了這個結束。
如果你在Windows上,只需使用prebuild可執行文件“rtl- 433“在這個網站上。我沒有嘗試過,有些谷歌搜索這將是在Windows上設置“rtl-433”的最快方法。
安裝“cmake”
從CMake網站下載CMake。 (確保下載dmg版本)
成功下載.dmg文件后,只需雙擊即可。
要安裝CMake應用程序,請將CMake拖放到“應用程序”文件夾中。
從Launchpad或Spotlight啟動CMake。
從“工具”菜單中選擇“如何安裝命令行使用”。從彈出的對話框中,記下cmake-gui路徑(例如:/Applications/CMake.app/Contents/bin/cmake-gui)。
通過執行“cmd + Space”打開終端,輸入“terminal”并在終端上執行以下命令:
sudo mkdir -p /usr/local/bin
sudo /Applications/CMake.app/Contents/bin/cmake-gui --install=/usr/local/bin
驗證它已通過執行以下內容正確安裝到PATH:
cmake --version
安裝“libtool”“libusb-1.0.0-dev”庫
安裝 libtool 和 libusb 在終端中執行以下命令:
brew install libtool
brew install libusb
安裝“rtl-sdr”庫
rtl-sdr庫有詳細記錄的文檔。步驟相當簡單。請前進并正確安裝。
安裝RTL-433庫
完成所有先決條件后,克隆rtl_433 git存儲庫并按照下面的步驟使用cmake構建庫。在存儲庫主頁面中,有一個全面的指南,指向每個命令以及如何使用它。
cd rtl_433/
mkdir build
cd build
cmake 。./
make
sudo make install
一旦rtl-433安裝在您的系統上,請插入DVB-T USB加密狗并運行以下命令。
rtl_433
如果一切正常,rtl_433將識別USB設備并開始偵聽任何傳入的射頻傳輸。我已經成功連接了控制臺輸出作為參考。
步驟4:識別被動代碼:開始聆聽315MHz和433.92MHz
根據測試安全鎖的射頻頻率,您需要收聽433.92MHz或315MHz。由于所有射頻關鍵指針都被調節為使用其中一種頻率,如果您不知道按鍵上的確切頻率,可以嘗試兩種頻率。
對于433.92 MHz RF鍵
“rtl-433”默認調到433.92MHz頻率。為了在此
頻率下收聽所有傳入傳輸,我們需要按如下方式切換到分析儀模式。
將DVB-T調諧器加密狗插入其中一個usb計算機的端口。
打開終端并輸入以下命令:
rtl_433 -a
它將開始偵聽任何傳入流量并在控制臺上打印。按遙控鍵上的按鈕,它將在控制臺輸出上注冊。
對于315MHz RF鍵
該庫的名稱略有誤導,因為它表示“433”意味著它只能以433MHz頻率接收。這不是真的。如果連接的硬件允許,該庫可以接收任何頻率。
為了使用調諧器調諧到315MHz:
將DVB-T調諧器加密狗插入其中一個usb計算機的端口。
打開終端并輸入以下命令:
rtl_433 -f 315000000 -a
按遙控器上的按鈕,它將在控制臺輸出上注冊。
重要提示:就像收音機一樣,DVB-T調諧器只能在給定時間調諧到一個頻率。您無法使用一個接收器同時調諧到兩個頻率。
如果一切正常,您將看到類似的控制臺輸出,如下所示:
Reading samples in async mode.。.
Tuned to 315000000 Hz.
*** signal_start = 90713609, signal_end = 90787588
signal_len = 73979, pulses = 125
Iteration 1. t: 185 min: 97 (80) max: 273 (45) delta 5
Iteration 2. t: 185 min: 97 (80) max: 273 (45) delta 0
Pulse coding: Short pulse length 97 - Long pulse length 273
Short distance: 81, long distance: 257, packet distance: 2720 p_limit: 185
bitbuffer:: Number of rows: 5
[00] {25} 55 24 8c 00 : 01010101 00100100 10001100 0
[01] {25} 55 24 8c 00 : 01010101 00100100 10001100 0
[02] {25} 55 24 8c 00 : 01010101 00100100 10001100 0
[03] {25} 55 24 8c 00 : 01010101 00100100 10001100 0
[04] {25} 55 24 8c 00 : 01010101 00100100 10001100 0
正如您所看到的那樣,清晰的二進制模式“01010101 00100100 10001100 0”重復5次,脈沖長度大約為273.如果我們可以簡單地重復這種二進制模式,接收方應將其識別為有效密鑰并進行身份驗證。
步驟5:傳輸無源代碼:設置Arduino硬件和草圖
Arduino硬件設置
硬件設置非常簡單,如附圖所示。我已經包括了一個面包板,只是保持圖表清潔。如果你可以將5v和地線正確連接到Arduino,則無需使用面包板。
此外,數據引腳可以使用GUI界面進行配置,稍后將對此進行說明。因此,無需堅持12和10針。您可以根據需要使用任何數字輸出引腳。
Arduino sketch
為了發送二進制代碼,我們需要一個名為rc_switch的Arduino第三方庫由Suat?zgür開發。
按照下面的步驟正確安裝rc-switch庫并上傳草圖。
從“sui77/rc-下載rc-switch庫”切換“git repository。
將解壓縮的rc-switch庫目錄放在”{USER_HOME}/Documents/Arduino/libraries/“中。
(有幾種方法可以安裝庫。有關如何安裝庫的更多信息,請查看Arduino官方指南)
從我的git存儲庫下載附帶的arduino sketch文件(RfProjectArduinoCode.ino)或最新草圖。草圖很簡單,評論很好并且不言自明。
在高級別,它所做的是監視任何傳入的串行消息并根據串行輸入參數傳輸rf代碼。
我添加了內聯注釋以使其更具可讀性。如果需要更多信息,請隨意在評論部分提出任何問題。
從Arduino IDE打開草圖文件,驗證并將其上傳到Arduino。
Arduino Sketch Internals
我通過草圖文件中的內聯注釋解釋了所有主要功能。我將嘗試通過重要的代碼行讓第一次使用Arduino的用戶更清楚。
INPUT_SIZE變量定義輸入字符數組的大小。
#define INPUT_SIZE 150
創建必要的變量,包括RC開關實例。
RCSwitch mySwitch = RCSwitch();
char* binaryCode;
char* pulseLength;
char* rfTransmitPin;
char* rfProtocolType;
char* repeatIterations;
一次設置初始化串行波特率并初始化內置LED輸出以通知狀態。這將刷新串行輸入緩沖區,以確保沒有垃圾串行數據傳遞給rc開關庫。
void setup()
{
// Initialize serial:
Serial.begin(9600);
pinMode(13, OUTPUT);
// Flush serial buffer
serialFlush();
}
我相信“loop()”中的其余代碼是自解釋的。因為我為每個關鍵代碼行添加了內聯注釋。如果您有任何問題,請在評論部分詢問。
步驟6:傳輸被動代碼:使用串行監視器測試Arduino設置
在繼續之前,我們需要確保Arduino已正確設置并準備好正確傳輸代碼。
為了驗證遵循以下步驟:
使用DVB-T usb加密狗開始接收433.92MHz射頻信號,如步驟4中所述。
使用USB電纜將Arduino連接到計算機。
導航到“工具 - 》串行監視器”,在Arduino IDE中打開串行監視器。
通過串行模組輸入向Arduino發送以下行。
binaryCode:0101011010&pulseLength:321&rfTransmitPin:10&rfType:1&repeatIterations:5
這應該在DVB調諧器上正確注冊二進制代碼作為附加的控制臺輸出屏幕截圖。
類似地,通過將“rfTransmitPin”改為12并使用rtl_433調諧到315MHz頻率來測試315MHz發射機。請參閱附帶的屏幕截圖以獲得更清晰的想法。
現在,通過更改串行輸入參數,您可以傳輸從您的射頻密鑰獲取的二進制代碼并模仿密鑰。
步驟7:傳輸無源代碼:設置Arduino設置的GUI界面
此步驟不是強制性的,因為我們可以通過發送格式正確的串行輸入來模仿rf鍵,如上一步所述。但是將arduino與GUI連接將使任何具有基本計算機知識的人都能輕松使用。
我選擇java/swing來開發RC SWITCH GUI主要是出于個人喜好。此外,Java應用程序在所有平臺上都具有高度可移植性,這使得共享/運行可執行文件變得容易。
關于RXTX java庫以及為什么需要
Java JDK目前不支持本地串行端口通信。因此,我們需要依賴可以與串口通信的外部java庫。 RXTX庫已經開發用于解決這個問題。
RXTX是一個開源java庫,使用本機實現(通過JNI),為Java Development Toolkit(JDK)提供串行和并行通信。盡管rxtx幾乎沒有其他替代方案,但這是最完整的串行通信庫,由廣泛的社區支持進行故障排除(堆棧溢出:))。
Rxtx庫包含兩部分。
RXTXcomm.jar - 這使JDK/JRE能夠與特定于操作系統的串行驅動程序進行通信。
特定于操作系統的串行驅動程序(例如:用于mac osx的librxtxSerial.jnilib) - 這與操作系統識別的串行端口進行通信。
參考附加的高級架構圖,了解如何使用rxtx庫。
控制Arduino發送器的Java GUI程序
我提供了所有java源代碼在rc switch gui git repository中。如果您是開發人員,請繼續使用這些源代碼。
我不打算解釋GUI項目的所有內部結構,因為它將使這種可指導的方式偏離正軌。請在評論部分提出任何問題。如果您計劃從源代碼構建GUI,請確保將“RXTXComm.jar”庫正確導入到項目中。
在Mac osx上運行GUI程序(使用預構建jar) 10.9.4(64位):
在您的計算機上安裝最新的Java版本。 (因為我已經在java 1.8上編譯了這些jar,它在舊版本的Java中不起作用)。
下載并解壓縮附加的“rc_switch_gui.zip”文件。
進入解壓縮目錄并執行以下命令。這應該打開主窗口。
java -jar rc-switch-gui.jar
使用GUI程序:
GUI界面不言自明。為了完整性,我將簡要介紹每個選項卡的功能。
連接選項卡
顧名思義,此選項卡將允許您選擇串口并連接。請注意,您需要單擊下拉列表旁邊的“刷新”按鈕,以列出所有可用的串行端口。連接時有一個“狀態”通知,指示連接成功或任何錯誤(例如“正在使用的端口”錯誤)。有關詳細信息,請參閱附圖。
傳輸標簽
如果沒有成功連接,用戶將無法訪問此選項卡。連接成功后,此選項卡將啟用并準備將二進制代碼發送到Arduino。還有一個進度條指示此選項卡底部的發送操作的進度。
配置選項卡
此選項卡允許用戶定義與433MHz和315MHz發送器相對應的Arduino數據引腳。
步驟8:故障排除: )
請注意,在執行上述步驟時,您可能會遇到一些問題/錯誤。我已經記錄了我在制作這個教學時遇到的所有問題。希望它能幫助您解決所面臨的任何問題。
Mac OSX上的常見錯誤/異常
java.lang .UnsatisfiedLink錯誤
如果您遇到此錯誤,那是因為串行驅動程序庫和主機中的架構不匹配。
java.lang.UnsatisfiedLinkError: librxtxSerial.jnilib: no suitable image found.
Did find: librxtxSerial.jnilib: no matching architecture in universal wrapper thrown while loading gnu.io.RXTXCommDriver
在官方rxtx中他們為網站提供了針對32位架構編譯的Mac OSX庫。他們沒有提供庫以支持64位系統。
在附加的“rc_switch_gui.zip”中它包含64位編譯庫(因為我在64位系統上運行)。如果您需要32位Mac OSX庫,您只需從網站上的官方rxtx庫中替換它。
端口已在使用錯誤
OS X在串行端口上具有排除(鎖定)機制。 MacBooks從未有過串口,但USB端口可以模擬它們。當Arduino連接時,它在端口列表中顯示為“/dev/tty.usbmodemXX”,其中“XX”是一些數字。當端口已經被使用時拋出異常,這是一個標準的I/O異常,這意味著我們無法獲得訪問權限。當前所有者未定義,因為沒有當前所有者。我們只是沒有對目錄的必要訪問權來取得所有權。
為了修復這個打開的終端并執行以下命令:
sudo mkdir /var/lock sudo chmod 777 /var/lock
這將創建所需的目錄并使其可訪問。鑒于其他東西沒有真正使用它,串口將不再繁忙! ;)
Ubuntu 14.04 LTS上的常見問題
我的初步計劃是僅通過此教程覆蓋Mac OS。但是當我試圖在Ubuntu中運行jar時,我遇到了一個最煩人的問題,即使沒有錯誤/異常,rxtx庫也無法識別某些串口。
經過數小時的研究發現在Ubuntu 14.04上,Arduino被認為是/dev/ttyACMxx。 RXTX庫只搜索/dev/ttyXXXX.
因此需要將symlink設置為可用端口,如下所示。
sudo ln -s /dev/ttyACM0 /dev/ttyUSB0
確保替換“/dev/ttyACM0 “用你的Arduino的端口標識符。這應該可以解決問題。
另一個問題是用戶沒有足夠的權限來訪問串行端口。因此,請確保以root用戶身份運行GUI應用程序(如果可能)。如果您需要使用當前用戶運行應用程序,只需將當前用戶添加到“dialout”用戶組并重新啟動計算機。
sudo usermod -a -G dialout username
確保將“username”替換為您的用戶。
步驟9:完成對原型的接觸
為了完成這個項目,我們需要將所有東西妥善包裝在一個整齊的包裝中。當然,我們不能處理面包板,而電線懸掛在停車場或車庫的微型發射器。 :)
這一步重點是使這個項目易于攜帶和易于處理。
這一步可以分為兩部分:
射頻發射器Arduino連接器護罩
(而不是使用面包板,我需要更便攜的東西,并且能夠輕松地連接/分離Arduino。)
USB A型/B型連接器
(男性對男性)
(使用USB線不方便。為了使用它作為可插拔加密狗,我需要一個沒有電纜部分的連接器。正如我在“材料”部分(步驟1)中提到的那樣,可以購買這些連接器。)
射頻發射器Arduino連接器護罩
這是一個簡單的設置,僅使用arduino的4個引腳。我附上了Veroboard圖。焊接正確,如圖所示,并確保斷開所有未使用的插頭引腳作為預防措施。我也使用過連接器來連接/拆卸變送器。如果您不希望在其他項目中重復使用變送器,只需將其直接焊接到電路板上。
確保在焊接后驗證每個引腳連接。確保對面的Arduino引腳也沒有通過Veroboard連接。
我的最終適配器看起來像這樣。我相信有更好的方法來安排它。我剛剛從我可以使用的內容中做到了這一點:)
USB A型到B型連接器
如果您可以購買預制適配器,因為它便宜且構造良好。但是由于它需要很長時間才能到達(我居住的地方),因此我決定建立自己的適配器,因為我在家中獲得了所有必要的部件。
焊接USB連接也非常簡單。只有4條線連接,互聯網上也有清晰的引腳圖。我使用了這個引腳圖,通過編號清楚地識別引腳。
最終結果如下所示。它并不漂亮,但它可以按預期完成工作。
重要:如果您決定構建自己的適配器,請確保在沒有短路線的情況下正確執行。在連接到PC之前,請仔細檢查每個連接和焊接。否則,在最壞的情況下,您的PC主板將支付價格。
如果您不想冒任何風險,最好的辦法是購買適配器,而不是自行構建。
步驟10:結論
可以通過各種方法改進該黑客攻擊。例如,如果這可以用arduino micro或nano實現,那么就像筆式驅動器一樣容易攜帶。這樣做也很簡單。除了這些步驟之外,還需要做的就是將RF發射器正確安裝到arduino。
此外,由于RF傳輸可以通過串行輸入直接控制,因此各種其他項目有很多可能性。好。
這個教程的主要目標是讓人們意識到攻擊無源RF遠程系統并獲得訪問權限是多么容易。無源RF編碼系統現在已經過時,現在是時候停止使用它們作為安全/進入系統了。對于具有電子和編程知識的人來說,這是相當容易的黑客攻擊。
希望這有助于某人評估他們自己的射頻安全系統,并采取必要的措施來防止任何意外。
-
射頻
+關注
關注
106文章
5723瀏覽量
169621 -
Arduino
+關注
關注
188文章
6489瀏覽量
190017
發布評論請先 登錄
stm32的pcrop安全系數高不高,是否會像普通flash讀保護那樣被人家破解?
Impero:革新安全遠程訪問方案

securecrt破解,securecrt破解的風險及建議

3分鐘即被遠程控制!智駕安全如何保證?

多個TLV320AIC3254用一路I2C總線對其配置可行嗎?
普通空開怎樣遠程控制斷電
怎樣用自己的電腦遠程公司的電腦

OPA735加OPA333,怎樣用TINA TI去仿真?
怎樣用萬用表測穩壓管穩壓值
數字時代的網絡安全守護者:Splashtop 提供安全可靠的遠程桌面解決方

評論