Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

07.10.2009, 00:33
|
|
Постоянный
Регистрация: 04.04.2008
Сообщений: 527
Провел на форуме: 1494768
Репутация:
272
|
|
PHP код:
<?php
$i = 08;
echo $i;
?>
Только начал учить PHP, и понятно что логично было б подумать, что на экран выведит строку "08".
Некоторые говорят что только 0, почему, кто пояснит?
|
|
|

07.10.2009, 09:50
|
|
Постоянный
Регистрация: 24.05.2008
Сообщений: 589
Провел на форуме: 3629857
Репутация:
504
|
|
2 Andres
Сообщение от Van Bekannt
Задача 39:
восьмеричные числа имеют следующее правило:
0[0-7]+
ноль впереди и дальше числа от 0 до 7 ( не выше - на то они и восьмеричные числа ). все что выше == 0
Поэтому эта программа выведет 0. Чтобы вывести 8 нужно написать: 010
|
|
|

07.10.2009, 17:41
|
|
Новичок
Регистрация: 02.02.2006
Сообщений: 28
Провел на форуме: 351198
Репутация:
54
|
|
задание 42
PHP код:
$rez = create(5);
var_dump($rez);
function &create($n)
{
eval("\$b". str_repeat('[0]', $n) . " = 0;");
return $b;
}
PHP код:
function createArr($n) {
$a = array();
while(--$n) {
$a = array($a);
}
return $a;
}
Последний раз редактировалось SleepShadowWeb; 08.10.2009 в 14:57..
|
|
|

14.10.2009, 23:48
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме: 4137635
Репутация:
2407
|
|
Новое задание от меня.
Определить, что делает скрипт и описать это по шагам (несущих смысловую нагрузку в скрипте буквально 5-7 строк).
Скрипт выводит некое число. Откуда оно берется? Почему оно такое? По шагам.
Скачать скрипт:
http://slil.ru/28081439
http://dump.ru/file/3582271
P.S. Мой обфускатор)
Последний раз редактировалось d_x; 15.10.2009 в 00:04..
|
|
|

15.10.2009, 00:02
|
|
Постоянный
Регистрация: 27.07.2008
Сообщений: 614
Провел на форуме: 4532332
Репутация:
1196
|
|
1eval()//выполняет код
2 возвращает оригинальные несжатые данные после gzcompress();
3 base64_decode()//декодирует данные, закодированные base64_encode();
|
|
|

15.10.2009, 00:03
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме: 4137635
Репутация:
2407
|
|
Я прошу рассказать, что скрыто под всем этим. Скрипт выводит некое число. Откуда оно берется? Почему оно такое? По шагам.
Последний раз редактировалось d_x; 15.10.2009 в 00:10..
|
|
|

15.10.2009, 00:12
|
|
Участник форума
Регистрация: 19.05.2007
Сообщений: 228
Провел на форуме: 4325663
Репутация:
240
|
|
Сообщение от Andres
PHP код:
<?php
$i = 08;
echo $i;
?>
Только начал учить PHP, и понятно что логично было б подумать, что на экран выведит строку "08".
Некоторые говорят что только 0, почему, кто пояснит?
Если запись числа в пхп начинается с цифры 0, значит число записано в восьмеричной системе исчисления, а так как в восьмеричной системе используються цифры от 0 к 7, а цифра 8 не используется, то в результате интерпретатор виводит число 0.
|
|
|

15.10.2009, 01:06
|
|
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме: 6075534
Репутация:
2731
|
|
d_x, - Назначает переменной $GLOBALS['_B_'] массив из 11 элементов, значение которых - base64_decode.
- Ф-ция B($i) возвращает декодированный base64 элемент массива $a, индекс которого находится в аргументе ф-ции, в котором находятся дважды кодированные base64 названия ф-ций, заголовков, протокола tcp:// и одной регулярки (мб там еще что-то есть, но я больше не копал).
- Назначает переменной $GLOBALS['_A_'] массив из 10 элементов
Код:
[_A_] => Array
(
[0] => fsockopen
[1] => stream_set_timeout
[2] => fputs
[3] => fputs
[4] => feof
[5] => fgets
[6] => fclose
[7] => preg_match
[8] => str_replace
[9] => mt_rand
)
- Ф-ция A возвращает декодированный base64 (название ф-ции берется из $GLOBALS['_B_'][10], а она (как было сказано выше) - base64_decode) элемент массива из массива $__, с индексом - аргументом этой ф-ции.
- Далее идёт соединение по tcp://www.yandex.ru и выводится ошибка создания сокета (если есть). Потом в цикле while() считывается полученный ответ. Дальше по регулярке
Код:
/<strong>([,\d]+)<\/strong><\/td><td>.{1,10}<\/td><\/tr><\/tbody><\/table>/Usi
находит вхождение (это курс валют). Но ничего не находит, т.к. нету вхождений. Соответственно после проверки на isset() 0.0 (запятая заменена на точку str_replace) умножается на 100, к этому прибавляется... аааа... Вот это подстава И ради банального рандума я сидел более часа над этим кодом?
Хех, спасибо, немного пошевелил мозгами  Иногда полезно... Респект за задумку...
|
|
|

15.10.2009, 01:16
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме: 4137635
Репутация:
2407
|
|
Отлично, +5 
Вот исходный код:
PHP код:
<?php
$header="Host: www.yandex.ru\r\n";
$header.="User-Agent: MSIE 7.0 Win\r\n";
$header.="Connection: close\r\n";
$header.="\r\n";
$addquery="GET / HTTP/1.0\r\n";
$host='www.yandex.ru';
$fp=fsockopen("tcp://".$host,80,$errno,$errstr,30);
stream_set_timeout($fp,30);
if(!$fp)
{
print "<font color=red>Socket error: <i>$errstr ($errno)</i></font><br>";
die();
}
fputs($fp,$addquery);
fputs($fp,$header);
$ret='';
while(!feof($fp))
{
$ret.=fgets($fp, 128);
}
fclose($fp);
preg_match("/<strong>([,\d]+)<\/strong><\/td><td>.{1,10}<\/td><\/tr><\/tbody><\/table>/Usi",$ret,$m);
$m=isset($m[1]) ? $m[1] : '0,0'; //получаем курс нефти с яндекс.ру(если не удается, то 0.0)
$m=str_replace(',','.',$m); //заменяем запятую на точку
$m=(int)$m*100+mt_rand(1,99); //умножаем целую часть курса на 100 и прибавляем рандомное число от 1 до 99
print $m; //выводим
?>
|
|
|

24.10.2009, 00:23
|
|
Новичок
Регистрация: 21.10.2009
Сообщений: 1
Провел на форуме: 20703
Репутация:
0
|
|
Решение задания 001
<?
$str="11111 222222";
preg_match("#(.*) (.*)#is",$str,$m);
echo "$m[2] $m[1]";
?>
Последний раз редактировалось magnat_8; 24.10.2009 в 00:33..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|