
このスクリプトは、1024~65535の間で好きなだけ多くのソケットを開くことを目的としています。
1024未満でも動作しますが、その場合はrootユーザーである必要があります。
これは、あなたのデバイスをマッピングして何を実行しているかを調べられたくない場合に役立ちます。
つまり、偵察を無効化するための小さなステップです。
Portforge.crは、Crystalコンパイラに組み込まれているFibersと呼ばれる技術を使用しています。
Fibersはシステムスレッドと非常によく似ていますが、はるかに軽量で、
実行はプロセス1を通じて管理されます。
選択する範囲が大きいほど、スクリプトがすべてのソケットをロードするのに時間がかかりますが、
スクリプトを最適化するよう最善を尽くしたので、数分しかかからないはずです(もちろんシステムによります)。
スクリプトは2つのステップで動作します。
まず、システム上でどのポートが既に開いているかを独自にスキャンします。
開いているポートは1つのリストに、閉じているポートは別のリストに入れられます。
次のステップでは、閉じているポートを開きます。スクリプトは閉じているポートのリストを選択し、
それらのすべてにソケットを開きます。
メインのファイバーがすべてのポートにソケットを開いている間、
メインのファイバーの下で別のファイバーが呼び出され、受信接続をリッスンして直接閉じます。
このプロセスは無限に、またはスクリプトを中断するまで繰り返されます。
crystal build portforge.cr
./portforge IP startport endport
最初の画像はportforge.crの実行中で、2つ目はNmapスキャンの結果です。
ご覧のとおり、Nmapはこれらすべてのサービスが実行されていると認識していますが、実際にはportforge.crが実行されているだけです。
