matlab %3ceps,简单的Web日志分析脚本

前言

长话短说,事情的起因是这样的,由于工作原因需要分析网站日志,服务器是windows,iis日志,在网上找了找,github找了找,居然没找到,看来只有自己动手丰衣足食。

那么分析方法我大致可分为三种:

1. 基于时间:将请求url按时间段分类,那么我们根据每个时间段的url数量及攻击数量就可以大致判断出哪个时间段有apt类型攻击,哪个时间段是扫描器行为;

2. 基于攻击ip:正常的攻击肯定会有请求被记录(当然你要是有0day当我没说,正常的探测总会有吧=。=!),然后每个ip去分析;

3. 基于访问请求的状态码,也大致可以判断出行为。

规则可以基于开源waf规则,分析扫描器写正则也可以,开源waf地址是

Sql语句里面有想把它做的功能全一些,但是学python学习时间也不是很长,写出来的代码也没有pythonic,会慢慢写的。目前分三个模块,一个日志归类模块命名为url.py,攻击分析模块attac.py, ip地理位置查询模块ipfind.py,还有一个主函数。

日志归类模块url.py

import re

import os

import sys

from datetime import datetime

dt = datetime.now()

date = str(dt.date())

loglist = []   #iplist = []    #   ip统计urllist = []   #    url统计列表needlist = []   #需要统计的errorlist = []   #格式错误的列表ipdict,urldict = {},{}

rizhi = str(input('请输入要分析的日志文件名'))

def find_log():

print('>>>>>>>开始解析日志')

with open(rizhi,'r',encoding='UTF-8',errors='ignore') as f:

#loglist = f.readlines()for i in f.readlines():   #if i[0] != '#':

b = re.split(' ',i)

iplist.append(b[10])

urllist.append(b[6])

try:

needlist.append([b[10],b[1],b[5],b[6],b[15]])

except:

errorlist.append(i)

print('>>>>>>>日志解析完毕')

def count(iplist,urllist):    #统计ip url访问量函数print('>>>>>>>开始分析url与ip访问量')

global ipdict,urldict

for i in set(iplist):

ipdict[i] = iplist.count(i)

for i in set(urllist):

urldict[i] = urllist.count(i)

ipdict = sorted(ipdict.items(),key=lambda d: d[1], reverse=True)

urldict = sorted(urldict.items(),key=lambda d: d[1], reverse=True)

print(type(urldict))

iplist = list(ipdict)

urllist = list(urldict)

ipdict,urldict = {},{}

print('>>>>>url与ip分析完毕.......')

return [iplist,urllist]

def save_count():

print('>>>>>>>正在保存分析结果')

ipname = 'ip-'+date+'.txt'

urlname = 'url-'+date+'.txt'

with open(ipname,'w')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值