c 通過傳送arp包獲取ip等資訊

2022-04-03 10:58:07 字數 2162 閱讀 2641

利用dns類和wmi規範獲取ip及mac位址

在c#程式設計中,要獲取主機名和主機ip位址,是比較容易的.它提供的dns類,可以輕鬆的取得主機名和ip位址.

示例:string strhostname = dns.gethostname(); //得到本機的主機名

iphostentry ipentry = dns.gethostbyname(strhostname); //取得本機ip

string straddr = ipentry.addresslist[0].tostring(); //假設本地主機為單網絡卡

在這段**中使用了兩個類,乙個是dns類,另乙個為iphostentry類,二者都存在於命名空間system.net中.

dns類主要是從網域名稱系統(dns)中檢索關於特定主機的資訊,上面的**第一行就從本地的dns中檢索出本地主機名.

iphostentry類則將乙個網域名稱系統或主機名與一組ip位址相關聯,它與dns類一起使用,用於獲取主機的ip位址組.

要獲取遠端主機的ip位址,其方法也是大同小異.

在獲取了ip位址後,如果還需要取得網絡卡的mac位址,就需要進一步**了.

這裡又分兩種情況,一是本機mac位址,二是遠端主機mac位址.二者的獲取是完全不同的.

在獲取本機的mac位址時,可以使用wmi規範,通過select語句提取mac位址.在.net框架中,wmi規範的實現定義在system.management命名空間中.

managementobjectsearcher類用於根據指定的查詢檢索管理物件的集合

managementobjectcollection類為管理物件的集合,下例中由檢索物件返回管理物件集合賦值給它.

示例:managementobjectsearcher query =new managementobjectsearcher("select * from win32_networkadapterconfiguration") ;

managementobjectcollection querycollection = query.get();

foreach( managementobject mo in querycollection )

獲取遠端主機的mac位址時,需要借用api函式sendarp.該函式使用arp協議,向目的主機傳送arp包,利用返回並儲存在快取記憶體中的ip和mac位址對,從而獲取遠端主機的mac位址.

示例:int32 ldest= inet_addr(remoteip); //目的ip

int32 lhost= inet_addr(localip); //本地ip

try

catch(exception err)

",err.message);

} return 0.tostring();

但使用該方式獲取mac時有乙個很大的限制,就是只能獲取同網段的遠端主機mac位址.因為在標準網路協議下,arp包是不能跨網段傳輸的,故想通過arp協議是無法查詢跨網段裝置mac位址的。

示例程式:

using system.net;

using system;

using system.management;

using system.runtime.interopservices;

public class getip

//獲取本機的mac

public string getlocalmac()

return(mac);

}//獲取遠端主機ip

public string getremoteip(string remotehostname)

catch(exception err)

",err.message);

} return 0.tostring();

} public static void main(string args)

{getip gi = new getip();

console.writeline("本地網絡卡資訊:");

console.writeline(gi.getlocalip() + " - " + gi.getlocalmac());

console.writeline("\n\r遠端網絡卡資訊:");

string temp = gi.getremoteip("scmobile-tj2");

for(int i=0;i

socket,UDP傳送ARP包 c 實現

內容可能和網上很多大神寫的類似,我也沒有什麼創新的地方,全當寫日記了,學了網路程式設計和計算機系統之後,覺得對ip資料報有了些了解,所以想嘗試一下能不能寫出區域網arp攻擊工具出來.以下是思路1.先了解arp攻擊 的原理,攻擊物件是我舍友,我想要讓他不能正常上網,所以給他傳送arp閘道器欺騙包,告訴...

C 獲取IP等網路資訊

1 asp.net中獲取ip資訊 page.request.userhostname 獲取客戶端主機名稱 page.request.userhostaddress 獲取客戶端主機ip位址 2 webservice中獲取客戶端ip資訊 httpcontext.current.request.userh...

C 通過飛信WebService傳送免費簡訊

在上一編文章 c 非同步呼叫飛信webservice實時接收簡訊 的基礎上,再在視窗新增三個控制項如下 加textbox控制項用於輸入目標好友號 命名 tofno。加textbox控制項用於輸入簡訊內容 命名 msgtxt,設此控制項multiline true,使能輸入多行,並拖大些 加一butt...