Muszę znać adres MAC i adres IP klientów połączenia, jak mogę to zrobić w PHP?
php
mac-address
Neveen
źródło
źródło
Odpowiedzi:
IP serwera
Możesz uzyskać adres IP serwera z
$_SERVER['SERVER_ADDR']
.Adres MAC serwera
W przypadku adresu MAC można przeanalizować dane wyjściowe
netstat -ie
w systemie Linux lubipconfig /all
Windows.Adres IP klienta
Możesz uzyskać adres IP klienta z
$_SERVER['REMOTE_ADDR']
Adres MAC klienta
Adres MAC klienta nie będzie dostępny z wyjątkiem jednej szczególnej sytuacji: jeśli klient znajduje się w tym samym segmencie sieci Ethernet co serwer.
Tak więc, jeśli budujesz jakiś system oparty na sieci LAN, a Twoi klienci są w tym samym segmencie sieci Ethernet, możesz uzyskać adres MAC, analizując dane wyjściowe
arp -n
(linux) lubarp -a
(windows).Edycja : pytasz w komentarzach, jak uzyskać dane wyjściowe polecenia zewnętrznego - jednym ze sposobów jest użycie lewych apostrofów, np
Ale co, jeśli klienta nie ma w sieci LAN?
Cóż, nie masz szczęścia, chyba że możesz poprosić klienta o podanie tych informacji na ochotnika i przekazanie ich w inny sposób.
źródło
Adres MAC klienta (w sensie komputera, który wysłał żądanie HTTP) jest nadpisywany przez każdy router między klientem a serwerem.
IP klienta jest dogodnie dostarczane do skryptu w
$_SERVER['REMOTE_ADDR']
. W niektórych scenariuszach, szczególnie jeśli serwer sieciowy znajduje się za proxy (np. Buforujący serwer proxy)$_SERVER['REMOTE ADDR']
, zwróci adres IP serwera proxy , a często pojawi się dodatkowa wartość$_SERVER['HTTP_X_FORWARDED_FOR']
, która zawiera adres IP oryginalnego klienta żądania.Czasami, szczególnie gdy masz do czynienia z anonimowym serwerem proxy, nad którym nie masz kontroli, serwer proxy nie zwróci prawdziwego adresu IP, a jedyne, na co możesz mieć nadzieję, to adres IP serwera proxy.
źródło
Nie sądzę, aby można było uzyskać adres MAC w PHP, ale można uzyskać adres IP ze
$_SERVER['REMOTE_ADDR']
zmiennej.źródło
Myślę, że w przypadku serwera Windows możesz użyć tego:
źródło
exec
tylko `echogetmac
Wszystko, co musisz zrobić, to umieścić arp w innej grupie.
Domyślna:
Z poleceniem:
dostaniesz:
A ponieważ Apache jest demonem działającym pod adresem www-data użytkownika, może teraz wykonać to polecenie.
Więc jeśli teraz używasz skryptu PHP, np:
otrzymasz wynik
arp -an
polecenia linux .źródło
arp
binarnej jest zbędna,www-data
nadal ma uprawnienia do wykonywania zother
umode.Użyj tej klasy (https://github.com/BlakeGardner/php-mac-address)
Jest to klasa PHP do manipulacji adresami MAC w systemach operacyjnych Unix, Linux i Mac OS X. został napisany przede wszystkim w celu pomocy w fałszowaniu podczas audytów bezpieczeństwa sieci bezprzewodowej.
źródło
W systemie Windows, jeśli użytkownik używa twojego skryptu lokalnie, będzie to bardzo proste:
źródło
Aby rozwiązać problem, możesz skorzystać z następującego rozwiązania:
źródło
Możemy uzyskać adres MAC w Ubuntu w ten sposób w php
źródło
Uzyskiwanie adresu MAC za pomocą PHP: (testowane w Ubuntu 18.04) - Aktualizacja 2020
Oto kod:
Wynik:
źródło
Być może uzyskanie adresu Mac nie jest najlepszym podejściem do weryfikacji komputera klienta przez Internet. Zamiast tego rozważ użycie tokena, który jest przechowywany w przeglądarce klienta przy logowaniu administratora.
Dlatego klient może mieć ten token tylko wtedy, gdy administrator przyzna mu go za pośrednictwem przeglądarki. Jeśli token nie istnieje lub jest ważny, oznacza to, że maszyna klienta jest nieprawidłowa.
źródło
Za pomocą tego kodu możesz uzyskać adres MAC lub adres fizyczny
Używałem eksplozji wiele razy, ponieważ shell_exec ("ipconfig / all") zwraca pełne szczegóły całej sieci. więc musisz podzielić jeden po drugim. po uruchomieniu tego kodu otrzymasz
swój adres MAC 00 - ## - ## - CV-12 // to jest fałszywy adres tylko do celów pokazowych.
źródło
Działa to dla mnie w systemie Windows, podobnie jak
ipconfig /all
polecenie systemu Windows.źródło
pod linuxem używając iptables możesz logować do pliku każde żądanie do serwera WWW z adresem mac i ip. z php lookup ostatni element z adresem IP i uzyskaj adres mac.
Jak wspomniano, pamiętaj, że adres mac pochodzi z ostatniego routera w śledzeniu.
źródło
Możesz to łatwo zrobić za pomocą openWRT. Jeśli korzystasz z portalu dostępowego, możesz mieszać php i openWRT i tworzyć relacje między adresem IP a komputerem Mac.
Możesz napisać prosty kod PHP za pomocą:
Później, korzystając z openWRT, do którego możesz przejść
/tmp/dhcp.leases
, otrzymasz coś z formularzem:Tam masz mac, adres IP i nazwę hosta.
źródło