JS逆向破解码云,曲线加快github下载速度

github 下载速度太慢了。
先用导入到码云再下载下来,而后到 .git/config 修改git repo url 为原来的
仍是有点麻烦,那就作成一个工具吧。

JS逆向,公钥加密学,base64编码


  1. 先获取码云的登录页面;
  2. python 用户名,密码登录不行,只能寻找登录规律了,也就是JS逆向。点击登录看看有哪些XHR的url,什么断点呀都不行,又又找到了一个encrypt开头的js文件。秘密所在。累。。
  3. 获取csrf-token以及公钥;
  4. 用csrf-token 加上RSA加密 password;
  5. 用加密后的password登录,逆向成功。

导入到 gitee


  1. 获取用来导入github repo的页面,后来发观有csrf-token保护。
  2. 解析新的csrf-token
  3. 在请求头中加入csrf-token,导入成功。泪渀

代码

# 获取登录页面
import re

import requests

s = requests.Session()

headers = {'User-Agent': 'Mozilla/5.0 Gecko/20100101'}
url_login = 'https://gitee.com/login'
resp_get_login = s.get(login_url, headers=headers)


def parse_token(response):
    # 解析 token
    result = re.search('<meta content="(.*?)" name="csrf-token"', response.text)
    return result.group(1)

详细代码,参考个人repo git2giteepython

加密方法

'''
根据公钥加密方法。对应开头为 encrypt 的js文件
'''
from base64 import b64encode

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5


def encrypt_pwd(password, public_key):
    '''
    :params public_key:
        -----BEGIN PUBLIC KEY----\nkeys\n-----END ...-----
    :params password: csrf-token + '$gitee$' + password
    '''
    rsa_key = RSA.import_key(public_key)
    encryptor = PKCS1_v1_5.new(rsa_key)
    cipher = b64encode(encryptor.encrypt(password.encode('utf-8')))
    return cipher.decode('utf-8')

作成命令行工具

python 下载

pip install git2gitee

使用

# 参数说明 -u 用户名 -k 密码 repo地址 https 协议开头的
git2gitee -u mikele -k not_real_password repo_url

Todo

[] 检查是否有人已经导入过了
[] 检查是否公开的repo
[] 下载到本地,自动修改config urlgit

法律声明,不要滥用。用什么问题发我邮箱。

破解csrf-token提交方法是用django的管理页面,练习出来的

相关文章
相关标签/搜索