windows live messenger 2011 PHP中取得內網用戶MAC位址(WINDOWS/linux)的實作程式碼

WBOY
發布: 2016-07-29 08:46:31
原創
934 人瀏覽過

複製代碼代碼如下:


function ce_getmac()
{
if(PHP_OS == 'WINNT')
{
$return_array = array();
$temp_array = array();
$mac_addr = "";
@exec("arp -a",$return_array);
foreach($return_array as $value)
{
if(strpos($value,$_SERVER["HTTP_CLIENT_IP"]) !== fsese &&
preg_match("/(:?[0-9a-f]{2} [:-]){5}[0-9a-f]{2}/i",$value,$temp_array))
{
$mac_addr = $temp_array[0];
休息;
}
}
回傳$mac_addr ? strtoupper($mac_addr) : '';
}
else if(PHP_OS == 'Linux')
{
return true;
}
}

return true; 🎜} 🎜} 🎜🎜return
函數已經修改過了,到LINUX上發現不能使用EXEC函數,也就是取得不到MAC位址了。經過溝通,該專案必須部署在LINUX伺服器下,筆者經過苦思冥想了半天終於找到了一個解決方案,不用執行EXEC也可以取得到內網用戶的MAC位址。
在內網伺服器中,有一台192.168.1.151的伺服器,伺服器上一個API,存取這個API,就取得使用者MAC,JOSN的方式輸出使用者帳號訊息,因為該伺服器可以取得MAC,就可以稍加利用了。
使用CURL偽造來源IP方式(IP不是LINUX伺服器的IP,是客戶端存取的IP位址),CURL到151伺服器,伺服器得到相應,根據用戶IP位址和ARP -A 參數的正規方式就可以得到客戶端的MAC位址,程式運作在151,而151是WINDOWS 2008伺服器。但是要注意的是不能使用REMOTE_ADDR,必須使用HTTP_CLIENT_IP。 原因是HTTP_CLIENT_IP可以使用CURL偽造,這樣就可以使用LINUX取得用戶IP,然後傳送給151處理。
疑問:依照使用者IP取得MAC位址,那用戶換一個IP了怎麼辦呢?使用CMD下 ARP -A分析,即使使用者跟換IP,但對應該使用者的這台電腦的MAC位址預設是不會更換的。
下面是摘抄網友的關於獲取IP的文章:
dz的代碼判斷IP那塊太讓人頭疼了,日,REMOTE_ADDR,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR三個東西在手冊上太不詳細了,基本上就等於沒有。
網上gg了一下,找到一點,另外,有一個思路太巧了,用JS取IP以後POST到伺服器,Y的用代理騙伺服器?有種上網先把Js給關了啊! !喔哈哈,以後有機會用ajax試一下,也省得用這三個變數if得死去活來了。
$_SERVER['...']; // for php
一、沒有使用代理伺服器的情況:
REMOTE_ADDR = 您的IP
HTTP_VIA = 沒數值或不顯示
HTTP_X_FORWARDED_FOR = 沒數值或不顯示
HTTP_X_FORWARDED_FOR = 沒數二值或不顯示
、使用透明代理伺服器的情況:Transparent Proxies
REMOTE_ADDR = 最後一個代理伺服器IP
HTTP_VIA = 代理伺服器IP
HTTP_X_FORWARDED_FOR = 您的真實IP ,經過多個代理伺服器時,這個值類似如下:203.98.18213. , 203.129.72.215。
這類代理伺服器還是將您的資訊轉發給您的存取對象,無法達到隱藏真實身分的目的。
三、使用普通匿名代理伺服器的情況:Anonymous Proxies
REMOTE_ADDR = 最後一個代理伺服器IP
HTTP_VIA = 代理伺服器IP
HTTP_X_FORWARDED_FOR = 代理伺服器IP ,經過多個代理伺服器時,這個值類似如下:203. 203.98.182.163, 203.129.72.215。
隱藏了您的真實IP,但是向訪問對象透露了您是使用代理伺服器訪問他們的。
四、使用欺騙性代理伺服器的情況:Distorting Proxies
REMOTE_ADDR = 代理伺服器IP
HTTP_VIA = 代理伺服器IP
HTTP_X_FORWARDED_FOR = 隨機的IP ,經過多個代理伺服器時,這個值類似代理伺服器:203. 182.163, 203.129.72.215。
告訴了訪問對象您使用了代理伺服器,但編造了一個虛假的隨機IP代替您的真實IP欺騙它。
五、使用高匿名代理伺服器的情況:High Anonymity Proxies (Elite proxies)
REMOTE_ADDR = 代理伺服器IP
HTTP_VIA = 沒數值或不顯示
HTTP_X_FORWARDED_FOR = 沒數值或不顯示
HTTP_X_FORWARDED_FOR = 沒數值或不顯示,這個值類似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。
完全用代理伺服器的資訊取代了您的所有信息,就像您就是完全使用那台代理伺服器直接存取物件。
REMOTE_ADDR 是你的客戶端跟你的伺服器「握手」時候的IP。如果使用了“匿名代理”,REMOTE_ADDR將顯示代理伺服器的IP。
HTTP_CLIENT_IP 是代理伺服器傳送的HTTP頭。如果是“超級匿名代理”,則傳回none值。同樣,REMOTE_ADDR也會被替換為這個代理伺服器的IP。
$_SERVER['REMOTE_ADDR']; //存取端(有可能是用戶,有可能是代理的)IP

$_SERVER['HTTP_CLIENT_IP']; //代理端的(有可能存在,可偽造)

$_SERVERVER ['HTTP_X_FORWARDED_FOR']; //使用者是哪個IP使用的代理(有可能存在,也可以偽造)

以上就介紹了windows live messenger 2011 PHP中取得內網用戶MAC位址(WINDOWS/linux)的實作程式碼,包括了windows live messenger 2011方面的內容,希望對PHP教程有興趣的朋友有所幫助。

🎜 🎜
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板