joggle ngrok实现kscan内网扫描服务清单

开源项目
2025-04-19 00:09:30
分享

joggle p2p原理图

为什么需要扫描服务清单?


        joggle的使用体验是用户自己添加端口、ip配置,对于普通用户来说对这些都不擅长。为了让joggle客户端能够有更好的使用体验,于是本人开始开发客户端程序。为了让功能能够自动发现服务,因此对ngrok再次开发实现内网端口扫描。


下图是joggle集成kscan通讯的原理图:

1745020983022.png


kscan的扫描结果如下所示:

[
    {
       "Digest": "\"SSH-2.0-OpenSSH_8.9p1 Ub\"",
       "IP": "192.168.1.6",
       "Info": "Ubuntu Linux; protocol 2.0",
       "Keyword": "ssh",
       "Length": "42",
       "MatchRegexString": "^SSH-([\\d.]+)-OpenSSH_([\\w._-]+)[ -]{1,2}Ubuntu[ -_]([^\\r\\n]+)\\r?\\n",
       "OperatingSystem": "Linux",
       "Port": "22",
       "ProbeName": "TCP_NULL",
       "ProductName": "OpenSSH",
       "Response": "SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.11\r\n",
       "Service": "ssh",
       "URL": "ssh://192.168.1.6:22",
       "Version": "8.9p1 Ubuntu 3ubuntu0.11"
    }
  ]


那么我需要将json数组解析为我需要的数据结构,例如:名称、图标、本地ip+端口、协议。


这里就面临一个问题,选择使用(joggle-server)Java侧解析还是(ngrok)golang侧解析?


最后选择的java解析!!!




调试设备的服务清单,设备相关服务启动完成后,点击上面的【扫描服务清单触发本地扫描任务】就像NPC接到了一个任务一样。

1745051274166.png


点击扫描服务清单后,ngrok侧输出扫描的结果日志,并存储到conf/services.json

1745051574687.png



开发完,

扫描结果看一看

1745159337717.png

 1745159319388.png




The End
免责声明:本文系转载,版权归原作者所有;旨在传递信息,不代表本站观点和立场。