Узнать серийник Флешки?

Тема в разделе "WASM.BEGINNERS", создана пользователем test555, 2 янв 2009.

  1. test555

    test555 New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2007
    Сообщения:
    241
    Добрый день.
    Не знаю в какой из разделов лучше бы обратиться..

    Требуется узнать заводской номер флешек (УСБ, microSD, CompactFlash и тд) разных производителей.

    Не метку тома, а именно серийник.
    С винтами проще, в них есть SMART и серийный номер можно вытащить из него.

    Задача стоит - привязаться к флешке (независимо от производителя).

    Можно конечно взять метку тома+название флешки, но вариант плох тем, что метку можно изменить руками, и купить такую же флешку, или например у всей конторы служебные флешки одинаковы.

    Может что придумать можно?

    Может с помощью дравера что-то удастся?

    Как дополнение к приведенному, можно в начале флешки записать несколько байт - в служебной области (вроде есть неиспользуемое место)..

    Спасибо за советы.

    В винде в свойствах флешки не обнаружил ничего такого.
    Может кто видел софтину которая показывает серийник...

    Боюсь что только заводскеи утилиты могут подобное делать..
     
  2. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    можно например открыть флешку CreateFile'ом и прочитать первые N секторов в поисках серийника или уникальной последовательности, свой драйвер тут не нужен
     
  3. test555

    test555 New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2007
    Сообщения:
    241
    RamMerLabs, проблема в том, что образ флешки можно легко скопировать ((

    Конечно, если серийник не найду, то прийдется так делать..
     
  4. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    <offtop>
    хех, чую попахивает очередным старфорсом или пародией на него :)
    </offtop>
     
  5. test555

    test555 New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2007
    Сообщения:
    241
    Народ, а случайнос строка в диспетчере устройств типа:
    USBSTOR\DISK&VEN_CORSAIR&PROD_UFD&REV_1100\AA4400000 ...
    о чем может говорить, особенно последние цифры. Прога типа USBDeviev в качестве серийника показывает именно его...
     
  6. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    NtQueryVolumeInformationFile(FileFsVolumeInformation).
    http://msdn.microsoft.com/en-us/library/aa364993.aspx
     
  7. test555

    test555 New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2007
    Сообщения:
    241
    Clerk, я Вас очень уважаю. Но я вроде бы ясно выразился что мне надо узнать "не метку тома, а именно серийник" - заводской...

    Скачал за это время книгу П.В.Агуров - Интерфейс USB. Практика использования и программирования,
    разобрался с примерами, там можно читать серийники HID устройств, но, увы, кроме моей мыши ничего не под HID устройством не опознается... ((

    Зато удается считать "серийник мыши".. Он состоит из одного символа.

    Все это делается через hid.dll
     
  8. test555

    test555 New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2007
    Сообщения:
    241
    Итак, тему наверное можно закрыть.
    Ибо перерыл кучу интернета, пару книжек, и уже убежден что нет стандарта, регламентирующего серийники флешек.
    У каких-то отдельных производителей фирменные утилиты могут его доставать, не больше этого.

    Прийдется делать идентификацию по метке тома, названию, и записать в служебные области "левые" данные.
     
  9. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
  10. test555

    test555 New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2007
    Сообщения:
    241
    Увы, полезная утилитка ничего не показала, полезная статья научила только безопасно извлекать устройства, а полезном примере обнаружил только *.lib файл и .exe
    Не знаю как надо, может там еще какой-нибудь файл забыли положить..
    Прога та дает серийники винтов, но флешки молчит.

    Да, открыл IDA библиотеку setupapi.dll, посомтрел какие там есть функции CM_
    Судя по названиям, нужно нет...
     
  11. tclover

    tclover New Member

    Публикаций:
    0
    Регистрация:
    17 май 2007
    Сообщения:
    45
    попробуй nss, она и флешки умеет открывать
     
  12. ams007

    ams007 New Member

    Публикаций:
    0
    Регистрация:
    28 апр 2007
    Сообщения:
    86
    короче, как человек, который с этими флешками умучался, могу сказать,что:
    1. если флешка по спецификации сделана, то серийник у нее есть. InstanceId у этой флешки и есть серийник. если не по спецификации(т.е. древняя) - серийник осутствует, InstanceId сгенерирован виндой.
    2. InstanceId - это если смотреть по реестру следующее (пример): HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\Vid_058f&Pid_6362\058F312D81B.

    3. и самое интересное: как узнать наверняка))
    IOCTL_STORAGE_QUERY_DEVICE_PROPERTY - катит не всегда - только для новых устройств, по причине, о которой уже говорил - на этот ктл отвечать будет USBSTOR.
    IOCTL_SCSI_PASS_THROUGH - с его помощью послать комманду SCSIOP_INQUIRY с соответствующим кодом страницы - 100% правдивая инфа.
    Кто-то тут спрашивал, как узнать устройство - флешка или диск жесткий - так вот с кодом страницы 0 получите данные по умолчанию - в них-то и будет этот признак.

    Если нужен примерчик - скажите, завтра могу выложить.
     
  13. ams007

    ams007 New Member

    Публикаций:
    0
    Регистрация:
    28 апр 2007
    Сообщения:
    86
    и вообще - все связанное с носителями инфы в винде, начиная от класс-драйверов и ниже работает через SCSI комманды - вот по ним то и стоит курить мануалы.
     
  14. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    WMI
    Select InterfaceType,PNPDeviceID FROM Win32_DiskDrive

    InterfaceType - USB/IDE
    PNPDeviceID - содержит серийник.
     
  15. ams007

    ams007 New Member

    Публикаций:
    0
    Регистрация:
    28 апр 2007
    Сообщения:
    86
    Partner, согласен, НО WMI уже формируется на основе данных, предоставляемых ДРОВАМИ!!!, и как там сформировано будет от версии к версии - неизвестно. Насколько я знаю(если что не так - поправьте), там постфиксы добавляются, если серийник короче скольких-то символов. Именно поэтому и IOCTL_STORAGE_QUERY_DEVICE_PROPERTY не всегда подходит, а SCSI - forever real data))))
     
  16. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Есть еще IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER, но только для XP и выше
     
  17. test555

    test555 New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2007
    Сообщения:
    241
    Думал что сандра показывает серийник, ошибся ((