您的位置:首页 > 理论基础 > 计算机网络

Tcp 端口扫描器 (Python)

2016-06-15 17:14 399 查看
转自《运用python成为顶级黑客》

# -*- coding: utf-8 -*-
"""

Created on Wed Jun 15 13:52:36 2016

@author: houruquan

"""

#optparse study

import optparse

import socket

from socket import *

from threading import *

screenLock = Semaphore(value=1)

def connscan(tgtHost,tgtPort):

try:

connskt = socket(AF_INET,SOCK_STREAM) #初始化一个socket实例

connskt.connect((tgtHost,tgtPort)) #尝试连接

connskt.send('VillentPython\r\n') #尝试发送一段文字

results = connskt.recv(100) #将返回的100个字符保存在变量results中

screenLock.acquire()

print '%d /tcp open' % tgtPort

print str(results)

except Exception,e:

screenLock.acquire()

print '%d /tcp closed' % tgtPort

print str(e)

finally:

screenLock.release()

connskt.close()

def portscan(tgtHost,tgtPorts):

try:

tgtIP = gethostbyname(tgtHost) #使用socket.gethostbyname方法转换成IP地址

except Exception,e:

print "Can not resolve %s :UNknow host" % tgtHost

print str(e)

return

try:

tgtName = gethostbyaddr(tgtIP)

print 'Scan results for: '+ tgtName(0)

except Exception,e:

print 'Scan results for: '+ tgtIP

setdefaulttimeout(1)

for tgtPort in tgtPorts:

t = Thread(target=connscan,args=(tgtHost,int(tgtPort)))

t.start()

def main():

parser = optparse.OptionParser(usage='python script - H <target host> -p <target port>') #定义parser.usage属性

parser.add_option('-H',dest='tgtHost',type='string',help='specify target host')

#定义-H 命令行参数,

parser.add_option('-p',dest='tgtPort',type='string',help='specify target port[s] separated by comma')

#定义-p 命令行参数 注意这里要给type 是string 不然接受不支持接受字符串参数

(options,args)=parser.parse_args()

#使命令行参数生效

tgtHost=options.tgtHost

#把tgtHost的值 赋予

tgtPorts = []

tgtPorts = str(options.tgtPort).split(",") #接受以,分割的参数

print tgtPorts

#赋值

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

print parser.usage

exit(0)

portscan(tgtHost,tgtPorts)

#调用portscan函数

if __name__ == '__main__': #命令行才运行

main()




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: