Permalänk
Medlem

Fråga om torrentprotokollet

Hur vet en torrent-tracker hur mycket jag leetchar? Jag är medlem på en trackersite och i min profil står det att jag har en ratio på t.ex 100 gig download och 50 upload. På sidan har jag ju ett namn och ett lösen men det har jag ju inte uppgett i min torrentklient. Läggs det in något användarspecifikt i varje torrentfil? Eller knyts det till datorn på något magiskt sätt? IP? Macadress?

Jag försökte läsa lite specar av protokollet på t.ex http://jonas.nitro.dk/bittorrent/bittorrent-rfc.html men hittade inget.

Visa signatur

LDA $D012

Permalänk
Medlem

Om du kikar på tracker url i din torrent klient så ser du att sist i den urlen finns en passkey. Den är unik för alla konton och också kopplad till ditt konto

Visa signatur

#1: Z370N ITX | i7 8700k | GTX 1080 | 32GiB
#2: P8Z77-M pro | i7 3770k | GTX 1050ti | 16GiB

Server: Z370-G | i5 8600T | 64GiB | UnRAID 6.9.2 | 130TB
Smartphone: Samsung Z Flip 5 | Android 13 | Shure SE535

Permalänk

Var längesen jag använde privata trackers men vad jag minns så var det precis som du tror att varje torrentfil är unik, eller rättare sagt den länken som ligger i torrentfilen till trackern, den brukade se ut typ såhär: http://domän.com/?hash=abc123xyz osv

Permalänk
Hedersmedlem
Skrivet av IRQ:

Läggs det in något användarspecifikt i varje torrentfil?

Ja, en vanligen kallad "passkey" som genereras för din specifika användare. Det är sedan klienten som rapporterar om skickade/mottagna datamängder till servern, som, utöver att göra rimlighetskontroller på storleken, egentligen inte har något vattentätt sätt att kontrollera att klienten inte "ljuger".

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Medlem
Skrivet av phz:

Ja, en vanligen kallad "passkey" som genereras för din specifika användare. Det är sedan klienten som rapporterar om skickade/mottagna datamängder till servern, som, utöver att göra rimlighetskontroller på storleken, egentligen inte har något vattentätt sätt att kontrollera att klienten inte "ljuger".

Det finns ju klienter som skickar falsk data (för fuskande leechers) till trackern men de klienterna brukar ofta vara blacklistade, även vanliga klienter som är kända för att skicka fel data hamnar där. Om en användare ändå lyckas brukar det nog synas för moderatorer och admins att användaren har en löjlig uppladdningshastighet eller har laddat upp löjligt mycket i förhållande till antalet/storleken på nedladdade filer.
Finns säkert system som bankar användare automatiskt för sånt men jag tycker nog att sånt ska göras manuellt då blir det vattentätt

Visa signatur

#1: Z370N ITX | i7 8700k | GTX 1080 | 32GiB
#2: P8Z77-M pro | i7 3770k | GTX 1050ti | 16GiB

Server: Z370-G | i5 8600T | 64GiB | UnRAID 6.9.2 | 130TB
Smartphone: Samsung Z Flip 5 | Android 13 | Shure SE535

Permalänk
Hedersmedlem
Skrivet av LudvigLindell:

Det finns ju klienter som skickar falsk data (för fuskande leechers) till trackern men de klienterna brukar ofta vara blacklistade, även vanliga klienter som är kända för att skicka fel data hamnar där. Om en användare ändå lyckas brukar det nog synas för moderatorer och admins att användaren har en löjlig uppladdningshastighet eller har laddat upp löjligt mycket i förhållande till antalet/storleken på nedladdade filer.
Finns säkert system som bankar användare automatiskt för sånt men jag tycker nog att sånt ska göras manuellt då blir det vattentätt

"Vattentätheten" saknas fortfarande då det inte finns något som hindrar någon från att exempelvis dra hem källkoden till en torrentklient, lägga in en faktor 2 (till skillnad från "2 miljarder") eller något i rapporteringen för skickad data, kompilera och köra. Servern har ingen möjlighet att kontrollera klienten utöver att titta på vilken klienttagg som rapporteras, och eventuellt i mer avancerade fall att försöka skicka speciella anrop där man vet hur olika klienter svarar. Det hjälper alltså inte heller helt ut att svartlista klienter bara för att en användare där kan ändra en multiplikator för skickad data: klienten kan ju samtidigt lika gärna ändra sin tagg helt till exempelvis "uTorrent 3.4.2.0".

Ifall någon rapporterar en uppladdad mängd som skulle kräva 1 Tbps-uppladdningshastighet och liknande så är det ju lätt att se att någon fuskar, men med en rimlig faktor så finns inga egentliga uppenbara sätt att upptäcka "fusk". Säg att någon sitter på en 10/1 Mbps-uppkoppling — med en uppladdningsmultiplikator på 10 så kommer de bete sig som om de satt på en 10/10 Mbps-uppkoppling, vilket ju inte är orimligt alls.

En möjlighet är för en tracker att försöka sammanställa hela svärmens data för att se att upp- och nedladdade siffror stämmer, men det är fortfarande många osäkerheter i detta, inte minst vad gäller att kunna säga vilken klient som skulle vara den som fuskar. Gör man en riktad "attack" med en referensklient där man kan kontrollera mottagen data så kan man starkt troliggöra att en viss klient fuskar, men för det krävs generellt att det redan finns misstanke. För den delen: kan klienten ändra sin uppladdningsmultiplikator till 2 så kan den ju säkerligen även ändra tillbaka den till 1 vid behov, så det är inte säkert att man "sätter dit" en viss klient ändå.

Användardata hade ingen egentlig applikation utöver ren kuriosa i torrentprotokollet när det skapades, så det fanns ingen anledning att försöka skapa en robust process där. Din klient använder andra klienters uppladdningshastighet som faktor för att välja vilka fjärrklienter som får flest förfrågningar för att skicka data, men hastigheten bestäms då snarare av faktisk statistik utifrån de chunks som redan dragits ned, snarare än vad fjärrklienten hävdar sig kunna skicka. På detta sätt så tar man automatiskt saker som peeringavtal, nättrafikstockning, geografi, etc., med i beräkningen, så det är mer robust.

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Medlem
Skrivet av phz:

"Vattentätheten" saknas fortfarande då det inte finns något som hindrar någon från att exempelvis dra hem källkoden till en torrentklient, lägga in en faktor 2 (till skillnad från "2 miljarder") eller något i rapporteringen för skickad data, kompilera och köra. Servern har ingen möjlighet att kontrollera klienten utöver att titta på vilken klienttagg som rapporteras, och eventuellt i mer avancerade fall att försöka skicka speciella anrop där man vet hur olika klienter svarar. Det hjälper alltså inte heller helt ut att svartlista klienter bara för att en användare där kan ändra en multiplikator för skickad data: klienten kan ju samtidigt lika gärna ändra sin tagg helt till exempelvis "uTorrent 3.4.2.0".

Ifall någon rapporterar en uppladdad mängd som skulle kräva 1 Tbps-uppladdningshastighet och liknande så är det ju lätt att se att någon fuskar, men med en rimlig faktor så finns inga egentliga uppenbara sätt att upptäcka "fusk". Säg att någon sitter på en 10/1 Mbps-uppkoppling — med en uppladdningsmultiplikator på 10 så kommer de bete sig som om de satt på en 10/10 Mbps-uppkoppling, vilket ju inte är orimligt alls.

En möjlighet är för en tracker att försöka sammanställa hela svärmens data för att se att upp- och nedladdade siffror stämmer, men det är fortfarande många osäkerheter i detta, inte minst vad gäller att kunna säga vilken klient som skulle vara den som fuskar. Gör man en riktad "attack" med en referensklient där man kan kontrollera mottagen data så kan man starkt troliggöra att en viss klient fuskar, men för det krävs generellt att det redan finns misstanke. För den delen: kan klienten ändra sin uppladdningsmultiplikator till 2 så kan den ju säkerligen även ändra tillbaka den till 1 vid behov, så det är inte säkert att man "sätter dit" en viss klient ändå.

Användardata hade ingen egentlig applikation utöver ren kuriosa i torrentprotokollet när det skapades, så det fanns ingen anledning att försöka skapa en robust process där. Din klient använder andra klienters uppladdningshastighet som faktor för att välja vilka fjärrklienter som får flest förfrågningar för att skicka data, men hastigheten bestäms då snarare av faktisk statistik utifrån de chunks som redan dragits ned, snarare än vad fjärrklienten hävdar sig kunna skicka. På detta sätt så tar man automatiskt saker som peeringavtal, nättrafikstockning, geografi, etc., med i beräkningen, så det är mer robust.

Mycket saker där som jag inte kan någonting om! Intressant skrivet, men jag tänkte mest att det är enkelt för staff att se hur många användare som har laddat ned en viss torrent och även se hur mycket varje användare har laddat upp till andra. Om det då är mycket mer som har laddats upp av användare än vad som borde vara möjligt. Låt säga att en fil är 10 GB och har blivit nedladdad 50 gånger, totalt 500 GB borde då vara uppladdat. Om staff då kikar på hur mycket varje enskild användare har laddat upp och adderar allt och ser då att kanske 700GB är "uppladdat" så borde det ju vara nåt fuffens hos någon. Om du förstår vad jag menar.

Klienter och kod kommer förmodligen aldrig bli vattentät, men en människa som kikar och håller koll på vissa användare som man tror fuskar tror jag inte ofta har fel om fuskandet upprepas Det var det jag menade med vattentätt

Visa signatur

#1: Z370N ITX | i7 8700k | GTX 1080 | 32GiB
#2: P8Z77-M pro | i7 3770k | GTX 1050ti | 16GiB

Server: Z370-G | i5 8600T | 64GiB | UnRAID 6.9.2 | 130TB
Smartphone: Samsung Z Flip 5 | Android 13 | Shure SE535

Permalänk
Hedersmedlem
Skrivet av LudvigLindell:

Mycket saker där som jag inte kan någonting om! Intressant skrivet, men jag tänkte mest att det är enkelt för staff att se hur många användare som har laddat ned en viss torrent och även se hur mycket varje användare har laddat upp till andra. Om det då är mycket mer som har laddats upp av användare än vad som borde vara möjligt. Låt säga att en fil är 10 GB och har blivit nedladdad 50 gånger, totalt 500 GB borde då vara uppladdat. Om staff då kikar på hur mycket varje enskild användare har laddat upp och adderar allt och ser då att kanske 700GB är "uppladdat" så borde det ju vara nåt fuffens hos någon. Om du förstår vad jag menar.

Ja, en sådan sak kan betyda att det är fuffens hos någon, men det går inte att enkelt säga hos vem. Dessutom så är saker som "antal nedladdningar" och liknande rätt trubbigt, då det bygger på att klienter själva rapporterar när de är klara. En peer kan hoppa in med 99 % av torrentinnehållet redan färdigställt, fylla i den sista chunken och helt plötsligt har vi en "nedladdning" av materialet, trots att kanske bara 256 kB överförts i just denna svärm.

Därutöver så kommer siffrorna alltid diffa om någon klient kopplar från utan att synka sin status med trackern, vilket exempelvis sker varje gång någons internetanslutning går ner, torrentprogrammet kraschar eller på annat sätt inte ges tid att synka när det stängs av. rTorrent har som exempel en standardtid mellan trackerrequests på 30 minuter, så med en 100 Mbps-uppkoppling så skulle teoretiskt mer än 20 GB data kunna bara "försvinna" vad trackern anbelangar om en enda peer tappar kontakten, utan att det har hänt något som helst konstigt i svärmen. Säg att min klient är den som laddat upp denna data till en person som kopplas från — helt plötsligt ser det hos trackern ut som om jag har fabricerat 20 GB upload ur tomma intet när min klient rapporterar in sin status. Fuskar jag? Tänker vi oss i stället en 1 Gbps-uppkoppling som man ju faktiskt utan större problem kan hitta idag så kan det alltså teoretiskt räcka med att en enda peer oväntat kopplas från för att skapa den där svärmdiffen på 200 GB du nämner (åtminstone är det teoretiskt möjligt). Det kan tilläggas att många stora trackers hamras rätt hårt och därmed också ofta missar att svara på klienternas rapporter.

Det finns många lurigheter i torrentprotokollet vad gäller dessa bitar. En bastanke med själva protokollet är ju just att det är decentraliserat i stor mån, vilket medför att man behöver lita på klienterna, men då uppkommer problem i situationer där klienterna har ett intresse av att kunna "ljuga" för trackern.

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Medlem

Det finns program som rapporterar både fejkad klient och uppladdning. Det är, som sagt, svårt för trackern att upptäcka det.

Det kan låta dumt att fuska på det sättet men å andra sidan så kan man ju tänka så här: de som laddar ner mycket på privata trackers och fejkar all sin upload gör det enklare för de andra användarna att få upload på sidan. Det är redan svårt för många att ladda upp så att de ligger på +-0 och det hade varit svårare om ingen fuskade.

Permalänk
Medlem
Skrivet av phz:

Ja, en sådan sak kan betyda att det är fuffens hos någon, men det går inte att enkelt säga hos vem. Dessutom så är saker som "antal nedladdningar" och liknande rätt trubbigt, då det bygger på att klienter själva rapporterar när de är klara. En peer kan hoppa in med 99 % av torrentinnehållet redan färdigställt, fylla i den sista chunken och helt plötsligt har vi en "nedladdning" av materialet, trots att kanske bara 256 kB överförts i just denna svärm.

Därutöver så kommer siffrorna alltid diffa om någon klient kopplar från utan att synka sin status med trackern, vilket exempelvis sker varje gång någons internetanslutning går ner, torrentprogrammet kraschar eller på annat sätt inte ges tid att synka när det stängs av. rTorrent har som exempel en standardtid mellan trackerrequests på 30 minuter, så med en 100 Mbps-uppkoppling så skulle teoretiskt mer än 20 GB data kunna bara "försvinna" vad trackern anbelangar om en enda peer tappar kontakten, utan att det har hänt något som helst konstigt i svärmen. Säg att min klient är den som laddat upp denna data till en person som kopplas från — helt plötsligt ser det hos trackern ut som om jag har fabricerat 20 GB upload ur tomma intet när min klient rapporterar in sin status. Fuskar jag? Tänker vi oss i stället en 1 Gbps-uppkoppling som man ju faktiskt utan större problem kan hitta idag så kan det alltså teoretiskt räcka med att en enda peer oväntat kopplas från för att skapa den där svärmdiffen på 200 GB du nämner (åtminstone är det teoretiskt möjligt). Det kan tilläggas att många stora trackers hamras rätt hårt och därmed också ofta missar att svara på klienternas rapporter.

Det finns många lurigheter i torrentprotokollet vad gäller dessa bitar. En bastanke med själva protokollet är ju just att det är decentraliserat i stor mån, vilket medför att man behöver lita på klienterna, men då uppkommer problem i situationer där klienterna har ett intresse av att kunna "ljuga" för trackern.

Återigen tänkte jag inte så långt! Du har helt rätt i det du skriver Man får helt enkelt hålla uppsikt över dessa användare för att se om samma sak upprepas

Visa signatur

#1: Z370N ITX | i7 8700k | GTX 1080 | 32GiB
#2: P8Z77-M pro | i7 3770k | GTX 1050ti | 16GiB

Server: Z370-G | i5 8600T | 64GiB | UnRAID 6.9.2 | 130TB
Smartphone: Samsung Z Flip 5 | Android 13 | Shure SE535