ਸ਼ੈਡੋਸਾਕਸ ਦਸਤਾਵੇਜ਼

ਸ਼ੈਡੋਸਾਕਸ ਸੰਰਚਨਾ ਫਾਰਮੈਟ

ਫਾਈਲ

ਸ਼ੈਡੋਸੌਕਸ JSON ਫਾਰਮੈਟ ਸੰਰਚਨਾ ਲੈਂਦਾ ਹੈ:

{

    "ਸਰਵਰ":"my_server_ip",

    "ਸਰਵਰ_ਪੋਰਟ": 8388,

    "ਲੋਕਲ_ਪੋਰਟ": 1080,

    "ਪਾਸਵਰਡ":"ਬਰਫੂ!",

    "ਵਿਧੀ":"chacha20-ietf-poly1305"

}

JSON ਫਾਰਮੈਟ

  • ਸਰਵਰ: ਤੁਹਾਡਾ ਹੋਸਟਨਾਮ ਜਾਂ ਸਰਵਰ IP (IPv4/IPv6)।
  • ਸਰਵਰ_ਪੋਰਟ: ਸਰਵਰ ਪੋਰਟ ਨੰਬਰ।
  • local_port: ਸਥਾਨਕ ਪੋਰਟ ਨੰਬਰ।
  • ਪਾਸਵਰਡ: ਟ੍ਰਾਂਸਫਰ ਨੂੰ ਏਨਕ੍ਰਿਪਟ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਣ ਵਾਲਾ ਪਾਸਵਰਡ।
  • ਵਿਧੀ: ਏਨਕ੍ਰਿਪਸ਼ਨ ਵਿਧੀ।

ਏਨਕ੍ਰਿਪਸ਼ਨ ਵਿਧੀ

ਅਸੀਂ ਆਪਣੇ ਸਰਵਰਾਂ ਨੂੰ ਕੌਂਫਿਗਰ ਕਰਦੇ ਹਾਂ ਅਤੇ ਸਿਫਾਰਸ਼ ਕਰਦੇ ਹਾਂ ਕਿ ਤੁਸੀਂ chacha20-ietf-poly1305 AEAD ਸਾਈਫਰ ਦੀ ਵਰਤੋਂ ਕਰੋ ਕਿਉਂਕਿ ਇਹ ਐਨਕ੍ਰਿਪਸ਼ਨ ਦਾ ਸਭ ਤੋਂ ਮਜ਼ਬੂਤ ​​ਤਰੀਕਾ ਹੈ। 

ਜੇਕਰ ਤੁਹਾਡੇ ਆਪਣੇ ਸ਼ੈਡੋਸਾਕਸ ਸਰਵਰ ਨੂੰ ਕੌਂਫਿਗਰ ਕਰ ਰਹੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ "chacha20-ietf-poly1305" ਜਾਂ "aes-256-gcm" ਵਿੱਚੋਂ ਚੁਣ ਸਕਦੇ ਹੋ।

URI ਅਤੇ QR ਕੋਡ

ਐਂਡਰੌਇਡ / ਆਈਓਐਸ ਲਈ ਸ਼ੈਡੋਸੌਕਸ BASE64 ਏਨਕੋਡ ਕੀਤੇ URI ਫਾਰਮੈਟ ਸੰਰਚਨਾ ਵੀ ਲੈਂਦਾ ਹੈ:

ss://BASE64-ENCODED-STRING-WITHOUT-PADDING#TAG

 

ਸਧਾਰਨ URI ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ: ss://method:password@hostname:port

ਉਪਰੋਕਤ URI RFC3986 ਦੀ ਪਾਲਣਾ ਨਹੀਂ ਕਰਦਾ ਹੈ। ਇਸ ਕੇਸ ਵਿੱਚ ਪਾਸਵਰਡ ਸਧਾਰਨ ਟੈਕਸਟ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਨਾ ਕਿ ਪ੍ਰਤੀਸ਼ਤ-ਏਨਕੋਡ ਕੀਤਾ ਗਿਆ।



ਉਦਾਹਰਨ: ਅਸੀਂ 192.168.100.1:8888 'ਤੇ ਸਰਵਰ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹਾਂ ਵਰਤ bf-cfb ਏਨਕ੍ਰਿਪਸ਼ਨ ਵਿਧੀ ਅਤੇ ਪਾਸਵਰਡ ਟੈਸਟ/!@#:

 

ਫਿਰ, ਸਾਦੇ ਯੂ.ਆਰ.ਆਈ ss://bf-cfb:test/!@#:@192.168.100.1:8888, ਅਸੀਂ BASE64 ਏਨਕੋਡਡ URI ਬਣਾ ਸਕਦੇ ਹਾਂ: 

 

> console.log( “ss://” + btoa(“bf-cfb:test/!@#:@192.168.100.1:8888”) )

ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg

 

ਇਹਨਾਂ URIs ਨੂੰ ਸੰਗਠਿਤ ਕਰਨ ਅਤੇ ਪਛਾਣਨ ਵਿੱਚ ਮਦਦ ਕਰਨ ਲਈ, ਤੁਸੀਂ BASE64 ਏਨਕੋਡਡ ਸਤਰ ਦੇ ਬਾਅਦ ਇੱਕ ਟੈਗ ਜੋੜ ਸਕਦੇ ਹੋ:

ss://YmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-server

ਐਡਰੈਸਿੰਗ

ਸ਼ੈਡੋਸੌਕਸ SOCKS5 ਐਡਰੈੱਸ ਫਾਰਮੈਟ ਵਿੱਚ ਪਾਏ ਗਏ ਪਤਿਆਂ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ:

[1-ਬਾਈਟ ਕਿਸਮ][ਵੇਰੀਏਬਲ-ਲੰਬਾਈ ਹੋਸਟ][2-ਬਾਈਟ ਪੋਰਟ]

 

ਇੱਥੇ ਪਰਿਭਾਸ਼ਿਤ ਪਤੇ ਕਿਸਮਾਂ ਹਨ:

  • 0x01 : ਹੋਸਟ ਇੱਕ 4-ਬਾਈਟ IPv4 ਪਤਾ ਹੈ।
  • 0x03 : ਹੋਸਟ ਇੱਕ ਪਰਿਵਰਤਨਸ਼ੀਲ ਲੰਬਾਈ ਵਾਲੀ ਸਤਰ ਹੈ, ਜੋ 1-ਬਾਈਟ ਲੰਬਾਈ ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ, ਇਸਦੇ ਬਾਅਦ ਵੱਧ ਤੋਂ ਵੱਧ 255-ਬਾਈਟ ਡੋਮੇਨ ਨਾਮ ਹੁੰਦਾ ਹੈ।
  • 0x04 : ਹੋਸਟ ਇੱਕ 16-ਬਾਈਟ IPv6 ਪਤਾ ਹੈ।

 

ਪੋਰਟ ਨੰਬਰ ਇੱਕ 2-ਬਾਈਟ ਵੱਡਾ-ਐਂਡੀਅਨ ਗੈਰ-ਹਸਤਾਖਰਿਤ ਪੂਰਨ ਅੰਕ ਹੈ।

TCP

ss-ਸਥਾਨਕ ਕਲਾਇੰਟ ਪੇਲੋਡ ਡੇਟਾ ਤੋਂ ਬਾਅਦ ਟੀਚੇ ਦੇ ਪਤੇ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲੇ ਏਨਕ੍ਰਿਪਟਡ ਡੇਟਾ ਨੂੰ ਭੇਜ ਕੇ ss-ਰਿਮੋਟ ਨਾਲ ਇੱਕ ਕਨੈਕਸ਼ਨ ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ। ਇਨਕ੍ਰਿਪਸ਼ਨ ਵਰਤੇ ਗਏ ਸਾਈਫਰ ਦੇ ਆਧਾਰ 'ਤੇ ਵੱਖਰੀ ਹੋਵੇਗੀ।

[ਨਿਸ਼ਾਨਾ ਪਤਾ][ਪੇਲੋਡ]

ss-ਰਿਮੋਟ ਐਨਕ੍ਰਿਪਟਡ ਡੇਟਾ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ, ਫਿਰ ਟੀਚੇ ਦੇ ਪਤੇ ਨੂੰ ਡੀਕ੍ਰਿਪਟ ਅਤੇ ਪਾਰਸ ਕਰਦਾ ਹੈ। ਫਿਰ ਇਹ ਟੀਚੇ ਲਈ ਇੱਕ ਨਵਾਂ TCP ਕਨੈਕਸ਼ਨ ਬਣਾਉਂਦਾ ਹੈ ਅਤੇ ਪੇਲੋਡ ਡੇਟਾ ਨੂੰ ਅੱਗੇ ਭੇਜਦਾ ਹੈ। ss-remote ਟਾਰਗੇਟ ਤੋਂ ਇੱਕ ਜਵਾਬ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ ਫਿਰ ਡੇਟਾ ਨੂੰ ਐਨਕ੍ਰਿਪਟ ਕਰਦਾ ਹੈ ਅਤੇ ਇਸਨੂੰ ਡਿਸਕਨੈਕਟ ਹੋਣ ਤੱਕ ਵਾਪਸ ss-local ਵਿੱਚ ਭੇਜਦਾ ਹੈ।

ਅਸਪਸ਼ਟਤਾ ਦੇ ਉਦੇਸ਼ਾਂ ਲਈ, ਸਥਾਨਕ ਅਤੇ ਰਿਮੋਟ ਨੂੰ ਪਹਿਲੇ ਪੈਕੇਟ ਵਿੱਚ ਕੁਝ ਪੇਲੋਡ ਦੇ ਨਾਲ ਹੈਂਡਸ਼ੇਕ ਡੇਟਾ ਭੇਜਣਾ ਚਾਹੀਦਾ ਹੈ।

UDP

ss-local ਇਨਕ੍ਰਿਪਟਡ ਡੇਟਾ ਪੈਕੇਟ ਨੂੰ ਭੇਜਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਟੀਚਾ ਪਤਾ ਅਤੇ ਪੇਲੋਡ ss-ਰਿਮੋਟ ਨੂੰ ਹੁੰਦਾ ਹੈ।

[ਨਿਸ਼ਾਨਾ ਪਤਾ][ਪੇਲੋਡ]

ਇੱਕ ਵਾਰ ਇਨਕ੍ਰਿਪਟਡ ਪੈਕੇਟ ਪ੍ਰਾਪਤ ਹੋਣ ਤੋਂ ਬਾਅਦ, ss-ਰਿਮੋਟ ਟੀਚੇ ਦਾ ਪਤਾ ਡੀਕ੍ਰਿਪਟ ਅਤੇ ਪਾਰਸ ਕਰਦਾ ਹੈ। ਇਹ ਫਿਰ ਟੀਚੇ ਨੂੰ ਪੇਲੋਡ ਦੇ ਨਾਲ ਇੱਕ ਨਵਾਂ ਡਾਟਾ ਪੈਕੇਟ ਭੇਜਦਾ ਹੈ। ss-remote ਟਾਰਗੇਟ ਤੋਂ ਡਾਟਾ ਪੈਕੇਟ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ ਅਤੇ ਹਰੇਕ ਪੈਕੇਟ ਵਿੱਚ ਪੇਲੋਡ ਲਈ ਟਾਰਗੇਟ ਐਡਰੈੱਸ ਨੂੰ ਅੱਗੇ ਰੱਖਦਾ ਹੈ। ਐਨਕ੍ਰਿਪਟਡ ਕਾਪੀਆਂ ss-ਲੋਕਲ ਨੂੰ ਵਾਪਸ ਭੇਜੀਆਂ ਜਾਂਦੀਆਂ ਹਨ।

[ਨਿਸ਼ਾਨਾ ਪਤਾ][ਪੇਲੋਡ]

ਇਸ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ss-ਰਿਮੋਟ ਨੂੰ ss-ਲੋਕਲ ਲਈ ਨੈੱਟਵਰਕ ਐਡਰੈੱਸ ਅਨੁਵਾਦ ਕਰਨ ਲਈ ਉਬਾਲਿਆ ਜਾ ਸਕਦਾ ਹੈ।

ਆਪਣੀ 5-ਦਿਨ ਦੀ ਮੁਫ਼ਤ ਅਜ਼ਮਾਇਸ਼ ਸ਼ੁਰੂ ਕਰੋ