扫描服务器端口(Python)

目录

  • 1 背景
  • 2 代码
    • 2.1 单线程扫描
    • 2.2 多线程扫描

1 背景

  如果只知道服务器的地址,不知道其提供服务端口号,可以通过扫描所有端口方式发现服务器提供哪些端口。下面使用Python编写脚本扫描服务器端口。

2 代码

服务器有效端口1-65535

2.1 单线程扫描

import socket
import sysdef find_port(ip, timeout, start, end, ports):for port in range(start, end):try:s = socket.socket()ip_port = (ip, port)s.settimeout(timeout)print(ip_port, end='\r')s.connect(ip_port)s.close()ports.append(port)print(ip_port, " is found")except ConnectionRefusedError:passexcept TimeoutError:passprint()if __name__ == "__main__":ip = "20.20.20.109"timeout = 0.1start = 1end = 65535if len(sys.argv) > 1:ip = sys.argv[1]if len(sys.argv) > 2:timeout = float(sys.argv[2])if len(sys.argv) > 3:start = int(sys.argv[3])if len(sys.argv) > 4:end = int(sys.argv[4])print("Finding, please wait...")ports = []find_port(ip, timeout, start, end, ports)print("Found ports: ")print(ports)

说明:

  • 脚本支持命令参数:
    • ip 地址
    • timeout 每次连接超时时间
    • start 开始端口
    • end 结束端口
      运行结果:
Finding, please wait...
('20.20.20.109', 22)  is found
('20.20.20.109', 902)  is found
('20.20.20.109', 5900)  is found
('20.20.20.109', 65534)
Found ports: 
[22, 902, 5900]

采用单线程扫描1-65535时间比较长,可以缩小搜索范围例如(1-10000)或采样下面多线程方式。

2.2 多线程扫描

import socket
import sys
import threadingdef find_port(ip, timeout, start, end, ports = []):for port in range(start, end):try:s = socket.socket()ip_port = (ip, port)s.settimeout(timeout)print(ip_port, end='\r')s.connect(ip_port)s.close()ports.append(port)print(ip_port, " is found")except ConnectionRefusedError:passexcept TimeoutError:passdef multi_find_port(ip, timeout, step):threads = []ports = []port = 0for _ in range(5):t = threading.Thread(target=find_port, args=(ip, timeout, port + 1, port + step, ports))            threads.append(t)t.start()port += stepfor t in threads:t.join()print()return portsif __name__ == "__main__":ip = "20.20.20.109"timeout = 0.1step = 13107if len(sys.argv) > 1:ip = sys.argv[1]if len(sys.argv) > 2:timeout = float(sys.argv[2])if len(sys.argv) > 3:step = int(sys.argv[3])print("Finding, please wait...")ports = multi_find_port(ip, timeout, step)print("Found ports: ")print(ports)

说明:

  • 该脚本启动5个线程来扫描端口
  • 命令上参数
    • ip 地址
    • timeout 每次连接超时时间
    • step 每个线程扫描范围
      运行结果:
Finding, please wait...
('20.20.20.109', 22)  is found
('20.20.20.109', 902)  is found
('20.20.20.109', 5900)  is found
('20.20.20.109', 65534)
Found ports: 
[22, 902, 5900]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/869903.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是智能制造?

科技的每一次飞跃都深刻改变着我们的生产生活方式。其中,智能制造作为工业4.0的核心概念,正引领着全球制造业向更加高效、灵活、智能的方向迈进。那么,究竟什么是智能制造?它如何重塑我们的工业版图,又将对未来社会产生…

TTT架构超越Transformer,ML模型替代RNN隐藏状态!

目录 01 算法原理 02 骨干架构 03 实验结果 一种崭新的大语言模型(LLM)架构有望取代当前主导 AI 领域的 Transformer,并在性能上超越 Mamba。 论文地址:https://arxiv.org/abs/2407.04620 本周一,关于 Test-Time Tr…

修复 Ubuntu 24.04 Dock 丢失应用程序图标

找出应用程序窗口的类名 首先,您需要启动应用程序窗口。然后,按 Alt F2 启动“运行 Command”对话框。当对话框打开时,输入 lg 并按 Enter 键。 在该窗口中,单击Windows按钮,然后找出目标应用程序窗口的类名称。 在/…

Jinja2模板引擎使用指南

文章目录 官网链接引言Jinja2 原理基础使用安装 Jinja2基本示例 高级使用宏(Macros)过滤器(Filters)继承(Inheritance) 结论 官网链接 Jinja2 官网 引言 Jinja2 是一个现代的、设计师友好的模板引擎&…

Flutter——最详细(Table)网格、表格组件使用教程

背景 用于展示表格组件,可指定线宽、列宽、文字方向等属性 属性作用columnWidths列的宽度defaultVerticalAlignment网格内部组件摆放方向border网格样式修改children表格里面的组件textDirection文本排序方向 import package:flutter/material.dart;class CustomTa…

公众号运营秘籍:8 大策略让你的粉丝翻倍!

在当今信息爆炸的时代,微信公众号的运营者们面临着前所未有的挑战:如何在这个充满竞争的红海中脱颖而出,吸引并留住粉丝?事实上,微信公众号的红利期并未完全过去,关键在于我们如何策略性地运营,…

使用PEFT库进行ChatGLM3-6B模型的QLORA高效微调

PEFT库进行ChatGLM3-6B模型QLORA高效微调 QLORA微调ChatGLM3-6B模型安装相关库使用ChatGLM3-6B模型GPU显存占用准备数据集加载数据集数据处理数据集处理加载量化模型-4bit预处理量化模型配置LoRA适配器训练超参数配置开始训练保存LoRA模型模型推理合并模型使用微调后的模型 QLO…

【Pytorch实用教程】transformer中创建嵌入层的模块nn.Embedding的用法

文章目录 1. nn.Embedding的简单介绍1.1 基本用法1.2 示例代码1.3 注意事项2. 通俗的理解num_embeddings和embedding_dim2.1 num_embeddings2.2 embedding_dim2.3 使用场景举例结合示例1. nn.Embedding的简单介绍 nn.Embedding 是 PyTorch 中的一个模块,用于创建一个嵌入层。…

【中国纸箱网元宇宙】—— 打造包装行业的数字生态系统

在数字化和互联网技术飞速发展的今天,各个行业都在探索如何利用新技术来促进业务的发展和创新。作为响应这一趋势的先行者,中国纸箱网已经正式迈入了元宇宙的世界,致力于为包装行业打造一个全面的数字生态系统。 ### 什么是中国纸箱网元宇宙…

准大一新生开学千万要带证件照用途大揭秘

1、提前关注好都有哪些考场,以及这些考场大致在网页的哪个位置。比如我选对外经贸大学,我就直接找到第二个点进去。 2、电脑上同时开了谷歌浏览器和IE浏览器,以及手机也登陆了。亲测下来,同一时间刷新,谷歌浏览器能显示…

​cesium、three.js,三维GIS为啥那么热?到底怎么学呢?

​cesium、three.js,三维GIS为啥那么热?他们的应用场景都是什么呢?接下来我们可以一起来看看~ 三维GIS的应用 GIS和3D的应用是趋势,目前已经有很多应用案例,例如BIM,智慧城市,数字孪生等。如下…

理解Gunicorn:Python WSGI服务器的基石

理解Gunicorn:Python WSGI服务器的基石 介绍 Gunicorn,全称Green Unicorn,是一个为Python WSGI(Web Server Gateway Interface)应用设计的高效、轻量级HTTP服务器。作为Python Web应用部署的常用工具,Gun…

汇聚荣拼多多电商实力强吗?

汇聚荣拼多多电商实力强吗?汇聚荣拼多多,作为中国电商领域的后起之秀,已经在市场上占据了一席之地。那么,它的实力究竟如何呢?在回答这个问题之前,我们需要先了解一下拼多多的基本情况。拼多多是一家以社交电商为主要模式的购物…

3个方法教你如果快速绕过Excel工作表保护密码

在日常生活中,我们可能会遇到一些特殊情况,比如不小心忘记了Excel文件中设置的打开密码。别担心!这里为您带来一份详细的Excel文件密码移除教程,助您轻松绕过Excel工作表保护。 方法一:使用备份文件 如果您有文件的备…

深入理解 go map

什么是 map 维基百科里这样定义 map: In computer science, an associative array, map, symbol table, or dictionary is an abstract data type composed of a collection of (key, value) pairs, such that each possible key appears at most once in the collection. 简单…

[nicetomeetyou@onionmail.org].Faust勒索病毒科普知识全解析

引言 随着网络技术的飞速发展,勒索病毒已成为威胁全球网络安全的一大隐患。[nicetomeetyouonionmail.org].Faust作为一种新型勒索病毒,通过其复杂的加密技术和隐蔽的传播手段,给个人、企业及政府机构带来了巨大的损失。本文将从多个维度全面解…

C++的入门——(命名空间, 输入输出 ,缺省参数 ,函数重载 ,引用, 内联函数 ,nullptr)

文章目录 引言c兼容C语⾔c的重要性C在⼯作领域中的应⽤ 一、命名空间namespace的价值namespace的定义命名空间使⽤ 二、 C输⼊&输出三、缺省参数四、函数重载1、参数类型不同2、参数个数不同3、参数类型顺序不同 五、引⽤1、引⽤的概念和定义2、引⽤的特性3、引⽤的使⽤4、…

计算机网络-HTTP常见面试题

目录 1. HTTP是什么?2. HTTP常见的状态码?3. HTTP 常见的字段有哪些?4. GET和POST有什么区别:5. GET 和POST方法都是安全和幂等的吗?6. HTTP缓存技术7. HTTP/1.1相比HTTP/1.0提高了什么性能?8. HTTP/2做了什…

SCSA第四天

ASPF FTP --- 文件传输协议 Tftp --- 简单文件传输协议 FTP协议相较于Tftp协议 ---- 1,需要进行认证 2,拥有一套完整的命令集 用户认证 防火墙管理员认证 ---- 校验登录者身份合法性 用户认证 --- 上网行为管理中的一环 上网用户认证 --- 三层认证…

Java SQL 连接(初级)

实训Day3 记实 实训第三天,今天是头脑风暴的第二天,课程将SQL与Java(idea)代码结合,这是一项具有挑战性的代码课程。课程将两个应用结合起来,展现了Java代码的跨平台性,展现了Java语言的封装性…