+ Reply to Thread
Results 1 to 14 of 14

Thread: Transmission

  1. #1
    Guest Coder anthony-joal's Avatar
    Join Date
    22.03.17
    Location
    France
    P2P Client
    qBittorrent
    Posts
    188
    Activity Longevity
    0/20 9/20
    Today Posts
    0/5 ssssss188

    Transmission

    Please before reading this thread, read Client file format.

    Since BitTorrent clients are updated regularly, i'll post the default file template for Transmision. And will list any changes for a particular version against this default template.

    Default template
    Code:
    {
        "keyGenerator": {
            "type": "digit_range_transformed_to_hex",
            "randomDigitLowerBound": 1,
            "randomDigitUpperBound": 2147483647,
            "refreshOn": "NEVER",
            "case": "lower",
        },
        "peerIdGenerator": {
            "pattern": "xxxxxxxxxxxxxxxxxxxxxxx",
            "refreshOn": "TORRENT_VOLATILE",
            "shouldUrlEncode": false
        },
        "urlEncoder": {
            "encodingExclusionPattern": "[A-Za-z0-9-]",
            "encodedHexCase": "lower"
        },
        "query": "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&numwant={numwant}&key={key}&compact=1&supportcrypto=1&event={event}&ipv6={ipv6}",
        "numwant": 80,
        "numwantOnStop": 0,
        "requestHeaders": [
            { "name": "Host", "value": "xxxxx"},
            { "name": "User-Agent", "value": "xxxxxxxxxxxxxxxxxxxxx" },
            { "name": "Accept", "value": "*/*" },
            { "name": "Accept-Encoding", "value": "gzip;q=1.0, deflate, identity" }
        ]
    }
    3.00
    peerIdGenerator.pattern: -TR3000-[a-z0-9]{12}
    requestHeaders.User-Agent: Transmission/3.00
    requestHeaders.Accept-Encoding: deflate, gzip

    2.94
    peerIdGenerator.pattern: -TR2940-[a-z0-9]{12}
    requestHeaders.User-Agent: Transmission/2.94

    2.93
    peerIdGenerator.pattern: -TR2930-[a-z0-9]{12}
    requestHeaders.User-Agent: Transmission/2.93

    2.92_14714
    peerIdGenerator.pattern: -TR284Z-[a-z0-9]{12}
    requestHeaders.User-Agent: Transmission/2.84+
    Last edited by anthony-joal; 02.09.22 at 20:40.
    This is my signature. There are many others like it, but this one is mine.
    Reply With QuoteReply With Quote
    Thanks

  2. Who Said Thanks:

    H265 (12.08.17) , Cr@zYiNsEiN (11.08.17) , anon (10.08.17)

  3. #2
    Guest Coder anthony-joal's Avatar
    Join Date
    22.03.17
    Location
    France
    P2P Client
    qBittorrent
    Posts
    188
    Activity Longevity
    0/20 9/20
    Today Posts
    0/5 ssssss188
    Updated file format to a more readable one.
    Last edited by anthony-joal; 13.08.17 at 15:06.
    This is my signature. There are many others like it, but this one is mine.
    Reply With QuoteReply With Quote
    Thanks

  4. #3
    Guest Coder anthony-joal's Avatar
    Join Date
    22.03.17
    Location
    France
    P2P Client
    qBittorrent
    Posts
    188
    Activity Longevity
    0/20 9/20
    Today Posts
    0/5 ssssss188
    Added transmission 2.93
    This is my signature. There are many others like it, but this one is mine.
    Reply With QuoteReply With Quote
    Thanks

  5. Who Said Thanks:

    anon (18.03.18) , Rebound (18.03.18)

  6. #4
    Guest Coder anthony-joal's Avatar
    Join Date
    22.03.17
    Location
    France
    P2P Client
    qBittorrent
    Posts
    188
    Activity Longevity
    0/20 9/20
    Today Posts
    0/5 ssssss188
    The key definition has been updated, as it was not a simple HASH.
    This is my signature. There are many others like it, but this one is mine.
    Reply With QuoteReply With Quote
    Thanks

  7. Who Said Thanks:

    anon (10.12.18)

  8. #5
    Moderator anon's Avatar
    Join Date
    01.02.08
    Posts
    39,764
    Activity Longevity
    12/20 19/20
    Today Posts
    1/5 ssss39764
    "type": "digit_range_transformed_to_hex",
    digit_range_transformed_to_hex: A random digit that is transmited as it's hexadecimal representation, without leading zeroes.
    Interesting quirk, I'll have to keep it in mind for future client files.
    "I just remembered something that happened a long time ago."
    Reply With QuoteReply With Quote
    Thanks

  9. Who Said Thanks:

    anthony-joal (11.12.18)

  10. #6
    Moderator anon's Avatar
    Join Date
    01.02.08
    Posts
    39,764
    Activity Longevity
    12/20 19/20
    Today Posts
    1/5 ssss39764
    3.00
    peerIdGenerator.pattern: -TR3000-[a-z0-9]{12}
    requestHeaders.User-Agent: Transmission/3.00
    requestHeaders.Accept-Encoding: deflate, gzip

    Based on the following build.

    Code:
    https://github.com/transmission/transmission-releases/raw/master/transmission-3.00-x64.msi
    Also, this one attempted to GET a favicon.ico from the tracker, something previous versions did not do. I couldn't find a setting to control that behavior.
    "I just remembered something that happened a long time ago."
    Reply With QuoteReply With Quote
    Thanks

  11. Who Said Thanks:

    anthony-joal (05.06.20)

  12. #7
    Guest Coder anthony-joal's Avatar
    Join Date
    22.03.17
    Location
    France
    P2P Client
    qBittorrent
    Posts
    188
    Activity Longevity
    0/20 9/20
    Today Posts
    0/5 ssssss188
    Quote Originally Posted by anon View Post
    3.00
    peerIdGenerator.pattern: -TR3000-[a-z0-9]{12}
    requestHeaders.User-Agent: Transmission/3.00
    requestHeaders.Accept-Encoding: deflate, gzip

    Based on the following build.

    Code:
    https://github.com/transmission/transmission-releases/raw/master/transmission-3.00-x64.msi
    Also, this one attempted to GET a favicon.ico from the tracker, something previous versions did not do. I couldn't find a setting to control that behavior.
    i've edited the original post to include your addition :). Thanks.


    The favicon seems a bit more tricky and kinda pain in the ass. Based on the source code they seems to query the favicon from the tracker (most likely to print the favicon next to the tracker in the UI).
    https://github.com/transmission/tran.../gtk/favicon.h

    More than that, the favicon query frequency will be erratic since they use a local file system cache...
    The cache key seems to be the tracker domain name.

    I won't bother implementing such a nightmare just for one client ^^. i would reconsider if it was part of libtorrent, but...
    Last edited by anthony-joal; 05.06.20 at 19:04.
    This is my signature. There are many others like it, but this one is mine.
    Reply With QuoteReply With Quote
    Thanks

  13. #8
    Moderator anon's Avatar
    Join Date
    01.02.08
    Posts
    39,764
    Activity Longevity
    12/20 19/20
    Today Posts
    1/5 ssss39764
    I agree that it's not a big deal, especially if we consider that like Deluge, Transmission has several interfaces available (cli, Web, gtk, qt plus other third-party ones) that may not implement this feature.
    "I just remembered something that happened a long time ago."
    Reply With QuoteReply With Quote
    Thanks

  14. Who Said Thanks:

    anthony-joal (05.06.20)

  15. #9

    Join Date
    31.10.17
    Posts
    26
    Activity Longevity
    0/20 8/20
    Today Posts
    0/5 sssssss26
    Any update or guide to create a Transmission 4.0.3 client file for JOAL?

    I would like to learn how to update it by myself.
    Reply With QuoteReply With Quote
    Thanks

  16. #10

    Join Date
    31.10.17
    Posts
    26
    Activity Longevity
    0/20 8/20
    Today Posts
    0/5 sssssss26
    Quote Originally Posted by anon View Post
    I agree that it's not a big deal, especially if we consider that like Deluge, Transmission has several interfaces available (cli, Web, gtk, qt plus other third-party ones) that may not implement this feature.
    Does this client structure look good to you? For Transmission 4.0.4, I took 3.0.0 structure as a reference:

    Code:
    {
        "keyGenerator": {
            "algorithm": {
                "type": "DIGIT_RANGE_TRANSFORMED_TO_HEX_WITHOUT_LEADING_ZEROES",
                "inclusiveLowerBound": 1,
                "inclusiveUpperBound": 2147483647
            },
            "refreshOn": "NEVER",
            "keyCase": "lower"
        },
        "peerIdGenerator": {
            "algorithm": {
                "type": "RANDOM_POOL_WITH_CHECKSUM",
                "prefix": "-TR4040-",
                "charactersPool": "0123456789abcdefghijklmnopqrstuvwxyz",
                "base": 36
            },
            "refreshOn": "TORRENT_VOLATILE",
            "shouldUrlEncode": false
        },
        "urlEncoder": {
            "encodingExclusionPattern": "[A-Za-z0-9-]",
            "encodedHexCase": "lower"
        },
        "query": "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&numwant={numwant}&key={key}&compact=1&supportcrypto=1&event={event}&ipv6={ipv6}",
        "numwant": 80,
        "numwantOnStop": 0,
        "requestHeaders": [
            { "name": "User-Agent", "value": "Transmission/4.04" },
            { "name": "Accept", "value": "*/*" },
            { "name": "Accept-Encoding", "value": "deflate, gzip" }
        ]
    }
    Thanks in advance.
    Last edited by sharktachi; 11.09.23 at 21:44.
    Reply With QuoteReply With Quote
    Thanks

  17. #11
    Moderator anon's Avatar
    Join Date
    01.02.08
    Posts
    39,764
    Activity Longevity
    12/20 19/20
    Today Posts
    1/5 ssss39764
    Quote Originally Posted by sharktachi View Post
    Does this client structure look good to you?
    Due to the idiosyncrasies of building Transmission, verifying this requires capturing announces from the exact build and commit you're writing for, then comparing. We have tutorials for that; the remote memory reader in RM+ will be very helpful if this is a NAS client.

    But I can at least tell you right here and now that the key is of type hash with length 8 as of Transmission 4.x.
    "I just remembered something that happened a long time ago."
    Reply With QuoteReply With Quote
    Thanks

  18. #12

    Join Date
    31.10.17
    Posts
    26
    Activity Longevity
    0/20 8/20
    Today Posts
    0/5 sssssss26
    Quote Originally Posted by anon View Post
    Due to the idiosyncrasies of building Transmission, verifying this requires capturing announces from the exact build and commit you're writing for, then comparing. We have tutorials for that; the remote memory reader in RM+ will be very helpful if this is a NAS client.

    But I can at least tell you right here and now that the key is of type hash with length 8 as of Transmission 4.x.
    Thank you so much for the info, now I have a starting point. I will look for the tutorial and try to emulate the announces.
    Reply With QuoteReply With Quote
    Thanks

  19. #13

    Join Date
    31.10.17
    Posts
    26
    Activity Longevity
    0/20 8/20
    Today Posts
    0/5 sssssss26
    Quote Originally Posted by anon View Post
    Due to the idiosyncrasies of building Transmission, verifying this requires capturing announces from the exact build and commit you're writing for, then comparing. We have tutorials for that; the remote memory reader in RM+ will be very helpful if this is a NAS client.

    But I can at least tell you right here and now that the key is of type hash with length 8 as of Transmission 4.x.
    I captured the traffic through WireShark+Npcap on port 58103/tcp using Transmission 4.0.4 running a private torrent on your LocalTracker workaround.

    I got this announces, they all seem to have the same structure, I only copy the first two:

    Code:
    1100 68.488358 127.0.0.1 127.0.0.1 HTTP 367 GET /announce?info_hash=%7C%7D%1B%B7tt6%01%A3%3Ak%1D%1C%02%9B%B9%00%01%FE%A8&peer_id=-TR4040-2m9pimsnms89&port=49153&uploaded=0&downloaded=0&left=1&numwant=0&key=3E7889A1&compact=1&supportcrypto=1&event=stopped HTTP/1.1
    Code:
    510 36.061857 127.0.0.1 127.0.0.1 HTTP 368 GET /announce?info_hash=%7C%7D%1B%B7tt6%01%A3%3Ak%1D%1C%02%9B%B9%00%01%FE%A8&peer_id=-TR4040-2m9pimsnms89&port=49153&uploaded=0&downloaded=0&left=1&numwant=80&key=3E7889A1&compact=1&supportcrypto=1&event=started HTTP/1.1
    Attached Files Attached Files
    Reply With QuoteReply With Quote
    Thanks

  20. #14
    Moderator anon's Avatar
    Join Date
    01.02.08
    Posts
    39,764
    Activity Longevity
    12/20 19/20
    Today Posts
    1/5 ssss39764
    Nice, but you should compare the entire requests (not just the GET line), and restart different torrents and also the client itself to check peer_id and key regeneration behavior.
    "I just remembered something that happened a long time ago."
    Reply With QuoteReply With Quote
    Thanks

+ Reply to Thread

Tags for this Thread

Posting Permissions

  • You may post new threads
  • You may post replies
  • You may not post attachments
  • You may not edit your posts
  •