用python實現webshark(實現web版的wireshark功能)
阿新 • • 發佈:2019-01-28
想要做這樣一個分析流量包的模仿wireshark的線上流量分析工具。今天是開始做的第一天,首先是確定了需求,並且搭建環境。
也學習到了一些新知識。這段時間基本會持續記錄整一個實現過程,之後也會推到github上。
0x01 搭建環境
因為分析資料包有檔案上傳的需求,所以搭建的環境為linux+apache2+mongodb+python
其中,主要是學習了mongodb,由於以前用的都是關係型資料庫,但mongodb是非關係型資料庫(NoSQL)在使用上會有一些不同。安裝過程可以參考:[http://www.runoob.com/mongodb/mongodb-linux-install.html]
另外, python需要使用pymongo連線mongodb資料庫。
搭建好環境之後需要學習一下mongodb資料庫的使用,使用方法百度谷歌都可以搜到,有很多也寫的很詳細,如果想要深入瞭解那之後還要花許多時間,我就是稍微學了基本的使用方法,之後可以邊做邊學,這裡就不多說了。
0x02 完成資料庫的連線以及流量的載入
# coding=utf-8
from pymongo import MongoClient
from scapy.all import *
import urllib2
分為幾個模組,資料庫的連線
def connect_db():
client = MongoClient("localhost" ,27017)
db = client.webshark_db
return db
獲取資料庫的條目
def show_entries():
db = connect_db()
pcaps = db['pcaps']
list=[]
for pcap in pcaps.find():
list.append(pcap)
return list
獲取資料包數量
def get_count(filename):
packets = rdpcap(filename)
return len(packets)
還寫了通過網絡卡mac地址獲得生產廠商資訊的模組
'''
查詢乙太網卡生產廠商
傳入mac地址(macad)
返回生產廠商名(name)
'''
def macprod(macad):
maclist = macad.split(':')
macstr = '-'.join(maclist).strip()
url = 'http://api.macvendors.com/' + macstr
try:
name = urllib2.urlopen(url,timeout=3).read()
except urllib2.HTTPError:
return 'null'
except:
return 'null'
else:
return name
今天的學習還沒有結束,由於我的web基礎比較弱,要學習一下JSON。因為mongodb的資料格式為BSON(即二進位制形式JSON)。此外,由於用python搭建web,還需要學習一下flask框架,用於實現檔案上傳,下載,儲存等模組。
預期完成時間是這週末,希望能在做的時候學到一些新知識,也覺得是有意義的了。