修改U盘固件使之在插入电脑时能执行键盘指令。原文和源码在此,粗略翻译了一下。https://github.com/adamcaudill/Psychson

其实还有类似的成品卖,叫做USB Rubber Ducky :http://192.64.85.110/

——————以下是翻译——————

Phison 2251-03 (2303) 自定义固件 & 固件打补丁

这个库包含以下项目:

  • DriveCom -- 一个PC上的C# 程序,用来与基于Phison主控的设备连接。

  • EmbedPayload -- 一个PC上的C# 程序,将 Rubber Ducky inject.bin key scripts嵌入到定制的firmware,使之在设备上工作。

  • Injector -- 一个PC上的C# 程序,用来从固件中提取 addresses/equates以及在固件上打补丁代码。

  • firmware -- 用C语言写的8051自定义固件。

  • patch -- 用C语言写的8051补丁代码。

发布了以下各项目:

  • patch -- 用C语言写的8051补丁代码。

  • tools -- 这是所需工具。皆为编译过的二进制文件。

  • CFW.bin -- 这个自定义固件的作用是发送预设的键盘指令。

请注意,这个固件的补丁仅针对PS2251-03 ,固件版本1.03.53(就是那个8K eD3 NAND flash chip)。其他设备有可能会运行。

只要你用了正确的固件镜像使之与控制器版本、NAND 芯片适配,在降级为早期版本的时候不会有什么损害。 (比如 1.10.53).

注意: 这是实验性质的软件,无论用在不支持的设备还是支持的设备上面,都有可能造成数据丢失,乃至对 设备造成永久损坏。请自负风险。

1.开始

查看 Known Supported Devices ,获知所支持的设备。对不被支持的设备进行操作的话可能会造成永久损坏。

开始之前,我们应该去弄一个烧录器镜像,就是8051的可执行文件。它应该被写入设备的FLASH芯片中。

浏览 Obtaining a Burner Image 获得更多信息。

2.构建编译环境

在修改当前的固件之前,你必须要设置好编译环境。

浏览 Setting Up the Environment 获得更多信息。在最小安装模式下,SDCC 需要被安装在 C:\Program Files\SDCC.

3.读出固件

运行DriveCom, 通过盘符来选择想要写入的盘,以及烧录器镜像的路径和存放固件的路径:

tools\DriveCom.exe /drive=E /action=DumpFirmware /burner=BN03V104M.BIN /firmware=fw.bin

如果盘符为E,BN03V104M.BIN 就是烧录器的镜像,fw.bin就是读出来的固件镜像。

目前只有 大小为200KB 固件镜像能被读出。(这也说明了为何要用 Patriot 8GB Supersonic Xpress 这个U盘)。

4.装入固件

运行DriveCom, 通过盘符来选择想要写入的盘,以及烧录器镜像的路径和(存放?)固件的路径:

tools\DriveCom.exe /drive=E /action=SendFirmware /burner=BN03V104M.BIN /firmware=fw.bin

如果盘符为E,BN03V104M.BIN 就是烧录器的镜像,fw.bin就是要写入的固件镜像。

5.测试Demo 1 (HID Payload)

Rubber Ducky format创建一个 key script,然后用Duckencoder 创建 inject.bin ,如下所示:

java -jar duckencoder.java -i keys.txt -o inject.bin

其中 keys.txt 就是key script的路径。

你可能会注意到在Rubber Ducky与drive二者的延迟并不完全相同,可以通过调整script来补偿。

(工具来自 https://code.google.com/p/ducky-decode/.)

生成 inject.bin 以后,按以下操作来将其嵌入到定制化的固件中:

copy CFW.bin hid.bintools\EmbedPayload.exe inject.bin hid.bin

上文Inject.bin的路径设置为刚才生成 inject.bin 文件的路径, hid.bin 是 HID payload固件的路径。

(Notice that the firmware image is copied, and the payload is embedded into the copy -- 因为payload 只能被嵌入一次, 所以原来的 CFW.bin 必须保持完整.)

现在可以将固件写入设备:

tools\DriveCom.exe /drive=E /action=SendFirmware /burner=BN03V104M.BIN /firmware=hid.bin

如果目标盘符为E,BN03V104M.BIN就是烧录器镜像,hid.bin就是 HID payload 固件。

Huge thanks to the Hak5 team for their work on the excellent USB Rubber Ducky!

针对基于Phison(群联)U盘的BadUSB攻击的更多相关文章

  1. 金士顿U盘,群联PS2251-60主控,量产还原教程

    还原成一个可移动磁盘教程,只是在"分区设置"中将 "模式=21" 改为 "模式=3" 即可. 1. 打开:"MPALL_F1_90 ...

  2. 金士顿U盘,群联PS2251-60主控,量产CDROM教程

    量产前准备: 1. 插上U盘,(台式机的话插机箱后面) 2. 一台电脑,最好不要装杀毒软件(特别是360) 3. ISO镜像文件 4. 下载MPALL v3.29.0B.zip 请先耐心看完教程: 1 ...

  3. 朗科U903 低级格式化后,量产错误:read onlypage (控制器芯片群联2251-03)的解决方案

    1. 下载群联量产工作 MPALL v3.63.0D for Netac 2. 在Setting页面,选择如下(红色矩形选中): 3. 然后执行量产,量产完成后,重新插拔就能看到U盘.

  4. 基于Hadoop开发网络云盘系统客户端界面设计初稿

    基于Hadoop开发网络云盘系统客户端界面设计初稿 前言: 本文是<基于Hadoop开发网络云盘系统架构设计方案>的第二篇,针对界面原型原本考虑有两个方案:1.类windows模式,文件夹 ...

  5. 基于Hadoop开发网络云盘系统架构设计方案

    基于Hadoop开发网络云盘系统架构设计方案第一稿 引言 云计算技术的发展,各种网络云盘技术如雨后春笋,层出不穷,百度.新浪.网易都推出了自己的云盘系统,本文基于开源框架Hadoop设计实现了一套自己 ...

  6. 群联MPALL(Rel) 7F V5.03.0A-DL07量产工具 PS2251-07(PS2307)

    前言:U盘被写保护,真的很醉人啊~~      群联MPALL是一款群联PS2251系列主控量产修复工具,本版本支持PS2251-67.PS2251-68.PS2251-02.PS2251-03.PS ...

  7. [转帖]紫光与群联联盟,长江存储NAND+群联主控+紫光品牌SSD可期

    紫光与群联联盟,长江存储NAND+群联主控+紫光品牌SSD可期 全国产的 SSD https://baijiahao.baidu.com/s?id=1620789429952097018&wf ...

  8. 『集群』005 Slithice 基于 集群 的 自动容错

    Slithice 基于 集群 的 自动容错 Slithice容错概述: Slithice 支持 非集群 的 独立服务端: 支持 基于 中央服务器 的 集群服务端: 支持 基于 自定义配置 的 集群服务 ...

  9. 基于粒子群优化的无约束50维Rosenbrock函数求解

    基于粒子群优化的无约束50维Rosenbrock函数求解 一.问题重述 无约束50维的Rosenbrock函数可以描述如下: 其中, 0 要求按PSO算法思想设计一个该问题的求解算法. Rosenbr ...

随机推荐

  1. Linux System Programming 学习笔记(十) 信号

    1. 信号是软中断,提供处理异步事件的机制 异步事件可以是来源于系统外部(例如用户输入Ctrl-C)也可以来源于系统内(例如除0)   内核使用以下三种方法之一来处理信号: (1) 忽略该信号.SIG ...

  2. net9:磁盘目录文件保存到XML文档及其XML文档的读写操作,以及绑定XML到treeview

    原文发布时间为:2008-08-10 -- 来源于本人的百度文章 [由搬家工具导入] directorytoxml类: using System;using System.Data;using Sys ...

  3. 浅谈js函数三种定义方式 & 四种调用方式 & 调用顺序

    在Javascript定义一个函数一般有如下三种方式: 函数关键字(function)语句: function fnMethodName(x){alert(x);} 函数字面量(Function Li ...

  4. Atcoder CODE FESTIVAL 2017 qual B E - Popping Balls 组合计数

    题目链接 题意 \(A+B\)个球排成一行,左边\(A\)个为红球,右边\(B\)个为蓝球. 最开始可以选择两个数\(s,t\),每次操作可以取左起第\(1\)或\(s\)或\(t\)个球.问有多少种 ...

  5. poj 2318 TOYS 点与矩形的关系

    题目链接 题意 有一个矩形盒子,\(n(n\leq 5e4)\)条线段将其分成了\(n+1\)个区域(每条线段的两个端点分别在矩形的上边和下边,且线段互不相交).现向盒子中扔\(m(m\leq 5e4 ...

  6. #pragma用法

    #pragma是一种预处理指令,作用是设定编译器的状态或者是指示编译器完成一些特定的动作. 其格式一般为:#pragma Para.其中Para为参数.下面是一些常见用法. 1.message ——在 ...

  7. WEB学习-CSS清除浮动

    浮动的清除 来看一个实验:现在有两个div,div身上没有任何属性.每个div中都有li,这些li都是浮动的. <div> <ul> <li>HTML</li ...

  8. js-浅显基础-正则表达式集

    今天进博客园,忽然发现我也是有粉丝的人啦!!!!!!!!谢谢谢谢关注(爱心爱心) 本来不想做这个笔记的,但是每次都百度我自己都烦死了,所以还是自己整理一下方便我后期使用: 独笑笑不如众笑笑,放轻松点 ...

  9. 洛谷——P2527 [SHOI2001]Panda的烦恼

    P2527 [SHOI2001]Panda的烦恼 题目描述 panda是个数学怪人,他非常喜欢研究跟别人相反的事情.最近他正在研究筛法,众所周知,对一个范围内的整数,经过筛法处理以后,剩下的全部都 ...

  10. Nginx日志参数、location匹配规则、设置密码

    1.三个参数 a)$http_referer:记录此次请求是从哪个链接访问过来的: 是直接访问,还是从其他网站跳转过来的. 例如:访问:http://www.etiantian.com/,其页面首页是 ...