端口扫描器--利用socket协议
#!/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协议的更多相关文章
- c#端口扫描器wpf+socket
布局如下 <Window x:Class="PortTest.MainWindow" xmlns="http://schemas.microsoft.com/win ...
- 端口扫描器--利用python的nmap模块
安装nmap模块挺麻烦的,搞了半天 不仅要安装pip install nmap 还要sudo apt install nmap 给出代码,没有设多线程,有点慢,注意端口的类型转换,搞了很久 #!/us ...
- Python脚本写端口扫描器(socket,python-nmap)
目录 Socket模块编写 扫描给定主机是否开放了指定的端口 python-nmap模块编写 扫描给定ip或给定网段内指定端口是否开放 一个用python写的简单的端口扫描器,python环境为 3. ...
- python程序—利用socket监控端口
利用socket监控服务器端口,端口不通时,发邮件提醒 import yagmail #导入yagmail模块 import re #导入re模块,进行正则匹配 import socket #导入so ...
- [原创]利用Browser协议探测内网主机操作系统版本(无需端口无视防火墙)
利用Browser协议可获取机器IP.MAC.机器名.操作系统.域,如图 浏览 在SMB协议中,计算机为了访问网络资源,就需要了解网络上存在的资源列表(例如在Windows下使用网络邻居查看可以访问的 ...
- 关于zabbix利用snmp协议从交换机获取的端口带宽数据的概念问题
关于zabbix利用snmp协议从交换机获取的端口带宽数据的概念问题:使用端口OID号获得的数据实际是即时的端口总数据量,而在计算带宽时,需要选择一个时间段,在时间段的结束点获得的总数据量减去在时间段 ...
- 利用socket模块检查端口存活并邮件警报
可以用来监控一些端口. import socket def check_server(addr, port): s = socket.socket() try: s.connect((addr, po ...
- Python3实现TCP端口扫描器
本文来自 高海峰对 玄魂工作室 的投稿 作者:高海峰 QQ:543589796 在渗透测试的初步阶段通常我们都需要对攻击目标进行信息搜集,而端口扫描就是信息搜集中至关重要的一个步骤.通过端口扫描我们可 ...
- 【技术分享】手把手教你使用PowerShell内置的端口扫描器
[技术分享]手把手教你使用PowerShell内置的端口扫描器 引言 想做端口扫描,NMAP是理想的选择,但是有时候NMAP并不可用.有的时候仅仅是想看一下某个端口是否开放.在这些情况下,PowerS ...
随机推荐
- js递归遍历树结构(tree)
如图: 代码: let datas = [] //是一个树结构的数据 setName(datas){ //遍历树 获取id数组 for(var i in datas){ this.expandedKe ...
- PyTorch之前向传播函数自动调用forward
参考:1. pytorch学习笔记(九):PyTorch结构介绍 2.pytorch学习笔记(七):pytorch hook 和 关于pytorch backward过程的理解 3.Pytorch入门 ...
- 版本号/缓存刷新 laravel mix函数
很多开发者会给编译的前端资源添加时间戳或者唯一令牌后缀以强制浏览器加载最新版本而不是代码的缓存副本.Mix 可以使用 version 方法为你处理这种场景. version 方法会自动附加唯一哈希到已 ...
- 下推栈实现(c++编程思想 p136)
1 头文件Stack.h #ifndef STACK_H #define STACK_H struct Stack { struct Link { void* data; Link* next; vo ...
- [转载] linux find 命令
转载自 http://www.jb51.net/os/RedHat/1307.html Linux下find命令在目录结构中搜索文件,并执行指定的操作. Linux下find命令提供了相当多的查找条件 ...
- servicemix-3.2.1 部署异常
<jbi-task xmlns="http://java.sun.com/xml/ns/jbi/management-message" version="1.0&q ...
- Chrome 里的请求报错 " Provisional headers are shown"
之所以会出现这个警告,是因为去获取该资源的请求其实并(还)没有真的发生; 背景:提交表单,按钮点击<button>标签,触发事件,ajax发送请求,服务器返回信息; <button& ...
- 关于Ping和Tracert命令原理详解
本文只是总结了两个常用的网络命令的实现原理和一点使用经验说明.这些东西通常都分布在各种书籍或者文章中的,我勤快那么一点点,总结一下,再加上我的一点理解和使用经验,方便大家了解.这些也是很基础的东西,没 ...
- PowerShell 通过 WMI 获取系统安装的驱动
本文告诉大家如何通过 WMI 获取用户已经安装的驱动程序 通过下面代码可以获取用户已经安装的驱动程序 Get-WmiObject Win32_SystemDriver | Format-List Ca ...
- 关于对height:100%的研究
参考此链接: https://segmentfault.com/a/1190000012707337