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

Discussion in 'WASM.BEGINNERS' started by test555, Jan 2, 2009.

  1. test555

    test555 New Member

    Blog Posts:
    0
    Joined:
    Dec 7, 2007
    Messages:
    241
    Добрый день.
    Не знаю в какой из разделов лучше бы обратиться..

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

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

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

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

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

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

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

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

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

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

    RamMerLabs Well-Known Member

    Blog Posts:
    0
    Joined:
    Sep 11, 2006
    Messages:
    1,426
    можно например открыть флешку CreateFile'ом и прочитать первые N секторов в поисках серийника или уникальной последовательности, свой драйвер тут не нужен
     
  3. test555

    test555 New Member

    Blog Posts:
    0
    Joined:
    Dec 7, 2007
    Messages:
    241
    RamMerLabs, проблема в том, что образ флешки можно легко скопировать ((

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

    RamMerLabs Well-Known Member

    Blog Posts:
    0
    Joined:
    Sep 11, 2006
    Messages:
    1,426
    <offtop>
    хех, чую попахивает очередным старфорсом или пародией на него :)
    </offtop>
     
  5. test555

    test555 New Member

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

    Clerk Забанен

    Blog Posts:
    0
    Joined:
    Jan 4, 2008
    Messages:
    6,689
    Location:
    РБ, Могилёв
    NtQueryVolumeInformationFile(FileFsVolumeInformation).
    http://msdn.microsoft.com/en-us/library/aa364993.aspx
     
  7. test555

    test555 New Member

    Blog Posts:
    0
    Joined:
    Dec 7, 2007
    Messages:
    241
    Clerk, я Вас очень уважаю. Но я вроде бы ясно выразился что мне надо узнать "не метку тома, а именно серийник" - заводской...

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

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

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

    test555 New Member

    Blog Posts:
    0
    Joined:
    Dec 7, 2007
    Messages:
    241
    Итак, тему наверное можно закрыть.
    Ибо перерыл кучу интернета, пару книжек, и уже убежден что нет стандарта, регламентирующего серийники флешек.
    У каких-то отдельных производителей фирменные утилиты могут его доставать, не больше этого.

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

    Flasher Member

    Blog Posts:
    0
    Joined:
    Jan 31, 2004
    Messages:
    640
  10. test555

    test555 New Member

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

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

    tclover New Member

    Blog Posts:
    0
    Joined:
    May 17, 2007
    Messages:
    45
    попробуй nss, она и флешки умеет открывать
     
  12. ams007

    ams007 New Member

    Blog Posts:
    0
    Joined:
    Apr 28, 2007
    Messages:
    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

    Blog Posts:
    0
    Joined:
    Apr 28, 2007
    Messages:
    86
    и вообще - все связанное с носителями инфы в винде, начиная от класс-драйверов и ниже работает через SCSI комманды - вот по ним то и стоит курить мануалы.
     
  14. Partner

    Partner Павел

    Blog Posts:
    0
    Joined:
    Feb 28, 2008
    Messages:
    917
    Location:
    Los Angeles
    WMI
    Select InterfaceType,PNPDeviceID FROM Win32_DiskDrive

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

    ams007 New Member

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

    Partner Павел

    Blog Posts:
    0
    Joined:
    Feb 28, 2008
    Messages:
    917
    Location:
    Los Angeles
    Есть еще IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER, но только для XP и выше
     
  17. test555

    test555 New Member

    Blog Posts:
    0
    Joined:
    Dec 7, 2007
    Messages:
    241
    Думал что сандра показывает серийник, ошибся ((