Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 22:45 27.09.24 
Компютри и Интернет
   >> Delphi
*Кратък преглед

Страници по тази тема: 1 | 2 | >> (покажи всички)
Тема Извличане на MAC на локалния PC  
Авторv_automation (Нерегистриран)
Публикувано29.03.04 03:04



Здравейте!
Трябва ми код на делфи или в краен случай на C и по-възвожност не на assembler за извличане на MAC адреса на мрежова карта монтирана( но несвързана към мрежа) на локалния компютър, който работи под "windows all" , без до се използват мрежови протоколи и функции, което явно в тази ситуация е неуместно.
Венцислав Александрийски.
П.П. - по възможност без използване на инструкции за командния промпт



Тема Re: Извличане на MAC на локалния PCнови [re: v_automation]  
АвторShaDoW (Нерегистриран)
Публикувано29.03.04 09:52



Ей това ми попадна случайно преди малко :)
http://www.scalabium.com/faq/dct0088.htm
П.П. Изкефих се като каза "по възможност без използване на инструкции за командния промпт" В последно време много се ползва ;)



Тема Re: Извличане на MAC на локалния PCнови [re: ShaDoW]  
Автор andrew_nikoloff (минаващ)
Публикувано29.03.04 10:49



Това е направо чудесно! С тази разлика, че при мен при всяко стартиране връща различен резултат



Тема Ops...нови [re: ShaDoW]  
Автор PhantomASМодератор (няма)
Публикувано29.03.04 13:25



Чесно казано не бих искал да заложа на CoCreateGUID за това ;-))))

Ето ти и работещ код (надявам се - ти ще кажеш)




uses
NB30;

function GetAdapterInfo(Lana: Char): String;
var
Adapter: TAdapterStatus;
NCB: TNCB;
begin
FillChar(NCB, SizeOf(NCB), 0);
NCB.ncb_command := Char(NCBRESET);
NCB.ncb_lana_num := Lana;
if Netbios(@NCB) <> Char(NRC_GOODRET) then
begin
Result := 'mac not found';
Exit;
end;

FillChar(NCB, SizeOf(NCB), 0);
NCB.ncb_command := Char(NCBASTAT);
NCB.ncb_lana_num := Lana;
NCB.ncb_callname := '*';

FillChar(Adapter, SizeOf(Adapter), 0);
NCB.ncb_buffer := @Adapter;
NCB.ncb_length := SizeOf(Adapter);
if Netbios(@NCB) <> Char(NRC_GOODRET) then
begin
Result := 'mac not found';
Exit;
end;
Result :=
IntToHex(Byte(Adapter.adapter_address[0]), 2) + '-' +
IntToHex(Byte(Adapter.adapter_address[1]), 2) + '-' +
IntToHex(Byte(Adapter.adapter_address[2]), 2) + '-' +
IntToHex(Byte(Adapter.adapter_address[3]), 2) + '-' +
IntToHex(Byte(Adapter.adapter_address[4]), 2) + '-' +
IntToHex(Byte(Adapter.adapter_address[5]), 2);
end;

function GetMACAddress: string;
var
AdapterList: TLanaEnum;
NCB: TNCB;
begin
FillChar(NCB, SizeOf(NCB), 0);
NCB.ncb_command := Char(NCBENUM);
NCB.ncb_buffer := @AdapterList;
NCB.ncb_length := SizeOf(AdapterList);
Netbios(@NCB);
if Byte(AdapterList.length) > 0 then
Result := GetAdapterInfo(AdapterList.lana[0])
else
Result := 'mac not found';
end;

---
Колкото повече, толкова повече.

Тема Промяна на МАК на Realtek8029, WinBond, 3Comнови [re: v_automation]  
Автор NikB (любопитен)
Публикувано29.03.04 20:25



Това по-долу ми попадна сличайно. Май е малко в страни от темата, но за тест ма МАК адреси бива.
(А по темата - примерчето на фантомаАС е ОК :)


К примеру, на сетевых картах Realtek8029, WinBond, 3Com можно изменять MAC-адрес, устанавливая соответствующие ключи в реестре:
Для win9x:

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\Net\0000] - здесь необходимо создать 2 строковые переменные (string):

"NetworkAddress"="xx-xx-xx-xx-xx-хх"
"SelectedID"="xx-xx-xx-xx-xx-хх"

где xx-xx-xx-xx-xx-хх - любой MAC-адрес, который будет душе угоден.
Для winNT:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<адаптер>\Parameters]

"NetworkAddress"="xx-xx-xx-xx-xx-хх"
"SelectedID"="xx-xx-xx-xx-xx-хх"



Тема Re: Извличане на MAC на локалния PCнови [re: v_automation]  
Авторv_automation (Нерегистриран)
Публикувано29.03.04 22:05



Здравейте!
Искам да отбележа че примера с netbios-a не е съгласно изискването което поставих да не се ползват мрежови протоколи. Аз нямам мрежа и този пример не работи. Не е много удобно все пак да карам патребителите да се включват в мрежа за да мога да им взема MAC-а. Примера с GUID е даден в една статия на борланд за това какво не трябва да се прави. Там пише че последните цифри от GUID които се генерират може и да са MAC-а но по-вероятно е да са просто шестнадесетични числа. При това ако има повече от 1 карта съвсем не се връзва. Има и някъв начин с използване на SNMP, който не съм поробвал но не вярвам да тръгне без да има мрежа. От команд промпта почти всяка команда дето е за мрежато вади MAK-овете и на 2-те карти дето ги имам, което зночи че има начин. Освен това протокола дето ще използвам за да ги получа от него огкаде ги вади?
Извадете си кабела за лан-а и пробвойте дали работи примерчето, защото при мене не става(може аз да бъркам нещо). Дава грешка още на NCBENUM.
Неможе да няма начин да се детектнат картите и да им се вземат номерата и без мрежа.
Венцислав Александрийски



Тема Re: Извличане на MAC на локалния PCнови [re: v_automation]  
Автор PhantomASМодератор (няма)
Публикувано30.03.04 08:40



>>>>>Искам да отбележа че примера с netbios-a не е съгласно изискването което поставих да не се ползват мрежови протоколи.

А ти какви функции очакваш да се използват ?!? Тези за достъп до звуковата карта - после може да се окаже, че и звукова карта нямаш.

>>>> Извадете си кабела за лан-а и пробвойте дали работи примерчето, защото при мене не става(може аз да бъркам нещо). Дава грешка още на NCBENUM.
Неможе да няма начин да се детектнат картите и да им се вземат номерата и без мрежа.

Аз имам 2 мрежови карти - и при мен примера НЕ ДАВА ГРЕШКА !!!! - просто за изключената мрежова карта не връща резултат или по точно MAC not found. Което обаче е повод да се заровиш в хелп-овете на Win32 или MSDN - и да си намериш решение - защото случая ти е специфичен - повечето мрежови карти (даже и без работеща мрежа ) се очаква да са вързани в хъб/суич - и тогава примера ще работи. Най-добре е да ползваш регистрите - както беше казал някой - само, че ми хрумва следната идея ???? какво ще правиш ако някой от клиентите ти ВЪОБЩЕ няма мрежова карта, а не просто си я държи изключена ?

---
Колкото повече, толкова повече.


Тема Re: Извличане на MAC на локалния PCнови [re: PhantomAS]  
Авторv_automation (Нерегистриран)
Публикувано31.03.04 02:48



Здравей!
Нещо поизнервен ми се виждаш :).
Неискам да ти противореча, особенно когато си в криза, но искам да отбележа че netbios-а напоследък малко позападва. За да си ръчка чавек в нета netbios не му трябва.
Ако си извадиш кабелите от всички карти ще видиш какъв е резултата(и аз съм с 2 карти но съм без мрежа).
Явно инструментите на windows не ползват този така естествен подход, щом не им трябва мрежа за да работят. Аида-та също работи без мрежа.
Не е нужно да се стресираш щом незнаеш варянт за случая който ме интересува, някой друг сигурно ще знае.
Венцислав Александрийски



Тема Re: Извличане на MAC на локалния PCнови [re: v_automation]  
Автортapиkaт (Нерегистриран)
Публикувано01.04.04 12:42



http://www.programmer.iatp.org.ua/delphi/stati/faq/w32apifaq.htm
т. 42 - има пример със сокет



Тема Re: Извличане на MAC на локалния PCнови [re: v_automation]  
АвторПpakтиk (Нерегистриран)
Публикувано01.04.04 15:38



>>>>От команд промпта почти всяка команда дето е за мрежато вади MAK-овете и на 2-те карти дето ги имам, което зночи че има начин. Освен това протокола дето ще използвам за да ги получа от него огкаде ги вади?


Просто решение. От програмката на Делфи си пускаш промта с насочване на изхода в текстов файл. После анализираш файла и си готов




Страници по тази тема: 1 | 2 | >> (покажи всички)
*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.