天天看点

用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",)
    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=).read()
    except urllib2.HTTPError:
        return 'null'
    except:
        return 'null'
    else:
        return name
           

今天的学习还没有结束,由于我的web基础比较弱,要学习一下JSON。因为mongodb的数据格式为BSON(即二进制形式JSON)。此外,由于用python搭建web,还需要学习一下flask框架,用于实现文件上传,下载,存储等模块。

预期完成时间是这周末,希望能在做的时候学到一些新知识,也觉得是有意义的了。

继续阅读