Author Topic: Human Verification  (Read 7499 times)

bluemonkmn

  • SGDK Author
  • Administrator
  • Fanatic
  • *****
  • Posts: 2761
    • ICQ Messenger - 2678251
    • MSN Messenger - BlueMonkMN@gmail.com
    • View Profile
    • http://sgdk2.sf.net/
    • Email
Human Verification
« on: 2010-08-05, 06:26:58 PM »
I saw an article on Slashdot.org today that Capcha can now be defeated by automated programs.  It gave me the thought to try to develop my own program that would test someone's ability to prove their human-ness.  Here's what I got (source code and binary included).  What do you think?

http://enigmadream.com/misc/HumanVerification.zip

tprime

  • Fanatic
  • ***
  • Posts: 395
    • View Profile
    • Email
Re: Human Verification
« Reply #1 on: 2010-08-05, 06:36:35 PM »
It looks nice. I think facebook does something like this too. You have to identify your friends.

SmartBoy16

  • Contributor
  • Fanatic
  • **
  • Posts: 587
  • Looking for inspiration.....
    • View Profile
    • Email
Re: Human Verification
« Reply #2 on: 2010-08-05, 08:02:06 PM »
 8) :laugh: I think this is clever. The only downside (think) is that someone may try to hack into the system to figure out which picture is represented for what. I'm just saying...
Looking to the skies.....

bluemonkmn

  • SGDK Author
  • Administrator
  • Fanatic
  • *****
  • Posts: 2761
    • ICQ Messenger - 2678251
    • MSN Messenger - BlueMonkMN@gmail.com
    • View Profile
    • http://sgdk2.sf.net/
    • Email
Re: Human Verification
« Reply #3 on: 2010-08-07, 06:55:05 AM »
Hacking into the system to see which picture is what would require indexing Google images... that's where the images are coming from.  That would be a pretty large index, and could possibly be foiled by distorting the pictures.

(You didn't think I had 6,000 images embedded in a 30KB EXE did you? :))

I've "played" this test a couple dozen times and haven't seen the same image twice yet.  Every image I see is the first time I see it.
« Last Edit: 2010-08-07, 07:01:13 AM by bluemonkmn »

Vincent

  • SGDK2 Addict
  • Expert
  • Fanatic
  • *****
  • Posts: 612
  • Legacy of Kain: Revival is completed!!!
    • View Profile
    • Chivalrous Games
    • Email
Re: Human Verification
« Reply #4 on: 2010-08-07, 08:44:49 AM »
I like it a lot.!  :laugh:  Especially when strange and seemingly unrelated images appear.  Example: "celeste" word got 3 girls in bikini.  And "spider" got a really disgusting image about spiders nestled within a hole in some person's leg.  Yuck!!!

Abstract of difficult concepts to put in images can pick up weird images I guess.  Like "half-brother", this one wasn't obvious.  Then again, that's exactly the kind of abstraction a computer cannot make.  :)

I must admit that it's perfect 99% of the time. 
Legacy of Kain: Revival completed!
http://lokrevival.webs.com

See also my company website:
http://chivalrousgames.com

tprime

  • Fanatic
  • ***
  • Posts: 395
    • View Profile
    • Email
Re: Human Verification
« Reply #5 on: 2010-08-07, 11:21:21 AM »
Are you going to embed it in the forums?

bluemonkmn

  • SGDK Author
  • Administrator
  • Fanatic
  • *****
  • Posts: 2761
    • ICQ Messenger - 2678251
    • MSN Messenger - BlueMonkMN@gmail.com
    • View Profile
    • http://sgdk2.sf.net/
    • Email
Re: Human Verification
« Reply #6 on: 2010-08-08, 06:58:55 AM »
No.  At this point, it would be more work for me to dust off my PHP coding skills and edit someone else's code to change the verification system than it would be to continue manually accepting/rejecting people based on whether they sent me the required email during the sign-up process.  Although it's tempting just as a interesting project -- I kind of want to keep my PHP coding skills fresh.  But I have to work on the game I am creating with SGDK2... back on the other hand again, the timing is right for a better proof of concept on this human verification system, which will probably interest more people than my game will interest.  But back on the other other hand, I don't know that I'd want to put this system in place on a live system where I'll have to rely on it, especially since some of the images it picks are inappropriate! Decisions decisions.  I think my solution is too simple, and there are other more experienced people working on it, so I'd just be wasting my time.  I'll let the experts do what they do, and I'll stick to what I'm good at.  I could use this as a game idea, though :).  A scrolling game that downloads things from Google images... wouldn't that be interesting... I know durnurd made a template that downloaded snowflake images from an online snowflake generator.

durnurd

  • Lead Lemming
  • Expert
  • Fanatic
  • *****
  • Posts: 1234
  • Games completed so far: 0
    • MSN Messenger - durnurd@hotmail.com
    • View Profile
    • Find My Ed
Re: Human Verification
« Reply #7 on: 2010-08-08, 11:24:25 AM »
It seems like it might be a better idea to have like maybe five different images, each from a different category, and you have to match the category to the image.  Or maybe you have four images where three of them are from one category and one unrelated, and you have to find the three that go together.  Or some variation on the theme that might not be so strict, since sometimes the images do not obviously go into one particular category, but you could allow for some small deviation.
Edward Dassmesser

tprime

  • Fanatic
  • ***
  • Posts: 395
    • View Profile
    • Email
Re: Human Verification
« Reply #8 on: 2010-08-08, 02:53:26 PM »
I didn't know you could do that. Can it download images from other sites that you designate it to?

bluemonkmn

  • SGDK Author
  • Administrator
  • Fanatic
  • *****
  • Posts: 2761
    • ICQ Messenger - 2678251
    • MSN Messenger - BlueMonkMN@gmail.com
    • View Profile
    • http://sgdk2.sf.net/
    • Email
Re: Human Verification
« Reply #9 on: 2010-08-09, 05:15:03 AM »
It seems like it might be a better idea to have like maybe five different images, each from a different category, and you have to match the category to the image.  Or maybe you have four images where three of them are from one category and one unrelated, and you have to find the three that go together.  Or some variation on the theme that might not be so strict, since sometimes the images do not obviously go into one particular category, but you could allow for some small deviation.

What exactly does that accomplish that the current program does not?  I think the main problem with the current program is that the noun list on which it is based has some problematic nouns in it.  So some of the images are inappropriate (offensive) and others are ambiguous.  But the vast majority of cases, a human (or at least I) can tell what the computer is expecting.  So given 3 tries at passing 3 rounds in a row, it's very unlikely that I would be able to pass.  Some younger folks might have a problem unless we simplify the word list a bit.  But even they would often know that 3 pictures of catamarans probably aren't pictures that relate to the word "pig", even if they don't know what a catamaran is.  Or that 3 pictures of a quail would go with the word "quail", even though they don't know exactly what a quail looks like, and only know that it's a bird (it's unlikely another bird appears in the list).

It seems like if you picked "categories", we wouldn't be able to use Google images as the source of the program's data... how would it work?  You would search on fewer words, but look farther down the list of result images to pick random images?  My problem with that is that the farther down the list you go, I think, the less relevant the images become to the word.  But I suppose if you use a really good word, there should be lots of relevant images.

How's your PHP... do you want to try implementing one or both of these to show off as a web site instead of a C# program? :)

bluemonkmn

  • SGDK Author
  • Administrator
  • Fanatic
  • *****
  • Posts: 2761
    • ICQ Messenger - 2678251
    • MSN Messenger - BlueMonkMN@gmail.com
    • View Profile
    • http://sgdk2.sf.net/
    • Email
Re: Human Verification
« Reply #10 on: 2010-08-09, 05:16:40 AM »
I didn't know you could do that. Can it download images from other sites that you designate it to?

It's really simple with .NET.  It has objects/commands to interact with the internet very easily.  You could load the code into C# Express and see exactly how it works.  It's pretty short.  Of course it has to manually parse the HTML of the pages it gets to find the relevant images.  But it's still pretty simple.

tprime

  • Fanatic
  • ***
  • Posts: 395
    • View Profile
    • Email
Re: Human Verification
« Reply #11 on: 2010-08-09, 02:15:51 PM »
I didn't know you could do that. Can it download images from other sites that you designate it to?

It's really simple with .NET.  It has objects/commands to interact with the internet very easily.  You could load the code into C# Express and see exactly how it works.  It's pretty short.  Of course it has to manually parse the HTML of the pages it gets to find the relevant images.  But it's still pretty simple.

I like that! It gives me an idea.

durnurd

  • Lead Lemming
  • Expert
  • Fanatic
  • *****
  • Posts: 1234
  • Games completed so far: 0
    • MSN Messenger - durnurd@hotmail.com
    • View Profile
    • Find My Ed
Re: Human Verification
« Reply #12 on: 2010-08-09, 07:30:34 PM »
What exactly does that accomplish that the current program does not?

Given a set of 5 options and 3 sets, that's a total of only 5^3 or 125 different values to choose randomly from.  The probability that two random number generators pick the same number between 1 and 125 is relatively high compared with how quickly a robot can submit tries.  And that's taking it completely randomly.  If the robot takes the 5 words you give and does a search on those and finds even 1 image that's similar to or the same as one you provide, it can guess with a much greater degree of accuracy.

When I say "category" I mean the list of words you have in the program, not anything more broad than that.  If you require matching a set of images to a set of categories, or words, then each answer relies on the previous answers also being correct, since you cannot choose a word that has already been chosen.  If matching 5 images, That gives you 5!, or 120 different possible answers to choose from randomly.  A similar number, even somewhat lower.  But adding even one more image bumps it up to 720 possibilities, whereas adding another option to the first set only jumps it up to 216, or adding another set bumps it to 625, but that requires downloading and looking at more images.
« Last Edit: 2010-08-09, 07:36:50 PM by durnurd »
Edward Dassmesser

durnurd

  • Lead Lemming
  • Expert
  • Fanatic
  • *****
  • Posts: 1234
  • Games completed so far: 0
    • MSN Messenger - durnurd@hotmail.com
    • View Profile
    • Find My Ed
Re: Human Verification
« Reply #13 on: 2010-08-09, 08:59:13 PM »
I've got a PHP version running here:

http://www.findmyed.com/test/

Note that it submits the random seed used to find the current images to verify the results.  Once you verify a seed once, it will always be the same, and you could continuously just submit the same URL over and over to get a "correct" response.  This can be worked around using a time-of-day hash with a secret salt or various other methods (such as storing the seed on the server and using a session ID to access it) which I didn't bother to implement.

I particularly like the search for "Random" which turns up an image of white noise, bright colors, a guy staring at a wine glass, and Chuck Norris.
« Last Edit: 2010-08-09, 09:04:25 PM by durnurd »
Edward Dassmesser

Jam0864

  • Contributor
  • Fanatic
  • **
  • Posts: 744
    • MSN Messenger - marmalade0864@hotmail.com
    • View Profile
    • Jam0864's Content Dump
    • Email
Re: Human Verification
« Reply #14 on: 2010-08-10, 12:33:47 AM »
Can I see the source of that durnurd?