За последние 24 часа нас посетили 24864 программиста и 1701 робот. Сейчас ищут 868 программистов ...

Из ActionScript в PHP

Тема в разделе "Прочее", создана пользователем Devzirom, 30 дек 2010.

  1. Devzirom

    Devzirom Активный пользователь

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    Есть исходники ActionScript'a.

    в Graffiti.as есть такой код:
    [js]
    private function onSend(param1)
    {
    var ba:ByteArray;
    var e:* = param1;
    sendProgress.visible = true;
    var bd:* = drawingArea.bitmapData();
    ba = PNGEncoder.encode(bd);
    ba.position = 0;
    var imageBytes:* = ba;
    var boundary:String;
    var header1:* = "--" + boundary + "\r\n" + "Content-Disposition: form-data; name=\"Signature\"\r\n\r\n" + "";
    var header2:* = "\r\n--" + boundary + "\r\n" + "Content-Disposition: form-data; name=\"Filedata\"; filename=\"graffiti.png\"\r\n" + "Content-Type: image/png\r\n\r\n" + "";
    var header3:* = "--" + boundary + "\r\n" + "Content-Disposition: form-data; name=\"Upload\"\r\n\r\n" + "Submit Query\r\n" + "--" + boundary + "--";
    var headerBytes1:* = new ByteArray();
    headerBytes1.writeMultiByte(header1, "ascii");
    var headerBytes2:* = new ByteArray();
    headerBytes2.writeMultiByte(header2, "ascii");
    var headerBytes3:* = new ByteArray();
    headerBytes3.writeMultiByte(header3, "ascii");
    var imageCopyForSignature:* = new ByteArray();
    imageCopyForSignature.writeBytes(imageBytes, 0, imageBytes.length);
    var signatureBytes:* = new ByteArray();
    var dataString:* = Base64.encodeByteArray(imageCopyForSignature).substr(0, 1024);
    var signatureString:* = MD52.encrypt(dataString);
    signatureBytes.writeMultiByte(signatureString, "ascii");
    var sendBytes:* = new ByteArray();
    sendBytes.writeBytes(headerBytes1, 0, headerBytes1.length);
    sendBytes.writeBytes(signatureBytes, 0, signatureBytes.length);
    sendBytes.writeBytes(headerBytes2, 0, headerBytes2.length);
    sendBytes.writeBytes(imageBytes, 0, imageBytes.length);
    sendBytes.writeBytes(headerBytes3, 0, headerBytes3.length);
    var request:* = new URLRequest(postTo);
    request.data = sendBytes;
    request.method = URLRequestMethod.POST;
    request.contentType = "multipart/form-data; boundary=" + boundary;
    var loader:* = new URLLoader();
    loader.addEventListener(Event.COMPLETE, uploadCompleted);
    loader.addEventListener(IOErrorEvent.IO_ERROR, uploadError);
    try
    {
    loader.load(request);
    }
    catch (error:Error)
    {
    sendProgress.visible = false;
    this.uploadError(null);
    }
    return;
    }// end function
    [/js]

    Меня интересует только генерация значения переменной signatureString
    Я думаю что:
    переменная ba - это строка PNG-картинка
    переменная dataString - это кусок строки, от зашифрованной в base64, картинки
    переменная signatureString - это md5-хеш переменной dataString

    Собственно мне нужно cгенерировать значение signatureString средствами php. Правда, я столкнулся с ActionScript в первый раз и пока, не совсем понимаю, что из себя представляют байт-массивы (ByteArray). Так-же не известно, насколько идентичны функции, представленные в этих исходниках, функциям PHP( md5 и base64_encode ).

    Исходники: http://www.devzirom.ru/vk/Graffiti_new.zip

    Прошу помощи, дорогие форумчане
     
  2. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    я не понял, что ты хочешь сделать? тоже самое только на php?
     
  3. Devzirom

    Devzirom Активный пользователь

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    Нет. Только маленький кусочек! Мне только хеш картинки нужен.

    Вот эта часть интересует:
    Код (Text):
    1.  
    2. var dataString:* = Base64.encodeByteArray(imageCopyForSignature).substr(0, 1024);
    3. var signatureString:* = MD52.encrypt(dataString);
     
  4. Devzirom

    Devzirom Активный пользователь

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    Пробовал так:
    <?php
    $file = file_get_contents('0.png');

    $b64 = base64_encode($file);
    $str = substr($b64, 0, 1024);

    echo md5($str);
    ?>
    но хеш другой получается
     
  5. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Devzirom
    По логике:
    Вызывается объект base64, ему передаётся массив байт (в РНР можно использовать file_get_contents), затем из всей строки получаются 1024 символов и хешируются в MD5

    Посмотри то, что было ДО хеша
     
  6. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
     
  7. Devzirom

    Devzirom Активный пользователь

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    Так и сделал =) Предполагаю, что там строка png картинки!

    Код (Text):
    1.  
    2. Content-Type: multipart/form-data; boundary=----555-666-777
    3. Content-Length: 1579 ----555-666-777
    4. Content-Disposition: form-data; name="Signature"
    5.  
    6. 44ddd659f8fcdae8c40222ba8aeecfb1
    7. ----555-666-777
    8. Content-Disposition: form-data; name="Filedata"; filename="graffiti.png" Content-Type: image/png
    9.  
    10. ...PNG
    11. .....
    12. .....
    13. ----555-666-777
    14. Content-Disposition: form-data; name="Upload"
    15.  
    16. Submit Query
    17. ----555-666-777
     
  8. Devzirom

    Devzirom Активный пользователь

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    Блин, это мне теперь алгоритм оттуда переписывать? Это вообще жопа. Хоть бы чуть-чуть знать AS...
     
  9. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
  10. Devzirom

    Devzirom Активный пользователь

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    Apple, неплохо, но

    <?php
    $file = iconv("windows-1251", "utf-8", file_get_contents('0.png')); // http://www.devzirom.ru/vk/0.png

    $b64 = base64_encode($file);
    $str = substr($b64, 0, 1024);

    echo md5($str); // 53e77da4a30495871fc278bf3a97fd92, Должно быть: 44ddd659f8fcdae8c40222ba8aeecfb1
    ?>

    Проверил base64 тут(вроде asp)
    http://www.opinionatedgeek.com/dotnet/t ... fault.aspx идентично php
     
  11. Devzirom

    Devzirom Активный пользователь

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    Мои труды были не напрасны! Я выебал эту суку!
     
  12. asik

    asik Активный пользователь

    С нами с:
    12 июл 2007
    Сообщения:
    211
    Симпатии:
    0
    Пардон, а кто она, эта сука?
     
  13. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    asik
    он видимо устроился переводчиком порно фильмов, не туда запостил
     
  14. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    asik
    Padaboo
    так каникулы же :D
     
  15. Devzirom

    Devzirom Активный пользователь

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь