socks5proxydetectprocedure.cs
来自「破解的飞信源代码」· CS 代码 · 共 87 行
CS
87 行
namespace Imps.Client.CommLayer.NetworkDetect
{
using Imps.Client.CommLayer.SocksSipConnection;
using System;
using System.Runtime.InteropServices;
internal sealed class Socks5ProxyDetectProcedure : SocksProxyDetectProcedure
{
public Socks5ProxyDetectProcedure(string proxyUrl, int proxyPort, string userName, string passWord, string dstUrl, int dstPort) : base(proxyUrl, proxyPort, userName, passWord, dstUrl, dstPort)
{
}
public override bool Authenticate(out SocksMessage Msg)
{
try
{
base.client.Send(new PasswordMethodSocks5Message(base._userName, base._passWord).ToBinary());
if (base.client.Receive(base.buffer) == 0)
{
Msg = null;
return false;
}
Msg = ReplyPasswordMethodSocks5Message.Parse(base.buffer);
return true;
}
catch
{
Msg = null;
return false;
}
}
public override bool BindToServer(out SocksMessage Msg)
{
try
{
base.client.Send(new ConnectToServerSocks5Message(base._dstUrl, base._dstPort).ToBinary());
if (base.client.Receive(base.buffer) == 0)
{
Msg = null;
return false;
}
Msg = ReplyRequirmentSocks5Message.Parse(base.buffer);
return true;
}
catch
{
Msg = null;
return false;
}
}
public override bool QueryAuthMethod(out SocksMessage Msg)
{
try
{
QueryMethodSocks5Message message = null;
if (base._userName.Length > 0)
{
SocksMethod[] methods = new SocksMethod[2];
methods[1] = SocksMethod.Password;
message = new QueryMethodSocks5Message(methods);
}
else
{
SocksMethod[] methodArray2 = new SocksMethod[1];
message = new QueryMethodSocks5Message(methodArray2);
}
base.client.Send(message.ToBinary());
if (base.client.Receive(base.buffer) == 0)
{
Msg = null;
return false;
}
Msg = ReplyQueryMethodSocks5Message.Parse(base.buffer);
return true;
}
catch
{
Msg = null;
return false;
}
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?