设为首页 加入收藏

TOP

Python编写类似nmap的扫描工具(一)
2017-10-10 21:05:51 】 浏览:2471
Tags:Python 编写 类似 nmap 扫描工具

文主要是利用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扫描、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
[+]IP: 192.168.1.1 => MAC: 14:75:90:xx:xx:xx
[+]IP: 192.168.1.111 => MAC: c6:36:55:xx:xx:xx
[+]IP: 192.168.1.102 => MAC: 58:1f:28:xx:xx:xx
[+]IP: 192.168.1.114 => MAC: 6c:8d:c1:xx:xx:xx
[+]IP: 192.168.1.103 => MAC: 84:38:38:xx:xx:xx
[+]总共耗时20.429942131秒.


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


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


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


1 python scan.py -p --target 192.168.1.1-254 --timeout 2
2 [+]没有指定任何ping扫描方式,默认选择ICMP扫描
3 [+]IP:主机192.168.1.1 echo-reply.
4 [+]IP:主机192.168.1.111 echo-reply.
5 [+]IP:主机192.168.1.114 echo-reply.
6 [+]总共耗时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秒.


4.使用

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 1/9/9
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Python3 基本数据类型 下一篇Python3基本语法简述

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目