分享

Python大黑阔—手把手教你定制端口扫描器(超详细)

 昵称11935121 2018-08-02

网络上各种各样的扫描器数不胜数,作为一个白帽收集信息必备的工具

端口扫描器也是有很多版本,不知道你们是否想要拥有一款自己的端口扫描器,

自己定制内容,岂不是爽歪歪,今天,我来帮助大家揭开扫描器的神秘面纱,

定制一款属于你的扫描器。

灭霸镇场,作为一个获胜的反派。

先来看一下效果图:

Python大黑阔—手把手教你定制端口扫描器(超详细)

Python大黑阔—手把手教你定制端口扫描器(超详细)

好了,不多说开始

Python大黑阔—手把手教你定制端口扫描器(超详细)

在开始写之前,我们先来理清一下我们的思路

知道我们要做些什么,想要实现什么功能,

并一步一步去完善程序【思路最重要】

  • 我们需要让程序解析我们的输入的主机名,和用端口分割的端口列表
  • 将主机名转换成ipv4地址,并对列表中的端口进行扫描,
  • 为了确定目标端口上运行的是什么服务,我们将发生垃圾数据,并读取具体应用返回的Banner
  • 或许我们可以加点多线程让程序运行的更快。

原理:

这里我们是采用,tcp全连接的方式对端口进行扫描,

全连接就是完成了tcp协议的三次握手,

这种扫描的好处是,获取的信息更加准确,

但是也更容易遭防火墙拦截。

好了,开始我们的第一步,

解析我们输入的ip和端口

这里我们用了opyarse模块

这里会简单的介绍一下opyarse的用法

Python大黑阔—手把手教你定制端口扫描器(超详细)

运行一下程序:

Python大黑阔—手把手教你定制端口扫描器(超详细)

看到解析模块已经正常运行了,

可以看到这里optparse模块自动生成了帮助菜单。

解释一下:代码里为啥要加上.decode(''UTF-8'').encode(''GBK'')因为我们用的是python2

因为python2对中文编码的不太友好

有了这句,我们就能保证我们输入的中文,不会乱码

当然如果你用英语,可以去除这个代码。

下一步我们开始编辑我们的核心代码:

我们需要生成两个函数,

connScan和portScan,portScan函数以参数形式接受主机名和目标端口列表。

它首先会尝试用gethostname()函数确定主机名对应的ip。

然后用connScan输入主机名或者ip,

并尝试逐个链接我们要链接的端口,

打印出端口状态。

Python大黑阔—手把手教你定制端口扫描器(超详细)

好了,我们的第二个目标实现了,已经完成了端口扫描的主要模块,

但是我们还想要获取用户端口上具体的应用信息,

我们在connScan函数中加入一些代码,

并把我们一开始的解析模块定义在main函数中。

现在我们的代码就是这样的。

Python大黑阔—手把手教你定制端口扫描器(超详细)

运行一个刚刚敲好的扫描器:

Python大黑阔—手把手教你定制端口扫描器(超详细)

Python大黑阔—手把手教你定制端口扫描器(超详细)

完整的代码如下:

Python大黑阔—手把手教你定制端口扫描器(超详细)

到这里,已经完成了,快去制作自己的扫描器。

总结:

希望大家可以动手尝试一下,在这里我没有用python3是因为

不知道是我的环境问题还是其他问题,python3运行后扫描的端口都是关闭的,

所以我选择用了python2,

用python3就不用加.decode(''UTF-8'').encode(''GBK'')这句代码

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多