forked from JLLL128/Penetrautomator
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Penetrautomator_steady_arg.py
74 lines (68 loc) · 3 KB
/
Penetrautomator_steady_arg.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import os
import json
import shutil
import requests
import json
import datetime
from urllib.parse import urlparse
from pathlib import Path
from requests.exceptions import MissingSchema
class CMS_Identification:
def __init__(self, target_url,timestamp):
self.timestamp=timestamp
self.target_url = target_url
self.api_key = 'w9vllsvks6tk4ynmhwicwaxth2c9kmuokb9rnrih4qdgvuo8nak1a26ggee7jou4j2n2es' # Replace this with your actual API key
self.script_path = os.path.dirname(os.path.realpath(__file__))
self.main_path=Path(self.script_path).parent.parent.parent
parsed_url = urlparse(self.target_url)
file_name = f"{parsed_url.netloc}_cms.json"
self.output_dir = os.path.join(self.main_path, 'output_file',f'{timestamp}')
if not os.path.exists(self.output_dir):
os.makedirs(self.output_dir)
self.output_file=os.path.join(self.output_dir, file_name)
self.logfile = f"{self.main_path}\\result\\{timestamp}\\log.json"
os.makedirs(os.path.dirname(self.logfile), exist_ok=True)
def progress_record(self, module=None, finished=False):
if os.path.exists(self.logfile) is False:
shutil.copy(f"{self.main_path}\\config\\log_template.json", f"{self.main_path}\\result\\{self.timestamp}\\log.json")
with open(self.logfile, "r", encoding="utf-8") as f1:
log_json = json.loads(f1.read())
if finished is False:
if log_json[module] is False:
return False
elif log_json[module] is True:
return True
elif finished is True:
log_json[module] = True
with open(self.logfile, "w", encoding="utf-8") as f:
f.write(json.dumps(log_json))
return True
def query_cms(self):
api_url = 'https://whatcms.org/API/Tech'
params = {
'key': self.api_key,
'url': self.target_url,
}
response = requests.get(api_url, params=params)
return response.json()
def run_cms_identification(self):
print("CMS Query is running, please wait...")
result = self.query_cms()
final_result = {"url": self.target_url, "code": result["result"]["code"], "msg": result["result"]["msg"]}
if result["result"]["code"] == 200:
final_result["results"] = result["results"]
with open(self.output_file, 'w') as f:
json.dump(final_result, f,indent=4)
print("CMS Query has completed its work")
self.progress_record(module='cms_identification', finished=True)
def get_CMS(target_url,timestamp):
tool = CMS_Identification(target_url,timestamp)
tool.run_cms_identification()
if __name__ == "__main__":
try:
TARGET_URL = input("请输入目标网站url:")
except MissingSchema:
print("无效的URL,请确保输入正确的网址,例如www.example.com")
exit(1)
TIMESTAMP = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
get_CMS(TARGET_URL,TIMESTAMP)