Python Digital Forensics 简明教程
Artifact Report
现在您已熟悉在本地系统上安装和运行 Python 命令,让我们详细了解取证概念。本章将解释与处理 Python 数字取证中的痕迹有关的各种概念。
Need of Report Creation
数字取证的过程包括报告作为第三阶段。这是数字取证过程最重要的部分之一。由于以下原因,需要进行报告创建:
-
它是数字取证检查员概述调查过程及其调查结果的文件。
-
另一个检查员可以参考一份良好的数字取证报告,通过给出相同的存储库来获得相同的结果。
-
这是一份技术和科学文件,包含在数字证据的 1 和 0 内发现的事实。
General Guidelines for Report Creation
报告的目的是向读者提供信息,并且必须具有一个坚实的基础。如果在没有一些一般准则或标准的情况下准备报告,调查人员可能会在有效地提供调查结果时遇到困难。创建数字取证报告时必须遵循一些一般准则,如下所示:
-
Summary - 报告必须包含信息的简要摘要,以便读者能确定报告的目的。
-
Tools used - 我们必须提到用于执行数字取证过程的工具,包括其用途。
-
Repository - 假设,我们调查了某人的计算机,然后证据的摘要和电子邮件、内部搜索历史等相关材料的分析必须包含在报告中,以便可以清楚地说明案件。
-
Recommendations for counsel − 报告必须含有建议,指示法律顾问在根据报告中的调查结果审理案件。
Creating Different Type of Reports
在上述部分中,我们了解到报告在数字取证中的重要性,以及创建报告的指导原则。以下是用于创建不同类型报告的一些 Python 格式−
CSV Reports
最常见的报告输出格式之一是 CSV 电子表格报告。你可以使用 Python 代码创建 CSV 来创建已处理数据报告,如下所示−
首先,导入有用的库来编写电子表格−
from __future__ import print_function
import csv
import os
import sys
现在,调用以下方法−
Write_csv(TEST_DATA_LIST, ["Name", "Age", "City", "Job description"], os.getcwd())
我们使用以下全局变量表示样本数据类型−
TEST_DATA_LIST = [["Ram", 32, Bhopal, Manager],
["Raman", 42, Indore, Engg.],
["Mohan", 25, Chandigarh, HR],
["Parkash", 45, Delhi, IT]]
接下来,让我们定义继续进行其他操作的方法。我们在“w”模式下打开文件,并将换行关键字参数设置为一个空字符串。
def Write_csv(data, header, output_directory, name = None):
if name is None:
name = "report1.csv"
print("[+] Writing {} to {}".format(name, output_directory))
with open(os.path.join(output_directory, name), "w", newline = "") as \ csvfile:
writer = csv.writer(csvfile)
writer.writerow(header)
writer.writerow(data)
如果你运行上述脚本,你将得到存储在 report1.csv 文件中的以下详细信息。
Name |
Age |
City |
Designation |
Ram |
32 |
Bhopal |
Managerh |
Raman |
42 |
Indore |
Engg |
Mohan |
25 |
Chandigarh |
HR |
Parkash |
45 |
Delhi |
IT |
Excel Reports
报告的另一个常见输出格式是 Excel(.xlsx)电子表格报告。我们可以使用 Excel 创建表格并绘制图表。我们可以使用 Python 代码以 Excel 格式创建已处理数据报告,如下所示−
首先,导入 XlsxWriter 模块来创建电子表格−
import xlsxwriter
现在,创建一个工作簿对象。为此,我们需要使用 Workbook() 构造函数。
workbook = xlsxwriter.Workbook('report2.xlsx')
现在,使用 add_worksheet() 模块创建一个新工作表。
worksheet = workbook.add_worksheet()
接下来,将以下数据写入工作表 −
report2 = (['Ram', 32, ‘Bhopal’],['Mohan',25, ‘Chandigarh’] ,['Parkash',45, ‘Delhi’])
row = 0
col = 0
您可以迭代这些数据,并按如下方式写入 −
for item, cost in (a):
worksheet.write(row, col, item)
worksheet.write(row, col+1, cost)
row + = 1
现在,让我们使用 close() 方法关闭此 Excel 文件。
workbook.close()
上面的脚本将创建一个名为 report2.xlsx 的 Excel 文件,其中包含以下数据 −
Ram |
32 |
Bhopal |
Mohan |
25 |
Chandigarh |
Parkash |
45 |
Delhi |
Investigation Acquisition Media
对调查者来说,拥有详细的调查记录非常重要,以便准确回忆调查结果或将所有调查环节整理到一起。截图对于跟踪特定调查所采取的步骤非常有用。借助以下 Python 代码,我们可以截屏并将其保存在硬盘上以备将来使用。
首先,使用下列命令安装名为 pyscreenshot 的 Python 模块 −
Pip install pyscreenshot
现在,导入必要的模块,如下所示 −
import pyscreenshot as ImageGrab
使用以下代码行获取屏幕截图 −
image = ImageGrab.grab()
使用以下代码行将屏幕截图保存到给定位置 −
image.save('d:/image123.png')
现在,如果您想将屏幕截图弹出一个图表,可以使用以下 Python 代码 −
import numpy as np
import matplotlib.pyplot as plt
import pyscreenshot as ImageGrab
imageg = ImageGrab.grab()
plt.imshow(image, cmap='gray', interpolation='bilinear')
plt.show()