Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Rozkładanie captchy
Forum PHP.pl > Forum > PHP
0g0r
Cze smile.gif
Mam pewien problem, a właściwie dotyczy on rozłożenia dynamicznie generowanej captchy, a następnie przekształcenia wyniku na znaki.

Jak mogę to zrobić?
Liczyłbym na jakieś konkretne instrukcje.

Z góry dzięki smile.gif
TomASS
zobacz może tutaj:
http://caca.zoy.org/wiki/PWNtcha
0g0r
To odpada.

Chodzi mi o konkretne funkcje, których można użyć.
#luq
Jakieś tam podstawowe informacje http://luq10.wordpress.com/2010/01/28/niec...-napisac-swoja/
0g0r
Dzięki wielkie smile.gif

Potrzebuję jeszcze jednak jakiejś funkcji, która by wyprostowała obrócone znaki.

Quadina
Funkcji która prostuje samej w sobie raczej nie znajdziesz, to już są przeliczenia na tablicach, podchodzić może pod sztuczną inteligencję (biblioteka fann). Jakby to było takie proste, to by wszystkie boty już miały napisane odpowiednie moduły ;-)
0g0r
Więc jak sugerowałbyś to zrobić?

Używam poniższego kodu do usunięcia tła.
Cytat
$map = array();
for($y=0; $y<$height; $y++)
{
for($x=0; $x<$width; $x++)
{
$img = imagecolorsforindex($img, imagecolorat($img, $x, $y));
$map[$x][$y] = ($color['red'] + $color['blue'] + $color['green'] < 200) ? TRUE : FALSE;
}
}


Następnie chce obrócić otrzymaną zawartość ale coś nie wychodzi.

Cytat
$c = imagecolorallocate($img, 255, 255, 255);
$p = imagerotate($img, 20, $c);


Co robię nie tak?
Quadina
Robiłem kiedyś podobny projekt i relalizacją mniej więcej wyglądała następująco:

1a. Liczyłem średnią koloru w obrazku, następnie zamieniałem wszystko pod średnią na biały, nad średnią na czarny - w roli filtru kolorów przeszkadzajek itd itp, ale nie sprawdza się to przy tłach obrazkowych
1b. Próbowaliśmy również pomyśleć nad sposobem przejścia co jakiś tam kolor istniejący w grafice; każde przejście odbywało się na zasadzie skanowania z lewo na prawo, czy istnieją w miarę równe luki (odchylenie standardowe) - w roli spacji
2. Dzielimy podobną metodą jak w 1b na bloki w których coś jest - prawdopodobnie będą to litery
3a. Skanujemy każdą z liter na podstawie własnych wzorców np. powiększając nasz wzór do wielkości wyciętego fragmentu obrazka; następnie sprawdzaliśmy część wspólną tych tablic; litera ze wzoru, która miała najwięcej pikseli wspólnych oznaczała dla nas rozpoznanie litery, ale tylko gdy miała więcej niż 90% trafień
3b. Operacją alternatywną do 3a, czyli trochę bardziej trudną było wrzucenie wszystkiego do mechanizmu fann. To jest, nauczenie wygenerowanej przez nas maszyny inteligentnej wzorów na podstawie wzorca 7x5 pikseli; zmniejszenie litery z punktu 2 do takiej wielkości i podanie jej mechanizmowi sztucznej inteligencji do rozpoznania. Ten mechanizm opisany w tym podpunkcie można zobaczyć na http://musk.quadina.pl/ odpowiednio zaznaczając checkboxami literkę na całej płaszczyźnie.

EDIT: własnie zauważyłem, że link nie działa - postaram się go w ciągu kilku godzin uruchomić.
0g0r
U mnie jest o tyle prościej, że mam tylko w tle szarą kratkę i czarne cyfry. Problemem dla mnie jest to, że są poobracane o jakiś kont.

W poprzednim moim poście właśnie podałem swoje kody, których używam.
Quadina
Ok, ale co ci się pojawia po obróceniu o te 20 stopni? "Coś nie wychodzi" to trochę za słaba informacja dla mnie - wybacz, może jestem już zbyt zmęczony.
0g0r
Tak, przepraszam też jestem zmęczony...
A więc przekształca się cały obrazek wraz z tłem, a nie same znaki.
Quadina
Zwróć uwagę co robi Twój kod do usuwania tła. Budujesz sobie tablica $map, ale nie zapisujesz jej do resource obrazka, zatem później obracanie działa dla całości, a nie tego co wyliczyłeś.
thek
Włączam się w temat panowie. Fajnie się gada, ale moim zdaniem o tym jak kapcia rozgryźć to nie na tym forum. Nie pomagamy w obchodzeniu zabezpieczeń, więc temat "wyciszam". Chcecie sobie o tym pogadać? Macie inne możliwości.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.