+ Reply to Thread
Page 2 of 4 FirstFirst 1234 LastLast
Results 16 to 30 of 55

Thread: Ratio-spoof (Windows / Linux / Mac)

    1. Ratio-spoof (Windows / Linux / Mac) Details »»

      Ratio-spoof (Windows / Linux / Mac)

      Version: 1.9, by pauloafonso is offline

      Developer Last Online: Nov 2021 Show Printable Version Email this Page
      Category: [Ratio Tool] Rating:  Downloads: 0
      Released: 29.04.20 Last Update: 16.03.21 Installs: 4
      • Supported
      • Free for all
      • Beta Stage

      Ratio-spoof is a cross-platform, free and open source tool to spoof the download/upload amount on private bittorrent trackers.

      How does it works?
      Bittorrent protocol works in such a way that there is no way that a tracker knows how much certain peer have downloaded or uploaded, so the tracker depends on the peer itself telling the amounts.

      Ratio-spoof acts like a normal bittorrent client but without downloading or uploading anything, in fact it just tricks the tracker pretending that.

      How to use
      Code:
      usage: 
      	./ratio-spoof -t <TORRENT_PATH> -d <INITIAL_DOWNLOADED> -ds <DOWNLOAD_SPEED> -u <INITIAL_UPLOADED> -us <UPLOAD_SPEED> 
      
      optional arguments:
      	-h                      show this help message and exit
      	-p [PORT]    		change the port number, default: 8999
      	-c [CLIENT_CODE]	change the client emulation, default: qbit-4.0.3
      
      required arguments:
      	-t  <TORRENT_PATH>     
      	-d  <INITIAL_DOWNLOADED> 
      	-ds <DOWNLOAD_SPEED>						  
      	-u  <INITIAL_UPLOADED> 
      	-us <UPLOAD_SPEED> 						  
      	  
      <INITIAL_DOWNLOADED> and <INITIAL_UPLOADED> must be in %, b, kb, mb, gb, tb
      <DOWNLOAD_SPEED> and <UPLOAD_SPEED> must be in kbps, mbps
      [CLIENT_CODE] options: qbit-4.0.3, qbit-4.3.3
      Examples
      Code:
      ./ratio-spoof -d 90% -ds 100kbps -u 0% -us 1024kbps -t (torrentfile_path)
      • Will start "downloading" with the initial value of 90% of the torrent total size at 100 kbps speed until it reaches 100% mark.
      • Will start "uploading" with the initial value of 0% of the torrent total size at 1024kbps (aka 1mb/s) indefinitely.


      Code:
      ./ratio-spoof -d 2gb -ds 500kbps -u 1gb -us 1024kbps -t (torrentfile_path)
      • Will start "downloading" with the initial value of 2gb downloaded if possible at 500kbps speed until it reaches 100% mark.
      • Will start "uploading" with the initial value of 1gb uplodead at 1024kbps (aka 1mb/s) indefinitely.


      Will i get caught using it ?
      Depends wether you use it carefuly, Its a hard task to catch cheaters, but if you start uploading crazy amounts out of nowhere or seeding something with no active leecher on the swarm you may be in risk.

      Bittorrent client supported
      The default client emulation is qbittorrent v4.0.3, however you can change it by using the -c argument

      Screenshot

      Attachment 20363

      Source code and additional information on my github page:
      github.com/ap-pauloafonso/ratio-spoof
      Download

      Suggestions, bug reports are welcomed. Thank you everyone

      Show Your Support

        -->
      • For saying thanks to the author, please click here.
      • This modification may not be copied, reproduced or published elsewhere without author's permission.

    Who Said Thanks:

    Amjad-07 (01.10.23) , babona (06.07.22) , kerulberul (03.08.21) , xtorrent (06.03.21) , sigduwksnsksis9283 (02.12.20) , H265 (01.12.20) , Blocker (01.12.20) , JohnareyouOK (30.11.20) , epa.caguei (18.08.20) , Lucius (13.08.20) , AxiomaticDirection (29.04.20) , Rebound (29.04.20) , anon (29.04.20)


  1. #17
    Moderator anon's Avatar
    Join Date
    01.02.08
    Posts
    39,386
    Activity Longevity
    11/20 19/20
    Today Posts
    5/5 ssss39386
    Quote Originally Posted by pauloafonso View Post
    The currently implementation only supports 1 torrent file, i could try to add some parameter to pass a json file with many torrents files configured, what do you guys think about that? i think its fine the way it is now (simple single command)
    I think the one-per-instance approach suits the program well in its current status. If you add multi-torrent support, you'll have to rework all timers, variables, error handling and output to keep track of all entries, not to mention dealing with global vs. individual peer_ids and keys. Also, people would quickly ask for the ability to stop or edit torrents on an individual basis.

    Better start small, and the day you do add support for multiple torrents, it could begin with a simple feature that is very popular: no report mode that "seeds" everything at 100% done with 0 KB/s upload.

    Quote Originally Posted by sigduwksnsksis9283 View Post
    I have a feature request, Ghost leech!

    if this can ghost leech then i can probably implement this with the use of aria2c and make a proper pseudo cli tracker cheating thingy.
    A parameter to export the peers received from the tracker in IP:port list format would be nice, and only require dealing with the world of dreams that is bencoding and compact allocation. The original RatioMaster added this to version 1.8.8 by request and for the same reason.

    By the way, Paulo, I've just given you PM privileges so that you can deal with those bug reports
    "I just remembered something that happened a long time ago."
    Reply With QuoteReply With Quote
    Thanks

  2. #18
    H265's Avatar
    Join Date
    26.05.13
    Location
    Tengoku
    P2P Client
    ¯\_(ツ)_/¯
    Posts
    422
    Activity Longevity
    3/20 13/20
    Today Posts
    0/5 ssssss422
    Quote Originally Posted by pauloafonso View Post
    v1.4 is out:
    -Fix empty status
    -Gracefully exit event

    @H265 let me know if this fixes your problem
    Yes its announcing correctly now. I sent you another msg in pm. What happens when ratio-spoof cannot announce due to internet issues? Does it wait for internet connection to become normal again? or will it crash? Can you also add variable speed settings where we can enter the upper limit and lower limits? Right now if i use x speed each announce shows the same amount of fake uploaded and this will be risky when cheating on many torrents.
    Last edited by H265; 01.12.20 at 10:00.
    Reply With QuoteReply With Quote
    Thanks

  3. #19

    Join Date
    29.04.20
    Location
    brazil
    P2P Client
    qbittorrent
    Posts
    20
    Activity Longevity
    0/20 5/20
    Today Posts
    0/5 sssssss20
    Quote Originally Posted by anon View Post
    I think the one-per-instance approach suits the program well in its current status. If you add multi-torrent support, you'll have to rework all timers, variables, error handling and output to keep track of all entries, not to mention dealing with global vs. individual peer_ids and keys. Also, people would quickly ask for the ability to stop or edit torrents on an individual basis.

    Better start small, and the day you do add support for multiple torrents, it could begin with a simple feature that is very popular: no report mode that "seeds" everything at 100% done with 0 KB/s upload.



    A parameter to export the peers received from the tracker in IP:port list format would be nice, and only require dealing with the world of dreams that is bencoding and compact allocation. The original RatioMaster added this to version 1.8.8 by request and for the same reason.

    By the way, Paulo, I've just given you PM privileges so that you can deal with those bug reports
    Thank you!!
    I could implement the peer list, but the only problem i see is that for this to happen it would need a start announce without follow up announces, which from a tracker perspective it will be obvious that you are cheating right?


    Quote Originally Posted by H265 View Post
    Yes its announcing correctly now. I sent you another msg in pm. What happens when ratio-spoof cannot announce due to internet issues? Does it wait for internet connection to become normal again? or will it crash? Can you also add variable speed settings where we can enter the upper limit and lower limits? Right now if i use x speed each announce shows the same amount of fake uploaded and this will be risky when cheating on many torrents.
    Right now it crashes if it tries to announce without a connection.

    I just released v1.5:
    * random next amount : The estimated amount (based on fixed input parameter) + random number of torrent pieces (between 1 - 10)
    * fix gracefully exit with empty tracker response
    Last edited by pauloafonso; 02.12.20 at 01:16.
    Reply With QuoteReply With Quote
    Thanks

  4. Who Said Thanks:

    AxiomaticDirection (02.12.20) , H265 (02.12.20)

  5. #20
    Moderator anon's Avatar
    Join Date
    01.02.08
    Posts
    39,386
    Activity Longevity
    11/20 19/20
    Today Posts
    5/5 ssss39386
    Quote Originally Posted by pauloafonso View Post
    the only problem i see is that for this to happen it would need a start announce without follow up announces, which from a tracker perspective it will be obvious that you are cheating right?
    I was thinking of a switch to export the peer list in addition to normal program operation. If you want to make this a standalone feature (which would be pretty good), you are correct and should send a stopped announce with zero traffic and progress X seconds after the start. I would make the value of X be 10 by default but configurable, since there's an anti-hammer mod for the TB tracker source to reject clients that announce too fast (300 seconds or less) unless event=completed.

    Right now it crashes if it tries to announce without a connection.
    Well, that sounds like something that needs fixing Every client deals with timeouts differently, but the usual method is to announce again after a short amount of time, and if there is no success, keep doubling that amount until a maximum of ~1 hour is reached.

    * random next amount : The estimated amount (based on fixed input parameter) + random number of torrent pieces (between 1 - 10)
    Good call on the piece thing, but reporting of upload, download and left can be rounded in different ways each. I don't remember how qBittorrent does it, but I'll look it up and get back to you.
    "I just remembered something that happened a long time ago."
    Reply With QuoteReply With Quote
    Thanks

  6. Who Said Thanks:

    pauloafonso (04.12.20) , H265 (03.12.20)

  7. #21
    Moderator anon's Avatar
    Join Date
    01.02.08
    Posts
    39,386
    Activity Longevity
    11/20 19/20
    Today Posts
    5/5 ssss39386
    Quote Originally Posted by anon View Post
    Good call on the piece thing, but reporting of upload, download and left can be rounded in different ways each. I don't remember how qBittorrent does it, but I'll look it up and get back to you.
    qBittorrent right here.



    In the past, we assumed everything was always "byte per byte" and that led to some mystery bans.
    "I just remembered something that happened a long time ago."
    Reply With QuoteReply With Quote
    Thanks

  8. Who Said Thanks:

    H265 (04.12.20) , pauloafonso (04.12.20)

  9. #22

    Join Date
    29.04.20
    Location
    brazil
    P2P Client
    qbittorrent
    Posts
    20
    Activity Longevity
    0/20 5/20
    Today Posts
    0/5 sssssss20
    @Anon thank you very much for all this amazing feedback, i will open git issues later to work on all these things on weekend !!
    Last edited by pauloafonso; 04.12.20 at 04:31.
    Reply With QuoteReply With Quote
    Thanks

  10. Who Said Thanks:

    H265 (04.12.20)

  11. #23
    Moderator anon's Avatar
    Join Date
    01.02.08
    Posts
    39,386
    Activity Longevity
    11/20 19/20
    Today Posts
    5/5 ssss39386
    You're welcome. There aren't many command-line ratio cheating programs, so I see big potential here!
    "I just remembered something that happened a long time ago."
    Reply With QuoteReply With Quote
    Thanks

  12. #24
    JohnareyouOK's Avatar
    Join Date
    31.01.19
    Location
    Earth
    P2P Client
    BiglyBT
    Posts
    254
    Activity Longevity
    0/20 6/20
    Today Posts
    0/5 ssssss254
    1. Got this message:
    Code:
    D:\Ratio-Spoof>ratio-spoof -t "D:\test.torrent" -d 0% -ds 73728kbps -u 0% -us 100kbps
    Trying to connect to the tracker...
    panic: Invalid info_hash (0 - )
    
    goroutine 1 [running]:
    github.com/ap-pauloafonso/ratio-spoof/ratiospoof.extractTrackerResponse(...)
            /home/pa/projects/ratio-spoof/ratiospoof/ratio-spoof.go:531
    github.com/ap-pauloafonso/ratio-spoof/ratiospoof.(*ratioSPoofState).tryMakeRequest(0xc000138000, 0xc00013e000, 0xf0, 0xc00013e000)
            /home/pa/projects/ratio-spoof/ratiospoof/ratio-spoof.go:449 +0xa2b
    github.com/ap-pauloafonso/ratio-spoof/ratiospoof.(*ratioSPoofState).fireAnnounce(0xc000138000)
            /home/pa/projects/ratio-spoof/ratiospoof/ratio-spoof.go:290 +0x6e5
    github.com/ap-pauloafonso/ratio-spoof/ratiospoof.(*ratioSPoofState).firstAnnounce(0xc000138000)
            /home/pa/projects/ratio-spoof/ratiospoof/ratio-spoof.go:258 +0xfe
    github.com/ap-pauloafonso/ratio-spoof/ratiospoof.(*ratioSPoofState).Run(0xc000138000)
            /home/pa/projects/ratio-spoof/ratiospoof/ratio-spoof.go:242 +0x13c
    main.main()
            /home/pa/projects/ratio-spoof/cmd/main.go:77 +0x4ae
    
    D:\Ratio-Spoof>
    Sample torrents have PMed to you just now.

    2. Any chance make <DOWNLOAD_SPEED> and <UPLOAD_SPEED> support MBps for easier input?

    Awesome Work obviously!
    Reply With QuoteReply With Quote
    Thanks

  13. #25
    Moderator anon's Avatar
    Join Date
    01.02.08
    Posts
    39,386
    Activity Longevity
    11/20 19/20
    Today Posts
    5/5 ssss39386
    Quote Originally Posted by JohnareyouOK View Post
    2. Any chance make <DOWNLOAD_SPEED> and <UPLOAD_SPEED> support MBps for easier input?
    Using Bash math operators, obviously Although dd-like suffixes are already supported for INITIAL_DOWNLOADED and INITIAL_UPLOADED, so indeed, why not allow them for speeds too?

    Also, Windows requires that the percentage sign (which is also accepted by the aforementioned parameters) be escaped on batch files, so `-d 100%' becomes `-d 100%%'. This may be worth documenting somewhere.
    "I just remembered something that happened a long time ago."
    Reply With QuoteReply With Quote
    Thanks

  14. #26
    JohnareyouOK's Avatar
    Join Date
    31.01.19
    Location
    Earth
    P2P Client
    BiglyBT
    Posts
    254
    Activity Longevity
    0/20 6/20
    Today Posts
    0/5 ssssss254
    1. Even if Ratio-spoof doesn't provide multi-torrent support, multiple calls are still common (eg being auto called repeatedly for every new torrents received by RSS feeds). Besides, qB 4.0.3 does use global peer_id, so it would be great if Fixed peer_id and key can be supported sooner. Perhaps with optional arguments eg --peer-id and -key? Though risky considering typo but at least issue easily resolved.

    2. TBH personally really wanna request these features (priority from highest to lowest):
    • Waffles Method
    • Stop torrent once seeders = 0
    • Change upload speed to <value> once leechers less than <value>
    • Change upload speed to <value> once snatched

    ......But once started, there perhaps will be no end to requests about all kinds of automation by members. Does it fit your plans to make this tool that complicated or feature bloat (powerful and too much works)?

    Quote Originally Posted by anon View Post
    Also, Windows requires that the percentage sign (which is also accepted by the aforementioned parameters) be escaped on batch files, so `-d 100%' becomes `-d 100%%'. This may be worth documenting somewhere.
    I wanna use it combined with RSS feeds, so might prefer to AutoHotkey or Python considering ready-made libs.
    Reply With QuoteReply With Quote
    Thanks

  15. #27
    Moderator anon's Avatar
    Join Date
    01.02.08
    Posts
    39,386
    Activity Longevity
    11/20 19/20
    Today Posts
    5/5 ssss39386
    Quote Originally Posted by JohnareyouOK View Post
    1. Even if Ratio-spoof doesn't provide multi-torrent support, multiple calls are still common (eg being auto called repeatedly for every new torrents received by RSS feeds). Besides, qB 4.0.3 does use global peer_id, so it would be great if Fixed peer_id and key can be supported sooner. Perhaps with optional arguments eg --peer-id and -key? Though risky considering typo but at least issue easily resolved.
    Sanitizing that data isn't difficult, you just need to compare it against a regular expression. However, it would be much better to just update the emulation, its peer_id/key behavior and default port to qBittorrent 4.3.1, or whatever is current at the time. Using an old and not particularly interesting version of a client makes you stand out; using an old and not particularly interesting version that is known to be emulated by a cheating tool doubly so.

    2. TBH personally really wanna request these features (priority from highest to lowest):
    • Waffles Method
    • Stop torrent once seeders = 0
    • Change upload speed to <value> once leechers less than <value>
    • Change upload speed to <value> once snatched
    Requests no. 1 and 4 should be easy to implement, as the logic involved is very simple. No. 2 and 3 rely on being able to obtain the necessary information from the tracker. This requires either scraping (while correctly emulating the expected behavior!), if the tracker supports it, or decoding the numbers from regular announce responses, if present at all. As you can see, those are some big ifs... also, I'm personally biased against this sort of feature because it cannot react in real time to changing swarm conditions.

    Another nice and simple idea: TCP listener. Just bind to the specified TCP port and discard all incoming data. Enough to make you appear as connectable or "connectable with forced encryption" and therefore more legitimate (obviously it's up to the user to forward said port). Optional and disabled by default in case the program is being run alongside a real client, which after upgrading the emulation would become a feasible and rather popular scenario.
    "I just remembered something that happened a long time ago."
    Reply With QuoteReply With Quote
    Thanks

  16. Who Said Thanks:

    H265 (06.12.20) , JohnareyouOK (05.12.20)

  17. #28
    JohnareyouOK's Avatar
    Join Date
    31.01.19
    Location
    Earth
    P2P Client
    BiglyBT
    Posts
    254
    Activity Longevity
    0/20 6/20
    Today Posts
    0/5 ssssss254
    Quote Originally Posted by anon View Post
    Requests no. 1 and 4 should be easy to implement, as the logic involved is very simple. No. 2 and 3 rely on being able to obtain the necessary information from the tracker. This requires either scraping (while correctly emulating the expected behavior!), if the tracker supports it, or decoding the numbers from regular announce responses, if present at all. As you can see, those are some big ifs... also, I'm personally biased against this sort of feature because it cannot react in real time to changing swarm conditions.
    Like a starving man can't be bothered to nitpick food delicious or not, my huge dislike to "repeatedly check everything is good per 10 mins" has made the delay and inaccuracies of these info lie at the bottom of my concern list. As long as the set <value>s leave enough room for the delay, the core purpose of automation can eventually be partly achieved and still save lots of trouble.l

    Oh, scraping is not expected personally (not sure how different these clients behave on scraping?), decoding the numbers from response is already good enough.
    Reply With QuoteReply With Quote
    Thanks

  18. #29
    Moderator anon's Avatar
    Join Date
    01.02.08
    Posts
    39,386
    Activity Longevity
    11/20 19/20
    Today Posts
    5/5 ssss39386
    Quote Originally Posted by JohnareyouOK View Post
    not sure how different these clients behave on scraping?
    There are differences regarding when scraping is done and how often. Also, multiscraping (more than one info_hash value in the request) is a thing, and trackers can return a minimum interval the client may or may not follow.

    That and the reason I mentioned before are why I've always turned it off everywhere. Many emulations for Extreme Mod, mRatio and RM+ don't even support it, even though the programs themselves do. Besides, even under fully legitimate circumstances the information isn't life-changing.
    "I just remembered something that happened a long time ago."
    Reply With QuoteReply With Quote
    Thanks

  19. Who Said Thanks:

    JohnareyouOK (06.12.20)

  20. #30

    Join Date
    29.04.20
    Location
    brazil
    P2P Client
    qbittorrent
    Posts
    20
    Activity Longevity
    0/20 5/20
    Today Posts
    0/5 sssssss20
    v1.6 is out
    • qbittorrent report amounts change to:
      download: byte per byte
      upload: multiple of 16KB
      left: multiple of TorrentPieceSize
    • mbps input speed support
    • retry policy(double the time between every attempt, up to 15 minutes) after the first announce


    ---------- Post Merged at 04:45 ---------- Previous Post was at 04:21 ----------

    Quote Originally Posted by JohnareyouOK View Post
    1. Got this message:
    Code:
    D:\Ratio-Spoof>ratio-spoof -t "D:\test.torrent" -d 0% -ds 73728kbps -u 0% -us 100kbps
    Trying to connect to the tracker...
    panic: Invalid info_hash (0 - )
    
    goroutine 1 [running]:
    github.com/ap-pauloafonso/ratio-spoof/ratiospoof.extractTrackerResponse(...)
            /home/pa/projects/ratio-spoof/ratiospoof/ratio-spoof.go:531
    github.com/ap-pauloafonso/ratio-spoof/ratiospoof.(*ratioSPoofState).tryMakeRequest(0xc000138000, 0xc00013e000, 0xf0, 0xc00013e000)
            /home/pa/projects/ratio-spoof/ratiospoof/ratio-spoof.go:449 +0xa2b
    github.com/ap-pauloafonso/ratio-spoof/ratiospoof.(*ratioSPoofState).fireAnnounce(0xc000138000)
            /home/pa/projects/ratio-spoof/ratiospoof/ratio-spoof.go:290 +0x6e5
    github.com/ap-pauloafonso/ratio-spoof/ratiospoof.(*ratioSPoofState).firstAnnounce(0xc000138000)
            /home/pa/projects/ratio-spoof/ratiospoof/ratio-spoof.go:258 +0xfe
    github.com/ap-pauloafonso/ratio-spoof/ratiospoof.(*ratioSPoofState).Run(0xc000138000)
            /home/pa/projects/ratio-spoof/ratiospoof/ratio-spoof.go:242 +0x13c
    main.main()
            /home/pa/projects/ratio-spoof/cmd/main.go:77 +0x4ae
    
    D:\Ratio-Spoof>
    Sample torrents have PMed to you just now.

    2. Any chance make <DOWNLOAD_SPEED> and <UPLOAD_SPEED> support MBps for easier input?

    Awesome Work obviously!
    Thank you for the feedback
    I just created this issue on my github, to find the invalid info_hash problem (i think it wont be a easy fix, but i will take a look later)
    https://github.com/ap-pauloafonso/ratio-spoof/issues/3

    ---------- Post Merged at 04:49 ---------- Previous Post was at 04:45 ----------

    Quote Originally Posted by JohnareyouOK View Post
    • Waffles Method
    What is Waffles Method?
    Last edited by pauloafonso; 06.12.20 at 05:54.
    Reply With QuoteReply With Quote
    Thanks

  21. Who Said Thanks:

    H265 (06.12.20) , JohnareyouOK (06.12.20)

  22. #31
    Moderator anon's Avatar
    Join Date
    01.02.08
    Posts
    39,386
    Activity Longevity
    11/20 19/20
    Today Posts
    5/5 ssss39386
    Quote Originally Posted by pauloafonso View Post
    I just created this issue on my github, to find the invalid info_hash problem (i think it wont be a easy fix, but i will take a look later)
    I can think of two possibilities here.
    • Something goes wrong when calculating the info_hash due to character encoding. Everything in .torrent files uses UTF-8, except for "pieces" which is a raw binary concatenation of SHA-1 hashes. (In theory a different encoding can be specified, but I've yet to see this happen and UTF-8 is always used, implicitly or otherwise.)
    • You are URL-encoding characters in the query string that you shouldn't, or viceversa. Client behavior varies here; qBittorrent encodes everything besides lowercase letters, uppercase letters, numbers or any of ! - . * _ ~ ( )

    Note that I haven't read the part of your code that handles the info_hash or seen the .torrent files that trigger this error, so both theories could be completely mistaken

    What is Waffles Method?
    It's a cheating strategy named after a tracker that doesn't exist anymore. Its logic is fairly simple.
    1. start the torrent with a non-zero upload speed; usually a fairly high one is used
    2. a minute or so before the next tracker update is due, stop the torrent
    3. either repeat the cycle or set the upload speed to 0 and seed as long as possible

    Step 2 usually prevents your upload activity from showing up on the peerlist for non-Gazelle trackers. Step 3 reduces the average upload speed for that torrent, if recorded, over time. The fact this method is more stealthy than regular continuous cheating has kept it fairly popular and relevant to this day. It can also be used to fake download, but that is very rare.
    "I just remembered something that happened a long time ago."
    Reply With QuoteReply With Quote
    Thanks

  23. Who Said Thanks:

    pauloafonso (12.12.20)

+ Reply to Thread
Page 2 of 4 FirstFirst 1234 LastLast

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
  •