public Data(socks5.Socks.SocksRequest p, byte[] buffer, int count, DataType dtype) { Buffer = new byte[count]; Array.Copy(buffer, Buffer, count); Request = p; DataType = dtype; }
public override void OnServerDataReceived(object sender, socks5.TCP.DataEventArgs e) { if (e.Buffer.FindString("HTTP/1.") != -1 && e.Buffer.FindString("\r\n") != -1) { e.Buffer = e.Buffer.ReplaceString("\r\n", "\r\nX-Served-By: Socks5Server\r\n"); e.Count = e.Count + "X-Served-By: Socks5Server\r\n".Length; } }
public override socks5.TCP.Client OnConnectOverride(socks5.Socks.SocksRequest sr) { //use a socks5client to connect to it and passthru the data. //port 9050 is where torsocks is running (linux & windows) Socks5Client s = new Socks5Client ("localhost", 9050, sr.Address, sr.Port, "un", "pw"); if (s.Connect ()) { //connect synchronously to block the thread. return s.Client; } else { Console.WriteLine ("Failed!"); return null; } }
public override void OnClientDataReceived(object sender, socks5.TCP.DataEventArgs e) { //if data is HTTP, make sure it's not compressed so we can capture it in plaintext. if (e.Buffer.FindString(" HTTP/1.1") != -1 && e.Buffer.FindString("Accept-Encoding") != -1) { int x = e.Buffer.FindString("Accept-Encoding:"); int y = e.Buffer.FindString("\r\n", x + 1); e.Buffer = e.Buffer.ReplaceBetween(x, y, Encoding.ASCII.GetBytes(replaceWith)); e.Buffer = e.Buffer.ReplaceString("HTTP/1.1", "HTTP/1.0"); e.Count = e.Count - (y - x) + replaceWith.Length; } Utils.Add(new DataCapture.Data(e.Request, e.Buffer, e.Count, DataCapture.DataType.Sent)); }
public override socks5.TCP.Client OnConnectOverride(socks5.Socks.SocksRequest sr) { if (!IsGfwFucked(sr.Address)) return null; var proxysock = new Socket(SocketType.Stream, ProtocolType.Tcp); HttpWebRequest httpreq = HttpWebRequest.CreateHttp(sr.Address); WebProxy wp = httpreq.Proxy as WebProxy; wp.Address=new Uri(proxyurl); var response = httpreq.GetResponse(); var client = new Client(new Socket(SocketType.Stream, ProtocolType.Tcp), 65535); return client; }
public override void OnServerDataReceived(object sender, socks5.TCP.DataEventArgs e) { Utils.Add(new DataCapture.Data(e.Request, e.Buffer, e.Count, DataCapture.DataType.Received)); return; //If it's an HTTP request, make sure to use chunked. Read until chunked or content-length. if (Chunked.IsHTTP(e.Buffer) && Chunked.IsChunked(e.Buffer)) { //Chunked c = new Chunked(e.Client.Sock, e.Buffer, e.Count); //e.Buffer = c.ChunkedData; //e.Count = c.ChunkedData.Length; //Utils.Add(new DataCapture.Data(e.Request, c.ChunkedData, c.ChunkedData.Length, DataCapture.DataType.Received)); Utils.Add(new DataCapture.Data(e.Request, e.Buffer, e.Count, DataCapture.DataType.Received)); } //Save data into sent data list. else { } }
public override LoginStatus HandleLogin(socks5.Socks.User user) { return (user.Username == "test" && user.Password == "1234" ? LoginStatus.Correct : LoginStatus.Denied); }
//static socks5.Socks.Frame f_OnDataReceivedRemote(object sender, socks5.TCP.FrameEventArgs e) static byte[] f_OnDataReceivedRemote(object sender, socks5.TCP.FrameEventArgs e) { //return e.Frame; return e.Data; }
static socks5.Socks.LoginStatus f_OnAuthentication(object sender, socks5.TCP.SocksAuthenticationEventArgs e) { if(e.User.Username == "Thr" && e.User.Password == "yoloswag") return socks5.Socks.LoginStatus.Correct; return socks5.Socks.LoginStatus.Denied; }
public override bool OnConnect(socks5.Socks.SocksRequest Request) { Console.WriteLine(Request.Port); return true; }
/// <summary> /// Handle client connected callback. Useful for IPblocking. /// </summary> /// <param name="Client"></param> /// <returns>Return true to allow the connection, return false to deny it.</returns> public abstract bool OnConnect(socks5.TCP.Client Client, IPEndPoint IP);
public override void OnClientDataReceived(object sender, socks5.TCP.DataEventArgs e) { }