
UDPack ist ein erweiterbarer generischer UDP-Paket-Obfuskator.
UDPack ist ein erweiterbarer generischer UDP-Paket-Verschleierer. Der Zweck dieser Anwendung besteht darin, sich in den Pfad eines UDP-Datenstroms zu setzen und die Pakete zu verschleiern, zu entschleiern oder anderweitig zu modifizieren.
Python 3.4 oder höher wird benötigt, da dieses Skript die Bibliothek asyncio verwendet. Es wird stets dringend empfohlen, die neueste Python-Version zu nutzen. Die grundlegenden Funktionen erfordern keine Abhängigkeiten von Drittanbietern, aber XChaCha20Poly1305Packer benötigt PyNaCl.
Warnung: Es muss betont werden, dass der Zweck dieser Anwendung die Verschleierung ist, nicht die Verschlüsselung. Viele Designentscheidungen wurden (und werden) bewusst gegen die Best Practices der Kryptografie getroffen, sodass die Verschleierungsmethoden mit hoher Wahrscheinlichkeit keiner Kryptoanalyse standhalten werden. VERLASSEN SIE SICH NICHT auf die Verschleierung für die Vertraulichkeit Ihrer Daten!!!
Die aktuelle Version trennt den Netzwerkteil in eine separate Manager-Klasse und behält die Verschleierung in den Packern bei. Sie verwendet Klassenfabrikfunktionen anstelle von Mixins, um abgeleitete Packer zu erzeugen. Dies macht es einfach, Packer zu verketten, wie im neuen PipelineManager demonstriert.
Diese Packer sind verfügbar:
NoOpPacker, CallSoonPacker: verschleiert nichts.
ConstDelayPacker, DelayPacker: verzögert jedes Datagramm um eine feste / variable Zeit.
RandomDropPacker: verwirft Pakete zufällig.
ShufflePacker: mischt die Reihenfolge der Datenbytes deterministisch und verwendet den Zufallsseed als Schlüssel.
XorMaskPacker, ReverseOnePlusPacker, XorPtrPosPacker: inspiriert vom "XOR Patch" für OpenVPN, können diese 3 Packer in Kombination jede Verschleierungsmethode aus diesem Patch emulieren.
Neu: XChaCha20Poly1305Packer: Verschlüsselt jedes Datagramm mit XChaCha20Poly1305, wodurch der Inhalt von zufälligen Bytes nicht zu unterscheiden ist. 40 Bytes Overhead pro Datagramm. Verfügbar, wenn PyNaCl installiert ist.
Ein "Packer" ist eine bestimmte Implementierung einer Verschleierungsmethode, die Pakete auf dem Upstream verschleiert und Pakete auf dem Downstream entschleiert. Ein "Unpacker" ist dasselbe, in entgegengesetzter Richtung implementiert.
Typischerweise wird ein Unpacker in der Nähe des Servers eingerichtet, wobei sein remote_addr auf die lauschende address:port des Servers zeigt. Ein oder mehrere Packer werden in der Nähe des/der Clients eingerichtet und zeigen auf die lauschende addr:port des Unpackers. Alle Packer und Unpacker sollten übereinstimmende Konfigurationen haben. Schließlich verbinden sich die Clients mit der lauschenden addr:port des Packers. Der Packer verschleiert jeglichen eingehenden Datenverkehr und sendet ihn an den Unpacker, der ihn entschleiert und an den Server weiterleitet.
raw data obfuscated data raw data
UDP Client ---------- Packer =============== Unpacker ---------- UDP server
upstream ==> <== downstream
Dafür: Code schreiben, keine Konfiguration. Erstellen Sie einfach Ihre gewünschte Pipeline aus den verfügbaren Packern und instanziieren Sie Ihren Packer. Siehe script.py für ein Beispiel.