0%

AI 之 分析神经网络模型中的隐藏信息

2025-05-25 06:07By
Z3681437491
AIPyTorchMISC

后续持续跟进学习...

这段代码实现了一个基于神经网络权重矩阵的字符组合搜索算法,用于破解CTF(Capture The Flag)比赛中的flag。让我来详细解释它的工作原理:

核心功能概述

  1. 神经网络加载:从ZIP文件加载预训练的PyTorch模型(AliceNet1)
  2. 权重矩阵提取:获取全连接层的权重矩阵作为字符转移规则
  3. 字符映射表:定义允许的字符集及其编号映射
  4. 深度优先搜索(DFS):基于权重矩阵构建的规则,递归搜索可能的flag组合
  5. Flag验证与输出:当找到长度为16且以"}"结尾的字符串时,判定为正确flag

详细分析

1. 神经网络结构与加载

class AliceNet1(nn.Module): pass savepath='./0bdb74e42cdf4a42923ccf40d2a66313.zip' net=torch.load(savepath) mymat=net.state_dict()['fc.0.weight'].tolist()
  • 定义了一个空的神经网络类AliceNet1
  • 从ZIP文件加载预训练模型(实际结构可能包含全连接层"fc.0")
  • 提取第一层全连接层的权重矩阵作为字符转移规则

2. 字符映射表

def char2num(ch): tmpset = string.printable[0:36]+'*CTF{ALIZE}' tmplen=len(tmpset) for i in range(tmplen): if(ch==tmpset[i]): return i flagset=string.printable[0:36]+'*CTF{ALIZE}'
  • 允许的字符集包括:
    • 前36个可打印字符(数字0-9,小写字母a-z)
    • 特殊字符:*CTF{ALIZE}
  • 字符到编号的映射用于索引权重矩阵

3. 深度优先搜索(DFS)

def dfs(ch,depth,ans): ans+=ch if(len(ans)==flaglen and ans[-1]=='}'): print('flag is:',ans) elif(len(ans)==flaglen): return else: tmpi=char2num(ch) for i in range(setlen): if(flagset[i]==ch): continue tmpj=char2num(flagset[i]) if(mymat[tmpi][tmpj]==1.0 and used[tmpj]==False): used[tmpj]=True dfs(flagset[i],depth+1,ans) used[tmpj]=False
  • 递归搜索所有可能的字符组合
  • 搜索条件:
    • 当前字符到下一个字符的权重值为1.0
    • 下一个字符未被使用过
  • 终止条件:
    • 组合长度达到16且最后一个字符是"}"(正确flag)
    • 组合长度达到16但最后一个字符不是"}"(无效路径)

4. 搜索初始化

flaglen=10+6 # 最终flag长度为16 used=[False]*setlen flag='' used[char2num('*')]=True dfs('*',0,flag)
  • 从特殊字符"*"开始搜索
  • 标记"*"为已使用
  • 启动深度优先搜索

工作机制图解

权重矩阵(mymat) 字符映射表(flagset) ┌───────────────┐ ┌───────────────────────┐ │ │ │ 0:0, 1:1, ..., 36:*, │ │ 字符转移规则 │ │ 37:C, 38:T, ... │ │ │ └───────────────────────┘ └───────────────┘ │ ▼ 深度优先搜索(DFS) ┌───────────────────────────────────┐ │ 1. 从"*"开始 │ │ 2. 检查所有可能的下一个字符 │ │ - 权重值为1.0 │ │ - 未被使用 │ │ 3. 递归构建字符串 │ │ 4. 当长度=16且结尾为"}"时输出 │ └───────────────────────────────────┘

最终输出

flag is: *CTF{qx1jukznmr}

这个flag通过分析神经网络的权重矩阵,利用字符间的转移规则搜索得到。权重矩阵中的值(1.0)实际上定义了一个有向图,每个节点是一个字符,每条边表示允许的字符转移。

还没有人赞赏,快来当第一个赞赏的人吧!
  
© 著作权归作者所有
加载失败
广告
×
评论区
添加新评论