




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
工程項目實訓報告(2015屆)學院名稱計算機與信息學院專業(班級)信息安全11-1姓名(學號)王佳淼20112914指導教師實訓地點起止時間程克勤2014.12-2015.1實習計劃及完成情況1、2014.12.1-2014.12.7閱讀入侵攻擊和異常檢測的相關論文10篇(完成)2、2014.12.8-2014.12.14查看NSFOCUS網站即NIDS網絡入侵檢測系統的日志文件和抓到的異常數據包,導出一定量的數據包。(完成)網址為:81/user/requireLogin3、2014.12.15-2014.12.21選擇入侵攻擊和異常檢測的相關論文中的方法,對導出的數據包信息進行整理分析。(完成)4、2014.12.22-2014.12.28整理對導出數據包的分析結果,在分析結果上建立圖表。完成實驗報告的編寫。(完成)實習報告見附頁學生簽名:年月日單位指導教師考核意見校內指導教師意見成績評定(百分制或五級制):(60分以上為考核通過)單位指導教師簽名:單位簽章:年月日院系意見領導簽名(單位簽章):年月日附頁:合肥工業大學計算機與信息學院課程設計報告課程:創新工程實訓專業班級:信息安全11-1學號:20112914姓名:王佳淼2014年12月摘要信息技術的普及給生活帶來方便的同時也帶來了漏洞產生的可能信息安全漏洞是信息系統在設計實現配置運行過程中有意無意產生的缺陷惡意主體利用這些缺陷會對信息系統的安全造成損害影響信息系統及信息的安全屬性當前大量的網絡失泄密案件和信息安全問題均與漏洞的存在。計算機聯網技術的發展改變了以單機為主的計算模式。但是,網絡入侵的風險性和機會也相應地急劇增多,設計安全措施來防范未經授權訪問系統的資源和數據?是當前網絡安全領域的一個十分重要而迫切的問題,目前,要想完全避免安全事件的發生并不太現實>網絡安全人員所能做到的只能是盡力發現和察覺入侵及入侵企圖,以便采取有效的措施來堵塞漏洞和修復系統,這樣的研究稱為入侵檢測。為此目的所研制的系統就稱為入侵檢測系統,本實驗將論述網絡安全存在的漏洞和潛在的威脅。一個安全系統至少應該滿足用戶系統的保密性U完整性及可用性要求。但是,隨著網絡連接的迅速擴展,特別是互聯網大范圍的開放以及金融領域網絡的接入。越來越多的系統遭到入侵攻擊的威脅。這些威脅大多是通過挖掘操作系統和應用服務程序的弱點或者缺陷來實現的。1988年的蠕蟲事件就是一個很好的實例。TOC\o"1-3"\h\u5294一、實驗目的 -1-320821.引言 -1-90392.研究現狀 -1-657二、實驗方法 -1-241411.方法介紹 -1-222712.方法原理 -2-8168三、實驗結果及分析 -2-266591.結果圖表 -3-129942.結果分析 -4-11241.結果圖表 -4-267982.結果分析 -5-100291.結果圖表 -5-12262.結果分析 -5-202461.結果圖表 -5-316022.結果分析 -7-303521.結果圖表 -7-242782.結果分析 -9-190991.結果圖表 -9-177182.結果分析 -10-226771.結果圖表 -10-77022.結果分析 -11-29481四、實驗感想 -11-21985五、附錄:java源代碼 -12-204361.從excel中導入 -12-255582.數據結構模型初始化 -13-106713.余弦相似度計算 -15-317994.統計模塊 -16-233811.類別統計 -16-125572.時間計算 -18-125703.ip統計及ip歸屬地查詢 -18-240714.危險程度統計 -23-322465.端口統計 -24-實驗目的引言通現在網絡攻擊手段不斷變化,導致網絡入侵檢測與防御機制需不斷更新。由于正常流量與入侵流量常常容易混淆,致使入侵檢測系統常發出大量的虛警,因此提升網絡入侵檢測系統的報警正確率是網絡安全管理的一個非常重要的課題。研究現狀漏洞分類是深入進行漏洞分析的前提,漏洞分類的目的是構建一種層次化的分類形式使得能充分地了解各種漏洞信息增強對漏洞本質的理解更好地消除漏洞和發現未知漏洞。網絡入侵的檢測方法可以分為兩大類,即誤用檢測和異常檢測誤用檢測是在假設底層系統受到攻擊的情況下,在觀察網絡流量的基礎上,明確定義惡意行為的攻擊模式在異常行為檢測中,定義正常行為模式或者是邊緣行為,如果任何異常行為的出現在被描述的行為范圍之外,就可以認為安全系統受到了攻擊這種建立入侵檢測的方法被稱為異常檢測方法。實驗方法方法介紹本實驗包括了一般的統計方法、基于余弦相似度的聚類、IP歸屬地查詢等方法來進行漏洞分析。2.方法原理基于余弦相似度的聚類研究基于無監督式聚類的入侵檢測算法,提出一種無監督式方法來檢測和鑒定未知的異常行為該方法不依賴于具有標簽的數據流這種無監督的檢測采用的是健壯的數據聚類技術,并結合了證據累積的子空間聚類和交互式聚類結果協同的方法來探測性地識別網絡數據流量的異常。IP地址信息查詢(WHOIS)服務的原理是,RFC812定義了一個非常簡單的Internet信息查詢協議——WHOIS協議。其基本內容是,先向服務器的TCP端口43建立一個連接,發送查詢關鍵字并加上回車換行,然后接收服務器的查詢結果。世界上各級Internet管理機構秉承公開、公正、共享的原則,設立了可以查知IP
地址和域名所有者登記資料的WHOIS服務器,以便所有Internet的使用者排除故障、打擊網上非法活動。全世界國際區域性的IP
地址管理機構有四個:ARIN、RIPE、APNIC、LACNIC,他們負責的IP
地址的地理區域如下圖所示。四個國際區域性IP
地址管理機構所負責的區域(此圖摘自《RIPE2002年度報告》)重要的Internet管理機構和常用的WHOIS服務器機構縮寫WHOIS服務器地址機構全名及
地點提供查詢內容CERNIC中國教育與科研計算機網網絡信息中心(清華大學·中國北京)中國教育網內的IP
地址和.域名信息CNNIC中國互聯網絡信息中心(中國科學院計算機網絡信息中心·中國北京).cn域名(除.)信息INTERNIC互聯網絡信息中心(美國洛杉磯市MarinadelRey鎮).com,.net,.org,.biz,.info,.name域名的注冊信息(只給出注冊代理公司)ARIN美國Internet號碼注冊中心(美國弗吉尼亞州Chantilly市)全世界早期網絡及現在的美國、加拿大、撒哈拉沙漠以南非洲的IP地址信息APNIC亞洲與太平洋地區網絡信息中心(澳大利亞昆士蘭州密爾頓鎮)東亞(包括中國大陸和臺灣)、南亞、大洋洲IP地址注信息RIPE歐州IP
地址注冊中心(荷蘭阿姆斯特丹)歐洲、北非、西亞地區的IP
地址信息TWNIC臺灣互聯網絡信息中心(中國臺灣臺北).tw域名和部分臺灣島內IP
地址信息JPNICwhois.nic.ad.jp日本互聯網絡信息中心(日本東京).jp域名和日本境內的IP
地址信息KRNIC韓國互聯網絡信息中心(韓國漢城).kr域名和韓國境內的IP
地址信息LACNIC拉丁美洲及加勒比互聯網絡信息中心(巴西圣保羅)拉丁美洲及加勒比海諸島IP
地址信息本機上的自動WHOIS服務,是按照下圖所示的流程,依次查詢若干個WHOIS服務器之后,得到某個IP
地址的WHOIS信息。實驗結果及分析聚類的結果結果圖表HTTP攻擊20869http協議cookie字段超長緩沖區溢出攻擊20833http協議認證字段超長溢出攻擊40813http協議put命令上傳操作40432http服務基本登錄認證20381http服務暴力猜測口令攻擊web攻擊29001web服務遠程sql注入攻擊可疑行為40402web服務訪問etc/passwd文件29002web服務遠程跨站腳本執行攻擊30364web服務htaccess文件訪問10056syn-flood半開tcp連接淹沒拒絕服務攻擊30061dns服務服務器版版本號請求操作30061dns服務獲取服務器版版本號請求操作ftp攻擊40044ftp服務anonymous匿名用戶認證50031ftp服務普通用戶認證成功50045ftp服務用戶弱口令認證數據庫攻擊21369mysql用戶驗證暴力猜測50447mysql可疑數據庫文件下載遠程操控50083windows系統遠程管理管理工具終端服務用戶登錄20800microsoftwindows動畫光標畸形ani頭結構遠程棧溢出攻擊20132microsoftiis4.0/5.0unicode解碼漏洞攻擊50458遠程控制工具vnc軟件連接服務漏洞攻擊30041sunrpc服務信息dump查詢40301snmp服務試圖使用默認public口令訪問22796apachestruts遠程代碼執行漏洞cve-2013-225140123smtp服務郵件轉發失敗其他40826安全工具360系列軟件更新50152socks代理訪問操作41017routeradvertisement檢測20867novellmessengerserver2.0accept-languageoverflow結果分析聚類結果將全部29種攻擊包分成了HTTP攻擊、web攻擊、ftp攻擊、數據庫攻擊、遠程操控、服務漏洞攻擊、其他7種類型的攻擊。聚類結果是基于余弦相似度的,可以看到,擁有相同的分詞多時就會被分到同一類。類別攻擊統計1.結果圖表2.結果分析由圖表可以得出遠程操控類的攻擊較多,其次是基于某些服務漏洞的攻擊。值得注意的是,屬于這兩種類型的攻擊并不多,遠程操控類的攻擊只有四種,而屬于web攻擊的攻擊有7種,但其總的攻擊次數并不多。數據庫攻擊最少,但屬于數據庫攻擊類型的攻擊都是對MySQL數據庫進行的攻擊,我們可以猜測被攻擊的目標機是使用的MySQL數據庫或者是裝有此數據庫。按照小時統計攻擊次數1.結果圖表2.結果分析由圖表可以得出,出去服務漏洞攻擊外,其余6中類型的攻擊攻擊次數比較平均。服務漏洞攻擊分為[40301]SNMP服務試圖使用默認public口令訪問、[40301]SNMP服務試圖使用默認public口令訪問、[22796]ApacheStruts遠程代碼執行漏洞(CVE-2013-2251)、[30041]SunRPC服務信息DUMP查詢這四種攻擊。且其攻擊基本集中在中午12點至下午4點左右。在這個時間段,應該加強對這四種攻擊的防范。IP統計1.結果圖表目的IP被攻擊次數210.45.241.*3217ff02::113942.62.48.*116101.4.60.*70106.10.136.*66210.45.242.*25202.123.107.*1060.28.215.*8123.58.180.*7121.251.19.*684.246.112.*4211.151.213.*3222.195.10.*3121.194.0.*2168.63.218.*2218.60.98.*2223.202.68.*2119.75.219.*1206.190.36.*1210.45.240.*1222.23.55.*169.192.2.*1fe80::a86b:f8d0:e713:b0571源IP攻擊次數184.105.139.*336124.232.142.*333210.45.241.*297fe80::4255:39ff:fe05:39c1140124.228.83.*8258.221.47.*73134.147.203.*595.196.208.*5293.180.5.*5291.207.5.*4910.16.31.*45122.55.83.*43172.16.27.*40199.203.165.*3610.188.1.*35114.113.55.*35185.41.154.*33117.21.176.*3166.249.65.*30222.195.10.*28218.63.105.*26218.64.118.*26222.88.153.*2544.144.15.*22218.197.119.*21攻擊匹配次數184.105.139.*攻擊210.45.241.*336124.232.142.*攻擊210.45.241.*333fe80::4255:39ff:fe05:39c1攻擊ff02::1139210.45.241.*攻擊42.62.48.*116124.228.83.*攻擊210.45.241.*8258.221.47.*攻擊210.45.241.*73210.45.241.*攻擊101.4.60.*70210.45.241.*攻擊106.10.136.*66134.147.203.*攻擊210.45.241.*595.196.208.*攻擊210.45.241.*522.結果分析根據表格數據可以得出184.105.139.*、124.232.142.*、210.45.241.*這三個IP段經常對本網絡發起攻擊。而本網段210.45.241.*IP段被攻擊次數最多。另外根據IP攻擊的匹配情況可以知道,某些IP,例如184.105.139.*,IP段184.105.139.*只攻擊210.45.241.*。所以在210.45.241.*IP段可以重點對184.105.139.*IP段進行防范。IP區域統計1.結果圖表國內與海外次數中國296美國53臺灣臺灣省33未分配或者內網IP26法國13烏克蘭6印度尼西亞6德國6荷蘭5韓國5俄羅斯4土耳其4加拿大3越南3南非2印度2希臘2摩爾多瓦2羅馬尼亞2英國2香港香港特別行政區1以色列1伊朗1冰島1哥倫比亞1地區1墨西哥1委內瑞拉1孟加拉國1巴西1斯洛伐克1新加坡1泰國1瑞典1立陶宛1菲律賓1馬來西亞12.結果分析由表格和圓餅圖可以得出不同IP段屬于的區域,在根據國內、海外、港臺這樣劃分得到圓餅圖。發現海外的IP地址占了三分之一的比重,所以假冒IP地址的可能性很大。攻擊等級統計1.結果圖表高危編號高危類型次數[20132]MicrosoftIIS4.0/5.0Unicode解碼漏洞攻擊7[20833]HTTP協議認證字段超長溢出攻擊75[20867]NovellMessengerServer2.0Accept-LanguageOverflow1[20869]HTTP協議Cookie字段超長緩沖區溢出攻擊37[22796]ApacheStruts遠程代碼執行漏洞(CVE-2013-2251)1[29001]Web服務遠程SQL注入攻擊可疑行為2112.結果分析在各種高危、中危、低危三種級別的攻擊中,低危的攻擊最多。雖然低危攻擊的數目多,但是我們對高危攻擊進行分析,原因在于高危攻擊的數目雖然較低危攻擊數目少,但其危險性較高,對網絡安全危害較大。高危攻擊中,Web服務遠程SQL注入攻擊可疑行為攻擊占了較大比重。我覺得原因在于,SQL注入是一種較其他方式而言更加簡單初級的攻擊方式。SQL注入,就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串。所以只要網頁含有表單,就可以被SQL注入攻擊。端口情況統計1.結果圖表目的端口被攻擊次數338996216157380564533692134731283378080206014044377590152330636999913108892500702688121111144125159021590315944512.結果分析由表格和圖片可以得出,3389端口被攻擊次數最多。3389端口是Windows2000(2003)Server遠程桌面的服務端口,可以通過這個端口,用"遠程桌面"等連接工具來連接到遠程的服務器。在數據包中,進行遠程控制攻擊的數目較多,所以3389端口被攻擊次數多是可以理解的。由于連接上了,輸入系統管理員的用戶名和密碼后,將變得可以像操作本機一樣操作遠程的電腦,因此遠程服務器一般都將這個端口修改數值或者關閉。這樣就可以提高系統的安全性能。實驗感想經過本次實驗,對長達4天,一共3000多個數據包進行分析。利用基于余弦相似度的聚類方法,將攻擊分為7種類型的攻擊。再統計每天0-24的攻擊情況,可以得到很多有用的信息。完全無監督式異常檢測算法擁有很多的優點,它使用專門的無標簽的數據來檢測和刻畫網絡異常行為,而并不需要任何種類的特征特殊模式的假定或者數據的正態分布這些可以允許檢測先前沒有見過的異常行為,即使是不使用統計學習或者人工分析決策的制定,也可以做到。例如類型5,遠程操控類型的攻擊就是通過聚類而來,正是因為有這個聚類結果,我們才發現遠程操控類型的攻擊的發生時間是有規律性的,這樣可以幫助我們進行這類攻擊的防范。另外對其余數據信息的統計,也能獲取到本機漏洞所在,例如在對端口號進行統計時,發現3389號端口被攻擊次數最多。若被攻擊主機不是服務器,可以考慮關閉3389號端口,及關閉遠程控制的服務,以提高系統安全性。若被攻擊主機是服務器,則可以考慮修改端口數值,以避開攻擊。在高危級別的攻擊中,SQL注入攻擊的數目較多,而且,從獲取的數據包可以得到使用的數據庫應該是MySQL數據庫。所以應該加強這方面的防范。想要獲得最好的安全狀態,目前最好的解決辦法就是對用戶提交或者可能改變的數據進行簡單分類,分別應用正則表達式來對用戶提供的輸入數據進行嚴格的檢測和驗證。在對IP區域進行檢測時候,發現海外地址較多。IP信息的查詢是通過淘寶API接口進行的,阿里巴巴出口通的IP并沒有相應監管機構核實,所以很有可能是假冒的IP地址,即設置了代理服務器。附錄:java源代碼從excel中導入packageother;importjava.io.File;importjxl.Cell;importjxl.Sheet;importjxl.Workbook;publicclassExcelOperating{ publicstaticString[]readexcel(Stringfname){ Stringstring[]=newString[3688]; try{Workbookbook=Workbook.getWorkbook(newFile(fname));Sheetsheet=book.getSheet(0);for(inti=0;i<sheet.getRows();i++){ string[i]="";for(intj=0;j<sheet.getColumns();j++){Cellcell=sheet.getCell(j,i+1);if(j==0)string[i]=cell.getContents()+"";elsestring[i]+=cell.getContents()+"";}//System.out.println();}book.close();}catch(Exceptione){System.out.println(e);} System.out.println(string.length); System.out.println(fname+"readcompelete"); returnstring; }}數據結構模型初始化packagemodel;importjava.io.BufferedReader;importjava.io.FileNotFoundException;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOException;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.ArrayList;importjava.util.Date;importjava.util.HashMap;importjava.util.Map;importcalculate.CategoryStatictics;importcalculate.IPcalculate;importcalculate.LevelCalculate;importcalculate.PortCalculate;importother.ExcelOperating;publicclassADmodel{ publicStringlevel; publicStringtime; publicStringcontent; publicStringsIP; publicStringdIP; publicStringsport; publicStringdport; publicStringcontinuoustimes; publicStringcategory; publicstaticvoidmain(Stringarg[])throwsIOException{ ArrayList<ADmodel>models=init("dataset.xls","category.txt"); PortCalculate.ComS(models); /* FileWriterfileWriter=newFileWriter("dataset.txt"); for(ADmodelaDmodel:models){ fileWriter.write(aDmodel.content); fileWriter.write("\r\n"); } fileWriter.close();*/ } publicstaticArrayList<ADmodel>init(Stringfname,Stringcafile){ String[]aStrings=ExcelOperating.readexcel(fname); ArrayList<ADmodel>models=newArrayList<ADmodel>(); //SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH"); Map<String,String>map=newHashMap<String,String>(); try{ FileReaderfileReader=newFileReader(cafile); BufferedReaderbufferedReader=newBufferedReader(fileReader); StringtempString; while((tempString=bufferedReader.readLine())!=null){ StringaString[]=tempString.split(""); map.put(aString[0],aString[1]); } for(inti=0;i<aStrings.length;i++){ ADmodelad=newADmodel(); String[]b=aStrings[i].split(""); ad.level=b[0]; ad.time=b[1].substring(0,13); ad.content=b[2]; ad.sIP=b[3]; ad.sport=b[4]; ad.dIP=b[6]; ad.dport=b[7]; ad.continuoustimes=b[11]; ad.category=map.get(b[2].substring(1,6)); models.add(ad); } }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } System.err.println("initcomplete"); returnmodels; }}余弦相似度計算packageother;importjava.util.HashMap;importjava.util.Iterator;importjava.util.Map;publicclassSimi{ //余弦值計算未添加權重 publicstaticdoublegetSimilarDegree(Stringstr1,Stringstr2){ //創建向量空間模型,使用map實現,主鍵為詞項,值為長度為2的數組,存放著對應詞項在字符串中的出現次數 Map<String,int[]>vectorSpace=newHashMap<String,int[]>(); int[]itemCountArray=null;//為了避免頻繁產生局部變量,所以將itemCountArray聲明在此 //以空格為分隔符,分解字符串 StringstrArray[]=str1.split(""); for(inti=0;i<strArray.length;++i){ if(vectorSpace.containsKey(strArray[i])) ++(vectorSpace.get(strArray[i])[0]); else{ itemCountArray=newint[2]; itemCountArray[0]=1; itemCountArray[1]=0; vectorSpace.put(strArray[i],itemCountArray); } } strArray=str2.split(""); for(inti=0;i<strArray.length;++i){ if(vectorSpace.containsKey(strArray[i])) ++(vectorSpace.get(strArray[i])[1]); else{ itemCountArray=newint[2]; itemCountArray[0]=0; itemCountArray[1]=1; vectorSpace.put(strArray[i],itemCountArray); } } //計算相似度 doublevector1Modulo=0.00;//向量1的模 doublevector2Modulo=0.00;//向量2的模 doublevectorProduct=0.00;//向量積 Iteratoriter=vectorSpace.entrySet().iterator(); while(iter.hasNext()){ Map.Entryentry=(Map.Entry)iter.next(); itemCountArray=(int[])entry.getValue(); vector1Modulo+=itemCountArray[0]*itemCountArray[0]; vector2Modulo+=itemCountArray[1]*itemCountArray[1]; vectorProduct+=itemCountArray[0]*itemCountArray[1]; } vector1Modulo=Math.sqrt(vector1Modulo); vector2Modulo=Math.sqrt(vector2Modulo); //返回相似度 return(vectorProduct/(vector1Modulo*vector2Modulo)); }}4.統計模塊1.類別統計packagecalculate;importjava.util.ArrayList;importjava.util.Date;importjava.util.Map;importjava.util.TreeMap;importjava.util.Map.Entry;importmodel.ADmodel;importmodel.InitTimeMap;publicclassCategoryStatictics{ publicstaticvoidComS(ArrayList<ADmodel>models){ Map<String,Integer>map=newTreeMap<String,Integer>(); map=InitTimeMap.init(map); for(ADmodelaDmodel:models){ if(!map.containsKey(aDmodel.time))map.put(aDmodel.time,1); elsemap.put(aDmodel.time,map.get(aDmodel.time)+1); } for(Entry<String,Integer>entry:map.entrySet()){ //System.out.println(entry.getKey()); System.out.println(entry.getValue()); } } publicstaticvoidCategoryS(ArrayList<ADmodel>models,Stringcategory){ Map<String,Integer>map=newTreeMap<String,Integer>(); map=InitTimeMap.init(map); for(ADmodelaDmodel:models){ if(aDmodel.category.equals(category)){ if(!map.containsKey(aDmodel.time))map.put(aDmodel.time,1); elsemap.put(aDmodel.time,map.get(aDmodel.time)+1); } } for(Entry<String,Integer>entry:map.entrySet()){ //System.out.println(entry.getKey()); System.out.println(entry.getValue()); } } publicstaticvoidCategoryShours(ArrayList<ADmodel>models,Stringcategory){ Map<String,Integer>map=newTreeMap<String,Integer>(); map=InitTimeMap.inithours(map); for(ADmodelaDmodel:models){ if(aDmodel.category.equals(category)){ StringtimeString=aDmodel.time.substring(11,13); if(!map.containsKey(timeString))map.put(timeString,1); elsemap.put(timeString,map.get(timeString)+1); } } for(Entry<String,Integer>entry:map.entrySet()){ //System.out.println(entry.getKey()); System.out.println(entry.getValue()); } }}時間計算packageother;importjava.util.Calendar;importjava.util.Date;publicclassDateOperate{ publicstaticDatetimeplus(Datea){ Calendarcalendar=Calendar.getInstance(); calendar.setTime(a); //calendar.add(Calendar.HOUR,1);//對小時數進行+1操作 calendar.add(Calendar.HOUR_OF_DAY,1); a=calendar.getTime(); returna; }}ip統計及ip歸屬地查詢packagecalculate;importjava.io.BufferedReader;importjava.io.FileNotFoundException;importjava.io.FileReader;importjava.io.IOException;importjava.io.InputStreamReader;import.URL;import.URLConnection;importjava.util.ArrayList;importjava.util.Map;importjava.util.TreeMap;importjava.util.Map.Entry;importjavax.xml.transform.Templates;importmodel.ADmodel;importmodel.InitTimeMap;publicclassIPcalculate{ publicstaticvoidcalculate(ArrayList<ADmodel>models){ Map<String,Integer>map=newTreeMap<String,Integer>(); String[]aStrings=null; StringsipString=null; for(ADmodelaDmodel:models){ if(!aDmodel.sIP.subSequence(0,1).equals("f")){ aStrings=aDmodel.sIP.split("\\."); sipString=aStrings[0]+"."+aStrings[1]+"."+aStrings[2] +".*"+"攻擊"; }else{ sipString=aDmodel.sIP+"攻擊"; } if(!aDmodel.dIP.subSequence(0,1).equals("f")){ aStrings=aDmodel.dIP.split("\\."); sipString+=aStrings[0]+"."+aStrings[1]+"." +aStrings[2]+".*"; }else{ sipString+=aDmodel.dIP; } if(!map.containsKey(sipString)) map.put(sipString,1); else map.put(sipString,map.get(sipString)+1); } for(Entry<String,Integer>entry:map.entrySet()){ //System.out.println(entry.getKey()); //System.out.println(entry.getValue()); } } publicstaticStringipbelong(ArrayList<ADmodel>models){ Stringstring=""; Map<String,String>map=newTreeMap<String,String>(); Stringtemp=""; try{ FileReaderfileReader=newFileReader("ip.txt"); BufferedReaderbufferedReader=newBufferedReader(fileReader); while((temp=bufferedReader.readLine())!=null){ StringaString=temp; temp=temp.substring(0,temp.length()-1)+"1"; if(!map.containsKey(temp)){ System.out.println(aString); Stringipc=ip(temp); map.put(temp,ipc); System.out.println(ipc); }else{ continue; } } for(Entry<String,String>entry:map.entrySet()){ System.out.println(entry.getKey()); System.out.println(entry.getValue()); } }catch(FileNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } returnstring; } publicstaticStringip(Strings){ //查詢IP的接口:88/?app=ip.get&ip=40&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json Stringip=s; Stringstr_url=":88/?app=ip.get&ip=" +ip +"&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json"; str_url="/service/getIpInfo.php?ip="+ip; Stringstring=""; try{ URLurl=newURL(str_url); URLConnectionconn; conn=url.openConnection(); BufferedReaderretun=newBufferedReader(newInputStreamReader( conn.getInputStream())); retun=newBufferedReader(newInputStreamReader(url.openStream())); //這里返回的是一個JSON的格式,自己解析吧。 //System.out.println(retun.readLine()); string=retun.readLine(); String[]aString=string.split("\\\""); inti=0; string=""; string+=aString[7]+aString[23]+aString[31]; retun.close(); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } returndecodeUnicode(string); } publicstaticStringdecodeUnicode(StringtheString){ charaChar; intlen=theString.length(); StringBufferoutBuffer=newStringBuffer(len); for(intx=0;x<len;){ aChar=theString.charAt(x++); if(aChar=='\\'){ aChar=theString.charAt(x++); if(aChar=='u'){ //Readthexxxx intvalue=0; for(inti=0;i<4;i++){ aChar=theString.charAt(x++); switch(aChar){ case'0': case'1': case'2': case'3': case'4': case'5': case'6': case'7': case'8': case'9': value=(value<<4)+aChar-'0';
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025店鋪買賣轉讓合同
- 2025二手車買賣合同國家版
- 廣深鐵路股份2024年度社會責任報告-ESG
- 2025游泳池防腐施工合同
- 語言表達的修辭解碼知到課后答案智慧樹章節測試答案2025年春湘潭大學
- 2025ss房屋裝修合同書樣本
- 2024年自然資源部第一海洋研究所招聘工作人員真題
- 2024年長沙縣中醫院招聘專業技術人員真題
- 2024年鹽城市衛生健康委直屬事業單位招聘專業技術人員真題
- 2024年通山縣財政局所屬事業單位招聘工作人員真題
- 實習協議書簡單模板
- 2025屆高三部分重點中學3月聯合測評(T8聯考)地理試卷(河北版含答案)
- 小學一年級數學下冊口算題卡
- 肝功能檢查的試題及答案
- 2025年江蘇城鄉建設職業學院單招職業傾向性考試題庫匯編
- DB32-T 339-2007中華絨螯蟹 一齡蟹種培育
- 排油煙管道施工方案
- 《頁巖氣 保壓取心技術規范 第1部分:取心作業》
- 生豬屠宰獸醫衛生檢驗人員理論考試題及答案
- 2023-2024學年下學期高一思想政治課《心理健康與職業生涯》期中模擬考試卷答案
- SWITCH塞爾達傳說曠野之息-1.6金手指127項修改使用說明教程
評論
0/150
提交評論