1. 程式人生 > >用python實現webshark(實現web版的wireshark功能)

用python實現webshark(實現web版的wireshark功能)

想要做這樣一個分析流量包的模仿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框架,用於實現檔案上傳,下載,儲存等模組。

預期完成時間是這週末,希望能在做的時候學到一些新知識,也覺得是有意義的了。