网络上各种各样的扫描器数不胜数,作为一个白帽收集信息必备的工具 端口扫描器也是有很多版本,不知道你们是否想要拥有一款自己的端口扫描器, 自己定制内容,岂不是爽歪歪,今天,我来帮助大家揭开扫描器的神秘面纱, 定制一款属于你的扫描器。 灭霸镇场,作为一个获胜的反派。 先来看一下效果图: 好了,不多说开始 在开始写之前,我们先来理清一下我们的思路 知道我们要做些什么,想要实现什么功能, 并一步一步去完善程序【思路最重要】
原理: 这里我们是采用,tcp全连接的方式对端口进行扫描, 全连接就是完成了tcp协议的三次握手, 这种扫描的好处是,获取的信息更加准确, 但是也更容易遭防火墙拦截。 好了,开始我们的第一步, 解析我们输入的ip和端口 这里我们用了opyarse模块 这里会简单的介绍一下opyarse的用法 运行一下程序: 看到解析模块已经正常运行了, 可以看到这里optparse模块自动生成了帮助菜单。 解释一下:代码里为啥要加上.decode(''UTF-8'').encode(''GBK'')因为我们用的是python2 因为python2对中文编码的不太友好 有了这句,我们就能保证我们输入的中文,不会乱码 当然如果你用英语,可以去除这个代码。 下一步我们开始编辑我们的核心代码: 我们需要生成两个函数, connScan和portScan,portScan函数以参数形式接受主机名和目标端口列表。 它首先会尝试用gethostname()函数确定主机名对应的ip。 然后用connScan输入主机名或者ip, 并尝试逐个链接我们要链接的端口, 打印出端口状态。 好了,我们的第二个目标实现了,已经完成了端口扫描的主要模块, 但是我们还想要获取用户端口上具体的应用信息, 我们在connScan函数中加入一些代码, 并把我们一开始的解析模块定义在main函数中。 现在我们的代码就是这样的。 运行一个刚刚敲好的扫描器: 完整的代码如下: 到这里,已经完成了,快去制作自己的扫描器。 总结:希望大家可以动手尝试一下,在这里我没有用python3是因为 不知道是我的环境问题还是其他问题,python3运行后扫描的端口都是关闭的, 所以我选择用了python2, 用python3就不用加.decode(''UTF-8'').encode(''GBK'')这句代码 |
|
来自: 昵称11935121 > 《待分类》