本脚本旨在尽可能多地打开套接字(1024 - 65535 之间)。
低于 1024 也可以工作,但你必须以 root 用户身份运行。
它可以用于不希望别人绘制出你的设备
并了解正在运行什么服务等场景,因此这是挫败侦察的一个小步骤。
Portforge.cr 使用 Crystal 编译器中内置的一种称为 Fibers 的技术。
它们非常类似于系统线程,但 Fibers 更轻量级
并且执行过程由该进程管理 1。
你选择的范围越大,脚本加载每个套接字所需的
时间就越长,但我已尽力优化脚本,
因此应该只需几分钟(当然取决于系统)。
该脚本分两步工作。
首先,它对系统执行自己的扫描,查看哪些端口已经打开。
然后将打开的端口放入一个列表,关闭的端口放入另一个列表。
下一步是打开关闭的端口,因此脚本选择包含所有关闭
端口的列表,并在每个端口上打开一个套接字。
在主纤程在每个端口上打开套接字的同时,
另一个纤程在主纤程下运行,监听传入连接并直接关闭它。
此过程会无限重复,直到你中断脚本。
crystal build portforge.cr
./portforge IP 起始端口 结束端口
第一张图是 portforge.cr 运行时的截图,第二张是 Nmap 扫描的结果。
如你所见,Nmap 认为我运行了所有这些服务,而实际上只有 portforge.cr 在运行。
