【问题标题】:What is wrong with my socks v5 handshake?我的 socks v5 握手有什么问题?
【发布时间】:2013-03-31 04:39:57
【问题描述】:

我正在尝试通过实现 SOCKS5 让我的程序通过 Tor 引导它的流量,到目前为止我已经得到了这个:

char first =(0x00,0x01,0x05);
char sec=(0x50,0x00,0xE2,0xE1,0x7D,0x4A,0x01,0x00,0x01,0x05);
send(ProxySocket, &first,(int) 3,0);
send(ProxySocket, &sec, (int) sizeof(sec),0);

但是当我运行我的程序时,tor 告诉我“[警告] 获取袜子握手失败。关闭。” 我发送的数据包有问题吗?

【问题讨论】:

  • 编译器什么时候认为这会编译?
  • @Ed Heal:代码肯定会编译。
  • @dbasic - 我想撤回我的声明,但我认为该代码是 userX 不期望的,因为它认为它将是一个列表。
  • @Ed Heal:你是对的。代码绝对不是用户所期望的。
  • @Ed Heal:我无法理解这一点。你说得对,这不是预期的代码,声明不会导致数组/列表。

标签: c++ c network-programming socks


【解决方案1】:

此代码错误。 的价值 字符优先 = (0x00, 0x01, 0x05); 将是 0x05。请参阅作业中的括号规则。 我认为应该是 字符第一[] = {0x00, 0x01, 0x05}; 现在您可以先使用 sizeof 运算符了。

在第二次发送调用中,您使用的是 sizeof(sec),结果是一个字符。

用途:

 char sec[] = {0x50,0x00,0xE2,0xE1,0x7D,0x4A,0x01,0x00,0x01,0x05};

你的代码应该是:

char first[] ={0x00,0x01,0x05};
char sec[]={0x50,0x00,0xE2,0xE1,0x7D,0x4A,0x01,0x00,0x01,0x05};
send(ProxySocket, first,(int) sizeof(first),0);
send(ProxySocket, sec, (int) sizeof(sec),0);

【讨论】:

  • 感谢您的帮助,成功了!您可能已经注意到,我刚刚习惯了 C 和 C++。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-12
  • 2014-06-28
相关资源
最近更新 更多