首页 > 技术文章 > Reverse-Daily(2)-wow

lomooo 原文

链接:http://pan.baidu.com/s/1eS9JNP4 密码:ltl4

本体分析比较简单,算法是解一个22元一次方程

这里引入了numpy这样一个python库,灰常强大

import numpy

NUM=0x16
matrix=[[0 for i in range(NUM)] for j in range(NUM)]
strings = [
"ThelightTokeepinmindtheholylight",
"Timeismoneymyfriend",
"WelcometotheaugerRuiMa",
"Areyouheretoplayforthehorde",
"ToarmsyeroustaboutsWevegotcompany",
"Ahhwelcometomyparlor",
"Slaytheminthemastersname",
"YesrunItmakesthebloodpumpfaster",
"Shhhitwillallbeoversoon",
"Kneelbeforemeworm",
"Runwhileyoustillcan",
"RisemysoldiersRiseandfightoncemore",
"LifeismeaningleshThatwearetrulytested",
"BowtothemightoftheHighlord",
"ThefirstkillgoestomeAnyonecaretowager",
"Itisasitshouldbe",
"Thedarkvoidawaitsyou",
"InordertomoregloryofMichaelessienray",
"Rememberthesunthewellofshame",
"Maythewindguideyourroad",
"StrengthandHonour",
"Bloodandthunder"
]

verify=[
0x000373ca,
0x00031bdf,
0x000374f7,
0x00039406,
0x000399c4,
0x00034adc,
0x00038c08,
0x00038b88,
0x00038a60,
0x0002b568,
0x00032471,
0x00037dea,
0x00036f97,
0x000378e4,
0x00038706,
0x00029010,
0x00034c23,
0x00038ef8,
0x00038e29,
0x0003925e,
0x0002b5fc,
0x0002584e
]

def gen_matrix():
    for i in range(NUM):
        for j in range(NUM):
            matrix[i][j]=0

    for i in range(NUM):
        for j in range(len(strings[i])):
            if j>=NUM:
                break
            matrix[i][j]=ord(strings[i][j])

if __name__=='__main__':
    gen_matrix()
    verify=numpy.array(verify)
    matrix=numpy.array(matrix)
    a=numpy.linalg.solve(matrix,verify)
    print a
b=[ 104, 99, 116,102,123,76,74,95,121,54,  99, 100, 99,
95, 113, 119, 101, 101, 114, 116, 33, 125]
c=''
for i in b:
c+=(chr(i))
print c

推荐阅读