python 查看端口是不是开通
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 查看端口是不是开通相关的知识,希望对你有一定的参考价值。
一、常见端口扫描的原理0、秘密扫描
秘密扫描是一种不被审计工具所检测的扫描技术。
它通常用于在通过普通的防火墙或路由器的筛选(filtering)时隐藏自己。
秘密扫描能躲避IDS、防火墙、包过滤器和日志审计,从而获取目标端口的开放或关闭的信息。由于没有包含TCP 3次握手协议的任何部分,所以无法被记录下来,比半连接扫描更为隐蔽。
但是这种扫描的缺点是扫描结果的不可靠性会增加,而且扫描主机也需要自己构造IP包。现有的秘密扫描有TCP FIN扫描、TCP ACK扫描、NULL扫描、XMAS扫描和SYN/ACK扫描等。
1、Connect()扫描
此扫描试图与每一个TCP端口进行“三次握手”通信。如果能够成功建立接连,则证明端口开发,否则为关闭。准确度很高,但是最容易被防火墙和IDS检测到,并且在目标主机的日志中会记录大量的连接请求以及错误信息。
TCP connect端口扫描服务端与客户端建立连接成功(目标端口开放)的过程:
① Client端发送SYN;
② Server端返回SYN/ACK,表明端口开放;
③ Client端返回ACK,表明连接已建立;
④ Client端主动断开连接。
建立连接成功(目标端口开放)
TCP connect端口扫描服务端与客户端未建立连接成功(目标端口关闭)过程:
① Client端发送SYN;
② Server端返回RST/ACK,表明端口未开放。
优点:实现简单,对操作者的权限没有严格要求(有些类型的端口扫描需要操作者具有root权限),系统中的任何用户都有权力使用这个调用,而且如果想要得到从目标端口返回banners信息,也只能采用这一方法。
另一优点是扫描速度快。如果对每个目标端口以线性的方式,使用单独的connect()调用,可以通过同时打开多个套接字,从而加速扫描。
缺点:是会在目标主机的日志记录中留下痕迹,易被发现,并且数据包会被过滤掉。目标主机的logs文件会显示一连串的连接和连接出错的服务信息,并且能很快地使它关闭。
2、SYN扫描
扫描器向目标主机的一个端口发送请求连接的SYN包,扫描器在收到SYN/ACK后,不是发送的ACK应答而是发送RST包请求断开连接。这样,三次握手就没有完成,无法建立正常的TCP连接,因此,这次扫描就不会被记录到系统日志中。这种扫描技术一般不会在目标主机上留下扫描痕迹。但是,这种扫描需要有root权限。
端口开放:1、Client发送SYN 2、Server端发送SYN/ACK 3、Client发送RST断开(只需要前两步就可以判断端口开放)
端口关闭:1、Client发送SYN 2、Server端回复RST(表示端口关闭)
优点:SYN扫描要比TCP Connect()扫描隐蔽一些,SYN仅仅需要发送初始的SYN数据包给目标主机,如果端口开放,则相应SYN-ACK数据包;如果关闭,则响应RST数据包;
3、NULL扫描 参考技术A 1. 可以调用系统命令netstat
比如说22端口,查看如下有无返回
netstat -lnt | awk '$6 == "LISTEN" && $4 ~ ":2"'
2. 用socket module, 例如
import socket;sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)result = sock.connect_ex(('你的ip',22))if result == 0: print "Port is open"else: print "Port is not open" 参考技术B 可能是对filter的返回规则不熟悉造成的
它返回的是,筛选满足条件为True的实际变量值的迭代器,而不是True或False这两个布尔值。
注意:py2.7返回的是list列表,py3.X返回的是迭代器
这个函数的两个参数,需要解释一下
第一个参数,要求是一个函数,比如你这个自定义的带变量参数的函数prime
第二个参数,是作为你这个自定义函数的变量输入的序列或迭代器,比如你的这个range(1,100)
其实你如果想要返回布尔值
可能根本用不到filter这个函数
应该只需要把下面的列表生成器改为:
L = [ prime(i) for i in range(1,100) ]
即可实现你想要的效果
最后建议同时关注map函数
map用法与其类似
而且py2和py3返回规则也不一样 参考技术C import socket
sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sk.settimeout(1)
try:
sk.connect((‘IP地址’,端口号))
print(“ok”)
except Exception:
print(“Failed”)
sk.close()
1. 可以调用系统命令netstat
比如说22端口,查看如下有无返回
netstat -lnt | awk '$6 == "LISTEN" && $4 ~ ":2"'
2. 用socket module, 例如
import socket;sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)result = sock.connect_ex(('你的ip',22))if result == 0: print "Port is open"else: print "Port is not open"或者
def check_servers(self):
logger.debug("Check honeypot servers thread start.")
cmd = "netstat -tlnp"
while (True):
try:
config_data = self.get_config_data()
agentid = config_data["agentid"]
global_par.evt_overtime = int(config_data["evt_overtime"])
global_par.evt_cycle = int(config_data["evt_cycle"])
sleep_time = config_data["heartbeat"]
time.sleep(int(sleep_time))
proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
buff = proc.communicate()
proc.stdout.close()
for server_config in agentid:
if server_config["enabled"]:
if server_config["id"] in str(buff):
logger.info("0:1 server running normal.".format(server_config["service"], server_config["id"]))
else:
logger.info("0:1 server running error or is starting.".format(server_config["service"], server_config["id"]))
except Exception as e:
logger.error("Check servers error:", e)
def monitor_honeypot_services(self):
try:
threading.Thread(target=self.check_servers).start()
except Exception as e:
logger.error("Monitor thread error:0".format(e))
self.monitor_honeypot_services() 参考技术D 1. 可以调用系统命令netstat
比如说22端口,查看如下有无返回
netstat -lnt | awk '$6 == "LISTEN" && $4 ~ ":2"'
2. 用socket module, 例如
import socket;sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)result = sock.connect_ex(('你的ip',22))if result == 0: print "Port is open"else: print "Port is not open"本回答被提问者和网友采纳
IBM was调试端口开通演示,was服务重启端口号查看方法
IBM was中间件调试端口开通实例演示
[ 推荐文章 ]
一篇文章快速掌握 Linux 基本命令
was 中间件调试端口开通与查看
① was 中间件调试端口开通
首先选择要开通调试端口的服务,进入。
在配置里选择进程定义。
选择 Java 虚拟机。
勾选调试方式,添加调试端口,再点击应用就设置完成了。
② was 服务重启
重启服务后调试端口生效,先停止服务再启动即可。
③ was 服务端口号查看方法
进入服务内的端口属性可以查看服务端口号。
喜欢的点个赞❤吧!
以上是关于python 查看端口是不是开通的主要内容,如果未能解决你的问题,请参考以下文章