ม่ะจะเล่าให้ฟัง เรื่อง "การแฮ็ก wireless เมาส์และคีย์บอร์ดระยะไกลด้วยอุปกรณ์ราคา 35 บาท"
***เริ่มด้วยเรื่องที่ว่าไปเห็นคลิปในเรื่องการแกล้งคนอื่นด้วยการแอบไปเสียบ wireless คีย์บอร์ดไว้ในเครื่องคนอื่นแล้วแอบกวนโดยการ กด จากระยะไกลโดยที่เจ้าของไม่รู้ (ลองค้นดู wireless keyboard prank) เลยคิดว่าเฮ้ย จริงๆ มันน่าจะมีวิธีในการดักจับสัญญาณจากอุปกรณ์พวกนี้ได้และถอดรหัสออกมา เป็นการดักการกดคีย์บอร์ดหรือเมาส์ หรือหากล้ำไปกว่านั้น ถ้าเราสามารถรู้การเข้ารหัสของมันก็สามารถส่งข้อมูลไปยังเครื่องเป้าหมายสั่งคลิก สั่งพิมพ์คีย์บอร์ดเพื่อรันคำสั่งอันตรายจากระยะไกลได้ พอเอาเรื่องนี้ไปค้นก็พบว่ามันก็มีจริง ๆ
*** โปรเจคนี้ชื่อ mousejack [ref 1] เป็นการใช้ชิป NRF24L01+/NRF24LU1+ ดักและถอดคีย์การส่งข้อมูล ซึ่งชิปตัวนี้ส่งข้อมูล 2.4GHz ถูกใช้กันอย่างแพร่หลายในหลาย ๆ อุปกรณ์รวมไปถึงเมาส์/คีบอร์ดจาก Microsoft และ Logitech (ในบางรุ่น) และที่สำคัญราคาถูกหาซื้อได้ทั่วไปในราคา 35 บาทไทย
*** หลักการก็ง่าย ๆ เลย แค่เราเปิดโหมด Listening (จะเรียก promiscuous ก็ตามแต่)ในชิปนี้ แล้วสแกนหา channel ที่ตัวส่งกับตัวรับคุยกัน จากนั้นก็ตั้งอุปกรณ์เราให้ตรงกันก็สามารถดัก raw packet ได้แล้ว ต่อมาเราจะทำการถอดรหัส จากนั้นก็เอามาปลอมคำสั่งในการกดของเรา แล้วเปลี่ยนเป็นโหมดส่ง ยิงคำสั่งไปยังเป้าหมายแทน เป็นอันเสร็จพิธี
*** จากที่ผมทดลองทำดูโดยงัดเมาส์ Logitech MT570 ดูก็พบว่าข้างในใช้ชิป NRF24L01 นี้จริง ๆ ด้วย (ภาพ 2-3) ต่อมาก็ทดลองโหลดโค้ดจาก github (ไปหาโค้ดเอาเองนะคงไม่ยากเกินไปมี keywords แล้ว) แล้วเอา Arduino ต่อเข้ากับ NRF24L01 [ภาพ 4] เพื่อลองสแกนและดักก็พบมี packet ของเมาส์วิ่งไปมาขณะที่ขยับเมาส์ [ภาพ 5] และสามารถถอดรหัสและ "ส่งคำสั่งการคลิกซ้ายขวาสกรอได้หมดด้วย Arduino" ความแสบของโค้ดนี้คือมันมีคำสั่งคอมไพล์ ducky script ฝังไปใน โค้ด arduino firmware ด้วย ซึ่งเมื่อประมาณ 4-5 ปีก่อนมั้ง เคยเขียน ducky script ไปฝังใส่ใน BadUsb แค่คำสั่งกดคีย์บอร์ดเนี่ยสามารถเปิด Powershell โหลดโปรแกรมแกะรหัสที่บันที่ไว้ใน Chrome, IE, Firefox แล้วส่งรหัสมาทางเมล์+สั่งเปิด Remote desktop สร้าง admin user ฝังไว้ ยังทำมาแล้ว มาคราวนี้ไม่ต้องเดินไปเสียบ BadUsb แต่สามารถสั่งการจากระยะไกลได้ ...!!! (แต่ต้องให้เจ้าของคอมเผลอก่อนนะ ค่อยทำ ไม่งั้น...) และที่เจ๋งกว่านั้นก็มีคือถ้าไม่อยากซื้อ NRF24L01 เราสามารถใส่ firmware ใหม่ใส่ USB dongle ของ Logitech ให้มันเปลี่ยนเป็นตัวดักข้อมูลและส่งสัญญาณได้ (ข้างในเป็น NRF24LU1+ รุ่นนี้ต่อ usb ได้ ส่วนรุ่นอื่นต้องต่อ SPI เข้ากับ uC) พูดง่ายๆคือ จากตัวรับสัญญาณ ถ้าจะ hack ใคร เราก็เปลี่ยนให้เป็นตัวส่งซะ แฮกเสร็จก็ปรับให้เป็นตัวรับสัญญาณเมาส์เหมือนเดิม เนียนม่ะ 555++
***สุดท้ายแล้วก็ยังมีความโชคดีอยู่บ้าง ที่เราสามารถอัพ firmware Logitech ใหม่เพื่อป้องกันช่องโหว่นี้ได้ และส่วนใหญ่น่าจะใช้เมาส์คีย์บอร์ดแบบสาย หรือไม่ก็ใช้ oker, nubwo จากจีนกัน ซึ่งอย่าว่าแต่แกะโปรโตคอลสื่อสารเลย ขนาดชิปมันใช้เบอร์อะไรยังไม่รู้ 55++ ...แต่อนาคตก็ไม่แน่จริงม่ะ ... ถ้าเห็นว่ามีประโยชน์ก็แชร์กันได้นะครับ ^^ บทความนี้ส่งท้ายปีใหม่ละกันเพราะจะกลับบ้านแล้ว
สวัสดีปีใหม่ ขอให้คุณพระศรีคุ้มครองพระรัตนตรัย กลับบ้านเดินทางโดยถนนมิตรภาพครับ
[ref 1] slide จากงาน defcon https://media.defcon.org/…/DEFCON-24-Marc-Newlin-MouseJack-…
[ref 2] อุปกรณ์ที่โดนผลกระทบ https://www.bastille.net/…/vulne…/mousejack/affected-devices
[ref 3] โปรแกรมอัพ firmware จาก logitech https://support.logitech.com/en_us/software/unifying
spi arduino 在 台灣物聯網實驗室 IOT Labs Facebook 八卦
英特爾拓展物聯網發展藍圖
英特爾公司為拓展智慧型物聯網(Internet of Things,IoT)藍圖,推出先前代號為「Bay Trail-I」的Intel® Atom™ (凌動™)處理器E3800系列產品,以及Intel® Quark系統單晶片(system-on-a-chip,SoC) X1000。這些產品的推出讓英特爾的物聯網市場藍圖從具電源使用效益型的Intel® Quark SoC一路涵蓋到高效能Intel® Xeon®處理器。
Intel® AtomTM處理器E3800產品系列
運用英特爾領先業界的22奈米製程技術,加上3-D三閘(tri-gate)電晶體打造而成的Intel® AtomTM處理器E3800產品系列,是專為構成物聯網的智慧型系統量身打造的系統單晶片。這項嶄新的微架構加入許多針對物聯網的重大改良,包括改善效能與功耗、低待機功耗(standby power)、錯誤校正碼(Error-Correcting Code,ECC)、以及支援工業級運作溫度範圍。
此產品系列是用來支援高效率的影像作業以及各種數位電子看板應用,比如互動資訊站、智慧型販賣機、自動櫃員機(ATM)與銷售點管理系統(point-of-sale terminal)、可攜式醫療裝置、以及車用資訊娛樂系統(in-vehicle infotainment system)等。
錯誤校正碼(ECC):加入ECC功能的Intel® AtomTM處理器E3800產品系列提供極高的資料完整性、可靠性、以及系統正常運作時間,讓設備能在工廠這類嚴苛環境中長時間正常運作。
工業級運作溫度範圍:Intel® AtomTM處理器E3800產品系列為強固型設計與極端環境提供卓越的可靠性,包括像工廠以及消費與商用車輛裡的車用資訊娛樂系統。
簡化系統設計與物料清單(bill of material,BOM)最佳化:整合各種I/O與加速功能,讓產品加入多元化的處理功能,進而使整體系統成本最佳化。
低功耗與節能:Intel® AtomTM處理器E3800產品系列提供的超低待機功耗可達毫瓦(milli-watt)等級,熱設計功率(Thermal Design Power,TDP)則僅5至10瓦。
提升視覺體驗:Intel® AtomTM處理器E3800產品系列在低功耗下仍具備優異的媒體與繪圖功能,提供更快的媒體格式轉換、立體3-D功能、高效率影像處理、超臨場感的網頁瀏覽、以及透過HDMI介面搭配第七代Intel® HD繪圖(Intel® HD Graphics)技術進行更有效率的HD影片轉檔。
Intel® Quark SoC X1000
低功耗、微型化核心的Intel® Quark SoC X1000是針對快速成長中物聯網市場的新興應用所設計,包括工業、能源、以及運輸。系統單晶片(SoC)的處理核心為32位元、單核/單執行緒的Intel® Pentium®指令集架構(ISA)相容處理器,運作時脈速度達400MHz。這款SoC亦支援DDR3記憶體、PCIe介面、乙太網路(Ethernet)、USB裝置、USB 主機、SD記憶卡、UART、12C、GPIO、SPI、JTAG、Arduino IDE、以及開放原始碼Linux作業系統。
對於放置在工廠廠房這類需要全時運作的設備,Intel® Quark SoC X1000內建的錯誤校正碼功能,能夠使資料維持極高的完整性、可靠性與系統正常運作時間。此外,亦支援工業級運作溫度範圍,協助產品符合工業控制與自動化應用在廠房、智慧電網(smart grid)、以及交通運輸基礎建設中運作的相關規範。
Intel® Quark SoC X1000可整合軟體堆疊。軟體堆疊是以預先驗證的解決方案為基礎,包含McAfee Embedded Control以及Wind River Intelligent Device Platform,提供可互通的安全防護、管理與連網功能,打造出真正可擴充的物聯網效能與功能。
McAfee Embedded Control:McAfee Embedded Control透過全面性的變更政策執行以及管理遵循,提供全方位的保護並避免安裝不必要的應用程式。精簡的軟體技術亦讓物聯網裝置能自我修復以抵禦惡意程式的感染與攻擊。
Wind River Intelligent Device Platform:Wind River Intelligent Device Platform預先整合智慧與連網功能造就出豐富多元的網路選項,讓業者節省開發時間與成本。經過驗證的彈性化韌體提供極多元的網路連結選項,可支援眾多數據機,以及根據作業系統選用適合的連網方式,包含PAN、LAN、以及WAN等網路。
關於英特爾
英特爾(NASDAQ:INTC)為全球運算技術創新的領導者,致力於設計及開發全球運算裝置的關鍵技術。想了解更多英特爾重要訊息,請至英特爾新聞室newsroom.intel.com及blogs.intel.com查詢。
Intel、Atom、Xeon與Intel標誌為英特爾公司或子公司在美國與其他國家之註冊商標。
*其他品牌和名稱為其所屬公司的資產。
資料來源:http://newsroom.intel.com/…/%E8%8B%B1%E7%89%B9%E7%88%BE%E6%…
spi arduino 在 台灣物聯網實驗室 IOT Labs Facebook 八卦
e絡盟為中國物聯網提供領先開發套件
2014年5月27日 來源: 中研網 【打印】 【繁體】
中研網訊:
物聯網(IoT)是中國電子開發設計的一大主題。為此,e絡盟特宣布與飛思卡爾、Atmel及德州儀器(TI)等技術合作夥伴聯合推出一系列獨有的全新技術、產品及設計資源。
e絡盟大中華區總經理劉嘉功先生表示:“物聯網已成為全球最重要的發展趨勢之一,其必將推動中國電子產業的發展。未來幾年,物聯網將影響到經濟與社會生活的方方面面。e絡盟很高興能夠為中國工程師推出一系列開創性的物聯網應用解決方案,以激發他們的創新理念設計從而將物聯網概念變為現實。”
全新系列開發套件包括:
新型開源單板平台RevolutionizingtheInternetofThings(RIoT)開發板。該開發板採用飛思卡爾i.MX6Solo處理器,並由e絡盟活躍社區及RIoTboard.org的應用開發商提供支持。
賽普拉斯新型PSoC®4Pioneer開發套件將賽普拉斯一流的PSoC模擬和數字架構同ARM®的低功耗Cortex™-M0內核完美結合,使之獲得更強大功能,幫助設計師獲得PSoC4可編程片上系統架構的更高性能。
MagniVS12ZVML-MINIBRD,是一款由e絡盟與飛思卡爾攜手推出的低成本、易於使用的變速電機控制開發套件。該套件配備可使變速電機實現快速運行所需的所有硬件與軟件,完美適用於BLDC和PMSM無傳感器電機控制應用以及雙向DC電機應用。
Atmel新型SAMA5D3Xplained評估套件,是一款用於評估基於微控制器設計的低成本快速原型開發和評估平台。它不僅配備一組豐富的即用型連接和存儲外設,同時還配備兼容Arduino 控制板的擴展排針,方便用戶進行定制化設計,這也是自由安卓市場的一個完美目標。
e絡盟與德州儀器(TI)攜手推出的面向人機界面應用的HapTouch™BoosterPack。該擴展板將MSP430TCH5E觸覺MCU與TIDRV2603觸覺驅動器整合到常見遊戲控制器的外形中,可幫助開發人員快速將觸覺技術集成到設計當中。
高性能全NFC擴展板—EXPLORE-NFC,適用於工業及消費類電子設備,可為符合NFC標準的讀卡器模式、點對點模式及卡仿真模式提供外部用戶接口。EXPLORE-NFC擴展板基於恩智浦半導體(NXP)的PN512NFC解決方案,並配置了一款高性能集成天線、一個擴展軟件包及一個靈活的SPI接口。
賽普拉斯PSoC®1系列低功耗、低成本開發套件,採用賽普拉斯新型低功耗PSoC1器件(型號為CY8C24x93),通過超低功耗及低引腳數配置即可實現PSoC功能。e絡盟大中華區總經理劉嘉功先生表示:“e絡盟的獨特策略就是與主流芯片供應商展開合作,從而發展成開發板資源中心,為工程師從初始設計到生產製造整個流程提供完善的支持服務。我們在庫存及產品價格方面的大量投資使我們能夠更好地為客戶提供支持,從而滿足他們對開發套件及工具的一切需求。”
資料來源:http://chinairn.com/news/20140527/142840655.shtml
spi arduino 在 [問題] Arduino SPI 使用語法的問題- 看板ASM 的八卦
各位大大午安,
自從前天開始接觸Arduino這個東西後,
便開始被他多樣的功能給吸引住,
而網路上豐富且循序漸進的資料讓從沒學過C語言的我也能很順利的上手。
順便推薦一下這兩天我所看覺得非常棒的網站:
1. https://www.youtube.com/watch?v=E3W8Fxc7tHo
這個網站是由Arduino的發展人之一所拍的教學影片,共有10個主題,
從最基本開始讓你慢慢了解這玩意是什麼!
在看到第四個lesson後也有了靈感寫了我的第一支程式,
https://0rz.tw/fdhGW (讓Ardino唱卡農,連結到我的FB影片)
2. https://0rz.tw/2akCj
這個網站裡的Arduino Tutorials 目前共有57個chapters,而且持續更新中,
藉由做專題的形式來學習Arduino。
打了落落長的廢話我想問的問題是:
a. 我在看了Arduino官網裡關於使用SPI寫EEPROM的文章後一直卡在一個地方,
網路上找了很多資料後還是無法了解....
(https://arduino.cc/en/Tutorial/SPIEEPROM,文章連結)
文章裡其中一段程式碼 :
// SPCR = 01010000
//interrupt disabled,spi enabled,msb 1st,master,clk low when idle,
//sample on leading edge of clk,system clock/4 rate (fastest)
SPCR = (1<<SPE)|(1<<MSTR);
clr=SPSR;
clr=SPDR;
delay(10);
我的理解為我想要在SPI Control Register 裡寫入01010000這個指令,
我不懂的是這串指令要怎麼從(1<<SPE)|(1<<MSTR)產生?
我看程式的一開始沒有宣告SPE與MSTR為何種變數,
為什麼它可以這樣直接使用?
為什麼不能直接寫 : SPCR=01010000就好?
b. 在一個使用SPI控制DAC的範例裡 :
https://0rz.tw/Y9QGW
因為此DAC為12 bit input且需4 bit來做參數設定,
由於SPI只能做byte的傳輸,因此範例裡使用的是 highbyte()與lowbyte()兩指令,
將一個16 bit的變數分成兩部分寫入DAC,
其中包含參數設定的那部分使用了bitmask來使得該4 bit永遠為固定值。
部分程式碼為 :
word outputValue = 0; // a word is a 16-bit number
byte data = 0; // and a byte is an 8-bit number
void loop()
{
for (int a=0; a<=4095; a++)
{
outputValue = a;
digitalWrite(10, LOW);
data = highByte(outputValue);
data = 0b00001111 & data;
data = 0b00110000 | data;
SPI.transfer(data);
data = lowByte(outputValue);
SPI.transfer(data);
digitalWrite(10, HIGH);
delay(del);
}
這裡我不懂的地方是在bitmask裡0b00001111 or 0b00110000 為什麼會多出0b?
不能直接寫00001111 or 00110000嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.109.112.200
不過在SPE/MSTR這裡我還是不懂....
你的意思是一開始include的library裡就有預先定義好的嗎?
我剛看了一下程式碼一開始只有include SPI.h,
點進去看也沒看到 SPE, MSTR 或 SPSR, SPDR相關的定義....
※ 編輯: escorpion 來自: 140.109.112.200 (11/21 15:30)
在進去那個資料夾點了幾個標頭檔還是沒發現那幾個字的定義後我放棄了.....冏
不過一結果來看我應該可以假設他們分別是6與4這兩個值,
並且被已經被定義在某處了吧?
再來是如果我想要寫01010000進SPSR,
可以直接寫成 : SPSR=B01010000就好嗎?
※ 編輯: escorpion 來自: 140.109.112.200 (11/21 22:37)
※ 編輯: escorpion 來自: 140.109.112.200 (11/22 12:49)
... <看更多>