PDA

Просмотр полной версии : Вопрос по кодировкам!!!


AoD
26.09.2006, 14:36
Вопрос такой что это за кодировка? Я так понимаю десятиричьная

%uE8FC%u0044%u0000%u458B%u8B3C%u057C%u0178

И как средствами PHP первести кодировку такого вида

\x29\xc9\x83\xe9\xb8\xd9\xee\xd9\x74\x24\xf4\x5b\x 81\x73\x13\x8e

в вышеупомянутую?

[hidden]
26.09.2006, 14:48
Unicode.

Переводи строки функцией iconv

AoD
26.09.2006, 15:43
']Unicode.

Переводи строки функцией iconv

Прошу объяснить конкретней с примером на PHP
по примеру из первого топика

Функция: iconv('исходная кодировка', 'нужная кодировка', 'строка')

AoD
26.09.2006, 16:25
Ну что никто не хочет плюсик заработать. Мне чего-то думать сегодня самому лень.

AoD
26.09.2006, 18:25
ВОщем вот это %uE8FC%u0044%u0000%u458B%u8B3C%u057C%u0178 есть UTF-16, а это \x29\xc9\x83\xe9\xb8\xd9\xee\xd9 ну просто обычьный hex дык вот как из hex-а замутить UTF-16 на PHP мож так понятней. У меня чёт функция "iconv" не пашет. Хотя наверное у меня руки просто кривые Ж-). ГЫ Ну чё нет вариантов?

Pochka
26.09.2006, 19:57
У тебя в двух разных вариантах записаны числа, которые какая-либо программа должна толковать как "записать такие-то числа, выделив под них столько-то места", к кодировке это отношения не имеет

AoD
26.09.2006, 21:12
У тебя в двух разных вариантах записаны числа, которые какая-либо программа должна толковать как "записать такие-то числа, выделив под них столько-то места", к кодировке это отношения не имеет


Числа здесь просто как пример. Это куски кода разных bind-shell кодов, то есть мне необходимо формат одного shell-кода записанного в hex-e преобразовать в другой вид, записанный в utf-16 вот и всё.

Pochka
26.09.2006, 21:39
Числа здесь просто как пример. Это куски кода разных bind-shell кодов, то есть мне необходимо формат одного shell-кода записанного в hex-e преобразовать в другой вид, записанный в utf-16 вот и всё.

%uE8FC%u0044%u0000%u458B%u8B3C%u057C%u0178

->

\xE8\xFC\x00\x44\x00\x00\x45\x8B\x8B\x3C\x05\x7C\x 01\x78

<?
function pervoe_vo_vtotor($str){
$str = str_replace('%', '', $str);
$i = 0;
while(isset($str[$i+1])){
@$retval .= '\\x'.$str[$i].$str[$i+1];
$i+=2;
}
return $retval;
}

function vtoroe_v_pervoe($str){
$str = str_replace('\\x', '', $str);
$for = 4 - strlen($str) % 4;
if($for != 4)
for($i = 0; $i < $for; $i++)
$str = '0'.$str;

while(isset($str[$i])){
@$retval .= '%'.substr($str[$i], $i, $i+4);
$i+=4;
}
return $retval;
}

?>

Не проверял функции, но смысл понятен

SMiX
26.09.2006, 22:41
Функция Pochk'и отображает алгоритм, но содержит логические ошибки.
Функция массам не понадобится - пусть товарищ AoD доделает сам. Причина та же, по какой делают неслучайные ошибка в сплоях.

Trinux
27.09.2006, 00:16
кодировки то однобитные, если не ошибаюсь =))) можно тупо str_replace()`ом зафигачить

hidden
27.09.2006, 01:01
кодировки то однобитные, если не ошибаюсь =))) можно тупо str_replace()`ом зафигачить
Точнее preg_replace
<?
$str='%uE8FC%u0044%u0000%u458B%u8B3C%u057C%u0178';
$str=preg_replace('/%u([a-f0-9]{2})([a-f0-9]{2})/i','\\\\x$1\\\\x$2',$str);
echo "$str<br/>";
$str=preg_replace('/\x5Cx([a-f0-9]{2})\x5Cx([a-f0-9]{2})/i','%u$1$2',$str);
echo $str;
?>