Форматирование дискеты нестандартное

Тема в разделе "WASM.ASSEMBLER", создана пользователем yureckor, 25 июл 2005.

  1. yureckor

    yureckor New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    494
    Адрес:
    Russia
    Можно ли сделать subj под Винду?

    Plz, бросьте исходник под Win или DOS или тыкните в ссылку.



    Нашел немного, сейчас разбираюсь, но еще бы исходников...
     
  2. yureckor

    yureckor New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    494
    Адрес:
    Russia
    под Винду нашел только SHFormatDrive

    ссылка

    Но как нестандартно отформатировать и потом читать?
     
  3. yureckor

    yureckor New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    494
    Адрес:
    Russia
    мать честная, я прочел сейчас столько ламерских и левых статей по форматировани/защите, что наверно поглупел :dntknw:

    Нихрена найти не могу
     
  4. iamlamer

    iamlamer New Member

    Публикаций:
    0
    Регистрация:
    20 июн 2005
    Сообщения:
    273
    Адрес:
    Russia
    А тебе оно надо? Есть такая вещь - FDA, она почти любой формат дискеты копирует один в один.
     
  5. yureckor

    yureckor New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    494
    Адрес:
    Russia
    Мне надо элементарную защиту от копирования, чтоб дискету со своим ключом юзеры не наплодили.
     
  6. iamlamer

    iamlamer New Member

    Публикаций:
    0
    Регистрация:
    20 июн 2005
    Сообщения:
    273
    Адрес:
    Russia
    Нестандартное форматирование копируется при помощи ФДА. Измерение "профиля" дорожки (пару недель назад был топик) очень неудобно на практике. А вот элементарней обычной "дырки" еще ничего не придумано - аккуратненько царапаешь дискету, определяешь координаты сбойного сектора и зашиваешь эти координаты в свою прогу. Конечно, можно и дырку воспроизвести, и прогу твою обмануть/ломануть, но по соотношению "затраты на создание"/"затраты на копирование" этот способ лучший с огромным преимуществом.
     
  7. yureckor

    yureckor New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    494
    Адрес:
    Russia
    да знаю я все это! Я же Спектрумщик.

    КАК это сделать под Винду?
     
  8. SteelRat

    SteelRat New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2004
    Сообщения:
    409
    Есть книжка по этому делу... В ней исходники на Це под DOS как раз по нестандартному форматированию одной дорожки. Если устроит могу засканировать исходник.
     
  9. iamlamer

    iamlamer New Member

    Публикаций:
    0
    Регистрация:
    20 июн 2005
    Сообщения:
    273
    Адрес:
    Russia
    К контроллеру дисковода обращаться напрямую, через порты. Процедуры чтения-записи очень простые, команд по 30, причем не обязательно ведь юзать DMA. Если лениво писать свои дрова для доступа к портам из нуля, и для универсальности доступа (чтобы и в W95/98/ME, и в NT/2000/XP), юзай tvichw32.



    Проще просто некуда. И прпи этом средний хакер попотеет (не очень долго, но попотеет), ломаючи.
     
  10. yureckor

    yureckor New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    494
    Адрес:
    Russia
    SteelRat

    кинь пожалуйста, если не трудно.



    iamlamer>Процедуры чтения-записи очень простые, команд по 30

    Ну дайте мне хоть один пример или ссылку!
     
  11. yureckor

    yureckor New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    494
    Адрес:
    Russia
    нашел я пример для ламеров :)
    Код (Text):
    1.  
    2.   .MODEL  tiny
    3.   .DATA
    4. ; Буфер, в который будет прочитан сектор диска
    5. buf db 512 dup(?)
    6.   .CODE
    7.   .STARTUP
    8.   mov   ch, 00h   ; номер дорожки
    9.   mov   cl, 01h   ; номер сектора
    10.  
    11.   mov   dh, 00h   ; номер головки (стороны диска)
    12.   mov   dl, 00h   ; номер НГМД, соответсвует
    13.                   ; устройству А:
    14.  
    15. ; Готовим адрес буфера в ES:BX
    16.   mov   ax, cs
    17.   mov   es, ax
    18.  
    19.   mov   bx, OFFSET buf
    20.  
    21. ; Готовим код функции
    22.   mov   ah, 02h   ; код функции - чтение сектора
    23.   mov   al, 01h   ; читаем 1 сектор
    24.  
    25. ; Вызываем прерывание
    26.   int   13h
    27.  
    28.   .EXIT   0
    29.   END
    30.  


    Вопрос: как записывать при помощи этого 13h прерывания и форматировать дорожку?

    И как это заставить работать не делая досовский exe'шник?
     
  12. SteelRat

    SteelRat New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2004
    Сообщения:
    409
    Попробуй открыть диск и дать ему команду IOCTL_DISK_FORMAT_TRACKS_EX, туда передается
    Код (Text):
    1. typedef struct _FORMAT_EX_PARAMETERS {
    2.   MEDIA_TYPE  MediaType;
    3.   ULONG  StartCylinderNumber;
    4.   ULONG  EndCylinderNumber;
    5.   ULONG  StartHeadNumber;
    6.   ULONG  EndHeadNumber;
    7.   USHORT  FormatGapLength;
    8.   USHORT  SectorsPerTrack;
    9.   USHORT  SectorNumber[1];
    10. } FORMAT_EX_PARAMETERS, *PFORMAT_EX_PARAMETERS;


    Обрати внимание там есть StartCylinderNumber и EndCylinderNumber

    Может чем поможет :)
     
  13. iamlamer

    iamlamer New Member

    Публикаций:
    0
    Регистрация:
    20 июн 2005
    Сообщения:
    273
    Адрес:
    Russia
    Ребята, через INt13 в виндах - не прокатит.



    Держи сканы из старой и редкой книжки В.П. Скляров. Применение ПЭВМ. Организация и управление ресурсами ПЭВМ. - М.: Высшая школа, 1992.



    Правда это под ДОС и через ПДП, но не через int13, а через порты. Можно переделать.



    Кроме того, поище в Интернете описание контроллера FDD, например, по ключевым словам MSR+DOR+DR (это сокращения команд контроллера). Например, вот неплохо:

    http://www.mega-tokyo.com/forum/index.php?action=printpage;board =1;threadid=5585
     
  14. yureckor

    yureckor New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    494
    Адрес:
    Russia
    SteelRat

    спасибо, попробую.

    Я попробовал сделать код выше под винду, ну и она (XP)не переваривает mov es, ax и int 13h, падает.

    Как это исправить (драйвер? или еще что) и будет ли это проще, чем разобраться в DeviceIoControl.
     
  15. iamlamer

    iamlamer New Member

    Публикаций:
    0
    Регистрация:
    20 июн 2005
    Сообщения:
    273
    Адрес:
    Russia
    Аттач не пролез - 66Кб. :dntknw:
     
  16. yureckor

    yureckor New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    494
    Адрес:
    Russia
    iamlamer

    разбей архив на две части и запости.

    или брось мне на мыло мое_имя<@>yandex.ру
     
  17. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    Тема программирования FDD была хорошо раскрыта в книжке Спесивцева "Защита информации в персональных ЭВМ". Там ключевым дискетам было уделено немало внимания. Вообще книжка интересная, хоть и 92-го года, например, есть описание алгоритмов шифрования, рассмотрена некоторая интересная антиотладка (типа "безумного" кода) и др. Найти ее наверное непросто, но возможно она есть где и в отсканеном виде (благо не шибко толстая была).
     
  18. SteelRat

    SteelRat New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2004
    Сообщения:
    409
    _BC_

    Вот она то у меня где-то лежит... Никак не найду :dntknw: Там под DOS, используется кажется int 13h Сегодня ещё поищу...
     
  19. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759




    Не, насколько я помню, там упор был как раз на программирование FDD через порты.
     
  20. yureckor

    yureckor New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    494
    Адрес:
    Russia
    исходник для программирования FDD через порты есть, это прога Max'а из темы про защиту дискет/flash раньше.

    Правда я половину уже сделал через int 13h в dos'е, сейчас думаю переделывать или нет.