현재 위치 - 대출자문플랫폼 - 외환 플랫폼 - Python 을 사용하여 JS 에서 jsEncrypt 모듈의 암호화를 시뮬레이트하는 방법은 무엇입니까?

Python 을 사용하여 JS 에서 jsEncrypt 모듈의 암호화를 시뮬레이트하는 방법은 무엇입니까?

PC 가 시나웨이보에 로그인할 때 사용자 이름과 암호는 클라이언트에서 js 로 미리 암호화되어 있으며, POST 이전에는 POST_DATA 의 일부인 매개 변수 세트가 제공됩니다. 이렇게 하면 POST 로그인 (예: 사람 네트워크) 을 일반적인 간단한 방법으로 시뮬레이션할 수 없습니다.

파충류를 통해 시나웨이보 데이터를 얻고 로그인을 시뮬레이션하는 것은 필수적이다.

1. POST 요청을 제출하기 전에 앞서 언급한 간단한 servertime 과 nonce 만 얻는 대신 servertime, nonce, pubkey, rsakv 의 네 가지 매개 변수를 얻어야 합니다

1. 1 암호화 방식의 변경으로 인해 RSA 모듈을 사용하겠습니다. RSA 공개 키 암호화 알고리즘에 대한 소개는 네트워크의 관련 내용을 참조하십시오. Rsa 모듈 다운로드 및 설치:

다운로드: /signup/signin.php) js /js/sso/ssologin.js 의 주소를 찾을 수 있는 소스 코드

1.3 로그인

로그인의 첫 번째 단계는 자신의 사용자 이름 (username) 을 추가하고 prelogin_url 의 링크 주소를 요청하는 것입니다.

Prelogin _ URL ='/SSO/prelogin.php? Entry = SSO& callback = sinassocontroller.prelogincallback & 기본값 =% s & amprsakt = mod& client = SSO login.js (v1.4.4)% username

Get 메서드를 사용하여 다음과 유사한 내용을 가져옵니다.

Sinassocontroller.prelogincallback ({"retcode": 0, "servertime":136204/kloc- "pcid": "gz-6664c 3d ea 2 bfda a3c94e8734c9e2c9e6a1f", "nonce":"IRYP4N", "pubbs

그런 다음 원하는 servertime, nonce, pubkey, rsakv 를 추출할 수 있습니다. 물론 pubkey 와 rsakv 의 값은 코드에 쓸 수 있으며 고정 값입니다.

2. 이전에는 사용자 이름이 BASE64 에 의해 계산되었습니다.

코드 복사 코드는 다음과 같습니다.

사용자 이름 _ = urllib.quote (사용자 이름)

Username = base64.encodestring (username) [:-1]

암호는 SHA 1 3 회 암호화를 사용하며 servertime 및 nonce 값을 추가하여 간섭을 일으킵니다. 즉 SHA 1 암호화를 두 번 한 후 결과에 servertime 및 nonce 값을 더한 다음 SHA 1 을 계산합니다.

최신 RSA 암호화 방법에서는 사용자 이름이 여전히 이전과 같이 처리됩니다.

비밀번호 암호화 방법은 원본과 다릅니다.

2. 1 먼저 RSA 공개 키를 생성합니다. 공개 키의 두 매개 변수는 모두 시나웨이보에 지정된 고정 값이지만 모든 문자열은 16 진수 16 입니다. 첫 번째는 첫 로그인 단계의 푸키입니다. 두 번째는 js 암호화 파일의' 1000 1' 입니다.

이 두 값은 16 에서 10 으로 변환되어야 하지만 코드에도 쓸 수 있습니다. 여기에 1000 1 을 직접 65537 로 씁니다. 코드는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.

RsaPublickey = int(pubkey, 16)

Key = rsa.publickey (rsapublickey, 65537) # 공개 키를 만듭니다.

Message = str (servertime)+'\ t'+str (nonce)+'\ n'+str (password) # 일반 텍스트 js 암호화 파일을 패치하여 얻을 수 있습니다.

Passwd = rsa.encrypt (메시지, 키) # 암호화

Passwd = binascii.b2a _ hex (passwd) # 암호화된 정보를 16 base 로 변환합니다.

2.2 요청 전달 URL:log in _ URL = '/SSO/log in. PHP?' Client = ssologin.js (v1.4.4)' 입니다

보낼 헤더 정보

코드 복사 코드는 다음과 같습니다.

PostPara = {

항목':' 웨이보',

게이트웨이':' 1',

:' 에서 왔습니다.

저장 상태':' 7',

사용자 티켓':' 1',

Ssosimplelogin':' 1' ,

Vsnf':' 1',

Vsnval ":",

Su': 사용자 이름을 인코딩합니다.

서비스':' 미니 블로그' ,

서버 시간': 서버 시간,

현재': 현재,

Pwencode': 'rsa2',

Sp': encodedPassWord,

인코딩':' UTF-8',

예측 테스트':' 1 15',

Rsakv': rsakv,

Url': '/ajaxlogin.php? Framelogin =1& Callback = parent.sinassocontroller.feedback URL callback' ,

Returntype':' 메타'

}

Rsakv 가 요청에 추가되고 pwencode 값이 rsa2 로 변경됩니다. 그렇지 않으면 이전과 동일합니다.

조직 매개변수, 게시 요청 로그인이 성공했는지 확인하려면 문장 위치를 참조할 수 있습니다. 대체 ("/ajaxlog.php? Framelogin =1& 콜백 = parent.sinassocontroller.feedback URL callback & Retcode= 10 1. Reason =% b5% C7% C2% BC% C3% FB% bb% F2% C3% DC% C2% EB% B4% ed% ce% F3 "입니다

Retcode= 10 1 이면 로그인이 실패합니다. 로그인에 성공하면 결과는 비슷하지만 retcode 값은 0 입니다.

3. 로그인이 성공하면 본문에 있는 대체 정보의 URL 이 다음에 사용할 URL 입니다. 그런 다음 GET 방법을 사용하여 서버에 위 URL 에 대한 요청을 보내고 이 요청에 대한 쿠키 정보를 저장합니다. 즉, 로그인 쿠키가 필요합니다.

copyright 2024대출자문플랫폼