<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    廉頗老矣,尚能飯否

    java:從技術(shù)到管理

    常用鏈接

    統(tǒng)計

    最新評論

    怎樣用JSP獲取當(dāng)前用戶的網(wǎng)卡IP和MAC地址?[轉(zhuǎn)載]

    隨著Internet技術(shù)的飛速發(fā)展,企業(yè)信息系統(tǒng)逐步轉(zhuǎn)向Intranet化,建立Web服務(wù)器作為企業(yè)信息的發(fā)布和交換平臺。但是,從企業(yè)信息安全角度出發(fā),應(yīng)該建立企業(yè)信息有限度的開放機制,保證用戶在規(guī)定的權(quán)限范圍內(nèi)的獲取相應(yīng)的信息。常規(guī)的安全檢查方法就是設(shè)立用戶身份驗證機制,即在Web服務(wù)器上進行口令和IP地址過濾。可是,企業(yè)內(nèi)部網(wǎng)絡(luò)工作站的IPI地址是動態(tài)分配,沒有固定的地址,而且容易被假旦。口令檢查方式又增加用戶記憶上的負擔(dān),容易被別人獲取。由于網(wǎng)絡(luò)工作站上的網(wǎng)卡地址是全世界唯一和固定不變的,可以作為安全檢查的身份標(biāo)識。當(dāng)用戶通過瀏覽器訪問企業(yè)的Web服務(wù)器的時候,采用的網(wǎng)絡(luò)通信HTTP協(xié)議是工作在TCP/IP協(xié)議上,是基于網(wǎng)絡(luò)層的協(xié)議,而AC地址是在鏈路層上的設(shè)備才會關(guān)心的東西,所以通常情況下兩臺機器互訪是通過廣播或ARP(Address   Resolution   Protocol)協(xié)議得到相互的MAC地址后進行通信,而基于TCP/IP協(xié)議編程是很難獲取對方的MAC地址的。因為路由器要準(zhǔn)確地投遞網(wǎng)絡(luò)數(shù)據(jù)包,必須擁有網(wǎng)絡(luò)上最完整ARP地址識別表,該表存放于路由器上的SNMP   MIB管理信息庫中,所以應(yīng)從這些網(wǎng)絡(luò)設(shè)備入手獲取MAC地址。根據(jù)該思路,我們采用了根據(jù)用戶網(wǎng)絡(luò)MAC地址進行身份驗證的安全機制,已在我局的計算機城域網(wǎng)上實際運行了一年多的時間,證明是一種簡易有效的安全檢查手段。  
       
      一、技術(shù)思路  
       
      瀏覽器/服務(wù)器的模式是一種把標(biāo)準(zhǔn)輸入輸出定向到客戶端的瀏覽器上,而運算過程在服務(wù)器上的一種操作,所以當(dāng)某個瀏覽器訪問相應(yīng)的主頁時,它的一些基本信息就會提交給服務(wù)器,這些信息包括了瀏覽器的名稱,版本號等,同時也包括了我們所關(guān)心的客戶端的IP地址,該地址存放于環(huán)境變量REMOTE   ADDR中。  
       
      當(dāng)我們獲得了這引會址后,下一步工作就是去詢問該機器的MAC地址,這也是編程最重要的一步。要從路由器中取到ARP的信息,就要進行基于網(wǎng)絡(luò)的SNMP(簡單網(wǎng)絡(luò)管理協(xié)議)編程。SNMP協(xié)議目前最常用的有兩個版本,通常稱之為v1和v2。一般情況下v2向下兼容v1版,但有時也有例外。SNMP   MIB管理信息庫的存儲方式是一種目錄樹的結(jié)構(gòu),而且它總是開始于:iso.   Org.   Dod翻譯成數(shù)字就是.1.3.6,這就是我們所說的MIB(Management   Information   Base,管理信息庫)的格式,而關(guān)于物理地址的MIB就是:iso.   Org.   Dod.   Internet.   Mgmt.   Mib.   At.   AtTable.   AtEnty.   AtPhysAddress(1.3.6.1.2.1.3.1.1.2)。  
       
      所以基于上述思路,該程序整個處理流程就是這樣設(shè)計的,當(dāng)有人訪問Web服務(wù)器的主頁,便激活MAC.EXE(用C語言編寫),而當(dāng)該程序獲得了客戶機的IP地址后,自動激活一個叫sn.   Class的java程序,sn.   Class便通過相應(yīng)的MIB值向路由器詢問此IP的MAC地址,并將結(jié)果傳遞給MAC.EXE,而AC.EXE將獲取的這個MAC地址到自身Web服務(wù)器上的已登記合法的MAC地址庫內(nèi)查找,若已在MAC地址庫登記的,則通過身份驗證,把其相應(yīng)的主頁信息呈現(xiàn)在客戶端的屏幕上;否則,驗證失敗,拒絕訪問。  
       
      二、SNMP協(xié)議的MIB管理信息庫  
       
      由于上述技術(shù)思路涉及SNMP協(xié)議及其MIB管理信息庫,這里做一下簡要說明。SNMP標(biāo)準(zhǔn)主要由三部人組成:簡單網(wǎng)絡(luò)管理協(xié)議(SNMP);管理信息結(jié)構(gòu)(Structure   ofanagement   Information,簡稱SMI,RFC1155標(biāo)準(zhǔn))和管理信息庫(MIB,RFC1156、RFC1158標(biāo)準(zhǔn))。  
       
      管理信息結(jié)構(gòu)(SMI)和管理信息庫(MIB)兩個協(xié)議是關(guān)于管理信息的標(biāo)準(zhǔn),它們規(guī)定了被管理的網(wǎng)絡(luò)對象的定義格式,MIB庫中都包含哪些對象以及怎樣訪問這些對象等等。  
       
      SMI協(xié)議規(guī)定了定義和標(biāo)識MIB變量的一組原則。它規(guī)定所有的MIB變量必須用ASN.1(即抽象語法表示法I,它是一種描述數(shù)據(jù)結(jié)構(gòu)的通用方法,作為OSI研究的一部分,由ISSO推出)來定義。  
       
       
       
      每個MIB變量都有一個名稱用來標(biāo)識。在SMI中,這個名稱以對象標(biāo)識符(Object   Identifier)來表示。對象標(biāo)識符相互關(guān)聯(lián),共同構(gòu)成一個分層結(jié)構(gòu)。在這個分層結(jié)構(gòu)里,一個對象的標(biāo)識符是由從根出發(fā)到對象所在節(jié)點的途中所經(jīng)過的一個數(shù)字標(biāo)號序列組成。如圖中,Internet的對象標(biāo)識符就是1.3.6.1,對象標(biāo)識符的命名有專門的機構(gòu)負責(zé)。  
       
      在Internet節(jié)點下的mgmt節(jié)點,專門為管理信息庫分配了一個子樹,名為mib(1)。所有的MIB變量都在mib節(jié)點下,因此它們的名稱(對象標(biāo)識符)都以iso.org.dod.internet.mgmt.mib開關(guān),數(shù)字表示是1.3.6.1.2.1。  
       
      路由器中的路由表MIB中就有網(wǎng)絡(luò)中工作站IP地址與MAC地址的對應(yīng)表。在CISCO路由器的路由表中,這種信息一般放在樹型結(jié)構(gòu)的{1.3.6.1.2.1.3.1.1.2.0.0.1.47}位置中,比如:一個IP地址為10.142.168.1的機器,它的MAC地址就存放在MIB表中{1.3.6.1.2.1.3.1.1.2.0.0.1.47}+{10.142.168.1}的這個位置上,知道了這個表結(jié)構(gòu)后,我們就可以通過編寫CGI程序來調(diào)用SNMP代理,讀取MIB管理信息表中的MAC地址。  
       
      三、獲取MAC地址的Java接口程序  
       
      我們可以通過好幾種方法來調(diào)用SNMP代理,如用C++來調(diào)用WINT下SNMP自帶的SNMP   API   FOR   WIN32的動態(tài)鏈接庫,也可以利用SNMP   PERL來編寫CGI程序完成這種功能,也可以用SNMP   Java程序來編寫。SNMP   Java程序類似于SNMP   PERL程序,它是Java程序類擴展庫,它提供了Java語言與SNMP代理接口的類庫,使程序員通過調(diào)用這個類庫很容易地操縱SNMP代理,獲取網(wǎng)絡(luò)路由表中儲存的網(wǎng)絡(luò)設(shè)備的各種信息;包括IP地址與MAC地址映射表。下面我介紹一下SNMP   Java獲取MAC信息的過程。首先在程序開頭加SNMP   Jva的擴展類,import   Snmp.   *;  
       
      ……  
       
      OIDStr[0]=new   String  
       
      (“.1.3.6.1.2.1.3.1.1.2.0.0.1.47.”+args[1]);定義IP地址與CAC地址的映射的位置  
       
      ……  
       
      api=new   SnmpAPI();   //產(chǎn)生一個SNMP代理的接口api.   Start();  
       
      snmpPDU   pdu=new   SnmpPDU(api);  
       
      pdu.   Command=apiGET_REQ_MSG;  
       
      SnmpSEssion   session=new   SnmpSession(api);  
       
      Session.   version=SnmpAPI.   SNMP   VERSION_1;  
       
      Session.   Peername=Host[I];//把路由器地址賦給線程SnmpOID   odi=new   SnmpOID(OIDStr[I],   api);   //產(chǎn)生一個對象標(biāo)識符  
       
      If(oid.   ToValue()!=null)pdu.   AddNull(oid);  
       
      Try{Session.   Open();  
       
      Pdu=session.   SyncSend(pdu);//發(fā)出請求單元信息}catch   (SnmpException   e){}  
       
      If   (pdu=   =null){//timeout  
       
      System.   Out.   Println(“Request   timed   out   to:”+Host);  
       
      System.   Exit(1):}  
       
      SnmpVarBind   Varbind=(SnmpVarBind)  
       
      Pdu.   Variables.   FirstElement();//找到第一滿足條件的信息  
       
      PduStr=varbind.   ToString();//存放找到的所需的信息  
       
      四、通過編寫CGI程序?qū)崿F(xiàn)SNMP代理功能  
       
      我們用Java編寫一個sn.java程序,該程序的功能是根據(jù)給定的路由器地址(10.142.168.29)和主機IIP地址來獲得相應(yīng)IP地址主機的MAC地址,如:java   sn   10.142.168.29   10.142.169.1就會獲得10.142.169.1的MAC地址,再通過編寫一個C語言的CGI程序把Java程序執(zhí)行的結(jié)果讀取過來,和原有的合法MAC地址庫中的數(shù)據(jù)進行比較來驗證用戶是否僉。首先我們可通過讀取環(huán)境變量“REMOTEADDR”,該變量存放著請求用戶工作站的IP地址,作為執(zhí)行Java程序的一個參數(shù),再通過C語言的sprint函數(shù)來執(zhí)行Java程序sn:   Sprint(getmac,   “java   %   s   %   s”,   10.142.168.29.   remote   ipaddress);當(dāng)C語言程序執(zhí)行這個函數(shù)時,Java程序就被執(zhí)行。并且getmac所指向的文件頭就是執(zhí)行結(jié)果的文件頭,我們再來讀取該文件,就可獲取remote   ipaddress所對應(yīng)的MAC地址,然后可用這個MAC地址與原有的合法MAC地址庫中數(shù)據(jù)相比較,從而驗證用戶是否為合法用戶。  
       
      五、結(jié)束語  
       
      硬件環(huán)境要求:  
       
      l   只能在局域網(wǎng)中(在某些特定的情況也可將其擴充到更遠一些的專線網(wǎng)絡(luò)  
       
      l   網(wǎng)絡(luò)連接協(xié)議必須采用TCP/IP  
       
      l   網(wǎng)絡(luò)中至少有一臺路由器或智能HUB  
       
      l   至少有一臺Web服務(wù)器  
       
      對系統(tǒng)軟件需求:  
       
      l   Java程序解釋器(JDK1.14以上版本)  
       
      l   GNU   C  
       
      以上兩個軟件均為免費軟件,可以在Internet上下載。前者可在http://www.sum.com站點取到,而GCC在http://www.gnu   org/software/gcc/gcc.html下可以下載。

    柳德才
    13691193654
    18942949207
    QQ:422157370
    liudecai_zan@126.com
    湖北-武漢-江夏-廟山

    posted on 2009-02-14 16:12 liudecai_zan@126.com 閱讀(2793) 評論(1)  編輯  收藏 所屬分類: 在路上

    評論

    # re: 怎樣用JSP獲取當(dāng)前用戶的網(wǎng)卡IP和MAC地址?[轉(zhuǎn)載][未登錄] 2010-04-21 15:42 Nick

    似乎在哪里看到過啊,http://zenglingjun.blog.51cto.com/541909/197613這個地址還有代碼,不仿去看看  回復(fù)  更多評論   

    主站蜘蛛池模板: 无码精品国产一区二区三区免费 | 香蕉成人免费看片视频app下载| 国产成人免费高清在线观看| 亚洲色欲啪啪久久WWW综合网| 2021国产精品成人免费视频| 亚洲婷婷第一狠人综合精品| 噼里啪啦电影在线观看免费高清| 亚洲一区二区三区在线网站| 91在线视频免费91| 亚洲乱码在线卡一卡二卡新区| 日韩精品视频免费在线观看| 亚洲妇女无套内射精| 亚洲av日韩片在线观看| 国产精品美女久久久免费| 亚洲无人区午夜福利码高清完整版| a毛片免费在线观看| 亚洲一二成人精品区| 999国内精品永久免费视频| 狠狠色伊人亚洲综合网站色| 国产在线98福利播放视频免费 | WWW免费视频在线观看播放| 亚洲伊人久久精品影院| 日韩免费人妻AV无码专区蜜桃| 亚洲视屏在线观看| 成年私人影院免费视频网站| 男人j进女人p免费视频| 亚洲精品无码久久久久去q| 国产乱子精品免费视观看片| 国产精品亚洲专区无码WEB| 中文字幕亚洲无线码| 久久99国产综合精品免费| 亚洲AV噜噜一区二区三区| 国产亚洲AV手机在线观看| 亚洲成年人免费网站| 亚洲国产精品日韩av不卡在线| 国产日韩成人亚洲丁香婷婷| jjizz全部免费看片| 精品国产日韩亚洲一区91| 亚洲Av无码专区国产乱码DVD| 四虎永久在线精品免费网址| 国产精品综合专区中文字幕免费播放 |