#!/usr/bin/env python
# -*- coding:UTF-8 -*-
import optparse
import socket
import threading # 用法 python threadPortScan.py -H www.baidu.com -p 22 23 3306 3389 6437 445 443 7001 80
#构造一个方法 创建具有给定许可数的计数信号量并设置为非公平信号量,就是说创建一个阻塞对象
screenLock = threading.Semaphore(value=1)
def connScan(tgtHost,tgtPort):
try:
#创建一个套接字对象
connSkt = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#尝试连接
connSkt.connect((tgtHost,tgtPort))
#发送数据
connSkt.send("violent pyhon\r\n")
#接受饭回来的数据
result = connSkt.recv(100)
#产生的线程排好队,一个一个得打印
screenLock.acquire()
print "[+]%d/tcp open" %tgtPort
print "[+]" + str(result)
except:
print "[-]%d/tcp closed" %tgtPort
finally:
#释放掉
screenLock.release()
#关闭连接
connSkt.close() def portScan(tgtHost,tgtPorts):
try:
#根据域名,获取ip
tgtIP = socket.gethostbyname(tgtHost)
except:
print "[-]cannot resolve '%s':Unkonwn host" %tgtHost
return
try:
tgtName = socket.gethostbyaddr(tgtIP)
print "\n[+]Scan Result for:" + tgtName[0]
except:
print "\n[+]Scan Result for:" + tgtIP
socket.setdefaulttimeout(1)
for tgtPort in tgtPorts:
print "Scanning port " + str(tgtPort)
t = threading.Thread(target = connScan,args = (tgtHost,int(tgtPort)))
t.start() def main():
parse = optparse.OptionParser('usage %prog -H <targethost> -p <targetport>')
parse.add_option('-H',dest = 'tgtHost',type = 'string',help = 'specify target host')
parse.add_option('-p',dest = 'tgtPort',type = 'int',help = 'specify target port')
(option,args) = parse.parse_args()
tgtHost = option.tgtHost
tgtPort = option.tgtPort
args.append(tgtPort)
if(tgtPort == None) | (tgtHost == None):
print parse.usage
exit(0)
portScan(tgtHost,args) if __name__ == '__main__':
main()

端口扫描器--利用socket协议的更多相关文章

  1. c#端口扫描器wpf+socket

    布局如下 <Window x:Class="PortTest.MainWindow" xmlns="http://schemas.microsoft.com/win ...

  2. 端口扫描器--利用python的nmap模块

    安装nmap模块挺麻烦的,搞了半天 不仅要安装pip install nmap 还要sudo apt install nmap 给出代码,没有设多线程,有点慢,注意端口的类型转换,搞了很久 #!/us ...

  3. Python脚本写端口扫描器(socket,python-nmap)

    目录 Socket模块编写 扫描给定主机是否开放了指定的端口 python-nmap模块编写 扫描给定ip或给定网段内指定端口是否开放 一个用python写的简单的端口扫描器,python环境为 3. ...

  4. python程序—利用socket监控端口

    利用socket监控服务器端口,端口不通时,发邮件提醒 import yagmail #导入yagmail模块 import re #导入re模块,进行正则匹配 import socket #导入so ...

  5. [原创]利用Browser协议探测内网主机操作系统版本(无需端口无视防火墙)

    利用Browser协议可获取机器IP.MAC.机器名.操作系统.域,如图 浏览 在SMB协议中,计算机为了访问网络资源,就需要了解网络上存在的资源列表(例如在Windows下使用网络邻居查看可以访问的 ...

  6. 关于zabbix利用snmp协议从交换机获取的端口带宽数据的概念问题

    关于zabbix利用snmp协议从交换机获取的端口带宽数据的概念问题:使用端口OID号获得的数据实际是即时的端口总数据量,而在计算带宽时,需要选择一个时间段,在时间段的结束点获得的总数据量减去在时间段 ...

  7. 利用socket模块检查端口存活并邮件警报

    可以用来监控一些端口. import socket def check_server(addr, port): s = socket.socket() try: s.connect((addr, po ...

  8. Python3实现TCP端口扫描器

    本文来自 高海峰对 玄魂工作室 的投稿 作者:高海峰 QQ:543589796 在渗透测试的初步阶段通常我们都需要对攻击目标进行信息搜集,而端口扫描就是信息搜集中至关重要的一个步骤.通过端口扫描我们可 ...

  9. 【技术分享】手把手教你使用PowerShell内置的端口扫描器

    [技术分享]手把手教你使用PowerShell内置的端口扫描器 引言 想做端口扫描,NMAP是理想的选择,但是有时候NMAP并不可用.有的时候仅仅是想看一下某个端口是否开放.在这些情况下,PowerS ...

随机推荐

  1. LA 4973 Ardenia (3D Geometry + Simulation)

    ACM-ICPC Live Archive 三维几何,题意是要求求出两条空间线段的距离.题目难度在于要求用有理数的形式输出,这就要求写一个有理数类了. 开始的时候写出来的有理数类就各种疯狂乱套,TLE ...

  2. 解决ubuntu的Idea启动No JDK found. Please validate either IDEA_JDK, JDK_HOME or JAVA_HOME environment variable points to valid JDK installation.

    直接在idea安装目录下运行idea.sh可以正常启动,但是使用ubuntu的dash搜索出来的idea报错,No JDK found. Please validate either IDEA_JDK ...

  3. html前端登录验证

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. spring mvc 接收表单 bean

    spring MVC如何接收表单bean 呢? 之前项目中MVC框架一直用struts2,所以我也就按照struts2 的思维来思考 页面loginInput.jsp: <?xml versio ...

  5. 【DCN】Wireless Intranet Captive Portal

    Wireless Intranet Captive Portal 配置AAA服务Radius认证 radius-server key 0 radius radius-server authentica ...

  6. History和Location

    Location 对象属性属性 描述hash 设置或返回从井号 (#) 开始的 URL(锚).host 设置或返回主机名和当前 URL 的端口号.hostname 设置或返回当前 URL 的主机名.h ...

  7. java 事件监听机制组成

    事件源(组件) 事件(Event) 监听器(Listener) 事件处理(引发事件后处理方式) 事件监听机制流程图 务必记牢: 确定事件源(容器或组件) 通过事件源对象的addXXXListener( ...

  8. java 注解(Annotation)

    注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记. 以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就 ...

  9. Spring 面试题汇总

    1.什么是SpringSpring是一个轻量级IoC和AOP容器框架,是为Java应用程序提供基础性服务的一套框架,目的是简化企业应用程序的开发,它使得开发者只需关注业务需求. 2.Spring的优点 ...

  10. H3C 端口接入控制方式