пятница, 17 октября 2008 г.

D-link DI-624. Охлаждение

Нужно сделать охлождение на делинковский роутер. Почему? Все просто. Виснет периодически.
Разберем его. Что мы видим там:

Тут мы видим то, что вся архитектура реализована на единой плате, а не как я видел раньше у точки доступа - модульно.

1. - Главный процессор железяки. (Marvell 88E6060-RCJ1) (datasheet) На самом деле это не главный процессор, а всего лишь контроллер свича. Штука конечно важная, но виснет не она.
2. - Оперативная память SDRAM обьема 1mb частота 143MHz (ESMT M12L64164A-7TG) (datasheet) Тоже безусловно нужная штука и греется тоже хорошо, но к ней вовсе претензий нет.
3. - Металическая коробка экрана, судя по всему так же играет роль теплоотвода от экранируемых чипов. Сюда точно входят чипы WiFi, возможно процессор
4. - Информации по этому чипу найти не удалось, наверняка разработка D-Link или что то еще реже. Еще один претендент на звание процессора, или, что более вероятно - ROM. Прошивка т.е. Так как эта штука не греется.

Еще видим справа маленькую железячку - основная антенна
Остальные элементы не заслуживают внимания.

Вывод: Вентилятор кулера ставить надо на элемент обозначенный цифрой 3.

Установка кулера

1.Идем и покупаем кулер 50х50мм.

Отдаем за него некоторое количество дензнаков. (Гдето 150р)

2. Выпиливаем дырочки в корпусе. Я решил высвелить букву К из эстетических соображений. Заодно выламываем всякие перекладинки, которые мешают отводу воздуха


3. А кулер крепим на самодельные ножки, я их художественно выпиливал из старой ручки. + какието наспех найденные саморезы, обкусанные кусачками.

4. И тут выясняется что питание роутера ниразу не 12 вольт, а всего 5. Это у конкретной модели, у следующих я видел и 12 бывает - там наверно этот апгрейд будет красивее. Значит, откуда проще всего взять 12 вольт? Правильно из большого лакированного ящика - компьютера. Из ненужного переходника на сата питание берем разъем.


5. Все это ассемблируем с помощью паяльника. И крепим кулер на ножках поксиполом. И вот что получаем:

Наш роутер обзавелся еще одним интерфейсом.

Итого:

Вот собственно и все. Остужает вроде неплохо. Если понадобится еще воздух вырежу букву n. Только вот это охлаждение работает только при включенном компьютере. Что бы это было не так нужен отдельный блок питания на 12 вольт. Это не сложно но нужно свободное место, с коим у меня проблемы.

пятница, 3 октября 2008 г.

Проверка целостности файлов системы.

Описание:
Мне для обеспечения безопасности потребовался следующий иструмент: он должен проверять не изменялись ли файлы - всякие конфиги, содержимое системных каталогов.
Для этой цели я решил использовать "композитную" технику - часть инструмента написано на Shell, часть на Perl. Все свои скрипты я писал на FreeBSD поэтому формально, что бы все работало as is нужна FreeBSD с Bash и Perl. Нет, конечно измените пути с интерпретаторам и все заработает где угодно.

Часть1:
Это скрипт написанный на Shell, он берет список файлов из list и складыват их имена и md5 хеши в отдельный файл. Файл list представляет из себя список файлов которые необходимо проверить, по одному файлу на строке, или можно разделять пробелами.

#!/usr/local/bin/bash
out="md5s" #имя файла по умолчанию
if [ "$1" != "" ]
then
out=$1
fi

files=$(sed "s/\n/\ /" list) #преобразуем входной файл в строку значений
for file in $files
do
md5 $file > /tmp/mmd
echo $file" "$(sed "s/.*\=\ //" "/tmp/mmd") >> "$out" #записываем хеш в файл
done

rm /tmp/mmd #удалим временный файлик


Часть2:
Скрипт на Perl, скрипт вызывает предидущий, что бы создать массив текущих хешей. А массив эталонных хешей читается из файла md5s.original, по умолчанию.

#!/usr/local/bin/perl
system ("rm md5s");
system ("./c_md5.sh");
$orig="md5s.original";

open (UN, "md5s") || die ("Cant open md5s!");
open (OR, "$orig") || die ("Cant open $orig!");
while ($onm=) {
$i++;
chomp ($onm);
@a=split (/ /, $onm);
$filesM[$i] = $a[0];
$omassive[$i] = $a[1];
}

while ($unm=){
$j++;
chomp ($unm);
@a=split (/ /, $unm);
if ($filesM[$j] ne $a[0])
{ #pizdec priehali
print "incompare of files list!\n";
close (OR);
close (UN);
exit;
}#endif

if ($omassive[$j] ne $a[1])
{#chto to v etom mire izmenilos'
print "$a[0] has changed!\n";
$flag=1;
}#endif

}#end while
if ($flag != 1) {
print "All is OK!\n";
}
close (OR);
close (UN);


Окончание:
Программа работает, но если скомпрометирован пароль root'а она не поможет. Злоумышленник сможет изменить или пересоздать таблицу хешей. Что бы этого не произошло, следует базу хешей и программу хранить отдельно, на не перезаписываемом носителе или на внешнем http/ftp сервере.