data_clean.py
import json
with open('PushEvent.json', 'r', encoding='utf-8') as file:
data = json.load(file)
filtered_data = [item for item in data if "xz" in item["repo"]["name"]]
with open('xzPushEvent.json', 'w') as f:
json.dump(filtered_data, f, indent=2)
数据处理
GitHub 社交协作数据帮助我们深入分析 Jia Tan 的活动模式及其对项目的潜在影响。其中我们特别关注的是 push 记录,包括每次代码提交的时间戳、提交消息、提交前后的代码变化等重要信息,有助于我们了解 Jia Tan 的贡献频率、提交习惯及其代码修改的影响范围。
为了分析 Jia Tan 在 GitHub 上对 xz 项目的贡献情况,我们对下载的 JSON 格的 Push 记录进行了预处理。利用 Python 中的 json 和 pandas 库,我们首先将 JSON 数据加载并将其中的时间戳转换为 DataFrame 格式,便于进行数据分析。随后,我们筛选出所有与 xz 项目相关的 push 记录,并使用 matplot 将其 push 记录的频率可视化,将与 xz 相关相关的 push 频率与所有的 push 频率进行对比,以更加直观地聚焦于 Jia Tan 对该项目的贡献。通过对这些记录的时间序列分析,我们能够直观地看出 Jia Tan 在不同时间段内的 push 频率,从而评估其对 xz 项目的关注程度。
结合数据分析,我们系统总结了社会工程学攻击概念和常见攻击手段,提出了一套综合的防御体系,旨在为未来的网络安全研究和实践贡献积极的参考。详见报告“Report_基于 XZ 事件的社会工程攻击策略及其防范措施”
如何配置运行环境
编程语言及版本
Python 3.x。
安装必要的库
json: Python 内置库,无需额外安装,用于处理 JSON 数据格式。
pandas: 可使用命令 pip install pandas 进行安装。它提供了高效的数据结构和数据分析工具,在这段代码中用于数据的读取、处理和转换。
matplotlib: 可使用命令 pip install matplotlib 进行安装。它是一个用于绘制各种图表的库,这段代码中用于绘制折线图及设置图表的各种属性。
如何运行代码并得出报告中呈现的结果
1. 准备 JiaTan 的 github Push 记录 PushEvent.json,data_clean.py,data_process.py,并放在同一路径下。
2. 运行 data_clean.py,进行数据清洗,生成 xzPushEvent.json
3. 运行 data_process.py,得到 JiaTan Push 频率可视化图表。
代码
数据清洗
过滤保留名字中包含 “xz” 的仓库,并单独保存为一个 json 文件。
数据挖掘
读取数据并将 Push 记录按照月份进行统计。
数据可视化
用 matplot 将其 push 记录的频率可视化。
运行结果
其他代码展示
爬取 XZ 的邮件列表
将托管在 mail-archive.com/xz-devel@tukaani.org上的 XZ 的邮件列表爬取下来,并保存为 txt 格式文件。
文本分析
需提前从爬取下的邮件列表中筛选出 Jigar Kumar 和 Denis Excoffier 的 txt 格式邮件,并将其与程序放在同一文件夹下。
通过分析这些关键邮件,我们不仅能够识别出邮件中的主要观点和立场,还能进一步理解邮件交流过程中各方的情感态度,从而揭示 Jia Tan 获得开发者权限的过程及其背后的社会工程学。
Lasse Collin 邮件频率分析
需提前从爬取下的邮件列表中筛选出 Lasse Collin 的 txt 格式邮件,并将其与程序放在同一文件夹下。从中我们可以了解到了 Lasse Collin 对 XZ 项目的关注程度。