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

Mikele
github 下载速度太慢了。
先用导入到码云再下载下来,然后到.git/config 修改git repo url 为原来的
还是有点麻烦,那就做成一个工具吧。
# 简单技巧 下载最后的commit
git clone {url} --depth 1

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 git2gitee https://github.com/toyourhear...

加密方法

'''
根据公钥加密方法。对应开头为 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')
check project private 时发现码云可以调换一下检查顺序,节省宽带等。

给gitee的优化建议

  1. 先检查自己有没有导入过;
  2. 检查别人有没有导入过。

做成命令行工具

python 下载

pip install git2gitee

使用

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

Todo

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

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

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

阅读 553
4 声望
1 粉丝
0 条评论
你知道吗?

4 声望
1 粉丝
宣传栏