2024“龙信杯“电子数据取证竞赛-计算机取证题目Writeup

文章关键词:电子数据取证、手机取证、计算机取证、云取证、电子物证

龙信杯计算机检材-分析

前置

发现电脑中有EFS加密文件,故使用仿真软件保持原有密码进行仿真

1.分析计算机检材,嫌疑人在将其侵公数据出售前在Pycharm中进行了AES加密,用于加密的key是多少?[标准格式:1A23456ABCD]

参考答案:65B2564BG89F16G9

解题思路:

使用仿真软件对计算机检材进行仿真,打开桌面Pycharm软件,发现encrypted.py脚本,定位key值。

2.分析计算机检材,身份证为"371963195112051505"这个人的手机号码是多少?[标准格式:13013524420]

参考答案:15075547510

解题思路:

2.1根据key"65B2564BG89F16G9"、iv"83E6CBEF547944CF"对身份证"371963195112051505"进行加密

在线加密地址:https://www.mklab.cn/utils/aes

2.2 在文件中搜索对应值,解密当行其他值

3.分析计算机检材,对解密后的身份证数据列进行单列去重操作,重复的身份证号码数量是多少?(身份证不甄别真假)[标准格式:100]

参考答案:0

解题思路:

3.1 对加密文件“encrypted_data.txt”进行解密,编写代码如下:

import os
import time
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad
from concurrent.futures import ProcessPoolExecutor, as_completed
from tqdm import tqdm

defaes_decrypt(encrypted_data, key, iv):
   cipher =AES.new(key, AES.MODE_CBC, iv)
   decrypted_data =cipher.decrypt(encrypted_data)
   unpadded_data =unpad(decrypted_data, AES.block_size)
   returnunpadded_data.decode("utf-8")

defprocess_chunk(lines, key, iv):
   result =[]
   for line inlines:
       parts =line.strip().split(',')
      index = parts[0]
      decrypted_parts = [index]
     for part inparts[1:]:
          encrypted_part = bytes.fromhex(part)
          decrypted_part =aes_decrypt(encrypted_part, key, iv)
          decrypted_parts.append(decrypted_part)
      result.append(",".join(decrypted_parts)+ "\n")
  return result

defget_file_line_count(file_path):
   withopen(file_path, 'r', encoding='utf-8') as f:
       line_count = sum(1for _ inf)
   return line_count

defprocess_data(input_file, output_file, key, iv, num_workers=32, chunk_size=10000):
  total_lines =get_file_line_count(input_file)
   num_workers =min(num_workers, os.cpu_count() * 2)
  withProcessPoolExecutor(max_workers=num_workers) as executor, \
           open(input_file, "r") as f_in, \
           open(output_file, "w") as f_out:
       futures = []
      lines_processed = 0
      pbar = tqdm(desc="解密进度", unit="行", total=total_lines)

      try:
           whileTrue:
               lines =[f_in.readline() for _ inrange(chunk_size)]
               lines =list(filter(None, lines))
             if notlines:
                   break
               future =executor.submit(process_chunk, lines, key, iv)
              futures.append((future, len(lines)))
               forfuture, num_lines in futures:
                  iffuture.done():
                       result =future.result()
           

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值