python#扫描tcp端口

应用:扫描目标主机开放的tcp端口

执行:命令行输入:python xxx.py -H 主机ip

    执行程序后会扫描主机0-1023端口是否开放

    例如运行 python xxx.py -H www.baidu.com

    就会扫描百度的0-1023端口

代码:

import optparse

import socket

from socket import *

def connScan(tgtHost , tgtPort) :

#发送请求和判断接收

    try :

    connSkt = socket(AF_INET , SOCK_STREAM)

    connSkt.connect((tgtHost,tgtPort))

    connSkt.send('python')

    results = connSkt.recv(100)

    print '%d/tcp open'% tgtPort

    print str(results)

    connSkt.close()

except :

    print '%d/tcp closed'% tgtPort


def portScan(tgtHost , tgtPorts) :

#传入主机和端口数据,调用connScan扫描端口

try :

    tgtIP = gethostbyname(tgtHost)

except :

    print 'Cannot resolve "%s" : Unkonwn host '% tgtHost

    return

try :

    tgtName = gethostbyaddr(tgtIP)

    print '\n Scan Results for : ' + tgtName[0]

except :

    print '\n Scan results for : ' + tgtIP

    setdefaulttimeout(1)

    for tgtPort in tgtPorts :

        print 'Scanning port : ' + tgtPort

        connScan(tgtHost,int(tgtPort))

def main() :

#主方法

    parser = optparse.OptionParser('usage%prog ' +\'-H-p')

    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(',')

    #以上为命令行控制 输入格式 python XXX.py -H 主机ip #-p 端口数 已注释掉 改为0-1023端口扫描

    tgtPorts = []

    for index in range(0,1023) :

    tgtPorts.append(str(index))

    if (tgtHost == None) | (tgtPorts[0] == None) :

        print 'You must specfy a target host and port[s] .'

        exit(0)

    portScan(tgtHost , tgtPorts)


if __name__ == '__main__' :

main()

你可能感兴趣的:(python#扫描tcp端口)