2009-05-08 10 views
24

मैं एक सर्वलेट कि इस तरह के आईपी, मैक पते आदिHttpServlet से क्लाइंट का मैक पता कैसे प्राप्त करें?

के रूप में ग्राहक के विवरण एकत्र करता है लिखने के लिए कहा गया था हो रही उसकी आईपी है सुंदर सीधी-सपाट (request.getRemoteAddr()), लेकिन मैं अपने मैक पता प्राप्त करने के लिए एक सुंदर रास्ता खोजने नहीं है।

उचित लगता है कि वेब सर्वर के पास मैक एड्रेस आदि जैसे डेटा तक पहुंच है, क्योंकि यह टीसीपी पैकेट और सब कुछ प्राप्त करता है। क्या यह डेटा कहीं पंजीकृत है? क्या यह सुलभ है?

उत्तर

39

शायद आप जो चाहते हैं उसे पाने के लिए नहीं जा रहे हैं। (ग्राहक के मैक पता)

तो सर्वर काफी पास (सीधे हब या शायद एक स्विच के माध्यम से जुड़े) है आप MAC पता के लिए ARP कर सकते हैं। यदि आप इंटरनेट पर किसी आईपी के लिए ऐसा करते हैं तो संभवतः आप निकटतम राउटर या स्विच के अंदर के इंटरफ़ेस को प्राप्त करने जा रहे हैं।

टीसीपी/आईपी काम करता है जिस तरह से 'फ्रेम' में उपयोग किए गए मैक पते को फिसल दिया जाएगा और सर्वर और मेजबान के बीच की जानकारी प्रत्येक हॉप पर प्रत्येक को फिर से इकट्ठा कर दिया जाएगा।

alt text

Encapsulation

+1

अन्य उत्तरों को दोबारा पढ़ने में मैं सहमत हूं कि यदि आप लोगों के कंप्यूटर को अपनी आंतरिक कॉन्फ़िगरेशन छोड़ने के लिए प्राप्त करते हैं तो आप बेहतर कर सकते हैं, लेकिन मुझे संदेह है कि कोई भी सुरक्षा मॉडल इसे अनुमति देगा। किसी के आंतरिक आईपी पते को प्राप्त करने की कोशिश करने के समान ही, सबसे अच्छा आप आमतौर पर कर सकते हैं राउटर जो पता अनुवाद कर रहा है। – atom255

+0

@ atom225 मैं एक विशेषज्ञ नहीं हूं, लेकिन आपके द्वारा पोस्ट की गई छवि को देखकर, मैं एक ऐसे परिदृश्य की कल्पना कर सकता हूं जहां हम आवेदन परत में मैक पता पूछते हैं और भेजते हैं, आप मेरे विचार के बारे में क्या सोचते हैं? – ziMtyth

8

टीसीपी/आईपी (मैं tomcat6 के शीर्ष पर काम कर रहा हूँ) ... आप MAC पता नहीं मिल सकता है, कि एक बहुत कम परत AFAIK

+5

मैक, उपलब्ध तथापि, अप्रासंगिक है, क्योंकि यह ग्राहक की एनआईसी नहीं लेकिन के कुछ मैक सबसे अधिक संभावना है सर्वर के लिए निकटतम डिवाइस। –

0

मुझे विश्वास है कि ग्राहकों को अनुमति देने के लिए की जरूरत है इस के लिए अपने JVM में होने की:

HttpServlet वर्ग के माध्यम से इस thread

+2

मुझे लगता है कि ग्राहक एक ब्राउज़र होगा? –

0

यह संभव नहीं है देखें।

एकमात्र तरीका जिसे मैं संभावित रूप से उपयोगकर्ताओं को प्राप्त करने के बारे में सोच सकता हूं मैक पता क्लाइंट पक्ष पर जावास्क्रिप्ट का उपयोग करने के लिए इसे पुनर्प्राप्त करने के लिए है और फिर इसे उस कुकी में रखें जहां आपका सर्वर पढ़ सकता है। लेकिन, मुझे नहीं पता कि जावास्क्रिप्ट का उपयोग कर मैक एडीआर प्राप्त करना संभव है - ब्राउज़र के लिए सुरक्षा जोखिम की तरह लग रहा है ताकि आप इसे ऐसा करने की अनुमति दे सकें क्योंकि यह ब्राउज़र के सैंडबॉक्स के बाहर जा रहा है लेकिन हो सकता है कि ऐसा करने के लिए कुछ हैक हो।

-3

इस स्क्रिप्ट सबसे अच्छा 100% संभावना काम करता है कि उस पर आप स्थानीय होस्ट काम करता है, लेकिन आप अपने webhost

वहाँ एक php कोड है कि बहुत अधिक है है के साथ इस जांच करने के लिए है बेहतर

<font color="black" face="courier new"> 
<b>mac/linux/android</b>(arp -an)<br> 

<?php 
$mac = system('arp -an'); 
echo $mac; 
echo "<hr>"; 
?> 
<b>mac/linux/android</b>(ifconfig)<br> 
<?php 
$macall = system('ifconfig'); 
echo $macall; 
echo "<hr>"; 
?> 
<b>pc/win</b>(ipconfig /all)<br> 
<?php 
$pc = system('ipconfig /all'); 
echo $pc; 
echo "<hr>"; 
?> 
</font> 
+0

जो क्लाइंट से मैक नहीं मिलेगा; यह सर्वर का मैक पता मिलेगा। –