Portál AbcLinuxu, 14. května 2025 02:51

Dotaz: Jak zjistit MAC adresu v PHP

27.2.2006 18:13 zacatecnik
Jak zjistit MAC adresu v PHP
Přečteno: 3746×
Odpovědět | Admin
Ahoj, programuji v php aplikaci pro Internet. Pro overovani bych potreboval znat MAC adresu pocitace. Nemohu najit zadnou funkci ktera umi zobrazit nebo zna MAC adresu pocitace, ktery se prihlasuje do aplikace. Nevite jak na to? Dik ta pomoc.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

27.2.2006 18:16 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Jak zjistit MAC adresu v PHP
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nelze (až na výjimečné případy). V PHP ani v žádném jiném jazyce.
27.2.2006 19:52 Jirkaehm | skóre: 9
Rozbalit Rozbalit vše Re: Jak zjistit MAC adresu v PHP
nehlede na to ze to neni moc dobra metoda overovani, protoze za jednou ip (mac) adresou zvenci muze byt treba 1000pc za natem (preklada mac adresy;) ), takze bych spis doporucil overovat pres sessions v php, nebo pri prihlaseni vygenerovat hash, a kontrolovat pomoci nej a dle ip adresy, apod ...
27.2.2006 19:54 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Jak zjistit MAC adresu v PHP
Většinou máte spíš za jednou MAC adresou celý Internet kromě lokální sítě…
DjAARA avatar 27.2.2006 23:51 DjAARA | skóre: 32 | Praha|Náklo|Olomouc
Rozbalit Rozbalit vše Re: Jak zjistit MAC adresu v PHP
Vetsinou je za jednou MAC vse krom lokalniho subnetu a ani tam to nemusi byt pravda. Viz treba nektere levne HW AP...
28.2.2006 03:45 Libor Klepac | skóre: 45 | Mýto
Rozbalit Rozbalit vše Re: Jak zjistit MAC adresu v PHP
mysli tim, ze pro vsechny pocitace, krome tech v lokalni siti budete dostavat (dostaval byste) pouze mac adresu pocitace, ktery k vam routuje provoz
Urine should only be green if you're Mr. Spock.
27.2.2006 23:30 Stanislav Petr | skóre: 27 | Praha
Rozbalit Rozbalit vše Re: Jak zjistit MAC adresu v PHP
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zjistit to lze - pokud budete mit na serveru dostatecna prava, tak si muzete zkusit rozparsovat vystup prikazu "arp -an". Napr.nejak takhle:

<?php
  $ip = $_SERVER['REMOTE_ADDR'];
  $mac = exec('arp -an|grep '.$ip.'|awk \'{print $4}\'');
?>
No jo... Co bych cekal od systemu, kterej se vypina tlacitkem start... http://glux.org
27.2.2006 23:56 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Jak zjistit MAC adresu v PHP
Opravdu jste přesvědčen, že tímto postupem získá MAC adresu klienta? Tento postup má šanci fungovat jen ve velmi specifických případech, a to i kdyby tam nebyly zjevné chyby. Nebylo by lepší uvědomit si, že snažit se na aplikační vrstvě zkoumat hlavičky linkové vrstvy (které stejně neuvidí) je popřením samotné koncepce TCP/IP? A především že těžko zjistit MAC adresu klienta, když ta se k serveru v drtivé většině případů vůbec v žádné podobě ani nedostane?
28.2.2006 08:20 Stanislav Petr | skóre: 27 | Praha
Rozbalit Rozbalit vše Re: Jak zjistit MAC adresu v PHP
Uz se sitema hoooodne let zivim a jsem zcela presvedcen ze takto MAC adresu sitove karty klienta s zadanou IP adresou ziska. Samozrejme, ze pouze za podminek kdy je to mozne (stejna sit + stejna kolizni domena), ale snad neni nutne neustale psat dokoelcka ke kazdemu prizpevku. Spis by me zajimalo co popira koncepci TCP/IP? To ze aplikace ma pristup k linkove vrstve? A neni IP Stack taky jen jednou z aplikaci? Jak by podle Vas mohla fungovat implementace ip stacku v mikrojadrovych systemech?
No jo... Co bych cekal od systemu, kterej se vypina tlacitkem start... http://glux.org
28.2.2006 11:29 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Jak zjistit MAC adresu v PHP
Uz se sitema hoooodne let zivim a jsem zcela presvedcen ze takto MAC adresu sitove karty klienta s zadanou IP adresou ziska.

Ještě jsem neviděl systém, kde by měl PHP skript v cestě adresář /sbin/. Ten grep vám občas chytne i řádky, které jste tam vůbec nechtěl (hint: matchuje 11:22:33:44:55:66 regulární výraz 11.22.33.44?). Stejná IP adresa se může v ARP tabulce vyskytovat víckrát - nebo tam, budete-li mít smůlu, nemusí být vůbec. Prostě je to celé hodně na vodě a stavět na něčem takovém autentizaci mi nepřipadá jako příliš dobrý nápad.

Samozrejme, ze pouze za podminek kdy je to mozne (stejna sit + stejna kolizni domena), ale snad neni nutne neustale psat dokoelcka ke kazdemu prizpevku.

Obávám se že to nutné je, protože tazatel se dosud ani slovem nezmínil o tom, že tato naprosto klíčová podmínka je splněna.

Spis by me zajimalo co popira koncepci TCP/IP?

Popírá to smysl oddělení jednotlivých vrstev. Aplikační vrstva se nemá co hrabat v hlavičkách linkové vrstvy, kdyby nic jiného, už proto, že nemůže vůbec tušit, jakou konkrétní implementací ten paket dorazil. Kdyby tomu tak nebylo, mohli bychom používat jeden protokol a žádný stack by vůbec nemusel existovat.

28.2.2006 11:28 Johny99
Rozbalit Rozbalit vše Re: Jak zjistit MAC adresu v PHP
Odpovědět | | Sbalit | Link | Blokovat | Admin
Je hezke, ze tu kolegove v 7 zpravach z 8 zduvodnili proc to nejde a proc je nesmysl to delat, ja osobne ocenuju toho jednoho, co odpovedel jak to udelat. Delat to za urcitych podminek jde a ma to smysl a dokud nechapete proc to tazajici chce (a za jakych podminek), nevidim duvod, proc odpovedi byly takove jake byly.

Co se tyka jeste toho jak to udelat, ja jsem to jeste delal pomoci parsovani vystupu 'cat /proc/net/arp', protoze jsem nemel dostatecna prava na prikaz arp. A druha moznost jeste byla pomoci nejakeho volani snmp. Z hlavy si to uz nepamatuju, z prace to nedohledam. SNMP jsme pouzival jako prvni, ale presel jsem na /proc/net/arp, protoze se z nejakeho mne neznameho duvodu zasekaval snmp demon.

Johny99
28.2.2006 11:34 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Jak zjistit MAC adresu v PHP
Netvrdil jsem, že je nesmysl (v rámci segmentu) autentizovat klienty podle MAC adresy. Tvrdil jsem (a na tom trvám), že je zcela zásadní nesmysl řešit to v PHP skriptu. Chcete-li kontrolovat MAC adresu, dejte to tam, kam to patří. Tedy buď statickými položkami v ARP tabulce nebo filtrací pomocí netfilteru. Budete-li se snažit dělat to v PHP skriptu (a naznačeným způsobem), bude to za prvé drbání se pravou nohou za levým uchem, za druhé jedna velká potenciální díra do systému a za třetí to stejně bude fungovat jen pokud budete mít štěstí.
28.2.2006 13:52 Johny99
Rozbalit Rozbalit vše Re: Jak zjistit MAC adresu v PHP
Ale ja s Vama naprosto souhlasim. Jenom jsem poznamenal, ze dotycny se ptal jak to udelat a ne proc to nedelat. Cili vetsinou dostaval odpoved na otazku kterou nepolozil a na to co chtel vedet mu nikdo moc neodpovidal. Pritom nevite co s tim chtel delat.

Jinak co se tyka ziskani MAC adresy, muze to byt docela uzitecna funkce. Mame sit, ve ktere mame shaping nastaveny tak, aby fungoval podle mac adres, kazdy uzivatel si pres webovou aplikaci muze zaregistrovat svoji adresu, tim ziska pristup na internet. Ziskani MAC pouzivam k tomu, aby se zacatecnik pouze pripojil, prihlasil a zmackl "Pridej kartu" s predvyplnenou mac adresou ze ktere komunikuje. Vysvetlim tak lidem podstatne rychleji co maji udelat, nez kdybych jim mel vysvetlovat kde a jak ziskaji svoji mac adresu (nevim co maji za system - win xp/98/... / mac / linux, jakou jazykovou mutaci). Proste tu funkci primarne nepouzivam k nejakemu overovani, ale pouze jako zjednoduseni pro uzivatele. Treba to dotycny chtel pouzit na neco podobneho. Jak relevantni by potom byly ty prispevky o tom ze je blbost ziskavat mac v PHP?

Johny99
28.2.2006 13:42 Jooky (inactive) | skóre: 39 | blog: Jooky | Bratislava
Rozbalit Rozbalit vše Re: Jak zjistit MAC adresu v PHP
Ahoj, programuji v php aplikaci pro Internet.

po tejto vete mi bolo hned jasne ze ziadnu mac nedostane :o) maximalne najde prvy hop, co je router u IPS.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.