World chart fixesmade in - getting rid of all those cheaters :)

What would you like to see added or fixed in FOF?
Forum rules
This topic is 17 years and 4 months old. Instead of replying, please begin a new topic, or search for another related topic that may be more suitable.
piccia
Member
Posts: 62
Joined: August 2nd, 2007
Location: Italy
Reputation: 0

Postby piccia » Tue Jan 08, 2008 8:04 pm

Well, my whishlist is currently more focused on the official world charts rather than on fof itself. I can see Alex has taken over the development of the charts too, so maybe he will listen my opinion about it :)

Currently, the wc is full of "fake" scores. Some of them are made by real chaters, but many are made in good faith since it's very easy to screw up the things with the wc. Some examples:
- I once changed the name of a song directory. Now I have in my high scores two different "aces of spades", the second one unfairly giving me a couple of medals.
- Me and a friend of mine were having a challenge on "overture 1928" until we realized we were playing two different versions of the song. Our scores are anyway updating the same page
- Another friend of mine managed to get a score higher than the highest score possible in a song. He realized he was screwing up the world charts when it was too late (won't explain here how he did this because I don't want to give too many hints to malicious users, but it's really simple)

Many of these problems are due to the fact that the wc seems to use the directory name as an identifier for the songs, instead of using the midi SHA1 hash as it would be logical. So this is my 2008 whishlist for the world charts:

- the songs should be identified by their midi SHA1 hash, in order to avoid conflicts as it happened to me with "overture".
- the midi hash should be included in the "scores" field found in the song.ini file, otherwise it would be very easy to fool the charts... again, won't explain the details here, but you only need a notepad. Currently FOF sends the hash separately from the scores

these two points should drastically reduce the number of fake scores in the charts. Someone with a bit of programming skills could still forge fake scores, but I believe there's nothing we can do about it: if FOF is able to read and change the scores, then a skilled enough user can manually do the same :).

The only problem I can see in these two simple changes is backward compatibility... Alex, if you read this topic, what do you think about it? :)


EDIT: lol, typos in the thread title, and cannot edit it :). Sorry :)
Last edited by piccia on Tue Jan 08, 2008 8:12 pm, edited 1 time in total.
Get the latest FOF Contest Server:
http://sourceforge.net/projects/fofcs/
Rogue_F
Member
Posts: 1504
Joined: November 2nd, 2006
Reputation: 1

Postby Rogue_F » Tue Jan 08, 2008 10:24 pm

piccia wrote:Well, my whishlist is currently more focused on the official world charts rather than on fof itself. I can see Alex has taken over the development of the charts too, so maybe he will listen my opinion about it :)

I'm going to reorder your post so I can answer something first, and then the rest will make sense.


Many of these problems are due to the fact that the wc seems to use the directory name as an identifier for the songs, instead of using the midi SHA1 hash as it would be logical. So this is my 2008 whishlist for the world charts:

- the songs should be identified by their midi SHA1 hash, in order to avoid conflicts as it happened to me with "overture".


This is just incorrect. The FoF, and the world charts have always used the song hash as the identifier.


- the midi hash should be included in the "scores" field found in the song.ini file, otherwise it would be very easy to fool the charts... again, won't explain the details here, but you only need a notepad. Currently FOF sends the hash separately from the scores



Again, this is already that way. The scores field already contains the song hash for every score.

Currently, the wc is full of "fake" scores. Some of them are made by real chaters, but many are made in good faith since it's very easy to screw up the things with the wc. Some examples:
- I once changed the name of a song directory. Now I have in my high scores two different "aces of spades", the second one unfairly giving me a couple of medals.


There are 3 'supported' songs for ace of spades.

one has a hash of
1e3c8490d3fd6abda797a7f409bd3565401530a5
played about 1900 times

another has a hash of
064ec30f2ef9b0307cbbf29dfd61416452280a3d
played about 1400 times.

And the last has a hash of
8674d2a67ee754759bd46c1586f01d44d9c53e32
Though this last one hasnt been played much. my guess is this is a 'real' version of ace of spades (not the GH cover) that someone created.

you have the top medal on both of these for medium (different scores though)

I can't check my own ace of spades, but my guess is there's just two major ripped versions of these. Perhaps someone changed the bpm, i dunno. but that would change the hashes.


- Me and a friend of mine were having a challenge on "overture 1928" until we realized we were playing two different versions of the song. Our scores are anyway updating the same page



There's overture 1928 with hash
80d51e4d71baf91b4f0483eb634c4aa6228caefa

there's overture 1928 v2 with hash
537d3704b16b2ed1cdd0edac967f6d0512a6abf4

Again these are two different versions with different midi's people made. Thus they have two different hashes.

- Another friend of mine managed to get a score higher than the highest score possible in a song. He realized he was screwing up the world charts when it was too late (won't explain here how he did this because I don't want to give too many hints to malicious users, but it's really simple)



these two points should drastically reduce the number of fake scores in the charts. Someone with a bit of programming skills could still forge fake scores, but I believe there's nothing we can do about it: if FOF is able to read and change the scores, then a skilled enough user can manually do the same :).

The only problem I can see in these two simple changes is backward compatibility... Alex, if you read this topic, what do you think about it? :)


EDIT: lol, typos in the thread title, and cannot edit it :). Sorry :)


So my response is....it's already this way.

It is known people CAN cheat the charts. It happens, but things have already been done to try to minimize that. Without having 'blessed binaries' its hard to get around this.

Now that being said there's a few things I am planning on changing in the charts.

1) Different time views. The default view is to show all scores ever. Probably not that interesting, and does not promote new players to show off.

So I'm going to try to have a per day, per week, and per month view. Per week or per month will probably be the default. That way the people who have racked up many many games and all the medals. This also means the medals for the different views will change more often. Top medals for the day are separate than the top medals for the week and for the month.

2) Extended scores. the extended scores support in 4.14+ will be reflected in the charts. The normal scoring will be what medals are referred to, but there may be some things for top streak, and highest %age, etc.

3) downloadable song.ini. While the songs are based upon the hash, people use all sorts of goofy names and such. I'd like to standardize them and provide a downloadable song.ini which contains the official name, artist, and also some of the extended bits of info which might have gotten lost. The fretter, the version, the delay, etc.

4) General song cleanup. There's a lot of versions out there 7600 songs total but only 800 are 'verified'. I'd like to verify more songs, and also clean out some rogue versions.

Now all of this happens in my copious spare time. So when it gets done, who knows

-Alex
piccia
Member
Posts: 62
Joined: August 2nd, 2007
Location: Italy
Reputation: 0

Postby piccia » Wed Jan 09, 2008 5:06 am

This is just incorrect. The FoF, and the world charts have always used the song hash as the identifier.


ok, I'm reading the charts code... I see (views.py, line 181)

Code: Select all

song = Song.objects.get(pk = songId)


and only in the next line it tries to retrieve the song using the hash. If I understand this line of code correctly, the song is first searched using "songId", which is defined from the data sent by FOF as

Code: Select all

 songId    = request["songName"]
  songHash  = request["songHash"]
  version   = request["version"]
  scores    = request["scores"]


let's check fof code to see what it sends as "songName"...
from song.py

Code: Select all

     d = {
        "songName": self.songName,
        "songHash": songHash,
        "scores":   self.getObfuscatedScores(part = part),
        "scores_ext": self.getObfuscatedScoresExt(part = part),
        "version":  Version.version(),
        "songPart": part
      }


where songName is defined as...

Code: Select all

os.path.basename(os.path.dirname(infoFileName))


I suspect this is the name of the directory containing the song. This would explain why I'm playing a version of overture 1928 (the one with green-yellow chords at the beginning), a friend of mine is playing the other version, but we use the same folder name ("dream theater - overture 1928") and our scores are both going in the same page at:

http://www.prison.net/worldch....%201928

(I am piccia, my friend is Angevil)

Again, this is already that way. The scores field already contains the song hash for every score.


the score field contains an hash for each SCORE, but not the hash of the midi file, which is sent separately:

Code: Select all

d = {
        "songName": self.songName,
        "songHash": songHash,
        "scores":   self.getObfuscatedScores(part = part),


songhash is computed from the midi file. scores is taken from song.ini. There is no guarantee that the scores are really the ones associated to that song hash (I could simply copy the scores line of another song and it would work, uploading fake scores).


Now that being said there's a few things I am planning on changing in the charts.
[...]


those other changes are really cool :)

4) General song cleanup. There's a lot of versions out there 7600 songs total but only 800 are 'verified'. I'd like to verify more songs, and also clean out some rogue versions.


by the way, I always wondered... how does this verification process work?
Get the latest FOF Contest Server:

http://sourceforge.net/projects/fofcs/
piccia
Member
Posts: 62
Joined: August 2nd, 2007
Location: Italy
Reputation: 0

Postby piccia » Sat Jan 12, 2008 7:13 am

another proof world charts doesn't use the midi SHA1 hash as a primary song identifier...
I have the song "jordan" in a folder called "jordan". I simply renamed the folder in "Buckethead - Jordan" and now my scores show up in two different pages:

http://www.prison.net/worldch....0Jordan

http://www.prison.net/worldcharts/charts/songs/jordan/

the song remains the same, led zeppeling would say :D, I only changed the folder name, but the two pages are totally different, with different players and different scores, as if they were related to two different songs.
Get the latest FOF Contest Server:

http://sourceforge.net/projects/fofcs/
User avatar
Ozonek
Member
Posts: 282
Joined: July 22nd, 2007
Location: Polandia
Reputation: 1

Postby Ozonek » Sat Jan 12, 2008 8:08 am

4) General song cleanup. There's a lot of versions out there 7600 songs total but only 800 are 'verified'. I'd like to verify more songs, and also clean out some rogue versions.


That's very good to hear.

One question - is there a possibility for WC to support multi-score uploading? There was some scripts, but they don't work.

I am sure that if WC will get cleaned, new faces would appear. But playing few hundreds of songs one by one? :/
piccia
Member
Posts: 62
Joined: August 2nd, 2007
Location: Italy
Reputation: 0

Postby piccia » Sat Jan 12, 2008 8:50 am

Ozonek wrote:One question - is there a possibility for WC to support multi-score uploading? There was some scripts, but they don't work.

last time I tried my scripts (*) (when the charts switched to the new server) everything worked fine, except for very few songs (still have ho check what's wrong there, but don't have much time now) ;)

get them at
http://sourceforge.net/project....=256640



(*) I say "my" scripts, but actually the uploadscores one is just a minor modification of the original sneftrup's work
Last edited by piccia on Sat Jan 12, 2008 8:50 am, edited 1 time in total.
Get the latest FOF Contest Server:

http://sourceforge.net/projects/fofcs/

Return to “Thoughts ?”

Who is online

Users browsing this forum: No registered users and 5 guests