扫描端口

2016-11-10  本文已影响34人  小子考驾照
Paste_Image.png

查看135端口,不带后边的是查看所有已经打开的端口
查看端口135使用的进程
关闭占用135端口的进程

Tcp端口扫描的几种类型:

一:Tcp connect扫描:全连接扫描,完成tcp三次握手,结果准确,但速度比较慢,也可轻易被目标系统检测到。
二:Tcp SYN扫描:半开放扫描,发送一个SYN包,启动一个TCP会话,等待目标响应数据包,如果收到RST包,表明端口关闭,SYN/ACK包,表示端口打开。
三:Tcp FIN扫描:发送一个表示拆除一个活动的TCP链接的FIN包,让目标关闭连接,如果收到RST表明端口是关闭的。
四:Tcp XMAS扫描:发送PSH、FIN、URG和TCP标志位被设为1的数据包,如果收到RST包,表明端口是关闭的。

Tcp connect扫描

# -*- coding=utf-8 -*-
import threading
from socket import *
import argparse
lock = threading.Lock()
openNum = 0
threads = []
def portScanner(host,port):
    global openNum
    try:
        s = socket(AF_INET,SOCK_STREAM)
        s.connect((host,port))
        lock.acquire()
        print('端口%d已经打开'%port)
        openNum +=1
        lock.release()
        s.close()
    except:
        # print('端口%d已经关闭'%port)
        pass
def main():
    p = argparse.ArgumentParser(description='端口扫描!')
    p.add_argument('-H',dest='hosts',type=str)
    p.add_argument('-R',dest='range',type=int)
    args= p.parse_args()
    hostList = args.hosts.split(',')
    port_range = args.range
    setdefaulttimeout(1)
    for host in hostList:
        print('开始扫描%s目标主机'%host)
        for p in range(1,port_range):
            t = threading.Thread(target=portScanner,args=(host,p))
            threads.append(t)
            t.start()
        for t in threads:
            t.join()
        print('扫描结束','总共有%d个端口打开'%openNum)
if __name__ == '__main__':
    main()

使用nmap扫描

nm = nmap.PortScanner()
tmp = nm.scan('www.baidu.com', '0-4564')
:param hosts: 'scanme.nmap.org' or '198.116.0-255.1-127' or '216.163.128.20/20'
:param ports: '22,53,110,143-4564'
:param arguments: '-sU -sX -sC'
:param sudo: 是否用管理员模式,是True否Flase
:returns: {
    'scan': {
        '61.135.169.125': {
            'addresses': {
                'ipv4': '61.135.169.125'
            },
            'tcp': {
                80: {
                    'version': '',
                    'conf': '10',
                    'product': 'Apachehttpd',
                    'state': 'open',
                    'name': 'http',
                    'cpe': 'cpe: /a: apache: http_server',
                    'reason': 'syn-ack',
                    'extrainfo': ''
                },
                443: {
                    'version': '1.0.8.18',
                    'conf': '10',
                    'product': 'BaiduFrontEndhttpd',
                    'state': 'open',
                    'name': 'http',
                    'cpe': '',
                    'reason': 'syn-ack',
                    'extrainfo': ''
                }
            },
            'status': {
                'state': 'up',
                'reason': 'echo-reply'
            },
            'hostnames': [
                {
                    'type': 'PTR',
                    'name': 'www.baidu.com'
                }
            ],
            'vendor': {
                
            }
        }
    },
    'nmap': {
        'command_line': 'nmap-oX--p0-4564-sV61.135.169.125',
        'scaninfo': {
            'tcp': {
                'services': '0-4564',
                'method': 'syn'
            }
        },
        'scanstats': {
            'totalhosts': '1',
            'timestr': 'TueNov1517: 53: 032016',
            'downhosts': '0',
            'uphosts': '1',
            'elapsed': '36.20'
        }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读