因为数据收集的代码是利用Python写的,因此想到了利用Django进行项目开发,实现的具体功能是在局域网内进行信息嗅探,并将嗅探得到的信息展示在WEB网页上。
首先主机利用ARP欺骗,使得所有的数据包都经过攻击机。(工具选择ettercap)
python在数据包截获方面有现成的模块,例如pcap。
#listen to sniff packet
pc = pcap.pcap()
b = 'tcp port 80'
pc.setfilter(b)
#可以直接对经过网卡的所有数据包进行捕获
在数据包分析方面,例如dpkt。
eth = dpkt.ethernet.Ethernet(buf)
ip = eth.data
tcp = ip.data
#可以把截获的数据包分层处理 如上所示分成 以太网层,IP层,tcp层······
对数据中URL的分析就是利用http层的协议内容进行截获分析
通过python现有的模块将所截获的数据包分层处理。
目前对用户访问的URL的分析是通过http协议中的host头部获得。
用户的种类的分析也是根据http协议user-agent头部获得。
对于图片的的截取,目前做到的是匹配关键字的方法获得(匹配是否有image、jpg、png等,下一阶段直接从数据包中获得图片数据)。
Django框架自带sqlite数据库可以直接使用。
设计一个用于存储用户信息的数据表victim
字段包括 序号、用户种类、mac地址、连接时间、IP地址
CREATE TABLE "victim" (
`id` INTEGER,
`useragent` TEXT,
`mac` TEXT,
`time` TEXT,
`ip` TEXT
)
字段包括 序号、访问的URL、访问URL对应的时间
CREATE TABLE `Record_urls` (
`id` INTEGER,
`url` TEXT,
`time` TEXT
)
嗅探到的数据信息通过Python语句存储至sqlite数据库,方便web网页访问。
通过该语句连接至数据库
#link to database
conn = sqlite3.connect("db.sqlite3")
并通过下面的语句访问数据库
conn.execute(sql1)
conn.commit()
Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。框架把控制层给封装了,无非与数据交互这层都是数据库表的读,写,删除,更新的操作.在写程序的时候,只要调用相应的方法就行了,感觉很方便。程序员把控制层东西交给Django自动完成了。 只需要编写非常少的代码完成很多的事情。所以,它比MVC框架考虑的问题要深一步,因为我们程序员大都在写控制层的程序。现在这个工作交给了框架,仅需写很少的调用代码,大大提高了工作效率。
from django.conf.urls import url
from django.contrib import admin
from yz import views as yz_views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^$',yz_views.index),
url(r'^login.html$',yz_views.login),
url(r'^index.html',yz_views.index),
url(r'^test.html$',yz_views.test),
url(r'^show_url.html$',yz_views.show_url),
url(r'^image.html$',yz_views.image),
]
只有目录还不行,必须有新建的项目下views的引导。
def index(request):
······
def test(request):
······
def show_url(request):
······
def image(request):
······
def login(request):
······
设计了登录页面,因为网站在局域网内可以被访问,提高网站的安全性。
点击其中一个用户的URL,可进入展示该用户访问所有URL的页面
点击其中一个用户的image,可进入展示该用户访问部分image的页面
目前只能从访问连接中识别是否是图片链接,下一步实现直接从数据包结构中分析出图片数据。