Взимане на MAC адреса на потребител

DownFall

Registered
Здравейте,

Трябва ми код, с който мога да извеждам MAC адреса на посетителя (Предпочитам да е php, но ако не става и друг вариант ще ми свърши работа).

Имам проблем с регистрацията от доставчици предлагащи динамични IP адреси на клиентите си и банването по MAC адрес ми се вижда добро решение.. Нека използвам темата поне да помоля ако някой има друг вид решение на проблема да го сподели :)

Благодаря предварително.
 
Фактът, че PHP е server-side scripting language те ограничава до голяма степен. Да не кажа и невъзможно. Може и да има някои приумици със SOCK_RAW , но до там :)
Търси client-side language ;)

EDIT: С Java може би ще изглежда така:

Код:
public static String getMac() throws java.io.IOException {
Process p = Runtime.getRuntime().exec(“getmac /fo csv /nh”);
java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader(p.getInputStream()));
String line;
line = in.readLine();
String[] result = line.split(“,”);
return result[0].replace(‘”‘, ‘ ‘).trim();
}
 
Мда.. Явно гугъл е на същото мнение..

Еми, в такъв случай можете ли да ми препоръчате друг начин, по който мога да огранича достъпа на даден потребител, защото както споменах бан по IP адрес не решава въпроса..
 
Еми, с java също би ми свършило работа, не е задължително да е php.

За съжаление обаче нямам абсолютно никакви знания там и дори и да има грешка в кода няма да мога по смъртно да разбера къде.. В случая ми връща празна страница, без грешка, но и без МАК..
 
DownFall каза:
Еми, с java също би ми свършило работа, не е задължително да е php.

За съжаление обаче нямам абсолютно никакви знания там и дори и да има грешка в кода няма да мога по смъртно да разбера къде.. В случая ми връща празна страница, без грешка, но и без МАК..

Защо ти е мак адреса просто блокираш цялата му мрежа и готово. а MAC адрес няма как да изведеш във уеб пространството, освен ако не работиш за microsoft :) те май можеха да виждат тея неща. :roll: :lol:
 
DevNull каза:
DownFall каза:
Еми, с java също би ми свършило работа, не е задължително да е php.

За съжаление обаче нямам абсолютно никакви знания там и дори и да има грешка в кода няма да мога по смъртно да разбера къде.. В случая ми връща празна страница, без грешка, но и без МАК..

Защо ти е мак адреса просто блокираш цялата му мрежа и готово. а MAC адрес няма как да изведеш във уеб пространството, освен ако не работиш за microsoft :) те май можеха да виждат тея неща. :roll: :lol:

Отрежа ли цялата мрежа, отрязвам над 30% от потребителите си, обмислял съм го варианта, но търся алтернатива.
 
Както ти казах за MAC адрес не мисли въобще . няма начин да изведеш адреса на протокола TCP/IP , освен ако не си хакер и не излъжеш пакетите които се изпращат към теб :)
 
Разбрах, но все пак можете ли да ми препоръчате вариант, по който да се справя с тая напаст? :)

Мак адреса ми беше надеждата, защото с него щях да идентифицирам потребителя по адреса на лан картата, не по IP, т.е. динамичните IP-та нямаше да ги оправят..

Има ли някакъв друг начин, по който може да се напрваи нещо подобно?
 
Тук намерих някакъв код виж дали ще ти свърши работа.

Код:
<?
$ipAddress=$_SERVER['REMOTE_ADDR'];
$macAddr=false;

#run the external command, break output into lines
$arp=`arp -a $ipAddress`;
$lines=explode("\n", $arp);

#look for the output line describing our IP address
foreach($lines as $line)
{
   $cols=preg_split('/\s+/', trim($line));
   if ($col[0]==$ipAddress)
   {
       $macAddr=$col[1];
   }
}
?>

Ето още един обаче работи само на linux

Код:
<? 
function returnmacaddress() { 
// This code is under the GNU Public Licence 
// Written by michael_stankiewicz {don't spam} at yahoo {no spam} dot com 
// Tested only on linux, please report bugs

// WARNING: the commands 'which' and 'arp' should be executable 
// by the apache user; on most linux boxes the default configuration 
// should work fine

// Get the arp executable path 
$location = `which arp`; 
$location = rtrim($location); 
// Execute the arp command and store the output in $arpTable 
$arpTable = `$location -n`; 
// Split the output so every line is an entry of the $arpSplitted array 
$arpSplitted = split("\n",$arpTable); 
// Get the remote ip address (the ip address of the client, the browser) 
$remoteIp = $GLOBALS['REMOTE_ADDR']; 
$remoteIp = str_replace(".", "\\.", $remoteIp); 
// Cicle the array to find the match with the remote ip address 
foreach ($arpSplitted as $value) { 
// Split every arp line, this is done in case the format of the arp 
// command output is a bit different than expected 
$valueSplitted = split(" ",$value); 
foreach ($valueSplitted as $spLine) { 
if (preg_match("/$remoteIp/",$spLine)) { 
$ipFound = true; 
} 
// The ip address has been found, now rescan all the string 
// to get the mac address 
if ($ipFound) { 
// Rescan all the string, in case the mac address, in the string 
// returned by arp, comes before the ip address 
// (you know, Murphy's laws) 
reset($valueSplitted); 
foreach ($valueSplitted as $spLine) { 
if (preg_match("/[0-9a-f][0-9a-f][:-]". 
"[0-9a-f][0-9a-f][:-]". 
"[0-9a-f][0-9a-f][:-]". 
"[0-9a-f][0-9a-f][:-]". 
"[0-9a-f][0-9a-f][:-]". 
"[0-9a-f][0-9a-f]/i",$spLine)) { 
return $spLine; 
} 
} 
} 
$ipFound = false; 
} 
} 
return false; 
} 
?>
 
това са по скоро функции . незнам как работят нито как се извеждат резултати от тях . порових из гугъл и това беше единственото като готов код. не те виждам как ще се справиш с досадниците . :( :(
 
Някак си... невъзможно ми се струва да вземеш мак адреса на някой потребител... Все пак трябва да изпълниш скрипт на неговата машина за да вземеш мак адреса му... Относно microsoft, че имат мак адресите е напълно възможно... 80% от машините са с windows и все пак microsoft може да са си направили тулче за вземане на IP и MAC адрес, но малко ме съмнява.

Ето ти алтернативно решение.

Хвани си някоя бан система от тука.
След което си я модни да банва и по cookies.

(Да! Ако потребителя си е изтрил cookies няма да работи или ако е преинсталирал машината, но това не се прави всеки ден... и малко хора най-вероятно знаят как да си премахнат cookies. И дори да го направят, после пак можеш да ги аднеш.)

Това ти е алтернативата за премахване на "нахалници"!
 
В допълнение можеш да направиш така, че всеки който се опита да се логне в акаунта на лошия тип, да се банва автоматично, ако не е вече. :)
 
А, и за да доразбия оригиналната ти идея.. ммм :)
Кой е казал че мак-а не може да се сменя?

1106649x.png
 

Back
Горе