1. 程式人生 > >CTF 【練習題 20160710】感測器資料解碼(未完成)

CTF 【練習題 20160710】感測器資料解碼(未完成)

來源:2016全國大學生資訊保安競賽ctf初賽,ichunqiu出題。
題目:感測器1
分值:100分
5555555595555A65556AA696AA6666666955
這是某壓力感測器無線資料包解調後但未解碼的報文(hex)
已知其ID為0xFED31F,請繼續將報文完整解碼,提交hex。
tips:flag是flag{破譯出的明文}
提示1:曼聯

分析:

1.這個題一開始是完全不明白,提示出來後才明白上面的資料是曼徹斯特編碼資料。
曼徹斯特編碼:曼徹斯特編碼將時鐘和資料包含在資料流中,在傳輸程式碼資訊的同時,也將時鐘同步訊號一起傳輸到對方,每位編碼中有一跳變,不存在直流分量,因此具有自同步能力和良好的抗干擾性能。但每一個碼元都被調成兩個電平,所以資料傳輸速率只有調製速率的1/2。
曼徹斯特編碼表示0或1有兩種不同的方法:
第一種G. E. Thomas, Andrew S. Tanenbaum1949年提出的,它規定0是由低-高的電平跳變表示,1是高-低的電平跳變。
按此規則有:
- 編碼0101(即0x5),表示原資料為00;
- 編碼1001(0x9)表示10;
- 編碼0110(0x6)表示01;
- 編碼1010(0xA)表示11。
第二種IEEE 802.4(令牌匯流排)和低速版的IEEE 802.3(乙太網)中規定, 按照這樣的說法, 低-高電平跳變表示1, 高-低的電平跳變表示0。
- 編碼0101(0x5)表示11;
- 編碼1001(0x9)表示01;
- 編碼0110(0x6)表示10;
- 編碼1010(0xA)表示00;

2.結合資料5555555595555A65556AA696AA6666666955進行解碼。
由於有兩種標準,所以兩種結果。
第一種G. E. Thomas, Andrew S. Tanenbaum規則解碼:
000000000000000010000000001101000000011111011001111101010101010101100000
貼上到計算器裡轉成16進位制:0x803407D9F55560。
第二IEEE 802.3規則解碼:
111111111111111101111111110010111111100000100110000010101010101010011111
貼上到計算器裡轉成16進位制:0xFFFF7FCBF8260AAA9F。

3.這兩個結果都沒有出現ID:0xFED31F,解題思路錯了麼?或者答案就是flag{0x803407D9F55560} 或flag{0xFFFF7FCBF8260AAA9F}?
結果未驗證,等待writeup