เป็นไปได้หรือไม่ที่จะดึงรหัสจากบอร์ด arduino?


14

มีวิธีการส่งออกรหัสสำหรับ arduino แม้เป็นไฟล์เลขฐานสิบหกหรือไม่?


2
ใช่ใช้ avrdude จากบรรทัดคำสั่งยกเว้นว่าได้ตั้งค่าฟิวส์ความปลอดภัย มันอาจจะเป็นไปได้ แต่จงใจหนักขึ้นและไม่ชัดเจนว่าใครยังเอาชนะกลไกความปลอดภัยนั้น
Chris Stratton

@ChrisStratton ฉันกำลังฟังการพูดคุยแบบ defcon ที่พวกเขาพูดถึงว่ามันพ่ายแพ้อย่างไร ฉันจำไม่ได้ว่ามันคืออะไร แต่ google อาจจำได้
Hair_of_the_Dog

มันพ่ายแพ้ต่อไมโครคอนโทรลเลอร์บางตัวและไม่ใช่ (อย่างน้อยก็เพื่อความรู้สาธารณะ
Chris Stratton

ใช่ฉันค่อนข้างแน่ใจว่ามันถูกผ่า
Hair_of_the_Dog

คำตอบ:


7

การดูซอร์สโค้ดของ bootloaders ของ Arduino ที่https://github.com/arduino/Arduino/tree/master/hardware/arduino/bootloadersดูเหมือนว่าพวกเขาสนับสนุนการทำงานของ stk500 readback สำหรับหน่วยความจำแฟลชเช่นคุณสามารถ บรรลุเป้าหมายของคุณด้วยโปรแกรมไคลเอนต์เช่น avrdude

ดังนั้นคำตอบของคำถามคือถ้าคุณสามารถเข้าถึง bootloader ได้แล้วคุณสามารถอ่านเนื้อหาของหน่วยความจำแฟลชในรูปแบบไบนารี่หรือฐานสิบหกโดยไม่ต้องหันไปใช้โปรแกรมเมอร์ภายนอก

หากคุณไม่สามารถเข้าถึง bootloader (รีเซ็ตปัญหาหรือไม่มี bootloader ไม่อยู่) จากนั้นคุณอาจจะทำกับโปรแกรมเมอร์ภายนอกการตั้งค่าฟิวส์ความปลอดภัยไม่ได้ป้องกันสิ่งนี้


1
ปรากฎว่าไม่เพียง แต่รองรับการอ่านข้อมูลกลับไปavrdudeพฤติกรรมการตรวจสอบความถูกต้องเริ่มต้นขึ้นอยู่กับว่ามันทำงานได้ด้วยการอ่านบัฟเฟอร์กลับมาและทำการเปรียบเทียบบนพีซี ดังนั้นทุกคนที่เคยอัปโหลดรหัสไปยัง Arduino ที่ใช้ ATmega โดยการให้ IDE เรียกใช้avrdudeกับการกำหนดค่าเริ่มต้นก็มีการอ่านออกมาโดยปริยาย
Chris Stratton

5

ใช่ฉันประสบความสำเร็จในการดึงเคอร์เนลบูตจากบอร์ด Arduino หนึ่งผ่าน ISCP และผลักดันมันไปยังอีกบอร์ดหนึ่ง ฟิวส์ความปลอดภัยไม่ได้ตั้งค่า ที่ avrdude จะทำงาน ก่อนหน้านี้ฉันใช้ AVR Studio กับ STK500 เนื่องจากมี GUI และฉันไม่จำเป็นต้องเรียนรู้สวิตช์ avrdude ทั้งหมด ทั้งสองจะทำงาน

การตั้งค่าฟิวส์จะเอาชนะโอเพนซอร์ส ที่กล่าวว่า boot kernel มีให้ใน IDE .. \ Arduino \ hardware \ arduino \ bootloaders \ atmega8 \ ATmegaBOOT.hex พร้อมกับชิปอื่น ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.