
Chirpotle是一個實用的Lorawan安全評估框架,它為基於COTS硬件的LORA測試床提供了工具。它允許從中央控制器管理Lora場節點,並使用Python 3接口來編排實驗和測試。
通過將節點與Lorawan網絡相交,可以使用用於接收,傳輸,干擾和嗅探的內置功能來研究其對正在測試的網絡的影響。該框架憑藉其解剖器和預定義的構建塊,允許在洛萬網絡中快速評估脆弱性評估,以及評估其緩解措施的嘗試。
該框架通過chirpotle.sh shell腳本進行管理。它創建並管理虛擬環境,節點配置,並需要創建用於與節點通信的RPC存根。
要開始使用控制器,只需運行install任務,就可以使用:
./chirpotle.sh install如果您想能夠獨立於工作目錄使用框架,則可以將其添加到.bashrc :
echo " alias chirpotle= " $( pwd ) /chirpotle.sh " "$ @ " " >> ~ /.bashrc然後,您可以從任何目錄中調用它:
chirpotle interactive默認情況下,虛擬環境是在存儲庫中的env文件夾中創建的,並且配置存儲在conf 。如果需要清潔安裝,則可以刪除env文件夾而不會丟失配置。
由於Chirpotle是要在現場部署的,因此它在中心使用控制器的星形拓撲,並在現場中的節點。控制器和現場節點是通過SSH連接的,用於部署, RPC在實驗過程中需要控制。
注意:該工具假設控制器和節點之間存在安全的網絡連接,RPC流量未固定,並且默認情況下可以信任SSH主機密鑰。
對於此說明,我們假設您有以下設置:
/dev/ttyUSB0注意:其他LORA硬件可以與框架一起使用,請參見Companion應用程序的
Makefile.preconf,以獲取更多選項。
首先,您需要使節點可用於通過SSH訪問根。將您的SSH鍵複製到/root/.ssh/authorized_keys上的每個覆盆子PI。
注意:您的SSH公鑰通常位於
~/.ssh/id_rsa.pub中。如果該文件不存在,請在台式機上運行ssh-keygen -t rsa -b 4096。
部署鍵後,您可以開始在PI上安裝Python 3和PIP。所有其他軟件安裝將由框架管理。
ssh [email protected] apt-get update
ssh [email protected] apt-get update
ssh [email protected] apt-get install python3 python3-pip
ssh [email protected] apt-get install python3 python3-pip現在是時候設置配置了,以便您的控制器知道哪些節點是avaialble的。
運行chirpotle.sh install後,所有配置都存儲在存儲庫的conf文件夾中,但是對於大多數情況而言,最簡單的方法是使用交互式編輯器。
運行./chirpotle.sh confeditor ,您會接受主菜單:
What do you want to do ?
List/edit controller configurations
List/edit node profiles
Save changes and quit List/edit controller configuration 。Create new configurationtestconfAdd Nodealice (這是您將如何解決腳本中的節點)loranode1.exampleuart-lopy4Add Nodebob (這是您將如何解決腳本中的節點)loranode2.exampleuart-lopy4您的配置現在應該看起來像這樣:
Node: alice (loranode1.example, uart-lopy4)
Node: bob (loranode2.example, uart-lopy4)
➕ Add node
?️ Rename this confiugration
Delete this configuration
Go back
如果一切似乎都還好嗎,請選擇在所有菜單中go back ,並且您的配置將被保存為testconf 。
現在,您可以測試是否正確設置了所有內容以及節點是否已安裝了所有必需的軟件:
./chirpotle.sh deploycheck --conf conftest注意:大多數CLI命令支持
--conf選項,以選擇要使用的配置。如果省略此選項,CLI將嘗試使用具有名稱default的配置。
現在,您應該查看所有有效的所有功能的綠色選中標記,這是可選軟件的警告標誌,在每種情況下都不需要,而紅色X則用於未滿足的要求。如果看到錯誤,請重新檢查上面的說明。
如果滿足所有要求,您可以開始將Chirpotle部署到節點:
./chirpotle.sh deploy --conf conftest此命令將執行以下操作:
submodules/tpy/node中構建並捆綁TPY節點node/remote-modules中添加其他Chirpotle模塊node/companion-app構建並捆綁遠程MCU的伴隨應用程序作為從實驗開始之前的最後一步,您需要在每個節點上啟動節點deamon:
./chirpotle.sh restartnodes --conf conftest現在您應該準備出發!
要熟悉該框架,最好的方法是開始交互式會話。設置所有內容後,您可以運行interactive任務來啟動這樣的會話:
./chirpotle.sh interactive --conf testconf如果您使用上述設置,則可以嘗試在兩個Lora板之間進行通信:
# Assure both use the same channel setup
bob_lora . set_lora_channel ( ** alice_lora . get_lora_channel ())
# Configure IQ inversion to default values
alice_lora . set_lora_channel ( invertiqtx = True )
bob_lora . set_lora_channel ( invertiqrx = False )
# Set Bob in receive mode
bob_lora . receive ()
# Transmit a frame
alice_lora . transmit_frame ([ int ( b ) for b in b'Hello, World' ])
# Check if Bob received it
bobframe = bob_lora . fetch_frame ()
if bobframe is not None :
print ( "Bob received: {payload_str} (RSSI={rssi} dB, SNR={snr} dB)" . format ( ** {
** bobframe ,
"payload_str" : "" . join ([ chr ( b ) for b in bobframe [ 'payload' ]]),
}))
else :
print ( "No frame received" )要運行其中一個示例腳本,您可以將run任務與Python腳本一起使用作為參數:
./chirpotle.sh run --conf testconf example.py該框架還帶有jupyter筆記本電腦的集成。創建如上所述的配置後,您可以運行:
./chirpotle.sh deploy --conf testconf
./chirpotle.sh restartnodes --conf testconf
./chirpotle.sh notebook --conf testconf在第一次運行中, notebook操作將在虛擬環境中安裝jupyter筆記本。默認的筆記本文件夾稱為notebook ,並在存儲庫根中創建。它還包含一個帶有筆記本的examples文件夾,向您展示如何設置實驗以及如何將框架與Matplotlib(例如matplotlib等數據可視化工具集成以創建無縫的工作流程。
運行框架所需的大多數軟件都是由虛擬環境中的框架管理的。但是,必須做一些準備工作以引導管理。
對於控制器的基本安裝,需要Python> = 3.9,必須存在PIP和venv模塊。較早的版本可能仍然有效,但不再得到支持。安裝程序將把其他所有內容都列入虛擬環境中。
如果您不想使用系統的默認Python(安裝程序將首先檢查python3 ,然後在路徑上進行python ),則可以在安裝過程中指定PYTHON環境變量以指向特定的可執行文件:
PYTHON=/opt/my-python/bin/python ./chirpotle.sh install該框架在Debian Bullseye上進行了測試,我們在Ubuntu 22.04和20.04的GitHub動作中檢查了基本功能,但它也應在大多數其他Linux發行版中使用。
呼叫./chirpotle.sh deploy將使用SSH連接作為用戶root在節點上安裝框架。因此,必須將運行Chirpotle Controller的用戶的公共SSH鍵添加到該節點上的Root的authorized_keys文件中。此外,您需要在每個節點上使用PIP,GIT,MAKE和GCC安裝Python3。對於基於Debian的系統,您可以運行:
apt install python3 python3-pip git build-essential您可以通過致電./chirpotle.sh deploycheck檢查您的節點是否滿足要求。如果不滿足某些要求,則輸出還將建議快速修復。
目前支持的硬件:
如果要修改框架,則需要將其安裝在開發模式下,以便立即進行更改。因此, install任務支持一個--dev標誌:
./chirpotle.sh install --dev如果您已經在默認虛擬環境(存儲庫根中的env )中安裝了框架,則可以刪除該文件夾並再次安裝。
Chirpotle框架已在ACM Wisec '20上發表:我們的論文:
弗蘭克·黑塞爾(Frank Hessel),拉爾斯·阿爾蒙(Lars Almon)和弗洛爾·阿爾瓦雷斯(Flor Alvarez)。 2020年。 Chirpotle:實用洛萬安全評估的框架。在第13屆ACM無線和移動網絡安全和隱私會議上(WISEC '20),2020年7月8日至10日,林茨(虛擬事件),奧地利。 ACM,紐約,紐約,美國,11頁。 https://doi.org/10.1145/3395351.3399423
有預印本可用。本文所有實驗的腳本和數據都可以在實驗/WISEC2020中找到。如果您將我們的工作用於研究,請引用論文:
@inproceedings{chirpotle2020,
title = {ChirpOTLE: A Framework for Practical LoRaWAN Security Evaluation},
author = {Hessel, Frank and Almon, Lars and Álvarez, Flor},
booktitle = {Proceedings of the 13th Conference on Security and Privacy in Wireless and Mobile Networks},
date = {2020},
month = jul,
address = {Linz (Virtual Event), Austria},
doi = {10.1145/3395351.3399423},
publisher = {ACM},
series = {WiSec '20},
url = {https://doi.org/10.1145/3395351.3399423},
}
我們根據GNU通用公共許可證(版本3版)提供Chirpotle框架。但是,存儲庫包含(修改的)第三方代碼和工具,這些代碼和工具已使用其他許可證發布:
| 成分 | 執照 | 目錄/文件 |
|---|---|---|
| ESP-IDF | Apache許可證,版本2¹ | submodules/esp-idf |
| 暴動 | GNU較少的公共通用許可證,版本2.1 | submodules/RIOT |
| tpy | N/A。 | submodules/tpy |
| XTENSA-ESP32-ELF騷亂 | N/A。 | submodules/xtensa-esp32-elf |
| UBJSON(棄用的防暴模塊) | GNU較少的公共許可證,版本2.1² | `node/companion-app/riot-modules/{uncude/ubjson.h |
| Chirpstack Docker配置 | 麻省理工學院許可 | experiments/wisec2020/infrastructure/network/chirpstack |
| Loramac節點 | 修訂後的BSD許可證 | experiments/wisec2020/infrastructure/node/LoRaMAC-node/ |
�子模塊可以單獨包含子模型,該子模塊再次以不同的許可發布,因此也請檢查子模塊的描述。
²我們修改了此組件,並在同一許可證下發布更改。




