Как узнать принадлежит ли сектор на диске файлу?

Тема в разделе "WASM.ASSEMBLER", создана пользователем Sphinx2001, 4 ноя 2004.

  1. Sphinx2001

    Sphinx2001 New Member

    Публикаций:
    0
    Регистрация:
    3 ноя 2004
    Сообщения:
    2
    Восстанавливаю данные с винта, решил немного оптимизировать свой труд.

    Необходимо определить принадлежит ли заданный сектор какому нибудь файлу. Как это сделать?
     
  2. kAsm

    kAsm New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2004
    Сообщения:
    3
    Адрес:
    Russia
    А какая файловая система?
     
  3. Arvensis

    Arvensis New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2004
    Сообщения:
    72
    Адрес:
    Russia
    Изменить каждый 512 байт в файле (заксорить), а потом посмотреть, изменился ли первый байт в секторе. Потом восстановить. Должно работать с любой файловой системой и не требует умственных затрат :)
     
  4. Stariy

    Stariy Member

    Публикаций:
    0
    Регистрация:
    22 окт 2003
    Сообщения:
    529
    Адрес:
    Russia


    Не, это лажа... вот те надо проверить сектор с номером 123456, и какой файл ты будешь колупать?

    ИМХО, самое простое и надежное - разобрать бут-сектор, определить размер кластера, путем простых арифм. операций понять, какому кластеру принадлежит сектор, затем считать фат и посмотреть на запись, соответствующую найденому кластеру. Если там ноль - значит кластер(а следовательно, и сектор) пустой, если че-то есть - значит чем-то занят. Ну мож еще какие ньюансы есть, но идея такая.
     
  5. Stariy

    Stariy Member

    Публикаций:
    0
    Регистрация:
    22 окт 2003
    Сообщения:
    529
    Адрес:
    Russia
    Да, это все, естественно, работает для фатов, для других - надо думать...
     
  6. Sphinx2001

    Sphinx2001 New Member

    Публикаций:
    0
    Регистрация:
    3 ноя 2004
    Сообщения:
    2
    ну вообщета система ФАТ32

    to Stary я тоже так думал, но думал может есть готовый алгоритм...

    а вообще столкнулся с тем что с этого винта не получилось считать (правда на TC) сектор не absread не через biosdisk (выходят странные ошибки типа потерены данные во время передачи или что то в этом роде)

    правда на асм анологичный код делать я еще не пытался...

    так что решел залить винт в файл, и читая блоками размером с сектор искать куски файлов по сигнатуре
     
  7. Stariy

    Stariy Member

    Публикаций:
    0
    Регистрация:
    22 окт 2003
    Сообщения:
    529
    Адрес:
    Russia
    под дос пишешь?

    А алгоритм я же дал :derisive: Осталось только реализовать. Там ума то никакого не надо, только немного усидчивости...
     
  8. tylerdurden

    tylerdurden New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    322
    Так капай ФАТ... там есть признак свободный кластер или нет (если нет, то и имя его прописанно :)