Прошу помочь разобраться с алгоритмом работы хаспа На алладине наткнулся на такую статью(отрывок): Возникло пару вопросов: Если же работа идет с usb(других нет для ШЛ), то возможно ли просто скопировать данные с этого ключа(почему нет)? "посылая ему наборы закодированных данных, и получает от него для дальнейшего использования раскодированные блоки данных" - данная процедура идет все время или же только в процессе запуска программы (а далее так сказать для проверки установленного ключа)? "с ключом длиной 128 бит, постоянно хранящимся в защищенной памяти" как я понял идет речь про ключ или нет ?
Существуют специальные эмуляторы, эмулирующие работы устройства. Все зависит от программы, в нее могут быть встроены и ложные запросы.
При правильной реализации было бы нельзя, так как (Здесь речь действительно именно про ключ). А Hasp HL дырявый, с него можно. По крайней мере envelope обходится элементарно Сколько накодили, столько и будет. Если не кодили вообще, а пользовали envelope, то действительно только на запуске
патаму что разрабы ключа не полные дауны и понимают чем подобное грозит. в твоем случае проще представить сам донгл как чорный ящег - на входах одна комбинация - на выходах другая. далее - что ты оттуда копировать собралсо ? если правильно помню то хардварно донгл - какой то (АВР ?) контроллер который и дешифрует то что ему посылают. если взять идельную ситуацию - то ключ можна только брутить, но на практике появляеццо еще пара способов как то отснифать пары вход-выход и эмулировать присутствие донгла подсовывая отснифаные данные
Исследую программу в ХР использующую хасп ключ usb. Почитав статьи на форуме, я нашел обращение к ключу через CreateFile и работа с ним через DeviceIoControl. Конечно программка использует еще проверку crc при запуске. Но можно патчить динамически и подменять ответ DeviceIoControl. Но беда в том, что это работает лишь когда ключ вставлен, если ключ не вставлен то программа идет по какой-то другой ветке кода ((((. В статьях не разбирается случай отслеживания на присутствие хасп ключа. Там ключ эмулируют через HASP.VXD. В ХР такого драйвера я не нашел. Подскажите как к нему подойти. Зарание спасибо. Еще некоторая инфа, которую я обнаружил. В реестре в одном ключе прописаны, как я понял, имена usb ключа. Типа USB\HASP\6389r4&12 и что-то типа \\?\usb#hasp#6389&247#.... и т.п. Второе имя ключа используется программой при открытии ключа через CreateFile, как имя файла. Любое изменение данных записей в реестре приводит к тому что даже вставленный ключ не обнаруживается
Полностью разобрался с работой Hasp Hl, по крайней мере в свой проге, как напишу эмулятор мгу выложить, если будет интересно. Прога использует процедуры setupapi.dll для инициализации ключа. Если ключ инициализирован то он открывается через CreateFile и опрашивается через драйвер. Общение проги с драйвером через DevicIoControl. Поэтому для эмуляции ключа необходимо 1) Подмена используемых функций setupapi 2) Подмена CreateFile при открытии ключа 3) Эмуляция обмена с драйвером, при чем необходима подмена как входящих так и выходящих данных DeviceIoControl