The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Атака на секретные данные методом холодной перезагрузки

21.02.2008 23:07

Группа исследователей безопасности нашла интересный способ получения секретных ключей, используемых при шифровании дисковых разделов такими системами, как BitLocker, FileVault, dm-crypt и TrueCrypt, имея физический доступ к работающей машине с зашифрованными данными.

Метод основан на способности оперативной памяти (DRAM) какое-то время сохранять информацию после отключения питания и отсутствия импульсов регенерации ее содержимого. Причем, чем ниже температура, тем дольше сохраняются данные, например, выдернув чип и поместив его в жидкий азот(-196 градусов C), данные удалось считать через несколько часов. При температуре -50 градусов, данные сохраняются более 10 минут. Получив таким образом чип памяти из работающей машины, среди содержимого памяти нетрудно выявить ключи шифрования и прочую конфиденциальную информацию.

В обычных условиях, после прекращения регенерации, DRAM память сохраняет свое содержимое от нескольких секунд до нескольких минут, поэтому пользователь, перезагрузив компьютер по питанию и не выждав определенное время, рискует тем, что секретные данные еще останутся в каких-то областях памяти. В качестве подтверждения был проведен нехитрый эксперимент: компьютер был выключен, затем включен и загружен с помощью обычного дистрибутива Linux, после загрузки в памяти удалось найти следы запущенных в прошлой сессии программ.

  1. Главная ссылка к новости (http://citp.princeton.edu/memo...)
  2. FAQ
  3. New Research Result: Cold Boot Attacks on Disk Encryption
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/14358-crypt
Ключевые слова: crypt, security
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (52) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, mv (??), 23:36, 21/02/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Паяльник всё ещё дешевле и гарантированно надёжней азотной камеры.
     
     
  • 2.10, raVen (?), 08:41, 22/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Паяльник всё ещё дешевле и гарантированно надёжней азотной камеры.

    это называется не "паяльник", а "терморектальный криптоанализ" :-)

     

  • 1.2, den (??), 23:57, 21/02/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    черт, ну нет спасенья от спецслужб :/
     
  • 1.3, Аноним (-), 00:23, 22/02/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Блин, до чего техника дошла!
    Скоро все пароли будут снимать с крошек еды, застрявшей в клаве.
    Ужоснах...
     
  • 1.4, Аноним (4), 01:13, 22/02/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    самый надежный пароль -- тот что никому не нужен
     
     
  • 2.21, www.andr.ru (?), 13:12, 22/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >самый надежный пароль -- тот что никому не нужен

    в том то и дело.
    если паролем закрыт манагерский десктоп в офисе - не велика ценность
    а если в отпуске в турции позарез надо зайти и порулить счётом на котором $10млн., а кроме интернет-кафе ничего поблизости нет - 100 раз подумаешь.

    Если в интернет-кафе около каждого писюка стоит холодильник - ни за что не полезу на свой ящик в мэйл-ру :))) теперь каняво

     
     
  • 3.23, Michael Shigorin (ok), 13:18, 22/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Если в интернет-кафе около каждого писюка стоит холодильник - ни за что
    >не полезу на свой ящик в мэйл-ру :))) теперь каняво

    Про отпуск в турции -- верю, про счёт -- не вяжется ;)

    Желающие могут озадачиться пиропатронами, никогда не используемым телефоном (с отдельными IMEI и симкой) и прочими мерами, но стоит ли так жить?..

     

  • 1.5, Серекй (?), 04:45, 22/02/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Интересно, а "востанавливать" содержимое экранна монитора, памяти на растоянии иследуя изменения в магнитном поле работающего компьютора насколько сложно?
    Впринцепи при наличии чуствительной аппаратуры и хороших алгоритмов выделения полезного сигнала несложно... Хотя дешевли воткнуть передатчик в "мамку" или "побеседовать" с персоналом... :)
     
     
  • 2.6, Аноним (-), 07:04, 22/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Перехват видеосигнала (у телевизора который например показывает запись с видеоплейера) давно разработанная и применяемая технология.
    С мониторами на аналоговом интерфесе (D-SUB) думаю проблем не возникало.
     
  • 2.24, Michael Shigorin (ok), 13:29, 22/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Интересно, а "востанавливать" содержимое экранна монитора, памяти на растоянии иследуя изменения в
    >магнитном поле работающего компьютора насколько сложно?

    Как-то (лет десять тому) пробегала программулька, которая при выставлении нужного видеорежима VGA играла при помощи монитора на частоте, укладывавшейся в 88--108MHz, нечто ловимое FM-приёмником... а точнее, "Fur Elise" Бетховена.

    Смысл был в том, что даже с бытовой аппаратурой при некотором "подыгрывании" со стороны передатчика эффект вполне наблюдаем.

    Только вот у меня тогда VGA ещё своего не было. :)

    > Хотя дешевли воткнуть передатчик в "мамку"

    Да вон в каких-то (делловских? не помню) буках нашли странный чип около клавиатуры год или два тому.  Возможно, на schneier.com найдётся разбор.

     
  • 2.53, прохожий (?), 13:23, 24/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Интересно, а "востанавливать" содержимое экранна монитора, памяти на растоянии иследуя изменения в
    >магнитном поле работающего компьютора насколько сложно?
    >Впринцепи при наличии чуствительной аппаратуры и хороших алгоритмов выделения полезного сигнала несложно...
    >Хотя дешевли воткнуть передатчик в "мамку" или "побеседовать" с персоналом... :)
    >

    слово для гугля "пэмин"

     

  • 1.7, Аноним (4), 07:12, 22/02/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Насколько я помню, цикл регенерации динамической памяти составляет единицы-десят... большой текст свёрнут, показать
     
     
  • 2.8, абырвалг (?), 07:44, 22/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >А "найти следы запущенных в прошлой сессии программ" можно и через триста
    >лет, лишь бы своп никто не попортил. ;-)

    По ссылке написано как проверить гипотезу, и схема работает. Так что Вам на ЛОР, Уважаемый.

     
     
  • 3.16, HJ (??), 10:57, 22/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    попробовал сделать, забил всю память (около 800 мб) переменной ARGON, затем выключил на секунду-две питание (выдернул шнур), загрузился, проверил че осталось в памяти.
    действительно обнаружил несколько участков, заполненых словом ARGON
    опыт проводил при температуре около 23-25 градусов.
    ИМХО вероятность похищения секретных ключей этим методом достаточно низка, возможно, как пишут авторы, чтобы поиметь больше данных, нужно охладить систему, например углекислотным огнетушителем, но при этом велика вероятность поврежденя системы статическим электричеством.
     
  • 2.52, fi (ok), 02:57, 24/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Насколько я помню, цикл регенерации динамической памяти составляет единицы-десятки миллисекунд. После этого
    >времени, при отсутствии регенерации, целостность содержимого памяти не гарантируется даже в
    >работающей системе, хуже того, гарантируется разрушение информации.

    В лаборатории можно прочитать историю динамической памяти до 6 итераций - память материала, без всякого азота. Поэтому это минимальное число для перезаписи во время затирания приватных данных. Но может быть сейчас уже и больше циклов требуется.

     

  • 1.9, Василий (??), 07:55, 22/02/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В таких критических условиях работает такое редкое оборудование, которое и соответствующим образом охраняется. Так что идея опять провалилась - сперва надо решать проблему с охраной оборудования, а потом уже думать про жидкий азот. :-)

    Либо в таких условиях работает оборудование в космосе, где пока и охрана не нужна, но куда физический доступ пока тоже осложнён. :-)

     
     
  • 2.17, Ферма (?), 11:07, 22/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >В таких критических условиях работает такое редкое оборудование, которое и соответствующим образом
    >охраняется. Так что идея опять провалилась - сперва надо решать проблему
    >с охраной оборудования, а потом уже думать про жидкий азот. :-)
    >
    >
    >Либо в таких условиях работает оборудование в космосе, где пока и охрана
    >не нужна, но куда физический доступ пока тоже осложнён. :-)

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

     
     
  • 3.18, Smile (??), 11:33, 22/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    на сколько известно из популярных передач, когда самолет "плюхается", то блок системы "свой-чужой" автоматически уничтожается спецзарядом. Поэтому чтобы завлядеть этим блоком и необходимо угонять самолет.
     
     
  • 4.26, Ферма (?), 14:14, 22/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    это вы сами придумали?!
    для тех кто в танке поясняю-система хранения кодов свой-чужой сейчас представляет собой память,на которую оные и пишутся каждый раз заново перед взлетом, при падении память обесточивается,раньше этого было достаточно, теперь пожалуй и правда придется пиропатрон закладывать.
    пример: падение российского СУ-27 в литве

     
     
  • 5.44, name (??), 23:11, 22/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, это изучают на военной кафедре, например. Система распознавания может самоуничтожаться.
     
  • 3.19, Гость_0 (?), 11:44, 22/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >идеальный пример система "свой-чужой" в военной авиации-самолет плюхнулся,пропало эл.питание должны пропасть данные системы распознавания,а теперь читаем вышеприведенную новость...  

    при катастрофе оборудование "свой-чужой" самоуничтожается автоматически (должно по крайней мере) + пока до самолёта доберутся - память успеет 10 раз исчезнуть :)

     

  • 1.25, Дмитрий Ю. Карпов (?), 13:35, 22/02/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Значит, надо делать такие корпуса, которые не сразу откроешь. А при включении, когда по системе идёт сигнал Reset, память должна обнуляться.
     
     
  • 2.27, Василий (??), 14:24, 22/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Значит, надо делать такие корпуса, которые не сразу откроешь. А при включении,
    >когда по системе идёт сигнал Reset, память должна обнуляться.

    Память должна обнуляться не при нажатии на Reset, а при попытке вскрытия корпуса компьютера. Ведь после вытаскивания памяти Reset не спасёт. Вопросы скорости вытаскивания памяти и помещения её в жидкий азот оставим пока потомкам. :-)

     

  • 1.28, Аноним (4), 14:56, 22/02/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Выглядит туфтой. Всем известно каков цикл регенерации оперативы. Если она так хорошо всё хранит на кой чорт тогда она тысячи раз в секунду регенерится? за подробностями смотрите доку Ульриха Дрипера http://lwn.net/Articles/250967/

    По поводу ARGON не обольшайтесь, у меня тоже cat /proc/kcore | grep -a ARGON находит :). Догадайтесь почему.

     
     
  • 2.29, pavlinux (ok), 15:51, 22/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Выглядит туфтой. Всем известно каков цикл регенерации оперативы. Если она так хорошо
    >всё хранит на кой чорт тогда она тысячи раз в секунду
    >регенерится?

    Regeneration не есть Rewite

     
  • 2.31, Антон (??), 16:27, 22/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >По поводу ARGON не обольшайтесь, у меня тоже cat /proc/kcore | grep
    >-a ARGON находит :). Догадайтесь почему.

    Т.е. вы искренне уверены, что одно выполнение grep ARGON забъет вам разные случайные места памяти словом ARGON ? :-)

     
     
  • 3.32, Аноним (4), 17:16, 22/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Вера тут ни при чём, выполни и посмотри.
     
  • 2.34, naquad (??), 17:22, 22/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Выглядит туфтой. Всем известно каков цикл регенерации оперативы. Если она так хорошо
    >всё хранит на кой чорт тогда она тысячи раз в секунду
    >регенерится? за подробностями смотрите доку Ульриха Дрипера http://lwn.net/Articles/250967/
    >
    >По поводу ARGON не обольшайтесь, у меня тоже cat /proc/kcore | grep
    >-a ARGON находит :). Догадайтесь почему.

    Дорогой товарищ, у вас строка "ARGON" находится минимум потому, что она есть в аргументах grep'a, а аргументы где живут? правильно - в памяти! так что не надо рассказывать.
    плюс к тому случайные совпадения тоже есть.
    а на тему метода - очередной "нефиг-делать-давайте-велосипед-придумаем".

     
     
  • 3.38, pavlinux (ok), 18:22, 22/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Ну а если,

      static const char WORD[8] = "NETROGEN";

      и манипуляции с lseek() fseek() и read();
      на предмет *fd =! &WORD + sizeof(WORD)


     
     
  • 4.39, pavlinux (ok), 18:24, 22/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Я бы попробовал но у меня ECC на компе :)
     
  • 4.42, pavlinux (ok), 19:11, 22/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Для тех кто ф танке....

    Прорыть всё память, кроме того места куда указывает &WORD + смещение в sizeof байтофф.

     
  • 4.49, naquad (??), 15:12, 23/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    ну в примере был показан grep. а он такими манипуляциями не страдает.
     
  • 3.40, Аноним (4), 18:32, 22/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Дорогой товарищ, у вас строка "ARGON" находится минимум потому, что она есть в аргументах > grep'a, а аргументы где живут? правильно - в памяти! так что не надо рассказывать.

    Простите, Вы на какой пост отвечали? Я как раз про это в нем и говорю. И результаты поиска тоже живут в памяти.

     
     
  • 4.41, Антон (??), 18:43, 22/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Простите, Вы на какой пост отвечали? Я как раз про это в
    >нем и говорю. И результаты поиска тоже живут в памяти.

    И что из того, что 5 из 1000 совпадений будут связаны с работой grep ? Ситуации это не меняет. Ищите по grep 'AR''GON' или grep '[A][R][G][O][N]' если на то пошло.

     
  • 3.45, botropsschlegelii (?), 01:26, 23/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >>
    >>По поводу ARGON не обольшайтесь, у меня тоже cat /proc/kcore | grep
    >>-a ARGON находит :). Догадайтесь почему.
    >
    >Дорогой товарищ, у вас строка "ARGON" находится минимум потому, что она есть
    >в аргументах grep'a, а аргументы где живут? правильно - в памяти!
    >так что не надо рассказывать.

    imho, правильнее было бы делать
    dd if=/proc/kcore of=mem.bin && strings mem.bin | grep ARGON

     
  • 2.59, Аноним (-), 20:25, 14/03/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Выглядит туфтой. Всем известно каков цикл регенерации оперативы. Если она так хорошо
    >всё хранит на кой чорт тогда она тысячи раз в секунду регенерится?

    Затем, что она "не так уж и хорошо" хранит. И если раз в сколько-то там не регенерировать, то _может_ забыть. Но никто не гарантирует, что _обязательно_ забудет. Когда-нибудь доводилось смотреть осциллографом напряжение на конденсаторе?

     

  • 1.30, Аноним (4), 15:56, 22/02/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    не есть, но еслиб оператива могла хотя бы 100мс держать свои данные то тогда бы не тратил контроллер памяти 40% времени на реген. Или 60%, уже не помню, в той доке что скинул выше всё написано
     
  • 1.33, Moralez (??), 17:21, 22/02/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Можно глупый вопрос. А аллокатор при освобождении памяти её затирает или нет? Если да, то данная проблема практически не представляет опасности. Надо ж аварийно комп перегрузить...

    А вот если аллокатор не затирает, то можно непривилегированному процессу безо всяких перезагрузок постоянно память запрашивать-освобождать-запрашивать-освобождать и просматривать что там есть.... :)

     
     
  • 2.35, ледо (?), 17:47, 22/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Можно глупый вопрос. А аллокатор при освобождении памяти её затирает или нет?
    >Если да, то данная проблема практически не представляет опасности. Надо ж
    >аварийно комп перегрузить...
    >
    >А вот если аллокатор не затирает, то можно непривилегированному процессу безо всяких
    >перезагрузок постоянно память запрашивать-освобождать-запрашивать-освобождать и просматривать что там есть.... :)

    Алокатор мемсет не выполняет.
    после команды free просто помечается как свободная. Данные остаются.
    Вообще эта проблема решается очень легко и эффективно. При подаче питания на чип памяти делается превентивный мемсет на всю хранимую область.

     
     
  • 3.37, Аноним (4), 18:02, 22/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >после команды free просто помечается как свободная. Данные остаются.
    >Вообще эта проблема решается очень легко и эффективно. При подаче питания на
    >чип памяти делается превентивный мемсет на всю хранимую область.

    Скорее при отключении. на случай если оперативу вытащат.

     
     
  • 4.43, Василий (??), 20:07, 22/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >>после команды free просто помечается как свободная. Данные остаются.
    >>Вообще эта проблема решается очень легко и эффективно. При подаче питания на
    >>чип памяти делается превентивный мемсет на всю хранимую область.
    >
    >Скорее при отключении. на случай если оперативу вытащат.

    При штатном отключении. Но это опять делает идею бесполезной. Кто прогарантирует штатность отключения? Само устройство просто должно быть таким, которое не может хранить данные без питания. Невозможность хранения без питания надо проектировать специально. Иначе слово "оперативная" неоправданно присутствует в названии памяти.

     
     
  • 5.58, Дмитрий Ю. Карпов (?), 17:22, 06/03/2008 [^] [^^] [^^^] [ответить]  
  • +/
    > При штатном отключении. Но это опять делает идею бесполезной. Кто прогарантирует штатность отключения?

    "Отключение" == "пропадание питания". На остатке заряда в аварийном конденсаторе вшитый в чип памяти контроллер даёт команду конденсаторам "сбросить заряд".

     
  • 3.47, Moralez (??), 06:46, 23/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Хеее.... Если аллокатор мемсет не выполняет, получается, можно с любыми привилегиями попросить памяти, поскотреть что там, освободить, через некоторое время повторить. Глядишь, что-нибудь интересное найдётся. Смысл париться с перезагрузками нештатными? Но что-то не верится, что всё так плохо! Наверное обнуляет всё-таки...
     
     
  • 4.50, brn (?), 20:39, 23/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Хеее.... Если аллокатор мемсет не выполняет, получается, можно с любыми привилегиями попросить
    >памяти, поскотреть что там, освободить, через некоторое время повторить. Глядишь, что-нибудь
    >интересное найдётся. Смысл париться с перезагрузками нештатными? Но что-то не верится,
    >что всё так плохо! Наверное обнуляет всё-таки...

    ОС очищает память процесса при завершении.

     
     
  • 5.51, Michael Shigorin (ok), 21:20, 23/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >>Наверное обнуляет всё-таки...
    >ОС очищает память процесса при завершении.

    "Освобождает" и "затирает" -- две большие разницы.

     
     
  • 6.54, nuclight (?), 08:51, 27/02/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >>>Наверное обнуляет всё-таки...
    >>ОС очищает память процесса при завершении.
    >
    >"Освобождает" и "затирает" -- две большие разницы.

    Случаи, когда из незатертой памяти можно прочитать критичные данные  - предмет соответствующих бюллетенеей безопасности, такие выпускались неоднократно для разных ОС. Так что можно не обольщаться.

     
  • 2.57, Дмитрий Ю. Карпов (?), 17:20, 06/03/2008 [^] [^^] [^^^] [ответить]  
  • +/
    > Аллокатор при освобождении памяти её затирает или нет?

    В умных операционках делается так:

    При освобождении память не обнуляется, а помещается в "пул грязных страниц".

    Если страница отдаётся под кэширование диска, DMA-контроллер заливает туда данные с диска, затирая старое содержимое. Аналогично при некоторых операциях, гарантирующих затирание данных; обычно это запросе доверенных (чаще всего ядерных) модулей.

    Если процессору нечего делать, он обнуляет грязные страницы, помещая их в "пул чистых страниц".

    Alloc делается из "пула чистых страниц". Если в "пуле чистых страниц" пусто, то берётся память из "пула грязных страниц" или из кэша, обнуляется, и затем выдаётся запрашивающей задаче.

     

  • 1.36, Аноним (4), 17:52, 22/02/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Надо в каждый системник пиропатрон встраивать, на датчик открытия корпуса :D
     
  • 1.46, Pilat (?), 01:44, 23/02/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Лет lwfnm назад я такой эффект наблюдал в персоналках ЕС1040 или 1041 - там можно было загрузить свой знакогенератор, так после выключения/включения машины оперативная память не очищалась, но "сыпалась" - очертания букв сохранялись, но не все пиксели из маски букв. То есть некоторые ячейки памяти терялись.
     
  • 1.48, Bolek (?), 08:06, 23/02/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    на машинах типа Электроника УКНЦ и Yamaha после холодного рестарта достаточно было наисать
    poke &h8000,255
    poke &h8001,255
    poke &h8002,255

    и полностью восстанавливался текст программы на бейсике. оно даже работало и позволяло отсэйвить текст на мега-дискетку 5,25 :)

     
     
  • 2.55, LostSoul (??), 13:43, 03/03/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >на машинах типа Электроника УКНЦ и Yamaha после холодного рестарта достаточно было
    >наисать
    >poke &h8000,255
    >poke &h8001,255
    >poke &h8002,255
    >
    >и полностью восстанавливался текст программы на бейсике. оно даже работало и позволяло
    >отсэйвить текст на мега-дискетку 5,25 :)

    блин где-ж ты был когда я по 15 раз перенабирал текст программы)

     
     
  • 3.56, Горка (?), 16:48, 06/03/2008 [^] [^^] [^^^] [ответить]  
  • +/
    дык мануал- читать надо было,там всё было описано
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру