CAPTCHAed Red Handed
Web DevelopmentI saw this Github issue the other day, and it made me sad, and a little disappointed. But it got me thinking about what a future CAPTCHA could look like. Right now with the most popular CAPCHA, Google's reCAPTCHA, you just identify what things are. Select the square with the stop sign, select the squares with the crosswalk, select all the images with traffic lights, etc etc.
But what would a CAPTCHA look like that cares more about how a human thinks, rather than just a person's ability to identify objects? You know the cheesy movie trope where robots have trouble determining human emotions? Or where they don't know how to love? My first idea was: How about a CAPTCHA that asks you to identify the most attractive person in a set? But unfortunately people have already made machine learning algorithms that rank how people look, so this type of CAPTCHA is a non starter already.
How about another emotion? Trust. How trustworthy is a particular person? Whenever I'm riding the train to work or somewhere, I, and I'm sure others, look around to see who might be a suspicious person riding along with us. So perhaps a CAPTCHA for trying to identify the suspicious person.
But how am I going to get enough pictures to make a decent CAPTCHA? When you use Google's reCAPTCHA I doubt you ever see the same image twice. Well there's this little thing called Stable Diffusion, maybe you've heard of it. Specifically I'm using Easy Diffusion. So on a nice lazy Sunday afternoon I set it up to generate pictures of suspicious people. I didn't tell it generate me "a picture of an suspicious person" though. That's just a little too vague for Stable Diffusion. So who specifically is suspicious or untrustworthy? Murderers. I and everyone I know, do not trust murderers.
When I did a few test runs of pictures of murderers. They looked kind of ugly and sometimes freaky. And if I were to go with those, then we'd just be back at square one with the problem from above: determine who is or isn't ugly. So I had to do a prompt like "attractive murderer man face."
While the images were being rendered, I cobbled together a reCAPTCHA like clone with Svelte.
Here are some things I noticed while doing this CAPTCHA. Besides the obvious pictures of people covered in blood, the generated murderers tend to have a few traits, but not always: Dark circles around the eyes, angry looking eyebrows, a slight frown. So if you're having trouble with the above CAPTCHA, maybe you can try to look for these features.
Eventually though, someone would make a machine learning algorithm that will determine who the murderer is. Bots are already better than humans at solving all existing CAPTCHAs. But the great thing about Stable Diffusion is I could just change the prompt and the bots would stop working. I could change the CAPTCHA to have people identify the most nervous person, the most squeamish person, or maybe not even people at all maybe tasty hamburgers. With just my RTX3070ti I can generate several thousand images a day if I kept it running constantly and didn't care about my electricity bill. If I had a dedicated server farm I could generate CAPTCHA images all day for and have a new prompt every 24 hours for thousands of users.
hCAPTCHA looks to already be generating images with machine learning algorithms, but they're just more "Identify the object" tests. And eventually bots are just going to be able read the text above the CAPTCHA box and pick the correct images, much like a human already does. So my solution is a more an ambiguous approach of feelings rather than a concrete puzzle of identify the facts. Maybe this could be a solution for the near future, that is until we have bots that have human like sentience.
All of the pictures in this article were generated by machine learning algorithm. Any resemblance to anyone in real life is pure coincidence.