目錄
GitHub地址: https://github.com/ielcome2017/xss.git
GitHub地址: https://github.com/ielcome2017/xss.git
1. 項目結構
data 存放所有的數據
cache
| 中間數據
model
| 存放訓練後的模型
|——preprocessing 存放預處理模塊的結構
src
| train 訓練和測試
|——preprocessing 預處理模塊
|——|—— parser.py 正則化清洗數據
|——|—— load_data.py 讀取數據,生成特徵空間,並將載荷數據轉化成列表
|——|—— vec.py 攻擊載荷生成的字符列表生成word2vec
2. 過程
預處理中,
load_data文件中XssData類
第一步加載原始數據,按照不同類別打上標籤。
第二步劃分訓練集測試集
第三步將訓練集中的文本用parser解析後,統計所有詞頻,提取頻率最高的300個作爲特徵
訓練過程,
訓練集爲兩列, 第一列爲載荷,第二列爲標籤,每個載荷解析後爲一個列表
第一步將第一列用load_data中的ParseData解析爲字符串列表。
第二步將以上解析後的載荷訓練word2vec。
第三步將所有解析後的載荷用word2vec轉化爲向量,其中每一條載荷解析後列表的元素都可以轉化爲一個向量,將該載荷生成的所有向量相加。
原始數據爲,第一列爲載荷,第二列爲標籤:
[['%3c/title%3e%3cscript%3ealert(%22xss%22)%3c/script%3e', 1
['COLLCC%3D3442798258%26', 1], ...]
單條數據
解析載荷'%3c/title%3e%3cscript%3ealert(%22xss%22)%3c/script%3e',結果爲:
['</title>', '<script>', 'alert(', '"xss"', ')', '</script>']
[array([ 1.4576534 , 3.2204003 , -3.0143356 , ...]),
array([ 0.89312494, 0.98994863, -2.2412763, ...]),
array([ 1.4459274 , -1.42252 , 1.8725339 ,...]),
array([-0.13015617, -0.02658045, -1.85561 ,
array([ 0.8952658 , -0.48496005, -0.84033364,
array([ 4.7532024 , 1.5638791 , -0.28219923,
列表各元素按列相加結果爲
[9.3150177 3.84016752 -6.36122084 ...]
原始數據最終結果
[[9.3150177 3.84016752 -6.36122084]
[ -0.60598457 -0.0251843 1.80305624 ...]]
3. 結果
precision recall f1-score support
0.0 0.99 1.00 1.00 40026
1.0 1.00 0.97 0.98 8128
accuracy 0.99 48154
macro avg 1.00 0.98 0.99 48154
weighted avg 0.99 0.99 0.99 48154
4. 使用
初始化Detect()類以後,首先train.py中train_predict,然後可以使用main.py。直接將載荷當作參數傳入detect.predict