Море волнуется раз ..., или Капча 4D

    Как то я уже писал топик про каптчу 3D
    Дай карму! :)
    А вчера решил слегка переделать, добавить рюшечек и еще одно измерение.
    Долго сказка пишется, да быстро дело делается, рушил сделал и вот наваял гиперкуб Капчу 4D.

    Пара примеров:
    image
    image
    Код также прилагается:
    1. <pre>
    2. <?php
    3. /**
    4. * @author Andrii Kasian
    5. */
    6. $captcha = new Captcha4d();
    7. $captcha->render();
    8. class Captcha4d{
    9. const CHARS = 'WEafRTYIPAGHJKXBNM3479j';
    10. protected $hypot = 5;
    11. protected $image = null;
    12. protected $_sin = array();
    13. protected $text = '';
    14. public function __construct()
    15. {
    16. $this->time = microtime(true);
    17. $this->generateCode();
    18. }
    19. protected function generateCode()
    20. {
    21. $chars = self::CHARS;
    22. for($i =0; $i<3; $i++){
    23. $this->text .= $chars{ mt_rand(0,22)};
    24. }
    25. }
    26. public function getText()
    27. {
    28. return $this->text;
    29. }
    30. protected function getProection($x, $y, $z)
    31. {
    32. $xx = 0.70710;
    33. $xz = 0;
    34. $xy = 0.70710;
    35. $yx = 0.40824;
    36. $yz = 0.81649;
    37. $yy = -0.40824;
    38. $cx = $xx*$x + $xy*$y + $xz*$z - 5;
    39. $cy = $yx*$x + $yy*$y + $yz*$z + 20;
    40. return array(
    41. 'x' => $cx * $this->hypot,
    42. 'y' => $cy * $this->hypot
    43. );
    44. }
    45. function zFunction($x,$y){
    46. $z = imagecolorat($this->image,$y/2,$x/2)>0?3:0;
    47. if( $z != 0 ){
    48. $z += -2+ 2*
    49. $this->_sin[($x+$this->startX)%30]
    50. *
    51. $this->_sin[($y+$this->startY)%30];
    52. }
    53. $z += mt_rand(0,30)/50;
    54. return $z;
    55. }
    56. public function render()
    57. {
    58. $xx = 30;
    59. $yy = 60;
    60. $animation = new Imagick();
    61. $animation->setFormat( "gif" );
    62. $cw = new ImagickPixel("white");
    63. $cb = new ImagickPixel("#000000");
    64. $this->image = imageCreateTrueColor(100, 20);
    65. $whiteColor = imageColorAllocate($this->image,255,255,255);
    66. imageFilledRectangle($this->image,0,0,$yy * $this->hypot , $xx * $this->hypot, $whiteColor);
    67. $textColor = imageColorAllocate($this->image,0,0,0);
    68. imageString($this->image, 5, 3, 0, $this->text, $textColor);
    69. $cof = 2*3.141592654/$xx;
    70. for($x = 0; $x < $xx + 1; $x++){
    71. $this->_sin[$x] = sin($x*$cof);
    72. }
    73. $this->startX = mt_rand(0,$xx);
    74. $this->startY = mt_rand(0,$yy);
    75. $draw = new ImagickDraw();
    76. $countFrame = 25;
    77. for ( $i = 0; $i < $countFrame; $i++ ) {
    78. $this->startX += $xx / $countFrame;
    79. $coordinates = array();
    80. for($x = 0; $x < $xx + 1; $x++){
    81. for($y = 0; $y < $yy + 1; $y++){
    82. $coordinates[$x][$y] = $this->getProection($x,$y,$this->zFunction($x,$y));
    83. }
    84. }
    85. $animation->newImage( $yy * $this->hypot , $xx * $this->hypot, $cw);
    86. $im = new ImagickDraw();
    87. $im->setFillColor($cw);
    88. $im->setStrokeColor($cb);
    89. $im->setStrokeAntialias(true);
    90. for($x = 0; $x < $xx; $x++){
    91. for($y = 0; $y < $yy; $y++){
    92. $coord = array();
    93. $coord[] = $coordinates[$x][$y];
    94. $coord[] = $coordinates[$x+1][$y];
    95. $coord[] = $coordinates[$x+1][$y+1];
    96. $coord[] = $coordinates[$x][$y+1];
    97. $im->polygon($coord);
    98. }
    99. }
    100. $animation->drawImage($im);
    101. $animation->setImageDelay( 100/$countFrame );
    102. }
    103. header( "Content-Type: image/gif" );
    104. echo $animation->getImagesBlob();die();
    105. }
    106. }


    Приятного понедельника, хабра товарищи!

    PS. Эта капча не предназначено для использования в качестве капчи (ломает пользователям мозг, и забивает канал трафиком)
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 139

    • UFO just landed and posted this here
        +35
        Спасибо исправил.

        ЗЫ. Не надо так волноваться, легко наступить на классические грабли когда пишешь на иностранном в понедельник вечером ;)
        • UFO just landed and posted this here
            +2
            Если Вас задолбали боты, то 600кб не помеха… сейчас 90% народу торентами накачивает в сутки не менее 4гиг
            • UFO just landed and posted this here
                +4
                уже и не москвичей тоже, прогресс идет по-тихоньку
                  –39
                  белгородцев, блядь
                    +2
                    м?
                      +8
                      фамилия.
                        +6
                        а, это он представился?
                  0
                  Я не москвич, но за день у меня не менее 15Гб только исходящего трафика, торрент всегда включен + реальный ип, все просто.
                  • UFO just landed and posted this here
                      +1
                      А мне то что, я плачу не маленькие деньги за безлимитный 10/10Мб интернет (это максимум что есть у нас в городе) + отдельно за реальный ип.
                        –6
                        Не маленькие деньги это ~ 10 т.р(+- 5т.р. в зависимости от удалённости москвы). за мегабит магистрального провайдера. Вы платите 50-100 т.р. и совесть ваша чиста? ;)
                          +1
                          Я плачу 500 р. в месяц за два мегабита (реальная скорость доходит до десяти мегабит) с внешним IP, Новосибирск. Что я делаю не так?
                            +3
                            Хороший у вас пров
                              0
                              Да, неплохой, только что-то чудит последнее время. Но в Новосибирске такие цены — не исключение, а норма. Правда, стало нормой это относительно недавно — год-полтора назад.
                              +4
                              Это провайдер что-то делал не так, когда шейпер настраивал :D
                                +3
                                Да нет, это у провайдера такая политика. У него тарифы не «до такой-то скорости», а «средняя скорость — такая-то». Соответственно, когда пользователей мало (ночью или ещё когда) — скорости очень сильно возрастают. А когда пользователей много — скорость выдерживается достаточно хорошо.
                                  +3
                                  Э-э-э, а можно прокомментировать, почему минусуем? А то я как-то даже в недоумении, за что тут можно минусовать. Ну что поделать, если действительно такая политика у провайдера, и она им в явном виде заявлялась. Если кому интересно, то провайдер — HomeNet.
                                0
                                У моего провайдера (общежитие белорусского ВУЗа, альтернатив нет) 512кбит/с максимум скорости для анлима и стоит анлим с такой скоростью около 50$.
                                0
                                19$ (149грн.), не маленькие относительно других тарифов. Дороже только для юр. лиц.
                            0
                            За последние 3 дня раздал 283 гигабайта Mass Effect 2 на демоноиде. Сегодня увидел, аж страшно стало.
                              0
                              у меня 420 за тот же срок…
                            +2
                            Архангельск. Гигабайт в час канал позволяет.
                            +1
                            Вы сравниваете несравнимое, типа времени отклика интерфейса и время рендера.

                            Дело не в пожранном трафике, а с тем, что ждать подгружения 600 кб некомфортно даже на шустром канале.
                              0
                              а кто и не менее 40-ка ;)
                                +1
                                Если боты будут массово запрашивать капчу, то мало серверу не покажется, т.к. её генерация + отдача такого большого файла в массовом режиме создаст приличную нагрузку. Вспомните атаку на хабр, когда DDoSили запрашивая капчу.
                                  +1
                                  Можно нагенерить 5k наборов букв и картинок, отдавать их уже как статику, а каждые скажем 3 часа производить повторную генерацию всего пула.
                            • UFO just landed and posted this here
                                +23
                                надо датчик влажности на клавиатуру, если будет буээээ, значит человек )
                                  0
                                  Ради интереса объединил в фотошопе все слои с наложением друг на друга в режиме Lighten, скриптом это тоже сделать не сложно.

                                  Один кадр так зачистить было бы гораздо сложнее…
                              0
                              Смотрю полюбился вам этот познавательный сайт:)
                              • UFO just landed and posted this here
                              +3
                              Извините, но Вы не могли бы объяснить, почему именно 4 измерения?
                              Лично я вижу анимированный объект в 3-х измерениях.
                              Или Вы подразумевали под 4-ым измерением время?
                                +31
                                Да, я подразумевал время… (хотя картинка в 2 измерениях)
                                  +1
                                  угу. напишите код с картинки на время 4-ой секунды после начала анимации. Это идея новой капчи
                                  +2
                                  да, время тут — тоже определяет сосотояние картинки.
                                  • UFO just landed and posted this here
                                      +19
                                      После написания программы «4-х мерные алгебраические фракталы на кватернионах» можно увидеть все существующие и вымышленные измерения. Даже прочитав только название.
                                      • UFO just landed and posted this here
                                        +2
                                        Или вот более приземленный пример: при трехмерном моделировании газодинамических процессов каждому элементарному объему сопоставлены значения свойств среды, являющиеся координатами в пространствах P-V, T-S и других.
                                        • UFO just landed and posted this here
                                        +4
                                        Как говорит наш преподаватель по вышке — «Если Вы видите (можете представить) 4D, то ждите скорую с санитарами...»
                                          +6
                                          а наш, помнится, на доске как-то 16-мерный кубик рисовал:)
                                            +4
                                            А он главврач тех санитаров, ему можно.
                                              0
                                              это 2^16 вершин

                                              сколько он его рисовал?)
                                                0
                                                минут 40. потом урок кончился)
                                                  0
                                                  я так думаю, можно было нарисовать логотип хабра: )
                                              0
                                              А у нас когда начался курс Алгебры и Геометрии в ВУЗе препод сказал кто мне нарисует 4мерный куб тому автомат за семестр.
                                                +4

                                                Проекция 4-мерного куба на плоскость. Все линии на рисунке равны.
                                                Пояснения: чтобы получить квадрат — надо взять линию растянуть ее в перпендикулярном этой линии направлении.
                                                чтобы получить куб надо квадрат вытянуть в перпендикулярном плоскости квадрата направлении
                                                а чтобы получить гиперкуб(4-мерный куб) надо взять куб и вытянуть его в 4 измерение.
                                                *все «вытягивания» и «растяжения» делаются на одно и то же расстояние (а то будут получаться прямоугольники и параллелепипеды)
                                                  0
                                                  О ностальгия =)
                                                  Давненько это было =)
                                                  Я уже про 5 мерные пространства материал изучаю различные алгебры n порядков =)
                                                    0
                                                    Бесконечномерные пространства круче :-)
                                                    +1
                                                    Вспомнил фильм «Куб»
                                                    и меня передёрнуло от Вашего описалова…
                                              0
                                              Это круто!
                                                +38
                                                Я балдею с таких изобретателей.
                                                Оставляем из анимации только неизменные области, чуть повернуть, и распознать.
                                                  +2
                                                  А Вы попробуйте, на словах оно легко, а на деле…
                                                  Хотя насчет неизменных областей Вы правы
                                                    +22
                                                    Можно даже непосредственно не определять неизменные области — достаточно «слить» все кадры анимации. Будет надпись на черном фоне с небольшим шумом.
                                                      +1
                                                      Обходится закрашиванием букв в черный цвет.
                                                    0
                                                    часть или все можно «топить»
                                                    как идея по моему неплохо
                                                      +2
                                                      Еще проще подсунуть ее школьникам для распознавания, впрочем, как и любую другую капчу.
                                                      –1
                                                      Мой моск уничтожен. Если мне придется вбивать такую капчу, то руки отнимутся сразу вслед за глазами.
                                                        –6
                                                        невозможно разобарть что на капче написано!
                                                          +2
                                                          сори был не прав — когда писал изображение не двигалось как на первом капче…

                                                          так действительно понятнее…
                                                          +6
                                                          Эту вроде еще проще сломать. Выделяем куски, которые не двигаются и все. Дальше — дело техники.
                                                          • UFO just landed and posted this here
                                                              0
                                                              Легко обходится, берется кадр если гифка, и все как со статичной версией.
                                                              Думаю со флешем тоже можно что-либо придумать, к тому же многие не любят флеш, поэтому флеш-каптчи не получили распространения.
                                                                +1
                                                                Милая, но совершенно бесполезная штучка.
                                                                Роботом распарсить проще чем большинство 2D-капч. Разве что так, чисто для души проектик
                                                                  0
                                                                  Легко ломается, двигающиеся куски выделяем, удаляем — потом обратное преобразование и получаем плоскую картинку с читаемыми символами. Оригинал — надежнее.
                                                                    +27
                                                                    Вы — такой умный — будете четвертым в списке.

                                                                    Даешь рекорд на количество повторений одного и того же соображения в каментах!
                                                                      –14
                                                                      Читать комментарии — это слишком скучно.
                                                                        +1
                                                                        Читать одинаковые комментарии — тоже.
                                                                        –1
                                                                        Не понимаю, почему до сих пор никто не написал, что эта капча элементарно обходится — оставляем только неподвижные части и всё!
                                                                          0
                                                                          Ура! Пятый! Кто больше?

                                                                          а вообще, посмеялся и плюсанул. :)
                                                                            0
                                                                            оставляем неподвижные области, а остальное удаляем.
                                                                            фдисятке!
                                                                      • UFO just landed and posted this here
                                                                        –1
                                                                        antigate.com — лучшее средтсво от изобретателей :)
                                                                          +18
                                                                          Есть ocr-research.org.ua, который всем желающим вышлет исходники своей капчи. Пример капчи:


                                                                          Как видите, и углы поворота, и углы наклона, и шрифты разные, и буквы гнутые. Только не надо её анимировать! =)
                                                                            +1
                                                                            Краем глаза похоже на распластанную в синих дюнах тушку homo sapiens
                                                                              +20
                                                                              Долго пытался понять с чего вы так решили, потом понял что картинка всё время разная >_<
                                                                              +1
                                                                              блюр, контраст, повернуть, распознать :)
                                                                                0
                                                                                удачи. как получится — пишите.
                                                                                –1
                                                                                Здорово это вы за меня решили, кому я и что вышлю…
                                                                                –2
                                                                                Красиво. И, главное, читабельно.
                                                                                Но, я думаю, и распознать его будет просто — проще, чем 3d.
                                                                                  –9
                                                                                  Автор, Вы просто МЕГО!
                                                                                    +1
                                                                                    только у меня в коде все отдельно стоящие нули съело?
                                                                                      0
                                                                                      это известный глюк хабрапарсера. не любит он отдельно стоящие раскрашенные нули.
                                                                                      +1
                                                                                      Сама идея волн и статики замечательная, даже «пятничная» какая-то :)
                                                                                      • UFO just landed and posted this here
                                                                                          0
                                                                                          Еще добавить движение самих символов наподобие судна в океане :)
                                                                                            –2
                                                                                            занимательно наблюдать, как автора опустили на землю за 2 минуты.
                                                                                              0
                                                                                              Ну просто никак не для капчи это…
                                                                                              0
                                                                                              нло поработит мир!!! =))
                                                                                                +1
                                                                                                оу мэн, морская болезнь
                                                                                                  –2
                                                                                                  А где тут собственно 4D? Анимация имхо это далеко не 4D. Да и плюс анимация дала возможность сломать капчу мгновенно, определить неподвижные вершины будет несложно и соответственно буковки есть.
                                                                                                    –1
                                                                                                    Магия!
                                                                                                      0
                                                                                                      Смысл загоняться если капчи сейчас распазнаются людьми, есть целые сервисы.
                                                                                                        +3
                                                                                                        Идея интересная, но, как уже было сказано выше, боту так будет намного проще отсечь все ненужное.

                                                                                                        По-моему, будущее капчей за WebGL — покрутил объект до нужного угла, распознал, вбил.
                                                                                                          +1
                                                                                                          У второй картинки порадовал title.
                                                                                                            0
                                                                                                            Ох. Сколько капч нынче на хабре развелося.

                                                                                                            Прежде, чем придумывать капчу, надо осознать несколько вещей.

                                                                                                            1) Капча не для того, чтобы её не мог разглядеть человек, а для того, чтобы её было трудно распознать программой.

                                                                                                            2) Надо хоть чуть-чуть (ну хоть самую малость!) почитать про методы выделения сигнала из шума. Тогда сразу станет ясно, что трудно сломать компом, а что — нет; и — соответственно — где плохая капча, а где хорошая.

                                                                                                            Как упражнение в элементарной графике — забавно. Но как капча — никуда не годится.
                                                                                                              0
                                                                                                              Ваша капча при взломе не сложнее остальных, даже легче
                                                                                                              1)Символы каждый раз выдаются под одинаковым углом
                                                                                                              2)Берем, скачиваем картинку, прогоняем ее и смотрим какие пиксели меняют положение при смене гиф-кадра
                                                                                                              3)«Выдираем» координаты эталонных «Неменяющихся» пикселей
                                                                                                              4) Сравниваем полученные с эталонными
                                                                                                              5) В итоге — капча декодирована
                                                                                                              • UFO just landed and posted this here
                                                                                                                  0
                                                                                                                  Не сдал матан — пошёл на метан.
                                                                                                                  — Народная мудрость (ничего личного :-))
                                                                                                                –5
                                                                                                                Охуенно, ящетаю!
                                                                                                                  +2
                                                                                                                  Да вы с ума сошли, капча в 640 Kб! :)
                                                                                                                    +4
                                                                                                                    Вот видите 640кб хватит даже на капчу, один-неизвестный-человек был прав в свое время)
                                                                                                                  • UFO just landed and posted this here
                                                                                                                      +31
                                                                                                                      если убрать условие в строке 57, то получится еще невъебеннее
                                                                                                                      www.skycentre.net/captcha.gif
                                                                                                                        +1
                                                                                                                        пока писал ниже свой комент, вы выразили мою мысль на практике.
                                                                                                                        +2
                                                                                                                        Думаю, будете четыредэшнее, если все это волнистое море будет немного вращаться или еще как-то волноваться. Тогда хакерские коменты «двигающиеся куски выделяем, удаляем» придется тоже апгрейдить.
                                                                                                                        А еще можно было бы, отображая вот так 3-мерно символы, показывать их по очереди, или «бегущей строкой»
                                                                                                                          –1
                                                                                                                          Так боты будут смотреть, которые пиксели не двигаются, и все, получаем 2D. Но идея, конечно, очень интересная :).
                                                                                                                            +1
                                                                                                                            зато смотрится шикарно :)
                                                                                                                            • UFO just landed and posted this here
                                                                                                                                +1
                                                                                                                                А мне понравилось.Люблю инновации.
                                                                                                                                  +1
                                                                                                                                  Код также прилагается:


                                                                                                                                  А не могли бы вы выложить исходник куда-нибудь (например на _dumpz.org). Спасибо
                                                                                                                                  +1
                                                                                                                                  До тех пор, пока эту капчу не начнут использовать на сайтах, ничего против не имею. Красиво. :)
                                                                                                                                    0
                                                                                                                                    Реально «сильная» штука… по крайней мере для человека.
                                                                                                                                      0
                                                                                                                                      вот только для компьютера — слабая
                                                                                                                                      0
                                                                                                                                      Жму Вашу руку — очень интересно и необычно ) не знаю, правда, насколько практично )
                                                                                                                                        +8
                                                                                                                                        Капча-мечта-DDOS-ера :)
                                                                                                                                          +2
                                                                                                                                          О, Вы явно попробовали запустить…
                                                                                                                                          0
                                                                                                                                          С анимацией, можно сделать энное количество кадров, в одном из которых будет «капча», а остальные для запутывания. :) Только ужасно всё это.
                                                                                                                                            0
                                                                                                                                            пока тут происходит аукцион быстрых ломателей такой капчи, я немного отвлекусь от их прикидок. предположу, что если сделать символы тоже колеблющимися, то можно сохранить хорошую читаемость для людей, но сложность взлома возрастет в разы. быстрые ломатели, наверное, тоже найдутся, но почему то мне кажется что это будут не программисты, а индусы.

                                                                                                                                            кэп?
                                                                                                                                            0
                                                                                                                                            А можно мне на память квадратный вариант с буковками fm? В личку).

                                                                                                                                            Чудесная штука.
                                                                                                                                              0
                                                                                                                                              Анимированная каптча в файле с расширением .JPG — это чтобы боты не догадались?
                                                                                                                                                0
                                                                                                                                                Тоже анимированная каптча, только весит 13 кб
                                                                                                                                                www.superlovers.ru/captcha
                                                                                                                                                  0
                                                                                                                                                  Очевидно же, что буква тоже должны «плавать». Кеп.
                                                                                                                                                    0
                                                                                                                                                    Правильно, иначе можно наложить по and все кадры, и останутся только буквы. И какой тогда смысл в этом всем?
                                                                                                                                                      –1
                                                                                                                                                      Я бы плюсанул, да злое НЛО не дает заряда!
                                                                                                                                                      –1
                                                                                                                                                      эту будет боту распознать даже проще чем статичную, за счет того что можно сразу удалить фон
                                                                                                                                                        0
                                                                                                                                                        Занятная капча. По крайней мере четабельна, в отличии от некоторых индивидуумов этой «породы»!
                                                                                                                                                          0
                                                                                                                                                          Индусов-вбивальщиков еще никто не отменял=)
                                                                                                                                                          • UFO just landed and posted this here
                                                                                                                                                              0
                                                                                                                                                              не ваших рук дело?
                                                                                                                                                              мегафон смс

                                                                                                                                                              Only users with full accounts can post comments. Log in, please.