Skip to content

Nine499/portscan49

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

portscan49

一个面向局域网的轻量扫描 CLI,支持:

  • 扫描网段内在线设备(icmp
  • 扫描网段内开放指定端口的设备(tcp

全部输出为中文,适合直接在终端使用或被脚本调用。


功能特性

  • 基于 uv tool install 本地安装,不污染系统 Python 包环境
  • 支持 IPv4 CIDR 网段输入(如 192.168.1.1/24
  • 端口表达式支持:
    • 单端口:443
    • 多端口:80,443,8080
    • 端口范围:20-1024
    • 多参数端口:53 80 443(等价于 53,80,443
  • 输出稳定排序:
    • 设备按 IP 升序
    • 每台设备端口按升序
  • 在无 ICMP 权限环境下(如常见 WSL 场景)自动降级为高速无特权探测,icmp 命令仍可用

环境要求

  • Python >=3.12
  • uv(用于安装与运行)

安装

在项目根目录执行:

uv tool install .

如果你更新了代码或版本号,执行:

uv tool install --force .

快速开始

1) 扫描在线设备

portscan49 icmp 192.168.1.1/24

示例输出:

在线设备:
192.168.1.1 36.46毫秒
192.168.1.124 8.57毫秒
192.168.1.200 7.96毫秒

2) 扫描开放端口设备

portscan49 tcp 192.168.1.1/24 443
portscan49 tcp 192.168.1.1/24 53,80,443
portscan49 tcp 192.168.1.1/24 53 80 443

示例输出:

开放端口设备:
192.168.1.1 80
192.168.1.124 80
192.168.1.200 53,80,443

命令说明

portscan49 icmp <IPv4-CIDR>

  • 输入:一个 IPv4 CIDR 网段
  • 输出:在线设备 IP + 毫秒延迟
  • 说明:
    • 优先走 ICMP 探测
    • 若当前环境无 ICMP socket 权限,会自动降级到无特权并发探测

portscan49 tcp <IPv4-CIDR> <端口表达式...>

  • 输入:IPv4 CIDR + 端口表达式
  • 输出:开放目标端口的设备与端口列表
  • 支持混合表达式,例如:
portscan49 tcp 192.168.1.1/24 22,80-82 443

错误处理与退出码

  • 参数错误:返回退出码 2,并输出中文错误信息
  • 未发现结果:返回退出码 0,并输出中文提示(如“未发现在线设备”)

性能说明

  • 内部使用 asyncio 并发扫描
  • TCP 扫描默认高并发,适合 /24 等常见网段快速探测
  • 实际耗时受网络质量、目标设备响应与主机性能影响

已知限制

  • 仅支持 IPv4 CIDR(不支持 IPv6)
  • 结果只在当前网络可达范围内有效
  • ICMP 权限策略受操作系统配置影响

开发与测试

运行测试:

uv run pytest -q

当前测试覆盖端口解析、参数校验、扫描核心流程与 CLI 行为。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages