Re: Find MAC Address in PHP
| From: | Tijnema ! | Date: | Tue, 24 Apr 2007 13:49:16 +0000 |
| Subject: | Re: Find MAC Address in PHP | ||
| References: | 1 2 3 4 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-253580@lists.php.net to get a copy of this message | ||
On 4/24/07, Davi <davividal@siscompar.com.br> wrote:
Em Terça 24 Abril 2007 10:07, Tijnema ! escreveu: On 4/23/07, Davi <davividal@siscompar.com.br> wrote:I hate security ;) Also, i have Apache running as root, so i can execute everything i want :)Em Domingo 22 Abril 2007 03:12, Richard Lynch escreveu:Ok, maybe it's because i've builded my own Linux, and didn't wanted to have any security, but /sbin/arp has chmod value 755 on my system, and so, i can execute it with any user. cheatter... =POn Fri, April 20, 2007 3:00 pm, Nathaniel Hall wrote:ARP is a root-command... =]<?php $MAC = system("arp 192.168.200.254"); echo $MAC; ?> does not give me any output. I have copied arp to a place that the apache user can execute from and ensured arp is executable.Use exec and the extra args to get error codes.
Something with the proc_* functions as you need bi-directional streams (input/output). Something like this: (not tested, partly copied form example 1926) <?php $root_pwd="123456"; $descriptorspec = array( 0 => array("pipe", "r"), // stdin is a pipe that the child will read from 1 => array("pipe", "w"), // stdout is a pipe that the child will write to 2 => array("file", "/tmp/error-output.txt", "a") // stderr is a file to write to ); $process = proc_open('su - -c arp', $descriptorspec, $pipes); if (is_resource($process)) { fwrite($pipes[0], $root_pwd."\r\n"); fclose($pipes[0]); echo stream_get_contents($pipes[1]); fclose($pipes[1]); proc_close($process); } ?>i can :) cheatter... =PCan you run 'arp' and get what you want from command line?As web-user? No.Hmm, that would mean that you have to store your root password in your PHP script ... I don't prefer that, maybe you could use it on a development server, but don't use it on production server ;) Yes... You store your root pwd in your script then: <?php $root_pwd="123456"; echo system("su - -c arp"); ?> $ su - -c arp Password: How you'll type your root pwd? =PCan you 'su' to PHP user and *then* run it and get what you want?Hum... Not at all... You need to enter the root password... How can you do that? sudo sounds a little better... But... How about security?
Where's the root password? I guess you need it too when using sudo?#!/bin/bash if [ ! $# -eq 1 ]; thenIf not, you can't do that.And with a shell-script outputting the MAC to a .txt temp file, reading it from the PHP script?echo "Usage: $0 target_ip"; exit;fi; MAC_ADDR=sudo arp | grep $1 | cut -d" " -f18echo ${MAC_ADDR} > /your/html/pub/dir/mac_temp.txt
<?php $mac=file("mac_temp.txt"); foreach($mac_addr as $mac){Uhm, this is really weird code, i guess you meant this: <?php $mac=file("mac_temp.txt"); foreach($mac as $mac_addr){echo $mac_addr;} ?>
echo $mac_addr;} ?> But well, when you have root access to the server, it might be better to just cheat like i did, and make arp available to the PHP user :) Tijnema
BTW, have a look at suPHP [1]... =] [1] - http://www.howtoforge.com/suphp_debian_etch_ispconfigThat's really a big job to install :( Yeah!! =P -- Davi Vidal davividal@siscompar.com.br davividal@gmail.com -- "Religion, ideology, resources, land, spite, love or "just because"... No matter how pathetic the reason, it's enough to start a war. "