Сейчас на форуме: (+5 невидимых)

 eXeL@B —› Программирование —› Как отлечить USB флешь от жесткого диска????
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 12.2 (новичок)
Активность: 0.010
Статус: Участник

Создано: 21 октября 2007 15:27
· Личное сообщение · #1

я написал програмку для форматирования флешек!!
смысл такой! хочу зделать защиту от ДУРАКА! тоесть чтобы ктото случайно сам себе винт не форматнул! как мне в программе реализовать защиту от записи на винт?? флешка имеет точно такиеже идентификаторы как и жесткий диск!вовсяком случае в бут секторе нигде не упоминуеться что ето сьемный диск!! там есть чтото похожее по смещению 15h длинной 1 байт тип носителя указываеться
Тип носителя. Значение 0xF8 указывает на жесткий диск, 0xF0 — на флоппи-диск высокой плотности
так вот и у флешки и у винта оно одинаковое!! может ктото вкурсе как можно ето дело проверить! посоветуйте чтото! может я зациклился на чем то и истины уже не вижу))))) всем спасибо!



Ранг: 456.3 (мудрец), 340thx
Активность: 0.280.02
Статус: Участник
Android Reverser

Создано: 21 октября 2007 15:32
· Личное сообщение · #2

steepf
бугого. самый простой способ
function GetDriveType(lpRootPathName: PChar): UINT;

-----
SaNX




Ранг: 129.7 (ветеран), 2thx
Активность: 0.070
Статус: Участник

Создано: 21 октября 2007 15:33
· Личное сообщение · #3

steepf, GetDriVeType



Ранг: 12.2 (новичок)
Активность: 0.010
Статус: Участник

Создано: 21 октября 2007 16:03
· Личное сообщение · #4

спасибо!!! видите я зашился на низкий уровень! а самого елементарного не видел! аж стыдно елки палки!!)))



Ранг: 12.2 (новичок)
Активность: 0.010
Статус: Участник

Создано: 21 октября 2007 16:05
· Личное сообщение · #5

хотя нет не все! ета функция GetDriveType гдето ету информацию берет!! откудота читает??? как вы думаете откуда?? тока не надо советовать в дебагере протрасить GetDriveType!интерестно конечно! но может ктото знает откуда она ее читает???



Ранг: 369.8 (мудрец), 400thx
Активность: 0.390
Статус: Участник

Создано: 21 октября 2007 16:19
· Личное сообщение · #6

steepf пишет:
тока не надо советовать в дебагере протрасить GetDriveType

Ладно, не будем советовать раз ты сам уже догадался

-----
PGP key <0x1B6A24550F33E44A>





Ранг: 303.7 (мудрец), 4thx
Активность: 0.190
Статус: Участник
tPORt Manager

Создано: 21 октября 2007 20:35
· Личное сообщение · #7

steepf
Думаю, что она спрашивает тип устройства у драйвера, контролирующего его.




Ранг: 303.7 (мудрец), 4thx
Активность: 0.190
Статус: Участник
tPORt Manager

Создано: 21 октября 2007 20:38
· Личное сообщение · #8

А вообще цепочка такова GetDriveTypeA -> GetDriveTypeW -> NtQueryInformationProcess -> ZwQueryInformationProcess -> А дальше топаем в ядро, думаю тебе это не интересно. И ещё, потрейсь GetDriveTypeA



Ранг: 218.5 (наставник), 2thx
Активность: 0.090
Статус: Участник

Создано: 22 октября 2007 00:39
· Личное сообщение · #9

steepf пишет:
я написал програмку для форматирования флешек!!

А format.com разве не рулит??

GetDriveType скажет DRIVE_REMOVABLE, но ведь эт еще не значит, что это флешка! Это м.б. и флоп, и криво настроеный винт, и еще х.з. что...




Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 22 октября 2007 01:16
· Личное сообщение · #10

Проверяй на размер диска. Сколько там максимальная флешка ? 32 ? Пусть утиль не форматирует диски более 32 Гб.



Ранг: 129.7 (ветеран), 2thx
Активность: 0.070
Статус: Участник

Создано: 22 октября 2007 03:29
· Личное сообщение · #11

ToBad, а через N месяцев флешки подрастут в объеме...




Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 22 октября 2007 12:53
· Личное сообщение · #12

Azur1d пишет:
а через N месяцев флешки подрастут в объеме...


Автор выпустит SP1 для своей тулзы, где будет патч 20h на актуальное кол-во гиг на текущий момент. И все, кто обычно случайно форматирует винты вместо флешек по интернету качнут сервис пак и перестанут нечаянно форматировать не то. Будут кстати очень благодарны автору. Напишут благодарственные письма: "До того как я скачал вашу тулзу где то раз в неделю я промахивался и выбирал диск С: вместо флешки. Другие программы молча форматировали и мне приходилось покупать новый жёсткий диск. Но теперь, особенно после установки SP1, программа говорит мне: "Выбери другой диск, лох...", и ведь права она, знает что диск не тот...."




Ранг: 126.7 (ветеран)
Активность: 0.140
Статус: Участник
#CCh

Создано: 22 октября 2007 13:33
· Личное сообщение · #13

не проще просто конфирм сделоть.. и вообще зочем нужно ограничение по типам дисков, пусть твоя тулза форматирует и HDD тоже... или твоя задача затереть флешку потихому? )

-----
invoke OpenFire





Ранг: 303.7 (мудрец), 4thx
Активность: 0.190
Статус: Участник
tPORt Manager

Создано: 22 октября 2007 15:21
· Личное сообщение · #14

Azur1d
ZwQueryInformationProcess тут получишь инфу, а тему закрой.




Ранг: 279.1 (наставник)
Активность: 0.160
Статус: Участник
wizard

Создано: 22 октября 2007 18:54
· Личное сообщение · #15

0xy пишет:
GetDriveType скажет DRIVE_REMOVABLE, но ведь эт еще не значит, что это флешка! Это м.б. и флоп


У флопа FAT12 ,а флешка FAT 32 или FAT 16 .

-----
Что один человек сделал , другой всегда сломать может...




Ранг: 369.8 (мудрец), 400thx
Активность: 0.390
Статус: Участник

Создано: 22 октября 2007 19:13
· Личное сообщение · #16

MACKLIA пишет:
флешка FAT 32 или FAT 16

Не факт. Я форматирую свои флешки в NTFS

-----
PGP key <0x1B6A24550F33E44A>





Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

Создано: 22 октября 2007 19:26 · Поправил: GPcH
· Личное сообщение · #17

Есть способ точнее - и не надо лезть в ядро - детектить флешку через опрос USB устройств.
Я как-то давно для одного клиента писал ActiveX для опроса USB устройств и детекта их коннекта.
Так как я понимаю тебе это нужно для коммерческих целей - пиши в приват или в мыло - договоримся, я цены не заламываю.

Суть моего ActiveX для детекта флешки:

Dim WithEvents USB As DotFixUSB.GetInfo

Private Sub Form_Load()
Dim i As Long
Set USB = New DotFixUSB.GetInfo
Call USB.HookEvents(frmMain)
For i = 1 To USB.GetDeviceCount
if USB.GetDeviceInfo(i).strDeviceName="Запоминающее устройство для USB" then
'найдена флешка
end if
Next
End Sub


После этого ты знаешь сколько флешек подключено - следовательно столько же букв дисков от конца детектируемых - это флешки.

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!




Ранг: 129.7 (ветеран), 2thx
Активность: 0.070
Статус: Участник

Создано: 22 октября 2007 19:43
· Личное сообщение · #18

ntldr пишет:
Не факт. Я форматирую свои флешки в NTFS

Но не в фат12.

ToBad пишет:
Azur1d пишет:
а через N месяцев флешки подрастут в объеме...

Автор выпустит SP1 для своей тулзы, где будет патч 20h на актуальное кол-во гиг на текущий момент

И через M месяцев флешки сравняются по объемя с винтами))))



Ранг: 115.1 (ветеран), 3thx
Активность: 0.070
Статус: Участник

Создано: 22 октября 2007 19:45
· Личное сообщение · #19

www.codeproject.com/w2k/usbdisks.asp



Ранг: 49.7 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 22 октября 2007 21:25
· Личное сообщение · #20

GPcH, а если у меня китайская винда? Вариант определения устройства по его локализированному имени это мощно.




Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

Создано: 22 октября 2007 22:41
· Личное сообщение · #21

ViSoR пишет:
GPcH, а если у меня китайская винда? Вариант определения устройства по его локализированному имени это мощно.


Я образно сказал. Моя DLL предоставляет досуп ко всем данным USB устройства (по их совокупности можно определить флешку). Тем более автор не написал для какого рынка предназнаяена прога.

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!





Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

Создано: 22 октября 2007 22:44
· Личное сообщение · #22

ViSoR пишет:
а если у меня китайская винда?


[offtop]

Тогда выложи ее дистрибутив на рапиду - скажу тебе спасибо, уже 2 года ищу дистриб китайской WinXP (именно китайской, а не английской с китайским MUI).

PS: нужна для тестов юникод специфичных криптоалгоритмов.

[/offtop]

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!




Ранг: 34.1 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 22 октября 2007 23:24
· Личное сообщение · #23

GPcH пишет:
уже 2 года ищу дистриб китайской WinXP


В муле всё валяется.
Так же можно попарсить google.cn и baidu.cn



Ранг: 369.8 (мудрец), 400thx
Активность: 0.390
Статус: Участник

Создано: 22 октября 2007 23:25
· Личное сообщение · #24

GPcH пишет:
if USB.GetDeviceInfo(i).strDeviceName="Запоминающее устройство для USB" then

И за ЭТО ты требуешь денег? Нам такой дурацкий код и даром не надо.

-----
PGP key <0x1B6A24550F33E44A>





Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

Создано: 22 октября 2007 23:58
· Личное сообщение · #25

ntldr пишет:
И за ЭТО ты требуешь денег? Нам такой дурацкий код и даром не надо.


Речь шла о полном ActiveX для парсинга ВСЕХ свойств USB устройств с функциями детекта их плуга и унплуга. Эта DLL и стоит денег и коду там не мало. Тот код, что я привел, всего лишь пример, использующий сотую долю той DLL

ntldr пишет:
Нам такой дурацкий код и даром не надо.


Ты то вообще тут при чем? Я вообще автору топика советую решение.

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!





Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

Создано: 23 октября 2007 00:01
· Личное сообщение · #26

Shad0vv пишет:
В муле всё валяется.
Так же можно попарсить google.cn и baidu.cn


Ну у меня статик IP нету и порт маппинг не поддерживается модемом плюс для выхода в инет я использую разные приемный и передающий каналы, при этом работая через SOCKS5 proxy, потому о emule мне можно и не мечтать - все равно он не работает на такой многозвенной цепи. Да и качать по нему 600 мегов - извините, это год уйдет. Вот если бы кто выложил на рапиду или еще куда.

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!




Ранг: 228.7 (наставник), 2thx
Активность: 0.120
Статус: Участник
malware research

Создано: 23 октября 2007 00:07
· Личное сообщение · #27

Имхо топикстартеру нужно, чтобы узер не форматнул себе винт (судя по первому посту). Думаю, достаточно проверки GetDriveType на DRIVE_REMOVABLE. Флопик? Есть GetDiskFreeSpace, к томуже в большинстве случаев у флопиков буква тома A:\ B:\ (защита ведь от дуркака...). Есть еще интерфейсы WMI (искать в MSDN), а также Removable Storage Manager Functions (там же).

GPcH пишет:
уже 2 года ищу дистриб китайской WinXP


мегаЛОЛ

-----
Research is my purpose




Ранг: 30.1 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 23 октября 2007 01:55 · Поправил: Crazy_Death
· Личное сообщение · #28

to steepf:
можеш поковырять технологию U3, там самый банальный инсталятор
проверяет есть ли твой диск, флешка или жестак



Ранг: 7.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 25 октября 2007 11:51
· Личное сообщение · #29

Steepf: дескрипторы флешки и винта абсолютно идентичны?



Ранг: 237.0 (наставник), 20thx
Активность: 0.130
Статус: Участник
sysenter

Создано: 27 октября 2007 02:02 · Поправил: HiEndsoft
· Личное сообщение · #30

DriveName[0]=FirstDriveFromMask(MyDevV->dbcv_unitmask);
DriveName[1] = ':'; DriveName[2] = ''; DriveName[3] = 0;
DriveTyp=GetDriveType(DriveName);
if (DriveTyp==2) -> Значит сменный носитель.
А вообще советую посмотреть:
http://exelab.ru/f/action=vthread&forum=6&topic=10202
Если чего непонятно, могу дать кусок своего исходника dll с детектированием подключения - отключения устройств Plug&Play любого класса. На халяву естес-но.

-----
продавец резиновых утёнков



. 1 . 2 . >>
 eXeL@B —› Программирование —› Как отлечить USB флешь от жесткого диска????
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати