2010-07-22 42 views
23

有人能給我一些關於從HTTP請求中獲取用戶MAC地址的指針嗎?如何從HTTP請求獲取MAC地址?

用戶將從外部我的網絡。

+0

嗨, 對不起,忘了把它,這是一個asp.net網站。 乾杯 – 2010-07-22 13:07:17

+0

[獲取ASP.NET網站用戶的MAC地址的可能的副本](http://stackoverflow.com/questions/1342738/get-the-mac-of-asp-net-website-user) – Oded 2010-07-22 13:09:02

+0

- 1已經在Richard的前一個問題中得到解答(http://stackoverflow.com/questions/3308258/iis7-restrict-website-access-by-mac-address)。 – 2010-07-22 13:12:43

回答

37

這取決於您的網絡設置。但可能沒有。

以下是關於以太網和IP的簡短回顧。 MAC地址是網卡的唯一地址。它用於識別網絡上的哪個用戶是一個數據包。您可以使用ARP來獲取IP地址的MAC地址。 但是,只有當您處於同一個網段時,才能按預期工作。

所以問題是,什麼是網段?這取決於你使用的技術,但這裏是常見的情況。整個無線網絡是一個網段。網絡上的每個用戶都可以通過以太網與其他用戶通話。在基於電線的網絡上,這取決於硬件。如果您擁有良好的舊BNC或集線器,則您擁有一個具有所有用途的網段。每個用戶也可以與其他人交談。通過網絡中的交換機,網段只是將您連接到交換機的電纜。在這裏,您只能通過以太網與交換機通話。每個其他用戶至少需要IP。

很糟糕的是,大多數情況下,基於TCP/IP構建的HTTP,99.99%絕不會與用戶位於同一網段。您可以使用ARP,但只會獲得第一跳的MAC地址。它會更好,取決於您的硬件,甚至可能不在基於以太網的IP網絡上; ATM例如...

+6

嗨肖恩,謝謝你進一步混淆了這種情況!大聲笑,沒有認真,良好的信息後,歡呼聲 – 2010-07-22 14:07:50

+0

咦?世界衛生大會?除非您使用的技術可能被認爲違反了用戶的基本隱私權,例如在用戶系統上安裝plugin/active-x/tojan,則答案爲:**否,技術上不可行**。我只是試圖解釋爲什麼......也許你或別人可以學習和理解...... – rioki 2010-07-22 18:41:32

+1

我認爲這是不完全正確的:交換機的端口不是相同的段,但是可以通過以太網在不同的交換機之間進行通信端口。在交換機上有一個ARP緩存。 – EFraim 2015-09-27 21:54:16

0

這是不可能的,除非你打算創建一個ActiveX組件,在這種情況下它只能在IE上運行。

+0

activeX組件不會出現問題,但MAC地址是否可用? – 2010-07-22 13:17:24

+0

可用於什麼? – nos 2010-07-22 13:22:46

+0

驗證與數據庫中保存的值? – 2010-07-22 13:32:35

1

我不認爲有一種方法可以在ASP.NET中執行此操作。
MAC是TCP數據包的屬性,並且在HTTP級別上沒有數據包或MAC(例如,一個HTTP請求可能由多個TCP數據包組成)。

您可以嘗試使用數據包嗅探器(如WireShark)來捕獲TCP數據包,然後分析它們以提取MAC並將它們映射到HTTP請求。

無論如何,除非用戶與服務器位於同一網段,否則不會獲得任何有用的數據。

UPD。正如評論中指出的那樣,我混淆了網絡層。 MAC地址是Ethernet frame的屬性,而不是TCP數據包。
但是,結論仍然正確。

+4

MAC地址在一個tcp數據包中?從何時起? MAC地址來自低得多的傳輸層,甚至不在IP數據包報頭中。 – 2010-07-22 13:39:14

+0

是的,MAC地址是非常低的水平 – 2010-07-22 14:08:25

+0

他的意思是一般的數據包。在來自TCP的情況下,您沒有數據包,它是一個數據流。在來自IP的情況下,您有框架...並且通常您無法在用戶模式代碼中訪問任何這些框架。 – rioki 2010-07-22 18:45:26