【夏虫语冰】测试服务器端口是否打开(命令行、Python)_测试端口是否开放
nc命令是功能强大的网络工具。nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具。比如大家很熟悉使用telnet测试tcp端口,而nc可以支持测试linux的tcp和udp端口,而且也经常被用于端口扫描,甚至把nc作为server以TCP或UDP方式侦听指定端口做简单的模拟测试。nc(netcat) 是一个简单的 Unix 工具,它使用
先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
正文
wget ip:port
or
wget localhost:5000
2.4 nc
2.4.1 工具简介
nc命令是功能强大的网络工具。nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具。
比如大家很熟悉使用telnet测试tcp端口,而nc可以支持测试linux的tcp和udp端口,而且也经常被用于端口扫描,甚至把nc作为server以TCP或UDP方式侦听指定端口做简单的模拟测试。
nc(netcat) 是一个简单的 Unix 工具,它使用 TCP 或 UDP 协议去读写网络连接间的数据。
2.4.2 工具安装
工具安装命令:
yum install nc -y
2.4.3 工具使用
nc -z -v -n 127.0.0.1 6379
nc -z -v -n 172.17.26.137 6379
nc -z ip port 或 nc -v -w 1 ip -z port
nc –uz IP port(u代表UDP)
nc -v -w 1 ip -z port
or
nc -v -w 1 localhost -z 80
2.5 ssh
2.5.1 工具简介
SSH(Secure Shell,安全外壳)是一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务。
- SSH和其他传输协议的区别
- 传统远程登录和文件传输方式,例如Telnet、FTP,使用明文传输数据,存在很多的安全隐患。随着人们对网络安全的重视,这些方式已经慢慢不被接受。
- SSH协议通过对网络数据进行加密和验证,在不安全的网络环境中提供了安全的网络服务。作为Telnet和其他不安全远程shell协议的安全替代方案,目前SSH协议已经被全世界广泛使用,大多数设备都支持SSH功能。
- SSH和SSL的区别
- SSH和SSL都是网络安全协议,通过加密和认证提升两台设备间传输数据的安全性。但SSH和SSL的生效方式和服务目标存在差异。
- SSH在两台设备间创建安全隧道,使这两台设备间可以安全地发送命令、传输数据等。例如,客户端通过SSH远程登录到一台服务器上,就可以安全地远程管理这台服务器,在服务器上执行想要的命令。
- SSL则是使用SSL证书保证两台设备间安全地传输数据,而不是像SSH那样可以执行命令。例如,用户通过浏览器访问某安装了SSL证书且启用了HTTPS的服务器,浏览器和服务器之间可以安全地传输数据。
- SSH就像一辆汽车,我们看不到这辆封闭的汽车里装载的是什么。而SSL就像一个封闭的集装箱,我们可以用不同的交通工具运输它,但看不到集装箱里装的是什么。
在 Linux 系统上 SSH 是非常常用的工具,通过 SSH Client 我们可以连接到运行了 SSH Server 的远程机器上。SSH Client 的基本使用方法是:
ssh -v -p port username@ip
or
ssh user@remote -p port
user 是你在远程机器上的用户名,如果不指定的话默认为当前用户
remote 是远程机器的地址,可以是 IP,域名,或者是后面会提到的别名
port 是 SSH Server 监听的端口,如果不指定的话就为默认值 22
- windows
- linux
2.5.2 工具使用
ssh -v -p port username@ip
2.6 nmap
2.6.1 工具简介
nmap(“Network Mapper”)是一个用于网络探索和安全审计的开源工具,被设计用来快速地扫描大规模网络,尽管对于单个主机它也同样能够正常工作。
nmap 扫描器主要基本功能有三个,一是探测一组主机是否在线,其次是扫描主机端口,嗅探所提供的网络服务,还可以推断主机所用的操作系统。也可以深入探测 UDP 或者 TCP 端口,直至主机所使用的操作系统;还可以将所有探测结果记录到各种格式的日志中, 供进一步分析操作。
2.6.2 工具安装
yum install nmap -y
#or
sudo apt install nmap
2.6.2 工具使用
nmap 127.0.0.1 -p 80
检测端口成功!!!
nmap 127.0.0.1 -p 8080
检测端口失败!!!
查看当前开放的端口:nmap localhost;
查看主机端口(1024-65535)中开放的端口:nmap -p 1024-65535 localhost;
探测目标主机开放的端口:nmap -PS ip 地址;
探测所列出的目标主机端口:nmap -p22,80,3306 ip 地址;
探测目标主机操作系统类型、端口服务名称、版本信息:nmap -sV -O localhost。
- 扫描具有范围的所有TCP端口 (Scan All TCP Ports with Range)
我们可以使用-p选项指定端口范围。 我们知道TCP端口号介于和65535 。 我们将使用-p0-65535作为选项,以扫描所有TCP端口。 我们未指定TCP协议,因为Nmap端口扫描的默认协议为TCP。
nmap -p0-65535 192.168.122.1
- 更快扫描所有端口 (Faster Scan For All Ports)
如果我们要扫描所有端口,则将花费大量时间。 如果情况不是很紧急,我们可以使用带有-T5参数的更快扫描。 这是Nmap最快的扫描级别。 此选项也可用于UDP扫描。
nmap -p0-65535 192.168.122.1 -T5
3、Python
3.1 sock.connect_ex
使用socket模块的connect_ex来判断端口是否打开
import socket
def check_port(ip, port):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(5)
try:
result = sock.connect_ex((ip, port))
if result == 0:
return True
else:
return False
except Exception as e:
print(f"错误: {str(e)}")
finally:
sock.close()
if name == ‘__main__’:
host = ‘localhost’
port = 8000
if check_port(host, port):
print(f’The port {port} on {host} is open.‘)
else:
print(f’The port {port} on {host} is closed.’)
执行结果如下:
3.2 sock.connect
import socket
def check_port(host, port):
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(1)
sock.connect((host, port))
sock.close()
return True
except:
return False
finally:
sock.close()
if name == ‘__main__’:
ret = check_port(‘127.0.0.1’, 80)
print("80: ", ret)
ret = check_port(‘127.0.0.1’, 8000)
print("8000: ", ret)
3.3 telnet命令
telnet <IP地址> <端口>
import os
def check_port(ip, port):
result = os.system(f"telnet {ip} {port}") #windows
result = os.system(f"telnet {ip} {port} > /dev/null 2>&1") #linux
if result == 0:
print(f"端口 {port} 是开放的")
else:
print(f"端口 {port} 是关闭的")
if name == ‘__main__’:
ret = check_port(‘127.0.0.1’, 80)
print("80: ", ret)
ret = check_port(‘127.0.0.1’, 8000)
print("8000: ", ret)
3.4 nc命令
nc -zv <IP地址> <端口>
import os
def check_port(ip, port):
result = os.system(f"nc -zv {ip} {port} > /dev/null 2>&1")
if result == 0:
print(f"端口 {port} 是开放的")
else:
print(f"端口 {port} 是关闭的")
if name == ‘__main__’:
ret = check_port(‘127.0.0.1’, 80)
print("80: ", ret)
ret = check_port(‘127.0.0.1’, 8000)
print("8000: ", ret)
3.5 ping命令
ping <IP地址> -n <端口>
import os
def check_port(ip, port):
result = os.system(f"ping {ip} -n {port} > /dev/null 2>&1")
result = os.system(f"ping {ip} -n {port} “)
if result == 0:
print(f"端口 {port} 是开放的”)
else:
print(f"端口 {port} 是关闭的")
if name == ‘__main__’:
ret = check_port(‘127.0.0.1’, 80)
print("80: ", ret)
ret = check_port(‘127.0.0.1’, 8000)
print("8000: ", ret)
3.6 requests检查http端口
import requests
def check_port(ip, port):
try:
response = requests.get(f"http://{ip}:{port}“)
if response.status_code == 200:
print(f"端口 {port} 是开放的”)
else:
print(f"端口 {port} 是关闭的")
except requests.exceptions.ConnectionError:
print(f"端口 {port} 是关闭的")
if name == ‘__main__’:
ret = check_port(‘127.0.0.1’, 80)
print("80: ", ret)
ret = check_port(‘127.0.0.1’, 8000)
print("8000: ", ret)
3.7 Scapy库
Scapy是一个由Python编写的强大工具,目前很多优秀的网络扫描攻击工具都使用了这个模块。也可以在自己的程序中使用这个模块来实现对网络数据包的发送、监听和解析。这个模块相对于Nmap来说,更为底层。可以更直观的了解网络中的各类扫描攻击行为。
Scapy是一个 Python程序,它允许用户发送、嗅探、分析和伪造网络包。这种能力允许构建能够探测、扫描或攻击网络的工具。
Scapy是一个强大的交互式包操作程序。它能够伪造或解码大量协议的数据包,在网络上发送它们,捕获它们,匹配请求和响应,等等。Scapy可以轻松地处理大多数经典任务,如扫描、跟踪、探测、单元测试、攻击或网络发现。它可以代替hping、arpsoof、arp-sk、arping、p0f甚至Nmap、tcpdump和tshark的某些部分。
- 安装Scapy库
pip install scapy
- 代码测试
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
rp-sk、arping、p0f甚至Nmap、tcpdump和tshark的某些部分。
- 安装Scapy库
pip install scapy
- 代码测试
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-5DXrmfdg-1713178379431)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)