更多导航首页资讯中心软件下载单机游戏手机应用源码下载驱动下载

资讯教程业界新闻 互联网 硬件数码 安全资讯 游戏资讯 游戏攻略 手机相关 软件报道

软件下载网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 手机软件 游戏娱乐

单机游戏动作射击 策略战略 角色扮演 体育竞技 冒险解密 模拟养成 棋牌益智 其它游戏

手机应用iPhoneSymbianWP7PPCJAVA

源码下载ASP源码 PHP源码 CGI源码 JSP源码 .Net源码 VC/C++ VB源码 C#源码

硬件驱动驱动下载硬件工具

您的位置:首页新闻编程开发网页制作Javascript

如何使用python分析access日志例子思路分享

来源:维维整理作者:维维时间:2016-10-26 14:29:02我要评论(0)

怎么样使用python分析access日志例子,最近在自学python,光看是不行的,还是要多实操的。这是一个写给自己的小工具。主要功能是,便利日志文件夹下的文件,根据设定的关键字查找是否有web攻击行为,有兴趣的朋友来详细了解一下吧吧。

前言

WAF上线以后,处理最多的是误报消除。

产生误报有多种原因,例如web应用源码编写的时候允许客户端提交过多的cookie;例如单个参数提交的数值太大。

将误报降低到了能够接受的范围以后,还要关注漏报。WAF不是神,任何WAF都可能被绕过。因此还需要定位漏过的攻击,明确漏报的原因,才能update WAF的策略。

要定位漏报,就必需要分析Web应用的访问日志了。一个站点,每天产生的access日志大约接近1GB,靠肉眼看显然是不现实的。这就需要用到python帮助自动分析了。

实现思路:

拿我司某Web系统举例吧:

apache开启了access日志记录

日志规则是每小时生成一个日志文件,以站点名称为文件名,以日期+时间为后缀。比如:special。XXXXXX。com。cn。2016101001

要分析这一些散碎的日志文件,思路如下:

1、根据用户命令行输入获取日志文件所在目录;

2、遍历目录下所有文件,合并到一个文件;

3、定义web攻击常见payload的字符串:

SQLi的:select、union、+–+;

Struts的:ognl、java

webshell常见的:base64、eval、excute

使用正则逐行匹配,把命中的日志复制到单独的文件。

实现代码,代码如下:

# -*-coding: utf-8 -*-
import os,re,sys
if len(sys.argv) != 2 :
  print 'Usage : python logaudit.py <path>'
  sys.exit()
logpath = sys.argv[1]
#获取输入参数的文件路径'
merge = re.compile(r'.*(\d[10])')
for root , dirs , files in os.walk(logpath):
  for line in files:
    #遍历日志文件夹,合并所有内容到一个文件
    pipei = merge.match(line)
    if pipei != None:
 tmppath = root + '\\' +line
 logread1 = open(tmppath,'r')
 logread = logread1.read()
 log2txt = open('.\\log.txt','a')
 log2txt.write(logread)
 log2txt.close()
 logread1.close()
    else:
 exit
log = open('.//log.txt','r')
logread = log.readlines()
auditString = re.compile(r'.*[^_][sS][eE][lL][eE][cC][tT][^.].*|.*[uU][nN][iI][Oo][nN].*|.*[bB][aA][sS][eE][^.].*|.*[oO][gG][nN][lL].*|.*[eE][vV][aA][lL][(].*|.*[eE][xX][cC][uU][tT][eE].*')
writelog = open('.//result.txt','a')
for lines in logread:
  auditResult = auditString.match(lines)
  if auditResult != None:
    writelog.write(auditResult.group())
    writelog.write('\n')
  else:
    exit
writelog.close()
log.close()

以上就是维维源码网为大家带来的关于如何使用python分析access日志例子代码分享,希望能对你有用。

[访问统计:]
上一篇:炉石传说新版本主题食人魔大战地精真的吗 新版本食人魔大战地精曝光
下一篇:php抛出异常及捕捉特定类型异常解决办法

相关推荐

  • 该分类还没有添加任何内容!

相关软件

文章评论
发表评论