.as в .php

Тема в разделе "Как сделать...", создана пользователем alexz15, 12 мар 2009.

  1. alexz15

    alexz15

    Регистр.:
    3 окт 2008
    Сообщения:
    394
    Симпатии:
    190
    Вот такой код получается:
    Код:
    6N9V0ioRnjRbtCVHUamb35WHkaF83dhhtHnetClWySVH2xTHOHnNygnHvC9cnjRbtjY8n5FzGdsHOH980aFZnHVH0SnenIk7kdwLnHVHU5Gj0aWL3Hnen5k5k5k5kHn8n5yBGi982d4ZkSnetSVHUamb35Wj0aWL3Hnen5Ulkjh5OCn8nIyj35w405yL0dJNnjRHt1t1t1t1nHVHUamb35Wh0iuRUSnetCllvC9V0ioz0x91njRWvC9b2fAHOjE8nIwV3dJZnjRHG54ZkxsHvC9RnjR1tjY8n5yL0IoN0aW1njRH3dWh6SWHUxy=vdW705Y8Gd4MkwJV0dFmviV8Gd4MkwJh0dV8G5J8Gxz4vikL0d9h35W705Y8kIw80CW1GdFNGCWV35Jjkxmbvd9zk5k43HWNGxmX0d4BkSWNGxmXG5J8Gxz4nHVH0dFBkNnenI9znHVH3dWMUf9I2xlHOjE8nIu8Gi3HOjYVXTrr
    
    Помогите перевести скрипт.as в php:
    Код:
    //class Base64
    package com.util 
    {
        import com.uppod.*;
        import flash.utils.*;
        
        public class Base64 extends Object
        {
            public function Base64()
            {
                super();
                throw new Error("Base64 class is static container only");
            }
    
            public static function enc_replace_ab(arg1:String, arg2:String, arg3:String):String
            {
                var loc4:*;
                var loc5:*;
    
                loc4 = new RegExp(arg1, "g");
                loc5 = new RegExp(arg2, "g");
                arg3 = arg3.replace(loc4, "___");
                arg3 = arg3.replace(loc5, arg1);
                arg3 = arg3.replace(new RegExp("___", "g"), arg2);
                return arg3;
            }
    
            public static function encode(arg1:String):String
            {
                var loc2:*;
                var loc3:*;
    
                loc2 = new ByteArray();
                loc2.writeUTFBytes(arg1);
                loc3 = encodeByteArray(loc2);
                loc3 = enc_replace(loc3, "e");
                return loc3;
            }
    
            public static function enc_replace(arg1:String, arg2:String, arg3:Boolean=false):String
            {
                var loc4:*;
                var loc5:*;
                var loc6:*;
                var loc7:*;
                var loc8:*;
                var loc9:*;
    
                loc7 = null;
                loc8 = null;
                loc4 = new ClientGet();
                loc5 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "W", "G", "X", "M", "H", "R", "U", "Z", "I", "D", "=", "N", "Q", "V", "B", "L"];
                loc6 = ["b", "z", "a", "c", "l", "m", "e", "p", "s", "J", "x", "d", "f", "t", "i", "o", "Y", "k", "n", "g", "r", "y", "T", "w", "u", "v"];
                if (!(loc4.Client == null) && !arg3)
                {
                    if (loc4.Client.codec_a != null)
                    {
                        loc5 = loc4.Client.codec_a;
                        loc6 = loc4.Client.codec_b;
                    }
                }
                if (arg2 == "e")
                {
                    loc7 = loc5;
                    loc8 = loc6;
                }
                if (arg2 == "d")
                {
                    loc7 = loc6;
                    loc8 = loc5;
                }
                loc9 = 0;
                while (loc9 < loc7.length) 
                {
                    arg1 = enc_replace_ab(loc7[loc9], loc8[loc9], arg1);
                    ++loc9;
                }
                return arg1;
            }
    
            public static function encodeByteArray(arg1:flash.utils.ByteArray):String
            {
                var loc2:*;
                var loc3:*;
                var loc4:*;
                var loc5:*;
                var loc6:*;
                var loc7:*;
    
                loc3 = null;
                loc5 = 0;
                loc6 = 0;
                loc7 = 0;
                loc2 = "";
                loc4 = new Array(4);
                arg1.position = 0;
                while (arg1.bytesAvailable > 0) 
                {
                    loc3 = new Array();
                    loc5 = 0;
                    while (loc5 < 3 && arg1.bytesAvailable > 0) 
                    {
                        loc3[loc5] = arg1.readUnsignedByte();
                        loc5 = (loc5 + 1);
                    }
                    loc4[0] = (loc3[0] & 252) >> 2;
                    loc4[1] = (loc3[0] & 3) << 4 | loc3[1] >> 4;
                    loc4[2] = (loc3[1] & 15) << 2 | loc3[2] >> 6;
                    loc4[3] = loc3[2] & 63;
                    loc6 = loc3.length;
                    while (loc6 < 3) 
                    {
                        loc4[(loc6 + 1)] = 64;
                        loc6 = (loc6 + 1);
                    }
                    loc7 = 0;
                    while (loc7 < loc4.length) 
                    {
                        loc2 = loc2 + BASE64_CHARS.charAt(loc4[loc7]);
                        loc7 = (loc7 + 1);
                    }
                }
                return loc2;
            }
    
            public static function decode(arg1:String, arg2:Boolean=false):String
            {
                var loc3:*;
    
                arg1 = enc_replace(arg1, "d", arg2);
                loc3 = decodeToByteArray(arg1);
                return loc3.readUTFBytes(loc3.length);
            }
    
            public static function decodeToByteArray(arg1:String):flash.utils.ByteArray
            {
                var loc2:*;
                var loc3:*;
                var loc4:*;
                var loc5:*;
                var loc6:*;
                var loc7:*;
    
                loc6 = 0;
                loc7 = 0;
                loc2 = new ByteArray();
                loc3 = new Array(4);
                loc4 = new Array(3);
                loc5 = 0;
                while (loc5 < arg1.length) 
                {
                    loc6 = 0;
                    while (loc6 < 4 && loc5 + loc6 < arg1.length) 
                    {
                        loc3[loc6] = BASE64_CHARS.indexOf(arg1.charAt(loc5 + loc6));
                        loc6 = (loc6 + 1);
                    }
                    loc4[0] = (loc3[0] << 2) + ((loc3[1] & 48) >> 4);
                    loc4[1] = ((loc3[1] & 15) << 4) + ((loc3[2] & 60) >> 2);
                    loc4[2] = ((loc3[2] & 3) << 6) + loc3[3];
                    loc7 = 0;
                    while (loc7 < loc4.length) 
                    {
                        if (loc3[(loc7 + 1)] == 64)
                        {
                            break;
                        }
                        loc2.writeByte(loc4[loc7]);
                        loc7 = (loc7 + 1);
                    }
                    loc5 = loc5 + 4;
                }
                loc2.position = 0;
                return loc2;
            }
    
            public static const version:String="1.0.0";
    
            private static const BASE64_CHARS:String="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
        }
    }
    
    мне нужно декодировать первый код, и алгоритм декодирования.
     
  2. jik

    jik

    Регистр.:
    11 мар 2009
    Сообщения:
    243
    Симпатии:
    133
    пробовал так?:

    Код:
    <?php
      $s = "6N9V0ioRnjRbtCVHUamb35WHkaF83dhhtHnetClWySVH2xTHOHnNygnHvC9cnjRbtjY8n5FzGdsHOH980aFZnHVH0SnenIk7kdwLnHVHU5Gj0aWL3Hnen5k5k5k5kHn8n5yBGi982d4ZkSnetSVHUamb35Wj0aWL3Hnen5Ulkjh5OCn8nIyj35w405yL0dJNnjRHt1t1t1t1nHVHUamb35Wh0iuRUSnetCllvC9V0ioz0x91njRWvC9b2fAHOjE8nIwV3dJZnjRHG54ZkxsHvC9RnjR1tjY8n5yL0IoN0aW1njRH3dWh6SWHUxy=vdW705Y8Gd4MkwJV0dFmviV8Gd4MkwJh0dV8G5J8Gxz4vikL0d9h35W705Y8kIw80CW1GdFNGCWV35Jjkxmbvd9zk5k43HWNGxmX0d4BkSWNGxmXG5J8Gxz4nHVH0dFBkNnenI9znHVH3dWMUf9I2xlHOjE8nIu8Gi3HOjYVXTrr";
    
      $bindata = base64_decode($s);
      file_put_contents('data.bin', $bindata); // php 5
    ?>
     
  3. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
    Как я понял- просто нужно закодировать данные этим алгоритмом. В php base64 встроен (в отличае от флэша) и вызавается http://www.phpclub.net/manrus/f/base64-encode.html
     
  4. alexz15

    alexz15

    Регистр.:
    3 окт 2008
    Сообщения:
    394
    Симпатии:
    190
    Пробовал. А что с этим файлом делать (data.bin), как его перевести в читаемый вид?
    Там должно получится что-то типа разных параметров (playlist, volume и т.д.)
     
  5. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
    Для начала точно сформулировать задачу. Лично я ничего не понял, кроме как "раскодировать и закодировать и что делать".
     
    Extalionez нравится это.
  6. jik

    jik

    Регистр.:
    11 мар 2009
    Сообщения:
    243
    Симпатии:
    133
    Закодировано может быть все, что угодно. Откуда взялась строка, которую надо раскодировать? Так кодируют, например, картинки при загрузке их на сервер, а на сервере декодируют и записывают в файл как двоичные данные. Но по формату на картинку не похоже. Может быть, там аудиопоток.
     
  7. alexz15

    alexz15

    Регистр.:
    3 окт 2008
    Сообщения:
    394
    Симпатии:
    190
    задача:
    есть плеер uppod (uppod.ru - на сайте можно завести свой аккуант и оформлять плеер), у плеера есть шифрованный файл стилей (первый код), который выносится в отдельный файл.txt.
    я этот плеер декомпилировал и знаю параметры стилей, могу его оформить как только можно, но не могу узнать как эти параметры нужно записывать в файл стилей.
    Вот мне и нужно расшифровать первый код, что бы было видно как оформлен файл. И по возможности алгоритм этого кодирования на PHP.
    Надеюсь, понятно объяснил.
     
  8. jik

    jik

    Регистр.:
    11 мар 2009
    Сообщения:
    243
    Симпатии:
    133
    попытка раскодирования на php:

    Код:
    function decode_char($c, $a1, $a2)
    {
      $result = $c;
      for($j = 0; $j < count($a1); $j++) {
        if ($c == $a1[$j][0]) {
          $result = $a2[$j][0];
          break;
        }
        if ($c == $a2[$j][0]) {
          $result = $a1[$j][0];
          break;
        }
      }
      return $result;
    }
    
    function decode_str($s)
    {
      $a1 = array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "W", "G", "X", "M", "H", "R", "U", "Z", "I", "D", "=", "N", "Q", "V", "B", "L");
      $a2 = array("b", "z", "a", "c", "l", "m", "e", "p", "s", "J", "x", "d", "f", "t", "i", "o", "Y", "k", "n", "g", "r", "y", "T", "w", "u", "v");
    
      $result = '';
      for($i = 0; $i < strlen($s); $i++) {
        $result .= decode_char($s[$i], $a1, $a2);
      }
      $result = base64_decode($result);
      return $result;
    }
    
    
    $s = "6N9V0ioRnjRbtCVHUamb35WHkaF83dhhtHnetClWySVH2xTHOHnNygnHvC9cnjRbtjY8n5FzGdsHOH980aFZnHVH0SnenIk7kdwLnHVHU5Gj0aWL3Hnen5k5k5k5kHn8n5yBGi982d4ZkSnetSVHUamb35Wj0aWL3Hnen5Ulkjh5OCn8nIyj35w405yL0dJNnjRHt1t1t1t1nHVHUamb35Wh0iuRUSnetCllvC9V0ioz0x91njRWvC9b2fAHOjE8nIwV3dJZnjRHG54ZkxsHvC9RnjR1tjY8n5yL0IoN0aW1njRH3dWh6SWHUxy=vdW705Y8Gd4MkwJV0dFmviV8Gd4MkwJh0dV8G5J8Gxz4vikL0d9h35W705Y8kIw80CW1GdFNGCWV35Jjkxmbvd9zk5k43HWNGxmX0d4BkSWNGxmXG5J8Gxz4nHVH0dFBkNnenI9znHVH3dWMUf9I2xlHOjE8nIu8Gi3HOjYVXTrr";
    $res = decode_str($s);
    echo "res=$res";
    Результат:

    Код:
    {"plth":40,"cntrlbgalpha2":0.15,"id":"242","w":425,"auto":"load","m":"video","bgcolor":"ffffff","cntrlhide":1,"cntrlcolor":"f8f8f8","screencolor":"333333","cntrlalpha":0.8,"pltumbs":1,"tip":1,"uppod":"video","h":325,"controls":"play,back,line,time_play,|,time_all,volume,volbarline,full,start,procent,buffer,run_line,run_volume","lang":"ru","plmargin":1,"pltw":50}
    похоже на то, что хотелось?
     
    Karas, kupuxa, softic и 8 другим нравится это.
  9. jred

    jred

    Регистр.:
    16 сен 2008
    Сообщения:
    383
    Симпатии:
    39
    Спасибо, а закодировать как? =)
     
  10. jik

    jik

    Регистр.:
    11 мар 2009
    Сообщения:
    243
    Симпатии:
    133
    Функции кодирования/раскодирования

    Код:
    function decode_char($c)
    {
      $a1 = array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "W", "G", "X", "M", "H", "R", "U", "Z", "I", "D", "=", "N", "Q", "V", "B", "L");
      $a2 = array("b", "z", "a", "c", "l", "m", "e", "p", "s", "J", "x", "d", "f", "t", "i", "o", "Y", "k", "n", "g", "r", "y", "T", "w", "u", "v");
      $result = $c;
      for($j = 0; $j < count($a1); $j++) {
        if ($c == $a1[$j][0]) {
          $result = $a2[$j][0];
          break;
        }
        if ($c == $a2[$j][0]) {
          $result = $a1[$j][0];
          break;
        }
      }
      return $result;
    }
    
    function decode_str($s)
    {
    
      $result = '';
      for($i = 0; $i < strlen($s); $i++) {
        $result .= decode_char($s[$i]);
      }
      $result = base64_decode($result);
      return $result;
    }
    
    function encode_str($s)
    {
      $s = base64_encode($s);
      $result = '';
      for($i = 0; $i < strlen($s); $i++) {
        $result .= decode_char($s[$i]);
      }
      return $result;
    }
    Пример использования:

    Код:
    $s = "6N9V0ioRnjRbtCVHUamb35WHkaF83dhhtHnetClWySVH2xTHOHnNygnHvC9cnjRbtjY8n5FzGdsHOH980aFZnHVH0SnenIk7kdwLnHVHU5Gj0aWL3Hnen5k5k5k5kHn8n5yBGi982d4ZkSnetSVHUamb35Wj0aWL3Hnen5Ulkjh5OCn8nIyj35w405yL0dJNnjRHt1t1t1t1nHVHUamb35Wh0iuRUSnetCllvC9V0ioz0x91njRWvC9b2fAHOjE8nIwV3dJZnjRHG54ZkxsHvC9RnjR1tjY8n5yL0IoN0aW1njRH3dWh6SWHUxy=vdW705Y8Gd4MkwJV0dFmviV8Gd4MkwJh0dV8G5J8Gxz4vikL0d9h35W705Y8kIw80CW1GdFNGCWV35Jjkxmbvd9zk5k43HWNGxmX0d4BkSWNGxmXG5J8Gxz4nHVH0dFBkNnenI9znHVH3dWMUf9I2xlHOjE8nIu8Gi3HOjYVXTrr";
    
    $decoded_str = decode_str($s);
    echo "$decoded_str=$$decoded_str<br>";
    
    $encoded_str = encode_str($decoded_str);
    echo "encoded_str2=$encoded_str";
     
    rebux, killserver, Андрей Шпак и 17 другим нравится это.