一、項目簡介
1.1 項目博客地址
https://www.cnblogs.com/wl0724/
1.2 項目完成的功能與特色
1.2.1項目功能
基於python web的在線端口掃描器,登陸網站即可進行掃描,可分別輸入零散的多個端口,也可以輸入連續的一系列端口進行掃描,可掃描出端口的開放情況,端口類型,端口上運行的服務以及運行該服務的軟件及版本等信息,使用簡單,運行快速。可供網絡管理員查看網絡信息,模擬滲透測試時使用。
1.2.2項目特色
掃描器是在線的,使用起來非常簡單,僅需要打開網頁即可操作;采用多線程架構,運行快速。
1.3項目借鑒源代碼的地址
Flask框架:
https://www.liaoxuefeng.com/wiki/1016959663602400/1017804650182592
Nmap使用:
https://xiaix.me/python-nmapxiang-jie/
二、項目采用的技術棧
2.1 html、css及js,號稱前端三劍客;html為標簽型語言,通過各種以<>
括起來的標簽實現各種網頁元素,文本,按鈕以及表格等等;css可以設置網頁的樣式、顏色以及大小等,用於美化頁面;js是html的腳本語言,可直接插在html任何位置運行,通過他處理各種邏輯。
2.2 ajax與json,ajax即Asynchronous Javascript And XML,通過ajax技術,即可讓網站實現動態效果,只改變局部區域,而不是只有很小的改動時也要重新加載一個新頁面;json是一種中間語言格式,由於前段采用js后端采用python,為了兩者能夠溝通數據,需要json數據格式溝通他們,即前段數據轉化為json數據傳給后端,后端解析使用之后,得出答案,將答案序列化為json數據,再返回前段處理。
2.3 nmap庫,nmap是一款強大的網絡嗅探工具,通過構造特殊的探針數據包去嗅探服務器網絡情況,可以掃描出端口的開放情況等,本項目掃描部分基於此庫實現。
2.4 flask框架,flask是一款符合wsgi規范的python web框架,封裝了許多web相關的功能於此,如request讀取前端數據,mvc技術等;實現了前后端分離,一個請求對應於一個處理函數,使用其開發web非常方便。
2.5 並發技術,掃描采用的是多線程掃描,每個線程均等的掃描一部分端口,提高運行速度。
三、自己負責的模塊
3.1 自己負責模塊列表
圖1
3.2 各模塊詳細描述(名稱,功能,運行截圖,關鍵源代碼)
項目共分三大模塊,integrate模塊負責運行網站,溝通前后端;complete模塊負責完成具體的掃描功能;界面模塊負責顯示頁面,與用戶交互。
項目功能架構如圖2:
圖2
主要功能流程圖如圖3:
圖3
運行示例如圖4:
圖4
3.3 前端界面
前端采用html、css構建基本外形,js處理數據邏輯,核心數據處理部分如下:
圖5
圖6
3.4 integrate模塊
該模塊使用了flask框架技術,一個請求對應一個處理函數,接受了前端傳來的數據,根據數據構造出供complete模塊使用的參數,然后調用complete模塊開始掃描,掃描結果序列化為json數據,然后返回前端,核心如圖:
圖7
3.5 complete模塊
該模塊完成端口掃描工作,開啟多個線程,構造適用於nmap的參數,調用nmap的scan函數完成掃描,核心實現如下:
圖8
圖9
圖10
四、自己完成的工作量評估
完成的模塊數:3個模塊
代碼行數
Home.html |
Complete.py |
Integrate.py |
234行 |
80行 |
56行 |
五、項目小結:
5.1 特點:
(1)本項目屬於在線端口掃描,方便用戶直接輸入url就可以進入界面進行操作
(2)掃描功能比較全面,可以掃描一個或者多個端口,可以開多線程應用
5.2 不足之處:
(1)沒有驗證機制
(2)沒有反反掃描功能,因為有些網站可能會進行反掃描技術或者防火牆保護,則該端口掃描就會出現掃描失敗的情況
5.3.自我評分
剛開始學習Python語言我會感到很迷茫,但是跟隨着老師課堂上的指導與分析最后做出這個項目真的感到不容易。這個項目我在入門階段面臨的是二八法則,就是20%的時間在寫分析與寫程序,80%的時間都在與Bug對抗,不斷地去同學請教,向網絡請教。在做項目過程中,面對難題我不斷地去調整心態,通過重復學習與實踐逐漸讓我對python的應用有了大體的框架,也逐漸掌握了一些小技巧。從對端口掃描技術只有初步了解,需要一步一步地上網查閱資料,仔細分析運用到的各種技術的原理,初步確定好項目的框架,在結合所學知識嘗試用各種方式去把理論與項目結合起來,雖然花了很多時間和精力,也經歷了很多的困難與挫折,但是我自身的分析與設計能力同時也得到了很大的提升。
這是目前所學習的成果的一次驗收,我也通過這個項目對照檢查了自身的不足之處,並為今后的Python進階學習奠定了更加明確的方向,學無止境,我要更加努力,讓自己的編程技能更上一層樓!