想要做这样一个分析流量包的模仿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框架,用于实现文件上传,下载,存储等模块。
预期完成时间是这周末,希望能在做的时候学到一些新知识,也觉得是有意义的了。