Python任意网段端口信息探测工具的示例分析

  介绍

这篇文章给大家介绍Python任意网段端口信息探测工具的示例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

<强> 0 x01涉及知识点

多线程模板:线程多线程模块,队列队列模块,超时处理,异常处理。

IP地址块转换:扫描的是一个比较大的网段的IP的网络端口,我们并不能手动一个一个的输入IP地址,所以需要IP地址块和IP的转换。

HTTP网络请求库:请求模块。

正则表达式:需要在请求请求之后的响应中获取我们想要的横幅信息。

<强>所以我们的大致思路:

首先,将输入的IP段转换为IP依次放入队列队列中,之后开启多线程,将队列传入多线程类,多线程类中的核心函数执行步骤:

<强> 1。取出一个IP并拼接URL为http://x.x.x.x的格式

<强> 2。使用请求模块获取页面状态信息,标题信息,横幅信息(服务器的横幅信息,在这里为Web容器以及其版本信息)

<强> 3.标题信息需要在页面源代码中获取,并且使用re模块正则匹配标题标签内的内容。

<强> 4。横幅信息需要获取响应中头信息中的服务器。

之后,加入我们的工具文档以及自定义的标志信息后,一个完整的工具就完成了。

放一下完成之后的效果图:


 Python任意网段端口信息探测工具的示例分析“> <br/> </p> <p>炫酷! </p> <p> <强> 0 x02核心代码讲解</强> </p> <p>,,由于IP地址块转换,多线程模板在笔者的上一篇文章已经详细讲述过了,此篇文章不再讲解,直接到核心代码区域,也就是取出每个IP之后的工作。</p> <pre> while  not  self._queue.empty ():
  ,,,ip =, self._queue.get(超时=0.5)
  ,,,url =, & # 39; http://& # 39; +, ip
  ,,,试一试:
  ,,,,,,,r =, requests.Session () . get (url=url,标题=头,超时=5)
  ,,,,,,,content =r.text
  ,,,,,,,status =r.status_code
  ,,,,,,,title =, re.search ( (. *) & lt;/title> & # 39;,,内容)   ,,,,,,,if 标题:   ,,,,,,,,,,,title =, title.group (1) .strip () .strip (“\ r") .strip (“\ n") [30]   ,,,,,,,其他的:   ,,,,,,,,,,,title =,“None"   ,   ,,,,,,,banner =, & # 39; Not 发现# 39;   ,,,,,,,试一试:   ,,,,,,,,,,,banner =, r.headers[& # 39;服务器# 39;](20):   ,,,,,,,除了:   ,,,,,,,,,,,   ,   ,,,,,,,sys.stdout.write (“| % -16 s  % 6 s  % -26 s  % \ n" -30年代,%,(ip、,状态,旗帜,,标题))   ,   ,,,除了:   ,,,,,,,通过

状态是http页面的状态码,简单了解http协议的童鞋应该都知道吧。

标题是请求页面的标题信息,需要用正则表达式匹配一下。

横幅是响应头信息中字的服务器段。

下面给出一个请求请求的响应包,可以直观看出,红框就是我们想要获取的东西。

 Python任意网段端口信息探测工具的示例分析“> <br/> </p> <p>输出使用了系统。写来解决多线程输出不对称问题,并且使用格式化输出使获取的数据对齐。</p> <p> <强> 0 x03添加工具模块</强> </p> <p>,,标志的制作使用Linux下的工具figlet,帮助文档使用Python内置模块argparse。</p> <p>两款工具详解传送门:<强> https://bbs.ichunqiu.com/thread - 31231 - 1 - 1. - html </强> </p> <p>标识代码以及帮助文档代码:</p> <p> <img src=Python任意网段端口信息探测工具的示例分析