কীভাবে আমি পিএইচপি-তে কোনও সংযুক্ত ক্লায়েন্টের ম্যাক এবং আইপি ঠিকানা পেতে পারি?


136

আমার সংযোগ গ্রাহকদের ম্যাক এবং আইপি ঠিকানা জানতে হবে, আমি পিএইচপি এ কীভাবে এটি করতে পারি?


আইপি ঠিকানা কি? সংযোগযুক্ত ক্লায়েন্টের?
পালটায়ার

1
সার্ভারের ঠিকানা নাকি দর্শনার্থীর?
কিএনজিএমআর

13
কোন উদ্দেশ্যে আপনি ম্যাকের ঠিকানা চান? আপনি কি জানেন যে এটি ব্যবহারকারীর দ্বারা পরিবর্তন করা যেতে পারে?
মারকুইস

@ এজেপি আমার কাছে ম্যাক ঠিকানার জন্য ব্যবহারের কেস রয়েছে। ওয়েব পৃষ্ঠার অনুরোধ করা ডিভাইসের ভিত্তিতে আমি বিভিন্ন তথ্য পরিবেশন করতে চাই। পৃষ্ঠার অনুরোধ করে ডিভাইসের অনন্য তথ্য পাওয়ার কী অন্য কোনও উপায় আছে?
দান্তে

উত্তর:


186

সার্ভার আইপি

আপনি সার্ভারের আইপি ঠিকানাটি পেতে পারেন $_SERVER['SERVER_ADDR']

সার্ভার ম্যাক ঠিকানা

ম্যাক ঠিকানার জন্য netstat -ieআপনি লিনাক্স বা ipconfig /allউইন্ডোজে আউটপুট পার্স করতে পারেন ।

ক্লায়েন্টের আইপি ঠিকানা

আপনি ক্লায়েন্ট আইপি পেতে পারেন $_SERVER['REMOTE_ADDR']

ক্লায়েন্ট ম্যাক ঠিকানা

ক্লায়েন্ট ম্যাকের ঠিকানা আপনাকে একটি বিশেষ পরিস্থিতিতে বাদে পাওয়া যাবে না: যদি ক্লায়েন্টটি সার্ভারের মতো একই ইথারনেট বিভাগে থাকে।

সুতরাং, আপনি LAN এর ভিত্তিক সিস্টেমের কিছু নির্মাণ করা হয় এবং আপনার ক্লায়েন্ট যদি হয় একই ইথারনেট সেগমেন্ট উপর, তাহলে আপনি MAC ঠিকানা আউটপুট পার্স দ্বারা পেতে পারে arp -n(লিনাক্সের) অথবা arp -a(Windows)।

সম্পাদনা করুন : আপনি কীভাবে একটি বহিরাগত কমান্ডের আউটপুট পাবেন তা মন্তব্যে জিজ্ঞাসা করেছেন - একটি উপায় ব্যাকটিক্স ব্যবহার করা, যেমন

$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 ($cols[0]==$ipAddress)
   {
       $macAddr=$cols[1];
   }
}

কিন্তু ক্লায়েন্ট ল্যানে না থাকলে কী হবে?

ঠিক আছে, আপনি যদি ক্লায়েন্টের স্বেচ্ছাসেবীর কাছে সেই তথ্য না পেয়ে এবং অন্য উপায়ে সঞ্চারিত করতে না পারেন তবে আপনার ভাগ্যের বাইরে নেই।


2
পিএইচপি ব্যবহার করে কীভাবে আর্প-এ আউটপুট পাবেন?
নবীন

1
@ পলডিকসন হ্যালো এটি একটি পুরানো পোস্ট, এবং আমি ভাবছি ম্যাক ঠিকানা পাওয়ার কোনও নতুন উপায় আছে?
jcho360

@ jcho360 এখনও কোনও ক্লায়েন্টের ম্যাক ঠিকানা পাওয়া সম্ভব নয়। আমি যেভাবেই হোক এটি দেখার আশা করি না কারণ ম্যাকের ঠিকানাটির কোনও যোগাযোগের মান নেই এবং তাই হেইট অনুরোধ শিরোনামে সংরক্ষণ করা হবে না।
বিয়ারউল্ফ

@ বারওয়াল্ফ আপনাকে প্রত্যুত্তর দেওয়ার জন্য অনেক ধন্যবাদ, আমি যা ভেবেছিলাম, কোনও সাইটের সাথে যুক্ত অনন্য কম্পিউটারগুলি সনাক্ত করার কোনও উপায় আছে কি?
jcho360

6
@ jcho360 ব্যক্তিগতভাবে আমি আইপি ঠিকানা + অনুরোধের তথ্যের সংমিশ্রণ ব্যবহার করব এবং এটির একটি হ্যাশ তৈরি করব, উদাহরণস্বরূপ md5 (S _ সার্ভার ['রেমোট_এডিডিআর']। এটি অবশ্যই বুলেটপ্রুফ নয় তবে এটি একটি শুরু। আরও একটি সহজ এবং সুরক্ষিত উপায় হ'ল একটি অনন্য হ্যাশ সহ একটি কুকি সেট করা। প্রতিবার সেই কুকি ব্যবহার করার সময় আপনি নিশ্চিত হন যে কোন ব্যবহারকারী আপনার ওয়েবসাইটে সংযুক্ত হচ্ছে।
বিয়ারউল্ফ

24

কোনও ক্লায়েন্টের ম্যাক ঠিকানা (কম্পিউটারটি এইচটিটিপি অনুরোধ জারি করে) ক্লায়েন্ট এবং সার্ভারের মধ্যে প্রতিটি রাউটার দ্বারা ওভাররাইট করা হয়।

ক্লায়েন্ট আইপি সুবিধামত স্ক্রিপ্টে সরবরাহ করা হয় $_SERVER['REMOTE_ADDR']। কিছু কিছু পরিস্থিতিতে, বিশেষ করে যদি আপনার ওয়েব সার্ভারে একটি প্রক্সি (অর্থাত একটি ক্যাশে প্রক্সি) পেছনে $_SERVER['REMOTE ADDR']আইপি ফিরে আসবে প্রক্সি , এবং একটি অতিরিক্ত মান, প্রায়ই সেখানে থাকবে $_SERVER['HTTP_X_FORWARDED_FOR'], যে আসল অনুরোধটি ক্লায়েন্ট আইপি ধারণ করে।

কখনও কখনও, আপনি যখন নিয়ন্ত্রণ করেন না এমন কোনও অনামী প্রক্সি নিয়ে কাজ করছেন, বিশেষত প্রক্সিটি আসল আইপি ঠিকানাটি ফিরিয়ে দেয় না এবং আপনি যা আশা করতে পারেন তা প্রক্সিটির আইপি ঠিকানা।


9

আমি মনে করি না আপনি পিএইচপি তে ম্যাক ঠিকানা পেতে পারেন তবে আপনি $_SERVER['REMOTE_ADDR']ভেরিয়েবল থেকে আইপি পেতে পারেন ।


আপনি ম্যাক ঠিকানা পেতে পারেন, আমি মনে করি :)
জিতেশ সোজিত্র

ম্যাক ঠিকানাটি কেবল স্থানীয় নেটওয়ার্কগুলিতেই দৃশ্যমান, আপনি যেকোন ডিভাইসের ম্যাক ঠিকানাটি তার স্থানীয় নেটওয়ার্কের বাইরে অ্যাক্সেস করতে পারবেন, উদাহরণস্বরূপ আপনার ম্যাক ঠিকানাটি আপনার স্থানীয় ওয়াইফাই রাউটারে সঞ্চিত এবং দৃশ্যমান হবে এবং এর বাইরেও আপনার নেটওয়ার্কের সমস্ত ডিভাইস আপনাকে দেখতে পাবে ব্যবহার করুন এবং একই আইপি ঠিকানার সাথে যোগাযোগ করা হবে, যা রাউটারটি ম্যাক ঠিকানায় ফিরে অনুবাদ করবে এবং এটি অভ্যন্তরীণভাবে প্রেরণ করবে।
ধীররাজ থেদিজে

7

উইন্ডোজ সার্ভারের জন্য আমি মনে করি আপনি এটি ব্যবহার করতে পারেন:

<?php
echo exec('getmac');
?>

2
<? পিএইচপি ইকো এক্সিকিউটিউট ('গেটম্যাক'); ?> এটি কেবল ল্যানেই কাজ করছে তবে এটি সমস্ত ম্যাক ঠিকানা <পিএইচপি সিস্টেম ('গেটম্যাক') দেখায়; ?>
জিওরগি গোগিটিডজে

এবং উইন্ডোজ 10। এছাড়াও, আপনাকে execকেবল `প্রতিধ্বনি ব্যবহার করতে হবে নাgetmac
সৈয়দবাকআর

6

আপনাকে যা করতে হবে তা হ'ল ডিফারেন্ট গ্রুপে ফেলা।

ডিফল্ট:

-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*

এবং যেহেতু অ্যাপাচি ব্যবহারকারীর www-ডেটার অধীনে চলমান একটি ডেমন, এটি এখন এই আদেশটি কার্যকর করতে সক্ষম।

সুতরাং আপনি যদি এখন পিএইচপি স্ক্রিপ্ট ব্যবহার করেন, যেমন:

<?php
$mac = system('arp -an');
echo $mac;
?>

আপনি লিনাক্স arp -anকমান্ডের আউটপুট পাবেন ।


6
এটি আপনাকে কেবলমাত্র আপনার স্থানীয় নেটওয়ার্কের ডিভাইসগুলির ম্যাক ঠিকানা দেবে।
ডাস্কউফ -অ্যাক্টিভ-

1
arpবাইনারি গ্রুপ পরিবর্তন করা নিরর্থক , www-dataএখনও otherইউমোড থেকে অনুমতি কার্যকর করেছে ।
deed02392

2

এই শ্রেণিটি ব্যবহার করুন (https://github.com/BlakeGardner/php-mac-adress)

এটি ইউনিক্স, লিনাক্স এবং ম্যাক ওএস এক্স অপারেটিং সিস্টেমের শীর্ষে ম্যাক ঠিকানা হেরফেরের জন্য একটি পিএইচপি ক্লাস। এটি মূলত ওয়্যারলেস সুরক্ষা অডিটগুলির জন্য স্পোফিংয়ের সাহায্যে লেখা হয়েছিল।


1

উইন্ডোজগুলিতে, ব্যবহারকারী যদি স্থানীয়ভাবে আপনার স্ক্রিপ্টটি ব্যবহার করে থাকে তবে এটি খুব সহজ হবে:

<?php
// get all the informations about the client's network
 $ipconfig =   shell_exec ("ipconfig/all"));  
 // display those informations   
 echo $ipconfig;
/*  
  look for the value of "physical adress"  and use substr() function to 
  retrieve the adress from this long string.
  here in my case i'm using a french cmd.
  you can change the numbers according adress mac position in the string.
*/
 echo   substr(shell_exec ("ipconfig/all"),1821,18); 
?>

0

আপনার সমস্যা সমাধানের জন্য আপনি নিম্নলিখিত সমাধানটি ব্যবহার করতে পারেন:

$mac='UNKNOWN';
foreach(explode("\n",str_replace(' ','',trim(`getmac`,"\n"))) as $i)
if(strpos($i,'Tcpip')>-1){$mac=substr($i,0,17);break;}
echo $mac;

0

আমরা পিএইচপি এই ভাবে উবুন্টুতে ম্যাক ঠিকানা পেতে পারি

$ipconfig =   shell_exec ("ifconfig -a | grep -Po 'HWaddr \K.*$'");  
    // display mac address   
 echo $ipconfig;

0

পিএইচপি ব্যবহার করে ম্যাক ঠিকানা পাওয়া: (উবুন্টু 18.04 তে পরীক্ষিত) - 2020 আপডেট

কোডটি এখানে:

<?php
    $mac = shell_exec("ip link | awk '{print $2}'");
    preg_match_all('/([a-z0-9]+):\s+((?:[0-9a-f]{2}:){5}[0-9a-f]{2})/i', $mac, $matches);
    $output = array_combine($matches[1], $matches[2]);
    $mac_address_values =  json_encode($output, JSON_PRETTY_PRINT);   
    echo $mac_address_values
?>

আউটপুট:

{
    "lo": "00:00:00:00:00:00",
    "enp0s25": "00:21:cc:d4:2a:23",
    "wlp3s0": "84:3a:4b:03:3c:3a",
    "wwp0s20u4": "7a:e3:2a:de:66:09"
}

0

ইন্টারনেটে কোনও ক্লায়েন্টের মেশিন যাচাই করার জন্য সম্ভবত ম্যাক অ্যাড্রেস পাওয়া ভাল উপায় নয়। পরিবর্তে কোনও টোকেন ব্যবহার করা বিবেচনা করুন যা কোনও প্রশাসকের লগইন দ্বারা ক্লায়েন্টের ব্রাউজারে সঞ্চিত রয়েছে।

সুতরাং প্রশাসক যদি তাদের ব্রাউজারের মাধ্যমে এটিকে মঞ্জুরি দেয় তবে ক্লায়েন্টের কেবল এই টোকেন থাকতে পারে। যদি টোকেন উপস্থিত বা বৈধ না থাকে তবে ক্লায়েন্টের মেশিনটি অবৈধ।


-1

আপনি এই কোডটি ব্যবহার করে ম্যাক ঠিকানা বা শারীরিক ঠিকানা পেতে পারেন

$d = explode('Physical Address. . . . . . . . .',shell_exec ("ipconfig/all"));  
$d1 = explode(':',$d[1]);  
$d2 = explode(' ',$d1[1]);  
return $d2[1];

আমি অনেক সময় বিস্ফোরণ ব্যবহার করেছি কারণ শেল_এক্সেক ("আইপকনফিগ / সমস্ত") সমস্ত নেটওয়ার্কের সম্পূর্ণ বিবরণ দেয়। সুতরাং আপনাকে একে একে বিভক্ত করতে হবে। আপনি যখন এই কোডটি চালাবেন তখন আপনি
আপনার ম্যাক ঠিকানা 00 - ## - ## - সিভি -12 // পাবেন এটি কেবল দেখানোর জন্য নকল ঠিকানা।


-2
// Turn on output buffering  
ob_start();  

//Get the ipconfig details using system commond  
system('ipconfig /all');  

// Capture the output into a variable  
$mycomsys=ob_get_contents();  

// Clean (erase) the output buffer  
ob_clean();  

$find_mac = "Physical"; 
//find the "Physical" & Find the position of Physical text  

$pmac = strpos($mycomsys, $find_mac);  
// Get Physical Address  

$macaddress=substr($mycomsys,($pmac+36),17);  
//Display Mac Address  

echo $macaddress;  

এটি উইন্ডোতে আমার পক্ষে ipconfig /allযেমন উইন্ডোজ সিস্টেম কমান্ড হিসাবে কাজ করে।


5
যদি এই উত্তরটি আপনাকে কিছু শেখায় তবে আশা করি আপনি যে কোডটি বুঝতে পারছেন না তা অনুলিপি / পেস্ট করবেন না। ওপি যা বলেছিল তা করে না।
ট্রিপলি

-2

লিনাক্সের অধীনে iptables ব্যবহার করে আপনি ম্যাক ঠিকানা এবং আইপি দিয়ে ওয়েব সার্ভারে প্রতিটি অনুরোধ একটি ফাইল লগ করতে পারেন। পিপিএইচ আইপি ঠিকানার সাথে শেষ আইটেমটি দেখুন এবং ম্যাক ঠিকানা পান।

উল্লিখিত হিসাবে মনে রাখবেন যে ম্যাক ঠিকানাটি ট্রেসের শেষ রাউটার থেকে।


-4

আপনি ওপেনডব্লিউআরটি ব্যবহার করে এটি সহজেই করতে পারেন। আপনি যদি ক্যাপটিভ পোর্টাল ব্যবহার করেন তবে আপনি পিএইচপি এবং ওপেনডাব্লুআরটি মিশ্রিত করতে পারেন এবং আইপি এবং ম্যাকের মধ্যে একটি সম্পর্ক তৈরি করতে পারেন।

আপনি ব্যবহার করে একটি সাধারণ পিএইচপি কোড লিখতে পারেন:

 $localIP = getHostByName(getHostName()); 

পরে, ওপেনডব্লিউআরটি ব্যবহার করে আপনি যেতে পারেন /tmp/dhcp.leases, আপনি ফর্মটি দিয়ে কিছু পাবেন:

 e4:a7:a0:29:xx:xx 10.239.3.XXX DESKTOP-XXX 

সেখানে আপনার কাছে ম্যাক, আইপি ঠিকানা এবং হোস্ট-নেম রয়েছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.