介绍
本年9月15日,Chrome61宣布,它启用了WebUSB作为其默认功能。而WebUSB是一个Javascript API,可以许可网页拜访已连接的USB设备。这里的USB设备是指体系和工业的USB设备,所以不支撑常见的USB设备(比如收集摄像头,HID或安闲量储存设备)。然而经由过程WebUSB API,很多其他的USB设备可以被拜访,且当用户授权给网页时,本身可能根本不懂得网页获取的拜访权限级别。
这篇文┞仿探寻WebUSB的功能,以深刻懂得其工作道理,进击办法及隐私问题。我们会解释拜访设备所需的过程,以及浏览器是若何处理权限的,然后我们会评论辩论一些安然隐患,并演示一个网站若何应用WebUSB来建立ADB连接来入侵安卓手机。
接下来,页面启动控制传输来设置设备,这根本上指定了它欲望与设备通信的方法以及所请求切实其实切功能。一旦设备设置好,它就可以传输数据,并且完成USB设备接口的所有功能。
基本
当USB设备插入主机时,浏览器会攫取设备发送的描述符,然后将其储存在内部USB设备储存器中。此过程由Chrome的浏览器内核Blink处理。日记可以在chrome://device-log(GET参数“refresh = 1”异常有效)中查看。
浏览器将每个USB设备存储在本身的设备存储器中。WebUSB的可拜访性由本机驱动法度榜样支撑所决定。在Windows上,我们可以经由过程浏览器拜访由WinUSB驱动法度榜样处理的每个USB设备。其他的诸如安闲量存储设备,收集摄像头或HID等就无法经由过程收集拜访了,因为它们具有处理这些设备的专用驱动法度榜样。
根据规范(和本博客文┞仿),一旦设备注册,浏览器就会显示一条通知。看起来像如许:
然则,这种行动不轻易重现。我们在以下体系上测验测验过:
沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散!
- Windows 7, Chrome 61
- Windows 10, Chrome 61
- Debian, Chromium 60 (启用了chrome://flags/#enable-experimental-web-platform-features)
- Debian, Google Chrome 61
- Arch Linux, Chromium 61
- Arch Linux, Google Chrome 61
Platform Descriptor中有一个有趣的元素叫做“iLandingPage”。即使规范将协定“http://”和“https://”作为前缀,我们也可以选择一个空协定,在这种情况下,我们应当可以在供给的URL本身中指定协定。
然则,Chrome已移除或根本没有实现注入随便率性URL前缀的功能。以下是源文件中名为“webusb_descriptors.cc”的代码片段。它解析接收到的描述头,包含“iLandingPage”。将URL前缀限制为“http://”和“https://”。
- // Look up the URL prefix and append the rest of the data in the descriptor.
- std::string url;
- switch (bytes[2]) {
- case 0:
- url.append("http://");
- break;
- case 1:
- url.append("https://");
- break;
- default:
- return false;
- }
- url.append(reinterpret_cast<const char*>(bytes.data() + 3), length - 3);
推荐阅读
沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散! 追溯中国互联网的成长史,可能要大年夜1987年9月20日钱天白传授发出的第一封E-mail开端。事实证实,这二十余>>>详细阅读
本文标题:一个网页是如何从你的手机中盗窃数据的
地址:http://www.17bianji.com/lsqh/38020.html
1/2 1