当前位置:首页 > SAFE > 正文内容

利用matlab求解RE中出现的齐次线性方程组

Luz1年前 (2020-04-03)SAFE480

image.png

判断输入的flag时,将flag的每一位当成了未知数带入方程进行计算

一共有32位flag,32个32元1次方程

编写脚本将方程转化成矩阵形式

fd=open('bianl.txt')
a=[0,0,0,0,0,0,0,0,0,0,0,0,0,00,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
def getmidstring(html, start_str, end):
    start = html.find(start_str)
    if start >= 0:
        start += len(start_str)
        end = html.find(end, start)
        if end >= 0:
            return str(html[start:end])
def geta(b):
    num=0
    i=0

    if('*a' in b):
        i=0
    elif('a1[' in b):
        i=int(str(getmidstring(b,'[',']')))
    if('<<6' in b and '+' in b):
        num='64'
    elif('<<6' in b and '-' in b):
        num='-64'
    elif('+' in b):
        num=str(getmidstring(b,'+ ',' *'))
    elif('- ' in b):
        num='-'+str(getmidstring(b,'- ',' *'))
    elif('(' in b):
        num=str(getmidstring(b,'( ',' *'))
    if('!=' in b):
        a[32]=int(getmidstring(b,'!=',' )'))
    a[i]=num
    #print(a[i])
while(1):
    b=fd.readline()
    #print(a)
    if('ret' in b):
        final=''
        for i in range(0,33):
            final=final+' '+str(a[i])
        print(final+';')
        a=[0,0,0,0,0,0,0,0,0,0,0,0,0,00,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
    elif('a1' in b):
        geta(b)


存在一点bug,把变量里的0和None手动改一下问题不大


image.png

得到的矩阵


导入matlab并化简得到方程的解

>> B=[ XXXXX];   %XXXXX矩阵的具体值,元素之间用空格分隔,行之间用分号分隔%
>> format rat
>> C=rref(B)

image.png

打印出C

分享给朋友:

相关文章

[WP]安恒7月赛1年前 (2020-07-25)
PPT5个月前 (03-17)
网络安全法2年前 (2019-09-14)
[USBpcap]USB流量分析脚本1年前 (2020-07-08)
栈迁移基础2年前 (2019-09-15)

评论列表

访客
访客
1年前 (2020-04-03)

wow 大神之作

Mori
Mori
3个月前 (05-11)

wow 大神之作

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。