揭秘奸商的伎俩:利用树莓派自制“恶意充电宝”实验
重温一遍今年的315晚会。看完只想骂一句奸商!晚会上披露了一个可以通过充电控制用户手机的内容,作为离了手机就丢了半条命的现代人,经常会遇到在外手机没电借别人充电器、充电宝的情况。借到了你以为是遇上了好人,也很有可能是被卖了还帮着数钱。
作为网络安全维护者的我们,为了防止更多的人上当,我们要坚决地披露这种行为。不过视频中的控制方式不是很清晰,刚好实验室到了一批树莓派(卡片式电脑),于是决定用树莓派进行本次实验。
准备材料
需要的材料如下图所示:
(这个有毒的充电宝中主要是树莓派carry全场,2、3、4就是普通充电宝的构成)
配置树莓派
1. 我们需要在树莓派上安装基于Linux的raspbian-jessie操作系统,安装操作系统的详细步骤可以在树莓派的官网上找到,这里就不再赘述https://www.raspberrypi.org
2. 对树莓派进行设置,首先进入树莓派的操作系统。这里使用的是远程登录工具SecureCRT来登录树莓派操作系统,界面如下所示:
3. 远程对树莓派进行操作,让树莓派安装上ADB工具。(所谓的ADB工具英文为Android Debug Bridge,译为安卓调试桥)。
不过在进行这一步之前首先需要对树莓派的源进行修改,修改为如下:
在树莓派上面具体的命令如下:
apt-get install android-tool-adb
命令运行好之后adb工具,就已经安装在树莓派上面了,如果输入命令
adb
出现界面,就说明adb工具已经安装完毕。
配置完树莓派,实验就差不多完成了,接下去的步骤就是打开盒子、把东西放进盒子、盖上盒子。
调整充电宝外壳
为了使得盒子的大小能够放得下树莓派,我们要对买来的充电宝盒子进行处理,处理完的盒子如下所示:
泡沫胶可以让树莓派的接口和充电宝的充电口对上。这里需要花费很大的功夫来调整你手里的盒子来使得它和树莓派相互适应,做得好不好,就全看水平了,从图上可以看出我们撕泡沫胶的水平真是一流
所以一开始买好盒子很重要,它能够帮你大量的节省这一个步骤的时间。
调整电池
摆弄完盒子之后,就需要考虑如何对树莓派进行供电了。这里采用的18650大容量电池,两节电池合起来的电压超过7V,而树莓派只能在5V的电压下正常工作,所以我们就需要对电池的输出电压进行调整。这里使用的稳压模块是可调电压的稳压模块,具体如下:
1. 红色框出的就是调整输出的电压的旋钮
2.为了精确的调整电压,我们还需要一个万用电表,万用电表如下所示:
3. 对输出电压进行调整的情况如下所示:扭一扭,看一看
调整完电压之后,我们就可以将所有模块组装起来了。之前已经根据树莓派大小调整过盒子,所以很容易能将模块放进去。我们的成品如下:
将盖子盖上:
测试
当用户使用这一款充电宝的时候,就可以对其进行远程的控制,比如说使用adb工具向用户手机推送恶意app,如下所示:
安全提示
1. 当使用各种充电设备的时候,要警惕那些所谓的充电小提示。 2. 不要去下载所谓的充电助手等应用 3. 如非必要,请关闭手机的开发者模式, 4. 关闭允许USB安装应用选项。因为很多木马APP都是从USB安装而来 5. 切勿下载使用不明来源的应用 6. 尽量不要去连接他人的充电设备
- MONO x64 amd_x64
- DN榜:最近3个域名成交金额均达到六位数美金
- 采访Philipp Crocoll:安卓平台上整合Java和C#
- “AS3.0高级动画编程”学习:第一章高级碰撞检测
- AI分析师PK人类分析师,结果竟然是……
- 纯代码修改WordPress 默认 Gravatar 头像的方法
- 这些行业的饭碗要被机器人抢了 再不努力就被它们PK掉了!
- DeveWork.com 上线“前端工具箱”(附源码下载)
- Debug和Release之本质区别
- ArgoUML -- 开源UML 建模工具
- 性能分析工具-PerfView
- c#测试字符串是否为GUID的几种方法
- 编译错误CS1595
- 分享一款带尖角浮出 公告栏 样式
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 设计模式之单例模式
- Roslyn 理解 msbuild 的清理过程
- gorm聚合查询group结合join和count
- 潘石屹用Python解决100个问题 | 集合
- Catalina 默认使用zsh了,你可习惯
- LeetCode 354 Russian Doll Envelopes (动态规划)
- 设计模式之原型模式
- 设计模式之工厂方法模式
- Python 随机数生成
- OWIN 初探
- Spark和Spring整合处理离线数据
- 宝塔面板API接口抓取教程-宝塔接口配置文件
- 红黑树的创建
- Spark SQL | 目前Spark社区最活跃的组件之一
- 关于 MySQL Repeatable Read Isolation 常见的三个误区