<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獲取當前用戶的網(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)卡地址是全世界唯一和固定不變的,可以作為安全檢查的身份標識。當用戶通過瀏覽器訪問企業(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地址的。因為路由器要準確地投遞網(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ù)器的模式是一種把標準輸入輸出定向到客戶端的瀏覽器上,而運算過程在服務(wù)器上的一種操作,所以當某個瀏覽器訪問相應(yīng)的主頁時,它的一些基本信息就會提交給服務(wù)器,這些信息包括了瀏覽器的名稱,版本號等,同時也包括了我們所關(guān)心的客戶端的IP地址,該地址存放于環(huán)境變量REMOTE   ADDR中。  
       
      當我們獲得了這引會址后,下一步工作就是去詢問該機器的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è)計的,當有人訪問Web服務(wù)器的主頁,便激活MAC.EXE(用C語言編寫),而當該程序獲得了客戶機的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標準主要由三部人組成:簡單網(wǎng)絡(luò)管理協(xié)議(SNMP);管理信息結(jié)構(gòu)(Structure   ofanagement   Information,簡稱SMI,RFC1155標準)和管理信息庫(MIB,RFC1156、RFC1158標準)。  
       
      管理信息結(jié)構(gòu)(SMI)和管理信息庫(MIB)兩個協(xié)議是關(guān)于管理信息的標準,它們規(guī)定了被管理的網(wǎng)絡(luò)對象的定義格式,MIB庫中都包含哪些對象以及怎樣訪問這些對象等等。  
       
      SMI協(xié)議規(guī)定了定義和標識MIB變量的一組原則。它規(guī)定所有的MIB變量必須用ASN.1(即抽象語法表示法I,它是一種描述數(shù)據(jù)結(jié)構(gòu)的通用方法,作為OSI研究的一部分,由ISSO推出)來定義。  
       
       
       
      每個MIB變量都有一個名稱用來標識。在SMI中,這個名稱以對象標識符(Object   Identifier)來表示。對象標識符相互關(guān)聯(lián),共同構(gòu)成一個分層結(jié)構(gòu)。在這個分層結(jié)構(gòu)里,一個對象的標識符是由從根出發(fā)到對象所在節(jié)點的途中所經(jīng)過的一個數(shù)字標號序列組成。如圖中,Internet的對象標識符就是1.3.6.1,對象標識符的命名有專門的機構(gòu)負責(zé)。  
       
      在Internet節(jié)點下的mgmt節(jié)點,專門為管理信息庫分配了一個子樹,名為mib(1)。所有的MIB變量都在mib節(jié)點下,因此它們的名稱(對象標識符)都以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)生一個對象標識符  
       
      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);當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 閱讀(2792) 評論(1)  編輯  收藏 所屬分類: 在路上

    評論

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

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

    主站蜘蛛池模板: 亚洲精品国产成人专区| 亚洲va在线va天堂成人| 亚洲网站免费观看| 亚洲GV天堂GV无码男同| 亚洲AV无码一区二三区| 日韩午夜理论免费TV影院| 亚洲精华国产精华精华液| 亚洲色无码专区在线观看| 国产v精品成人免费视频400条| 国产亚洲精品免费| 中文字幕亚洲第一在线| 日韩免费a级在线观看| 国产亚洲免费的视频看| 亚洲国产精品无码中文lv| 亚洲国产精品无码久久久蜜芽 | 日本v片免费一区二区三区| aaa毛片视频免费观看| 亚洲精品综合在线影院| 亚洲精品无码久久久久sm| 美女黄网站人色视频免费国产 | 国产成人无码区免费A∨视频网站| 国产又黄又爽又大的免费视频 | 中文字幕免费在线观看动作大片| 亚洲精品一二三区| 亚洲AV永久无码精品水牛影视| 国产又黄又爽又刺激的免费网址 | 人成午夜免费大片在线观看| 亚洲卡一卡2卡三卡4麻豆| 亚洲日韩欧洲乱码AV夜夜摸 | 亚洲色少妇熟女11p| 久久精品国产亚洲AV麻豆王友容 | 亚洲人成网站在线在线观看| 亚洲国产人成网站在线电影动漫| 亚洲精品黄色视频在线观看免费资源 | 亚洲精品中文字幕| 亚洲福利电影在线观看| 亚洲午夜久久久久久久久电影网| 在线观看免费国产视频| 毛片在线看免费版| 99视频全部免费精品全部四虎 | 日韩av无码成人无码免费|