koil's blog

By koil, history, 7 years ago, In English

The story of cheating.

In the last div 2 contest, you guys have noticed that there were nearly 30 fake accounts who took 3rd to 30th places before system testing. The first and second leaderboard page were filled mostly with unrated black guys. Here's a screenshot from another users.

I created them. I know and acknowledge that this can be called as an act of massive cheating.

I didn't intended doing it to steal people's rating and win some div 2 contest. I didn't mind about winning div 2 contest anymore. I did won a few times, kid stuff.

I didn't do it just only for fun. Honestly, this small joke is extremely boring itself only.

So why did I do that ?

The neccessary reason is that I'm currently in my break, so I have a lot of free time.
The sufficient reason is to test my big idea (not the one you saw).

The biggest idea of cheating

In most of div 1 contests, the number of room is lesser than or equal to 20. If we have more than 20 purple accounts, there would be two of them in the same room (Dirichlet's principle). Let's call them meepo00 and meepo01. The idea is about exploiting the hacking system to boost their points.

Account meepo00 would solve an arbitary problem, for example the easiest problem. In meepo00's solution, there would be a secret input case that his solution would absolutely failed. For example :

int main() {
    cin >> N;
    if (N == 69696969) {
        cout<<"I'm hacked";
        return 0;
    } else {
        solve(N);
    }
    return 0;
}

Account meepo01 would hack account meepo00 by that test case. And obviously he will receive 100 points. We keep repeating the process by changing the secret key number from 69696969 to something else and get more points.

Let's say we have 1 hour 30 minutes to hack, that's 5400 seconds. Let's say each iteration takes 30 seconds, so we can do it total of 180 times and gain 18000 points. Even half of those points can give meepo01 the first place in any div 1 contest.

Imagine someone took the first place in a div 1 contest, beat Legendary grandmasters without solving a second problem. That's the most ridiculous joke ever.

Until the administrator stop us, as they did to me :D

The problem

The problem turned out to be having more than 20 purple accounts. So I wrote some simple JavaScript that help me to automatically create bunch of email then new accounts, log in into each of them, submit a modified solution, log out and repeat...

With more subtle execution than it was (for example, adding bigger time gap between each account's submission, less obfuscated code, taking small steps...), I could silently take these bots into div 1 and tell the big joke.

But I was so hurry, so naive and get caught as you guys know. The administrator banned all of my bots, except this one.

Anyway I have shown you the proof of concept and you may think that achieving it is possible.

Conclusion

As things didn't go as I expected (thanks to my poor execution) and my vacation is also nearly over, I might abandon it. I write this post to share the insight with anyone who find it interesting, even though I predict the post will receive tons of downvotes since this is not really a contribution. But who cares ?

It's not about the rating or beating legendary grandmasters at all. These things are just illusory.

It's about the idea behind.

Even if the idea may leads to those illusions, it's still an original and creative idea that no one ever did.

I believe that encoutering and executing original and unique ideas everyday helps a lot in being motivated and creative, even if they are unusual and weird. So I wrote this post and hoped that somewhere in the Codeforces community, some people, who love this kind of creativity just like me, would enjoy it.

Full text and comments »

  • Vote: I like it
  • +133
  • Vote: I do not like it