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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2011-09-12 00:49:35

  quartist - Użytkownik

quartist
Użytkownik
Zarejestrowany: 2011-06-09

[SOLVED]Php + apache2. Blad wykonania funkcji.

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

Kod:

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

Kod:

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

 

#2  2011-09-12 01:14:22

  winnetou - złodziej wirków ]:->

winnetou
złodziej wirków ]:->
Skąd: Jasło/Rzeszów kiedyś Gdańs
Zarejestrowany: 2008-03-31
Serwis

Re: [SOLVED]Php + apache2. Blad wykonania funkcji.

wydaje mi się że to

Kod:

exec('/usr/sbin/arp -na '.$ip , $answer);

powinno wyglądać tak 

Kod:

exec('sudo /usr/sbin/arp -na '.$ip , $answer);

skoro używasz sudo. Poza tym nie liczyłbym na to, że uzyskać mac usera ;)


LRU: #472938
napisz do mnie: ola@mojmail.eu
Hołmpejdż | Galerie | "Twórczość" || Free Image Hosting

Offline

 

#3  2011-09-12 02:25:11

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: [SOLVED]Php + apache2. Blad wykonania funkcji.

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)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#4  2011-09-12 08:37:21

  hello_world - Członek DUG

hello_world
Członek DUG
Skąd: Rymanów Zdrój
Zarejestrowany: 2010-06-03
Serwis

Re: [SOLVED]Php + apache2. Blad wykonania funkcji.

Kod:

<?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

Kod:

<?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

 

#5  2011-09-12 11:13:10

  quartist - Użytkownik

quartist
Użytkownik
Zarejestrowany: 2011-06-09

Re: [SOLVED]Php + apache2. Blad wykonania funkcji.

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:

Kod:

<?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

 

#6  2011-09-12 23:14:28

  quartist - Użytkownik

quartist
Użytkownik
Zarejestrowany: 2011-06-09

Re: [SOLVED]Php + apache2. Blad wykonania funkcji.

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

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)