Skip to content

RatioMaster.NET 1.2.0

Choose a tag to compare

@NikolayIT NikolayIT released this 11 Oct 11:31

This release brings the program to 38 languages and takes the emulations one step further: the closed-source clients were read from their own binaries.

In your language

RatioMaster.NET now speaks 38 languages: besides English, Albanian, Arabic, Bulgarian, Chinese (Simplified and Traditional), Croatian, Czech, Danish, Dutch, Estonian, Finnish, French, German, Greek, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Lithuanian, Norwegian, Polish, Portuguese (Brazil and Portugal), Romanian, Russian, Serbian (Cyrillic and Latin), Slovak, Slovenian, Spanish, Swedish, Thai, Turkish, Ukrainian and Vietnamese. It starts in the display language of the system, and Settings > General > Language picks another one. Arabic and Hebrew lay the window out from right to left, sizes and speeds use the units of the chosen language, and the log and error messages are translated too.

Fixed

The Host header left out the tracker's port. libtorrent, uTorrent, curl, Java and Python all write Host: tracker.example:2710 when the port is not 80 for http or 443 for https. We wrote the host name alone, which stood out on trackers running on ports such as 2710 or 6969. BitComet, whose own HTTP code sends the host alone, still does.

Every client escaped its announce the same way. The clients disagree on which characters of the info hash and peer id they leave unescaped: libtorrent (qBittorrent, Deluge) keeps -_.!~*(), uTorrent, BitTorrent and Transmission -._~, rTorrent only -, Vuze .-*_ and BitTornado _.-/. On top of that the request went through .NET's URL parser, which turned %2D, %2E, %5F and %7E back into - . _ ~ for every client. Each emulation now escapes like its client, and the request goes out exactly as built.

uTorrent's peer id ends in two check bytes, the first two bytes of a SHA-1 of the other 18. We sent random bytes there, which a tracker that checks could tell apart. uTorrent also picks its port from 10000-64999 when none is set, and so does the emulation now.

Vuze asked for the wrong number of peers. A default Vuze asks for 75 while downloading and 37 while seeding, not always 100, and picks its port from 10000-65535.

The rTorrent 0.9.6 emulation now escapes in upper case, draws its key from the client's 31-bit range and can put a zero byte in its peer id. Both BitTornado emulations draw their peer id and key from the client's own 64-character alphabet.

New emulations

qBittorrent 5.2.4, the new default, Deluge 2.2.0, BitTornado 0.3.18, rTorrent 0.16.25, Vuze 5.7.6.0, BitComet 2.22 and BitTorrent 7.11.0, and uTorrent 3.6.0 moves to the current build, 47254. BitComet, uTorrent and BitTorrent are closed source: BitComet was recorded announcing to a local tracker and read with a disassembler, and uTorrent and BitTorrent were read from their official installers.

Removed

uTorrent 3.5.5 and 3.5.4 and BitTorrent 7.10.3, whose code could not be checked the way the current builds' was. A saved torrent that used one now runs with the default client. That makes 32 client versions across 17 families.

Also

Columns widen to fit a longer translated header, values such as "321,00 KB" no longer get cut off, the Stop and proxy lists show readable names, and the toolbar buttons have names for screen readers.

Full changelog: https://github.com/NikolayIT/RatioMaster.NET/blob/master/HISTORY.TXT