我一直在写一个脚本,当我输入一个漏洞名时,它将为我恢复CVSS3分数,除了一个小的恼人的细节之外,我基本上已经让它正常工作了。
π ~/Documents/Tools/Scripts ❯ python3 CVSS3-Grabber.py
Paste Vulnerability Name: PHP 7.2.x < 7.2.21 Multiple Vulnerabilities.
Base Score: None
Vector: <re.Match object; span=(27869, 27913), match='CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:H'>
Temporal Vector: <re.Match object; span=(27986, 28008), match='CVSS:3.0/E:U/RL:O/RC:C'>可以看出,输出可能更整洁,我更喜欢这样的东西:
π ~/Documents/Tools/Scripts ❯ python3 CVSS3-Grabber.py
Paste Vulnerability Name: PHP 7.2.x < 7.2.21 Multiple Vulnerabilities.
Base Score: None
Vector: CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:H然而,我一直在努力找出如何获得更好的输出,是否有一个简单的部分,我错过了,可以为我做到这一点?或者,首先将输出放入文件中,这样我就可以根据自己的需要对文本进行操作。
下面是我的代码,希望得到任何关于如何改进的反馈,因为我最近又回到了python和一般脚本中。
import requests
import re
from bs4 import BeautifulSoup
from googlesearch import search
def get_url():
vuln = input("Paste Vulnerability Name: ") + "tenable"
for url in search(vuln, tld='com',lang='en',num=1,start=0,stop=1,pause=2.0):
return url
def get_scores(url):
response = requests.get(url)
html = response.text
cvss3_temporal_v = re.search("CVSS:3.0/E:./RL:./RC:.",html)
cvss3_v = re.search("CVSS:3.0/AV:./AC:./PR:./UI:./S:./C:./I:./A:.",html)
cvss3_basescore = re.search("Base Score:....",html)
print("Base Score: ",cvss3_basescore)
print("Vector: ",cvss3_v)
print("Temporal Vector: ",cvss3_temporal_v)
urll = get_url()
get_scores(urll)
### IMPROVEMENTS ###
# Include the base score in output
# Tidy up output
# Vulnerability list?
# modify to accept flags, i.e python3 CVSS3-Grabber.py -v VULNAME ???
# State whether it is a failing issue or Action point谢谢!
发布于 2020-01-27 12:10:47
不要打印匹配对象。打印匹配值。
在Python中,这个值可以通过.group() method访问。如果没有regex子组(或者您想要整个匹配,如本例中所示),则在调用它时不要指定任何参数:
print("Vector: ", cvss3_v.group())https://stackoverflow.com/questions/59930765
复制相似问题