万能车钥匙钥匙

(您的评论需要经过审核才能显示,请文明发言!)&&剩余字数:
点击图片更换
WiFi万能钥匙电脑版 v2.0.8.0 官方pc版
建议使用以上版本或、Firefox浏览器访问本站,获得更好的用户体验。WiFi万能钥匙蹭网原理详细剖析 | WooYun知识库
WiFi万能钥匙蹭网原理详细剖析
0x00 wifi万能钥匙究竟有没有获取root之后偷偷上传密码?
本次测试版本号为3.2.3,首先通过可疑shell语句定位到疑问的问题代码:类名com.snda.wifilocating.f.ba
这段代码的作用是在有了root权限的情况下 将系统的wifi.conf拷贝出来到应用自己的目录,并赋予其全局可读写权限(其实这是个漏洞了...)。
对其做cross-ref查找引用之后可以发现,该函数主要在两个地方被直接调用。一个是com.snda.wifilocating.e.av:
这是一个api接口,主要功能是用于用户注册了之后备份自己的ap密码,同时在 WpaConfUploadActivity直接调用、GetBackupActivity中间接调用。第一个Activity在分析的版本中已经被从AndroidManifest中删除,而第二个Activity则是用户备份私有wifi时的对应的界面。这证实了备份的时候密码确实会被上传,而且从下文来看这个密码是完全可逆的。
不过在使用过程中,该应用并没有其他可疑的root行为操作。笔者打开了SuperSu的root执行监控,短暂的使用过程中也只发现了执行了上述的这一条命令。
0x01 Android系统Wifi连接API概述
Android系统通过WifiManager类来提供对Wifi的扫描、连接接口。应用在请求相应权限之后可以扫描、连接、断开无线等。在连接无线功能中,客户端基本上只要指定SSID,Pre-shared-key(即密码),就可以用代码的方式连接无线。连接一个WPA(2)无线典型代码如下,
wifiConfiguration.SSID = "\"" + networkSSID + "\"";
wifiConfiguration.preSharedKey = "\"" + networkPass + "\"";
wifiConfiguration.hiddenSSID =
wifiConfiguration.status = WifiConfiguration.Status.ENABLED;
wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
wifiConfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
wifiConfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
wifiConfiguration.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
wifiConfiguration.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
int res = wifiManager.addNetwork(wifiConfiguration);
Log.d(TAG, "### add Network returned " + res);
0x02 wifi万能钥匙是怎么连接上无线的,密码从哪里来?
这也是争议较大的地方,首先该应用肯定是有云端存储了很多密码,因为应用会引导用户备份自己的密码,但这些密码有没有被滥用我们在客户端就不得而知了。在2月底的这次测试中,笔者先私有备份了自己建立的测试无线(注意不是分享),然后使用另外一个手机安装该客户端测试,该客户端的API请求接口并没有返回这个测试的无线的密码。不过这也可能只是个例说明不了什么,还是建议各位自行测试,但注意测试前清除保存的无线并给测试无线设定一个弱密码以免真的泄露了自己的密码。
无线密码获取分析
回到正题,笔者通过代理拦截到了该应用获取wifi密码的请求。应用发送目标的ssid,mac信息向云端做查询,获取到的密码到本地之后并不是明文的,而是一个AES加密。首先为了证明其在本地最终还是会以明文出现,先取了个巧,没有去逆这个算法(虽然逆下也不会很困难),而是直接hook了系统添加无线的代码(回忆上文里密码就在NetworkConfiguration.preSharedKey里)。
部分HOOK代码:
Class wifimgr = XposedHelpers.findClass(
"android.net.wifi.WifiManager",
lpparam.classLoader);
XposedBridge.hookAllMethods(wifimgr, "addNetwork",
new XC_MethodHook() {
protected void beforeHookedMethod(MethodHookParam param)
throws Throwable {
WifiConfiguration configuration = (WifiConfiguration) param.args[0];
if(configuration.preSharedKey != null)
Log.e("FUCKFUCK", "psk: "+configuration.preSharedKey);
XposedBridge.hookAllMethods(wifimgr, "updateNetwork",
new XC_MethodHook() {
protected void beforeHookedMethod(MethodHookParam param)
throws Throwable {
WifiConfiguration configuration = (WifiConfiguration) param.args[0];
if(configuration.preSharedKey != null)
Log.e("FUCKFUCK", "psk: "+configuration.preSharedKey);
这是一个万能钥匙上传wifi ssid以及mac以请求密码的截图:
响应截图:
密码以AES可逆加密的形式通过pwd这个json key传递了回来。
同时,在其尝试通过这个密码连接目标无线的时候,本地hook模块也获取到了真实的明文密码:
个人备份分析
而个人备份模块,也就是直接会读取wifi.conf的模块,是通过findprivateap和saveprivateap这两个json api method进行,具体的http请求逻辑在com.snda.wifilocating.e.av中可以找到,这个类也基本上囊括了所有万能钥匙的api请求逻辑。
备份时的请求:把整个wifi.conf全部上传了上去。
而恢复备份时,只是将密码从云端拖了下来。
其他连接方式分析
除此之外,Wifi万能钥匙还自带了2000条的数据库记录在ap8.db中,记录了常见的弱密码。
这些密码用在所谓的“深度连接”功能中,其实按代码逻辑来看就是一个wifi密码爆破,每次在字典中尝试10个密码。看下logcat就很明显。
I/wpa_supplicant( 884): wlan0: WPA: 4-Way Handshake failed - pre-shared key may be incorrect
I/wpa_supplicant( 884): wlan0: CTRL-EVENT-SSID-TEMP-DISABLED id=1 ssid="aaaaaaaaa" auth_failures=2 duration=20
D/SupplicantStateTracker( 818): Failed to authenticate, disabling network 1
I/wpa_supplicant( 884): wlan0: CTRL-EVENT-SSID-REENABLED id=1 ssid="aaaaaaaaa"
I/wpa_supplicant( 884): wlan0: Trying to associate with 5c:a4:8a:4d:09:a0 (SSID='aaaaaaaaa' freq=2412 MHz)
I/wpa_supplicant( 884): wlan0: Associated with 5c:a4:8a:4d:09:a0
I/wpa_supplicant( 884): wlan0: CTRL-EVENT-DISCONNECTED bssid=5c:a4:8a:4d:09:a0 reason=23
I/wpa_supplicant( 884): wlan0: CTRL-EVENT-SSID-TEMP-DISABLED id=1 ssid="aaaaaaaaa" auth_failures=1 duration=10
I/wpa_supplicant( 884): wlan0: WPA: 4-Way Handshake failed - pre-shared key may be incorrect
I/wpa_supplicant( 884): wlan0: CTRL-EVENT-SSID-TEMP-DISABLED id=1 ssid="aaaaaaaaa" auth_failures=2 duration=20
I/wpa_supplicant( 884): wlan0: CTRL-EVENT-SSID-REENABLED id=1 ssid="aaaaaaaaa"
I/wpa_supplicant( 884): wlan0: Trying to associate with 5e:aa:aa:aa:aa:aa (SSID='aaaaaaaaa' freq=2462 MHz)
I/wpa_supplicant( 884): wlan0: Associated with 5e:aa:aa:aa:aa:aa
D/dalvikvm(13893): GC_CONCURRENT freed 356K, 4% free 1K, paused 9ms+2ms, total 29ms
I/wpa_supplicant( 884): wlan0: CTRL-EVENT-DISCONNECTED bssid=5e:aa:aa:aa:aa:aa reason=23
I/wpa_supplicant( 884): wlan0: CTRL-EVENT-SSID-TEMP-DISABLED id=1 ssid="aaaaaaaaa" auth_failures=1 duration=10
I/wpa_supplicant( 884): wlan0: WPA: 4-Way Handshake failed - pre-shared key may be incorrect
I/wpa_supplicant( 884): wlan0: CTRL-EVENT-SSID-TEMP-DISABLED id=1 ssid="aaaaaaaaa" auth_failures=2 duration=20
Wifi密码加解密分析
当然真正去逆向加密代码也不是很困难,简单的搜寻即可得到解密代码:(部分直接从反编译的代码中抠出,风格未做修饰)
public class AESFun {
String a =//略去;
String b = //略去;
String c = //略去;
IvParameterS
SecretKeySpec secretKeyS
void init() throws NoSuchAlgorithmException, NoSuchPaddingException {
spec = new IvParameterSpec(b.getBytes());
secretKeySpec = new SecretKeySpec(a.getBytes(), "AES");
cipher = Cipher.getInstance("AES/CBC/NoPadding");
public final String b(String arg7) throws Exception {
byte[] array_b1;
byte[] array_b =
int i = 2;
String string =
this.cipher.init(2, secretKeySpec, spec);
Cipher cipher = this.
if(arg7 != null && arg7.length() &= i) {
int i1 = arg7.length() / 2;
array_b = new byte[i1];
for(i2 = 0; i2 & i1; ++i2) {
String string1 = arg7.substring(i2 * 2, i2 * 2 + 2);
array_b[i2] = ((byte)Integer.parseInt(string1, 0x10));
array_b1 = cipher.doFinal(array_b);
catch(Exception exception) {
StringBuilder stringBuilder = new StringBuilder("[decrypt] ");
string = exception.getMessage();
StringBuilder stringBuilder1 = stringBuilder.append(string);
string = stringBuilder1.toString();
exception.printStackTrace();
throw new Exception(string);
string = new String(array_b1);
将API请求中获取的16进制pwd字段代入解密程序,得到的结果是如下格式:[length][password][timestamp]的格式,如下图所示,中间就是目标无线明文密码。
此外接口请求中有一个sign字段是加签,事实上是把请求参数合并在一起与预置的key做了个md5,细节就不赘述了。这两个清楚了之后其实完全可以利用这个接口实现一个自己的Wifi钥匙了。
此版本的WiFi万能钥匙不会主动把root之后手机保存的无线密码发向云端但在做备份操作(安装时默认勾选自动备份)时会发送,当有足够的用户使用该应用时,云端就拥有了一个庞大的WiFi数据库,查询WiFi的密码时,应用会发送目标的ssid,mac信息向云端做查询,获取到的密码到本地之后并不是明文的,而是一个AES加密,本地解密后连接目标WiFi。同时内置了常见的2000条WiFi弱口令,在云端没有该WiFi密码的时候,可以尝试爆破目标的密码。
&乌云知识库版权所有 未经许可 禁止转载
为您推荐了适合您的技术文章:
@horseluke Android的java字节还用框架破解?不是明摆着就能反编译吗?
跪求 2000条弱密码
我需要你省略的a、b、c 省略的java的代码啊,谢谢,
@蔡文胜 那到底怎么破呢?求帮助
2013年曾经简略分析过当时版本的“深度解锁/热点垦荒”,就有一个就有2000个本地密码彩虹表暴力破解,看来这么久了还是有保留。当时这个功能一度发展到“分布式”:“A用户解锁失败N次(15?45?)后上传状态,由下一位触发此热点解锁的用户接着解锁”。不知道现在还是不是这样。
附2013年软件附赠的弱密码记录“ap7”:/s/rsz5nf_lGUV
。不知道和作者的“ap8”有什么区别?
还有,求问作者使用什么做hook来分析app的?Xposed框架?
明白了,居然做邪恶的事情,哈哈,不过福利很大啊
么看懂……再学学。
只不过说这个过程中,App&-&云端的传输过程密码都是密文加密,但按文章所描述的通过反编译代码也是能破解的。
请大家尽量看完全文,不要只看开头几段文字。
我对本文的理解是:
第一,路人甲并没有使用该版本App的分享功能;
第二,App安装后默认勾选了“自动备份”功能;
第三,当App做备份操作时,将用户安装此款App之后输入过的WIFI密码,以及系统的wifi.conf文件中的WIFI密码,均上传到云端;
第四,当其他用户的设备扫到相应WIFI的SSID时,App会把SSID发到云端查询密码,如果云端没有密码,则用字典猜密码。
拜读了。好多概念看不懂回头再查。。。
我的一个亲戚发觉被蹭网了之后果断换了一个20多位的密码233
我昨天发的回复,不吃掉了!
我只是反驳了某水军的扮傻洗地,就被删掉了???
这个论坛有鬼???
刚开始,大家设的密码都很简单,可以破解的。直到发觉被蹭了,才会改密码的,密码都是先从简单到复杂的。
我只想问下该应用在最初推向市场的时候,第一批密码数据从什么地方获得,建议楼主对初始版本进行分析。
尼玛,这里都能被水军攻陷。。
你看原文了么?
这么说基本上网上传闻都是黑的。那我就放心了,wifi万能钥匙其实算是个好产品!
这没什么好呵呵的呀,你看代码里com.snda就知道是盛大的了,而且本身老板是陈大年,盛大二老板,这没什么槽点。
原来这个叫:盛大果壳wifi万能钥匙项目.
买了个表的
看他这个加密的过程相当熟悉。
再一看网页
看了一下这个联系信息:
/aboutus.html
跳盛大去了。
还有这个联系地址就是盛大的。
或者说从3.2.3版本来说,没有观察到明显的涉嫌未授权上传的代码和行为。
受观察时间所限,准确的说法是说没有发现明显的偷传行为。
楼主,我能不能理解一下你的分析结果,你是不是说,wifi万能钥匙本身没有偷密码之类的行为,只是在赋予文件权限这里有一个安全隐患?
正巧最近也在研究这个。
希望drops文章能详细点。
抢个沙发坐,感谢楼主的分析!
感谢知乎授权页面模版《万能钥匙》.txt
扫描二维码,下载文件到手机
发送给微博、QQ、MSN等好友吧
当前文件信息
浏览:1393次
保存:37次
下载:299次
您的VIP会员已过期,是否续费?
用户应遵守著作权法,尊重著作权人合法权益,不违法上传、存储并分享他人作品。举报邮箱:
京网文[0号 京ICP证100780号万能钥匙 The Skeleton Key
万能钥匙的预告片和图片
······
喜欢这部电影的人也喜欢
······
评论被折叠,是因为发布这条评论的帐号行为异常。评论仍可以被展开阅读,对发布人的账号不造成其他影响。如果认为有问题,可以豆瓣电影。
关于《万能钥匙》的问题
· · · · · ·
万能钥匙的影评
······
在看这部电影中时,有一个镜头经常被人忽略,却实质已经揭露了这恐怖的魔咒。
有没有注意到,女主角在为班(中风老人)驱鬼,拿了一碗水,洒在他身边的镜头时,老人流泪了!!!
一开始,我不明白老人为什么流泪,以为是感动女主角为她做的一切!看完整部电影才明白:老人看到女主角用巫术为他治病,说明她已经开始相信这巫术!!!!老人也看到女主角想他一样悲惨的命运,............
1.老女人刚开始对caroline十分不满,与律师的交谈无不透露着嗔怪的语气,原因是caroline不是黑人。上一个护士是黑人,却跑掉了。
2.caroline刚搬进去的时候,老女人问了她几个问题,其中有一个是,“你身上没有纹身吧?”。
3.caroline和律师在房间里面交谈,被老女人发现,老女人用极度不爽的语气调侃了律师。律师说了一句话 “你永远是我的唯一”之类的。
4.进瞎眼婆婆的............
799/916&有用
你会发现 如影片所讲述的一样 说不定你的生活已经掉进一个你 亲手圈出来的 巫术里面 而到最后你却只能哑口无言 因此请你跳出来 活着 认真但不要固执 ......
438/493&有用
昨晚臨晨看的這部電影 看到最後十幾分鐘的時候,宿舍的其他人都睡覺了 剩我一個人在黑暗中看,還真是很怕 看完以後趕緊上床,不過花了好久才睡著,因為一直在想劇情,不由自主的 好,下面來講劇情
女主角 Luke
律师 Violet
老太太 Ben
老头 Cynthia
女巫师 Justify
男巫师 Martin
银行家的儿子 Grace
银行家的女儿 Thorpe
明线大家............
242/266&有用
刚看完,又看了一遍,这下看出之前好多的铺垫!!!
1,卡洛琳第一次到老房子应聘的时候,先遇到律师,律师文件掉到地上,卡洛琳帮他,两人还说笑,老太一回头看到了。后来律师介绍老太,老太看了律师一眼一句话都不说,转身就走了。就是生气了,律师马上用手拉了一下老太的胳膊,也是很亲密的感觉。
2,律师说老太观念很传统,是啊90年前的人啊,那时观念多传统。
3,老太............
232/239&有用
{{for playlist}}
在哪儿看这部电影
······
租借 3 元 / 购买 12 元
以下豆列推荐
······
(中间元素)
(鸟人与鱼)
谁在看这部电影
······
订阅万能钥匙的评论:
& 2005-, all rights reserved 北京豆网科技有限公司}

我要回帖

更多关于 万能汽车钥匙 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信