Форум: "Система";
Текущий архив: 2002.08.29;
Скачать: [xml.tar.bz2];
Вниз
Как узнать серийный номер материнской платы Найти похожие ветки
← →
dXb group (2002-06-16 00:02) [0]Проблема в следующем: необходимо прочитать серийный номер материнки либо любой другой УНИКАЛЬНЫЙ ДЛЯ ДАННОЙ МАШИНЫ (системного блока) номер средствами Delphi...
← →
Anatoly Podgoretsky (2002-06-16 00:16) [1]У материнских плат, за небольшим исключение серийный номер существует только в виде наклейки на плате, естественно его не узнать программными путями, то небольшое количество плат, которые имеют егов БИОС никак это не документируют.
← →
SPeller (2002-06-16 03:21) [2]А если юзер сделает апгрейд, то что тогда твоя программа будет делать?
← →
~Rand~ (2002-06-16 09:11) [3]Удалено модератором
← →
Rooman (2002-06-16 11:04) [4]CoCreateGuid - уникальнее номера не придумаешь
← →
Новенький в Делфи (2002-06-16 11:11) [5]тогда как можно написать программу, то бы она запускалась только с одного компьютера?
← →
Anatoly Podgoretsky (2002-06-16 11:23) [6]В такой постановке, вообще то никак, скопирую и запущу
← →
GOOFFY (2002-06-16 12:17) [7]Удалено модератором
← →
Rem (2002-06-16 13:02) [8]Можно прочитать серийный номер раздела на винчестере:
BOOL GetVolumeInformation(LPCTSTR lpRootPathName,
LPTSTR lpVolumeNameBuffer,
DWORD nVolumeNameSize,
LPDWORD lpVolumeSerialNumber,
LPDWORD lpMaximumComponentLength,
LPDWORD lpFileSystemFlags,
LPTSTR lpFileSystemNameBuffer,
DWORD nFileSystemNameSize);
Гарантировать его уникальность нельзя, но очень трудно найти другой винчестер с таким же номером.
← →
MJH (2002-06-16 17:59) [9]2dXb group
а че не гарантийный?
>тогда как можно написать программу, то бы она запускалась >только с одного компьютера?
привязка к серийному номеру винта, к типу и частоте проца, к биосу
← →
Новенький в Делфи (2002-06-17 00:21) [10]а конкретней можно, как взять эти значения (проц, биос) ?*
← →
SuperUmnik (2002-06-17 09:17) [11]BOOL GetVolumeInformation(LPCTSTR lpRootPathName,
LPTSTR lpVolumeNameBuffer,
DWORD nVolumeNameSize,
LPDWORD lpVolumeSerialNumber,
LPDWORD lpMaximumComponentLength,
LPDWORD lpFileSystemFlags,
LPTSTR lpFileSystemNameBuffer,
DWORD nFileSystemNameSize);
+ CoCreateGuid - уникальнее номера не придумаешь
+ номер сетевухи если есть и еще какая нить фигня записанная в реест при установке программы и скопировать Чайнику или Ламеру будет сложно, очень сложно.
Но абсолютной защиты ни когда не сделать. Защита должна быть экономически эффективна. т.е. 1) Взламывать дороже чем купить.
2) Разработка Защиты должна стоить дешевле самой программы т.е. если программа стоит 100баксов то защита на 10 баксов уже хорошая!
← →
bander_log (2002-06-17 12:22) [12]Все эти методы хороши, но программно ты все равно будешь делать логические сопоставления которые прекрасно обходятся при вскрытии. Абсолютной защиты не существует. В таком случае лучше сделай генератор ключей или лицензий и сныкай подальше, а при использовании БД производи шифрование с помощью своего шифратора с ключами зарытыми в отдельном приложении или вообще на внешнем носителе. Это не так много времени занимает по времени и можно использовать в комбинации с другими средствами защиты.
← →
KSergey (2002-06-17 13:02) [13]Пошарьтесь в "Новостях мира компонент" - точно есть компонент, с исходниками, который позволяет считывать всякие вот параметры железа. Его же (если не ошибаюсь) перенесли уже и в кладовку. Так что ищите.
← →
111 (2002-06-17 14:29) [14]Вот исходник на Paskale серийний номер HDD (РОДНОЙ!!!!)
{$IFDEF Windows}
uses WinCrt;
{$ENDIF}
var
InfoArray : array[0..255] of word;
IdeInfo : record
Config : word;
CylsTotal : word;
Unused : word;
HeadTotal : word;
BPT : word;
BPS : word;
SPT : word;
Vendor : array[0..2] of word;
Serial : array[1..20] of char;
BufType : Word;
BufSize : Word;
ECC : Word;
Revision : array[1..8] of char;
Model : array[1..40] of char;
end absolute InfoArray;
Count : byte;
i : byte;
begin
writeln("?д®а¬ жЁп ® ¤ЁбЄ®ў®¤ е IDE:"^M^J);
{$IFDEF WINDOWS}
for count := 1 to mem[ $0040:$0075] do begin
{$ELSE}
for count := 1 to mem[Seg0040:$0075] do begin
{$ENDIF}
FillChar(InfoArray, SizeOf(InfoArray), 0);
{Џа®ўҐаЁвм Ј®в®ў®бвм}
while (port[$1F7] and $80<>0) do ;
{‡ ЇаҐвЁвм ЇаҐалў Ёп}
port[$3f6] := 2;
port[$1f6] := $A0 + ((count-1) shl 4);
port[$1f7] := $EC;
{Џа®ўҐаЁвм Ј®в®ў®бвм}
while (port[$1F7] and $80<>0) do ;
{Џ®«гзЁвм Ёд®а¬ жЁо}
for i := 0 to 255 do InfoArray[i] := swap(portw[$1F0]);
{H ЇҐз вaвм Ёд®а¬ жЁо}
writeln("?д®а¬ жЁп ® дЁ§ЁзҐбЄ®¬ ¤ЁбЄҐ ",count-1,^M^J);
with IdeInfo do begin
writeln("…¬Є®бвм Ґд®а¬ вЁа®ў п :", 9.5367431641E-7* {1/2^20}
swap(BPT)*swap(CylsTotal)*swap(HeadTotal):5:0, "Mb");
writeln("…¬Є®бвм д®а¬ вЁа®ў п :",
longint(swap(SPT))*swap(CylsTotal)*swap(HeadTotal) div 2048:5, "Mb");
writeln("—Ёб«® жЁ«Ё¤а®ў :", swap(CylsTotal):7);
writeln("—Ёб«® Ј®«®ў®Є :", swap(HeadTotal):7);
writeln("—Ёб«® ᥪв®а®ў ¤®а®¦Єг :", swap(SPT):7);
writeln("—Ёб«® Ў ©в ¤®а®¦Єг* :", swap(BPT):7);
writeln("—Ёб«® Ў ©в ᥪв®а* :", swap(BPS):7);
writeln("ђ §¬Ґа ЎгдҐа :", swap(BufSize):7);
writeln("Љ®¤ ECC :", swap(ECC):7);
writeln(" * -- Ґд®а¬ вЁа®ў п Ґ¬Є®бвм", ^M^J);
writeln("‘ҐаЁ©л© ®¬Ґа :", serial);
writeln("‚ҐабЁп :",revision);
writeln("Њ®¤Ґ«м :",model);
end;
write("H ¦¬ЁвҐ «оЎго Є« ўЁиг...");
{$IFDEF WINDOWS}
readkey;
{$ELSE}
asm xor ah,ah ; int 16h end;
{$ENDIF}
writeln(^M^J);
end;
end.
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2002.08.29;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.007 c