پرش به مطلب اصلی

ObfuscatorClient

ObfuscatorClient یک transform برگشت‌پذیر روی payload اعمال می‌کند تا الگوهای واضح داخل traffic کمتر دیده شوند. این نود رمزنگاری امن نیست؛ برای امنیت واقعی از EncryptionClient/Server یا TLS استفاده کنید.

در نسخه فعلی فقط روش xor پشتیبانی می‌شود و باید با ObfuscatorServer در سمت مقابل، با همان تنظیمات، جفت شود.

جایگاه رایج

TcpListener -> ObfuscatorClient -> TcpConnector
TcpListener -> ObfuscatorClient -> UdpConnector

سمت مقابل:

TcpListener -> ObfuscatorServer -> TcpConnector

نمونه تنظیم

{
"name": "obfuscator-client",
"type": "ObfuscatorClient",
"settings": {
"method": "xor",
"xor_key": 90,
"skip": "transport",
"tls_record_header": true
},
"next": "transport-node"
}

تنظیمات

گزینهاجباریتوضیح
methodبلهفعلا فقط xor
xor_keyبله، وقتی method=xorکلید یک‌بایتی XOR. مقدارهای بیرون 0..255 عملا به یک بایت تبدیل می‌شوند.
skipخیربخش ابتدایی packet که clear باقی می‌ماند: none، ipv4 یا transport
tls_record_headerخیراگر true باشد سمت transport یک header پنج‌بایتی شبیه TLS application-data اضافه/حذف می‌شود

skip چه می‌کند؟

skip مشخص می‌کند قبل از اجرای XOR چه مقدار از ابتدای payload دست‌نخورده بماند:

  • none: کل payload XOR می‌شود.
  • ipv4: اگر payload یک IPv4 packet معتبر باشد، فقط IPv4 header clear می‌ماند.
  • transport: اگر payload یک IPv4 TCP/UDP packet معتبر باشد، IPv4 header و TCP/UDP header clear می‌مانند.

اگر skip فعال باشد ولی payload قابل parse به شکل مورد انتظار نباشد، نود fallback می‌کند و کل payload را XOR می‌کند.

tls_record_header

وقتی tls_record_header فعال باشد:

  • در مسیر transport-facing، بعد از XOR یک header پنج‌بایتی اضافه می‌شود.
  • در مسیر برگشت، همان header validate و حذف می‌شود، سپس XOR انجام می‌شود.
  • header شبیه TLS application-data است: 17 03 03 و بعد طول payload به صورت big-endian.

این TLS واقعی نیست، handshake ندارد و امنیت رمزنگاری ایجاد نمی‌کند. فقط شکل recordهای post-handshake TLS را تقلید می‌کند.

هشدار

برخلاف نسخه‌های قدیمی docs، این نود همیشه بدون تغییر سایز نیست. اگر tls_record_header=true باشد، سمت transport برای هر payload پنج بایت header اضافه می‌کند و در برگشت حذف می‌کند. payload بزرگ‌تر از 65535 بایت در این mode قابل قرار گرفتن در یک record نیست و drop می‌شود.

نکته‌ها

  • ObfuscatorClient و ObfuscatorServer باید method و xor_key یکسان داشته باشند.
  • XOR برای مخفی‌سازی سبک است، نه امنیت cryptographic.
  • helper XOR در سورس با مسیرهای AVX2 و chunked بهینه شده است؛ این فقط روی سرعت اثر دارد، نه رفتار قابل مشاهده.