Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Need a new 'solve_kahoot_challenge'. safeval.pw service no longer functional. #33

Open
michaelshumshum opened this issue Nov 23, 2020 · 5 comments

Comments

@michaelshumshum
Copy link
Contributor

The reason this program doesn't work anymore is due to this function solve_kahoot_challenge as the method he uses to decode the session token doesn't work anymore.

For anybody who is unfamiliar with the program, this is important for being able to establish a handshake with the server. The initial request we send will provide us with x-kahoot-session-token in the response header, but the response content also gives us a challenge, containing some javascript to run and get the remaining code (in addition to manipulating the bytes). msemple111 used an external service 'safeval.pw' to evaluate the challenge, but now that service is no longer available. And since we can't establish the handshake in the first place, the code will tell us that the game doesn't exist.

I have tried using python libraries such as js2py to accomplish the same thing, but the challenge includes an angular object that can't be used with these libraries.

I am hopeful that this can be fixed, as so far, the rest of the network protocols are fairly similar to how you described it.

@michaelshumshum
Copy link
Contributor Author

The challenge seems to have changed a bit. I don't think simply eval the challenge would work anymore.

@msemple1111
Copy link
Owner

I wrote an OOP version of this code which included a custom challenge solver. I have no time to look at this atm, but I suspect the challenges have changed since I last checked. I will publish this code, and hopefully someone can write a new challenge function.

@msemple1111 msemple1111 reopened this Nov 23, 2020
@msemple1111
Copy link
Owner

@msemple1111
Copy link
Owner

Take a look inside the kahootReceive.py and at the computeChallenge() function. This has a list of challenge "solvers" that solve the challenge. Basically the challenge is a javascript function that is evaluated in the browser and calculated. Each challenge has (had) 2 values that changed, and all other values the same. So you can just split the challenge string at the values changed, then calculate the challenge using python code.

@justnothi
Copy link

can

The challenge seems to have changed a bit. I don't think simply eval the challenge would work anymore.

michealshumshum can you make a vid on your readme on skribbl.io bot

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants