FAT FORMAT.kex

Projects yet to be implemented in working code
  • Спасибо, почитаем :)
    ушёл...
  • А как вам такой вариант?:

    1. Функция чтения/записи посекторно на НЖМД. В ядре.
    2. Функция в ядре, разрешающая/запрещающая низкоуровневый доступ к диску. Если отключена, никто кроме Kernel'a не может писать на диск, только через ФС.
    3. Программа для ручного включения/выключения защиты от low level. Можно будет вывести в трей ее значок.
    4. Пункт 2 также при вызове проверяет хеш-код файла из которого был создан вызывающий поток . Если хэш не соответствует хэшу пункта 3, то низкоуровневый доступ к диску запрещается. Так как пункт 3 часто обновлять не придется, то его хэш будет в ядре. Т. е. никакая другая программа, кроме как п. 3 защиту не отключит без ведома пользователя. Минус один - код-зловред может переписать хэш в ядре под свой. Но этот минус потом можно будет убрать.
    5. Ну ,собственно, конечная программа, желающая напрямую работать с диском, тот же форматёр, например. Ей придется попросить пользователя включить low-level доступ.

    Как-то так, но это только набросок, первое, что пришло в голову...
    ушёл...
  • У нас не многопользовательская среда. Какой смысл в заморочках с разрешением/запрещением, если в конце концов любая программа может получить доступ, не спрашивая об этом пользователя?
    in code we trust
  • mike.dld wrote:У нас не многопользовательская среда. Какой смысл в заморочках с разрешением/запрещением, если в конце концов любая программа может получить доступ, не спрашивая об этом пользователя?
    Читайте, пожалуйста, внимательно. Разрешить доступ к диску сможет только ОДНА специально предназначенная для этого программа, КОНТРОЛИРУЕМАЯ ПОЛЬЗОВАТЕЛЕМ, входящая в дистрибутив как системная, если какая-нибудь другая программа захочет доступа, она не сможет, так как хэш ее будет другим.
    ушёл...
  • А что помешает другой программе вызвать функцию, разрешающую чтение-запись на секторном уровне? Пока у ОС нет средств контроля прав доступа, она никак не сможет запретить программам вызывать любые функции.
  • Обновленный вариант:

    1. Функция чтения/записи посекторно на НЖМД. В ядре. При вызове проверяет наличие доступа к секторам диска.
    2. Функция в ядре, разрешающая/запрещающая низкоуровневый доступ к диску. Если отключена, никто кроме Kernel'a не может писать на диск, только через ФС.
    3. Программа для ручного включения/выключения защиты от low level. Можно будет вывести в трей ее значок.
    4. Пункт 2 также при вызове проверяет хеш-код файла из которого был создан вызывающий поток . Если хэш не соответствует хэшу пункта 3, то низкоуровневый доступ к диску запрещается. Так как пункт 3 часто обновлять не придется, то его хэш будет в ядре. Т. е. никакая другая программа, кроме как п. 3 защиту не отключит без ведома пользователя. Минус один - код-зловред может переписать хэш в ядре под свой. Но этот минус потом можно будет убрать.
    5. Ну ,собственно, конечная программа, желающая напрямую работать с диском, тот же форматёр, например. Ей придется попросить пользователя включить low-level доступ.
    ушёл...
  • Куча наворотов, прилично усложняющих ядро. Какой смысл их делать? Тогда уж лучше ввести нормальную систему контроля прав доступа. Работает программа от имени администратора -- пожалуйста, твори, что хочешь. Нет прав администратора -- иди куда подальше от потенциально опасных функций.
  • SII wrote:Куча наворотов, прилично усложняющих ядро. Какой смысл их делать?
    Ну все это можно сделать в виде *.inc. 2 функции усложнят?
    SII wrote: Тогда уж лучше ввести нормальную систему контроля прав доступа. Работает программа от имени администратора -- пожалуйста, твори, что хочешь. Нет прав администратора -- иди куда подальше от потенциально опасных функций.
    А вот до этого КолибриОС очень далеко...
    ушёл...
  • Как вариант, можно обойтись без хеша: при первой попытке низкоуровневой записи на диск через функцию 70.Х ядро выдаёт запрос на подверждение (пример: "программа X (путь /*d/*/*) пытается осуществить запись на диск /*d/*; Разрешить/ Запретить / Разрешить для всех /Запретить для всех. " И бо'льшая ответственность перекладывается на плечи мозговитого пользователя, а не программиста.
  • staper wrote:Как вариант, можно обойтись без хеша: при первой попытке низкоуровневой записи на диск через функцию 70.Х ядро выдаёт запрос на подверждение (пример: "программа X (путь /*d/*/*) пытается осуществить запись на диск /*d/*; Разрешить/ Запретить / Разрешить для всех /Запретить для всех. " И бо'льшая ответственность перекладывается на плечи мозговитого пользователя, а не программиста.
    Спасибо, staper, я то же пришел к такому решению, просто думал, что тема исдохла, поэтому не стал писать :)
    ушёл...
  • Who is online

    Users browsing this forum: No registered users and 2 guests