# coding:utf-8
from time import time
from copy import deepcopy
from urllib.parse import quote_plus
import requests
from urllib.parse import urlparse, parse_qs,parse_qsl, quote, unquote, urlencode
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
dword = [0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, 0x3956C25B,
0x59F111F1, 0x923F82A4, 0xAB1C5ED5, 0xD807AA98, 0x12835B01,
0x243185BE, 0x550C7DC3, 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7,
0xC19BF174, 0xE49B69C1, 0xEFBE4786, 0xFC19DC6, 0x240CA1CC,
0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, 0x983E5152,
0xA831C66D, 0xB00327C8, 0xBF597FC7, 0xC6E00BF3, 0xD5A79147,
0x6CA6351, 0x14292967, 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC,
0x53380D13, 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, 0xD192E819,
0xD6990624, 0xF40E3585, 0x106AA070, 0x19A4C116, 0x1E376C08,
0x2748774C, 0x34B0BCB5, 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F,
0x682E6FF3, 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2]
initial = [0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x01, 0x00, 0x03, 0x02, 0x05, 0x04, 0x07, 0x06,
0x09, 0x08, 0x0B, 0x0A, 0x0D, 0x0C, 0x0F, 0x0E, 0x02, 0x03, 0x00, 0x01, 0x06, 0x07, 0x04, 0x05,
0x0A, 0x0B, 0x08, 0x09, 0x0E, 0x0F, 0x0C, 0x0D, 0x03, 0x02, 0x01, 0x00, 0x07, 0x06, 0x05, 0x04,
0x0B, 0x0A, 0x09, 0x08, 0x0F, 0x0E, 0x0D, 0x0C, 0x04, 0x05, 0x06, 0x07, 0x00, 0x01, 0x02, 0x03,
0x0C, 0x0D, 0x0E, 0x0F, 0x08, 0x09, 0x0A, 0x0B, 0x05, 0x04, 0x07, 0x06, 0x01, 0x00, 0x03, 0x02,
0x0D, 0x0C, 0x0F, 0x0E, 0x09, 0x08, 0x0B, 0x0A, 0x06, 0x07, 0x04, 0x05, 0x02, 0x03, 0x00, 0x01,
0x0E, 0x0F, 0x0C, 0x0D, 0x0A, 0x0B, 0x08, 0x09, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00,
0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x09, 0x08, 0x0B, 0x0A, 0x0D, 0x0C, 0x0F, 0x0E,
0x01, 0x00, 0x03, 0x02, 0x05, 0x04, 0x07, 0x06, 0x0A, 0x0B, 0x08, 0x09, 0x0E, 0x0F, 0x0C, 0x0D,
0x02, 0x03, 0x00, 0x01, 0x06, 0x07, 0x04, 0x05, 0x0B, 0x0A, 0x09, 0x08, 0x0F, 0x0E, 0x0D, 0x0C,
0x03, 0x02, 0x01, 0x00, 0x07, 0x06, 0x05, 0x04, 0x0C, 0x0D, 0x0E, 0x0F, 0x08, 0x09, 0x0A, 0x0B,
0x04, 0x05, 0x06, 0x07, 0x00, 0x01, 0x02, 0x03, 0x0D, 0x0C, 0x0F, 0x0E, 0x09, 0x08, 0x0B, 0x0A,
0x05, 0x04, 0x07, 0x06, 0x01, 0x00, 0x03, 0x02, 0x0E, 0x0F, 0x0C, 0x0D, 0x0A, 0x0B, 0x08, 0x09,
0x06, 0x07, 0x04, 0x05, 0x02, 0x03, 0x00, 0x01, 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08,
0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00]
char = [0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50,
0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66,
0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76,
0x77, 0x78, 0x79, 0x7A, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x2B, 0x2F]
plain = [0x2D, 0x2B, 0x78, 0x58, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x2D, 0x2B, 0x78, 0x58, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35,
0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46]
def data0():
data = []
with open('./data0', 'rb') as f:
tmp_bytes = f.read()
for i in range(0, 9):
tmp = []
for j in range(0, 0x4000):
tmp.append(tmp_bytes[0x4000 * i + j])
data.append(tmp)
return data
def data1():
with open('./data1', 'rb') as f:
tmp_bytes = f.read()
return tmp_bytes
def get_initial_order(data, item, i, num):
v0 = (4 * i) | num
v1 = item[v0]
v2 = (v0 << 0xA) + 4 * v1
v3 = ''
for j in range(v2, v2 + 4):
tmp = hex(data[j])[2:]
if len(tmp) < 2:
tmp = '0' + tmp
v3 = tmp + v3
v3 = int(v3, 16)
return v3
def hex_content(content):
content_tmp = []
for i in range((len(content))):
hex_temp = ord(content[i])
if len(hex(hex_temp)[2:]) <= 2:
content_tmp.append(hex_temp)
else:
hex_temp = quote_plus(content[i]).split('%')[1:]
for item in hex_temp:
content_tmp.append(int(item.lower(), 16))
return content_tmp
def content_length(content):
a1 = len(content)
for i in range((len(content))):
hex_temp = ord(content[i])
if len(hex(hex_temp)[2:]) > 2:
a1 = a1 + 2
return a1
def hex_string(num):
tmp_string = hex(num)[2:]
if len(tmp_string) < 2:
tmp_string = '0' + tmp_string
return tmp_string
def cut_list(param_list):
tmp_list = []
for item in param_list:
tmp = hex(item)[2:]
while len(tmp) < 8:
tmp = '0' + tmp
for c in tmp:
tmp_list.append(ord(c))
return tmp_list
def transform(param_list):
result = ''
for item in param_list:
item = hex(item)[2:]
while len(item) < 8:
item = '0' + item
result = result + item
return result[0: 30]
def length_transform(length):
result = []
tmp = hex(length * 8 + 0x200)[2:]
if len(tmp) % 2 == 1:
tmp = '0' + tmp
length = len(tmp)
for i in range(0, length // 2):
result.append(int(tmp[2 * i: 2 * (i + 1)], 16))
differ = 8 - len(result)
for i in range(0, differ):
result = [0] + result
return result
def sort_list(param_list):
result = []
for i in range(0, 4):
for j in range(0, 4):
result.append(param_list[(4 * i + 5 * j) % 16])
return result
def flip(num):
result = ''
lst = hex(num)[2:]
for i in range(0, 8):
if i < len(lst):
result = result + lst[i]
else:
result = '0' + result
return int(result[6: 8] + result[4: 6] + result[2: 4] + result[0: 2], 16)
def ror(num, k):
result = ''
while num < 0:
num += 0x100000000
if len(hex(num)[2:]) > 8:
num = int(hex(num)[-8:], 16)
lst = bin(num)[2:]
for i in range(0, 32):
if i < len(lst):
result = result + lst[i]
else:
result = '0' + result
return int(result[-k:] + result[:-k], 2)
def UBFX(num, lsb, width):
tmp_string = bin(num)[2:]
while len(tmp_string) < 32:
tmp_string = '0' + tmp_string
result = tmp_string[- lsb - width: - lsb]
return int(result, 2)
def umull(Rm, Rs):
tmp = bin(Rm * Rs)[2:]
while len(tmp) < 64:
tmp = '0' + tmp
return int(tmp[0: 32], 2)
def check(tmp):
while tmp < 0:
tmp += 0x100000000
if len(hex(tmp)[2:]) > 8:
tmp = int(hex(tmp)[-8:], 16)
return tmp
def check_log(temp_list):
tmp = []
for item in temp_list:
tmp.append(hex(item))
print('长度:{} 内容:{}\n'.format(len(tmp), tmp))
def sub_F48(list_238, list_278):
new_278 = []
list_338 = []
for i in range(0, 0x30):
v0 = check(list_238[i])
v1 = check(list_238[i + 1])
v2 = check(list_238[i + 0xe])
v3 = check(list_238[i + 9])
tmp = check(check(((v1 << 0xE) | (v1 >> 0x12)) ^ (v1 >> 3) ^ ror(v1, 7)) +
check(ror(v2, 0x13) ^ (v2 >> 0xA) ^ ror(v2, 0x11)) + v0 + v3)
list_23
- 1
- 2
- 3
- 4
- 5
- 6
前往页