Доброго времени суток. Скачал себе программу Plscsi - (http://members.aol.com/plscsi/windows.html)... Она вроде как позволяет посылать команды SCSI устройствам... (в частности я пробую с USB флэшкой) Немогу вкурить одного, в "помощи" к проге написан пример: Код (Text): >plscsi -v -x "1B 0 0 0 02 0" с комментарием - STOP and EJECT (пример работает....) командой я так понимаю является строка "1B 0 0 0 02 0" Если я ставлю сниффер на USB порт получаю что-то вроде: Код (Text): 55 53 42 43 4C 12 00 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (Перехватить команду STOP and EJECT не получилось, объяснять почему долго) Никак не могу понять как соотносится содержание перехваченных пакетов, с отправляемыми командами, т.е. как команда преобразуется в передаваемый пакет.
http://ru.wikipedia.org/wiki/SCSI#.....BB_.D0.BA.D0.BE.D0.BC.D0.B0.D0.BD.D0.B4_SCSI Поиск рулит! )) Ну, а если собрался разбираться серьезно - добро пожаловать на http://www.t10.org/
Ustus Спасибо... описание формата SCSI команд нашел на www.t10.org А вот толкового описания формата USB-пакета так и не нашел=( Т.е. нашел что с 16-ого байта начинается SCSI команда, а вот за что отвечают первые 15 байт, непонятно. И это в запросе, а с ответом устройства вообще мрак.
Плохо искал - лежит на самом видном месте Если сильно интересует USB - посмотри спецификации тут: http://www.usb.org/developers/docs/ (спецификации USB) http://www.usb.org/developers/devclass_docs#approved (спецификации различных классов устройств) Конкретно для флэшек тебе надо вот это почитать: http://www.usb.org/developers/devclass_docs/usb_msc_overview_1.2.pdf http://www.usb.org/developers/devclass_docs/usbmassbulk_10.pdf В большей степени вторую доку - там протокол описан. Просто USB Flash drive это не совсем SCSI, просто в его протокол инкапсулируются SCSI команды - но далеко не все. Т.е. набор команд там ограниченный.
Решил поднять старую тему и задать вопрос от новичка: Можно ли при помощи инкапсуляции SCSI команд в протокол флэш получить доступ к USB Flash непосредственно к "физике" устройства, т.е. встать ниже уровня файловой системы? Например, считать содержимое сектора физического, а не логического? И если ответ всё-таки "Да, можно", то будет ли этот способ универсальным для всех флэшек? Спасибо!
Простая логика подсказывает, что нет. На фига городить такой огород. SCSI сделано из-за совместимости - вроде это стандарт. А физика наверняка делается через родной протокол, через "недокументированные" команды
Спасибо, мне недавно тоже стало очевидно, что ответ отрицательный. Ещё маленькая просьба, нет ли у кого внятных материалов(можно на английском) о физическом устройстве флэшек? Все что нашёл на данный момент - говно. Толком не объяснено, что такое страницы, столбцы, блоки. Как происходит чтение/запись на флэшку? Если пару бит пришли в негодность, как подбираются резервные биты и проч. Пока одни вопросы... Буду признателен за любую помощь!
Flesh состоит из двух микросхем. Микросхема управления и микросхема памяти и яркой этикетки с брэндом. К примеру вот. http://pdf1.alldatasheet.net/datasheet-pdf/view/217832/ETC/AU6980.html http://pdf1.alldatasheet.net/datasheet-pdf/view/85043/SAMSUNG/K9K2G08Q0M.html Начинка везде одна и таже, а названия могут отличаться. Биты не помечаются. Флэш он на то и флэш что стирание идет блоками и запись тоже, отсюда большая скорость чтения записи. Отсюда в случае выхода из строя бита помечается весь блок как плохой. Еще есть ECC вернее может быть обычно редко включают так как сжирает много памяти.
Простите лузера, тоже увлекшегося прочтением данных пдф'ок, правильно ли я представляю себе взаимодействие устройств в обычной флешке: 1. Приходит команда( допустим, записи такого-то сегмента) в каком-то виде от компьютера на контроллер, установленный в флеке. 2. Контроллер сравнивает данный адрес с таблицей bad-сегментов и после этого посылает команду чипу памяти для записи данных в такой-то блок, соответствующий данному сегменту. Так все происходит? То есть я не смогу, допустим, считать всю физическую память из чипа памяти, если контроллер не предусматривает на то спец команд?
ov4inka Ну, на флешках, емнип, все еще страшнее, там что-то типа таблицы трансляции адресов, которая меняется таким образом, чтобы уменьшать количество записей в один блок. Если блок дефектный, то его в этой таблице просто нет, как-то так. Пусть, если что, гуру меня поправят. Совершенно верно, причем не обязательно с чипа, производители HDD давно уже таким занимаются Да и правильно, зачем не-спец-приложениям читать дефектную память?
Хм... Попробую на пальцах сформулировать вопрос. Рассмотрим, например, какого-нибудь Kingstona, он берёт документацию на контроллер и чип памяти USB Flash, прошивает контроллер собственным программным обеспечением. 1. Верно ли, что кингстон обязательно закладывает в это ПО SCSI команды для совместимости? (сам думаю, что верно). Продолжаем. Пусть стоит задача считать k-ый блок памяти с USB Flash от кингстона именно на уровне физики устройства (т.е. ниже логического уровня). При помощи скази команд этого сделать не получится. Поэтому второй вопрос: 2. Если кингстон не заложит в прошивку контроллера подобной команды (считывание произвольного блока), то задача становится просто абсолютно невыполнимой? 3. Документирует ли кингстон и ему подобные ребята список команд и их параметров, которые можно посылать контроллеру USB Flash напрямую? Спасибо!
1) Не факт. Возможна программная эмуляция. IDE диски у Микрософта очень долгое время оставались SCSI-устройствами. Это что все производители поддерживали ATA и еще к нему SCSI ? 3) Ни в коем разе. Конкуренты сожрут вмиг! Но снифят и реверсят противные...
mart гы. вкомпилить перехватчик на порты в опенсорсный эмуль. подавать простые команды и снифать протокол. или железный влепить. или сорцы опенсорсных дров смотреть. впрочем, тут же внешнее усб. железный снифер (вроде и програмный даж под вынь видел). или сорцы дров с линя. план тоже нормально с усб дисками. во всяк случае 1 (2 не пробовал толком. оно у меня на старой машине)
А ссылки, которые вы запостили, это документация на контроллер или сниффер какой-то? То ли я сегодня не выспался, то ли туплю...))
мож и я туплю, но я так понял, что вы хотите найти способ узнать команды закрытого протокола. вот и проссылил микру и пару схем, чтоб было от чего отталкиваться для хардверного снифера.