Просмотр полной версии : Вопрос по кодировкам!!!
Вопрос такой что это за кодировка? Я так понимаю десятиричьная
%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
']Unicode.
Переводи строки функцией iconv
Прошу объяснить конкретней с примером на PHP
по примеру из первого топика
Функция: iconv('исходная кодировка', 'нужная кодировка', 'строка')
Ну что никто не хочет плюсик заработать. Мне чего-то думать сегодня самому лень.
ВОщем вот это %uE8FC%u0044%u0000%u458B%u8B3C%u057C%u0178 есть UTF-16, а это \x29\xc9\x83\xe9\xb8\xd9\xee\xd9 ну просто обычьный hex дык вот как из hex-а замутить UTF-16 на PHP мож так понятней. У меня чёт функция "iconv" не пашет. Хотя наверное у меня руки просто кривые Ж-). ГЫ Ну чё нет вариантов?
У тебя в двух разных вариантах записаны числа, которые какая-либо программа должна толковать как "записать такие-то числа, выделив под них столько-то места", к кодировке это отношения не имеет
У тебя в двух разных вариантах записаны числа, которые какая-либо программа должна толковать как "записать такие-то числа, выделив под них столько-то места", к кодировке это отношения не имеет
Числа здесь просто как пример. Это куски кода разных bind-shell кодов, то есть мне необходимо формат одного shell-кода записанного в hex-e преобразовать в другой вид, записанный в utf-16 вот и всё.
Числа здесь просто как пример. Это куски кода разных 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;
}
?>
Не проверял функции, но смысл понятен
Функция Pochk'и отображает алгоритм, но содержит логические ошибки.
Функция массам не понадобится - пусть товарищ AoD доделает сам. Причина та же, по какой делают неслучайные ошибка в сплоях.
кодировки то однобитные, если не ошибаюсь =))) можно тупо str_replace()`ом зафигачить
кодировки то однобитные, если не ошибаюсь =))) можно тупо 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;
?>
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot