
UDPackは、拡張可能な汎用UDPパケット難読化ツールです。
UDPackは拡張可能な汎用UDPパケット難読化ツールです。このアプリケーションの目的は、UDPデータストリームの経路上に配置され、パケットの難読化、復号化、またはその他の変更を行うことです。
Python 3.4以上が必要です。このスクリプトはasyncioライブラリを使用しているためです。常に最新のPythonリリースを使用することを強く推奨します。基本機能はサードパーティの依存関係を必要としませんが、XChaCha20Poly1305PackerはPyNaClを必要とします。
警告: このアプリケーションの目的は難読化であり、暗号化ではないことを強調しておく必要があります。多くの設計上の決定は、意図的に暗号化のベストプラクティスに反して行われており(今後も行われる予定です)、そのため難読化方式は暗号解析に耐えられない可能性が非常に高いです。データの機密性を難読化に依存しないでください!!!
現在のバージョンでは、ネットワーク部分を別のManagerクラスに分離し、難読化をパッカー内に保持し、ミックスインの代わりにクラスファクトリ関数を使用して派生パッカーを生成します。これにより、新しいPipelineManagerで示されているように、パッカーを簡単にチェーンできます。
以下のパッカーが利用可能です:
NoOpPacker、CallSoonPacker: 実際には何も難読化しません。
ConstDelayPacker、DelayPacker: 各データグラムを固定/可変時間遅延させます。
RandomDropPacker: パケットをランダムにドロップします。
ShufflePacker: ランダムシードをキーとして、データバイトの順序を決定論的にシャッフルします。
XorMaskPacker、ReverseOnePlusPacker、XorPtrPosPacker: OpenVPNの「XORパッチ」に触発された3つのパッカーで、組み合わせることでそのパッチのあらゆる難読化方式をエミュレートできます。
新機能: XChaCha20Poly1305Packer: 各データグラムをXChaCha20Poly1305で暗号化し、内容をランダムバイトと区別できなくします。各データグラムのオーバーヘッドは40バイトです。PyNaClがインストールされている場合に利用可能です。
「パッカー」は難読化方式の具体的な実装であり、上り方向のパケットを難読化し、下り方向のパケットを復号化します。「アンパッカー」は同じものですが、逆方向に実装されています。
通常、アンパッカーはサーバーの近くに設置され、そのremote_addrはサーバーのリスニングaddress:portを指します。1つ以上のパッカーがクライアントの近くに設置され、アンパッカーのリスニングaddr:portを指します。すべてのパッカーとアンパッカーは一致する設定を持つ必要があります。最後に、クライアントはパッカーのリスニングaddr:portに接続します。パッカーは受信したすべてのトラフィックを難読化してアンパッカーに送信し、アンパッカーは復号化してサーバーに転送します。
生データ 難読化データ 生データ
UDP クライアント ---------- パッカー =============== アンパッカー ---------- UDP サーバー
上り方向 ==> <== 下り方向
これについては: コードを書き、設定は書きません。利用可能なパッカーから目的のパイプラインを構築し、パッカーをインスタンス化するだけです。例についてはscript.pyを参照してください。