您的位置 » 首页 » 编程开发 » python学习:web服务器日志分析简单脚本

python学习:web服务器日志分析简单脚本

发表于4年前 | 作者: seay | 分类: 编程开发 | 孵化于:2013年03月08日 | 文章热度:8,444 次 全屏阅读

显示不全请点击全屏阅读

由于N种原因,一个分析入侵日志的任务落在了我身上,1G的日志,怎么去快速分析呢??刺总说可以搞个脚本解析入库,再到数据库分析。。。算了,那就蛋疼了,直接码个脚本把有问题的日志拿出来分析吧。于是就有了这个小脚本。至于怎么用就要看你自己了,哈哈,比如查到sql注入语句,然后看到IP,就可以改下脚本,用IP为特征取出日志,分析入侵过程。速度很快哦,我那破机器,跑1G日志文件也就几秒钟的啦。

在工作中写程序完成任务是很快乐的事,也很有意思。哈哈

 

使用参数:seay.py E:/1.log 

 

Code:

#coding = utf8
#Filename = seay.py
import os
import sys

#特征,可以随意改,两块五一次
_tezheng = {'union','select','file_put_contents'}

def CheckFile(_path):
    
    _f = open(_path,"r")
    _All_Line = _f.readlines() 
    _f.close()
    
    _Count_Line =0
    _Len_Line = len(_All_Line)
        
    _Ex_Str = ''

    print('Read Over --')
    
    while _Count_Line<_Len_Line:
            _Str = _All_Line[_Count_Line]            
            for _tz_Str in _tezheng:
                if _tz_Str in _Str: #可以加and条件,这个贵一点,5毛一次
                    _Ex_Str+=_tz_Str+_Str+'\r\n'
            _Count_Line+=1
    
    _f1 = open(_path+'.seay.txt',"w")
    _f1.write(_Ex_Str)
    _f1.close()    
    print 'Find Over--'    

if len(sys.argv)==2:
    _File = sys.argv[1]
    if os.path.lexists(_File):
        CheckFile(_File)
    else:
        print('File does not exist!')
else:
    print 'Parameter error'
    print sys.argv[0]+' FilePath'

 

 最终生成一个文件为:原文件名.seay.txt在同目录下,格式为匹配的特征+日志,效果为

 

 

Tags:

python资料,

如果您喜欢我的博客,欢迎点击图片定订阅到邮箱填写您的邮件地址,订阅我们的精彩内容: 也可以点击链接【订阅到鲜果】

如果我的想法或工具帮助到了你,也可微信扫下方二维码打赏本人一杯咖啡


来自 Seay互联网安全博客
本文地址:http://www.cnseay.com/2376/
文章版权说明请看置顶文章,尊重作者,转载请以链接形式标明原文地址

马上分享给你的朋友吧~

已经有11个筒子的人留下了脚印...

  • test23 说:
    1楼
    2013 年 3 月 8 日 下午 5:32 回复

    😉 转行做程序猿吧

    • 【管理员】seay 说:
      2013 年 3 月 8 日 下午 5:41 回复

      :smile: 更苦逼

  • ay暗影 说:
    2楼
    2013 年 3 月 8 日 下午 9:39 回复

    怎么说你好呢,你写变量干嘛要下划线开头呢???这样可读性很差哎,我看着就眼花。。。。非常不爽。总感觉是保留关键字

    • 【管理员】seay 说:
      2013 年 3 月 8 日 下午 9:58 回复

      :smile: 你个二逼,下划线看起来更专业,变量统一,调用的时候方便,第二个python一行一行的读俺没玩过,哈哈,C#倒是可以 :smile:

      • 【管理员】seay 说:
        2013 年 3 月 9 日 上午 10:47 回复

        readlines() 以前玩过 :smile:

      • ay暗影 说:
        2013 年 3 月 10 日 下午 8:58 回复

        你才2b了,我还是第一次听说下划线体现专业,你这叫画虎不成反类犬,哥给你找了一篇文章,你自己看下
        http://www.cnblogs.com/zhulin/archive/2011/12/27/2303398.html

        • 【管理员】seay 说:
          2013 年 3 月 11 日 上午 8:22 回复

          😥 欺负我,以后我写函数这么写func_getshell(),加个func_区分函数。。。变量就var_ayhacker :smile:

  • ay暗影 说:
    3楼
    2013 年 3 月 8 日 下午 9:46 回复

    还有,你一次性把整个文件加载到内存中,可能1-2个g还好,如果再大点,系统会很卡的。。。你就不会一行一行的读取在匹配么??

    • 新一 说:
      2013 年 3 月 9 日 上午 9:50 回复

      同意这个说法,php的做法是做分页读取! 😉

  • M7290 说:
    4楼
    2013 年 3 月 10 日 上午 1:53 回复

    😉

  • hello 说:
    5楼
    2013 年 11 月 20 日 上午 3:27 回复

    这个和grep啥区别?

发表评论

你的大名(必填)

你的邮箱(必填)

评论内容(必填)