Arduino+Avr libc制作Badusb原理讲解
一、 媒介
2014年美国黑帽大会上研讨人员JakobLell和Karsten Nohl展现了badusb的进击办法后,海内与badusb相干的文章固然有了一些,然则大部门人把相干文章都阅读后照样会有种“不明觉厉”的感到,badusb仍有一层朦胧的面纱。颠末一段光阴的进修和研讨后,笔者盼望经由进程自己的一些心得体会可以或许赞助其余人更清楚地认识badusb,也盼望这篇文章可以或许起到必定的启迪。这篇文章重要分为五个部门——常识扫盲部门、badusb固件编写部门、badusb设置装备摆设界面部门、技巧瞻望部门和总结部门。
二、硬件筹备
本文应用的硬件是Arduino Leonardo开辟板,然则不难将Leonardo开辟板调换为别的Arduino开辟板。
三、常识扫盲
1. 固然USB协定有必定的破绽,然则不是任何USB装备都能制造badusb的。制造badusb有两个焦点,一个是可以或许为USB装备编写相应的固件,另一个是可以或许将编写的固件烧录到USB装备中。要编写相应的固件就需要控制USB装备中微节制器(或许说芯片)的指令标准文档(假如Intel不供给开辟文档,那末除Intel自己没有人能为Intel处理器编写法式);而要将固件烧录到USB装备中,要末应用相应的硬件编程器,要末就需要USB装备自己曾经存在的bootloader来帮助停止烧录事情(bootloader是USB装备厂商在临盆时就放在USB装备中的,网上某些优盘的优盘量产对象也是从厂商流出的,而不是第三方编写的)。要同时满意两个焦点前提照样比较难的,即就是JakobLell和Karsten Nohl颁布的badusb应用代码也是针对满意必定前提的优盘,由于流出的优盘量产对象无限(既然有优盘量产对象,可以或许推想相应的优盘中确定有bootloader或许相似bootloader的固件存在,那末经由进程逆向优盘量产对象就可以够或许控制PC端软件和特定优盘的通讯方法,进而实现自己的烧录对象)。
2. Arduino 和 teensy这类开辟板之以是轻易制造badusb,是由于它们采用的微节制器民间有详细的阐明文档。最常用的是atmel公司的微节制器,atmel官网供给了各类开辟文档和开辟相干的库等。
3. Atmel厂商的微节制器整合了SRAM, FLASH和EEPROM。SRAM就比如电脑的内存,不消关怀;FLASH高地点寄存的是bootloader,低地点则寄存用户烧录的固件,芯片加电时间接履行用户的固件,然则芯片复位时会先履行bootloader(这一点是烧录的症结),再履行用户的固件;EEPROM则重要用来寄存数据,用户可以或许随便改动EEPROM中的数据,固件也能够或许从EEPROM里读取数据(本文的固件示例和PC端法式都应用了这一特征)。
4. Avr libc是一个开源名目,针对atmel厂商的各类微节制器开辟C说话库、编译器、烧录对象等一系列帮助对象,另有针对Windows平台的WinAvr名目。Arduino ide的焦点其实也是avr libc。
5. Arduino的开辟板有相应的bootloader(在FLASH高地点)可以或许和avr libc名目中的avrdude.exe软件通讯,实现固件的烧写和读取举措。在Arduino开辟板复位时,会加载bootloader,这时就可以够或许应用avrdude.exe和bootloader通讯。复位操纵可以或许经由进程开辟板上的复位按钮,或许编程实现软复位操纵(假如开辟板支撑的话)。
6. Intel hex 是一种用于编程器的特别的文件格局,正是由于这类格局,使得咱们可以或许自在节制数据的存储地点。Intel hex的文件格局剖析可以或许自行网上搜刮。
四、常识获得道路
1. USB常识获得
假如只是为了简略懂得USB装备为何可以或许模仿键盘、鼠标等别的装备,网上有很多博客是对于USB标准详解的,也能够或许简略地看《USB开辟大全》和《USB应用开辟实例详解》前面对于USB通用协定部门,假如不是对硬件感兴趣没需要穷究。
2. Arduino、Avr libc常识获得
这两样其实都是开源的,以是只要有充足的精神和气力,看源代码深刻懂得相干常识是没成绩的。然则假如只是想体验一下制造badusb,可以或许只看一下Arduino的民间文档和avrdude.exe的相干文档,看这些文档时也没需要穷究每一个细节,能必定程度上“照葫芦画瓢”就可以够或许了。
五、Badusb固件编写
这里给的固件示例在履行时会从EEPROM中指定的地点读取数据,依据读取的数据和制定的规矩发送相应的按键相应给PC主机。
#include"Keyboard.h"#include"EEPROM.h" intmodifier_key = -1; //modifier_key不为-1阐明Win键、Ctrl键或许Shift键按下,这个示例特指Win键intkeycode; //寄存要发送的按键代码unsignedint delay_time = 0; //固件履行下条指令时提早的光阴unsignedint address = 0; //从EEPROM读取数据的地点,这里要和EEPROM寄存数据的地点同等charnum_char[10] = {0}; //某个数字的字符串情势,这个数字用于delay()的参数,也就是作为就寝的光阴int num= 0;intindex = 0; //change this to match your platform:voidsetup() { // make pin 2 an input and turn on the // pullup resistor so it goes high unless // connected to ground: pinMode(2, INPUT_PULLUP); Keyboard.begin(); delay(1000); //期待一段光阴,让USB装备和PC主机通讯实现初始化事情 while((keycode = EEPROM.read(address++))!= 0){//轮回从EEPROM中读取数据直到读到数值0(不是数字0),这个值是在向EEPROM中写入数据时在末端增加的。 if (keycode == '$') { //假如从EEPROM中读到的数值即是'版权声明:
作者: FreeClashNode
链接: https://www.freeclashnode.com/news/article-1744.htm
来源: www.freeclashnode.com
文章版权归作者所有,未经允许请勿转载。
热门文章
- 10月1日免费节点分享|18M/S,Clash节点/V2ray节点/Singbox节点/SSR节点|免费上网梯子每天更新
- 10月2日免费节点分享|22.8M/S,Singbox节点/Shadowrocket节点/Clash节点/V2ray节点|免费上网梯子每天更新
- 10月3日免费节点分享|20.1M/S,SSR节点/Singbox节点/V2ray节点/Clash节点|免费上网梯子每天更新
- 9月30日免费节点分享|19.1M/S,Clash节点/V2ray节点/SSR节点/Singbox节点|免费上网梯子每天更新
- 10月6日免费节点分享|19.2M/S,V2ray节点/Singbox节点/Shadowrocket节点/Clash节点|免费上网梯子每天更新
- 10月8日免费节点分享|22.5M/S,V2ray节点/Singbox节点/Clash节点/Shadowrocket节点|免费上网梯子每天更新
- 10月11日免费节点分享|18.6M/S,V2ray节点/Clash节点/SSR节点/Singbox节点|免费上网梯子每天更新
- 10月5日免费节点分享|19.9M/S,Singbox节点/Clash节点/V2ray节点/SSR节点|免费上网梯子每天更新
- 10月14日免费节点分享|22.5M/S,Clash节点/V2ray节点/Singbox节点/SSR节点|免费上网梯子每天更新
- 9月29日免费节点分享|22M/S,SSR节点/Singbox节点/V2ray节点/Clash节点|免费上网梯子每天更新
最新文章
- 跨越知识边界:浙大学子的全球学术网络探索指南
- 10月25日免费节点分享|18.1M/S,SSR节点/V2ray节点/Singbox节点/Clash节点|免费上网梯子每天更新
- 10月24日免费节点分享|20.5M/S,V2ray节点/Clash节点/Singbox节点/Shadowrocket节点|免费上网梯子每天更新
- 刘大猫科学上网全攻略:解锁全球网络的终极指南
- 10月23日免费节点分享|22.2M/S,Shadowrocket节点/Clash节点/Singbox节点/V2ray节点|免费上网梯子每天更新
- 全面解析Quantumult安卓版:功能、安装与配置教程
- 双重防护,畅享无界:AdGuard联手V2RayNG,打造极致安全的上网体验
- 10月22日免费节点分享|18.8M/S,V2ray节点/SSR节点/Singbox节点/Clash节点|免费上网梯子每天更新
- 掌握Clash白名单设置:精准控制代理流量的艺术
- 10月21日免费节点分享|22M/S,Clash节点/Singbox节点/V2ray节点/SSR节点|免费上网梯子每天更新
- 突破网络边界:技术科学上网的终极安全指南
- 10月20日免费节点分享|22.9M/S,SSR节点/V2ray节点/Clash节点/Singbox节点|免费上网梯子每天更新
- Shadowrocket 选购指南:从入门到精通,找到你的专属代理神器
- 10月19日免费节点分享|19.3M/S,Singbox节点/V2ray节点/Clash节点/Shadowrocket节点|免费上网梯子每天更新
- 深入解读:V2Ray为何比SSR更安全?一场网络隐私的全方位较量
- 10月18日免费节点分享|20.6M/S,V2ray节点/Clash节点/SSR节点/Singbox节点|免费上网梯子每天更新
- 深度指南:Shadowrocket从入门到精通——iOS用户的网络自由密钥
- 10月17日免费节点分享|18M/S,Clash节点/SSR节点/V2ray节点/Singbox节点|免费上网梯子每天更新
- 深入解析科学上网套:全方位使用指南与常见问题解答
- 10月16日免费节点分享|22M/S,Shadowrocket节点/V2ray节点/Singbox节点/Clash节点|免费上网梯子每天更新
- 10月15日免费节点分享|21.2M/S,Clash节点/SSR节点/V2ray节点/Singbox节点|免费上网梯子每天更新
- 全局掌控:安卓设备上 Clash 全局模式完整设置指南与深度解析
- 解锁全球游戏体验:育碧平台科学上网全攻略与深度解析
- 10月14日免费节点分享|22.5M/S,Clash节点/V2ray节点/Singbox节点/SSR节点|免费上网梯子每天更新
- 华为Mate 10科学上网全攻略:突破限制,畅游全球网络
- 10月13日免费节点分享|22.1M/S,V2ray节点/Clash节点/Singbox节点/Shadowrocket节点|免费上网梯子每天更新
- 10月12日免费节点分享|22.7M/S,Shadowrocket节点/V2ray节点/Singbox节点/Clash节点|免费上网梯子每天更新
- 量子ULT全方位指南:从下载配置到高阶玩法一网打尽
- 10月11日免费节点分享|18.6M/S,V2ray节点/Clash节点/SSR节点/Singbox节点|免费上网梯子每天更新
- 极路由V2ray插件完全指南:打造家庭网络的安全屏障
- 10月10日免费节点分享|18.3M/S,V2ray节点/Singbox节点/Clash节点/SSR节点|免费上网梯子每天更新
- 极速狂飙与正义追击:《警车 Clash》深度解析与高阶攻略
- 10月9日免费节点分享|22.3M/S,Singbox节点/Clash节点/Shadowrocket节点/V2ray节点|免费上网梯子每天更新
- 用hosts文件科学上网:一份从入门到实战的详细指南
- 10月8日免费节点分享|22.5M/S,V2ray节点/Singbox节点/Clash节点/Shadowrocket节点|免费上网梯子每天更新
- iOS设备上SSR科学上网全教程:从入门到精通
- 10月7日免费节点分享|23M/S,Singbox节点/Clash节点/Shadowrocket节点/V2ray节点|免费上网梯子每天更新
- 深度剖析V2Ray订阅机制:从零搭建高效、安全的科学上网环境
- 10月6日免费节点分享|19.2M/S,V2ray节点/Singbox节点/Shadowrocket节点/Clash节点|免费上网梯子每天更新
- 全面解析蚕蛹生态冲突及其多元价值
- 10月5日免费节点分享|19.9M/S,Singbox节点/Clash节点/V2ray节点/SSR节点|免费上网梯子每天更新
- 从零开始:手把手教你刷梅林固件实现安全科学上网
- 10月4日免费节点分享|20M/S,SSR节点/V2ray节点/Clash节点/Singbox节点|免费上网梯子每天更新
- 跨越边界,自由探索:一加科学上网全面指南与深度解析
- 10月3日免费节点分享|20.1M/S,SSR节点/Singbox节点/V2ray节点/Clash节点|免费上网梯子每天更新
- 10月2日免费节点分享|22.8M/S,Singbox节点/Shadowrocket节点/Clash节点/V2ray节点|免费上网梯子每天更新
- 斐讯K2路由器刷机全攻略:解锁科学上网新境界
- 解锁网络自由:B站d手机科学上网全攻略
- 10月1日免费节点分享|18M/S,Clash节点/V2ray节点/Singbox节点/SSR节点|免费上网梯子每天更新
- 洞悉网络脉络:一份关于Vmess节点测试的全景式实践手记
归档
- 2026-10 49
- 2026-09 58
- 2026-08 63
- 2026-07 61
- 2026-06 55
- 2026-05 56
- 2026-04 51
- 2026-03 60
- 2026-02 52
- 2026-01 56
- 2025-12 59
- 2025-11 55
- 2025-10 56
- 2025-09 55
- 2025-08 49
- 2025-07 31
- 2025-06 30
- 2025-05 31
- 2025-04 30
- 2025-03 388
- 2025-02 360
- 2025-01 403
- 2024-12 403
- 2024-11 390
- 2024-10 403
- 2024-09 388
- 2024-08 402
- 2024-07 427
- 2024-06 442
- 2024-05 181
- 2024-04 33
- 2024-03 31
- 2024-02 29
- 2024-01 51
- 2023-12 52
- 2023-11 32
- 2023-10 32
- 2023-09 3