fic2026初赛pc部分wp

admin 2026-05-03 05:10:42 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文档记录了FIC2026初赛PC部分的数字取证分析过程,涉及Deepin系统检材分析、钓鱼邮件识别、RSA加密图片解密、VPN端口确认、AI模型信息提取、勒索软件逆向分析及数据恢复等技术操作。关键发现包括通过因数分解RSA模数成功解密推广设计图、分析恶意程序获取勒索联系方式[email protected]、修复被加密MP4文件并还原保险柜编号与密码。可操作建议涵盖使用Python脚本进行数据解密、CRC校验修复及二进制逆向分析等方法。 综合评分: 78 文章分类: CTF,渗透测试,应急响应,恶意软件,漏洞分析


致敬手搓的大佬

  1. 分析计算机检材,李安弘电脑vpn软件开放的代理端口为

9527 右下角查看uos ai 系统代理

  1. 分析计算机检材,李安弘电脑中AI软件当前使用的模型类型为

deepseek 右下角uos ai

  1. 分析计算机检材,李安弘电脑中AI软件当前使用的模型apiKey为

/home/lha/.local/share/deepin/uos-ai-assistant/db/basic

火眼全盘搜索9676a,

  1. 分析计算机检材,李安弘电脑中勒索软件提供的解密服务联系方式为

vc加密分区(密码在手机备忘录)挂载,ida加ai分析下面的get_token_linux程序

1. 构造通配符字符串 "*.mp4"2. 调用 filepath.Glob("*.mp4") 查找所有 MP4 文件3. 遍历每个文件:   - 读取文件内容(os.ReadFile)   - 调用 main._a(file_data, 1337) 进行加密   - 用 OR 操作累积返回值4. 如果有文件被修改(返回值非0):   - 打印勒索信息   - 休眠1秒   - 打印第二条信息5. 否则静默退出

分析出其中的邮件地址 [email protected]

  1. 分析计算机检材,李安弘电脑中记录的存放黄金的保险柜编号是

其中的mp4文件,导出修复,可以直接用视频修复软件,也可以用上面的分析对每个 stco 中的 chunk offset 减去 1337 即可恢复文件,其中一个视频有

# 解密脚本思路import structdef decrypt_mp4(filepath):    with open(filepath, 'rb') as f:        data = bytearray(f.read())    # 找到 "stco" 原子    idx = data.find(b'stco')    if idx == -1:        return    # stco 结构: [4字节size][4字节"stco"][4字节版本/标志][4字节entry_count][entries...]    entry_count_off = idx + 4 + 4  # 版本/标志之后    entry_count = struct.unpack('>I', data[entry_count_off:entry_count_off+4])[0]    # 修改每个 chunk offset    for i in range(entry_count):        off = entry_count_off + 4 + i * 4        val = struct.unpack('>I', data[off:off+4])[0]        val -= 1337  # 减去 1337 还原        struct.pack_into('>I', data, off, val)    with open(filepath, 'wb') as f:        f.write(data)
  1. 分析计算机检材,李安弘电脑中记录的保险柜密码是

在数据盘tools目录发现enrycpxls文件,是et文件的加密方式

丢给ai编写出解码程序

iimport olefileimport structimport osfolder = r'c:\Users\Administrator\Documents\trae_projects\2\zhongyao'filepath = os.path.join(folder, '保险箱的秘密.et')font = {    '0':[[1,0],[2,0],[0,1],[3,1],[0,2],[3,2],[0,3],[3,3],[1,4],[2,4]],    '1':[[2,0],[1,1],[2,1],[2,2],[2,3],[1,4],[2,4],[3,4]],    '2':[[1,0],[2,0],[0,1],[3,1],[2,2],[1,3],[0,4],[1,4],[2,4],[3,4]],    '3':[[0,0],[1,0],[2,0],[3,1],[1,2],[2,2],[3,3],[0,4],[1,4],[2,4]],    '4':[[3,0],[2,1],[3,1],[1,2],[3,2],[0,3],[1,3],[2,3],[3,3],[4,3],[3,4]],    '5':[[0,0],[1,0],[2,0],[0,1],[0,2],[1,2],[2,2],[3,3],[0,4],[1,4],[2,4]],    '6':[[1,0],[2,0],[0,1],[0,2],[1,2],[2,2],[0,3],[3,3],[1,4],[2,4]],    '7':[[0,0],[1,0],[2,0],[3,0],[3,1],[2,2],[1,3],[1,4]],    '8':[[1,0],[2,0],[0,1],[3,1],[1,2],[2,2],[0,3],[3,3],[1,4],[2,4]],    '9':[[1,0],[2,0],[0,1],[3,1],[1,2],[2,2],[3,2],[3,3],[2,4]],    'a':[[1,2],[2,2],[3,2],[0,3],[3,3],[1,4],[2,4],[3,4]],    'b':[[0,0],[0,1],[0,2],[1,2],[2,2],[0,3],[3,3],[0,4],[1,4],[2,4]],    'c':[[1,0],[2,0],[3,0],[0,1],[0,2],[0,3],[1,4],[2,4],[3,4]],    'd':[[3,0],[3,1],[1,2],[2,2],[3,2],[0,3],[3,3],[1,4],[2,4],[3,4]],    'e':[[1,0],[2,0],[0,1],[0,2],[1,2],[2,2],[0,3],[1,4],[2,4]],    'f':[[1,0],[2,0],[1,1],[0,2],[1,2],[2,2],[1,3],[1,4]],    'g':[[1,2],[2,2],[3,2],[0,3],[3,3],[1,4],[2,4],[3,4],[3,5],[1,6],[2,6]],    'h':[[0,0],[0,1],[0,2],[1,2],[2,2],[0,3],[3,3],[0,4],[3,4]],    'i':[[1,0],[1,2],[1,3],[1,4]],    'j':[[2,0],[2,2],[2,3],[2,4],[2,5],[1,6],[0,5]],    'k':[[0,0],[0,1],[0,2],[0,3],[0,4],[2,2],[1,3],[3,3],[2,4]],    'l':[[1,0],[1,1],[1,2],[1,3],[1,4]],    'm':[[0,1],[1,1],[2,1],[3,1],[4,1],[0,2],[2,2],[4,2],[0,3],[4,3]],    'n':[[0,1],[1,0],[2,0],[0,2],[3,2],[0,3],[3,3],[0,4],[3,4]],    'o':[[1,1],[2,1],[0,2],[3,2],[1,3],[2,3]],    'p':[[0,2],[1,2],[2,2],[0,3],[3,3],[0,4],[1,4],[2,4],[0,5],[0,6]],    'q':[[1,2],[2,2],[0,3],[3,2],[3,3],[3,4],[3,5],[4,5]],    'r':[[0,2],[0,3],[0,4],[1,2],[2,2]],    's':[[1,0],[2,0],[3,0],[0,1],[1,2],[2,2],[3,3],[0,4],[1,4],[2,4]],    't':[[1,0],[1,1],[1,2],[1,3],[1,4],[0,2],[2,2]],    'u':[[0,2],[0,3],[3,2],[3,3],[1,4],[2,4],[3,4]],    'v':[[0,0],[4,0],[1,2],[3,2],[2,4]],    'w':[[0,2],[0,3],[1,4],[2,3],[3,4],[4,2],[4,3]],    'x':[[0,0],[4,0],[1,1],[3,1],[2,2],[1,3],[3,3],[0,4],[4,4]],    'y':[[0,0],[4,0],[1,1],[3,1],[2,2],[2,3],[1,4]],    'z':[[0,0],[1,0],[2,0],[3,0],[2,1],[1,2],[0,3],[0,4],[1,4],[2,4],[3,4]],    ':':[[1,1],[1,3]],    '@':[[1,0],[2,0],[0,1],[3,1],[0,2],[2,2],[3,2],[0,3],[1,4],[2,4]],    '.':[[1,4]]}def decrypt_value(val):    part1 = val // 1000    part2 = val % 1000    x = (part1 ^ 85) - 100    y = (part2 ^ 85) - 100    return x, ydef encrypt_coord(x, y):    return ((x + 100) ^ 85) * 1000 + ((y + 100) ^ 85)ole = olefile.OleFileIO(filepath)workbook_data = ole.openstream('Workbook').read()ole.close()print("Checking for missing 'i' character at position 4")print("="*70)expected_i_dots = font['i']print(f"\nExpected 'i' dots: {expected_i_dots}")for dot in expected_i_dots:    x = 4 * 25 + dot[0] * 4    y = dot[1] * 4    enc = encrypt_coord(x, y)    print(f"  Dot ({dot[0]},{dot[1]}) -> coord ({x},{y}) -> encrypted {enc}")    enc_str = str(enc)    enc_utf16 = enc_str.encode('utf-16-le')    idx = workbook_data.find(enc_utf16)    if idx >= 0:        print(f"    FOUND at offset {idx}")    else:        print(f"    NOT FOUND in workbook data")        for start in range(len(workbook_data) - len(enc_str)):            if workbook_data[start:start+len(enc_str)] == enc_str.encode('ascii'):                print(f"    Found as ASCII at offset {start}")                breakprint("\n" + "="*70)print("Searching for ALL possible encrypted values using brute force")print("="*70)all_encrypted = []for char_idx in range(25):    for ch, matrix in font.items():        for dot in matrix:            x = char_idx * 25 + dot[0] * 4            y = dot[1] * 4            enc = encrypt_coord(x, y)            all_encrypted.append((enc, char_idx, ch, dot))all_encrypted.sort()print(f"Total possible encrypted values: {len(all_encrypted)}")found_values = set()for enc, char_idx, ch, dot in all_encrypted:    enc_str = str(enc)    enc_utf16 = enc_str.encode('utf-16-le')    if enc_utf16 in workbook_data:        found_values.add(enc)print(f"Found {len(found_values)} encrypted values in workbook data")missing = []for enc, char_idx, ch, dot in all_encrypted:    if enc not in found_values:        missing.append((enc, char_idx, ch, dot))if missing:    print(f"\nMissing {len(missing)} values:")    for enc, char_idx, ch, dot in missing[:20]:        print(f"  {enc} (char #{char_idx} '{ch}' dot {dot})")else:    print("\nAll expected values found!")print("\n" + "="*70)print("Reconstructing text from found values")print("="*70)char_map = {}for enc, char_idx, ch, dot in all_encrypted:    if enc in found_values:        if char_idx not in char_map:            char_map[char_idx] = set()        char_map[char_idx].add((dot[0], dot[1]))result = ""for idx in sorted(char_map.keys()):    dots = char_map[idx]    dots_set = set(dots)    best_char = '?'    best_score = -1    for ch, matrix in font.items():        matrix_set = set(tuple(d) for d in matrix)        if dots_set == matrix_set:            best_char = ch            best_score = 1.0            break        intersection = len(dots_set & matrix_set)        union = len(dots_set | matrix_set)        jaccard = intersection / union if union > 0 else 0        if jaccard > best_score:            best_score = jaccard            best_char = ch    result += best_char    print(f"  Char #{idx}: '{best_char}' (score={best_score:.2f}) dots={sorted(dots)}")print(f"\n*** FINAL DECODED TEXT: '{result}' ***")

执行后解码得到解码结果: baoxianguimima:583985


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:老皮的碎碎念念 老皮皮 老皮皮《fic2026初赛pc部分wp》

fic2026初赛pc部分wp 网络安全文章

fic2026初赛pc部分wp

文章总结: 本文档记录了FIC2026初赛PC部分的数字取证分析过程,涉及Deepin系统检材分析、钓鱼邮件识别、RSA加密图片解密、VPN端口确认、AI模型信
评论:0   参与:  0