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的管理頁面,練習出來的

相關文章
相關標籤/搜索