Flipper Zero 宇宙最強攻略:30 天帶你從入門到入坑 Day07 - 比馬里亞納海溝還深的 Sub-GHz 解析最終章

kazma 成大資安社 創辦人/社長

前言

嗨嗨,我是 Kazma。
今天的目標是帶過 Derek Jamison Rolling Code 系列影片的後半段,但因為他真的教的太仔細了,其實很難在鐵人賽完整的教學這塊,所以今天的目標是介紹裡面一些比較有趣的內容介紹,並且鼓勵大家之後都去看看他做的影片,可以學得很扎實。

資安倫理宣導

請注意,透過 Flipper Zero 所學到的技術與知識,主要目的是提升個人技術能力與資訊安全意識。我們強烈呼籲各位,不要將這些知識應用於任何違法活動。您有責任確保所學知識的合法用途。針對今天的主題,大家務必要注意以下幾點:

  • 絕對不要測試不屬於自己的設備,或是未經授權的設備。
  • 切勿測試您自己日常使用的或生活必需的裝置。
  • 重放攻擊(Replay Attack)或是訊號模糊測試(Fuzzing Signals)有可能導致接收器與發射設備不同步,並可能造成損壞,後果須自行承擔。

Security+ 1.0/2.0 decode

我們昨天的文章主要帶過了 Derek Jamison 影片清單的前四個,而到了第五個的時候,有網友留言問能不能做成大學等級的課程。所以第五個影片 Derek Jamison 嘗試把我們錄製到的 Security+ 1.0 和 Security+ 2.0 原始訊號一步步 decode 給大家看。在影片一開始作者嘗試播放了兩個協議原始訊號的聲音讓我們理解他們的差異:
sound
圖片來源:https://youtu.be/CEFb-8htKOA?si=_wHgyISB-a4X7Ss _
接著他就開始一步步拆解封包內容 decode 給大家看:
detail
圖片來源:https://youtu.be/CEFb-8htKOA?si=_wHgyISB-a4X7Ss _
因為真的太仔細了,用文章教這個大概會截一百多張圖,但很歡迎各位去看看,真的教的扎實:https://youtu.be/CEFb-8htKOA?si=hRW667rNi6sh1hSd。

Sub-GHz Decoder/Encoder

第六部影片在介紹 Sub-GHz 的 decoder 和 encoder 是怎麼運作的。

Decoder

decoder
圖片來源:https://youtu.be/O4bEuYwytv0?si=iDzJmKERKojx1zjR
在 decoder 開始運作後,首先就會呼叫 alloc 把資源 allocate 進來並且 load 進需要的設定檔,free 就是結束時會把所有 allocate 的資料釋放。feed 會包含訊號裡面的許多資訊,像是 level 現在是 on/off,pulse 的 duration 和 processes,以及 count 跟 data。reset 則是會把 feed 還原成初始狀態。deserialize 會把 flipper 裡面的 .sub file 反序列化出 .data_count_bit.data,像是照片裡面的例子是 12 bit 和 0x00005461。get_hash_data 則是會根據剛剛的 .data_count_bit 還有 .data 取得一個值,同時會去比較他是已經存在歷史紀錄的值還是沒出現過的。serialize 則是把 .data_count_bit.data 轉換成 .sub 檔案儲存。get_string 則是會 return .data_count_bit 還有 .data 到 flipper 螢幕上顯示以及 CLI 介面上。

Encoder

encoder
圖片來源:https://youtu.be/O4bEuYwytv0?si=iDzJmKERKojx1zjR
encoder 其實跟 decoder 差不多,但 dederialize 的時候會多設定 .upload.size_upload.front.repeat,然後當我們發射信號的時候會呼叫 yield,然後會檢查有沒有正常運行,如果沒有的話會返回一個 reset level,然後要結束時會呼叫 stop

Debug

接著作者會透過 Flipper 的 CLI 工具,以及在原始碼下斷點的方式,來走一遍 encoder 和 decoder 的流程:
cli
Flipper Cli 的網址:https://lab.flipper.net/cli
我們可以透過像是上面的方式來呼叫 decode_raw,接著就可以用 vs code 之類的工具進入 debugging mode 下斷點來看看剛剛學到的流程:
debug
圖片來源:https://www.youtube.com/watch?v=O4bEuYwytv0&list=PLM1cyTMe-PYJfnlDk3NjM85kU5VyCViNp&index=6
有興趣追完整個 debug 流程的歡迎去看第六集:https://www.youtube.com/watch?v=O4bEuYwytv0&list=PLM1cyTMe-PYJfnlDk3NjM85kU5VyCViNp&index=6

Genie

接著在七到九集作者用 Genie Garage Door 跟大家示範前面提到那些運作機制是怎麼應用在實際例子中。

Brute Force KeeLoq

接著在這個系列的最後一集,作者想跟大家提到其實 Brute Force KeyLoq 並非不可能,而且 Brute Force 也並非單純的一個一個猜,是一些方式可以提高我們成功的機率以及技巧的,像是:
graph
圖片來源:https://www.youtube.com/watch?v=-LtyF7LUQvs&list=PLM1cyTMe-PYJfnlDk3NjM85kU5VyCViNp&index=10
從上圖可以看到每次增加 19 會比每次增加 1 的成功速度更快,而每次增加 27 會跟每次增加 1 插到兩倍以上。
pie
圖片來源:https://www.youtube.com/watch?v=-LtyF7LUQvs&list=PLM1cyTMe-PYJfnlDk3NjM85kU5VyCViNp&index=10
作者這邊提供了 brute force 的時間和機率關係,可以看到超過 75% 的機率都會超過一年,最大值甚至到 44 年。
another_data
圖片來源:https://www.youtube.com/watch?v=-LtyF7LUQvs&list=PLM1cyTMe-PYJfnlDk3NjM85kU5VyCViNp&index=10
這裡還有另外一個更詳細的數據,這次影片展示的是第一種情況也就是在 12978 種情況下,當我們每秒測試 2.87 個,大約七十五分鐘會成功,而當數量來到最大值四十億的時候,在同樣的測試速度下會需要我們大約四十四年才會成功。
twelve
圖片來源:https://www.youtube.com/watch?v=-LtyF7LUQvs&list=PLM1cyTMe-PYJfnlDk3NjM85kU5VyCViNp&index=10
上面這張圖可以看到上次作者測試的狀況。
接著作者示範了如何用 flipperzero-subbrute 這個應用程式去做到剛才的 brute force,詳情可見:https://www.youtube.com/watch?v=-LtyF7LUQvs&list=PLM1cyTMe-PYJfnlDk3NjM85kU5VyCViNp&index=10

按讚訂閱收藏小鈴噹叮叮叮

OK,這大概是今天的介紹。因為 Flipper Zero 其實還有很多有趣的協議和功能等著我們去介紹,所以今天比較像是告訴大家 Sub-GHz 還有很多有趣的東西可以玩,大家可以自行去做更深入的探索,也非常推薦大家去觀看 Derek Jamison 做的影片。明天我們則會開始介紹 125 kHz RFID,各位明天見!

  • Title: Flipper Zero 宇宙最強攻略:30 天帶你從入門到入坑 Day07 - 比馬里亞納海溝還深的 Sub-GHz 解析最終章
  • Author: kazma
  • Created at : 2024-09-21 18:00:29
  • Updated at : 2024-10-15 11:13:54
  • Link: https://kazma.tw/2024/09/21/Flipper-Zero-宇宙最強攻略:30-天帶你從入門到入坑-Day07-比馬里亞納海溝還深的-Sub-GHz-解析最終章/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments
On this page
Flipper Zero 宇宙最強攻略:30 天帶你從入門到入坑 Day07 - 比馬里亞納海溝還深的 Sub-GHz 解析最終章