1. Perl / Говнокод #4594

    −121

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    sub captcha {
    	my $msg = $_[0];
    	## make colors for validation image into hex again ##
    	$rgb_foreground =~ s/\#//g;
    	$rgb_shade =~ s/\#//g;
    	$rgb_background =~ s/\#//g;
    	$r_f = substr($rgb_foreground,0,2);
    	$g_f = substr($rgb_foreground,2,2);
    	$b_f = substr($rgb_foreground,4,2);
    	$r_s = substr($rgb_shade,0,2);
    	$g_s = substr($rgb_shade,2,2);
    	$b_s = substr($rgb_shade,4,2);
    	$r_b = substr($rgb_background,0,2);
    	$g_b = substr($rgb_background,2,2);
    	$b_b = substr($rgb_background,4,2);
    // Тут я вырезал кусок никчемного кода
    $ci{' '} = qq~
    .......
    .......
    .......
    .......
    .......
    .......
    .......
    .......
    .......
    .......
    ~;
    $ci{'!'} = qq~
    .......
    ...X...
    ...X...
    ...X...
    ...X...
    ...X...
    .......
    ...X...
    .......
    .......
    ~;
    $ci{'"'} = qq~
    .......
    ..X.X..
    ..X.X..
    ..X.X..
    .......
    .......
    .......
    .......
    .......
    .......
    ~;
    $ci{'#'} = qq~
    .......
    ..X.X..
    ..X.X..
    .XXXXX.
    ..X.X..
    .XXXXX.
    ..X.X..
    ..X.X..
    .......
    .......
    ~;
    $ci{'$'} = qq~
    .......
    ...X...
    ..XXXX.
    .X.X...
    ..XXX..
    ...X.X.
    .XXXX..
    ...X...
    .......
    .......
    ~;
    // Дальше идет вся таблица ASCII

    Вот таким вот образом выводили каптчу в далеком 2009 году. Очень надежный метод :)

    Запостил: Arigato, 11 Ноября 2010

    Комментарии (16) RSS

    • Помниться в далёком 1989 подобным образом рисовали фонт для к.-н. приложения...
      Ответить
      • Был бы 89-й или даже 99-й, я бы еще понял, но 2009!
        Ответить
        • Типа: "Новое - это хорошо подзабытое старое"...
          Ответить
    • 7х10 - это чей стандарт?..
      Ответить
      • Автора кода. Ведь еще все это дело не просто так, а в строковом виде...
        Ответить
    • а где присущий каптче шум?
      Ответить
      • Наверное, где-то тут:
        for ($y = 0; $y < $h; $y++) {
        		$cy = int($y / $DOT_HEIGHT) % $CHAR_HEIGHT; # y coord in character dots
        		$dy = $y % $DOT_HEIGHT;
        		for ($x = 0; $x < $w; $x += $DOT_WIDTH) {
        			$random_number = int(rand($range));
        			$cx = int($x / $DOT_WIDTH) % $CHAR_WIDTH; # x coord in character dots
        			$i = int($x / $DOT_WIDTH / $CHAR_WIDTH); # index into message string
        			$line = $lines[$y / $LINE_HEIGHT];
        			$c = ($i < length $line) ? substr $line, $i, 1 : ' '; 
        			$d = substr $ci{$c}, $cy * ($CHAR_WIDTH + $nl) + $cx + $nl, 1; # dot in character definition
        			if ($distortion > 0) {
        				$dis_level = 9 - $distortion;
        				if ($random_number <= $dis_level) { $di = ($d eq 'X') ? $dot : $nodot;} elsif ($random_number > $dis_level){ $di = ($d eq 'X') ? $dot : $invnodot;}
        			} else { 
        				$di = ($d eq 'X') ? $dot : $nodot;
        			}
        			$di = substr $di, $dy * ($DOT_WIDTH + $nl) + $nl, $DOT_WIDTH;
        			for ($i = 0; $i < length $di; $i++) {
        				$c = ord substr $di, $i, 1;
        				if ($randomizer > 0) {
        					# Start of randomizer - comment this block out if you don't like it!
        					if($randomizer == 1){$rc1 = 1; $rc2 = 1;}
        					if($randomizer == 2){$rc1 = 2; $rc2 = 2;}
        					if($randomizer == 3){$rc1 = 1; $rc2 = 2;}
        					$r = rand;
        					if ($r < .1) {
        						$c += $rc1;
        					} elsif ($r > .9) {
        						$c += $rc2;
        					}
        					# End of randomizer
        				}
        				$c = chr $c;
        				$img .= $c;
        			}
        		}
        	}
        Ответить
    • зачетный кусочек.
      прекрасная идея изнасилованного системным программированием разума.
      Ответить
    • >>>
      $ci{'$'} = qq~
      .......
      ...X...
      ..XXXX.
      .X.X...
      ..XXX..
      ...X.X.
      .XXXX..
      ...X...
      .......
      .......
      ~;
      
      // Дальше идет вся таблица ASCII


      Мне бы такие нервы.
      Ответить
    • скажите, где платят за поиск плохих программ на перл?
      хочу такую работу)
      Ответить
      • Да какая же это работа, это так, на пару минут развлечения.
        Качаем любой движок на перле, открываем код и копируем сюда. Вот так я это делал :)
        Ответить
        • Надеюсь, что когда перл умрёт, не выдержав такого позора, Вы перейдёте на христианство.
          Ответить
          • Arigato - орудие позорного уничтожения... :)
            Ответить
          • интересно, кто первей выдохнется -- перл или Аригато? Делайте ваши ставки, господа...
            Ответить
            • А что, в ветку Perl говнокоды добавлять запрещено?
              Ответить
    • http://www.fossil-scm.org/fossil/artifact/4fd641c262b7cd037de036892c7d56b76905b1a6
      2010, C
      Ответить

    Добавить комментарий