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 + -
显示快捷键?