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
 Użytkownik
	
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




 złodziej wirków ]:->
	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







 Podobno człowiek...;)
	







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


 Członek DUG
	


<?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
 Użytkownik
	
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
 Użytkownik
	
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