Update README_V2.md

This commit is contained in:
G13844710775 2024-10-02 11:40:32 +08:00
parent ef0513a47a
commit 0e2c91f956
1 changed files with 73 additions and 72 deletions

View File

@ -1,72 +1,73 @@
我们小组采用python语言解决赛题一漏洞严重等级CVSS研判
******************************************************
文件结构
******************************************************
以下为对python文件的作用的具体解释:
所有代码包含于文件cvss_project中
在cvss_project文件中,共有五部分:数据集部分(data_1),数据分析部分(pictures,data_process.py),训练好的模型(Changed_ESC_random_forest_model.joblib,Changed_ISC_gbt_model.joblib等共六个模型),训练模型的python代码(one_hot_changed.py,one_hot_unchanged等),以及真正用来预测cvss分数的代码部分(final.py)
第一部分:
data_1:包含赛题中给定的标准数据集,以及需要预测的测试集,final.py部分代码需要SIR_train_set.json数据集来统一编码格式,确保在加压过程中此数据集完好。
第二部分:
pictures:通过观察数据集以及查阅官方文档,发现决定cvss分数的几个指标似乎可以拆开来看.也就是说我可以将这个大任务分成几个板块.部分板块合乎常理,即对用户设备以及系统可以造成的伤害越高,威胁就越大,那么,理所当然地,它的评分就应该越高.pictures文件中,有各指标的关系初解.jpg,用图解的方式,清晰解释数据分析的结果
data_process.py:通过pyecharts中的有关动态折线图的库,将数据间的关系可视化.
第三部分:
Changed_ESC_random_forest_model.joblib:以AV,AC,PR,UI,S(changed)为特征,以exploitabilityScore为输出构建的随机森林模型
Changed_ISC_gbt_model.joblib:以C,I,A,S(changed)为特征,以impactScore为输出构建的GBDT模型
Changed_BSC_linear_regression_model.joblib:以exploitabilityScore,impactScore,S(changed)为特征,以baseScore为输出构建的线性回归模型
Unchanged_ESC_random_forest_model:以AV,AC,PR,UI,S(unchanged)为特征,以exploitabilityScore为输出构建的随机森林模型
Unchanged_ISC_random_forest_model.joblib:以C,I,A,S(unchanged)为特征,以impactScore为输出构建的随机森林模型
Unchanged_BSC_linear_regression_model.joblib:以exploitabilityScore,impactScore,S(unchanged)为特征,以baseScore为输出构建的线性回归模型
第四部分:
one_hot_changed.py:用来训练数据集中S为changed的数据,将字符串部分的特征用独热编码编码后,再作为特征输入,同时还以数据集中的impactScore和exploitabilityScore为特征,以baseScore为输出构建线性回归模型
one_hot_unchanged.py:用来训练数据集中S为unchanged的数据,将字符串部分的特征用独热编码编码后,再作为特征输入,同时还以数据集中的impactScore和exploitabilityScore为特征,以baseScore为输出构建线性回归模型
linear_regression.py:以数据集中的impactScore和exploitabilityScore为特征,以baseScore为输出构建线性回归模型(此为没有考虑数据集中Scope特征的废案)
find_optimal_b.py:通过穷举,来找到最你和模型的偏置项b(穷举后,没有找到合适的偏置项b,为废案)
第五部分:
final.py:最终cvss评分预测部分的代码,只要向data_1文件导入一个名为"your_data.json",格式与赛题提供的训练集json数据格式一致的数据集,即可对数据集数据进行预测(对赛题提供的SIR_test_set.json数据集预测,均方根误差约为0.0585),需要注意的是,如果数据集格式文件格式,文件名称,数据格式有误,可能导致程序无法成功运行.
******************************************************
如何配置运行环境
******************************************************
确保python版本为3.12
若想python代码成功运行,要确保安装以下python库:
pytorch 2.4.0
pytorch-cuda 11.4
pandas 2.2.2
numpy 1.26.4
scikit-learn 1.5.1
joblib 1.4.2
pyecharts 2.0.6 (pyecharts库主要是开发前期数据可视化用于观察规律的,若不想看数据的原始处理,可以不安装这个库)
matplotlib 3.9.2 (matplotlib库主要是将预测后的数据可视化,若不想安装此库,将final.py中相关代码删去即可)
******************************************************
构建模型所用的数据集格式
******************************************************
在输入数据前,你需要知道的是,我们以SIR_train_set.json数据集中数据为输入,构建出此模型,所以你想要预测的数据文件格式务必为json,且数据格式应如SIR_train_set.json数据集中数据格式一致,训练集中一份数据如下:
{
"CVE_ID": "CVE-2018-20847",
"Issue_Url_old": "https://github.com/uclouvain/openjpeg/issues/431",
"Issue_Url_new": "https://github.com/uclouvain/openjpeg/issues/431",
"Repo_new": "uclouvain/openjpeg",
"Issue_Created_At": "2014-11-14T19:45:14Z",
"description": "Heap buffer overflow in opj_tcd_init_decode_tile. Originally reported on Google Code with ID NUMBERTAG ERRORTAG Reported by mayeut URLTAG on NUMBERTAG",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H",
"severity": "HIGH",
"baseScore": 8.8,
"impactScore": 5.9,
"exploitabilityScore": 2.8
},
******************************************************
如何得到期望效果
******************************************************
一份数据中其他键对最终结果影响不大,唯有vectorString键与其所对应的值在最终评分预测结果影响较大.保证vectorString正确,即确保vectorString对应值包含"AV","AC","PR","UI","S","C","I","A"八个指标.
务必确保vectorString对应值包含"AV","AC","PR","UI","S","C","I","A"八个指标!
务必确保vectorString对应值包含"AV","AC","PR","UI","S","C","I","A"八个指标!!
务必确保vectorString对应值包含"AV","AC","PR","UI","S","C","I","A"八个指标!!!
重要的事情说三遍.
除了vectorString,还请确保数据集中包含最终输出,程序中设置了读取数据中的输出值的功能(以便打印预测值与实际值,并计算均方根误差),所以如果数据集中缺少输出,会导致程序无法运行.
务必确保数据集中包含输出值!
务必确保数据集中包含输出值!!
务必确保数据集中包含输出值!!!
重要的事情说三遍.
程序中包含打印所有预测值与实际值的功能,可选择性地将这部分代码注释掉.
我们小组采用python语言解决赛题一漏洞严重等级CVSS研判
******************************************************
文件结构
******************************************************
以下为对python文件的作用的具体解释:
所有代码包含于文件cvss_project中,而你需要将五个分卷下载下来,解压第一个分卷,来得到cvss_project文件夹.
在cvss_project文件中,共有五部分:数据集部分(data_1),数据分析部分(pictures,data_process.py),训练好的模型(Changed_ESC_random_forest_model.joblib,Changed_ISC_gbt_model.joblib等共六个模型),训练模型的python代码(one_hot_changed.py,one_hot_unchanged等),以及真正用来预测cvss分数的代码部分(final.py)
第一部分:
data_1:包含赛题中给定的标准数据集,以及需要预测的测试集,final.py部分代码需要SIR_train_set.json数据集来统一编码格式,确保在加压过程中此数据集完好。
第二部分:
pictures:通过观察数据集以及查阅官方文档,发现决定cvss分数的几个指标似乎可以拆开来看.也就是说我可以将这个大任务分成几个板块.部分板块合乎常理,即对用户设备以及系统可以造成的伤害越高,威胁就越大,那么,理所当然地,它的评分就应该越高.pictures文件中,有各指标的关系初解.jpg,用图解的方式,清晰解释数据分析的结果
data_process.py:通过pyecharts中的有关动态折线图的库,将数据间的关系可视化.
第三部分:
Changed_ESC_random_forest_model.joblib:以AV,AC,PR,UI,S(changed)为特征,以exploitabilityScore为输出构建的随机森林模型
Changed_ISC_gbt_model.joblib:以C,I,A,S(changed)为特征,以impactScore为输出构建的GBDT模型
Changed_BSC_linear_regression_model.joblib:以exploitabilityScore,impactScore,S(changed)为特征,以baseScore为输出构建的线性回归模型
Unchanged_ESC_random_forest_model:以AV,AC,PR,UI,S(unchanged)为特征,以exploitabilityScore为输出构建的随机森林模型
Unchanged_ISC_random_forest_model.joblib:以C,I,A,S(unchanged)为特征,以impactScore为输出构建的随机森林模型
Unchanged_BSC_linear_regression_model.joblib:以exploitabilityScore,impactScore,S(unchanged)为特征,以baseScore为输出构建的线性回归模型
第四部分:
one_hot_changed.py:用来训练数据集中S为changed的数据,将字符串部分的特征用独热编码编码后,再作为特征输入,同时还以数据集中的impactScore和exploitabilityScore为特征,以baseScore为输出构建线性回归模型
one_hot_unchanged.py:用来训练数据集中S为unchanged的数据,将字符串部分的特征用独热编码编码后,再作为特征输入,同时还以数据集中的impactScore和exploitabilityScore为特征,以baseScore为输出构建线性回归模型
linear_regression.py:以数据集中的impactScore和exploitabilityScore为特征,以baseScore为输出构建线性回归模型(此为没有考虑数据集中Scope特征的废案)
find_optimal_b.py:通过穷举,来找到最你和模型的偏置项b(穷举后,没有找到合适的偏置项b,为废案)
第五部分:
final.py:最终cvss评分预测部分的代码,只要向data_1文件导入一个名为"your_data.json",格式与赛题提供的训练集json数据格式一致的数据集,即可对数据集数据进行预测(对赛题提供的SIR_test_set.json数据集预测,均方根误差约为0.0585),需要注意的是,如果数据集格式文件格式,文件名称,数据格式有误,可能导致程序无法成功运行.
******************************************************
如何配置运行环境
******************************************************
确保python版本为3.12
若想python代码成功运行,要确保安装以下python库:
pytorch 2.4.0
pytorch-cuda 11.4
pandas 2.2.2
numpy 1.26.4
scikit-learn 1.5.1
joblib 1.4.2
pyecharts 2.0.6 (pyecharts库主要是开发前期数据可视化用于观察规律的,若不想看数据的原始处理,可以不安装这个库)
matplotlib 3.9.2 (matplotlib库主要是将预测后的数据可视化,若不想安装此库,将final.py中相关代码删去即可)
******************************************************
构建模型所用的数据集格式
******************************************************
在输入数据前,你需要知道的是,我们以SIR_train_set.json数据集中数据为输入,构建出此模型,所以你想要预测的数据文件格式务必为json,且数据格式应如SIR_train_set.json数据集中数据格式一致,训练集中一份数据如下:
{
"CVE_ID": "CVE-2018-20847",
"Issue_Url_old": "https://github.com/uclouvain/openjpeg/issues/431",
"Issue_Url_new": "https://github.com/uclouvain/openjpeg/issues/431",
"Repo_new": "uclouvain/openjpeg",
"Issue_Created_At": "2014-11-14T19:45:14Z",
"description": "Heap buffer overflow in opj_tcd_init_decode_tile. Originally reported on Google Code with ID NUMBERTAG ERRORTAG Reported by mayeut URLTAG on NUMBERTAG",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H",
"severity": "HIGH",
"baseScore": 8.8,
"impactScore": 5.9,
"exploitabilityScore": 2.8
},
******************************************************
如何得到期望效果
******************************************************
一份数据中其他键对最终结果影响不大,唯有vectorString键与其所对应的值在最终评分预测结果影响较大.保证vectorString正确,即确保vectorString对应值包含"AV","AC","PR","UI","S","C","I","A"八个指标.
务必确保vectorString对应值包含"AV","AC","PR","UI","S","C","I","A"八个指标!
务必确保vectorString对应值包含"AV","AC","PR","UI","S","C","I","A"八个指标!!
务必确保vectorString对应值包含"AV","AC","PR","UI","S","C","I","A"八个指标!!!
重要的事情说三遍.
除了vectorString,还请确保数据集中包含最终输出,程序中设置了读取数据中的输出值的功能(以便打印预测值与实际值,并计算均方根误差),所以如果数据集中缺少输出,会导致程序无法运行.
务必确保数据集中包含输出值!
务必确保数据集中包含输出值!!
务必确保数据集中包含输出值!!!
重要的事情说三遍.
你将会看到一个分卷解压的cvss_project.rar文件,共五个分卷,分别下载之后,解压第一个压缩文件即可.
程序中包含打印所有预测值与实际值的功能,可选择性地将这部分代码注释掉.