From 95b35dcb47122d75ac83f1f83967b17fa1788718 Mon Sep 17 00:00:00 2001 From: Tunisiano18 Date: Fri, 4 Jul 2025 16:04:52 +0000 Subject: [PATCH 1/3] add utorrent 3.6.0 --- HISTORY.TXT | 5 +++++ Source/RatioMaster/RM.cs | 5 +++-- Source/RatioMaster/TorrentClientFactory.cs | 20 +++++++++++++++++++- Source/RatioMaster/VersionChecker.cs | 6 +++--- Website/history.php | 6 ++++++ 5 files changed, 36 insertions(+), 6 deletions(-) diff --git a/HISTORY.TXT b/HISTORY.TXT index 230cc1b..a0b4d94 100644 --- a/HISTORY.TXT +++ b/HISTORY.TXT @@ -1,3 +1,8 @@ +---=== 0.44 (04-07-2025) ===--- +- Global: The program is now open source and the source is available in https://github.com/NikolayIT/RatioMaster.NET +- Global: Program built for .NET Framework version 4.0 +- Global: Program information, links and about form updated +- RM: Added new client emulation: "uTorrent 3.6.0" ---=== 0.43 (08-01-2016) ===--- - Global: The program is now open source and the source is available in https://github.com/NikolayIT/RatioMaster.NET - Global: Program built for .NET Framework version 4.0 diff --git a/Source/RatioMaster/RM.cs b/Source/RatioMaster/RM.cs index 947d940..5dc6e4f 100644 --- a/Source/RatioMaster/RM.cs +++ b/Source/RatioMaster/RM.cs @@ -27,7 +27,7 @@ internal partial class RM : UserControl private int remWork = 0; internal string DefaultDirectory = ""; private const string DefaultClient = "uTorrent"; - private const string DefaultClientVersion = "3.3.2"; + private const string DefaultClientVersion = "3.6.0"; // internal delegate SocketEx createSocketCallback(); internal delegate void SetTextCallback(string logLine); @@ -410,6 +410,7 @@ internal void cmbClient_SelectedIndexChanged(object sender, EventArgs e) case "uTorrent": { + cmbVersion.Items.Add("3.6.0"); cmbVersion.Items.Add("3.3.2"); cmbVersion.Items.Add("3.3.0"); cmbVersion.Items.Add("3.2.0"); @@ -422,7 +423,7 @@ internal void cmbClient_SelectedIndexChanged(object sender, EventArgs e) cmbVersion.Items.Add("1.7.5"); cmbVersion.Items.Add("1.6.1"); cmbVersion.Items.Add("1.6"); - cmbVersion.SelectedItem = "3.3.2"; + cmbVersion.SelectedItem = "3.6.0"; if (customPeersNum.Text == "0" || customPeersNum.Text == "") customPeersNum.Text = "200"; break; } diff --git a/Source/RatioMaster/TorrentClientFactory.cs b/Source/RatioMaster/TorrentClientFactory.cs index b5e2138..e27939d 100644 --- a/Source/RatioMaster/TorrentClientFactory.cs +++ b/Source/RatioMaster/TorrentClientFactory.cs @@ -247,6 +247,24 @@ public static TorrentClient GetClient(string name) } #endregion #region uTorrent + case "uTorrent 3.6.0": + { + client.Name = "uTorrent 3.6.0"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/3320\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT3320-%18w" + GenerateIdString("random", 10, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT3320-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 200000000; + break; + } + case "uTorrent 3.3.2": { client.Name = "uTorrent 3.3.2"; @@ -721,7 +739,7 @@ public static TorrentClient GetClient(string name) #endregion default: { - client.Name = "uTorrent 3.3.2"; + client.Name = "uTorrent 3.6.0"; client.HttpProtocol = "HTTP/1.1"; client.HashUpperCase = false; client.Key = GenerateIdString("hex", 8, false, true); diff --git a/Source/RatioMaster/VersionChecker.cs b/Source/RatioMaster/VersionChecker.cs index ea11c50..c6123df 100644 --- a/Source/RatioMaster/VersionChecker.cs +++ b/Source/RatioMaster/VersionChecker.cs @@ -6,9 +6,9 @@ namespace RatioMaster_source public class VersionChecker { - public const string LocalVersion = "0430"; - public const string PublicVersion = "0.43"; - public const string ReleaseDate = "08-01-2016"; + public const string LocalVersion = "0440"; + public const string PublicVersion = "0.44"; + public const string ReleaseDate = "04-07-2025"; private const string ProgramPageVersion = "http://ratiomaster.net/vc.php?v="; private readonly string userAgent; diff --git a/Website/history.php b/Website/history.php index d7700d4..05d01e1 100644 --- a/Website/history.php +++ b/Website/history.php @@ -3,6 +3,12 @@ require_once("news.php"); ?>

Program changelog:

+

---=== 0.44 (04-07-2025) ===---
+- Global: The program is now open source and the source is available in https://github.com/NikolayIT/RatioMaster.NET
+- Global: Program built for .NET Framework version 4.0
+- Global: Program information, links and about form updated
+- RM: Added new client emulation: "uTorrent 3.6.0"
+- RM: Default client is now "uTorrent 3.6.0"

---=== 0.43 (08-01-2016) ===---
- Global: The program is now open source and the source is available in https://github.com/NikolayIT/RatioMaster.NET
- Global: Program built for .NET Framework version 4.0
From 84f2b53e09ac60cd8572100f9f7a4be147823ba4 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 24 Jun 2026 15:45:48 +0000 Subject: [PATCH 2/3] Fix uTorrent 3.6.0 client to use correct version identifiers The original PR #46 added uTorrent 3.6.0 but used UT3320 (3.3.2) values for User-Agent, PeerID prefix and SearchString instead of UT3600. Co-Authored-By: Claude Sonnet 4.6 Claude-Session: https://claude.ai/code/session_0145awWnPzsCjUvneEgnUSmk --- Source/RatioMaster/TorrentClientFactory.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Source/RatioMaster/TorrentClientFactory.cs b/Source/RatioMaster/TorrentClientFactory.cs index e27939d..93335d3 100644 --- a/Source/RatioMaster/TorrentClientFactory.cs +++ b/Source/RatioMaster/TorrentClientFactory.cs @@ -253,12 +253,12 @@ public static TorrentClient GetClient(string name) client.HttpProtocol = "HTTP/1.1"; client.HashUpperCase = false; client.Key = GenerateIdString("hex", 8, false, true); - client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/3320\r\nAccept-Encoding: gzip\r\n"; - client.PeerID = "-UT3320-%18w" + GenerateIdString("random", 10, true, false); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/3600\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT3600-" + GenerateIdString("random", 12, true, false); client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; client.DefNumWant = 200; client.Parse = true; - client.SearchString = "&peer_id=-UT3320-"; + client.SearchString = "&peer_id=-UT3600-"; client.ProcessName = "uTorrent"; client.StartOffset = 0; client.MaxOffset = 200000000; @@ -743,12 +743,12 @@ public static TorrentClient GetClient(string name) client.HttpProtocol = "HTTP/1.1"; client.HashUpperCase = false; client.Key = GenerateIdString("hex", 8, false, true); - client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/3320\r\nAccept-Encoding: gzip\r\n"; - client.PeerID = "-UT3320-%18w" + GenerateIdString("random", 10, true, false); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/3600\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT3600-" + GenerateIdString("random", 12, true, false); client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; client.DefNumWant = 200; client.Parse = true; - client.SearchString = "&peer_id=-UT3320-"; + client.SearchString = "&peer_id=-UT3600-"; client.ProcessName = "uTorrent"; client.StartOffset = 0; client.MaxOffset = 200000000; From 362d5db636ecea69fd23179f523dfb1e0ae1c654 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 24 Jun 2026 15:51:57 +0000 Subject: [PATCH 3/3] Add missing uTorrent versions (2.x, 3.0.x-3.5.x) Added 15 new uTorrent client profiles to cover the full version range: - 3.5.5, 3.5.3, 3.5.1, 3.5.0 (3.5.x series) - 3.4.9, 3.4.2, 3.4.0 (3.4.x series) - 3.1.3, 3.1.0, 3.0.0 (3.0.x / 3.1.x series) - 2.2.1, 2.2.0 (2.2.x series) - 2.0.4, 2.0.2, 2.0.0 (2.0.x series) Each client uses the correct Azureus-style peer ID (-UTXXYY-) and matching User-Agent header (uTorrent/XXYY). Updated the version dropdown in RM.cs accordingly. Co-Authored-By: Claude Sonnet 4.6 Claude-Session: https://claude.ai/code/session_0145awWnPzsCjUvneEgnUSmk --- Source/RatioMaster/RM.cs | 15 ++ Source/RatioMaster/TorrentClientFactory.cs | 270 +++++++++++++++++++++ 2 files changed, 285 insertions(+) diff --git a/Source/RatioMaster/RM.cs b/Source/RatioMaster/RM.cs index 5dc6e4f..b218ee9 100644 --- a/Source/RatioMaster/RM.cs +++ b/Source/RatioMaster/RM.cs @@ -411,10 +411,25 @@ internal void cmbClient_SelectedIndexChanged(object sender, EventArgs e) case "uTorrent": { cmbVersion.Items.Add("3.6.0"); + cmbVersion.Items.Add("3.5.5"); + cmbVersion.Items.Add("3.5.3"); + cmbVersion.Items.Add("3.5.1"); + cmbVersion.Items.Add("3.5.0"); + cmbVersion.Items.Add("3.4.9"); + cmbVersion.Items.Add("3.4.2"); + cmbVersion.Items.Add("3.4.0"); cmbVersion.Items.Add("3.3.2"); cmbVersion.Items.Add("3.3.0"); cmbVersion.Items.Add("3.2.0"); + cmbVersion.Items.Add("3.1.3"); + cmbVersion.Items.Add("3.1.0"); + cmbVersion.Items.Add("3.0.0"); + cmbVersion.Items.Add("2.2.1"); + cmbVersion.Items.Add("2.2.0"); + cmbVersion.Items.Add("2.0.4"); + cmbVersion.Items.Add("2.0.2"); cmbVersion.Items.Add("2.0.1 (build 19078)"); + cmbVersion.Items.Add("2.0.0"); cmbVersion.Items.Add("1.8.5 (build 17414)"); cmbVersion.Items.Add("1.8.1-beta(11903)"); cmbVersion.Items.Add("1.8.0"); diff --git a/Source/RatioMaster/TorrentClientFactory.cs b/Source/RatioMaster/TorrentClientFactory.cs index 93335d3..d8baac5 100644 --- a/Source/RatioMaster/TorrentClientFactory.cs +++ b/Source/RatioMaster/TorrentClientFactory.cs @@ -265,6 +265,132 @@ public static TorrentClient GetClient(string name) break; } + case "uTorrent 3.5.5": + { + client.Name = "uTorrent 3.5.5"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/3550\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT3550-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT3550-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 200000000; + break; + } + + case "uTorrent 3.5.3": + { + client.Name = "uTorrent 3.5.3"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/3530\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT3530-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT3530-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 200000000; + break; + } + + case "uTorrent 3.5.1": + { + client.Name = "uTorrent 3.5.1"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/3510\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT3510-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT3510-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 200000000; + break; + } + + case "uTorrent 3.5.0": + { + client.Name = "uTorrent 3.5.0"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/3500\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT3500-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT3500-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 200000000; + break; + } + + case "uTorrent 3.4.9": + { + client.Name = "uTorrent 3.4.9"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/3490\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT3490-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT3490-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 200000000; + break; + } + + case "uTorrent 3.4.2": + { + client.Name = "uTorrent 3.4.2"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/3420\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT3420-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT3420-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 200000000; + break; + } + + case "uTorrent 3.4.0": + { + client.Name = "uTorrent 3.4.0"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/3400\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT3400-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT3400-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 200000000; + break; + } + case "uTorrent 3.3.2": { client.Name = "uTorrent 3.3.2"; @@ -319,6 +445,150 @@ public static TorrentClient GetClient(string name) break; } + case "uTorrent 3.1.3": + { + client.Name = "uTorrent 3.1.3"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/3130\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT3130-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT3130-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 60000000; + break; + } + + case "uTorrent 3.1.0": + { + client.Name = "uTorrent 3.1.0"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/3100\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT3100-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT3100-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 60000000; + break; + } + + case "uTorrent 3.0.0": + { + client.Name = "uTorrent 3.0.0"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/3000\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT3000-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT3000-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 60000000; + break; + } + + case "uTorrent 2.2.1": + { + client.Name = "uTorrent 2.2.1"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/2210\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT2210-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT2210-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 60000000; + break; + } + + case "uTorrent 2.2.0": + { + client.Name = "uTorrent 2.2.0"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/2200\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT2200-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT2200-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 60000000; + break; + } + + case "uTorrent 2.0.4": + { + client.Name = "uTorrent 2.0.4"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/2040\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT2040-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT2040-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 60000000; + break; + } + + case "uTorrent 2.0.2": + { + client.Name = "uTorrent 2.0.2"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/2020\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT2020-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT2020-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 60000000; + break; + } + + case "uTorrent 2.0.0": + { + client.Name = "uTorrent 2.0.0"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/2000\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT2000-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT2000-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 60000000; + break; + } + case "uTorrent 2.0.1 (build 19078)": { client.Name = "uTorrent 2.0.1 (build 19078)";