【Python脚本进阶】2.1、端口扫描器(下):NMAP端口扫描

目录

一、简介

1.1、扩展

1.2、端口扫描类型

 1.3、实现:


一、简介

1.1、扩展

由TCP连接扫描脚本,到其他类型的扫描,Nmap端口扫描工具包提供了大量的功能,如提供的ACK、RST、FIN或SYN-ACK 扫描等。


Nmap中也能使用C和Lua编写的脚本, 但是Nmap还能被非常好地整合到Python 中。Nmap可以生成基于XML的输出。Python库能够解析这类基于XML的输出。能在Python 脚本中使用Nmap的全部功能。必须安装Python - Nmappython-nmap : nmap from python (xael.org)icon-default.png?t=M666https://xael.org/pages/python-nmap-en.html安装时请注意对Python 3.x和Python 2.x不同版本的注意事项提醒

1.2、端口扫描类型

TCP SYN SCAN一一半开放扫描, 这种类型的扫描发送一个SYN包, 启动一个TCP会话,并等待响应的数据包。如果收到的是一个reset 包, 表明端口是关闭的, 而如果收到的是一个SYN / ACK包, 则表示相应的端口是打开的


TCP NULLS CAN——NULL扫描,把TCP头中的所有标志位都设为NULL。 如果收到的是一个RST包, 则表示相应的端口是关闭的


TCP FIN SCAN——TCP FIN 扫描发送一个表示拆除一个活动的TCP 连接的FIN包, 让对方关闭连接。如果收到了一个RST包, 则表示相应的端口是关闭的


TCP XMAS SCAN——TCP XMAS 扫描发送PSH、FIN、URG和TCP标志位被设为1的数据包。如果收到了一个RST包, 则表示相应的端口是关闭的

 1.3、实现:

安装Python-Nmap后,就可以将Nmap导入到现有的脚本中,并在Python脚本中直接使用Nrnap扫描功能。

创建一个PortScanner()类对象,用这个对象完成扫描操作。PortScanner类有一个scan()函数, 它可将目标和端口的列表作为参数输入, 并对它们进行基本的Nmap 扫描。还可以把目标主机的地址/端口放入数组中备查, 并打印出端口的状态。依靠该功能来定位和识别目标。

import mmap
import optparse


def nmapScan(tgtHost,tgtPort):
    nmScan = nmap.PortScanner()
    nmScan.scan( tgtHost, tgtPort )
    state = nmScan[tgtHost]['tcp'][int(tgtPort)]['state']
    print(" [*] "+tgtHost + " tcp/ " +tgtPort +" "+state)



def main():
    parser = optparse.OptionParser("usage%prog " + "-H <target host> -p <target port>")
    parser.add_option('-H', dest='tgtHost', type='string',help='specify target host')
    parser.add_option('-p', dest='tgtPort', type='string',help='specify target port[s] separated by comma')
    (options, args) = parser.parse_args()
    tgtHost = options.tgtHost
    tgtPorts = str(options.tgtPort).split (', ')
    if (tgtHost == None) | (tgtPorts[0] == None):
        print(parser.usage)
        exit(0)
    for tgtPort in tgtPorts:
        nmapScan( tgtHost, tgtPort )


if __name__ == '__main__':
    main()

像Nmap这样功能齐全的扫描器, 能够发现过滤器, 而单一的TCP连接扫描是不行的

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑色地带(崛起)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值