mirror of
https://mirror.skon.top/github.com/Ascotbe/Kernelhub
synced 2026-04-21 05:13:02 +08:00
124 lines
7.5 KiB
Python
124 lines
7.5 KiB
Python
# !/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()
|