Новая тема + как получить список IP и MAC адресов сервера на PHP

Filed Under (Всякое, Новости) by lordtime on 16-06-2008

Та как темы надо менять, (дабы глаз не мусолили) почаще, сегодня залил свеженькую, немножко подправленную тему от http://www.skinpress.com/.

Что бы не првращать пост в пустую болтовно напишу сразу полезную функцию на PHP – тривиально, но кому надо, тому покажется интересной.

Итак – как определить IP адреса сервера на котором хостится скрипт ? ну нужно нам (защита, и т п) , можно конечно проверить _SERVER["SERVER_ADDR"] , – годится, ну а если у сервера много адресов ? (у этого напрмер шесть). А если скрипт работает из консоли ? А вот если и MAC адреса понадобились ?

Вот функция

function get_host_ips()
{
$ifs = array(‘/sbin/ifconfig’, ‘/usr/sbin/ifconfig’, ‘/usr/local/sbin/ifconfig’,
‘/bin/ifconfig’, ‘/usr/bin/ifconfig’, ‘/usr/local/bin/ifconfig’ );

$ip = array();
$mac = array();
$ifc = $ifs[0];

if( preg_match(‘!Windows!i’, getenv(‘OS’)) ){
$ifc = ‘ipconfig /all’;
}else{
foreach($ifs as $if){
if(@file_exists($if)){ $ifc = $if; break; }
}
}

unset($o);
$res = @exec($ifc, $o, $rv);
if( count($o) ){
foreach($o as $ol){
if(preg_match(‘!(inet |inet addr:)(\d+)\.(\d+)\.(\d+)\.(\d+) .+?mask!i’, $ol, $i)){
$ip[] = «{$i[2]}.{$i[3]}.{$i[4]}.{$i[5]}»;
}
elseif(preg_match(‘!IPv4 Address.+?:\s+(\d+)\.(\d+)\.(\d+)\.(\d+)!i’, $ol, $i)){
$ip[] = «{$i[1]}.{$i[2]}.{$i[3]}.{$i[4]}»;
}
elseif(preg_match(‘! HWaddr ([0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2})!i’, $ol, $i)){
$mac[] = strtolower($i[1]);
}
elseif(preg_match(‘!ether ([0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2})!i’, $ol, $i)){
$mac[] = strtolower($i[1]);
}
elseif(preg_match(‘!Physical Address.+?:\s+([0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2})!i’, $ol, $i)){
$mac2= strtolower(str_replace(‘-’, ‘:’, $i[1]));
if($mac2 != ‘00:00:00:00:00:00′) {
$mac[] = $mac2;
}
}

}
}

return array(‘ip’ => $ip, ‘mac’ => $mac);
}

Работает как под виндой, так и под большинством Unix’ов. Тестировалось на Линуксах и Фрях. Результатом выполнения будет массив с IP адресами и mac адресами. Как поступить с массивом – решайте сами.

Скажу сразу, что я в своих скриптах, дял защиты, использую Ioncube Pro. Так вот, эта очень даже недешовая софтина при всей своей обещаной защите по IP, банально смотрит SERVER_ADDR – ну не подло ли ? Cоответственно консольные скрипты , защищенные IonCUBE, просто не работают вообще.
Если же мы как следуем покопаемся с возможностью генерировать лицензии, то все станет на свои места если мы защиту по МАКам и IP всунем в сам скрипт, а данные по лицензии возьмем из самого файла лицензии. Таким образом и сэкономим на лицензии Cerberos . (IonCube у меня лицензионный, второй софт который я купил – первый был Хрумер :) )

Думаю идея понтяна. если нет – пишите – разъясню.

Comments:

Post a comment

we recommend cheap cigarettes online