I just tried cracking it and I can confirm that it is possible, yet very very complicated.
you can easily get the session secret by using AYAH.sessionSecret().value
(you should look into making variables use strict by placing the whole javascript inside a function. that will make variables not accessible from the console. )
anyways, the correct validation is encrypted (which could be decrypted and elaborate a script to generate it) also with a simple scanner I managed to know the ajax calls needed in those games.
For the most part your are very secure. This captcha haves many many levels of security and even a DDOS protection on their websockets server(validated by session).
Still I recommend you to place a server sided cap on which you can no longer ask for btc from the faucet.
As I already mentioned the verification is actually on the client side and then the program sends a hashed string to the websockets server in order to verify the transaction. (if the game is correct)
this can be automated and a skilled hacker could break this system in a couple of days.
The system is already pretty secure, a cap would make it infallible.
aside, are you a human is not as antithetical as the previous one, but it is way more secure so good job on the change.
Wow. Thank you for looking at it in such depth.
We actually have three levels of security on the server side. We're happy to talk about them, unlike some websites, because we don't believe that keeping your security methods a "secret" is a legitimate way to secure your site.
1) When the client solves the game, it generates a "solution" key. We collect the solution key and send it to our server. Our server then makes a call to the CAPTCHA server to make sure that the solution key is correct for the puzzle that we generated. If so, we know at least that the person or bot correctly solved the captcha. Hopefully it's hard to solve with a bot...
2) We store the solution/session combo and only let it be used once. This prevents replay attacks.
3) We have a hard limit on the amount the faucet will produce in a given amount of time. We also have code in place to limit velocity on a user-basis, but we haven't activated that yet.
We're also going to do more rate limiting, but really really want to stay away from limiting the faucet based on your balance or legitimate solving speed.
Moo.