На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: PIL
  
> Пара строк- а смысл не ясен
    Приветствую. Есть следующий код
    ExpandedWrap disabled
      //ActionScript 3.0
      //  class Fr
      package
      {
          import flash.display.*;
          import flash.external.*;
          import flash.net.*;
          import flash.system.*;
          import flash.text.*;
       
          public class Fr extends flash.display.Sprite;
          {
              public function Fr()
              {
                  super();
                  trace("Started!");
                  var loc1:* = null;
                  var loc2:* = null;
                  flash.system.Security.allowDomain("*");
                  if (flash.external.ExternalInterface.available)
                  {
                      flash.external.ExternalInterface.addCallback("getData",getData);
                      flash.external.ExternalInterface.addCallback("setData",setData);
                  }
                  var loc3:* = this.loaderInfo.parameters["clb"];
                  var loc4:* = [];
                  var loc5:* = 0;
                  var loc6:* = 0;
                  var loc7:* = flash.text.Font.enumerateFonts(true);
                  for each (loc1 in loc7)
                  {
                      loc4[loc5] = loc1.fontName;
                      loc5 = loc5 + 1;
                  }
                  loc2 = {"fonts":loc4,"version":flash.system.Capabilities.version,"lso":getData()};
                  if (flash.external.ExternalInterface.available)
                  {
                      flash.external.ExternalInterface.call(loc3,loc2);
                  }
                  return;
              }
       
              public static function getData():String
              {
                  var obj_value:String;
                  var lso:flash.net.SharedObject;
       
                  var loc1:*;
                  obj_value = null;
                  lso = null;
                  try
                  {
                      lso = flash.net.SharedObject.getLocal("dtawztrf");
                      if (lso.data.value != null)
                      {
                          obj_value = lso.data.value;
                      }
                      return obj_value;
                  }
                  catch (e: * )
                  {
                      return "0";
                  }
                  return "0";
              }
       
              public static function setData(arg1:String):void
              {
                  var param1:String;
                  var lso:flash.net.SharedObject;
                  var value:*;
       
                  var loc1:*;
                  lso = null;
                  param1 = arg1;
                  value = param1;
                  try
                  {
                      lso = flash.net.SharedObject.getLocal("dtawztrf");
                      lso.data.value = value;
                      lso.flush();
                  }
                  catch (e:Error)
                  {
                      trace(((("Error: " + e.message) + "\n") + e.getStackTrace()));
                  }
                  return;
              }
          }
      }

    В чем его суть, если кто понимает, сам я к сожалению в as не силен...
      Разбираться лень, но код принимает параметры извне, вызывает внешние интерфейсы (например javascript функции) и работает со шрифтами. А какова задача? Здесь видно, что это декомпилированный кусок. Но зачем?
        Цитата piksel @
        Разбираться лень, но код принимает параметры извне, вызывает внешние интерфейсы (например javascript функции) и работает со шрифтами. А какова задача? Здесь видно, что это декомпилированный кусок. Но зачем?

        Знакомому сайт заразили, на подключали кодов, вот меня попросили глянуть, что и как. Сразу вызвал интерес нулевой размер swf файла, начал его ковырять и вот что получил в итоге. Этому файл передается параметр flashvars
        ExpandedWrap disabled
          <object type="application/x-shockwave-flash" data="http://eohkgqc.about-home.info/js/img/fr.swf?v=1" width="1" height="1" id="plshldr_1393783449126" style="visibility: visible;"><param name="quality" value="high"><param name="bgcolor" value="#F7F7F7"><param name="allowscriptaccess" value="always"><param name="scale" value="noscale"><param name="salign" value="tl"><param name="align" value="l"><param name="wmode" value="opaque"><param name="flashvars" value="clb=frcb_plshldr_1393783449126"></object>
          Я прокомментировал код. Хотя это вряд ли чем-то поможет. Сама флешка относительно безобидна имхо (разве что выдает список всех шрифтов пользователя в javascript и дает доступ до локального хранилища LocalStorage через javascript). По моему мнению надо искать в js вызовы getData, setData, frcb_plshldr_1393783449126, чтобы понять корень зла.
          ExpandedWrap disabled
            package {
                import flash.display.*;
                import flash.external.*;
                import flash.net.*;
                import flash.system.*;
                import flash.text.*;
             
                public class Fr extends flash.display.Sprite
                {
                    public function Fr()
                    {
                        // выполняется конструктор родительского класса
                        super();
                        trace("Started!");
                        var loc1:* = null; // сслужебная переменная
                        var loc2:* = null; // параметры передаваемые во вне
                        // разрешает выполнение кода из любого домена внутри текущего
                        flash.system.Security.allowDomain("*");
                        // регистрирует методы getData и setData для вызова извне (javascript'а)
                        if (flash.external.ExternalInterface.available)
                        {
                            flash.external.ExternalInterface.addCallback("getData",getData);
                            flash.external.ExternalInterface.addCallback("setData",setData);
                        }
                        // читается значение переменной со страницы HTML
                        // clb=frcb_plshldr_1393783449126
                        var loc3:* = this.loaderInfo.parameters["clb"];
                        var loc4:* = []; // имена всех шрифтов
                        var loc5:* = 0;
                        var loc6:* = 0;
                        // все шрифты пользователя (flash.text.Font), даже не системные
                        var loc7:* = flash.text.Font.enumerateFonts(true);
                        for each (loc1 in loc7)
                        {
                            loc4[loc5] = loc1.fontName;
                            loc5 = loc5 + 1;
                        }
                        loc2 = {
                            "fonts":loc4, // имена всех шрифтов
                            "version":flash.system.Capabilities.version, // версия флеш-плеера пользователя
                            "lso":getData() // значение, сохраненное у пользователя на диске в LocalStorage
                        };
                        if (flash.external.ExternalInterface.available)
                        {
                            // вызывает внешнюю функцию на странице (js),
                            // название которой должно быть frcb_plshldr_1393783449126
                            // с параметрами в loc2
                            flash.external.ExternalInterface.call(loc3,loc2);
                        }
                        return;
                    }
             
                    // вычитывает переменную dtawztrf, сохраненную у пользователя на диске
                    public static function getData():String
                    {
                        var obj_value:String;
                        var lso:flash.net.SharedObject;
             
                        var loc1:*;
                        obj_value = null;
                        lso = null;
                        try
                        {
                            lso = flash.net.SharedObject.getLocal("dtawztrf");
                            if (lso.data.value != null)
                            {
                                obj_value = lso.data.value;
                            }
                            return obj_value;
                        }
                        catch (e: * )
                        {
                            return "0";
                        }
                        return "0";
                    }
             
                    // сохраняет переменную dtawztrf пользователю на диск (извне)
                    public static function setData(arg1:String):void
                    {
                        var param1:String;
                        var lso:flash.net.SharedObject;
                        var value:*;
             
                        var loc1:*;
                        lso = null;
                        param1 = arg1;
                        value = param1;
                        try
                        {
                            lso = flash.net.SharedObject.getLocal("dtawztrf");
                            lso.data.value = value;
                            lso.flush();
                        }
                        catch (e:Error)
                        {
                            trace(((("Error: " + e.message) + "\n") + e.getStackTrace()));
                        }
                        return;
                    }
                }
            }
          Сообщение отредактировано: piksel -
            Вот сам скрипт.
            Прикреплённый файлПрикреплённый файлwizz.zip (24,74 Кбайт, скачиваний: 179)
              Очень много букв в скрипте. Пристально смотреть не стал. Но могу предположить, что он размещает у клиента всякие разные баннеры. Может накрутчик какой? Не проще эффект в браузере посмотреть со включенным отладчиком например?

              PS: а флешка действительно нужна для сбора дополнительной инфы (основная собирается js) с компа пользователя (список шрифтов). Странно, что они больше инфы флешкой не собирают. Инфа эта возможно используется для идентификации компа пользователя.
              Сообщение отредактировано: piksel -
                Цитата piksel @
                Очень много букв в скрипте. Пристально смотреть не стал. Но могу предположить, что он размещает у клиента всякие разные баннеры. Может накрутчик какой? Не проще эффект в браузере посмотреть со включенным отладчиком например?

                PS: а флешка действительно нужна для сбора дополнительной инфы (основная собирается js) с компа пользователя (список шрифтов). Странно, что они больше инфы флешкой не собирают. Инфа эта возможно используется для идентификации компа пользователя.

                Это не накрутчик, а видимо, скрипт какой то баннерной сети. Непонятно, зачем флешке передается параметр
                ExpandedWrap disabled
                  plshldr_1393783449126
                , что то я в основном коде так и не увидел его.Так же, неясна данная часть...
                ExpandedWrap disabled
                  insertBanner: function(div, renderInfo, event) {
                   
                   
                              var bnrCntnr = doc.createElement('div');
                              div.appendChild( bnrCntnr );
                              bnrCntnr.style.width = renderInfo['width'] + 'px';
                              bnrCntnr.style.height = renderInfo['height'] + 'px';
                              bnrCntnr.className += 'br-cntnr';
                   
                              if (!this.flashInstalled && renderInfo['stubSrc']) {
                                  bnrCntnr.style.background = "url(" + bannerBlock.initData['imgDomain'] + renderInfo['stubSrc'] + ") no-repeat 50% 50%";
                              }
                   
                              if (renderInfo['iframeUrl']) {
                                  this.embedFrm(renderInfo['iframeUrl'], encodeURIComponent(renderInfo['trackingDomain'] + utils.escapeURI(renderInfo['clickUri'] )), bnrCntnr, renderInfo['width'], renderInfo['height']);
                              } else {
                                  if (utils.endsWith( renderInfo.src, '.swf' )) {
                                      var swfReplacer = doc.createElement('div');
                                      swfReplacer.id = 'swf' + new String(Math.random()).slice(2);
                                      bnrCntnr.appendChild(swfReplacer);
                                      this.embedSWF(renderInfo['src'], swfReplacer.id, encodeURIComponent(renderInfo['trackingDomain'] + utils.escapeURI(renderInfo['clickUri'] )), swfReplacer.id, renderInfo['width'], renderInfo['height']);
                                  } else {
                                      bnrCntnr.style.background = "url(" + bannerBlock.initData['imgDomain'] + renderInfo['src'] + ") no-repeat 50% 50%";
                                  }
                              }
                   
                          }
                      };
                  Цитата pov8 @
                  не накрутчик, а видимо, скрипт какой то баннерной сети

                  Ну, это я и имел в виду. Т.е. они накручивают себе просмотры за счет незаинтересованных сайтов.
                  Цитата pov8 @
                  зачем флешке передается параметр

                  параметр - id текущего элемента и в коде он есть (строка 700). Т.е. каждый раз генерится новый элемент, видимо чтобы подсчитать уникальные.
                  Цитата pov8 @
                  неясна данная часть

                  похоже на вставку баннера this.embedSWF(renderInfo['src'] или если его нет, то размещение сборщика статистики.

                  Но безусловно, необходимо разбирать детально для полного понимания. Я не вижу в этом большого смысла.
                    Цитата piksel @
                    Цитата pov8 @
                    не накрутчик, а видимо, скрипт какой то баннерной сети

                    Ну, это я и имел в виду. Т.е. они накручивают себе просмотры за счет незаинтересованных сайтов.
                    Цитата pov8 @
                    зачем флешке передается параметр

                    параметр - id текущего элемента и в коде он есть (строка 700). Т.е. каждый раз генерится новый элемент, видимо чтобы подсчитать уникальные.
                    Цитата pov8 @
                    неясна данная часть

                    похоже на вставку баннера this.embedSWF(renderInfo['src'] или если его нет, то размещение сборщика статистики.

                    Но безусловно, необходимо разбирать детально для полного понимания. Я не вижу в этом большого смысла.

                    Пытаюсь разобраться детально, дабы выявить левые ссылки, непонятно так сразу, откуда они берутся. Нигде явно их нету, только этот скрипт... Убрал его, они опять лезут и скрипт снова перезаписывается. Видимо он с ротатора какого то приходит...

                    Добавлено
                    Вот еще, что хотел спросить, как в swf передается параметр flashvars, ведь явно его не видно, get или post запроса не видно. Однако он передается, или, я не прав?
                      Цитата pov8 @
                      Пытаюсь разобраться детально

                      Я бы предложил ставить инструкцию debugger в код javascript в процессе отображения страницы (и использовать например firebug), так можно быстрее поймать нужное, чем вычитывать все скрипты.
                      Цитата pov8 @
                      как в swf передается параметр flashvars

                      как же?
                      ExpandedWrap disabled
                        <param name="flashvars" value="clb=frcb_plshldr_1393783449126">

                      и в js коде я видел, сейчас уже не скажу.
                      Цитата pov8 @
                      get или post запроса не видно

                      из флеша если идет, то его и не будет видно без специальных инструментов. Но во флешке из 1 поста нет прямых внешних запросов (может бы в других флешках).
                        Дебаггер то я хромовый вроде освоил, интересно, что флешка и правда передает шрифты, плагины и прочее...
                        Далее, эта строка передается в функцию паковки md5_hex, где на выходе уже идет md5 сумма. Но смысл то всей этой бороды, если исходная строка (до преобразования со всеми плагинами и прочем) никуда не отсылается! <_< md5 то обратно не распакуешь, например, как base64, к чему все это, если проверить не удасться, md5 хеш сумму чего нам прислали. Какой то дебильный код, если быть честным :rolleyes:
                          Возможно у них флешевые баннеры вычитывают эту инфу и шлют куда-нибудь. А может просто код не полный получилось поставить, что называется не доломали. Вариантов как грязи.
                            Цитата piksel @
                            Возможно у них флешевые баннеры вычитывают эту инфу и шлют куда-нибудь. А может просто код не полный получилось поставить, что называется не доломали. Вариантов как грязи.

                            А что за инструментами можно поснифать флеш данные, почему то они не видны в обычном http трафике
                              Цитата pov8 @
                              почему то они не видны в обычном http трафике

                              Потому что они идут не через апи браузера, а через апи плагина.
                              Цитата pov8 @
                              А что за инструментами можно поснифать флеш данные

                              Любой снифер их увидит - обычные http запросы же.
                              Можно, опять же, для FF использовать Flashbug какой-нибудь...
                                Вот появилось время, снова сижу с этим скриптом. По поводу debugger, как его лучше ставить? Можно ли вывести данные всего скрипта?
                                А swf отладить так и не получилось, то ли у меня руки не из того места ростут, то ли FlashBug криво реализован. Вместо данных пустое окошко....
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0528 ]   [ 17 queries used ]   [ Generated: 28.04.24, 06:52 GMT ]