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()
# -*- 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()
相关文章推荐
- 图解HTTPS、GET和POST
- OkHttp学习总结
- 简单的TCP通讯
- android-async-http 源码流程浅析
- 一篇学习HTTP状态码的神文:爱情的力量、生活的乐趣
- 移动端网络优化
- https://isux.tencent.com/svg-animate.html(svg动画)
- HTTP 协议详解
- python socket模拟一个http Get请求页面
- HTTP 协议之压缩
- 错误:HttpServlet was not found on the Java
- Type 'System.IO.FileStream' with data contract name 'FileStream:http://schemas.datacontract.org/2004/07/System.IO' is not expected.
- haproxy tcp可用配置
- spring框架的项目报错:No mapping found for HTTP request with URI [ ] in DispatcherServlet with name 'spring'
- 使用HTTP调用JSF(杰夫)接口
- HTTP Status 500 - Tag file directory /tagfiledoes not start with "/WEB-INF/tags"
- iOS 9 Https问题解决方案
- linux centos Git : HTTP request failed(ps:添加centos git升级)
- c# - Post数据到指定HTTP URL
- 渠道、数据、技术,谁才是网络信贷市场的决胜因素?