Re: Find MAC Address in PHP

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 4/24/07, Davi <davividal@xxxxxxxxxxxxxxxx> wrote:
Em Terça 24 Abril 2007 10:07, Tijnema ! escreveu:
> On 4/23/07, Davi <davividal@xxxxxxxxxxxxxxxx> wrote:
> > Em Domingo 22 Abril 2007 03:12, Richard Lynch escreveu:
> > > On Fri, April 20, 2007 3:00 pm, Nathaniel Hall wrote:
> > > > <?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.
> >
> > ARP is a root-command... =]
>
> 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... =P

I hate security ;)
Also, i have Apache running as root, so i can execute everything i want :)


> > > Can you run 'arp' and get what you want from command line?
> >
> > As web-user? No.
>
> i can :)
>
cheatter... =P

> > > Can 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?
>
> 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? =P

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);
}
?>


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

#!/bin/bash

if [ ! $# -eq 1 ]; then
       echo "Usage: $0 target_ip";
       exit;
fi;

MAC_ADDR=`sudo arp | grep $1 | cut -d" " -f18`

echo ${MAC_ADDR} > /your/html/pub/dir/mac_temp.txt


Where's the root password? I guess you need it too when using sudo?


<?php

$mac=file("mac_temp.txt");

foreach($mac_addr as $mac){
       echo $mac_addr;
}

?>

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;
}

?>

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_ispconfig
>
> That's really a big job to install :(

Yeah!! =P


--
Davi Vidal
davividal@xxxxxxxxxxxxxxxx
davividal@xxxxxxxxx
--
"Religion, ideology, resources, land,
spite, love or "just because"...
No matter how pathetic the reason,
it's enough to start a war. "



--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux