Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #58, ОКТЯБРЬ 2003 г.

FAQ

Stepan Ilyin aka Step

Xakep, номер #058, стр. 058-106-3


Q: Недавно написал небольшой скрипт для автоматизированного обмена прямыми warez’ными ссылками. Размер файлов здесь имеет большое значение, т.к. не каждый может скачивать файлы весом более 5-10 мегабайт. Именно поэтому ОЧЕНЬ хочется реализовать автоматическое определение размера файла по его URL. Возможно ли это реализовать с помощью штатных средств PHP?

A: Конечно, возможно! Причем без дополнительных библиотек и модулей. Для этого можно использовать процедуру, написанную неким Сергеем Тарасовым. Очень оригинальное и в то же время простое решение:

<?

$hostname = "units.ru"; // units.ru - имя сервера

$filename = "/files/winamp.exe"; // интересующий на сервере файл

get_size($hostname, $filename);

function get_size($hostname, $filename) {

$end = false;

$fp = fsockopen ($hostname, 80, &$errnr, &$errstr) or

die("$errno:$errstr");

fputs($fp,"HEAD ".$filename." HTTP/1.0\n\n");

while (!$end) {

$line = fgets($fp, 2048);

if (trim($line) == "") {

$end = true;

} else {

$str = explode(": ", $line);

if ($str[0] == "Content-Length")

print "Size of ".$filename." file ".$str[1]." bytes";

}

}

fclose($fp);

}

?>

Q: Почему у меня в safe-mode’е винды не работает мышка? Очень напрягает, помогите please.

A: Ты забыл упомянуть, что используешь USB-мышку и 9x/NT винды. Дело в том, что в safe-mode’е этих ОС подгружаются только стандартные (читай наиболее стабильные) драйвера. Почему в этот список не входят дрова для USB-устройств – для меня до сих пор загадка. И ничего тут не поделаешь. Могу лишь посоветовать приобрести переходник USB > PS/2.

Q: Я окончательно перешел на *nix ОС. Не могу сказать, что мне это сильно нравится, но деваться некуда. Первая проблема – как посмотреть список расшаренных ресурсов на windows машине?

А: Способов море. Вот некоторые из них:

1) Cкрипты smbfind (findsmb). Синтаксис предельно прост: читаем мануал.

2) Команда nmblookup -r -A 192.168.0.1, где 192.168.0.1 – адрес удаленной машины.

3) Команда smbclient -N -L hostname -I 192.168.0.1

Q: Объясните, пожалуйста, принцип создания рабочего дубликата Linux-системы.

A: Реализуется это довольно просто. По крайней мере, никаких сторонних утилит, как в случае с windows-системами, не требуется. Первое, что нужно сделать - монтировать жесткий диск (man mount), на который, в общем-то, и будет переписан дубликат системы. После чего следует создать на нем новые разделы (man fdisk) и скопировать в них все имеющиеся файлы (естественно, кроме /mnt). Последнее можно сделать как стандартным Midnight Commander’ом (который, кстати, недавно обзавелся новой версией, имеющей МАССУ нововведений и багфиксов), так и *nix командами. Например, так: для каждого раздела «cp -Raxv / /mnt/novii_razdel» (без кавычек, естественно). Далее, руководствуясь комментариями и документацией, правим /mnt/novii_razdel/etc/fstab и создаем с помощью /dev/MAKEDEV недостающее устройство. Последний штрих: «mkdir /mnt/novii_razdel/proc /mnt/novii_razdel/mnt» и «lilo -r /mnt/novii_razdel -b /dev/hdb». Готово!

Назад на стр. 058-106-2  Содержание  Вперед на стр. 058-106-4