rendered paste body<?php require_once('./getid3/getid3.php'); function fakeUnicode($str) { $retstr = ''; for ($i = 0; $i < strlen($str); $i++) $retstr .= chr(0x00).substr($str, $i, 1); return $retstr; } function sizeHex($hexString, $len) { $size = dechex(strlen($hexString)+1); $size = (strlen($size)%2 != 0) ? '0'.$size : $size; for ($i = strlen($size); $i < $len*2; $i++) $size .= '0'; return '0x'.$size; } function writeHex($hexString, $filePointer) { $end = (substr($hexString, 0, 2) == '0x') ? 2 : 0; for ($i = strlen($hexString)-2; $i >= $end; $i-=2) fwrite($filePointer, chr(hexdec(substr($hexString, $i, 2)))); } function getHex($hexString) { $end = (substr($hexString, 0, 2) == '0x') ? 2 : 0; $retstr = ''; for ($i = strlen($hexString)-2; $i >= $end; $i-=2) $retstr .= chr(hexdec(substr($hexString, $i, 2))); return $retstr; } function getPlaySec($playString) { $spl = explode(':', $playString); $playSec = $spl[0]*60 + $spl[1]; for ($i = strlen($playSec); $i < 6; $i++) $playSec .= '0'; return $playSec; } $getID3 = new getID3; $filename = "Editors - Blood.mp3"; $id3info = $getID3->analyze($filename); $omaFile = fopen('test.oma', 'wb'); fwrite($omaFile, 'ea3'); // 'ea3' header writeHex('0x170000000003', $omaFile); // Unknown fwrite($omaFile, 'vTIT2'); // Starting title $string = fakeunicode($id3info['tags']['id3v1']['title'][0]); writeHex(sizeHex($string, 4), $omaFile); writeHex('0x020000', $omaFile); fwrite($omaFile, $string); fwrite($omaFile, 'TPE1'); $string = fakeunicode($id3info['tags']['id3v1']['artist'][0]); writeHex(sizeHex($string, 4), $omaFile); writeHex('0x020000', $omaFile); fwrite($omaFile, $string); fwrite($omaFile, 'TALB'); $string = fakeunicode($id3info['tags']['id3v1']['album'][0]); writeHex(sizeHex($string, 4), $omaFile); writeHex('0x020000', $omaFile); fwrite($omaFile, $string); fwrite($omaFile, 'TCON'); $string = ''; writeHex(sizeHex($string, 4), $omaFile); writeHex('0x020000', $omaFile); fwrite($omaFile, $string); fwrite($omaFile, 'TXXX'); $string = fakeunicode('OMG_TPE1S').getHex('0x0000').fakeunicode($id3info['tags']['id3v1']['artist'][0]); writeHex(sizeHex($string, 4), $omaFile); writeHex('0x020000', $omaFile); fwrite($omaFile, $string); fwrite($omaFile, 'TXXX'); $string = fakeunicode('OMG_TRACK').getHex('0x0000').fakeunicode($id3info['tags']['id3v1']['track'][0]); writeHex(sizeHex($string, 4), $omaFile); writeHex('0x020000', $omaFile); fwrite($omaFile, $string); fwrite($omaFile, 'TYER'); $string = fakeunicode($id3info['tags']['id3v1']['year'][0]); writeHex(sizeHex($string, 4), $omaFile); writeHex('0x020000', $omaFile); fwrite($omaFile, $string); fwrite($omaFile, 'TXXX'); $string = fakeunicode('OMG_ALBMS').getHex('0x0000').fakeunicode($id3info['tags']['id3v1']['album'][0]); writeHex(sizeHex($string, 4), $omaFile); writeHex('0x020000', $omaFile); fwrite($omaFile, $string); fwrite($omaFile, 'TXXX'); $string = fakeunicode('OMG_TIT2S').getHex('0x0000').fakeunicode($id3info['tags']['id3v1']['title'][0]); writeHex(sizeHex($string, 4), $omaFile); writeHex('0x020000', $omaFile); fwrite($omaFile, $string); fwrite($omaFile, 'TXXX'); $string = fakeunicode('OMG_TRLDA').getHex('0x0000').fakeunicode($id3info['tags']['id3v1']['year'][0].'/01/01 00:00:00'); writeHex(sizeHex($string, 4), $omaFile); writeHex('0x020000', $omaFile); fwrite($omaFile, $string); fwrite($omaFile, 'TLEN'); $string = fakeUnicode(getPlaySec($id3info['playtime_string'])); writeHex(sizeHex($string, 4), $omaFile); writeHex('0x020000', $omaFile); fwrite($omaFile, $string); $cur = ftell($omaFile); for (;$cur < 0x0c00; $cur++) writeHex('0x00', $omaFile); fwrite($omaFile, 'EA3'); writeHex('0x1b220000eb7a030000dd90035b6fc14b1a7410eed81778000000040000500f0100000000ffff600002', $omaFile); $cur = ftell($omaFile); for (;$cur < 0x0c60; $cur++) writeHex('0x00', $omaFile); $mp3File = fopen($filename, 'rb'); fseek($mp3File, $id3info['avdataoffset'], SEEK_SET); //while (!feof($mp3File) && ftell($mp3File) < $id3info['avdataend']) // fwrite($omaFile, fread($mp3File, 1)); fwrite($omaFile, fread($mp3File, $id3info['avdataend'] - $id3info['avdataoffset'])); fclose($mp3File); fclose($omaFile);?>