Skip to content

Instantly share code, notes, and snippets.

@Logicbloke
Created May 31, 2020 02:30
Show Gist options
  • Save Logicbloke/bd97002354460e427842002a8a6a95fc to your computer and use it in GitHub Desktop.
Save Logicbloke/bd97002354460e427842002a8a6a95fc to your computer and use it in GitHub Desktop.
Cheat: Revealing all questions and answers of a Kahoot quiz.
<?php
error_reporting(null);
if(!isset($_GET["pin"]))
die("No PIN?");
$url = "https://kahoot.it/rest/challenges/pin/".$_GET["pin"];
$response = file_get_contents($url);
$jresponse = json_decode($response, TRUE);
$questions = $jresponse["kahoot"]["questions"];
foreach ($questions as $question) {
echo $question["question"].": ".array_pop(array_filter($question["choices"], "check_true"))["answer"]."\n";
}
function check_true($choice) {
return $choice["correct"];
}
?>
@cgtykarasu
Copy link

@dbedoyat I wrote the pin of game on code, saved it to htdocs (for XAMPP) then I tried to go localhost/kahoot.php on Chrome but it said only "No PIN?" What am I doing wrong?

Put the PIN in the URL, it's a GET parameter.
http://localhost/kahoot.php?pin=PUT_THE_PIN_HERE

I put the http://localhost/kahoot.php?pin=mypin , but chrome still writes "No PIN?". Maybe your url https://kahoot.it/rest/challenges/pin/ in the code is out of date because, because if you type it directly into the browser it throws an error, maybe I have to change it to https://play.kahoot.it/reserve/session/pin/, although it still doesn’t help me. Maybe you can record a video on how to do it right?

yeah, it still shows me "No PIN?" too. I agree with you. I think, Kahoot URL in the code has to be changed but I don't know what the correct URL.

@Logicbloke
Copy link
Author

Logicbloke commented Mar 24, 2021 via email

@LamaHack73
Copy link

@Logicbloke I don’t know what I’m doing wrong, it still doesn’t work for me. Maybe your url is out of date because when I enter it directly in my browser, it give me errorCode 41. Or do I have to put the UUID instead of the game pin?

@Logicbloke
Copy link
Author

@Logicbloke I don’t know what I’m doing wrong, it still doesn’t work for me. Maybe your url is out of date because when I enter it directly in my browser, it give me errorCode 41. Or do I have to put the UUID instead of the game pin?

Maybe the code has changed. I'd be surprised that it changed and someone managed to get it to work just 3 days ago. Also, I don't think it works for all the quizzes, just the ones that are open perhaps.

@gffyctuxtdctcdt
Copy link

How do i get this to work i want to do the kahoot bot spammer but i can not figer this out

@greenreader9
Copy link

greenreader9 commented Aug 23, 2021

Not working for me. I copy-pasted the code into a new .PHP file on my webserver, and am getting an HTTP 500 error. (No, I never get the "No Pin?" message)
The 500 error is given when...

  • No pin is provided
  • An incorrect pin is provided
  • A correct pin is provided.

The Kahoot I created is public. When adding my pin to this URL (https://kahoot.it/rest/challenges/pin/PIN_HERE) I get an error message from Kahoot.

{"fields":{"arg1":"Invalid challenge pin code"},"error":"INVALID_DATA","timestamp":1629727943516,"errorCode":41,"errorId":"d0c05fa69be74f4ca433891db2ed6300"}

Is this code no longer working with the Kahoot API?

@Logicbloke
Copy link
Author

@greenreader9 Probably not. I put this together over a year ago, they probably changed their API a bit. But it seems like you're getting an invalid challenge pin even when querying kahoot directly?

@greenreader9
Copy link

But it seems like you're getting an invalid challenge pin even when querying kahoot directly?

On that domain, yes. It makes me think that the entire system might have been re-done. Do you have any idea how yourself or someone else could get this working again? I found a site that has documentation of the Kahoot! API, but it got shut down.

@Logicbloke
Copy link
Author

When I built this, I was just inspecting the kahoot game and found an endpoint that, when supplied with the pin, was actually revealing all the questions and all the answers all at once. When the game is played, it's just visual on the browser's level. Everything is sent all at once from the get go. Not sure if that's possible still.

@greenreader9
Copy link

Makes sense. If you figure out a way to get it working, let me know. I’ll take a look at the Kahoot code once I run out of other things to do an ill let you know if I find anything :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment