بدست آوردن mac address کلاینت با کد php
سلام
چطوری میشه mac address کلاینت رو با کد php به دست آورد؟
4 پاسخ
سلام
این کد:
echo exec('getmac');
را روی هر کلاینتی فراخونی کنی فقط مک آدرس سرور رو میده.
این کد:
$mac = system('arp -an'); echo $mac;
جواب مفصل میده (البته باید n رو حذف کنی) ولی یکی از گزینههاش جواب صحیحه
حالا من یه کد php دارم با xamp رو یه سیستم وب سرور راهاندازی کردم داخل شبکه شرکت رو هر کلاینتی IP این وب سرور رو تو مرورگرهای مختلف میزنم IP و نام کامپیوتر همون کلاینت رو نشون میده که IP ها 100% درستن ولی Computer Nmaeها ممکنه نتونه پیدا کنه و به جاش همون IP رو برمیگردونه..
حالا من میخوام بر اساس دستور arp -a IP اون IP که توسط این کد به نام متغیر $userip هست رو در دستور آرپ قرار بده و صرفاً مک آدرس همون آدرس رو برگردونه ولی هرکاری کردم نشد میشه راهنمایی کنید؟
یعنی arp -a $userip
یعنی :
$mac = system('arp -an $userip'); echo $mac;
up
سلام دوست عزیز خوش اومدید به وب سایت توسینسو ، بنده تو حوزه برنامه نویسی تخصصی ندارم ولی طبق جستجویی که انجام دادم به این نتیجه رسیدم که برای اینکه MAC Address کلاینت رو بدست بیارید کلاینت شما باید در همون Subnet یا LAN Segment ای قرار داشته باشه که سرور شما قرار داره. شما با Parse کردن خروجی دستور arp -n ( توی لینوکس ) و یا arp -a ( توی ویندوز ) میتونید MAC Address کلاینت رو بدست بیارید. برای ویندوز سرور از کد زیر میتونید استفاده کنید :
<?php echo exec('getmac'); ?>
برای لینوکس هم باید دستور arp رو توی Group های مختلفی قرار بدید. بصورت پیش فرض
-rwxr-xr-x 1 root root 48K 2008-11-11 18:11 /usr/sbin/arp*
که با دستور زیر
$ sudo chown root:www-data /usr/sbin/arp
به شکل زیر درمیاد :
-rwxr-xr-x 1 root www-data 48K 2008-11-11 18:11 /usr/sbin/arp*
از اونجا که Apache سرویسی هست که زیر شاخه www-data user اجرا میشه حالا میتونید این دستور رو اجرا کنید. با اسکریپتی شبیه زیر میتونید خروجی دستور arp -an رو بعد از اجرا شدن اسکریپت مشاهده کنید :
<?php $mac = system('arp -an'); echo $mac; ?>
دوستان، یه برنامه نویس حرفهای پیدا نمیشه اینجا؟ منتظر جوابم عزیزان.
یه همچین چیزی امکان داره؟
$mac = system('arp -an $userip'); echo $mac;
کل کد من اینه آیا میشه از کد 2 خط بالا در این استفاده کرد؟
<?php $user_ip = getenv("remote_addr"); $cn = gethostname (); $cn1 = php_uname(); $hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']); $hostname2 = gethostbyaddr("$user_ip"); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ""> <html> <head> <title>نمایش آدرس آی پی کاربر </title> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <?php echo base64_decode('PG1ldGEgbmFtZT0iRGVzaWduZXIiIGNvbnRlbnQ9IkFydmluIEFzaHRhcnkgLSBXaW5EZXNpZ24uaXIiPjxtZXRhIG5hbWU9IkVtYWlsIiBjb250ZW50PSJpbmZvQHdpbmRlc2lnbi5pciI+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0ic3R5bGUuY3NzIj48L2hlYWQ+PGJvZHk+PGRpdiBhbGlnbj0iY2VudGVyIj48IS0tIERlc2lnbmVkIGJ5IFdpbkRlc2lnbi5pciArKysgUHJvZ3JhbW1lZCBieSBQMzBTY3JpcHQuaXIgKysrIENvbnRhY3QgdXMgPSBFLU1haWw6IGluZm9AcDMwc2NyaXB0LmlyICYgaW5mb0B3aW5kZXNpZ24uaXIgJiYmIFkhTTogaW5mby53aW5kZXNpZ24gLS0+ '); ?> <!— Top —> <div id="top">سلام همکار محترم </div> <!— Content —> <div id="content"> <div id="your_ip_address"></div> <input type="text" value="<?php echo $user_ip; ?> " id="ip_input" readonly> </div> <div id="content2"> <div id="your_pc_name"></div> <input type="text" value="<?php echo $hostname2 ; ?> " id="ip_input" readonly> </div> <!— Footer —> </div></body> </html>