19.09.2016

ITOOLS – Доступ до Файлів Linux з Windows 9x / ME і Windows NT / 2000 / XP

Original: http://www.it.fht-esslingen.de/~zimmerma/software/ltools/ltools.html

Автор Вернер Ціммерман

У LTOOLS надають під Windows, аналогічну функціональність як Mtools зробити під Linux: Вони дозволяють отримати доступ до файлів на “ворожої” файлової системи.


Використання LTOOLS з командного рядка

У центрі LTOOLS являє собою набір програм командного рядка, яка може бути викликана з DOS або з DOS-вікна в Windows 9x / ME або Windows NT / 2000 / XP. Вони забезпечують ту ж функціональність, що і добре відомих LINUX команд ‘LS’, ‘ф’, ‘тт’, ‘CHMOD’, ‘Чаун’ і ” ЛУ. Таким чином, під DOS / Windows ви можете

Список файлів Linux і каталогів (команда: LDIR),
копіювати файли з Linux в Windows, і навпаки (команди: lread, lwrite),
видаляти або перейменовувати файли Linux (команди: ldel, lren),
створювати символічні посилання (команда: LLN),
створювати нові каталоги Linux (команда: lmkdir),
змінити права доступу і власника файлу Linux в (команда: lchange),
змінити каталог за замовчуванням Linux (команда: LCD),
встановити диск за замовчуванням Linux (команда: ldrive) і
показати вашому жорсткому диску настройки розділу (команда: LDIR -part).

Як і багато інших інструментів UNIX, ці функції включені в єдиний виконуваний, яка називається з пачкою параметрами командного рядка. Для того, щоб зробити ваше життя простіше, набір пакетних файлів (Shell скрипти) надаються, так що вам не потрібно запам’ятовувати і вводити всі ці параметри.

Крім того, існує версія Unix / Linux від LTOOLS, так що ви можете використовувати їх під Solaris або навіть під Linux, якщо ви хочете отримати доступ до файлу на інший розділ жорсткого диска без монтування цього розділу.


LTOOLgui – графічний інтерфейс Java для LTOOLS

програми командного рядка старомодні! Де LTOOLS графічний інтерфейс користувача? Ну, немає проблем: використання LTOOLgui. LTOOLgui, написаний на Java з використанням бібліотеки Swing, JDK 2, надає в Windows Explorer, як користувальницький інтерфейс (рис. 1). У двох вікон LTOOLgui показує ваш DOS / Windows і ваші дерева каталогів Linux. Переміщення може бути зроблено за допомогою звичайних точки і клацнути по кнопці дій. Копіювання файлів з Windows на Linux або навпаки може бути зроблено шляхом копіювання і вставки або шляхом перетягування-і-краплі. Клацання правою кнопкою миші відкриє діалогове вікно для перегляду і зміни атрибутів файлів, як права доступу, GID або UID. Подвійне клацання по файлу запустить його, якщо це виконуваний файл для Windows, або відкрити його з це пов’язано додаток. Це навіть працює з файлами Linux, якщо у них є зареєстроване додаток Windows.

ДО РЕЧІ: Ви можете також використовувати LTOOLgui як файловий менеджер під Linux. У міру того як програми командного рядка LTOOLS також поставляються у версії Linux, таким чином, ви можете отримати доступ до файлів на дисках, без їх монтажу.

Автор вибрав Java для LTOOLgui, тому що Java особливо підходить для доступу низького рівня жорсткого диска … жартую! Ні, звичайно, це не можливо в Java взагалі. Якщо ви хочете отримати доступ до обладнання безпосередньо, ви повинні використовувати C ++ код і JNI (Java Native Interface к). Проте, як JNI працює тільки для 32-бітного коду під Windows 9x / ME це означало б використовувати ’32bit до 16bit thunking’ (дивіться нижче). Оскільки автор не подобається ідея об’єднати Java компанії Sun з кодом MASM від Microsoft, він взяв інший підхід. Він просто використовує LTOOLS програму командного рядка, яка називається отримати з Java за допомогою добре відомого стандартного введення / stdout- інтерфейсу. Так що для сторони Java, доступ до обладнання означає простий потік на основі файлового введення / виводу.

 

Мал. 1: Java на основі LTOOLgui графічний користувальницький інтерфейс

Доступ через Інтернет Файл?


Без сумніву, будь-який стан мистецької програми повинні бути в курсі Інтернет! Ну, якщо ви запустите LREADjav на віддаленому комп’ютері і підключитися до нього за допомогою кнопки LTOOLgui з’єднаємо, ви можете отримати доступ до файлів Linux на цьому віддаленому сервері, як якщо б вони були локальними. LREADjav є простою демон сервера, який переводить запит, виданий LTOOLgui через TCP / IP, в LTOOLS командного рядка програми викликів і відправляє висновок програм командного рядка назад через TCP / IP для LTOOLgui (рис. 2). Звичайно, ви можете не тільки подивитися список каталогів, але можуть робити все віддалено, що ви можете зробити на місцевому рівні, в тому числі і завантаження файлів. Дистанційна машина може працювати в Unix / Linux або Windows. Сьогодні це більше схоже на іграшку, ніж на додатки, оскільки LREADjav може викликати проблеми безпеки. У конфігурації за замовчуванням, він може бути використаний тільки з “локальний”, але він може бути налаштований, щоб дозволити доступ з 3-х різних віддалених клієнтів. Але вони ідентифіковані за допомогою їх IP-адреса тільки, немає захисту паролем або тощо. Проте, якщо користувач має серйозне додаток для цього, він може легко реалізувати схему Логін / пароль … Це все Open Source!

Мал.2 Для віддаленого доступу

 

Немає Java? За допомогою веб-браузера!

Може бути, у вас немає Java 2 встановлено. Добре, немає проблем, до тих пір, як ви не мають веб-браузер. Start ‘LREADsrv’ і ваш веб-браузер і як тип URL ‘HTTP: // локальний “(рис. 3). Тепер ваш список каталогів Linux має відображатися в графічному вигляді в вашому веб-браузері. LREADsrv невеликий локальний веб-сервер, який за допомогою простої CGI-подібний інтерфейс робить LTOOLS доступні через HTTP-запитів і перетворює їх висновок динамічно в HTML-сторінки (рис. 4). Звичайно, це не тільки забезпечує локальний доступ, але і дозволяє здійснювати віддалений доступ через Інтернет. Проте, для віддалених користувачів LREADsrv має той же самий низький рівень безпеки, як LREADjav.

Оскільки LREADsrv заснований на HTML-формах, які, наприклад не підтримують перетягнути і падіння або прямого копіювання і вставки, працюючи з вашим веб-браузером трохи менш зручно, ніж робота з графічним інтерфейсом на базі Java. Проте він забезпечує ті ж функції.

 

Мал.3

 

Мал.4

 

LTOOLS Нутрощі – Accessings Harddisk під Windows


Як сама DOS / Windows не підтримує інтерфейси для іноземних файлових систем, то LTOOLS повинен отримати доступ до байт “сирих” даних безпосередньо на диску. Щоб зрозуміти нутрощах LTOOLS, вам необхідно мати базове розуміння наступних областях:

Як жорсткі диски організовані в розділах і секторах і як вони можуть бути доступні, тобто наскільки “сирі” байти можуть бути лічені або записані з диска. Цю інформацію можна знайти, наприклад, в / 2,3 /.
Як організована Розширена 2 файлова система Linux. Хороший огляд про всі Inodes, групи, блоки, растрові зображення і каталоги речі можна знайти, наприклад, в / 4 /.

Це автоматично призводить до багаторівневої архітектури ядра LTOOLS (рис. 5), який складається з декількох файлів C:

Самий нижній шар 1 (в файлі Readdisk.c) фізично отримує доступ до жорсткого диска. Цей шар має справу з (майже всі) відмінності між DOS, Windows 9x / ME, Windows NT / 2000 / XP і Linux / Unix щодо прямого доступу і намагається вашого жорсткого, щоб приховати їх від вищих шарів. Детальніше про це найближчим часом.
2-го рівня має справу з типовим иноді, блокових і групових структур UNIX, в яких організована Розширена 2 файлової системи.
Layer 3 управляє структуру каталогів файлової системи.
Найвищий рівень 4 (в main.c) надає користувальницький інтерфейс і сканує параметри командного рядка.

Переглядаючи таблицю розділів вашого жорсткого диска, в той LTOOLS спробувати знайти свій перший розділ Linux на вашому першому жорсткому диску автоматично. Якщо ви хочете отримати доступ до іншого розділу або диск, ви повинні вказати його за допомогою параметра командного рядка ‘-s’, наприклад ‘-s / DEV / hdb2’. В якості альтернативи ви можете встановити диск інший за замовчуванням і розділ за допомогою команди ‘ldrive’. Щоб з’ясувати, які розділи ви викличте ‘LDIR -part’.

Мал. 5: LTOOLS багаторівнева архітектура

Життя було легко в старі добрі часи DOS. Був тільки один спосіб для низького рівня читання або доступ до жорсткого диска написати: BIOS переривання 13h / 3 /. структури даних BIOS обмежені жорсткі диски до 1024 циліндрів, 63 головок і 255 секторів по 512 байт, тобто 8 Гб. Більшість компіляторів C представила функцію з ім’ям biosdisk (), так що ця функція може бути безпосередньо використана без необхідності коду на асемблері. Для того, щоб мати справу з великими жорсткими дисками, тому були введені кілька років “розширені” функції 13ч Int. Щоб подолати обмеження BIOS, ці функції використовують лінійну схему адресації, адреси логічних блоків (LBA), а не старий головки блоку циліндрів-сектор (CHS) адресація.

Це як і раніше працює в вікні DOS Windows 9x / ME (таблиця 1), по крайней мере, доступ для читання і до тих пір, як програма скомпільована з 16bit компілятором. (The LTOOLS використовувати Borland C, то Windows NT / 2000 версія / XP становить також з Microsoft Visual C, версія Unix / Linux використовує GNU C). Якщо ви хочете отримати доступ низький рівень запису, вам потрібно “замки” обсяг / 3 /. Цей механізм інформує операційну систему, що ваша програма виконує прямого запису на диск в обхід драйвера операційної системи, щоб операційна система може запобігти інші програми від доступу до диска, поки ви не закінчите. Знову ж таки, це може бути зроблено без програмування збірки за допомогою функції C компілятора IOCTL ().

У 16bit функції програми BIOS Windows можна назвати тільки через DPMI. Оскільки більшість C Укладачі не пропонують функції оболонки, для цього буде потрібно (вбудований) асемблер. Однак, Win16 не дозволяє програмам командного рядка на всіх, так що не хвилюйтеся …

В NT / 2000 / DOS вікні в Windows XP, за допомогою BIOS INT 13h призведе до GPF (General Protection Fault). З міркувань безпеки, Windows NT / 2000 / XP не допускає прямого доступу в обхід вашого жорсткого операційної системи. Проте, Microsoft пропонує рішення, яке майже так само просто, як то, що ви написали б під Unix / Linux:

INT disk_fd = відкритий ( “/ DEV / hda1”, O_RDWR);

Це відкрило б у вашому жорсткому диску розділ / Dev / hda1, щоб прочитати Ви назвали б прочитати (), щоб написати ви назвали б писати (). Просто і зрозуміло, чи не так? В операційній системі Windows NT / 2000 / XP, якщо ви використовуєте API WIN32 / 5 /, функція CreateFile () не тільки дозволяє створювати і відкривати файли, але також розділи диска:

    HANDLE hPhysicalDrive = CreateFile("\\\\.\\PhysicalDrive0",
                                       GENERIC_READ | GENERIC_WRITE,
                                       FILE_SHARE_READ | FILE_SHARE_WRITE,
                                       0, OPEN_EXISTING, 0, 0 );

Читання і запис секторів диска тепер може бути зроблено за допомогою ReadFile () і WriteFile ().

На мить ви можете подумати, що ви могли б використовувати ту ж функцію Win32 під Windows 9x / ME. Проте, якщо ви читаєте в документації для CreateFile (), ви знайдете:

Windows 95: Цей метод не працює для відкриття логічного диска. в
Windows 95, вказавши рядок в цій формі викликає CreateFile для повернення
помилка.

Під Win32 документації Windows 9x / ME від Microsoft рекомендує називати BIOS Int 13h через VWIN32, один з VxDs системи (драйвери ядра). Якщо ви спробуєте зробити це, однак, ви не вдасться. Проблема Звіт Q137176 в базі знань Microsoft стверджує, що – незважаючи на те, що говорить Offical документація Win32 – це працює тільки для гнучких дисків, а не для жорстких дисків. Як говориться в доповіді проблема для жорстких дисків єдиним способом є виклик BIOS Int 16h в 16bit коді. Для того, щоб зателефонувати 16-бітний код з програми 32-бітної, вам потрібно “32bit до 16bit thunking” від Microsoft … Це не тільки інший API (з іншими недокументованих можливостей або документованих помилок?), Thunking також вимагає thunking компілятор Microsoft, який зі сценарію визначення генерує код на асемблері. З цього 16бітное і файловий об’єкт 32bit повинен бути створений за допомогою асемблері MASM Microsoft. Вони будуть пов’язані з деякими dozend рядків C-коду, який ви повинні написати, що призводить до 16bit і 32bit DLL (динамічно підключається бібліотеку). До речі, вам не потрібно тільки 32bit Visual C ++ для цього, але ви також повинні мати стару версію 16bit З компілятора від Microsoft … Зрозумів? Використовуючи зв’язку патентованих, не знайшли широкого застосування інструментів, які не буде хорошим рішенням для Open Source програмного засобу на кшталт LTOOLS!

Підводячи підсумок: Там повинні бути окремі версії для DOS / Windows 9x / ME, Windows NT / 2000 / XP і Linux / Unix. Щоб приховати це від користувача, наскільки це можливо, LTOOLS намагається з’ясувати, під якою операційною системою він працює і автоматично викликає відповідний виконуваний файл.

Таблиця 1: Доступ до Harddisk Низький рівень

Under DOS Under Windows 9x/ME Under Windows NT/2000/XP Under LINUX/Unix
  • BIOS Int 13h
    (need BIOS Extensions for disks above 8GB)
  • DOS programs:
    like DOS, but must use volume lock/unlock for write access
  • Win16 programs:
    must call BIOS Int 13h via DPMI
  • Win32 programs:
    32bit to 16bit thunking to a Win16 DLL
  • DOS programs:
    not allowed
  • Win16 programs:
    not allowed
  • Win32 programs:
    CreateFile(), ReadFile(), WriteFile()
  • open(), read(), write()

 

Проблеми безпеки?

Так, маючи LTOOLS певною мірою може викликати проблеми безпеки. Кожен користувач, який може запускати їх, можуть отримувати доступ і змінювати файли на LINUX файлову систему, наприклад, права доступу зміни файлу або власники файлів, обмін файлами паролів і т.д .. Тим не менш, це можливо за допомогою простого редактора диска теж. Може бути, це всього лише трохи зручнішим, при використанні LTOOLS. Проте, необмежений доступ можливий тільки, якщо працює під DOS або Windows 9x / ME. В операційних системах Windows NT / 2000 / XP користувач LTOOLS повинен мати права адміністратора для доступу до жорсткого диска безпосередньо. Під Unix / Linux в більшості стандартних установок також тільки системним адміністратором, має права доступу для “сирих” дискових пристроїв / DEV / HDA, / DEV / hda1, і т.д ..


Чи існують які-небудь альтернативи?

У LTOOLS не єдине рішення для доступу до файлів Linux з DOS / Windows. Можливо Клауса Tondering в Ext2tool / 6 /, набір інструментів командного рядка, розроблений в 1996 році, був першим рішенням цієї проблеми. Проте, Ext2tool обмежений доступ тільки для читання і не працює під Windows NT. На основі Ext2tool, Пітер JOOT в 1997 році написав версію Windows NT, як і раніше обмежується тільки для читання / 7 /. Обидві програми були написані на C, вихідні коди доступні.

Джон Newbigin дає нам Explore2fs / 8 /, який поставляється з дуже приємний графічний інтерфейс і працює під управлінням Windows 9x і Windows NT. З його читання і запису він забезпечує ті ж функції, як LTOOLgui. ДО РЕЧІ: Джон виконав велику роботу, тому що йому вдалося реалізувати 32bit від Microsoft до 16bit thunking (дивись вище) навіть в Delphi від Borland! Як всім програмам Delphi Explore2fs інтегрує “безшовні” в Windows, але перенесення на операційних системах, відмінних від Windows, може бути ускладнене.


Історія і майбутнє

Перша версія LTOOLS була створена під оригінальною назвою ‘lread’ Джейсон Хантер і Девід Лутц в Willamette університету, Salem / Орегон (США). Ця перша версія працювала під DOS, могли б показати списки каталогів Linux і скопіювати файли з Linux в DOS і була обмежена малими IDE жорстких дисків і LINUX на первинних розділів.

Автор взяв на себе технічне обслуговування і подальший розвиток в 1996 році З тих пір LTOOLS навчилися мати справу з великими жорсткими дисками, SCSI доступ дисків, що працюють під Windows 9x / ME і Windows NT 2000 / XP, додатковий доступ / записи і були перенесені назад UNIX, щоб змусити їх працювати під Solaris і самої Linux. Вони отримали веб-браузер, заснований і JAVA графічний користувальницький інтерфейс і т.д. і т.п .. багато користувачів Linux, більшість з них, на ім’я в вихідному коді, допомогли в тестуванні й налагодженні. Дякую.

У той же час, LTOOLS досягла версії v4.7 / 1 /, може бути навіть більше, коли ця стаття буде опублікована. Крім додаткових можливостей, багато помилок було виправлено – і, швидше за все нові були введені. Загальною проблемою залишається протягом багатьох років ніхто не робив передбачити швидку швидкість в технології, жорсткого диска, де вибухнули розміри диска, який постійно вдарив межі операційної системи. Чи пам’ятаєте ви проблеми ДОС з 512 дисками, проблеми 3.x для Windows з розділами 2 Гб, ліміт BIOS за адресою 8 Гб і різні проблеми, які Windows NT дійсно є на 2 Гб, 4 Гб і 8 Гб? Це всього лише хвилину назад! І, до речі, навіть Linux має проблему: У ядрах до 2.3, жоден файл не може перевищувати 2 Гб, а Linux, як і більшість 32-бітових систем Unix використовує знакова 32bit зміщення покажчика в режимі зчитування () або написати () (ця проблема буде вирішена в ядрі 2.4 шляхом зміни значень зсуву до 64-бітної, але зберігаючи сумісність від низу до верху може керувати Linux з тими ж проблемами, як ми обговорювали для Windows, вище). стандартизація програмного забезпечення для доступу до диска завжди був набагато повільніше, ніж розробники дисків, тому вони винайшли власні рішення для подолання обмежень операційної системи. І завжди LTOOLS -І ще багато інших програмістів – доводилося мати справу з ним … Так що не сердьтеся, якщо LTOOLS не працює для вас на вашому новому диску 64 Гб. Це Open Source, так просто спробувати допомогти у налагодженні та подальшому розвитку їх!

І не забувайте, що якщо ви використовуєте LTOOLS: Ви робите це на свій страх і ризик! Тільки для читання доступ до Linux некритична. Проте, якщо ви використовуєте доступ на запис, щоб видалити файли або змінювати атрибути файлів на вашому диску для Linux, LTOOLS – і Ви, як користувач – може зробити багато дурниць. Так завжди тримати резервну копію!


Посилання

http://www.it.fht-esslingen.de/~zimmerma/software/ltools.html: домашня сторінка з LTOOLS
Майкл Tischer: PC-стажер 4. Дані-Becker-Verlag
http://www.cs.cmu.edu/afs/cs.cmu.edu/user/ralf/pub/WWW/files.html список переривання Ральфа Брауна для x86-ПК
http://metalab.unc.edu/pub/Linux/system/filesystems/ext2/Ext2fs-overview-0.1.ps.gz: огляд Гаді Oxman в про розширену 2 файлової системи.
Microsoft Windows, Win32 API – документація, поставляється з більшістю компіляторів C для Windows або на компакт-дисках MSDN
http://metalab.unc.edu/pub/Linux/system/filesystems/ext2/ext2tool_1_1.zip: Claus Tondering в Ext2tool
http://metalab.unc.edu/pub/micro/pc-stuff/Linux/utils/dos/ext2nt.lsm: Пеетера JOOT в Ext2nt
http://uranus.it.swin.edu.au/~jn/linux/explore2fs.htm: Explore2fs Джона Newbigin в

Про автора

“У реальному житті” Вернер Циммерманн вчить управління інженерними, цифрових систем і комп’ютерної архітектури в FH Esslingen – Університет прикладних наук, Esslingen, Німеччина. Він має апаратне і програмне забезпечення фон в автомобільних і промислових вбудованих систем. Його “кар’єра” в якості розробника програмного забезпечення системи Linux почалася в 1994 році, коли він купив CD-ROM диск, який не був підтриманий Linux … Так що він розробив ‘aztcd.c’, драйвер Linux CD-ROM, який як і раніше включені в усі стандартні ядра Linux, навіть якщо диск зараз дуже сильно застаріли.

 

 

About The Author

admin

Comments are closed.