Miten saa käyttäjän mac osoitteen php:lla?
Tarkoitatko verkkokortin MAC-osoitetta? Ei onnistu PHP:llä.
tarkoitin, millä se onnistuisi?
Soittamalla käyttäjän isp:lle ja kysymällä :)
Niin tai näin, http://www.mvnet.fi/index.php?osio=Tietokoneet&sivu=Langattoman_verkon_murtaminen#murtuvat
Niin mitä tarkoitat käyttäjällä? Langattoman verkon käyttäjää? Aluksi mainitsit PHP:n, joten jotenkin loogisesti ajattelin verkkopalvelun käyttäjää. En TCP/IP-protokollasta tiedä, että kulkeeko siellä datakehyksessä oikeasti MAC-osoite, mutta itse olen ollut siinä uskossa, että siellä kulkee vain IP-osoite.
Edit: Tuolta löytyi jonkunlainen kuvaus TCP/IP-protokollan datakehyksestä:
http://koti.mbnet.fi/mrin/paattotyo/tcp_ip.html
Ja tosiaan lähdeosoitteelle on varattu vain kaksi sanaa (= 4 tavua). MAC-osoite sen sijaan koostuu 12:sta tavusta. Korjatkoon joku jos puhun ihan huuhaata :)
Onnistuu jos käytössä Linux + Apache yhdistelmä. Avainsanoja tämän jälkeen ovat which & arp käskyt. Lisäksi tarvitset yhden tiedon vielä lisäksi: IP osoite jonka MAC osoitteen haluat.
Onnea vaan metsästykseen, aloitapa vaikka Googlella.
-W-
No niin, hyvä, että joku ketä tietää asioista jotain, ottaa kantaa. Kun tätä nyt lähdettiin purkamaan, niin miten tuo edes pseudo-tasolla toimii? Eikös tuo käyttäjän MAC-osoite nyt siis sijaitse ainoastaan siellä ISP:n DHCP-palvelimen ARP-taulussa, joka tuskin on julkinen?
Wizard kirjoitti:
Onnistuu jos käytössä Linux + Apache yhdistelmä. Avainsanoja tämän jälkeen ovat which & arp käskyt.
Tarkennus: onnistuu lähiverkossa.
Tuossa linkatussa jutussa tarkoitetaan sitä, että langattoman lähiverkon käyttäjien MAC-osotteet saa ihan vain haistelemalla lähiverkon liikennettä, joten verkkoon pääsyn rajottaminen MAC-osotteen perusteella ei oo tehokasta.
Mikäs tässä nyt oli se päällimmäinen tarve tuolle MAC osoitteelle? Yleensähän käyttäjän MAC osoitteen saa käyttäjältä pyytämällä. Oman MAC osoitteen puolestaan näkee Windowsissa komentoriviltä komennolla "ipconfig /all" ja linuxissa komennolla "ifconfig".
ja ylipäätänsä aika hyvä tietoturva-aukko saa olla jos mac osoitteen saa selville.
sen avulla meinaan pystyy niin hyvin paikallistamaan käyttäjän et ei kiitos.
esim kaapeliverkoissa isp saa avaa mac osoitteella palvelun sun modeemiisi se on vakio. (nää kaapelimotut on yleensä lukittuja ettei pysty mac osoitetta edes vaihtamaan). ja jos joku saisi sen selville pystyis periaattees trace routtaamaan aina suhun asti.tai jos on saman kaapeliverkon ja saman reitittimen sisällä, ja on admin tunnut kaapelimotuunsa niin pystyis ottamaan sun liittymäs käyttöön. pelkällä ip:lläkin pääsee jo trace routtaamaan lähimpään reitittimeen ennen sinua, riippuen vähän palvelun tarjoajasta.
Noilla käskyillä saa aikaiseksi funktion jolla pääsee tutkimaan käyttäjän IP -osoitteen taustalla olevaa MAC -osoitetta. Mihin kyseinen IP -osoite on sitten bindattu, on täysin eri asia. Sehän voi olla palomuuri tai mikä tahansa muukin. Mutta kaikilla laitteilla joilla on IP-osoite, on myös MAC - poikkeuksia ei tähän aikaan aamusta kyllä tule mieleen.
Ja todellakin kuten joku tuossa mainitsi, onnistuu samassa verkkosegmentissä kuin käyttäjä itsekin. Mutta jos (ja kuten nykyisin yleensä on käyttäjät Suomessa) käyttäjä on netissä suoraan kiinni julkisella IP-osoitteella (koneella suoraan julkinen IP-osoite, ei private verkon osoitetta), saa käyttäjän verkkokortin MAC-osoitteen selville.
On olemassa myös ratkaisuja joilla pystytään haistelemaan käyttäjän IP-osoite palomuurien takaa, mutta ne ovat todella vaikeita ja niiden onnistumis-% taisi olla jotain luokkaa 98-99% eli eivät läheskään varmoja. MAC-osoitteen osalta en osaa sanoa, että selviäisikö sekin samalla...
MAC-osoitteen saaminen selville ei ole muuten tietoturva-aukko. Sen perusteella toimii moni verkon osa, TCP/IP liikenne ei ole se "ainoa ja oikea" liikennöintitapa verkoissa. MAC-osoite on yksilöllinen tunnus jolla pystytään identifioimaan jokin verkon aktiivinen laite ja/tai osa.
Tässä eräs netistä saatu scriptin pätkä asian tiimoilta kun en jaksanut alkaa itse rakentelemaan:
<?php function returnMacAddress() { // This code is under the GNU Public Licence // Written by michael_stankiewicz {don't spam} at yahoo {no spam} dot com // Tested only on linux, please report bugs // WARNING: the commands 'which' and 'arp' should be executable // by the apache user; on most linux boxes the default configuration // should work fine // Get the arp executable path $location = `which arp`; $location = rtrim($location); // Execute the arp command and store the output in $arpTable $arpTable = `$location -n`; // Split the output so every line is an entry of the $arpSplitted array $arpSplitted = split("\n",$arpTable); // Get the remote ip address (the ip address of the client, the browser) $remoteIp = $GLOBALS['REMOTE_ADDR']; $remoteIp = str_replace(".", "\\.", $remoteIp); // Cicle the array to find the match with the remote ip address foreach ($arpSplitted as $value) { // Split every arp line, this is done in case the format of the arp // command output is a bit different than expected $valueSplitted = split(" ",$value); foreach ($valueSplitted as $spLine) { if ( preg_match("/$remoteIp/",$spLine) ) { $ipFound = true; } // The ip address has been found, now rescan all the string // to get the mac address if ($ipFound) { // Rescan all the string, in case the mac address, in thestring // returned by arp, comes before the ip address (you know, Murphy's laws) reset($valueSplitted); foreach ($valueSplitted as $spLine) { if ( preg_match("/[0-9a-f][0-9a-f][:-][0-9a-f][0-9a-f][:-][0-9a-f][0-9a-f][:-][0-9a-f][0-9a-f][:-]". "[0-9a-f][0-9a-f][:-][0-9a-f][0-9a-f]/i",$spLine)) { return $spLine; } } } $ipFound = false; } } return false; } ?>
-W-
omalla isp:llä ainakin ip osoitteen trace routti ja muut selvitykset pysähtyy edelliselle reitittimelle. jos siitä yrittää mac osoitteelle asti tulee access denied. riippuu kaiketi mitä packetia lähettää perille asti. jos tekisi jonkun packetin joka olis kulkis 80 ja 8080 http porttien kautta niin vois päästä perille, mutta en tiedä miten ne sais "takaisinkytkettyä" siten et palauttaa lähettäjälle infon viimeisen etapin modeemista tai verkkokortista.
Aihe on jo aika vanha, joten et voi enää vastata siihen.