
UDPack은 확장 가능한 범용 UDP 패킷 난독화 도구입니다.
UDPack은 확장 가능한 범용 UDP 패킷 난독화기입니다. 이 애플리케이션의 목적은 UDP 데이터 스트림의 경로에 위치하여 패킷을 난독화, 역난독화 또는 수정하는 것입니다.
이 스크립트는 asyncio 라이브러리를 사용하므로 Python 3.4 이상이 필요합니다. 항상 최신 Python 릴리스를 사용하는 것을 강력히 권장합니다. 기본 기능에는 서드파티 의존성이 필요 없지만, XChaCha20Poly1305Packer는 PyNaCl이 필요합니다.
경고: 이 애플리케이션의 목적이 암호화가 아니라 난독화라는 점을 강조해야 합니다. 많은 설계 결정이 의도적으로 암호화 모범 사례에 반하도록 이루어졌으며 (앞으로도 그럴 것입니다), 따라서 난독화 방법은 암호 분석에 저항하지 못할 가능성이 매우 높습니다. 데이터의 기밀성을 위해 난독화에 의존하지 마십시오!!!
현재 버전은 네트워크 부분을 별도의 Manager 클래스로 분리하고 난독화를 패커에 유지하며, 믹스인 대신 클래스 팩토리 함수를 사용하여 파생 패커를 생성합니다. 이를 통해 새로운 PipelineManager에서 볼 수 있듯이 패커를 쉽게 연결할 수 있습니다.
사용 가능한 패커는 다음과 같습니다:
NoOpPacker, CallSoonPacker: 실제로 아무것도 난독화하지 않습니다.
ConstDelayPacker, DelayPacker: 각 데이터그램을 고정/가변 시간만큼 지연시킵니다.
RandomDropPacker: 패킷을 무작위로 버립니다.
ShufflePacker: 임의 시드를 키로 사용하여 데이터 바이트의 순서를 결정론적으로 셔플합니다.
XorMaskPacker, ReverseOnePlusPacker, XorPtrPosPacker: OpenVPN용 "XOR Patch"에서 영감을 받은 이 3가지 패커는 결합 시 해당 패치의 모든 난독화 방법을 에뮬레이션할 수 있습니다.
신규: XChaCha20Poly1305Packer: XChaCha20Poly1305를 사용하여 각 데이터그램을 암호화하여 내용을 임의의 바이트와 구분할 수 없게 만듭니다. 각 데이터그램당 40바이트 오버헤드가 있습니다. PyNaCl이 설치된 경우 사용할 수 있습니다.
"패커(packer)"는 특정 난독화 방식의 구현으로, 업스트림으로 이동하는 패킷을 난독화하고 다운스트림으로 이동하는 패킷을 역난독화합니다. "언패커(unpacker)"는 동일한 것이며 반대 방향으로 구현된 것입니다.
일반적으로 언패커는 서버 근처에 설정되며, remote_addr은 서버의 수신 대기 address:port를 가리킵니다. 하나 이상의 패커는 클라이언트 근처에 설정되어 언패커의 수신 대기 addr:port를 가리킵니다. 모든 패커와 언패커는 일치하는 구성을 가져야 합니다. 마지막으로 클라이언트는 패커의 수신 대기 addr:port에 연결합니다. 패커는 수신한 모든 트래픽을 난독화하여 언패커로 보내며, 언패커는 이를 역난독화하여 서버로 전달합니다.
raw data obfuscated data raw data
UDP Client ---------- Packer =============== Unpacker ---------- UDP server
upstream ==> <== downstream
이 경우에는 구성(configuration)이 아닌 코드를 작성합니다. 사용 가능한 패커로 원하는 파이프라인을 구성하고 패커를 인스턴스화하기만 하면 됩니다. 예제는 script.py를 참조하세요.