Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Witam,
Mam taki problem ktorego niestety po wielogodzinnym googlaniu nie potrafie rozwiazac. Mianowicie napisalem skrypt w php do odczytywania mac`adresow kart sieciowych uzytkownikow sieci. Wyglada on nastepujaco
function getmac(){ $ip = $_SERVER['REMOTE_ADDR']; exec('ping '.$ip.' -c 1'); exec('sleep 2s'); exec('/usr/sbin/arp -na '.$ip , $answer); 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[0],$result); $mac = $result[0]; return $mac; }
jednak niestety adres mac nie jest wogole odczytywany. zgodnie z informacjami wyczytanymi w necie wylaczylem w php.ini safe_mode oraz dodalem w /etc/sudoers linie
www-data ALL=NOPASSWD:/usr/sbin/arp
jako ze apache2 startuje jako uzytkownik www-data.
skrypt zostal wpisany do grupy www-data.
Jednak wszystkie te zabiegi nie przyniosły efektu, a mnie pomysły juz sie skonczyły.
Dodam rowniez ze skrypt ten jest wykonywany na serwerze Debian 6.0 2.6.33-grsec z bardzo rozbudowanym firewallem w iptables.
Niewiem juz sam czy to problem z komunikacja(firewall blokuje), czy z wykonywaniem przez uzytkownika apache.
Prosze o rady.
Ostatnio edytowany przez quartist (2011-09-12 23:11:06)
Offline
wydaje mi się że to
exec('/usr/sbin/arp -na '.$ip , $answer);
powinno wyglądać tak
exec('sudo /usr/sbin/arp -na '.$ip , $answer);
skoro używasz sudo. Poza tym nie liczyłbym na to, że uzyskać mac usera ;)
Offline
arpwatch jest od tego, gotowy, i za każdym razem, kiedy zobaczy nowe urządzenie, wysyła maila z zawiadomieniem.
Jest też trochę skryptów dodo obsługi arpwatcha przez www, np ten:
http://www.hackerskitchen.com/bill/arpview/
Poza tym pozwolenie na exec i sudo z poziomu serwera www, w dodatku z poziomu php, to strzał w stopę, takie rzeczy raczej robi się w skryptach cgi, bo moduł php do apacha to trochę nie ta liga.
Ostatnio edytowany przez Jacekalex (2011-09-12 10:41:13)
Offline
<?php $mac = system('arp -an | awk \'{print $4}\''); echo $mac; ?>
Tylko pobiera mi podwójnie i na razie nie czaję dlaczego
Serwer:Lighttpd
Zainstalowane php5-cgi
uruchomione moduły fastcgi i fastcgi-php
W sumie to musisz jeszcze dodać jedną zmienną z ping do hosta
<?php //$mac = system('arp -an | awk \'{print $4}\''); $ip = $_SERVER[REMOTE_ADDR]; $ping = system('ping -c5 $ip'); echo "$ip <br />"; $mac = system('arp -an $ip | cut -d \' \' -f4 '); echo $mac; ?>
Ale pobieranie adresów MAC ma zastosowanie tylko w sieci lokalnej
Ostatnio edytowany przez hello_world (2011-09-12 10:29:31)
Offline
Uzywam arpwatch(aby widziec kto mi sie podłącza do sieci) maile od niego z macami dostaje i jest bardzo dobrze. Funkcja ktora Wam przedstawilem to wycinek panelu administracyjnego ktory pobiera ten mac od uzytkownika i potem wypycha do bazy msql wraz z innymi danymi.
Opcja z dodaniem 'sudo' nie przynosi zadnych efektow niestety.
Co do kodu:
<?php //$mac = system('arp -an | awk \'{print $4}\''); $ip = $_SERVER[REMOTE_ADDR]; $ping = system('ping -c5 $ip'); echo "$ip <br />"; $mac = system('arp -an $ip | cut -d \' \' -f4 '); echo $mac; ?>
efekt po wykonaniu jest taki ze pokazuje tylko adres ip. nic pozatym.
Ostatnio edytowany przez ArnVaker (2011-09-12 13:19:17)
Offline
Problem rozwiazany. Problem lezal w php.ini (/etc/php5/apache2/php.ini)
W pliku tym była linia:
disable_functions =exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
Nalezalo (w moim wypadku) usunac wpis "exac";
Wszystko zaczelo pieknie smigac.
Dziekuje wszystkim userom za pomoc oraz porady.
ZAMYKAM
Offline
Strony: 1