• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

python如何编写类似nmap的扫描工具

python 搞代码 4年前 (2022-01-09) 19次浏览 已收录 0个评论

本文主要是利用scapy包编写了一个简易扫描工具,支持ARP、ICMP、TCP、UDP发现扫描,支持TCP SYN、UDP端口扫描,如下:

usage: python scan.py <-p ping扫描类型> <-s 端口发现类型> [-t target] [--port ports]

简单扫描工具,可以进行存活扫描及端口扫描.
存活扫描包括:ARP扫描、ICMP扫描、TCP扫描、UDP扫描.
端口扫描包括:TCP SYN扫描、<strong style="color:transparent">本文来源gao@daima#com搞(%代@#码@网&</strong>TCP ACK扫描、TCP FIN扫描.

optional arguments:
 -h, --help     show this help message and exit
 -v, --version   show program's version number and exit

target group:
 用于设置IP、PORT参数

 --target TARGET  target为IP或IP段,如192.168.1.1,192.168.1.x,或1
           92.168.1.1-254
 --port PORT    port为待扫描的端口,如21,80,...或21-80

ping group:
 用于开启存活扫描相关选项

 -p         开启存活扫描
 --ARP       启动ARP扫描
 --ICMP       启动ICMP扫描
 --TCP       启动TCP扫描
 --UDP       启动UDP扫描

port scan group:
 用于开启端口扫描相关选项

 -s         开启端口扫描
 --SYN       开启SYN扫描
 --ACK       开启ACK扫描
 --FIN       开启FIN扫描
 --UPORT      开启UDP端口扫描

utils group:
 用于开启扫描过程中的一些实用选项

 --timeout TIMEOUT 设置发包超时时间,默认0.5秒
 --retry RETRY   设置发包重试次数,默认不重试

以上做为说明,祝好运!

一、发现扫描

1.首先进行ARP扫描

python scan.py -p --target 192.168.1.1-254 --ARP
[+]IP: 192.168.1.1 => MAC: 14:75:90:xx:xx:xx
[+]IP: 192.168.1.111 => MAC: c6:36:55:xx:xx:xx
[+]总共耗时9.84091806412秒.

通过retry参数增加发包尝试次数,如下:

python scan.py -p --target 192.168.1.1-254 --ARP --retry 2<br />[+]IP: 192.168.1.1 => MAC: 14:75:90:xx:xx:xx<br />[+]IP: 192.168.1.111 => MAC: c6:36:55:xx:xx:xx<br />[+]IP: 192.168.1.102 => MAC: 58:1f:28:xx:xx:xx<br />[+]IP: 192.168.1.114 => MAC: 6c:8d:c1:xx:xx:xx<br />[+]IP: 192.168.1.103 => MAC: 84:38:38:xx:xx:xx<br />[+]总共耗时20.429942131秒.

2.使用ICMP扫描,若没有指定任何扫描类型参数,默认会启用ICMP扫描,如下:

python scan.py -p --target 192.168.1.1-254
[+]没有指定任何ping扫描方式,默认选择ICMP扫描
[+]IP:主机192.168.1.1 echo-reply.
[+]IP:主机192.168.1.111 echo-reply.
[+]总共耗时10.7177450657秒.

通过timeout参数,设置较长的超时,可以防止网络状况不好造成的丢包,如下:

python scan.py -p --target 192.168.1.1-254 --timeout 2
[+]没有指定任何ping扫描方式,默认选择ICMP扫描
[+]IP:主机192.168.1.1 echo-reply.
[+]IP:主机192.168.1.111 echo-reply.
[+]IP:主机192.168.1.114 echo-reply.
[+]总共耗时10.7566649914秒.

3.使用TCP扫描

python scan.py -p --target 192.168.1.100-120 --TCP --timeout 1
[+]请稍等,时间较长!
[!]扫描... 192.168.1.100
[!]扫描... 192.168.1.101
[!]扫描... 192.168.1.102
[!]扫描... 192.168.1.103
[!]扫描... 192.168.1.104
[!]扫描... 192.168.1.105
[!]扫描... 192.168.1.106
[!]扫描... 192.168.1.107
[!]扫描... 192.168.1.108
[!]扫描... 192.168.1.109
[!]扫描... 192.168.1.110
[!]扫描... 192.168.1.111
[!]扫描... 192.168.1.112
[!]扫描... 192.168.1.113
[!]扫描... 192.168.1.114
[!]扫描... 192.168.1.115
[!]扫描... 192.168.1.116
[!]扫描... 192.168.1.117
[!]扫描... 192.168.1.118
[!]扫描... 192.168.1.119
[!]扫描... 192.168.1.120
[+]正在处理扫描信息.
====================
[+]主机 192.168.1.102 在线.
[+]主机 192.168.1.103 在线.
[+]主机 192.168.1.111 在线.
[+]主机 192.168.1.114 在线.
[+]总共耗时16.4359779358秒.

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:python如何编写类似nmap的扫描工具
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址