[help]Action Script 3.0 - Капча

Discussion in 'PHP' started by Kandi, 20 Apr 2011.

  1. Kandi

    Kandi Member

    Joined:
    18 Nov 2009
    Messages:
    344
    Likes Received:
    17
    Reputations:
    0
    Ни разу не сталкивался с Action Script'om но тут пришлось)
    Собственно есть флешка в которой отображается капча, нужно выяснить URL на неё или методы её отображения, скачав флешку и декомпильнув порыскал по файлам нашёл метод:

    Code:
    private function each(arg1:flash.events.Event):void
            {
                var loc8:*=false;
                var loc9:*=true;
                if (!loc8) 
                {
                    this. & = loaderInfo.parameters;
                    if (loc9 || this) 
                    {
                        while.'(this. &);
                    }
                }
                var loc1:*=this. &["imgUrl"];
                var loc2:*=this. &["key"];
                var loc3:*=this. &["id"];
                var loc4:*=this. &["pref"];
                var loc5:*=this. &["backUrl"];
                var loc6:*=this. &["nick"];
                if (!(loc8 && this)) 
                {
                    if (loc1 != null) 
                    {
                        removeEventListener(flash.events.Event.ADDED_TO_STAGE, this.each);
                    }
                    else if (loc9) 
                    {
                        return;
                        if (!(loc8 && arg1)) 
                        {
                            removeEventListener(flash.events.Event.ADDED_TO_STAGE, this.each);
                        }
                    }
                }
                if (!loc8) 
                {
                    if (loc9 || loc2) 
                    {
                        if (loc8 && loc2) 
                        {
                        };
                    }
                }
                var loc7:*=new undefined.<#(
    #error('findrop') <#
                , "http://l2top.ru/" + loc1, loc2, loc3, loc4, loc5, loc6);
                if (!(loc8 && arg1)) 
                {
                    addChild(loc7);
                }
                return;
                return;
            }
    
    В исходном коде сайте имеется код(например):
    Code:
                        <script type='text/javascript'>
                            var flashvars = {
                                key: 'bd6b7090953eda54f95f2a0cfdcc8346',
                                imgUrl: 'cryptImg.php',
                                id: 17114,
                                pref: '0=Без+префикса',
                                nick: ''
                            };
    
                            swfobject.embedSWF('/StrongCaptcha.swf?12', 'dfn', '605', '360', '6.0.65.0', null, flashvars);
                        </script>
    
    Чувствую они довольно близко взаимосвязаны, прошу собственно знающих помочь разобрать данный метод и хотелось бы узнать, что делает данная строка:

    Code:
    var loc7:*=new undefined.<#(
    #error('findrop') <# , "http://l2top.ru/" + loc1, loc2, loc3, loc4, loc5, loc6);
    
    видно, что создается переменная которой присваивается начальный адрес, но почему она undefined и вообще, если кто то может показать, что в конечном итоге получиться т.к. не совсем понятно почему loc1 плюсуется, а остальные через запятую перечисляются.

    P.S. пока, что я не понял туда ли я рою вообще или нет. Вообщем жду помощи от добрых людей.
     
  2. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Kandi флешка обфусцирована и некоторые декомпиляторы не могут открыть все файлы из нее.

    Найденная вами строка создает объект класса <# который занимается получением картинки от скрипта, декодированием и выводом на экран.

    Капчи можете забрать с адреса http://l2top.ru/cryptImg.php?key=тут_ключ. Вот только оно вам слабо поможет, картинка зашифрована блочным шифром. Как раскодировать - копайте
     
    _________________________
    1 person likes this.
  3. Kandi

    Kandi Member

    Joined:
    18 Nov 2009
    Messages:
    344
    Likes Received:
    17
    Reputations:
    0
    Я думаю наврятли сама флешка рисует капчу, хотя все может быть, тогда такой вопрос много ли методов вывода картинки существует в флеш окне? хоть просто понять с какой стороны копать) как я вас понял то ссылка которую вы дали это и есть капча, но когда просто кей вбиваешь и делаешь гет то она рисует данную ссылку которую мы вводим, мне нужно найти ключ к ней!? может у вас есть советы? :rolleyes:
     
  4. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Kandi флешка не рисует капчу, она загружает некий файл по данной мной ссылке, расшифровывает и отображает внутри флешки.
    Она не рисует ссылку, которую мы вводим, это недостаток браузера, что он не говорит, что картинка битая.

    А чем вам это поможет?
     
    _________________________
  5. Kandi

    Kandi Member

    Joined:
    18 Nov 2009
    Messages:
    344
    Likes Received:
    17
    Reputations:
    0
    Да уж это мне не поможет ничем) вообщем то осталось всего ничего найти расшифровку в 5-10к строках кода) спасибо за помощь)
     
  6. Kandi

    Kandi Member

    Joined:
    18 Nov 2009
    Messages:
    344
    Likes Received:
    17
    Reputations:
    0
    Gifts, подскажите пож возникло пару вопросов)

    Code:
            private function `%(arg1:flash.events.MouseEvent):void
            {
                var loc12:*=false;
                var loc13:*=true;
                if (loc13) 
                {
                    if (!-&.enabled) 
                    {
                        if (loc13 || this) 
                        {
                            return;
                        }
                    }
                }
                else 
                {
                    return;
                }
                if (!loc13) 
                {
                };
                var loc1:*="http://l2top.ru/vote/" + this.try;
                if (loc13 || loc1) 
                {
                    if (loc13) 
                    {
                        if (this.<" != null) 
                        {
                            if (loc13) 
                            {
                                if (loc12 && this) 
                                {
                                };
                                loc1 = this.<";
                            }
                        }
                    }
                    else 
                    {
                        loc1 = this.<";
                    }
                }
                var loc2:*=new flash.net.URLRequest(loc1);
                var loc3:*;
                (loc3 = new flash.net.URLVariables())["key"] = this. use;
                if (loc13) 
                {
                    loc3["nick"] = for .text;
                    loc3["code"] = 1$.text;
                    if (!loc13) 
                    {
                    };
                }
                if (loc12 && this) 
                {
                    if (loc12 && this) 
                    {
                    };
                }
                else if (loc12 && arg1) 
                {
                    if (!loc12) 
                    {
                        if (loc12 && this) 
                        {
                        };
                    }
                }
                else if (!(loc12 && loc2)) 
                {
                    if (loc13 || loc2) 
                    {
                        if (!loc12) 
                        {
                            if (loc12 && this) 
                            {
                            };
                        }
                    }
                }
                var loc4:*="key=" + this. use;
                var loc5:*;
                (loc5 = new flash.utils.ByteArray()).writeMultiByte(loc4, "iso-8859-1");
                if (!loc13) 
                {
                };
                var loc6:*=this.3;
                var loc7:*=do . do.!$(loc6);
                var loc8:*=do . do.+!(this.3.substr(loc7, 16));
                loc5 = #&(loc8, loc5);
                if (loc12 && loc2) 
                {
                };
                var loc9:*=static(loc5);
                var loc10:*=&$(this.4);
                loc10 = #&(loc8, loc10);
                if (loc12) 
                {
                };
                var loc11:*=static(loc10);
                if (!loc12) 
                {
                    loc3["data"] = loc9;
                }
                loc3["data2"] = loc11;
                loc2.data = loc3;
                if (loc12) 
                {
                };
            }
    
    как я понял эта функция создает POST Запрос, так? имхо последний пост запрос именно такой:
    Отправляеться он как раз на ссылку http://l2top.ru/vote/+[IDServer]
    Code:
    data=71a81bca5f1ca6793ef5870e9f502b4ddca07dd2cf717e9da47c3ff0129ed7014d5299acbe5be36a0d5d3388f4ea666423ce65e64ed2eb3098b673154492ee0fd84315a87edb8a06     
    nick=Prophet
    code=5a6uh 
    pref=0
    key=4685a092b3dc86f4958e3817f0396c18
    data2=e751d499bbac08...................
    
    меня здесь интересует пару вещей, правильно я понимаю, что в этой строке мы перегоняем массив loc4 в кодировку iso-8859-1

    Code:
    (loc5 = new flash.utils.ByteArray()).writeMultiByte(loc4, "iso-8859-1");
    
    хотелось бы еще конечно разобраться, что твориться здесь и как это связываеться:
    Code:
                var loc6:*=this.3;
                var loc7:*=do . do.!$(loc6);
                var loc8:*=do . do.+!(this.3.substr(loc7, 16));
                loc5 = #&(loc8, loc5);
    
    loc6 присваивается какое то строковое значени как я понял. Дальше здесь- (this.3.substr(loc7, 16)) оно обрезается....ппц) тут без литра не разобраться, подскажите, что и как!? (что означает: !$, +! - я только, что осмыслил, это функции :) )
    подскажи что за do
     
    #6 Kandi, 21 Apr 2011
    Last edited: 21 Apr 2011