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 بهینه شده است؛ این فقط روی سرعت اثر دارد، نه رفتار قابل مشاهده.