سلام

 

 

طبق تصویر بالا ابتدا یک کانکشن TCP با سرور پروکسی ساکس انجام میشود سپس یک پیام که حاوی ورژن ساکس (که در حال حاضر ۵ است) به همراه نحوه ی احراز هویت (که میتواند نداشته باشد) به سرور ارسال میشود سرور در پاسخ به ما میگوید که درخواست با شرایطی که گفتی اوکی بود

سپس ما در یک درخواست دیگر آدرس سرور هدف و پورت آن را به سرور پروکسی اعلام میکنیم و سرور پروکسی نیز همان لحظه یک کانکشن TCP با سرور هدف باز میکند و یک درخواست موفقیت آمیز بودن آن را به ما اعلام میکند. حال ما هرچیزی را که به سرور پروکسی ارسال کنیم سرور پروکسی آن را برای سرور هدف ارسال میکند.

 

 

به عنوان مثال در تصویر بالا ما ۰۵۰۱۰۰ را که نشان میدهد ورژن ساکس ما ۵ است و فقط یک راه احراز هویت داریم و دو صفر آخر هم به معنای این است که نمیخواهیم هیچگونه احراز هویتی انجام دهیم.

 

0x05 0x01 0x00
  • 0x05 indicates SOCKS version 5.
  • 0x01 indicates that one authentication method is supported.
  • 0x00 indicates "No Authentication Required."

درخواست دوم:

 

0x05 0x01 0x00 0x01 0x7F 0x00 0x00 0x01 0x04 0x00
  • 0x05 indicates SOCKS version 5.
  • 0x01 indicates the command to establish a TCP/IP stream connection.
  • 0x00 is a reserved field.
  • 0x01 indicates an IPv4 address type.
  • 0x7F 0x00 0x00 0x01 is the destination IP address (127.0.0.1).
  • 0x04 0x00 is the destination port (1024).

 

و درخواست آخر نیز مربوط به درخواست HTTP GET هست که مستقیم برای سرور تارگت ارسال میشود.

که اگر نتیجه ی آن را به استرینگ تبدیل کنیم خواهیم داشت:

 

توجه کنید من در مثال خودم به سایت api.ipify.org درخواست داده بودم که آیپی خودم رو چک کنم و متوجه شدم که آیپی به درستی نمایش داده میشود.