книги хакеры / журнал хакер / 102_Optimized
.pdf
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
>>
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
C |
E |
|
|
|||
|
|
X |
|
|
|
|
|||
|
- |
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
||||
ХАКЕР.PROBUY |
|
|
|||||||
|
|
|
|
|
|||||
w Click |
to |
|
|
|
|
m |
|||
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
ПримеркумулятивнойзаплаткидляRedHat,исправляющей |
Проникновениевядро |
||
ошибкувподсистемеSCTP |
|
||
|
|
|
|
Расплатойзакорректностьстановитсярезко |
ютобстоятельстваатаки,позволяющиенайти |
Издрайвера(или,используятерминологию |
|
возросшаясложностьтехникимодификации,а |
дырусамостоятельно. |
|
UNIX-подобныхсистем,«загружаемогомоду- |
такженекотороезамедлениеработысистемы, |
|
|
ля»),работающегонанулевомкольце,память |
поэтомукhot-patch'унасерверахследуетпри- |
Техникагорячеймодификацииядра |
ядразащищенаотнепреднамеренноймоди- |
|
бегатьлишьвтехслучаях,когдаперезагрузка |
ВоперационныхсистемахсемействаLinux |
фикации,однакоэтузащитулегкоотключить. |
|
невозможнаиликрайненежелательна. |
иNTядропроецируетсянаединое4 гига- |
Исключениесоставляют64 разрядныеверсии |
|
|
байтноеадресноепространство.ВLinux |
XPиВисты,вкоторыевстроенанеотключае- |
|
Техникапоискаразличий |
ядрозанимает1Гб,располагаясьпоадресам |
маязащитаотумышленноймодификациипод |
|
Длясоздания«горячей»заплаткинеобходи- |
C000000h—FFFFFFFFh.ВNT/W2K/XPядропо |
названиемPatchGuard,техникаобходакоторой |
|
моиметьdiff-файл,показывающий,каким |
умолчаниюотъедает2Гб,занимаястаршую |
описанамыщъх'омвстатье«Взломpatch-guard» |
|
образомбылазаткнутадыра,послечегонам |
половинуадресногопространства(8000000h |
(http://nezumi.org.ru/patch-guard-hack.zip). |
|
остаетсятолькоперевестиисправленияна |
—FFFFFFFFh),ноеслиуказатьключ/3GBв |
ВNT/W2K/XP/Виста-x86существуетдваспосо- |
|
языкассемблера,модифицируяядронепос- |
файлеboot.ini(поддерживаемый,начиная |
баотключениязащитыотнепреднамеренной |
|
редственновоперативнойпамяти. |
сWindows2000AdvancedServer/Datacenter |
модификацииизнулевогокольца:статичес- |
|
Ксожалению,раздобытьdiff-файлудается |
Server),тоядроужметсядо1Гб.ЯдроFreeBSD, |
кийидинамический.Статическийсводится |
|
далеконевсегда.Зачастуюразработчики |
вплотьдоверсии3.х,занималовсего256Мб, |
ксозданиюпараметраEnforceWriteProtection |
|
распространяюткумулятивныеобновления, |
но,начинаясверсии4.x,разрослосьдо1Гб, |
типаREG_DWORDсозначением0x0в |
|
включающиевсебямножествоисправлений, |
оккупируярегионC000000h—FFFFFFFFh. |
HKLM\SYSTEM\CurrentControlSet\Control\ |
|
неимеющихкдыреникакогоотношенияи |
Памятьядрадоступнасприкладногоуровняче- |
SessionManager\MemoryManagement,адина- |
|
модифицирующихвнутренниеструктуры |
резпсевдоустройство\Device\PhysicalMemory |
мическийосуществляетсясбросомWP-битав |
|
ядра,врезультатечего«горячая»модификация |
(NT/W2K/XP)и/dev/kmem(Linux/BSD). |
управляющемрегистреCR0,которыйрасшиф- |
|
кодавлечетзасобойнеобходимостьпере- |
ВраннихверсияхNTпсевдоустройство |
ровываетсякакWriteProtection.Повторная |
|
стройкиданных,скоторымиработаетядро. |
PhysicalMemoryбылооткрытодлячтения/ |
установкабитавключаетзащиту. |
|
Аэтоуженереально,особенносучетомтого, |
записилюбомупользователюизгруппы«Адми- |
Аналогичнымспособомможноотключитьи |
|
чтообработкаданныхнеатомарнаивмомент |
нистраторы»,однако,начинаясWindows2003 |
защитуядравUNIX-подобныхсистемах.Сброс |
|
наложениязаплаткистарыеданныемогут |
ServerSP1,кнемунеможетполучитьдоступ |
WP-битадействуетнааппаратномуровне, |
|
находитьсянаразличныхстадияхобработки, |
дажеSystem. |
|
открываявсеaccessibly-станицыдлямодифи- |
будучизагруженнымивлокальныеперемен- |
UNIX-подобные системы тоже закрывают |
кациинезависимооттого,разрешенавних |
|
ныеирегистры. |
доступ к kmem, и недалек тот день, когда |
записьилинет.Естественно,текущийуровень |
|
Ачтоделать,еслиисходныетекстынедоступны |
из большинства дистрибутивов оно будет |
привилегий(CPL)недолженпревышатьCPL |
|
(как,например,вслучаеWindows)иливних |
полностью изъято. И хотя псевдоустройс- |
модифицируемойстраницы,иначепроцессор |
|
неудаетсяразобраться?!Тогданеобходимо |
тво /dev/mem (физическая память до |
сгенерируетисключениятипа«ошибкадо- |
|
прошвырнутьсяпоsecurity-сайтам,раскурить |
линейной трансляции) по-прежнему в |
ступа»(тоестьсприкладногоуровняядровсе |
|
имеющиесяэксплойты,вобщем,разобраться, |
строю и отказаться от него никак не полу- |
равноостаетсянедоступно). |
|
гдепрячетсяуязвимостьикакееустранить. |
чается (поскольку его используют многие |
СбросWP-битаимеетглобальноевоздействие, |
|
Достаточночастопервооткрывателидырыне |
приложения, те же X'ы, например), для |
затрагивающеенетолькоядро,ноиприклад- |
|
толькосообщаютпараметрывектораатаки, |
модификации ядра оно не годится, посколь- |
ныепроцессы,поэтомуотключатьзащитуна |
|
ноиприводятдизассемблерныелистинги |
ку не обеспечивает атомарности, а значит, |
долгоевремякрайненежелательно.Некоторые |
|
двоичныхмодулей(илиреконструированный |
наложение заплатки может привести к |
программы(особеннопротекторыиспол- |
|
псевдокод)суказаниемошибок,либоописыва- |
краху системы. |
|
няемыхфайловинекоторыезащиты)явно |
xàêåð 06 /102/ 07 |
/ 139 |
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
E |
|
|
||||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
NOW! |
o |
|||||
|
|
|
|
|
||||||
|
|
|
|
|
|
|||||
w Click |
to BUY |
|
>> |
|||||||
|
|
|
|
|
|
m |
||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
|||
|
|
|
|
-xcha |
|
|
|
|
|
ХАКЕР.PRO
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
i
ВLinuxиxBSD
существуетвозможностьскомпилироватьмонолитное ядробезподдержки загружаемыхмодулей,чтоблаготворно сказываетсяна безопасности,нозатрудняетналожение «горячих»заплаток. Однакоеслипсевдоустройство/dev/mem остаетсядоступным (ачащевсегодела обстоятименнотак), мыможемнайти впамятитаблицу
системныхвызовов ивнедритьвядро свойсобственный код,работающийна нулевомкольцеи накладывающийзаплаткупоописанной мыщъх’омметодике.
DVD
Примерреализа- цииKLD-модуля
(DynamicKernel Linker)дляFreeBSD,
отключающегозащитуядраотзаписипри загрузкеивключающегоееобратнопри выгрузке,приведен вполнойверсиистатьи.Еетысможешь найтинаприлагаемомкжурналудиске.
закладываютсянагенерациюисключения,возникающего припопыткезаписивReadOnly-страницу,ипослесброса WP-битаперестаютработать.
Каквариант—можнопоигратьсянизкоуровневыми функциямисемействаpte_x(например,pte_mkwrite), работающимискаталогомстраниц.Этоболеекрасивыйи надежный,однако,увы,системно-зависимыйпуть,поэтому напрактикеприходитсяидтинакомпромисс,жертвуя надежностьювпользупереносимости.
Проблемакогерентностиипутиеерешения
Итак,теперьмыможеммодифицироватьядро,накладывая «горячие»заплаткиилиперехватываясистемныефункции,внедряявихначалокомандупереходанасвоетело. Большинстворуткитовименнотакипоступает,забывотом, чтоподопытныйкодможетисполнятьсяодновременнос егомодификацией,приводяккрахусистемы.Причемэта «одновременность»довольноотносительная.Какизвестно, наоднопроцессорныхмашинахпотокивыполняются последовательно,анепараллельно,ииллюзия«одновременности»создаетсялишьзасчетбыстрогопереключения междуними.
Допустим,потокАбылпрерванприисполнениифункции foo,послечегопланировщикпередалуправлениепотокуB, выполняющемуфункциюbar.Вопрос:чтопроизойдет,если мымодифицируемсодержимоеfoo?Очевидно,когдапоток Авновьполучитуправление,онокажетсявсовершенно другомокружении,возможно,дажепытаясьпродолжить выполнениессерединыновоймашиннойкоманды! Причемнетникакойвозможностиузнать,находитсяэтот участоккодаподвыполнениемилинет!Тоестькакэтонет?! Оченьдажеесть—простопросматриваемконтекстывсех потоков(процессов,отложенныхфункций),принеобходимостидожидаясьмомента,когдаобозначенныйкодвыйдет из-подуправления,послечегоправимего.Вотивсе!Прос- то,элегантно,но,увы,неработоспособно.
Во-первых,добратьсядоконтекстовпроцессов/потоков/от- ложенныхфункцийводномгновениеневозможно!Поток, анализирующийконтекстыдругихпотоков,исполняется параллельносними,ипокамычитаемконтексточередного потока,предыдущиеужемоглиизмениться.Теоретически возможно«замораживать»всепотокинавремямодификации(предварительнодождавшись,покаонипокинут пределымодифицируемогокода),апотом«размораживать» ихобратно,однакоэтоттрюкимеетдовольноограниченнуюобластьприменения.Вчастности,оннеработаетс обработчикамиаппаратныхпрерываний,блокирование которыхкрайненежелательноилижевовсенедопустимо. Во-вторых,всеэтослишкомсистемно-зависимо,аковы- рятьсявовнутренних(изачастуюнедокументированных) структурахоси—тоскливоеибесперспективноедело. Существуетнесколькоуниверсальныхрешенийэтойпроблемы.Вот,например,одноизних:внедряемвначаломодифицируемойфункциикомандуINT03h,соответствующую однобайтовомуопкодуCCh,итогдаприеевызовепроцессор будетгенерироватьотладочноеисключение,перехватываемоенашимобработчиком,передающимуправлениена
пропатченнуюверсиюобозначеннойфункции,расположеннуюсовсемвдругомместе.Оригинальнаяфункция (заисключениемпервогобайта)остаетсянеизменной,и потомумыможемневолноватьсязато,чтокакой-тонеожи- даннопроснувшийсяпотокпродолжитеевыполнение. Посколькувыполнениемашинныхкоманд—атомарная операция,тозаписыватьINT03hможноповерхлюбой команды,иэтогарантированнонеприведеткразвалу системы,дажееслимодифицируемаякомандаисполняется вэтотмоментнадругомпроцессоре!Процессорвыполнит
либооригинальнуюкоманду,либоINT03h.Промежуточное состояниеунегопопростуотсутствует.
Достоинствоэтогорешениявтом,чтоононетребует анализаассемблерногокодаисходнойфункции.Мыпросто пишемINT03h—ивсе!Недостатки:а)примодификации болеечемоднойфункцииобработчикдолженанализироватьадресисключения,чтобыопределить,кудапередать управление;б)этоплохоработаетсотладчиками(де-факто INT03hпредставляетсобойпрограммнуюточкуостанова);в) частовызываемыефункциипритакойметодикеперехватабудутзаметнотормозить,снижаяобщуюпроизводительность. Болеесложное,новместестемиболее«технологическое» решениезаключаетсявзаписикомандыjmpneartarget поверхмашиннойкомандыравнойилибольшейдлины,где target—адресмодифицируемойфункции,которойпереда- етсяуправление.
Проблемаатомарностиипутиеерешения
Записькомандыjmpneartargetдолжнапредставлять атомарнуюоперацию,выполняемуюцеликомзаодинраз.В противномслучаеможетсложитьсяситуация,прикоторой процессорпопытаетсявыполнить«недописанную»команду совсемивытекающимиотсюдапоследствиями,ноинструкциявидаmov[mem],reg8/16/32непозволяетзаписывать болеечетырехбайт,апотомусовершеннонепригоднадля решенияпоставленнойзадачи.
НекоторыехакерыиспользуютSSE-инструкции,позволя- ющиезаписыватьболеечетырехбайт,инаоднопроцессорныхмашинахтакойтрюкработаетвполненормально.Но намногопроцессорныхсистемахсуществуетвероятность (пускайиничтожная)модификациикодавпроцессеего выполнения,апрефиксблокировкишины(LOCK)перед SSE-командамивставлятьнельзя.
Ксчастью,начинаяспервопней,влексиконепроцессоров существуетзамечательнаякомандаCMPXCHG8B,поддерживающаяпрефикс«LOCK»изаписывающаяодним махомцелых8байт!Длявнедрения5 байтовойинструкции jmpneartargetэтогоболеечемдостаточно.Естественно, чтобынезатеретьоставшиеся3байта,сначаламыдолжны прочитать8байтизпамяти,наложитьнанихjmpneartarget изаписатьполученнуюсмесьобратно.Воттутнекоторые спрашивают:зачемэтоделать,ведьjmp—этобезуслов- ныйпереходинаходящиесязанимкомандыникогдане получатуправления7Азатем,чтонаходящиесязаним командымоглиполучитьуправлениеещедомодификации. Примечание:некоторыетрансляторынеподдерживают инструкциюCMPXCHG8B,ивэтомслучаеееможнозадать
/ 140 |
xàêåð 06 /102/ 07 |
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
>>
ХАКЕР
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
C |
E |
|
|
|||
|
|
X |
|
|
|
|
|||
|
- |
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|||
.PROBUY |
|
|
|
|
|||||
w Click |
to |
|
|
|
|
m |
|||
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
АдресноепространствоNT/W2K/XPвконфигурациипоумолчанию
черездирективуDBили_emitвбайтовомвиде
0FhC7h0Eh.
Готовыйпримерреализациивнедренияjmp neartargetпосредствомCMPXCHG8Bприведен ниже:
Внедрениеjmpneartargetпо средствомкомандыCMPXCHG8B;
врегистреEAXпередаетсяадресза- писиjmp,аврегистреEBX—target
;сохраняем адрес модифицируемой команды
PUSH EAX
;sizeof(jmp near target)
ADD EAX, 5
;вычисление операнда команды jmp near target
SUB EBX, EAX
;ESI — адрес модифицируемой команды
POP ESI
;обнуляем EDX:EAX
XOR EAX, EAX
XOR EDX, EDX
;читаем 8 байт из [ESI] CMPXCHG8B [ESI]
;заносим в стек 4 старших прочитанных байта
PUSH EDX
;оставляем из них 3
INC ESP
;накладываем операнд команды jmp near target
PUSH EBX
;накладываем опкод команды jmp near target
PUSH 0E9000000h
;удаляем 3 нуля
ADD ESP, 3
;подготавливаем регистры к вы-
полнению CMPXCHG8B POP EBX
POP ECX
;записываем 8 байт в [ESI], бло-
кируя шину
LOCK CMPXCHG8B [ESI]
Советыирецептыпоналожениюзаплатки
Чтобынесвязыватьсясассемблером,достаточноскопироватьисправленныйвариант функциивсвоймодуль—пустьтранслятор компилирует,тогданамостанетсявсеголишь передатьнанееуправлениекомандойjmpnear target(естественно,вместесфункциейнеобходимоскопироватьивсемакросы,заданные директивойdefine,атакжеподключитьнеобходимыезаголовочныефайлы).
Приэтоммынаталкиваетсянаследующиепроблемы:а)еслифункцияобращаетсякглобальнымпеременным,томыдолжныподставить адресапеременныхоригинальнойфункции, иначеповедениесистемыстанетнепредсказуемым;б)адреса«внутренних»функцийядра, вызываемыеэтойфункцией,такженеобходимо подставлятьвручную;в)мынеможемприказатькомпиляторуисключитьужевыполненные команды,поэтомупреждечемпередавать управлениеоткомпилированнойфункции, следуетвыполнитьоткат,повесивнаjmpnear targetпромежуточныйобработчик,которыйв данномслучаебудетвыглядетьтак:
УпрощеннаяархитектураNT/W2K/XP
POP EBP
POP ESI
POP EDI
POP EBP
Каквидно,мывыполняемобратнуюпоследовательностькоманд,восстанавливаястеки содержимоерегистров,апринеобходимости освобождаявыделеннуюфункциейпамятьи прочиесистемныересурсы.
СWindowsвэтомпланесложнее.Исходных текстовнет,ивставитьисправленнуюфункциювдрайвернеполучится.Здесьестьдва пути:дизассемблироватьядроипереписать коднаСи(трудоемко,затонадежно)илиже скопироватьфункциюпрямовдвоичномвиде, корректируяссылкинафункции,вызываемые поотносительнымадресам.Посколькуадрес загрузкидрайверанапереднеизвестен,коррекциюприходитсяосуществлятьналету.Заносим адресамашинныхкомандcalltarget/jmptarget вспециальныймассив,хранящийсявдрайвере, авпроцедуреинициализацииобрабатываем всеэлементы,добавляякнепосредственному операндубазовыйадресзагрузки,незабыв предварительноотключитьзащитуотзаписи, посколькупоумолчаниюкодоваясекция доступнатольконачтение.
Заключение
Заштопатьядрооперационнойсистемыбезпе- резагрузки—оченьсложно,новполнереально. Конечно,далеконевсякомуадминистратору этопосилам,однакофирмы,занимающиеся поддержкой,могутвыпускатьнеофициальные «горячие»заплатки,расхватываемые,словно пирожки!Ведьэтонепростоактуальная,а суперактуальнаятема,вкоторойзаинтересованымиллионыпользователей,такчтонасчет спросаможнонесомневаться..z
xàêåð 06 /102/ 07 |
/ 141 |
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
C |
E |
|
|
|||
|
|
X |
|
|
|
|
|||
|
- |
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
||||
|
|
|
|
|
ХАКЕР.PRo |
||||
|
|
|
>>to BUY |
|
|||||
w Click |
|
|
|
|
|
m |
|||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
крис кАсперски
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Бесшумныйсервер своимируками
решаеМ ПроблеМу снижения шуМа на доМашнеМ серВере
Развитие локальных сетей привело к росту популярности домашних серверов, многие из которых из-за хронического недостатка жилищного пространства приходится устанавливать прямо в местах обитания их владельцев, что неизбежно сталкивает их с шумовой проблемой. На сегодняшний день существует множество методик борьбы с шумом, но далеко не все они эффективны.
Введение,иличтотамгрохочетвнутри |
догрохочущего,новысокопроизводительного. |
работающиевкруглосуточномрежиме,настоя- |
Преждечемборотьсясшумом,нужновыявить |
Поумолчаниюобычновыбираетсяпромежу- |
тельнорекомендуетсяохлаждать.Естественно, |
егоосновныеисточники,перечисленныениже |
точныйкомпромиссныйвариант,который |
чембольшевентиляторов—тембольшешума. |
впорядкеубываниясвоейактивности.Естест- |
легкоизменить,скачавссайтапроизводителя |
Поэтомузакрепляемвинчестерыводной |
венно,этотпорядоквесьмаусловенизависит |
специальнуюутилиту(увсехпроизводителей |
стойке,обдуваемойбольшимтихоходным |
отмножестваобстоятельств,скоторымимы |
онаразная). |
вентиляторомскривыми(анерубленными) |
разберемсячутьпозже,асейчаспростососта- |
Несколькодисков,установленныхводну |
лопастями,нагнетающимивоздухвнутрь |
вимприблизительныйсписок,чтобыочертить |
стойку,могутвходитьврезонанс,излучая |
корпусаПК.Естественно,налицевойстенке |
фронтработ: |
целыйспектрзвуковвсехчастот.Обычноэто |
должнабытьпредусмотренарешетка,аеслиее |
•жесткиедиски; |
низкочастотныйгул,реже—инфразвуковые |
нет,тодлявозможностиподсосавоздухавенти- |
•вентиляторнапроцессорномрадиаторе; |
колебания,невоспринимаемыечеловеческим |
ляторследуетотодвинутьоткорпусахотябына |
•вентиляторынавидеокарте,чипсетеит.д.; |
ухом,новызывающиебыструюутомляемость, |
3–5см.Подшипникискольжения(состоящие |
•вентиляторнаблокепитанияипрочиевенти- |
чувствотревогиипрочийдискомфорт.В |
изпростойвтулки)работаютнамноготише |
ляторывнутрикорпусаПК. |
нормальнойстойкедолжныиспользовать- |
шарикоподшипников,хотяимеютнамного |
|
сярезиновыепрокладки,недопускающие |
меньшийресурс.Постепенновтулкадефор- |
жесткиедиски |
прямогоконтактастойкискорпусомжесткого |
мируется,ивентиляторначинаеттарахтеть, |
Спереходомнагидродинамическиеподшип- |
диска.Некоторыепроизводителииспользуют |
какгусеничныйэкскаватор.Смазкаподшип- |
ники(FluidDynamicBearing—FDB)жесткие |
пружинныеилирезиновыерастяжки,что |
никаверетенныммасломнанекотороевремя |
дискипересталибытьсамымшумнымком- |
уменьшаетшумигарантированнопредотвра- |
решаетпроблему,ноприлипающаякнейпыль |
понентомПК,иединственнымгрохочущим |
щаетрезонанс,новместесэтимисокращает |
служитхорошимабразивом,врезультатечего |
элементомосталасьсервосистема(онажесис- |
срокслужбыжесткогодиска,рассчитанногона |
износрезковозрастает,ивентиляторначинает |
темапозиционированиямагнитнойголовки). |
жесткиймонтаж,анена«болтанку». |
тарахтетьвновь,требуязамены. |
Нопроизводителиактивноработаютвэтом |
Каквариант—можноустановитьодин |
Кстатиговоря,известнонесколькослучаев, |
направлении,ибольшинствосовременных |
жесткийдисквтрехдюймовыйотсек,адругой |
когдапринудительноеохлаждениежестких |
винчестеровпредусматриваетнесколькоре- |
—впятидюймовый,ноприэтомвозникает |
дисковнетольконеувеличивалосроких |
жимовработы:оттормозного,нобесшумного |
проблемасохлаждением,ажесткиедиски, |
службы,ноиприводилокдовольнобыстрым |
/ 142 |
xÀêåð 06 /102/ 07 |
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
>>
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
C |
E |
|
|
|||
|
|
X |
|
|
|
|
|||
|
- |
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
||||
ХАКЕР.PROBUY |
|
|
|||||||
|
|
|
|
|
|||||
w Click |
to |
|
|
|
|
m |
|||
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
BarracudaотSeagate—нетолькотихая,ноещеи |
ПассивныйрадиаторотZalman |
самаянадежнаямодельизвсех |
|
отказам.Всепросто!Отнеравномерного охлаждениякорпусвинчестерачуть-чуть ведет(имеетместотепловоерасширение),что вызываетперекоснекоторыхузловсовсеми вытекающимиотсюдапоследствиями.
Процессор
Начинаяспроцессоров80486,нарадиаторах сталипоявлятьсявентиляторы,анаPentium'ах этоявлениеприобреломассовыйхарактер. Современныепроцессорывыделяютогромное количествотепла,дляэффективногоотвода которогоиспользуютсявысокоскоростные вентиляторы,прокачивающиемножествокубическихсантиметроввоздуха,что,
естественно,сопровождаетсяшумом.Новедь домашнемусерверунетребуетсямощный процессор!Самыйрадикальныйметодборьбы сшумом—перевестипроцессорнапассивное охлаждение,тоестьубратьвентилятор.
ВсвоевремяфирмаCyrixвыпустиланесколько удачныхпроцессоров,вспецификациикоторыхпассивноеохлаждениедекларировалось явно.Ихотяонинемоглипохвастатьсяособой производительностью,длянормальнойработы офисныхприложенийихвполнехватало.Но конкурироватьсIntel/AMDфирмеCyrixоказалосьнепосилам,ионапродаласвойбизнес компанииVIA(www.via.com.tw/en/products/ processors).Атаслегкапересмотреласпецификациииприкрутилаактивноеохлаждение, котороепроцессорамсемействаС3(другие мыщъхнетестировал)совершенноникчему.
Вжаркомклиматеместообитаниямыщъх'а(до 42°С)намассивноммедномрадиаторетемпературапроцессора,работающегоподуправлениемWindows2000,никогданепревышала55°С, оставляядостаточныйзапаспрочности.
ТожесамоеотноситсяикPentium-III733MHz (Coppermine).Правдаболеебыстрыемодели ужеприходитсятормозить,уменьшаятактовуючастотуинапряжениепитания.Снижать питающеенапряжениебезуменьшения тактовойчастотынельзя,посколькучемниже разностьпотенциалов,теммедленнеевыполняютсяпереходныепроцессы,иэлектронные ключипростонеуспеваютпереключитьсяза отведенныйимтакт.
Вкрайнемслучае(еслитемпературакристалла все-такиприближаетсякопасномууровню) можнопоблизостиотрадиаторазакрепитьтихоходныйвентиляторсбольшимилопастями. Авотводяноеохлаждениеиспользоватьнерекомендуется.Инетолькопотому,чтосуществуетугроза утечкиохлаждающейжидкости(какправило, воды),ведущейкотказуэлектроники,авнекоторых случаяхдажеклокальнымвозгораниямипожарам. Помпадалеконебесшумна,ктомужедостаточно частовыходитизстроя,чтоопять-такиприводитк перегревуивыходусервераизрабочегосостояния. Zalmanимеетвсвоемассортиментенесколько моделейпассивныхрадиаторов,пригодных дажедляохлажденияPentium4иоснованных накипениижидкостивгерметичнозапаянных трубочках.Однакоихстоимостьдовольно велика,даисмысластроитьдомашнийсервер набазеPenium4нетникакого.Лучшеиспользоватьтехнику,оставшуюсяпослеапгрейда своейосновнойсистемы.
Северныймост,видеокарта ивсе-все-всеостальные
Материнскаяплатасактивнымохлаждением северногомоста(равнокакивидеокартасза- крепленнымнанейвентилятором)—этоужас (тольконетихий,авесьмагромкий),ипотому онаидетлесом.Северныймост,конечно,очень горячееместо,новсежененастолько,чтобык немуприкреплятьвентилятор.Авидеокарта серверуивовсененужна(покрайнеймере,3D- устроитель—этоявноеизлишество).
Авототинтегрированноговидеолучшевсе-таки воздержаться.Дажепривыключенноммониторе такаявидюхапродолжаетработать,греясеверный мост(которыйибезтогоперегружен)изавешивая еговжаркуюпогодупризагрузкеWindows.Проблемарешаетсялибоустановкойболеемощного радиатора(зачастуюсактивнымохлаждением), либовыключениеминтегрированноговидеов BIOS'еипереходомнанормальнуюкарту.
Блокпитания
Родныевентиляторыблоковпитанияобычно производятдостаточномногошума,имеют рубленыелопастиивысокиеобороты.Ладно, покупаемблокпитаниясзапасомпомощ-
ности,устанавливаемвнеговентиляторс выгнутымиаэродинамическимилопастями
иснижаемоборотыдоминимума(отом, какэтосделать,рассказываетсявоврезке).
Вентилятор,нагнетающийвоздухвнутрьблока питания,охлаждаетегонамногоэффективнее, чемроднойвентилятор,придерживающийся ATX-спецификациииработающийнавыдув. Правда,приэтомвозникаетследующаяпроблема.Принагнетаниивоздухавкорпуссразусдвух сторон(состороныблокапитанияистойкис жесткимидисками)внутривозникаетповышенноедавление,снижающееэффективностьсистемыохлаждения.Можно,конечно,поставить третийвентилятор,работающийнавыдув,но кчемунамлишнийшум?Прощеустановить перегородку междудномблокапитанияи материнскойплатой,доходящуюдопятидюймовогоотсекасоснятойдекоративнойкрышкой, которуюможнозаменитьрешеткой(аможно
инезаменять).Такимобразом,мыотделяем воздушныепотокидруготдруга,недаваяим смешиваться.Воздух,нагнетаемыйвнутрьблокапитания,проходитповерхукорпуса,выходя черезпятидюймовыйотсек,авоздух,охлаждающийвинчестеры,выходитчерезщеливбоковых стенкахкорпуса.Ивсеостаютсядовольны. Ещеоднообстоятельство.Импульсныеблоки питания(адругихсейчаснет)могутгенерироватьвысокочастотныеколебания(писк,свист), которыележатзапределамивосприятияуха взрослого(музыкантовимеломановврасчет неберем),ноотчетливовоспринимаются детьми.Такчтоеслитвойребенокжалуетсяна сервер,утверждая,чтослышитзвуки,которые неслышишьты,вместотогочтобывестиегок психиатру,простозамениблокпитания.Тоже самоеотноситсяикдросселям,установленным
наматеринскойплате.Длительноевоздействие высокочастотныхколебанийотрицательно сказываетсякакнапсихике(особенно,ещене окрепшей),такинавсемздоровьевцелом,поэтомуотмахиватьсяотэтойпроблемынестоит.
Корпус
Китайскиекорпуса,собранныеизтонкого металланазаклепках(половинаизкоторыхне затянута),дребезжатвсемисвоимичастями,
xàêåð 06 /102/ 07 |
/ 143 |
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
E |
|
|
||||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
NOW! |
o |
|||||
|
|
|
|
|
||||||
|
|
|
|
|
|
|||||
w Click |
to BUY |
|
>> |
|||||||
|
|
|
|
|
|
m |
||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
|||
|
|
|
|
-xcha |
|
|
|
|
|
ХАКЕР.PRO
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
|
|
VIAC3(бывшийCyrixC3Ezra)—одинизнемногихпроцессоров, |
|
|
|
|
|
|
ТемператураPentiumIII733,установленноговнутримыщъх’иного |
||
серверанамедныйрадиаторспассивнымохлаждением |
способныхработатьспассивнымохлаждением |
усиливаявибрациижесткихдисковивентиляторов.Чемтолщеметалл,темтишекорпус, особенноесливысверлитьзаклепки,заменив ихгайкамисболтами.Жестяныедекоративные заглушки,удерживаемыеоднимисиламитрения,лучшепосадитьнадвухстороннийскотч, лишивихвозможностииздаватьмерзкиезвуки разинавсегда.
Боковыестенкитакжелучшепосадитьна болты,недаваяимвозможностиболтаться,а самкорпусоклеитьизнутригофрированным картоном(оставляяоткрытымилишьвентиляционныеотверстия),илидругимшумопоглощающимматериалом,которыйможноприобрести,например,вавтомагазине.Конечно,это существенноснизиттеплоотдачу,увеличивая температурувнутрикорпуса,нодлябольших корпусовэтонепроблема.Избытоксвободногопространстванепозволяеттемпературе приближатьсякопаснойотметке.Впрочем,все решаетэксперимент.Современныематеринскиеплатыснабженыкакминимумоднимили двумятермодатчиками,позволяющимивести круглосуточныймониторинг.
Некоторыепредпочитаютоборачиватькорпус пенопластомснаружи,ноэтоплохаяидея, посколькуприоклеиваниикорпусагофрированнымкартономизнутримыгасимзвуковыеволныдотого,каконидойдутдостенок, резонирующихвтактсшумомимногократно усиливающихегоуровень,откоторогоне спасаетдажерасположенныйсверхупенопласт.Впрочем,учитывая,чточастьисточниковшумаприкрученаккорпусуипередает колебаниянепосредственночерезметалл, минуявоздушнуюсреду(инашкартон),дополнительныйуровеньзащитыввидепенопласта отнюдьнепомешает.Главное—помнитьпро вентиляционныеотверстия,отступаяотних хотябынанесколькосантиметров,поскольку черезузкуюпенопластовую«шахту»,вырезаннуюпоразмеруотверстий,воздухциркулирует сбольшойнеохотой.
Не стоит забывать и про деревянные корпуса (между прочим, очень даже модные в последние время). Они великолепно гасят шумы, однако требуют установки нескольких вентиляторов для эффективной цир-
куляции воздуха, особенно если процессор переведен на пассивное охлаждение. Весь фокус в том, что дополнительные вентиляторы (естественно, низкооборотистые) следует размещать в глубине корпуса, тогда наружу вместо шума вырвется лишь слабый шелест.
Заключение
ПроблемойсниженияшумамыщъхвпервыеозаботилсяприпереходесPentiumIIна
PentiumIII.Посадивкристаллнакрутой(потем временам)радиаторGoldenOrb,мыщъхбыл буквальноошеломлен,нонескоростьюработы,агромкостьюшумаивибрациейкорпуса. Смутнопредставляясебевозможностьтворческойработывтакихусловиях,мыщъхначал экспериментироватьсрадиаторамиразных фирми,увидевdatasheetнапроцессорCyrixC3 Ezra,сразужепрониксякнемулюбовью.
Воттак,снижаяшумностькомпонентоводного задругим,мыщъхдобилсятого,чтокомпьютер (дажесоткрытойкрышкой)пересталбыть слышенвообще!z
Какзатормозитьвентилятор
Зависимостьуровняшумаотчастотыоборотовоченьсложная(и ктомужесвязанасконструктивнымиособенностямиконкретной
моделивентилятора),ноизсамыхобщихсоображенийпонятно:чем нижеобороты,темменьшеесопротивлениеоказываетвоздушный поток,нижебиениянесбалансированнойкрыльчаткиит.д.При частотепорядка1000оборотоввминутубольшинствовентилято- ровпрактическинешумит,ноужепри2000—3000оборотовшум становитсябуквальноневыносимым,чтонеудивительно,поскольку объемперекачиваемоговоздухапропорционаленчастотеоборотов, ашум—частотевпятойстепени.Следовательно,частотуоборотов нужноснижать.Акак?
Большинствосовременныхматеринскихплатснабженофункцией SmartFanControl,позволяющейизменятьчастотувращениявентиляторавзависимостиоттемпературыспециальногодатчика.Некоторыеплаты(как,например,Epoc)имеютвнешнийдатчик(termostick) исвободноегнездоSmartFanControl,вкотороеможноподключить вентиляторотблокапитания.
Если же такого гнезда нет, можно воткнуть резистор номиналом 30-100 Ом (нужная величина подбирается экспериментально) в цепь питания вентилятора (красный провод, расположенный посередине разъема). При этом следует учитывать, что при пуске вентилятор требует больше тока, чем при работе, и потому, если переборщить с сопротивлением, вентилятор может попросту не запуститься! Поэтому для страховки параллельно резистору следует подключить приклеенный к процессору термистор с
обратной характеристикой. Холодный термистор имеет небольшое сопротивление, и потому вентилятор запускается на ура. Затем, по мере нагрева процессора, сопротивление термистора возрастет до нескольких килоом и он уже не оказывает на резистор практически никого шунтирующего воздействия. Правда при кратковременном выключении компьютера (когда радиатор процессора еще не успел остыть) сопротивление термистора по-прежнему велико и вентилятор имеет шанс не запуститься. Однако для серверов эта проблема неактуальна, поскольку их выключают редко, а от бросков по питанию защищает UPS.
/ 144 |
xàêåð 06 /102/ 07 |
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
|
|
|
C |
|
E |
|
|
|
||||||
|
|
X |
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
d |
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
i |
|
|
F |
|
|
|
|
|
|
|
i |
|
||
|
|
|
|
|
|
|
|
t |
|
|
|
|
|
|
|
|
|
t |
|
||||
P |
D |
|
|
|
|
|
|
|
|
o |
P |
D |
|
|
|
|
|
|
|
|
o |
||
|
|
|
|
NOW! |
r |
|
|
|
|
NOW! |
r |
||||||||||||
|
|
|
|
|
BUY |
|
|
|
|
|
|
|
BUY |
|
|
||||||||
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
to |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
w |
|
|
|
|
|
|
|
|
|
m |
w |
|
|
|
|
|
|
|
|
|
m |
||
w Click |
|
|
|
|
|
|
o |
w Click |
|
|
|
|
|
|
o |
||||||||
|
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
||
|
. |
|
|
|
|
|
|
.c |
|
|
. |
|
|
|
|
|
|
.c |
|
||||
|
|
p |
df |
|
|
|
|
e |
|
|
|
p |
df |
|
|
|
|
e |
|
||||
|
|
|
|
|
g |
|
|
|
|
|
|
|
|
g |
|
|
|
||||||
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
||||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
E |
|
|
|
|
|
|
C |
|
E |
|
|
|
||||||
|
|
X |
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|
||||||
|
- |
|
|
|
|
|
d |
|
|
- |
|
|
|
|
|
d |
|
||||||
|
F |
|
|
|
|
|
|
|
i |
|
|
F |
|
|
|
|
|
|
|
i |
|
||
|
|
|
|
|
|
|
|
t |
|
|
|
|
|
|
|
|
|
t |
|
||||
P |
D |
|
|
|
|
|
|
|
|
o |
P |
D |
|
|
|
|
|
|
|
|
o |
||
|
|
|
|
NOW! |
r |
|
|
|
|
NOW! |
r |
||||||||||||
|
|
|
|
|
BUY |
|
|
|
|
|
|
|
BUY |
|
|
||||||||
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
to |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
w |
|
|
|
|
|
|
|
|
|
m |
w |
|
|
|
|
|
|
|
|
|
m |
||
w Click |
|
|
|
|
|
|
o |
w Click |
|
|
|
|
|
|
o |
||||||||
|
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
||
|
. |
|
|
|
|
|
|
.c |
|
|
. |
|
|
|
|
|
|
.c |
|
||||
|
|
p |
df |
|
|
|
|
e |
|
|
|
p |
df |
|
|
|
|
e |
|
||||
|
|
|
|
|
g |
|
|
|
|
|
|
|
|
g |
|
|
|
||||||
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
||||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
97)АПРЕЛЬ06( x
2007
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
102