Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> MAC zamiast IP
yeti
post 17.09.2003, 11:00:53
Post #1





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 12.09.2003

Ostrzeżenie: (0%)
-----


No właśnie, klient zaparł się, żeby użytkownik był rejestrowany po numerze karty a nie po IP i tu zaczynają się schody.
Nigdzie nie znalazłem funkcji ani klasy która by to umożliwiała.
Czy ktoś może miał już taki prolem?

pozdrawiam
Krzysiek
Go to the top of the page
+Quote Post
blasfemia
post 17.09.2003, 12:28:46
Post #2





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 10.09.2003
Skąd: Radom

Ostrzeżenie: (0%)
-----


To co napisalem nizej napisalem z tego co mam w glowie, moge sie mylic smile.gif

Jak pewnie wiesz adresy MAC to jedna z "cech" ethernet-u, czyli pewnego mechanizmu komunikacji miedzy kompami. Typowe karty sieciowe uzywane w komputerach osobistych to karty ethernetowe. Jednakze "ruch internetowy" idzie przez protokol IP, ktory jest jakby wyzsza warstwa komunikacji. Ethernet to tylko jeden z mechanizmow komunikacji nizszej warstwy. Wiekszosc ruchu w Internecie idzie prze ATM, ktory jest znacznie szybsza alternatywa w stosunku do ethernetu, istnieje jeszcze Token Ring, X.25 i pewnie jeszcze cos. W ATM i innych nie ma adresow MAC, bo te adresy sa charakterystyczne dla ethernetu.
Z tego co wiem to do odczytania numeru MAC klienta sluzy protokol ARP (i RARP jesli chcemy odwrotnie), ale ten adres jest po prostu "odwzorowywany" z numeru IP smile.gif. Ponadto (zgodnie z pierwszym akapitem), jesli ktos sie polaczy z Twoim serwisem spoza Twojego ethernetu to nie odczytasz jego adresu MAC bo ARP dziala tylko w lokalnym ethernecie. Z tego powodu pomysl z MAC-ami jest dobry jesli ma sie pewnosc ze caly "ruch sieciowy" pomiedzy uzytkownikiem a serwisem bedzie szedl przez lokalny ethernet.
Go to the top of the page
+Quote Post
blasfemia
post 17.09.2003, 12:45:30
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 10.09.2003
Skąd: Radom

Ostrzeżenie: (0%)
-----


... ciag dalszy ... smile.gif

A czy da sie to zrobic w php? Nie wiem czy w samym php sa funkcje do odczytywania adresow MAC. Na pewno da sie to zrobic z pomoca funckji/programow systemowych, chodzi mi o obsluge protokolu ARP.
Pod unixem jest np. "/usr/sbin/arp", pod Windowsem XP (nie wiem jak we wczesniejszych wersjach) tez jest polecenie/program "arp". Z parametrem -a, tak samo jak pod unixem, wyswietla aktualna tablice translacji ip na mac-i w sieci lokalnej, a jesli jako parametr podasz adres IP konkretnego kompa to arp ci poda jego mac-a. Oczywiscie poprawnosc tej translacji zalezy od "konfiguracji" sieci lokalnej.

Nie wiem czy moja odpowiedz cos Ci pomogla smile.gif

Nie jestem ekspertem, dopiero zaczalem przygode z php, ale nie sadze aby pomysl z mac-ami byl dobry. ALe moge sie mylic. Z metod uzyskiwania adresu mac to znam tylko protkol arp, ale on polega na odwzorowaniu numeru ip na mac, czyli i tak trzeba mu podac adres ip smile.gif
Go to the top of the page
+Quote Post
kris_
post 17.09.2003, 12:45:46
Post #4





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 21.02.2003

Ostrzeżenie: (0%)
-----


podejrzewam ze klientowi chodzi o to ze adres IP daje sie zmieniac a adresu MAC nie bo jest sprzetowy. Prawda jest taka ze adres MAC'owy mozna zmienic jeszcze latwiej niz IP. W internecie jedynym sposobem pseudoautentyfikacji moze byc ip. MAC dziala na nizszej warstwie nic IP i poza twoim nastepnym routerem nie ma sladu MAC'a ktory masz w sieci, Moze dalo by sie napisac jakis program w javie ktory zczytal by adres mac'owy sieciowki ale nie widze w tym zadnego sensu bo kazdy i tak moze sobie wpisac co mu sie podoba
Go to the top of the page
+Quote Post
uboottd
post 17.09.2003, 12:50:15
Post #5





Grupa: Zarejestrowani
Postów: 384
Pomógł: 0
Dołączył: 3.04.2003
Skąd: Chorzow

Ostrzeżenie: (0%)
-----


A projekt w ogole dotyczy tylko sieci lokalnej, czy moze ma byc ogolnie dostepny ?
Go to the top of the page
+Quote Post
adwol
post 17.09.2003, 12:55:33
Post #6





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 6.08.2003

Ostrzeżenie: (0%)
-----


Cytat
Jak pewnie wiesz adresy MAC to jedna z "cech" ethernet-u

... i nie tylko ethernetu.
Cytat
protokol IP, ktory jest jakby wyzsza warstwa komunikacji.

Czemu jakby? Jest po prostu wyższą warstwą.
Cytat
Wiekszosc ruchu w Internecie idzie prze ATM

Nie zgodzę się. Zależy o jakiej skali mówisz. W skali międzynarodowej strzelałbym w SONET/SDH.
Cytat
ktory jest znacznie szybsza alternatywa w stosunku do ethernetu,

Nieprawda. Może być szybszy co nie znaczy, że zawsze jest. Poza tym porównanie ATM vs. ethernet jest jak SCSI vs. IDE.
Cytat
W ATM i innych nie ma adresow MAC, bo te adresy sa charakterystyczne dla ethernetu.

Jest NSAP, czyli funkcjonalny odpowiedniki MAC'ow o innej strukturze i nazwie. Adresy MAC występują też w ELAN czy emulacji ethernetu na ATMie. Adresy warstwy łącza są w każdym protokole bo jakoś trzeba tą sieć adresować.
Go to the top of the page
+Quote Post
adwol
post 17.09.2003, 13:18:26
Post #7





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 6.08.2003

Ostrzeżenie: (0%)
-----


Cytat
A czy da sie to zrobic w php? Nie wiem czy w samym php sa funkcje do odczytywania adresow MAC. Na pewno da sie to zrobic z pomoca funckji/programow systemowych, chodzi mi o obsluge protokolu ARP.
Pod unixem jest np. "/usr/sbin/arp", pod Windowsem XP (nie wiem jak we wczesniejszych wersjach) tez jest polecenie/program "arp". Z parametrem -a, tak samo jak pod unixem, wyswietla aktualna tablice translacji ip na mac-i w sieci lokalnej, a jesli jako parametr podasz adres IP konkretnego kompa to arp ci poda jego mac-a. Oczywiscie poprawnosc tej translacji zalezy od "konfiguracji" sieci lokalnej.

Jak potrafi to wyciągnąć program typu arp to potrafi też php, tylko być może nie ma napisanych jeszcze bibliotek/modułów/klas do tego.

Co do rejestracji na podstawie MACów to IMHO nie jest to zbyt dobry pomysł. Nie wiem co to może więcej dać niż rejestracja na podstawie IP. Jeden i drugi adres można łatwo wyspoofować, a MACi ograniczają do sieci lokalnej.
Go to the top of the page
+Quote Post
blasfemia
post 17.09.2003, 14:02:19
Post #8





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 10.09.2003
Skąd: Radom

Ostrzeżenie: (0%)
-----


Ales mnie zbluzgal adwol. Chyba sie na mnie uwziales smile.gif

Nie napisalem ze z poziomu php nie da sie wydobyc mac-a! Przeciez z php mozna wykonywac inne programy/polecenia/funkcje systemowe, a wiec oczywistym jest ze mozna np. uzyc z poziomu php wykorzystac wspomniany program "arp".

Co do poprzedniego postu to poczytalem troche o ethernecie i innych takich i nadal smiem twierdzic ze mac jest checha charakterystyczna dla ethernetu.
Mowiac ze przez atm idzie wiekszosc ruchu, mialem na mysli "ruch w warstwie na ktorej dziala atm" (prosze sie nie czepiac o poszczegolne slowa!) a SDH i ATM to dwie rozne warstwy.
Zgodze sie ze porownywanie atm ethernetu nie jest do konca trafne. atm obejmuje znacznie szersza dziedzine komunikacji niz ethernet, ale jesli chodzi o porownanie szybkosci transferu to ATM zapewnia predkosc 622 Mb/s i do niedawna jedyna porownywalna z nim technologia byl Fast Ethernet (100 Mb/s). Kilka lat temu pojawil sie Gigabit Ethernet i on oferuje wiekszy transfer (1 Gb/s) ale jeszcze nie jest tak rozpowszechniony jak atm.
Dobra, jest NSAP, ale jak sam powiedziales ma on inna strukture niz mac, i nie ma (z tego co mi wiadomo) jakiejs metody "translacji" czy odwzorowywania nsap na mac. Oczywiscie ze poszczegolne "jednostki" komunikujace sie przez siec musza sie czyms wyrozniac, zeby bylo wiadomo kto komu chce cos powiedziec ale w temacie tej dyskusji byl podany mac a nie jego "funkcjonalne odpowiedniki" smile.gif
A czepianie sie o slowo "jakby" to juz chyba przesada. Nie jestem encyklopedia/slownikiem czy czyms podobnym i Ty mam nadzieje tez nie.
Go to the top of the page
+Quote Post
adwol
post 17.09.2003, 15:11:18
Post #9





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 6.08.2003

Ostrzeżenie: (0%)
-----


Cytat
Ales mnie zbluzgal adwol. Chyba sie na mnie uwziales smile.gif

Nie zbluzgałem ani nie uwziąłem tylko podtrzymałem dyskusję i wyraziłem swoją opinię. smile.gif
Cytat
Co do poprzedniego postu to poczytalem troche o ethernecie i innych takich i nadal smiem twierdzic ze mac jest checha charakterystyczna dla ethernetu.

Ok, co rozumiesz pod pojęciem MAC? Bo tak naprawdę to jest to podwarstwa warstwy łącza.
Ramki ethernetowe są adresowane właśnie w tej warstwie i dlatego mówi się ,,adres MAC''. Równie dobrze ten adres mógłby się nazywać dowolnie inaczej, ale nie zmieniłoby to faktu, że jest to numer adresujący ramki na warstwie łącza i o niego chodzi. Ale dobra, niech będzie, trochę się czepiam, bo w 99% przypadków sieci lokalnej jest to ethernet lub coś co go emuluje. :wink:
Cytat
A czepianie sie o slowo "jakby" to juz chyba przesada. Nie jestem encyklopedia/slownikiem czy czyms podobnym i Ty mam nadzieje tez nie.

Sorry, ale zabrzmiało to trochę dziwnie. biggrin.gif

Z mojej strony to EOT, bo nie ma się co kłócić na temat nazewnictwa. Przepraszam, że odebrałeś moje słowa jako próbę zbluzgania. :wink:
Go to the top of the page
+Quote Post
yeti
post 17.09.2003, 18:24:27
Post #10





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 12.09.2003

Ostrzeżenie: (0%)
-----


uff, aleście mnie zasypali biggrin.gif

wszystko wyniknęło z tego, że klient dowiedział się, że komputery czasami są widoczne na 1 IP a MAC jest unikalny

wielkie dzięki za wyjaśnienia, mam nadzieję, że uda mi się wyjaśnić klietowi co i jak (topik wydrukowałem ;p) bo jego sieciowiec jest z gatunku tych mądrzejszych laugh.gif
jeszcze raz dzięki za pomoc.

pozdrawiam
Krzysiek
Go to the top of the page
+Quote Post
blasfemia
post 18.09.2003, 06:49:56
Post #11





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 10.09.2003
Skąd: Radom

Ostrzeżenie: (0%)
-----


Racja adwol nie ma sie co klocic o pierdoly. Troche sie zapedzilem wczoraj. Ogolnie to nie byl moj dobry dzien, przede wszystkim w pracy.

EOT smile.gif

Pozdrawiam
Go to the top of the page
+Quote Post
uboottd
post 18.09.2003, 07:41:33
Post #12





Grupa: Zarejestrowani
Postów: 384
Pomógł: 0
Dołączył: 3.04.2003
Skąd: Chorzow

Ostrzeżenie: (0%)
-----


Cytat
wszystko wyniknęło z tego, że klient dowiedział się, że komputery czasami są widoczne na 1 IP a MAC jest unikalny


I znow sie okazuje, ze czesciowa wiedza jest gorsza od niewiedzy...
Go to the top of the page
+Quote Post
id4
post 2.10.2003, 17:57:19
Post #13





Grupa: Zarejestrowani
Postów: 223
Pomógł: 1
Dołączył: --
Skąd: Rogożnik /K-ce/

Ostrzeżenie: (0%)
-----


Witam.
Kiedyś pisałem sajta dla jednej z firm dostarczających neta do domków w niewielkiej miejscowości. System był bardzo zaawansowany i można było przez niego regulować płatkości za pomocą specjalnych kodów i dzięki temu samemu z automatu blokować lub odblokowywać czyjś wewnętrzny adres IP. Od razu muszę powiedzieć, że nie znam się na serwerach a moim zadaniem było odpowiednie tworzenie wynikowych plików txt, na podstawie których admin serwera czytał dane i coś tam kombinował. Serwis oczywiście był bardziej rozbudowany o spore bazy, ale to nie jest teraz ważne. Fakt faktem, że musiałem zczytywać tablicę ARP, a konkretnie numer karty. Rozwiązałem to w taki sposób:
Stworzyłem tekstowy plik o nazwie 'arp' z zawartością:
Kod
/sbin/ip n s | awk '{print$1,$5}' |grep -w $1 |awk '{print $2}'

zadeklarowałem zmienne:
Kod
$arpfile="/home/users/www/arp"; // adres do tego pliku

$fip=getenv("REMOTE_ADDR");

Uruchamiałem funkcję i czytałem numer:
Kod
exec("$arpfile $fip",$idcard);

$card=strtoupper($idcard[0]);


W zmiennej $idcard dostawałem nr karty (dużymi literami). Nie daję 100% pewności na działanie, gdyż zawartość pliku arp dostałem od admina srwera i może nie działać na wszystkich serwerach. Mam nadzieję że komuś to pomoże.
Go to the top of the page
+Quote Post
Bastion
post 24.01.2007, 11:21:13
Post #14





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

Ostrzeżenie: (0%)
-----


Pozwoliłem sobie odpowiedzieć w tym wątku pomimo już przykurzonego ostatniego posta w tym wątku z dwóch powodów

- temat jest wciąż żywy, kilka osób pyta o identyfikacje adresu MAC via php
- osoby te kierowane są do tego wątka
- a sposoby zaprezentowane powyżej są zbyt "karkołomne"

Prostsza metoda moim zdaniem to :

  1. <?php
  2. $ip = '192.168.0.1';
  3. $eth = 'eth0';
  4. exec('/usr/sbin/arping -c 1 -I '.$eth.' '.$ip.' -f', $answer);
  5. eregi('([0-9a-z]{2}:[0-9a-z]{2}:[0-9a-z]{2}:[0-9a-z]{2}:[0-9a-z]{2}:[0-9a-z]{2})',$answer[1],$result);
  6. echo('Adres MAC : '.$result[0]);
  7. ?>


Ten post edytował Bastion 24.01.2007, 11:24:41


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 16:32