新浪微博模拟登陆passwd参数rsa解密

该文章主要提供交流学习使用,请勿利用其进行不当行为!
如本篇文章侵犯了贵公司的隐私,请联系我立刻删除!

个人博客:http://www.feastawlisao.com/
欢迎关注个人公众号:pythonORjs

今天我们来研究一下新浪微博的参数加密,也来做一下模拟登陆,今天全方位详细讲解撒。
这里我们登陆的网址为https://login.sina.com.cn/signup/signin.php,因为新浪的账号各个板块是互通的,登录后获取cookie就能访问新浪微博了,至于抓包工具,这里就暂时用不到了,推荐用charles,因为市面上流行的都是Fiddler,我感觉不太顺手,个人喜好哈,进入正题。
这里我们打开开发者工具,然后输入账号,密码,密码先输入错误的,,方便我们更好的抓包。
在这里插入图片描述
这里我们可以看到,返回两个url,我们先研究第一个url。参数里各种莫名其妙的东西,无大碍,那我们就先研究一下,entry,callback,rsakt,client,当前都是固定的,_是时间戳,su是什么呢,我们看一下,可能对于经常玩js的人一眼就看出来了,su参数是base64编码。
在这里插入图片描述
这里就不在搜索su参数在js里面怎么实现的了,因为这个参数太多了,这里直接贴出来js代码。
在这里插入图片描述
su参数知道怎么生成后,我们用python代码进行get请求,如下,我们返回的参数都先取出来,以备后续使用。为什么我没取出来完,啊哈哈哈哈,因为我已经知道哪些有用了。。
在这里插入图片描述
接着我们看下面请求的url,分析它的参数,然后一看一大堆参数,不要慌,问题不大,慌也没用,我们分析一波,此处讲重要的参数,su参数不就是我们的用户名,然后base64的结果,servertime还记得吗??上一个url返回的参数,nonce,rsaku也是如此。sp参数就是密码,经过了一系列的加密,perlt是随机生成的数字。好了,分析完,那我们找sp参数的生成过程吧。
在这里插入图片描述
这里有一个坑,因为,这里有一个参数,pwencode=rsa2,告诉我们密码是rsa加密生成的,然后再看前面返回的publickey值,刚好符合rsa的加密规则,然后就用python写rsa直接加密,然后发现,凉凉,还是错的,为什么呢,听我一一道来,哈哈哈哈哈哈哈哈。

接下来我们开始搜索参数,然后发现,sp参数多的超乎我们的想象,,,太多了。
在这里插入图片描述
这里可以这样搜,因为加密的是密码,我们可以搜password,passwd,pwd等等,也可以搜密码输入框的id标签,或者class标签。
在这里插入图片描述
此处我们搜索发现,在ssologin.js里面发现可疑的地方。password=rsa,nonce,servertime等等参数,那我们就试一下。
在这里插入图片描述
在这里有个if判断语句,注意一下。
在这里插入图片描述
我们开始下上断点,开始调试,下完断点后,点击登陆按钮。
在这里插入图片描述
然后程序会断下来,等待下一步操作。具体操作可搜索谷歌调试。
在这里插入图片描述
然后一步一步执行,看到rsaPubkeys,这个key是不是很眼熟呀,就是第一个请求url返回的pubkey,关于rsa加密的原理可自行百度。
在这里插入图片描述
我们接着往下调试,password 生成原理就是, encrypt函数里面传入三个参数,如下图,servertime,nonce字符串相加,中间由空格\t隔开,然后加上\n换行,再加上原始的password,就是没加密之前的密码。
在这里插入图片描述
此处只用python语言实现,如需js实现,可留言。因为python实现rsa加密有多种方法,此处只演示一种。有人说,为什么和我第一次加密的结果不一样,因为rsa是一直都在变化的,具体搜索rsa加密原理。
在这里插入图片描述
此处请特别注意,有两点。

1.post提交参数的时候,浏览器是没有url这个参数的,提交必须加上,要不然无法完成二次验证。

微博有二次验证,注意,注意,特别注意,别以为post成功后就能获取cookie登陆了,需要二次验证。

data全部参数如下:

    data = {
        'entry': 'account',
        'gateway': '1',
        'from': 'null',
        'savestate': '30',
        'useticket': '0',
        'pagerefer': '',
        'vsnf': '1',
        'su': su,
        'service': 'account',
        'servertime': servertime,
        'nonce': nonce,
        'pwencode': 'rsa2',
        'rsakv': rsakv,
        'sp': sp,
        'sr': '1920*1080',
        'encoding': 'UTF-8',
        'cdult': '3',
        'domain': 'sina.com.cn',
        'prelt': random.randint(1, 100),
        'url': 'https://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack',
        'returntype': 'TEXT',
        'door': '',  # 验证码,小号需要填写,,,小号还需要二次点触验证
    }

必须添加url这个参数,要不然无法返回,ticket参数,请注意。
在这里插入图片描述
二次验证所需要的参数如下,ticket参数就是上一步提交post返回的参数,ssosavestate,生成方式在js里面,,但是根据实验,可以写成任意时间戳。_是时间戳。然后提交请求
在这里插入图片描述
提交成功后,获取其cookie就行了,然后携带cookie进行访问数据。
在这里插入图片描述
然后你就会发现一个更重要的问题,就是,成功了,
在这里插入图片描述
本次分享到处结束,,如需需要js代码,或者python完整代码,请留言!谢谢!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值