├── .gitignore ├── .idea └── vcs.xml ├── 英领 ├── .idea │ ├── misc.xml │ ├── modules.xml │ ├── 英领.iml │ └── workspace.xml └── linkedin.py ├── 网易云评论请求加密2018-12-12 ├── wangyicomment.py └── js.txt ├── 微信公众号登陆加密 ├── login.py └── js.txt ├── README.md ├── 京东登陆 └── login.py ├── 京东2018-12-13 └── login.py ├── 腾讯企鹅媒体登陆2018-12-8 ├── login-om.qq.com.py └── js.txt └── 新浪微博登陆2018-12-11 ├── sinalogin.py └── js.txt /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /英领/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /英领/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /英领/.idea/英领.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 11 | -------------------------------------------------------------------------------- /网易云评论请求加密2018-12-12/wangyicomment.py: -------------------------------------------------------------------------------- 1 | # -*- coding:utf-8 -*- 2 | import execjs 3 | 4 | with open("./js.txt", 'r', encoding='utf-8') as f: # 打开JS文件 5 | line = f.readline() 6 | htmlstr = '' 7 | while line: 8 | htmlstr = htmlstr + line 9 | line = f.readline() 10 | jsstr = htmlstr 11 | ctx = execjs.compile(jsstr) # 加载JS文件 12 | a = '"{"rid":"R_SO_4_371362","offset":"160","total":"false","limit":"20",' \ 13 | '"csrf_token":"de097d5986487c4aefe9f52c65e43224"}"}' 14 | b = "010001" 15 | c = "00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17" \ 16 | "a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114" \ 17 | "af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef5" \ 18 | "2741d546b8e289dc6935b3ece0462db0a22b8e7" 19 | d = "0CoJUm6Qyw8W8jud" 20 | sp = ctx.call( 21 | "getdata", a, b, c, d) 22 | 23 | 24 | -------------------------------------------------------------------------------- /微信公众号登陆加密/login.py: -------------------------------------------------------------------------------- 1 | # -*- coding:utf-8 -*- 2 | 3 | import requests 4 | import execjs 5 | 6 | 7 | with open("./js.txt", 'r', encoding='utf-8') as f: # 打开JS文件 8 | line = f.readline() 9 | htmlstr = '' 10 | while line: 11 | htmlstr = htmlstr + line 12 | line = f.readline() 13 | jsstr = htmlstr 14 | ctx = execjs.compile(jsstr) # 加载JS文件 15 | 16 | 17 | def getpwd(pwd): 18 | password = ctx.call("getpwd", pwd) 19 | return password 20 | 21 | 22 | def login(email, pwd): 23 | session = requests.Session() 24 | url = "https://mp.weixin.qq.com/cgi-bin/bizlogin?action=startlogin" 25 | password = getpwd(pwd) 26 | data = { 27 | "username": email, 28 | "pwd": password, 29 | "imgcode": "", 30 | "f": "json", 31 | "userlang": "zh_CN", 32 | "redirect_url": "", 33 | "token": "", 34 | "lang": "zh_CN", 35 | "ajax": "1" 36 | } 37 | rp = session.post(url, data=data) 38 | 39 | 40 | if __name__ == '__main__': 41 | login("2551513277@qq.com", "666666") 42 | 43 | 44 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Python-Crypto 2 | 记录平时做js加密解密算法 3 | --- 4 | ## 新浪微博登陆 5 | 测试的是手机号可以正常登陆,还没遇到验证码问题,后面遇上再加
6 | post请求之后会被重定向两次才能得到登陆用户信息,发送post请求后还需要正则匹配两次重定向url
7 | 注意请求返回的编码格式post请求后返回编码是GBK,后面还会返回GB2312 8 | ### 加密方式:RSA(非对称加密方式) 9 | 登录前先get请求返回携带有token、pubkey、raskv、servertime等信息的dict字符串,包含在js中需要提取转换 10 | 需要破解的参数是su和sp,sp是密码
11 | su:是通过封装了RSA源码的一个对象sinaSSOEncoder的base64编码用户名得到的
12 | sp:加密的密码,通过创建sinaSSOEncoder加密对象,公钥是上面返回的pubkey,偏移量"10001" 13 | 加密内容是servertime + "\t" + nonce + "\n" + pw 14 | servertime:上面get请求返回的 15 | nonce:上面get请求返回的 16 | pw:输入的密码 17 | ## 腾讯企鹅媒体 18 | 测试的是邮箱登陆,无验证码问题,因为账号问题可能在登陆后被重定向到身份验证页面 19 | 注意在post请求时需要带上cookie,并且cookie中有个参数是登录前Ajax get请求的含有token信息的返回cookie 20 | ### 加密方式:MD5双重加密(信息摘要算法或签名算法) 21 | 登录前后台会get请求一次,返回含有token和salf等加密参数信息以及一个cookie,该cookie要加在post的请求中 22 | 加密形式:MD5(token + MD5(salt + pwd))双重加密 23 | ## 网易云获取评论请求参数加密 24 | 测试是无登陆状态下的请求加密,无登陆状态下csrf_token参数为空,在同一ip过度请求下降不会返回数据;在登陆状态下请求的url和未登录状态下的url是不一样的 25 | ### 加密方式AES+RSA 26 | 评论请求加密参数是两个:params、encSecKey,传入加密函数的参数是a,b,c,d+内部随机生成的16位参数i 27 | 其中a='"{"rid":"R_SO_4_371362","offset":"160","total":"false","limit":"20","csrf_token":"de097d5986487c4aefe9f52c65e43224"}"}'形式参数 28 | rid:歌曲id; 29 | offset:歌词页数计算公式(n-1)*20; 30 | total:在第一页是TRUE在其他是false; 31 | csrf_token:在登陆成功后再返回的cookie中可以找到,未登录时是空。 32 | b、c、d是固定的参数,由js内部定义的文字编码转码并并且得到的类似于 33 | {"色":"00e0b","流感":"509f6","这边":"259df","弱":"8642d","嘴 唇":"bc356","亲":"62901","开心":"477df"}-->色+嘴唇="00e0bbc356" 34 | bcd当做固定参数传入 35 | 其中内部随便变量i可以写死,那么encSecKey参数都是由固定参数生成的,可以当做固定参数使用 36 | params根据页数和歌曲参数的不同是变化的 37 | params:是内部方法AES CBC模式 38 | encSecKey:RSA加密 39 | ## 微信公众号密码加密 40 | 只分析了微信公众号登陆请求的post密码加密 41 | ### 加密方式MD5 42 | 加密方式比较简单,取密码的前16位进行MD5加密 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /京东登陆/login.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import execjs 3 | from lxml import etree 4 | 5 | URL = "https://passport.jd.com/new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F%3Fcu%3Dtrue%26utm_source%3Dbaidu" \ 6 | "-pinzhuan%26utm_medium%3Dcpc%26utm_campaign%3Dt_288551095_baidupinzhuan%26utm_term%3D0f3d30c8dba7459bb52f2eb5eb" \ 7 | "a8ac7d_0_b4ece126b50f487280968f8ddba60aa8" 8 | 9 | session = requests.Session() 10 | with open("./js.txt", 'r', encoding='utf-8') as f: # 打开JS文件 11 | line = f.readline() 12 | htmlstr = '' 13 | while line: 14 | htmlstr = htmlstr + line 15 | line = f.readline() 16 | jsstr = htmlstr 17 | ctx = execjs.compile(jsstr) # 加载JS文件 18 | 19 | 20 | def getform(phone, pwd): 21 | response = session.get(URL) 22 | rp = etree.HTML(response.text) 23 | sa_token = rp.xpath('//input[@id="sa_token"]/@value')[0] 24 | uuid = rp.xpath('//input[@id="uuid"]/@value')[0] 25 | eid = rp.xpath('//input[@id="eid"]/@value')[0] 26 | sessionId = rp.xpath('//input[@id="sessionId"]/@value')[0] 27 | token = rp.xpath('//input[@id="token"]/@value')[0] 28 | loginType = rp.xpath('//input[@id="loginType"]/@value')[0] 29 | pubKey = rp.xpath('//input[@id="pubKey"]/@value')[0] 30 | slideAppId = rp.xpath('//input[@id="slideAppId"]/@value')[0] 31 | useSlideAuthCode = rp.xpath('//input[@id="useSlideAuthCode"]/@value')[0] 32 | loginname = phone 33 | pwd = ctx.call("getEntryptPwd", pubKey, pwd) 34 | seqSid = "271726271731661547" 35 | authcode = None # 服务器返回的时间戳,还需单独请求 36 | data = { 37 | "uuid": uuid, 38 | "eid": eid, 39 | "fp": sessionId, 40 | "_t": token, 41 | "loginType": loginType, 42 | "loginname": loginname, 43 | "nloginpwd": pwd, 44 | "authcode": authcode, 45 | "pubKey": pubKey, 46 | "sa_token": sa_token, 47 | "seqSid": seqSid, 48 | "useSlideAuthCode": useSlideAuthCode 49 | } 50 | return data 51 | 52 | 53 | if __name__ == '__main__': 54 | getform(18328496803, 666666) -------------------------------------------------------------------------------- /京东2018-12-13/login.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import execjs 3 | from lxml import etree 4 | 5 | URL = "https://passport.jd.com/new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F%3Fcu%3Dtrue%26utm_source%3Dbaidu" \ 6 | "-pinzhuan%26utm_medium%3Dcpc%26utm_campaign%3Dt_288551095_baidupinzhuan%26utm_term%3D0f3d30c8dba7459bb52f2eb5eb" \ 7 | "a8ac7d_0_b4ece126b50f487280968f8ddba60aa8" 8 | 9 | session = requests.Session() 10 | with open("./js.txt", 'r', encoding='utf-8') as f: # 打开JS文件 11 | line = f.readline() 12 | htmlstr = '' 13 | while line: 14 | htmlstr = htmlstr + line 15 | line = f.readline() 16 | jsstr = htmlstr 17 | ctx = execjs.compile(jsstr) # 加载JS文件 18 | 19 | 20 | def getform(phone, pwd): 21 | response = session.get(URL) 22 | rp = etree.HTML(response.text) 23 | sa_token = rp.xpath('//input[@id="sa_token"]/@value')[0] 24 | uuid = rp.xpath('//input[@id="uuid"]/@value')[0] 25 | eid = rp.xpath('//input[@id="eid"]/@value')[0] 26 | sessionId = rp.xpath('//input[@id="sessionId"]/@value')[0] 27 | token = rp.xpath('//input[@id="token"]/@value')[0] 28 | loginType = rp.xpath('//input[@id="loginType"]/@value')[0] 29 | pubKey = rp.xpath('//input[@id="pubKey"]/@value')[0] 30 | slideAppId = rp.xpath('//input[@id="slideAppId"]/@value')[0] 31 | useSlideAuthCode = rp.xpath('//input[@id="useSlideAuthCode"]/@value')[0] 32 | loginname = phone 33 | pwd = ctx.call("getEntryptPwd", pubKey, pwd) 34 | seqSid = "271726271731661547" 35 | authcode = None # 服务器返回的时间戳,还需单独请求 36 | data = { 37 | "uuid": uuid, 38 | "eid": eid, 39 | "fp": sessionId, 40 | "_t": token, 41 | "loginType": loginType, 42 | "loginname": loginname, 43 | "nloginpwd": pwd, 44 | "authcode": authcode, 45 | "pubKey": pubKey, 46 | "sa_token": sa_token, 47 | "seqSid": seqSid, 48 | "useSlideAuthCode": useSlideAuthCode 49 | } 50 | return data 51 | 52 | 53 | if __name__ == '__main__': 54 | getform(18328496803, 666666) -------------------------------------------------------------------------------- /英领/linkedin.py: -------------------------------------------------------------------------------- 1 | # --*- coding:utf-8 -*- 2 | 3 | import requests 4 | from lxml import etree 5 | 6 | session = requests.Session() 7 | 8 | 9 | def login(name, password): 10 | session.headers = {"accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", 11 | "accept-encoding": "gzip, deflate, br", 12 | "accept-language": "zh-CN,zh;q=0.9,en;q=0.8", 13 | "upgrade-insecure-requests": "1", 14 | "user-agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 " 15 | "(KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", 16 | } 17 | url = 'https://www.linkedin.com/' 18 | login_url = 'https://www.linkedin.com/uas/login-submit?' \ 19 | 'loginSubmitSource=GUEST_HOME' 20 | page = session.get(url) 21 | rp = etree.HTML(page.text) 22 | loginCsrfParam = rp.xpath('//*[@name="loginCsrfParam"]/@value')[0] 23 | 24 | form_data = { 25 | 'session_key': name, 26 | 'session_password': password, 27 | 'loginCsrfParam': loginCsrfParam, 28 | 'isJsEnabled': 'false' 29 | } 30 | page_login = session.post(login_url, data=form_data 31 | ) 32 | 33 | login_rp = etree.HTML(page_login.text) 34 | verify_url = 'https://www.linkedin.com/checkpoint/challenge/verify' 35 | csrfToken = login_rp.xpath('//*[@name="csrfToken"]/@value')[0] 36 | pageInstance = login_rp.xpath('//*[@name="pageInstance"]/@value')[0] 37 | resendUrl = login_rp.xpath('//*[@name="resendUrl"]/@value')[0] 38 | challengeId = login_rp.xpath('//*[@name="challengeId"]/@value')[0] 39 | language = 'zh-CN' 40 | displayTime = login_rp.xpath('//*[@name="displayTime"]/@value')[0] 41 | challengeSource = login_rp.xpath('//*[@name="challengeSource"]/@value')[0] 42 | requestSubmissionId = login_rp.xpath('//*[@name="requestSubmissionId"]/@value')[0] 43 | challengeType = login_rp.xpath('//*[@name="challengeType"]/@value')[0] 44 | challengeData = login_rp.xpath('//*[@name="challengeData"]/@value')[0] 45 | failureRedirectUri = login_rp.xpath('//*[@name="failureRedirectUri"]/@value')[0] 46 | pin = input('请输入验证码') 47 | verify_data = { 48 | 'csrfToken': csrfToken, 49 | 'pageInstance': pageInstance, 50 | 'resendUrl': resendUrl, 51 | 'challengeId': challengeId, 52 | 'language': language, 53 | 'displayTime': displayTime, 54 | 'challengeSource': challengeSource, 55 | 'requestSubmissionId': requestSubmissionId, 56 | 'challengeType': challengeType, 57 | 'challengeData': challengeData, 58 | 'failureRedirectUri': failureRedirectUri, 59 | 'pin': pin, 60 | } 61 | verify_post = session.post(verify_url, data=verify_data) 62 | 63 | 64 | if __name__ == '__main__': 65 | login('2551513277@qq.com', 'sdsdsdsd') -------------------------------------------------------------------------------- /腾讯企鹅媒体登陆2018-12-8/login-om.qq.com.py: -------------------------------------------------------------------------------- 1 | 2 | import requests 3 | from json import loads 4 | import execjs 5 | from urllib import parse 6 | 7 | 8 | def get_token(email): 9 | email = parse.quote(email) 10 | token_url = 'https://om.qq.com/userAuth/randomCode?email={}&relogin=1'.format(email) 11 | headers = { 12 | "accept": "application/json, text/javascript, */*; q=0.01", 13 | "accept-encoding": "gzip, deflate, br", 14 | "accept-language": "zh-CN,zh;q=0.9", 15 | "cookie": "RK=9XA4Hchh7C; ptcz=af27247c2cc54de7b15f949e041525c62102f66aae856e17adac1a7a41f93e21;" 16 | " cuid=2366632689; pgv_pvid=8300690180; pgv_pvi=5655952384; o_cookie=2551513277; " 17 | "tvfe_boss_uuid=3af2d5ef04df785f; ts_uid=1842616160; pt2gguin=o2551513277; " 18 | "ts_refer=www.baidu.com/link; fname=%E5%96%9C%E4%B9%90%E8%A7%81%E9%97%BB; " 19 | "fimgurl=http%3A%2F%2Finews.gtimg.com%2Fnewsapp_ls%2F0%2F655036856_200200%2F0; " 20 | "uin=o2551513277; ptisp=cm; pgv_si=s3134537728; TSID=ofu1fo74v126dtfhgtellnpb23; " 21 | "pgv_info=ssid=s8282530815; skey=@j0RBeBv05; ts_last=om.qq.com/userAuth/index", 22 | "referer": "https://om.qq.com/userAuth/index", 23 | "user-agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 " 24 | "(KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6788.400 QQBrowser/10.3.2767.400", 25 | "x-requested-with": "XMLHttpRequest" 26 | } 27 | 28 | tocker_data = requests.get(token_url, headers=headers) 29 | if tocker_data.status_code == 200: 30 | token = loads(tocker_data.text) 31 | return (token['data'], tocker_data.cookies['randomkey']) 32 | else: 33 | return False 34 | 35 | 36 | def login(email, pwd): 37 | log = requests.Session() 38 | login_url = 'https://om.qq.com/userAuth/SignIn?relogin=1' 39 | token, randomkey = get_token(email) 40 | headers = { 41 | "accept": "application/json, text/javascript, */*; q=0.01", 42 | "accept-encoding": "gzip, deflate, br", 43 | "accept-language": "zh-CN,zh;q=0.9", 44 | "content-length": "109", 45 | "content-type": "application/x-www-form-urlencoded; charset=UTF-8", 46 | "cookie": "RK=9XA4Hchh7C; ptcz=af27247c2cc54de7b15f949e041525c62102f66aae856e17adac1a7a41f93e21; " 47 | "cuid=2366632689; pgv_pvid=8300690180; pgv_pvi=5655952384; o_cookie=2551513277; " 48 | "tvfe_boss_uuid=3af2d5ef04df785f; ts_uid=1842616160; pt2gguin=o2551513277; " 49 | "ts_refer=www.baidu.com/link; fname=%E5%96%9C%E4%B9%90%E8%A7%81%E9%97%BB; " 50 | "fimgurl=http%3A%2F%2Finews.gtimg.com%2Fnewsapp_ls%2F0%2F655036856_200200%2F0; " 51 | "uin=o2551513277; ptisp=cm; pgv_si=s3134537728; TSID=ofu1fo74v126dtfhgtellnpb23; " 52 | "pgv_info=ssid=s8282530815; skey=@j0RBeBv05; ts_last=om.qq.com/userAuth/index; " 53 | "randomkey={}".format(randomkey), 54 | "origin": "https://om.qq.com", 55 | "referer": "https://om.qq.com/userAuth/index", 56 | "user-agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, " 57 | "like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6788.400 QQBrowser/10.3.2767.400", 58 | "x-requested-with": "XMLHttpRequest" 59 | } 60 | 61 | with open("./js.txt", 'r', encoding='utf-8') as f: # 打开JS文件 62 | line = f.readline() 63 | htmlstr = '' 64 | while line: 65 | htmlstr = htmlstr + line 66 | line = f.readline() 67 | jsstr = htmlstr 68 | ctx = execjs.compile(jsstr) # 加载JS文件 69 | pwd = ctx.call("getpwd", pwd, token['token'], token['salt']) 70 | loginresponse = log.post(login_url, data={'email': email, 'pwd': pwd, 'token': token['token']}, headers=headers) 71 | data = loads(loginresponse.text) 72 | 73 | '''test''' 74 | 75 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /新浪微博登陆2018-12-11/sinalogin.py: -------------------------------------------------------------------------------- 1 | # -*- coding:utf-8 -*- 2 | 3 | import requests 4 | from json import loads 5 | import re 6 | import execjs 7 | from urllib import parse 8 | 9 | with open("./js.txt", 'r', encoding='utf-8') as f: # 打开JS文件 10 | line = f.readline() 11 | htmlstr = '' 12 | while line: 13 | htmlstr = htmlstr + line 14 | line = f.readline() 15 | jsstr = htmlstr 16 | ctx = execjs.compile(jsstr) # 加载JS文件 17 | 18 | 19 | def getsu(iphone): 20 | """ 21 | 获取加密参数su 22 | :param iphone: 传入手机号 23 | :return: 24 | """ 25 | iphone = parse.quote(iphone) 26 | su = ctx.call("getsu", iphone) 27 | return su 28 | 29 | 30 | def getkey(iphone): 31 | """ 32 | 获取加密需要的时间戳、公钥等信息 33 | :param iphone: 34 | :return: json 35 | """ 36 | su = getsu(iphone) 37 | su_url = "https://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=" \ 38 | "sinaSSOController.preloginCallBack&su={}%3D&rsakt" \ 39 | "=mod&checkpin=1&client=ssologin.js(v1.4.19)&_=1544491300471".format(su) 40 | headers = { 41 | "Accept": "*/*", 42 | "Accept-Encoding": "gzip, deflate, br", 43 | "Accept-Language": "zh-CN,zh;q=0.9", 44 | "Connection": "keep-alive", 45 | "Cookie": "SINAGLOBAL=10.71.2.96_1537319283.25360; " 46 | "UOR=www.baidu.com,news.sina.com.cn,; " 47 | "SUB=_2AkMs_o_Sf8NxqwJRmfkVzWnma49-zgDEieKaon4JJRMyHR" 48 | "l-yD9kql4ttRB6B36hPXoG3Dc1joQANXyggWcwbJoRDfhG; " 49 | "SUBP=0033WrSXqPxfM72-Ws9jqgMF55529P9D9WhAxrOYgrYDalY30D0XuRdP;" 50 | " ULV=1541659821773:4:1:1::1540805170207; " 51 | "UM_distinctid=166f21629624c-036b343a4703ce-335e4b78-1fa400-166f216296327a; " 52 | "lxlrttp=1541383354; U_TRS1=00000057.2c29756.5c0601f9.ec750a9c;" 53 | " Apache=172.16.138.142_1544490894.221870", 54 | "Host": "login.sina.com.cn", 55 | "Referer": "https://www.weibo.com/", 56 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 " 57 | "(KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 " 58 | "Core/1.63.5603.400 QQBrowser/10.1.1775.400" 59 | } 60 | jsdata = requests.get(su_url, headers=headers) 61 | data = re.search('{.+}', jsdata.text).group() 62 | keys = loads(data) 63 | keys['su'] = su 64 | return keys 65 | 66 | 67 | def login(iphone, password): 68 | """ 69 | 登陆程序 70 | :param iphone: 71 | :param password: 72 | :return: 登陆成功则返回用户信息json格式 73 | """ 74 | keys = getkey(iphone) 75 | sp = ctx.call( 76 | "getsp", keys['pubkey'], keys['servertime'], keys['nonce'], password) 77 | data = { 78 | "entry": "weibo", 79 | "gateway": "1", 80 | "from": "", 81 | "savestate": "7", 82 | "qrcode_flag": "false", 83 | "useticket": "1", 84 | "pagerefer": "http://login.sina.com.cn/sso/logout.php?entry=miniblog&r" 85 | "=http%3A%2F%2Fweibo.com%2Flogout.php%3Fbackurl", 86 | "vsnf": "1", 87 | "su": keys['su'], 88 | "service": "miniblog", 89 | "servertime": keys['servertime'], 90 | "nonce": keys['nonce'], 91 | "pwencode": "rsa2", 92 | "rsakv": keys['rsakv'], 93 | "sp": sp, 94 | "sr": "1920*1080", 95 | "encoding": "UTF-8", 96 | "prelt": "44", 97 | "url": "https://www.weibo.com/ajaxlogin.php?framelogin=1&callback" 98 | "=parent.sinaSSOController.feedBackUrlCallBack", 99 | "returntype": "META" 100 | } 101 | 102 | log = requests.Session() 103 | log_url = 'https://login.sina.com.cn/sso/' \ 104 | 'login.php?client=ssologin.js(v1.4.19)' 105 | page = log.post(log_url, data=data) 106 | """被重定向两次""" 107 | page.encoding = "GBK" 108 | url = re.search('replace\([\'"](.*?)[\'"]\)', page.text).group(1) 109 | page = log.post(url, data=data) 110 | page.encoding = "GBK" 111 | url = re.search('replace\([\'"](.*?)[\'"]\)', page.text).group(1) 112 | page = log.post(url, data=data) 113 | user_info = re.search('{.+}', page.text).group() 114 | user_info_json = loads(user_info) 115 | return user_info_json 116 | 117 | 118 | if __name__ == '__main__': 119 | login('1832----803', '666666') -------------------------------------------------------------------------------- /微信公众号登陆加密/js.txt: -------------------------------------------------------------------------------- 1 | function e(n, r) { 2 | var t = (65535 & n) + (65535 & r); 3 | return (n >> 16) + (r >> 16) + (t >> 16) << 16 | 65535 & t 4 | } 5 | function u(n, r, t, u, o, c) { 6 | return e(function(n, r) { 7 | return n << r | n >>> 32 - r 8 | } (e(e(r, n), e(u, c)), o), t) 9 | } 10 | function o(n, r, t, e, o, c, f) { 11 | return u(r & t | ~r & e, n, r, o, c, f) 12 | } 13 | function c(n, r, t, e, o, c, f) { 14 | return u(r & e | t & ~e, n, r, o, c, f) 15 | } 16 | function f(n, r, t, e, o, c, f) { 17 | return u(r ^ t ^ e, n, r, o, c, f) 18 | } 19 | function i(n, r, t, e, o, c, f) { 20 | return u(t ^ (r | ~e), n, r, o, c, f) 21 | } 22 | function a(n, r) { 23 | n[r >> 5] |= 128 << r % 32, 24 | n[14 + (r + 64 >>> 9 << 4)] = r 25 | var t, u, a, h, d, g = 1732584193, 26 | l = -271733879, 27 | v = -1732584194, 28 | s = 271733878 29 | for (t = 0; t < n.length; t += 16) u = g, 30 | a = l, 31 | h = v, 32 | d = s, 33 | l = i(l = i(l = i(l = i(l = f(l = f(l = f(l = f(l = c(l = c(l = c(l = c(l = o(l = o(l = o(l = o(l, v = o(v, s = o(s, g = o(g, l, v, s, n[t], 7, -680876936), l, v, n[t + 1], 12, -389564586), g, l, n[t + 2], 17, 606105819), s, g, n[t + 3], 22, -1044525330), v = o(v, s = o(s, g = o(g, l, v, s, n[t + 4], 7, -176418897), l, v, n[t + 5], 12, 1200080426), g, l, n[t + 6], 17, -1473231341), s, g, n[t + 7], 22, -45705983), v = o(v, s = o(s, g = o(g, l, v, s, n[t + 8], 7, 1770035416), l, v, n[t + 9], 12, -1958414417), g, l, n[t + 10], 17, -42063), s, g, n[t + 11], 22, -1990404162), v = o(v, s = o(s, g = o(g, l, v, s, n[t + 12], 7, 1804603682), l, v, n[t + 13], 12, -40341101), g, l, n[t + 14], 17, -1502002290), s, g, n[t + 15], 22, 1236535329), v = c(v, s = c(s, g = c(g, l, v, s, n[t + 1], 5, -165796510), l, v, n[t + 6], 9, -1069501632), g, l, n[t + 11], 14, 643717713), s, g, n[t], 20, -373897302), v = c(v, s = c(s, g = c(g, l, v, s, n[t + 5], 5, -701558691), l, v, n[t + 10], 9, 38016083), g, l, n[t + 15], 14, -660478335), s, g, n[t + 4], 20, -405537848), v = c(v, s = c(s, g = c(g, l, v, s, n[t + 9], 5, 568446438), l, v, n[t + 14], 9, -1019803690), g, l, n[t + 3], 14, -187363961), s, g, n[t + 8], 20, 1163531501), v = c(v, s = c(s, g = c(g, l, v, s, n[t + 13], 5, -1444681467), l, v, n[t + 2], 9, -51403784), g, l, n[t + 7], 14, 1735328473), s, g, n[t + 12], 20, -1926607734), v = f(v, s = f(s, g = f(g, l, v, s, n[t + 5], 4, -378558), l, v, n[t + 8], 11, -2022574463), g, l, n[t + 11], 16, 1839030562), s, g, n[t + 14], 23, -35309556), v = f(v, s = f(s, g = f(g, l, v, s, n[t + 1], 4, -1530992060), l, v, n[t + 4], 11, 1272893353), g, l, n[t + 7], 16, -155497632), s, g, n[t + 10], 23, -1094730640), v = f(v, s = f(s, g = f(g, l, v, s, n[t + 13], 4, 681279174), l, v, n[t], 11, -358537222), g, l, n[t + 3], 16, -722521979), s, g, n[t + 6], 23, 76029189), v = f(v, s = f(s, g = f(g, l, v, s, n[t + 9], 4, -640364487), l, v, n[t + 12], 11, -421815835), g, l, n[t + 15], 16, 530742520), s, g, n[t + 2], 23, -995338651), v = i(v, s = i(s, g = i(g, l, v, s, n[t], 6, -198630844), l, v, n[t + 7], 10, 1126891415), g, l, n[t + 14], 15, -1416354905), s, g, n[t + 5], 21, -57434055), v = i(v, s = i(s, g = i(g, l, v, s, n[t + 12], 6, 1700485571), l, v, n[t + 3], 10, -1894986606), g, l, n[t + 10], 15, -1051523), s, g, n[t + 1], 21, -2054922799), v = i(v, s = i(s, g = i(g, l, v, s, n[t + 8], 6, 1873313359), l, v, n[t + 15], 10, -30611744), g, l, n[t + 6], 15, -1560198380), s, g, n[t + 13], 21, 1309151649), v = i(v, s = i(s, g = i(g, l, v, s, n[t + 4], 6, -145523070), l, v, n[t + 11], 10, -1120210379), g, l, n[t + 2], 15, 718787259), s, g, n[t + 9], 21, -343485551), 34 | g = e(g, u), 35 | l = e(l, a), 36 | v = e(v, h), 37 | s = e(s, d); 38 | return [g, l, v, s] 39 | } 40 | function h(n) { 41 | var r, t = "" 42 | for (r = 0; r < 32 * n.length; r += 8) t += String.fromCharCode(n[r >> 5] >>> r % 32 & 255) ;return t 43 | } 44 | function d(n) { 45 | var r, t = [] 46 | for (t[(n.length >> 2) - 1] = void 0, r = 0; r < t.length; r += 1) t[r] = 0 47 | for (r = 0; r < 8 * n.length; r += 8) t[r >> 5] |= (255 & n.charCodeAt(r / 8)) << r % 32 48 | return t 49 | } 50 | function g(n) { 51 | var r, t, e = "" 52 | for (t = 0; t < n.length; t += 1) r = n.charCodeAt(t), 53 | e += "0123456789abcdef".charAt(r >>> 4 & 15) + "0123456789abcdef".charAt(15 & r); 54 | return e 55 | } 56 | function l(n) { 57 | return unescape(encodeURIComponent(n)) 58 | } 59 | function v(n) { 60 | return function(n) { 61 | return h(a(d(n), 8 * n.length)) 62 | } (l(n)) 63 | } 64 | function s(n, r) { 65 | return function(n, r) { 66 | var t, e, u = d(n), 67 | o = [], 68 | c = [] 69 | for (o[15] = c[15] = void 0, u.length > 16 && (u = a(u, 8 * n.length)), t = 0; t < 16; t += 1) o[t] = 909522486 ^ u[t], 70 | c[t] = 1549556828 ^ u[t] 71 | return e = a(o.concat(d(r)), 512 + 8 * r.length), 72 | h(a(c.concat(e), 640)) 73 | } (l(n), l(r)) 74 | } 75 | 76 | getpwd = function(n, r, t) { 77 | return r ? t ? s(r, n) : function(n, r) { 78 | return g(s(n, r)) 79 | } (r, n) : t ? v(n) : function(n) { 80 | return g(v(n)) 81 | } (n) 82 | } -------------------------------------------------------------------------------- /腾讯企鹅媒体登陆2018-12-8/js.txt: -------------------------------------------------------------------------------- 1 | var MD5 = function(a) { 2 | function b(a, b) { 3 | return a << b | a >>> 32 - b 4 | } 5 | function c(a, b) { 6 | var c, d, e, f, g; 7 | return e = 2147483648 & a, 8 | f = 2147483648 & b, 9 | c = 1073741824 & a, 10 | d = 1073741824 & b, 11 | g = (1073741823 & a) + (1073741823 & b), 12 | c & d ? 2147483648 ^ g ^ e ^ f: c | d ? 1073741824 & g ? 3221225472 ^ g ^ e ^ f: 1073741824 ^ g ^ e ^ f: g ^ e ^ f 13 | } 14 | function d(a, b, c) { 15 | return a & b | ~a & c 16 | } 17 | function e(a, b, c) { 18 | return a & c | b & ~c 19 | } 20 | function f(a, b, c) { 21 | return a ^ b ^ c 22 | } 23 | function g(a, b, c) { 24 | return b ^ (a | ~c) 25 | } 26 | function h(a, e, f, g, h, i, j) { 27 | return a = c(a, c(c(d(e, f, g), h), j)), 28 | c(b(a, i), e) 29 | } 30 | function i(a, d, f, g, h, i, j) { 31 | return a = c(a, c(c(e(d, f, g), h), j)), 32 | c(b(a, i), d) 33 | } 34 | function j(a, d, e, g, h, i, j) { 35 | return a = c(a, c(c(f(d, e, g), h), j)), 36 | c(b(a, i), d) 37 | } 38 | function k(a, d, e, f, h, i, j) { 39 | return a = c(a, c(c(g(d, e, f), h), j)), 40 | c(b(a, i), d) 41 | } 42 | function l(a) { 43 | for (var b, c = a.length, 44 | d = c + 8, 45 | e = (d - d % 64) / 64, f = 16 * (e + 1), g = Array(f - 1), h = 0, i = 0; c > i;) b = (i - i % 4) / 4, 46 | h = i % 4 * 8, 47 | g[b] = g[b] | a.charCodeAt(i) << h, 48 | i++; 49 | return b = (i - i % 4) / 4, 50 | h = i % 4 * 8, 51 | g[b] = g[b] | 128 << h, 52 | g[f - 2] = c << 3, 53 | g[f - 1] = c >>> 29, 54 | g 55 | } 56 | function m(a) { 57 | var b, c, d = "", 58 | e = ""; 59 | for (c = 0; 3 >= c; c++) b = a >>> 8 * c & 255, 60 | e = "0" + b.toString(16), 61 | d += e.substr(e.length - 2, 2); 62 | return d 63 | } 64 | function n(a) { 65 | a = a.replace(/\r\n/g, "\n"); 66 | for (var b = "", 67 | c = 0; c < a.length; c++) { 68 | var d = a.charCodeAt(c); 69 | 128 > d ? b += String.fromCharCode(d) : d > 127 && 2048 > d ? (b += String.fromCharCode(d >> 6 | 192), b += String.fromCharCode(63 & d | 128)) : (b += String.fromCharCode(d >> 12 | 224), b += String.fromCharCode(d >> 6 & 63 | 128), b += String.fromCharCode(63 & d | 128)) 70 | } 71 | return b 72 | } 73 | var o, p, q, r, s, t, u, v, w, x = Array(), 74 | y = 7, 75 | z = 12, 76 | A = 17, 77 | B = 22, 78 | C = 5, 79 | D = 9, 80 | E = 14, 81 | F = 20, 82 | G = 4, 83 | H = 11, 84 | I = 16, 85 | J = 23, 86 | K = 6, 87 | L = 10, 88 | M = 15, 89 | N = 21; 90 | for (a = n(a), x = l(a), t = 1732584193, u = 4023233417, v = 2562383102, w = 271733878, o = 0; o < x.length; o += 16) p = t, 91 | q = u, 92 | r = v, 93 | s = w, 94 | t = h(t, u, v, w, x[o + 0], y, 3614090360), 95 | w = h(w, t, u, v, x[o + 1], z, 3905402710), 96 | v = h(v, w, t, u, x[o + 2], A, 606105819), 97 | u = h(u, v, w, t, x[o + 3], B, 3250441966), 98 | t = h(t, u, v, w, x[o + 4], y, 4118548399), 99 | w = h(w, t, u, v, x[o + 5], z, 1200080426), 100 | v = h(v, w, t, u, x[o + 6], A, 2821735955), 101 | u = h(u, v, w, t, x[o + 7], B, 4249261313), 102 | t = h(t, u, v, w, x[o + 8], y, 1770035416), 103 | w = h(w, t, u, v, x[o + 9], z, 2336552879), 104 | v = h(v, w, t, u, x[o + 10], A, 4294925233), 105 | u = h(u, v, w, t, x[o + 11], B, 2304563134), 106 | t = h(t, u, v, w, x[o + 12], y, 1804603682), 107 | w = h(w, t, u, v, x[o + 13], z, 4254626195), 108 | v = h(v, w, t, u, x[o + 14], A, 2792965006), 109 | u = h(u, v, w, t, x[o + 15], B, 1236535329), 110 | t = i(t, u, v, w, x[o + 1], C, 4129170786), 111 | w = i(w, t, u, v, x[o + 6], D, 3225465664), 112 | v = i(v, w, t, u, x[o + 11], E, 643717713), 113 | u = i(u, v, w, t, x[o + 0], F, 3921069994), 114 | t = i(t, u, v, w, x[o + 5], C, 3593408605), 115 | w = i(w, t, u, v, x[o + 10], D, 38016083), 116 | v = i(v, w, t, u, x[o + 15], E, 3634488961), 117 | u = i(u, v, w, t, x[o + 4], F, 3889429448), 118 | t = i(t, u, v, w, x[o + 9], C, 568446438), 119 | w = i(w, t, u, v, x[o + 14], D, 3275163606), 120 | v = i(v, w, t, u, x[o + 3], E, 4107603335), 121 | u = i(u, v, w, t, x[o + 8], F, 1163531501), 122 | t = i(t, u, v, w, x[o + 13], C, 2850285829), 123 | w = i(w, t, u, v, x[o + 2], D, 4243563512), 124 | v = i(v, w, t, u, x[o + 7], E, 1735328473), 125 | u = i(u, v, w, t, x[o + 12], F, 2368359562), 126 | t = j(t, u, v, w, x[o + 5], G, 4294588738), 127 | w = j(w, t, u, v, x[o + 8], H, 2272392833), 128 | v = j(v, w, t, u, x[o + 11], I, 1839030562), 129 | u = j(u, v, w, t, x[o + 14], J, 4259657740), 130 | t = j(t, u, v, w, x[o + 1], G, 2763975236), 131 | w = j(w, t, u, v, x[o + 4], H, 1272893353), 132 | v = j(v, w, t, u, x[o + 7], I, 4139469664), 133 | u = j(u, v, w, t, x[o + 10], J, 3200236656), 134 | t = j(t, u, v, w, x[o + 13], G, 681279174), 135 | w = j(w, t, u, v, x[o + 0], H, 3936430074), 136 | v = j(v, w, t, u, x[o + 3], I, 3572445317), 137 | u = j(u, v, w, t, x[o + 6], J, 76029189), 138 | t = j(t, u, v, w, x[o + 9], G, 3654602809), 139 | w = j(w, t, u, v, x[o + 12], H, 3873151461), 140 | v = j(v, w, t, u, x[o + 15], I, 530742520), 141 | u = j(u, v, w, t, x[o + 2], J, 3299628645), 142 | t = k(t, u, v, w, x[o + 0], K, 4096336452), 143 | w = k(w, t, u, v, x[o + 7], L, 1126891415), 144 | v = k(v, w, t, u, x[o + 14], M, 2878612391), 145 | u = k(u, v, w, t, x[o + 5], N, 4237533241), 146 | t = k(t, u, v, w, x[o + 12], K, 1700485571), 147 | w = k(w, t, u, v, x[o + 3], L, 2399980690), 148 | v = k(v, w, t, u, x[o + 10], M, 4293915773), 149 | u = k(u, v, w, t, x[o + 1], N, 2240044497), 150 | t = k(t, u, v, w, x[o + 8], K, 1873313359), 151 | w = k(w, t, u, v, x[o + 15], L, 4264355552), 152 | v = k(v, w, t, u, x[o + 6], M, 2734768916), 153 | u = k(u, v, w, t, x[o + 13], N, 1309151649), 154 | t = k(t, u, v, w, x[o + 4], K, 4149444226), 155 | w = k(w, t, u, v, x[o + 11], L, 3174756917), 156 | v = k(v, w, t, u, x[o + 2], M, 718787259), 157 | u = k(u, v, w, t, x[o + 9], N, 3951481745), 158 | t = c(t, p), 159 | u = c(u, q), 160 | v = c(v, r), 161 | w = c(w, s); 162 | var O = m(t) + m(u) + m(v) + m(w); 163 | return O.toLowerCase() 164 | }; 165 | 166 | function getpwd(pwd, token, salt) { 167 | var p; 168 | p = MD5(token + MD5(salt + pwd)); 169 | return p 170 | } -------------------------------------------------------------------------------- /英领/.idea/workspace.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 44 | 45 | 46 | 51 | 52 | 53 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 |