Files
Kernelhub/DocumentGeneration.py
2023-02-02 18:36:00 +08:00

124 lines
7.5 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# !/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import re
Path="/Users/ascotbe/code/Kernelhub"
window_success_list=[]
window_failure_list=[]
def WindowsConfig():
#中文配置的开头
chinese_begin="""let config = {\n title: 'Windows',\n home: 'Info.md',\n repo: 'Ascotbe/Kernelhub/Windows',\n nav: [\n {\n title: '简介', path: '/'\n },\n {\n title: '目录导航',type: 'dropdown', items: [\n {\n title: "有利用脚本(测试成功)",path: '/TestSuccess'\n },"""
#所有配置的结尾
config_end="""\n ]\n },\n ],\n tocVisibleDepth: 10,\n plugins: []\n};"""
#下表是黑名单,垃圾文件
reject_list=['.DS_Store', '.git','.idea', '.gitignore','LICENSE', 'Patch', 'README.CN.md', 'README.md', 'TestFailure', 'docs', 'DocumentGeneration.py','StencilPlate']
#英文配置的开头
english_begin="""let config = {\n title: 'Windows',\n home: 'Info.md',\n repo: 'Ascotbe/Kernelhub/Windows',\n nav: [\n {\n title: 'Introduction', path: '/'\n },\n {\n title: 'DirectoryNavigation',type: 'dropdown', items: [\n {\n title: "exploit script (successful test)",path: '/TestSuccess'\n },"""
#处理成功的编号
for i in os.listdir(Path+"/Windows"):
if i not in reject_list:
window_success_list.append(i)
#循环成功的编号和开头配置进行拼接
for x in sorted(window_success_list):
chinese_begin+="""\n {\n path: '/CN/"""+x+"""', source: 'https://raw.githubusercontent.com/Ascotbe/Kernelhub/master/Windows/"""+x+"""/README.md'\n },"""
english_begin+="""\n {\n path: '/EN/"""+x+"""', source: 'https://raw.githubusercontent.com/Ascotbe/Kernelhub/master/Windows/"""+x+"""/README_EN.md'\n },"""
#插入中间内容,未测试成功内容
chinese_begin+="""\n {\n title: '有利用脚本(测试未成功)', path: '/TestFailure'\n },"""
english_begin+="""\n {\n title: 'exploit script (test failure)', path: '/TestFailure'\n },"""
for i in os.listdir(Path+"/Windows/TestFailure"):
if i not in reject_list:
window_failure_list.append(i)
#写入windows测试失败漏洞
for xx in sorted(window_failure_list):
chinese_begin+="""\n {\n path: '/CN/"""+xx+"""', source: 'https://raw.githubusercontent.com/Ascotbe/Kernelhub/master/Windows/TestFailure/"""+xx+"""/README.md'\n },"""
english_begin+="""\n {\n path: '/EN/"""+xx+"""', source: 'https://raw.githubusercontent.com/Ascotbe/Kernelhub/master/Windows/TestFailure/"""+xx+"""/README_EN.md'\n },"""
chinese_config_file=open(Path+"/docs/Windows/Docs/config.js","w+")
chinese_config_file.write(chinese_begin+config_end)
chinese_config_file.close()
english_config_file=open(Path+"/docs/Windows/EnglishDocs/config.js","w+")
english_config_file.write(english_begin+config_end)
english_config_file.close()
def WindowsMarkdown():
"""
从Windows目录中提取README内容中的《编号列表》内容进行拆分判断那些是测试过的那些是没测试过的
把他们分成两个文件存放,然后再区分下语言
"""
common_vulnerabilities_and_exposures_list=[]
chinese_success_list=[]
chinese_failure_list=[]
english_success_list=[]
english_failure_list=[]
#打开Windows目录下面的文件读取内容
file=open(Path+"/Windows/README.md","r").read()
#提取《编号列表》的内容
date = re.findall(r'(?<=> Numbered list)([\w\W]+)(?=### Required environment)', file)[0].split("\n")
#进行处理拼接
for i in date:
if i != "":
common_vulnerabilities_and_exposures_list.append(i)
for x in common_vulnerabilities_and_exposures_list[2:]:
date = re.findall(r'(?<=\[)([\w\W]+)(?=\])', x)[0]
if date in window_success_list:
chinese_success_list.append(re.sub(r'(?<=\()([\w\W]+)(?=\))', "http://kernelhub.ascotbe.com/Windows/Docs/#/CN/"+date, x))
english_success_list.append(re.sub(r'(?<=\()([\w\W]+)(?=\))', "http://kernelhub.ascotbe.com/Windows/EnglishDocs/#/EN/"+date, x))
if date in window_failure_list:
chinese_failure_list.append(re.sub(r'(?<=\()([\w\W]+)(?=\))', "http://kernelhub.ascotbe.com/Windows/Docs/#/CN/"+date, x))
english_failure_list.append(re.sub(r'(?<=\()([\w\W]+)(?=\))', "http://kernelhub.ascotbe.com/Windows/EnglishDocs/#/EN/"+date, x))
chinese_success_date=common_vulnerabilities_and_exposures_list[0]+"\n"+common_vulnerabilities_and_exposures_list[1]+"\n"
chinese_failure_date=common_vulnerabilities_and_exposures_list[0]+"\n"+common_vulnerabilities_and_exposures_list[1]+"\n"
english_success_date=common_vulnerabilities_and_exposures_list[0]+"\n"+common_vulnerabilities_and_exposures_list[1]+"\n"
english_failure_date=common_vulnerabilities_and_exposures_list[0]+"\n"+common_vulnerabilities_and_exposures_list[1]+"\n"
for x1 in chinese_success_list:
chinese_success_date+=x1+"\n"
for x2 in chinese_failure_list:
chinese_failure_date+=x2+"\n"
for x3 in english_success_list:
english_success_date+=x3+"\n"
for x4 in english_failure_list:
english_failure_date+=x4+"\n"
#写入文件中
chinese_success_file=open(Path+"/docs/Windows/Docs/TestSuccess.md","w+")
chinese_success_file.write(chinese_success_date)
chinese_success_file.close()
chinese_failure_file=open(Path+"/docs/Windows/Docs/TestFailure.md","w+")
chinese_failure_file.write(chinese_failure_date)
chinese_failure_file.close()
english_success_file=open(Path+"/docs/Windows/EnglishDocs/TestSuccess.md","w+")
english_success_file.write(english_success_date)
english_success_file.close()
english_failure_file=open(Path+"/docs/Windows/EnglishDocs/TestFailure.md","w+")
english_failure_file.write(english_failure_date)
english_failure_file.close()
"""
处理Windows目录下面readme文件没有测试成功的编号进行更新
"""
read_readme_english_file_data = open(Path + "/Windows/README.md", "r").read()
read_readme_chinese_file_data = open(Path + "/Windows/README.CN.md", "r").read()
header="\n\n| SecurityBulletin | | | |\n| ---------------- |---------------- | ---------------- | ---------------- |\n"
common_vulnerabilities_and_exposures=""
count=0
for i in sorted(window_failure_list):
count+=1
common_vulnerabilities_and_exposures += "| " + str(i)
if count>4:
header+=common_vulnerabilities_and_exposures+"|\n"
common_vulnerabilities_and_exposures=""
count=0
if count!=0:
header+=str(common_vulnerabilities_and_exposures)+" |\n"
#对内容进行替换
tmp_english = re.sub(r'(?<=and welcome to submit PR)([\w\W]+)(?=### Disclaimer)', header+"\n\n",read_readme_english_file_data)
tmp_chinese = re.sub(r'(?<=欢迎提交PR)([\w\W]+)(?=### 免责声明)', header+"\n\n",read_readme_chinese_file_data)
open(Path + "/Windows/README.md", "w+").write(tmp_english)
open(Path + "/Windows/README.CN.md", "w+").write(tmp_chinese)
if __name__ == '__main__':
WindowsConfig()
WindowsMarkdown()