Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2008, 22:51   #11
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Продолжение:
Код:
begin 
  Result := ''; 
  FillChar(Buffer,BufferSize,#0); 
  if Win32Platform=VER_PLATFORM_WIN32_NT then 
    begin // Windows NT, Windows 2000 
      // Get SCSI port handle 
      hDevice := CreateFile( '\\.\Scsi0:', GENERIC_READ or GENERIC_WRITE, 
        FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0 ); 
      if hDevice=INVALID_HANDLE_VALUE then Exit; 
      try 
        srbControl.HeaderLength := SizeOf(SRB_IO_CONTROL); 
        System.Move('SCSIDISK',srbControl.Signature,8); 
        srbControl.Timeout := 2; 
        srbControl.Length := DataSize; 
        srbControl.ControlCode := IOCTL_SCSI_MINIPORT_IDENTIFY; 
        pInData := PSendCmdInParams(PChar(@Buffer)+SizeOf(SRB_IO_CONTROL)); 
        pOutData := pInData; 
        with pInData^ do 
        begin 
          cBufferSize := IDENTIFY_BUFFER_SIZE; 
          bDriveNumber := 0; 
          with irDriveRegs do 
          begin 
            bFeaturesReg := 0; 
            bSectorCountReg := 1; 
            bSectorNumberReg := 1; 
            bCylLowReg := 0; 
            bCylHighReg := 0; 
            bDriveHeadReg := $A0; 
            bCommandReg := IDE_ID_FUNCTION; 
          end; 
        end; 
        if not DeviceIoControl( hDevice, IOCTL_SCSI_MINIPORT, @Buffer, 
          BufferSize, @Buffer, BufferSize, cbBytesReturned, nil ) then Exit; 
      finally 
        CloseHandle(hDevice); 
      end; 
    end 
  else 
    begin // Windows 95 OSR2, Windows 98 
      hDevice := CreateFile( '\\.\SMARTVSD', 0, 0, nil, CREATE_NEW, 0, 0 ); 
      if hDevice=INVALID_HANDLE_VALUE then Exit; 
      try 
        pInData := PSendCmdInParams(@Buffer); 
        pOutData := PChar(@pInData^.bBuffer); 
        with pInData^ do 
        begin 
          cBufferSize := IDENTIFY_BUFFER_SIZE; 
          bDriveNumber := 0; 
          with irDriveRegs do 
          begin 
            bFeaturesReg := 0; 
            bSectorCountReg := 1; 
            bSectorNumberReg := 1; 
            bCylLowReg := 0; 
            bCylHighReg := 0; 
            bDriveHeadReg := $A0; 
            bCommandReg := IDE_ID_FUNCTION; 
          end; 
        end; 
        if not DeviceIoControl( hDevice, DFP_RECEIVE_DRIVE_DATA, pInData,  
           SizeOf(TSendCmdInParams)-1, pOutData, W9xBufferSize, 
           cbBytesReturned, nil ) then Exit; 
      finally 
        CloseHandle(hDevice); 
      end; 
    end; 
    with PIdSector(PChar(pOutData)+16)^ do 
    begin 
      ChangeByteOrder(sSerialNumber,SizeOf(sSerialNumber)); 
      SetString(Result,sSerialNumber,SizeOf(sSerialNumber)); 
    end; 
end; 

Пример использования: 

var s : String; 
    rc : DWORD; 
begin 
  s := GetIdeDiskSerialNumber; 
  if s='' then 
    begin 
      rc := GetLastError; 
      if rc=0 then Label1.Caption:='IDE drive is not support SMART feature'
      else WriteLn(SysErrorMessage(rc));
    end else Label1.Caption:='Disk serial number: '+s;
end.  

//Автор: Alex Konshin, akonshin@earthlink.net, Boston, USA
Сайт автора - delphibase.endimus.com или
home.earthlink.net/~akonshin/index.htm
Там же можно посмотреть, как узнать номер второго физического винчестера.
Да, кстати, функция может не работать, если первый контролер в системе не ATA или если первое устройство не является винчестером, который поддерживает SMART.
У меня такого не встретилось, работает отлично.

Последний раз редактировалось mihali4; 09.01.2008 в 23:53.
mihali4 вне форума Ответить с цитированием
Старый 09.01.2008, 23:50   #12
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Вот, спасибо! И откуда буржуины всё это знают?
Jeni вне форума Ответить с цитированием
Старый 09.01.2008, 23:55   #13
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Jeni Посмотреть сообщение
Вот, спасибо! И откуда буржуины всё это знают?
Им несколько проще - вся документация рядом и на родном языке.
Но светлых голов и у нас предостаточно. К ним относится, кстати, и названный вами "буржуином" Алексей, который, судя по владению "олбанским", находится за бугром не очень давно.

Последний раз редактировалось mihali4; 10.01.2008 в 00:23.
mihali4 вне форума Ответить с цитированием
Старый 10.01.2008, 00:57   #14
Marsik
Форумчанин
 
Аватар для Marsik
 
Регистрация: 23.10.2007
Сообщений: 275
По умолчанию

Пипец такой код большой.Надо искать обходной путь. Я думаю вместо этого использовать адрес мыла.Только встает вопрос: предположим мыло vasek_pupkin@loh.ru и надо оставив только vasek_pupkin перемешать все буквы(возможно и цифры) по определенному алгоритму(например,invaspupke),доба вить после каждой буквы еще какие нить буквы,например ibndvsawsipaudpmkgeh,и после этого посмотреть какой цифре соответствует каждая буква или цифра букве: а=1,б=2,6=е и т.д. Получается примерно 8294....759(только я очень плохо знаю abc) это и будет пароль.Только один существенный недостаток: зарегав на одно мыло,этим мылом может пользоваться каждый. А может вместо мыла использовать к примеру, название 5 первых папок в program files,перемешать названия,отправить по мылу полученный текст(перемешать чтобы юзверь не подумал что нить нето),у себя опять перемешать и по вышеописанному способу сделать пароль.Только вопрос реально ли это?И поймет ли такой пароль программа?Что думаете?
http://otlishnik.com/ чудесный портал для всех кто учится. Рефераты, каталоГ вузов, решебники, справочники, ЕГЭ! Welcome
Marsik вне форума Ответить с цитированием
Старый 10.01.2008, 01:26   #15
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Цитата:
Сообщение от Marsik Посмотреть сообщение
Пипец такой код большой.Надо искать обходной путь. Я думаю вместо этого использовать адрес мыла.Только встает вопрос: предположим мыло vasek_pupkin@loh.ru и надо оставив только vasek_pupkin перемешать все буквы(возможно и цифры) по определенному алгоритму(например,invaspupke),доба вить после каждой буквы еще какие нить буквы,например ibndvsawsipaudpmkgeh,и после этого посмотреть какой цифре соответствует каждая буква или цифра букве: а=1,б=2,6=е и т.д. Получается примерно 8294....759(только я очень плохо знаю abc) это и будет пароль.Только один существенный недостаток: зарегав на одно мыло,этим мылом может пользоваться каждый. А может вместо мыла использовать к примеру, название 5 первых папок в program files,перемешать названия,отправить по мылу полученный текст(перемешать чтобы юзверь не подумал что нить нето),у себя опять перемешать и по вышеописанному способу сделать пароль.Только вопрос реально ли это?И поймет ли такой пароль программа?Что думаете?
Расплавило мозг. Для чево такая непонятная защита? Поймёт ли она пароль... трудно сказать.. исходника то нет.
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 10.01.2008, 02:33   #16
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
зарегав на одно мыло,этим мылом может пользоваться каждый.
Во-первых, юзер не должен знать, что есть какая-то связь между его мыльным адресом и паролем (или кодом активации).
Во-вторых, наличие корректного адреса мыла проверяется самой программой - ведь используемые адреса прописаны просто у юзера в WIN.INI.
В-третьих - пусть ваша программа в момент установки генерит некий "свой серийный номер", прислав который, юзер получит код активации, который явился результатом неких хитромудрствований над его мылом.
И пусть этот кулхацкер ищет несуществующую связь между серийным номером и кодом активации всю оставшуюся жизнь...
mihali4 вне форума Ответить с цитированием
Старый 10.01.2008, 09:20   #17
Marsik
Форумчанин
 
Аватар для Marsik
 
Регистрация: 23.10.2007
Сообщений: 275
По умолчанию

Ну если мылом так мылом.Но вот как мыло перемешать,добавить после каждого символа еще букву и посмотреть значения которым они соответствуют
http://otlishnik.com/ чудесный портал для всех кто учится. Рефераты, каталоГ вузов, решебники, справочники, ЕГЭ! Welcome
Marsik вне форума Ответить с цитированием
Старый 10.01.2008, 09:46   #18
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию

Блог программистов - Шифрование
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вкл. компа begemotikdin Компьютерное железо 6 09.09.2008 20:26
Имя компа JRcoker Win Api 14 25.07.2008 15:42
ускорение компа Dark Energy Компьютерное железо 4 14.07.2008 20:15
Перезагрузка компа Pusher Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 14 19.02.2008 20:54
Вырубление компа Andr Общие вопросы Delphi 5 15.05.2007 22:13