我的日志剖析之道:简略的Web日志剖析脚本

访客5年前关于黑客接单1233

长话短说,作业的原因是这样的,因为作业原因需求剖析网站日志,服务器是windows,iis日志,在网上找了找,github找了找,竟然没找到,看来只要自己着手锦衣玉食。
那么剖析办法我大致可分为三种:
1. 依据时刻:将恳求url按时刻段分类,那么咱们依据每个时刻段的url数量及进犯数量就能够大致判别出哪个时刻段有apt类型进犯,哪个时刻段是扫描器行为;
2. 依据进犯ip:正常的进犯必定会有恳求被记载(当然你要是有0day当我没说,正常的勘探总会有吧=。=!),然后每个ip去剖析;
3. 依据拜访恳求的状况码,也大致能够判别出行为。
规矩能够依据开源waf规矩,剖析扫描器写正则也能够,开源waf地址是
https://github.com/loveshell/ngx_lua_waf/tree/master/wafconf。
扫描器正则https://github.com/ *** arttang/w3a_SOCD的database里边有具体地址
https://github.com/ *** arttang/w3a_SOC/tree/master/db_sql。
Sql句子里边有想把它做的功用全一些,可是学python学习时刻也不是很长,写出来的代码也没有pythonic,会渐渐写的。现在分三个模块,一个日志归类模块命名为url.py,进犯剖析模块attac.py, ip地理位置查询模块ipfind.py,还有一个主函数。
日志归类模块url.py
import reimport osimport sysfrom 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') as f:
        for i in iplist:
            f.write(str(list(i))+'n')
    with open(urlname,'w') as f:
        for i in urllist:
            f.write(str(list(i))+'n')
    print('>>>>>>>剖析成果保存结束')
find_log()
[iplist,urllist] = count(iplist,urllist)
save_count()
iis日志和apache日志觉得都差不多,便是切开时分改一下就行了。

Iis日志大概是这样的,用pythonreadlines然后切开出来就好了。
这个url.py我加了个功用把ip拜访量及url拜访量排序输出出来所以有点慢,=.=没办法野路子哪里会什么算法。将地址,时刻,ip,状况码都扔进一个列表里就行了。

[1] [2] [3]  黑客接单网

相关文章

Web缓存操控战略详解

Cache-Control 办理Web缓存的最常用和最有用的办法之一是经过Cache-Control HTTP标头,由于此标头适用于Web页面的缓存,这意味着咱们页面上的一切内容都能够具有十分精细化的...

浅谈web安全之手艺检测sql注入以及取得信息

所谓SQL注入,便是经过把SQL指令刺进到Web表单递送或输入域名或页面恳求的查询字符串,终究到达诈骗服务器履行歹意的SQL指令。 查验是否可以注入 and 1=1 正常 and 1=2 犯错 h...

PHP中该怎样避免SQL注入?

问题描述: 假如用户输入的数据在未经处理的情况下刺进到一条SQL查询句子,那么运用将很可能遭受到SQL注入进犯,正如下面的比如: $unsafe_variable = $_POST['user_in...

PDO 避免SQL注入的原理

 当说到防止SQL注入的办法时,脑海中总是会想到运用PDO绑定参数的办法或许运用mysql_real_eascape_string()来处理(尽管陈旧的 mysql_XXX 这类的函数现已不主张运用)...

恣意用户暗码重置(三):用户混杂

在逻辑缝隙中,恣意用户暗码重置最为常见,或许出现在新用户注册页面,也或许是用户登录后重置暗码的页面,或许用户忘掉暗码时的暗码找回页面,其间,暗码找回功用是重灾区。我把日常浸透过程中遇到的事例作了缝隙成...

极客必知:iPhone备份番外篇-黑客接单平台

假如你长时刻混迹于暗码破解的第一线,那么就十分清楚破解相同内容的不同文件格局对破解的速度的影响是十分大的。例如,破解维护RAR文档暗码所需的时刻是破解具有相同内容的ZIP文档暗码的十倍,而破解保存在O...