![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 21.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Ostatnio zainteresowało mnie to, co kiedyś uważałem za największe zło- Captha. Uważałem tak, głównie ze względu na dostępność- jednak opróćz tego standardowe capthy są często dość proste do złamania- potwierdza to min. ta strona z tego też powodu postanowiłem się wziąć za swój wynalazek, który będzie troszkę odmienny od innych prezentowanych Capth.
Czym zatem różni się moja Captha od innych? Tutaj nie trzeba przepisać jakiegoś konkretnego słowa- należy natomiast podać ilość symboli- w chwili obecnej są to bardzo tandetne kółka- docelowo zastanawiam się nad jakimiś zwierzątkami bądź znaczkami. Jest to baaardzo wczesna wersja- na chwilę obecną nie nadaje się jeszcze do zastosowania jako captha w jakimkolwiek serwisie, jednak cały czas nad nią pracuję. TODO: -większa elastyczność (póki co tylko wielość CAPTHy jest w miarę edytowalna, natomiast kolorystyka itp- nie bardzo) -jednak to z tego powodu, że: captha będzie korzystała z kilku różnych teł, a kolorystyka kółek i tak chyba zostanie wymieniona. -zrobienie pytania w stylu "ile jest żółtych kółek na obrazku" - tu jednak muszę dobrać takie kolory, by daltoniści nie mieli problemów (o ile takie kolory istnieją....) -implementacja jakichś obrazków zamiast figur geometrycznych (muszę jednak znaleźć coś małego i łatwo rozpoznawalnego) -poprawienie buga - w chwili obecnej obrazki są tworzone w temp`ie a nie są usuwane- po paru testach muszę ręcznie usuwać stare obrazki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Kod Klasy:
użycie:
dla osób niecierpliwych- screen działania (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) (IMG:http://img214.imageshack.us/img214/3096/captha5hl.th.jpg) Jak już mówiłem, klasa jest na bardzo wczesnym stopniu rozwoju. Prosiłbym jednak o wszelkie sugestie dotyczące implementacji- klasa będzie na GPL`u, i chciałbym, aby przydała się komukolwiek (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ---------------------------UPDATE----------------------------- ok, zamiast kółek są uśmiechnięte buźki i dla utrudnienia smutne- wiem, troszkę captha dla debili, ale narazie takie obrazki znalazłem, które sa łatwo rozpoznawalne (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) w chwili obecnej największym problemem jest to, że zdarza się, że ikony nachodzą na siebie- postaram się to naprawić w najbliższym czasie. Dodałem też podgląd aktualnego postępu prac Ten post edytował kkrzyzak 21.01.2007, 15:29:55 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 435 Pomógł: 40 Dołączył: 16.02.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Nie patrzyłem w kod (nie znam się raczej na php ;-) ) ale mam kilka rad:
1. Stosuj większe rysunki buźek/kółek czy czegoś innego. 2. Nie dawaj tak dużo tych rysunków, max. 6 (nikomu nie chce się liczyć 31789 małych buźek wielkości 5 x 5px! ;D) 3. Mam pomysł jakbyś mógł rozwiązać problem nakładania się tych symboli: Kod --O-O- -O---- ---O-O O oznacza symbol, - oznacza pustą przerwę pomiędzy symbolami, Rozumiesz mniej więcej o co chodzi? a ) pierwszy rysunek w odległości 2 od lewego boku, losowanie wysokości na której ma być obrazek b ) drugi obrazek w odległości 5 od lewego boku (promień obrazków to np. 2) i także losowanie położenia wzg. osi Y dla tego obrazka itd.. Ten post edytował ano 21.01.2007, 16:49:52 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 21.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Nie patrzyłem w kod (nie znam się raczej na php ;-) ) ale mam kilka rad: i właśnie takie rady są dla mnie najcenniejsze (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Cytat 1. Stosuj większe rysunki buźek/kółek czy czegoś innego. najpierw muszę ostatecznie ustalić, co ja będę rysował, a potem dopiero dopasuję rozmiar- jednak wielkość napewno zmienię.Ad.2 - w tej chwili jest wadliwa implementacja (docelowo ma być 10 obrazków w sumie,a teraz jest max 10 poprawnych obrazków- choć to będzie do edytowania ) Ad3. Bardzo dobry pomysł- zaraz postaram się go wprowadzić w życie. |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Matko, zdecyduj sie na jedna pisownie CAPTCHA'y. Poprawiam tytul topiku.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 19.10.2004 Skąd: Opole Ostrzeżenie: (0%) ![]() ![]() |
Skoro już rozmawiamy o Captcha polecam stronę http://sam.zoy.org/pwntcha/ która pokazuje które algorytmy captcha są już nieskuteczne. Obawiam się że Twój algorytm nie będzie specjalnie wymagający dla automatu...
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 21.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
...gdyby Ci się chciało przeczytać mojego posta, zobaczyłbyś, że podawałem tamtą stronę. A uwierz mi, że (chyba) nie istnieje automat, który będzie w stanie odróżnić mrówki od żyrafy (bo tego typu pytania będą w wersji finalnej) (ba, na podanej przez Ciebie stronie tego typu captha jest oznaczona jako "An excellent idea, but a critically buggy implementation." ) -niestety, jestem w stanie rozwijać ją tylko w weekendy, więc narazie wiele nie zrobię...
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 82 Pomógł: 0 Dołączył: 18.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
Twoja klasa podsunęła mi pewien pomysł, który mógłbyś w niej zaimplementować:
zamiast buziek żyraw itp mógłbyś rysować figury geometryczne w różnych kolorach i zadawać pytanie typu "ile jest czerwonych kółek?" rozwiązało by to kilka problemów np. pisownia (żyrafa, rzyrafa, zyrafa) nie wspominająć o tym że ktoś może pomylić konia z zebrą lub jabłko z pomidorem i odwrotnie. Ten post edytował DjKermit 23.01.2007, 18:57:10 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 21.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
maaan, ludzie, czytajcie całe posty....
Cytat -zrobienie pytania w stylu "ile jest żółtych kółek na obrazku" - tu jednak muszę dobrać takie kolory, by daltoniści nie mieli problemów (o ile takie kolory istnieją....)
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 82 Pomógł: 0 Dołączył: 18.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
maaan, ludzie, czytajcie całe posty.... Sorki. Widocznie był za długi (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) docelowo zastanawiam się nad jakimiś zwierzątkami bądź znaczkami. Poza tym to rzuciło mi się w oczy. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 3 Dołączył: 23.01.2007 Skąd: Dys/Lublin Ostrzeżenie: (0%) ![]() ![]() |
Obrazek tego typu jest w miarę prosty do złamania bo wystarczy napisać algorytm wyznaczający odpowiednie obiekty* w obrazku
Algorytm mógłby wyglądać tak: 1. Utworzyć macierz M z obrazka. 2. Znaleźć biały pixel Jeśli istnieje to Utworzyć nowy obiekt O[i++]* i dodać do niego ten pixel (współrzędne) i ustawić go na stos. jeśli nie to przejść do kroku 4. 3. Pobrać ze stosu element . Dodać do obiektu. Usunąć go z macierzy M. Dodawać do stosu sąsiednie pixele, jeśli są białe. Powtarzać krok 3 dopóki są elementy na stosie. Jeśli nie elementów na stosie to wrócić do kroku 2. 4. Policzyć ilość obiektów O. Jeśli trzeba by było policzyć żabki na obrazku który zawiera też samochodziki to w kroku 4 trzeba by było zrobić porównywanie z wzorcami. * obiekt nie w znaczeniu informatycznym, może to być tablica np. $O[$i][$x][$y] = true; $x i $y to współrzędne pixela. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 21.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
hmm... i to mi daje do myślenia. a co myślisz o rysowaniu żyrafy, nosorożca itp i prawidłową opcją byłaby nazwa zwierzątka? tu jednak problem jest z dysortografami....
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 374 Pomógł: 23 Dołączył: 3.06.2006 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem, może takie coś już jest, ale normalne captcha, ale należy podać wartość od tyłu?
czyli na captcha jest: 5jk435 a trzeba podac: 534kj5 |
|
|
![]()
Post
#13
|
|
Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków ![]() |
Skrypt nawet fajny. Kedyś, kiedyś na blogu wassago była dość fajna dyskusja na temat zabezpieczeń formularzy przeciwko robotom. Była matematyka, były rysuneczki, było wpisanie jakieś literki w input, ale kolega chmolu podsunął dośc fajny pomysł.
Otóż wiadomo, że roboty uzupełniają wsyzstkie inputy, nawet hidden, wystarczy stworzyć jeden hidden i sprawdzać czy jset pusty, czy nie. |
|
|
![]()
Post
#14
|
|
Grupa: Przyjaciele php.pl Postów: 790 Pomógł: 7 Dołączył: 6.02.2003 Skąd: Polska Ostrzeżenie: (0%) ![]() ![]() |
Lepiej ukryć pole cssem albo użyć JS do wysyłania formularza.
Ani jednego ani drugiego roboty nie potrafią czytać i interpretować. |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 1 470 Pomógł: 75 Dołączył: 21.09.2005 Skąd: że znowu Ostrzeżenie: (0%) ![]() ![]() |
ukryte pola można w konfiguracji bota wyeliminowac, a co do tematu to lipa - jesli kułek 9buziek, żyraf czy co tam dasz) będize kilka to robot ez trudu podstawiając ciągle jakieś liczby trafi na tą właściwą - nawet bez interpretacji samego obrazka. przewaga przepisania ciągu znaków jet taka że wymaga poprawności ałęgo ciągu - a u ciebie wystarczyłoby podac cyferke - więc kombinacji jest duuużo mniej. co za tym idzie - banalnie proste do złamania - bo najmniej czasu zabiera wysłanie danych ze spamem a najwiecej interpretacja obrazka. dobrym pomysłem jest nazywanie zwierząt czy przedmiotów (zniekształconych jakimś efektem) - robot nie da sobie rady - szczególnie przy duzej ilości obrazków - a człowiek w razie w moze zarządać przerysowania obrazka (z np nowym efektem zniekształcenia, który być może będize bardziej czytelny dla człowieka). Pozatym - capache mozna dawać jako tło - z tym zaden automat bez recznej konfiguracji sobie nie poradzi - szczególnie jesli obrazek bedzie zdefiniowany w osobnym pliku.
|
|
|
![]()
Post
#16
|
|
Grupa: Zablokowani Postów: 16 Pomógł: 1 Dołączył: 12.09.2006 Ostrzeżenie: (0%) ![]() ![]() |
Nie ma sensu tego w ogóle robić, gdy dostępny jest skuteczniejszy, automatyczny filtr: http://sblam.com/
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 13:55 |