整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

Nessus使用教程

Nessus使用教程

essus是一个功能强大而又易于使用的远程安全扫描器,它不仅免费而且更新极快。安全扫描器的功能是对指定网络进行安全检查,找出该网络是 否存在有导致对手攻击的安全漏洞。该系统被设计为client/sever模式,服务器端负责进行安全检查,客户端用来配置管理服务器端。在服务端还采用 了plug-in的体系,允许用户加入执行特定功能的插件,这插件可以进行更快速和更复杂的安全检查。在Nessus中还采用了一个共享的信息接口,称之 知识库,其中保存了前面进行检查的结果。检查的结果可以HTML、纯文本、LaTeX(一种文本文件格式)等几种格式保存。



1、 打开浏览器输入IP加端口8834登录Nessus2、 输入账号密码,

3、 登录成功后,进入到首页

4、 点击侧边栏policies,显示策略界面

5、 点击new policy,显示策略模板

6、 选择advanced scan,填写策略名称

7、 点击permission,选择can use,设置所有人可用

8、 单击Plugins标签,该界面显示了所有插件程序,默认全部是启动的enabled。在该界面可以单击右上角Disable All按钮,禁用所有启动的插件程序。或直接点击enabled状态,即可禁用该插件。

9、 点击save即可看到新增的策略,表示该策略创建成功。

10、 策略创建成功后,必须要新建扫描任务才能实现漏洞扫描。点击My Scans到新增扫描任务界面,点击New scan新建扫描任务。可以选择默认扫描策略。

11、 也可以点击user Defined选择自定义添加的扫描策略

12、 输入任务名称,扫描IP地址。点击save即可看到新增的扫描任务。

13、 新增的扫描任务状态为空

14、 点击launch,启动扫描任务,可看到任务正在running,可停止或者暂停扫描任务

15、 扫描完成后即显示completed,点击该任务即可查看到扫描报告。右侧显示详细扫描任务详细信息,如扫描任务名称、状态、策略、扫描时间等。右下角以圆形图显示了漏洞的危险情况,分别使用不同颜色显示漏洞的严重性。

16、 关于漏洞的信息使用在该界面可以单击Host列中的显示的地址,显示扫描主机的漏洞情况,该列中的数字表示扫描到的信息数。本例中选择172.24.1.62地址。使用的自定义策略。

17、 点击某一漏洞,将显示具体的漏洞信息

18、 点击export,即可导出扫描报告,可选择Nessus、HTML、CSV和Nessus DB格式

19、 选择custom点击export可下载

20、 导出摘要显示如图

导出详细报告显示如图


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/guo_yan_gy/article/details/88840725

们使用Power BI Desktop来制作上面这个图形,需要历年保险保费收入的数据作为依据,网站上有数据公布:

这个页面的地址:

/web/site0/tab5205/info4129096.htm

每个月都会有一个对应的地址,要到那里找到这些个地址呢?

我们找到了这样一个页面:

这个页面里有我们需要的每个月的数据的连接,这样的页面一共有8个,这8个页面的URL是连续的。

web/site0/tab5205/module14413/page1.htm

就是page1到page8

我们打开Power BI Desktop的Power Query,建立一个1到8的表

并且把ID这一列设置成文本,这是第一步。

第二步:要建立一个查询,从web获取数据,设置乘csv格式

复制地址栏里的公式,备用。(实在记不住这些函数,这样偷点懒,嘻嘻)

第三步:回到开始的表,自定义列,用刚才复制的公式,修改一下。

page后面的数字用ID替换一下。

第四步:数据清理,我们要的是每个月的URL,这个过程稍微有点复杂,但是用到的功能很简单,就是符号分列,筛选,替换。

1、用<a href="分列,会直接把我们需要的URL分离出来

2、筛选出带有info的行

3、再分列,用双引号分列

至此已经得到了我们想要的URL.

4、为了能够区分年月,还需要做些处理,取title后面的列,提取出来年和月,这部分就略过了。结果是这样的:

第五步:获取具体数据,如果不记得函数,还是先建立一个自web的查询,复制公式,然后自定义列。

用URL替换网址后面的部分。

第六步:展开并整理数据,这里要注意几个地方

1、删除列要修改一下,保留年和月两列

2、筛选掉所有的非省市名称的行

3、统一所有的省市名称,自己想想办法吧

4、逆透视列

最终的结果:

剩下的工作就回到Power BI Desktop用DAX建立度量值,作图就可以了。

总结一下,如果想从网页中获得需要的信息,就要抓住关键信息,Web信息有几种格式,要从源码中找信息,就用CSV格式,要找网页中的信息,就用HTML格式。不管用PQ还是PY网络抓取数据,都是一个找规律的过程,找到了规律,就能行。

某网站读取表格里面的内容,简单处理后写入CSV文件。需要留意:查找某些字符是否存在,查找其位置,按照位置读取字符串内容,Python真的蛮灵活的。后续还会做两个文件的比较,以及文件内容的删除。让已实现的功能具有普适性,抽取函数供不同场景使用,这才有软件工程的思想。

实践Python

fileName="SplitNo";

nowTime=datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S')

filePath=fileName + nowTime + ".csv";

csvFile=open(filePath, 'w', newline='', encoding='utf-8')

writer=csv.writer(csvFile,dialect='excel')

head=["页数","序号","编号", "产品名称", "原始文本"]

writer.writerow(head)

startPage=1;

totalPage=1260;

wait.until(EC.presence_of_element_located((By.ID, "content")))

browser.find_element_by_id("page").clear()

browser.find_element_by_id("page").send_keys(str(startPage));

browser.find_elements_by_xpath('//input[@src="images/dataanniu_11.gif"]')[0].click();

time.sleep(3)

n=startPage;

while n < totalPage:

wait.until(EC.presence_of_element_located((By.ID, "content")))

content=browser.find_element_by_id("content");

oneThanOneLine=False;

for attr in content.find_elements_by_tag_name("a"):

text=str(attr.get_attribute('innerHTML'))

text=text.replace('\r', '').replace('\n', '').replace('\t', '')

print(str(text) + "查询位置:" + (str)(text.find(".")))

if text.find(".") !=-1:

csvRow=[]

csvRow.append(str(n))

pos=findPos(text)

if pos !=-1:

name=text[0:pos-1]

notext=text[pos:-1]

csvRow.append(name.split(".")[0])

csvRow.append(notext.split(" ")[0])

if name.__len__() > 1:

csvRow.append(name.split(".")[1])

csvRow.append(text)

writer.writerow(csvRow)

preText=text

oneThanOneLine=False

else:

preText=preText + text;

#p=re.compile(r'[<](.*?)[>]', re.S)

# matches=re.findall(cleanr, preText)\

#for match in matches:

# print(match)

cleanr=re.compile('<.*?>')

preText=re.sub(cleanr, '', preText)

print(preText)

oneThanOneLine=True

n=n + 1

wait.until(EC.presence_of_element_located((By.ID, "page")))

browser.find_element_by_id("page").clear()

browser.find_element_by_id("page").send_keys(str(n))

browser.find_elements_by_xpath('//input[@src="images/xxxx.gif"]')[0].click()

print("已经切换到新一页:" + str(n))

csvFile.close()

browser.close()

碰到的问题:

1、TypeError: expected string or bytes-like object

使用场景:content=browser.find_element_by_id("content");

tdList=re.findall(r'<td[^>]*>(.*?)</td>', str(content.get_attribute('innerHTML')), re.I | re.M)

if tdList:

for item in tdList:

print(item)

使用函数:re.findall(pattern,string,flag)

pattern匹配的是字符串,需要把第二个参数转化为string类型就可以。

2、对循环列表的最后一个元素进行特别处理

使用场景:aTag=attr.find_elements_by_tag_name("a")

if aTag.__len__()>1:

for aText in aTag:

if aTag.__len__() - 1==aTag.index(aText):

print(aText )

3、超时跳转使用wait元素比较靠谱些

wait.until(EC.presence_of_element_located((By.ID, "content")))

print(str(n) + "img[@src='images/dataanniu_07.gif'])")

content=browser.find_element_by_id("content");

content.find_elements_by_xpath('//img[@src="images/dataanniu_07.gif"]')[0].click();'''

4、查询某字符串里面的HTML字符

p=re.compile(r'[<](.*?)[>]', re.S)

matches=re.findall(p, preText)

for match in matches:

print(match)

5、清除某字符串里面的HTML字符

cleanr=re.compile('<.*?>')

preText=re.sub(cleanr, '', preText)

6、记录程序执行时间

import datetime

startTime=datetime.datetime.now()

endTime=datetime.datetime.now()

print(endTime - startTime).seconds

7、等待元素的方法

隐式等待:(WebDriver类下的)implicitly_wait(X),在X时间内,页面加载完成,进行下一步操作。首先Implicit Waits默认是等待时间是0,同时隐性等待是对driver起作用,所以只要设置一次即可,比强制等待更智能

缺点:非要加载到整个页面才能执行代码,这样影响代码的执行效率。一般情况下,我们想要的结果是只需加载到了我要定位的元素就执行代码,不需要等待整个页面的完全加载出来再执行代码。

Sleep显式等待:最简单的一种办法就是强制等待sleep(X),强制让浏览器等待X秒,不管当前操作是否完成,是否可以进行下一步操作,都必须等X秒的时间。

缺点是不能准确把握需要等待的时间;优点是使用简单,可以在调试时使用。

WebDriverWait显示等待:无需等待整个页面加载完成,只需加载到你要定位的元素就可以执行代码。

优点:代码执行效率快。是最智能的设置元素等待的方式。

缺点:需要导入webdriver下的expected_conditions、WebDriverWait、By三个包;写等待时间的代码稍显复杂。