首页 > 编程语言 >Python调用Graylog APi 分析401错误登录日志

Python调用Graylog APi 分析401错误登录日志

时间:2024-04-30 16:12:42浏览次数:13  
标签:195.131 Python ip 192.168 uname Graylog APi res 202.139

ret_lst处理完成后是一个list,内容如下:

[{'c_ip': '10.10.202.139', 'uname': 'ee'}, {'c_ip': '10.10.202.139', 'uname': 'tt'}, {'c_ip': '192.168.195.131', 'uname': 'ee'}, {'c_ip': '192.168.195.131', 'uname': 'aa'}, {'c_ip': '192.168.195.131', 'uname': 'bb'}, {'c_ip': '10.10.202.139', 'uname': 'liuyana'}, {'c_ip': '192.168.195.131', 'uname': 'bb'}, {'c_ip': '192.168.195.131', 'uname': 'eee'}, {'c_ip': '192.168.195.131', 'uname': 'bb'}, {'c_ip': '192.168.195.131', 'uname': 'cc'}, {'c_ip': '192.168.195.131', 'uname': 'ee'}, {'c_ip': '192.168.195.131', 'uname': 'ee'}, {'c_ip': '10.10.202.139', 'uname': 'tt'}, {'c_ip': '192.168.195.131', 'uname': 'aa'}, {'c_ip': '192.168.195.131', 'uname': 'eee'}, {'c_ip': '192.168.195.131', 'uname': 'aa'}, {'c_ip': '10.10.202.139', 'uname': 'lb'}, {'c_ip': '192.168.195.131', 'uname': 'ee'}, {'c_ip': '10.10.202.139', 'uname': 'lc'}, {'c_ip': '10.10.202.139', 'uname': 'la'}, {'c_ip': '10.10.202.139', 'uname': 'l'}, {'c_ip': '10.10.202.139', 'uname': 'la'}]

 

pip3 install grapi

import copy
from operator import itemgetter #itemgetter用来去dict中的key,省去了使用lambda函数
from itertools import groupby #itertool还包含有其他很多函数,比如将多个list联合起来。。
from grapi.grapi import Grapi


token = 'tokenstring'  
url = 'http://10.1.21.7:9000/api/search/universal/keyword'

my_params = {
  'filter':'streams:662f338c147dc13b477e9beb',
  "query": 'cs_status:401 AND (NOT uname:"-")', # Required
  "fields": 'c_ip,uname', # Required
  # "from": "<YYYY-MM-DD HH-MM-SS>", # Required
  # "to": "<YYYY-MM-DD HH-MM-SS>", # Required
  "keyword":"last 1 hours",
  "limit": 150 # Optional: Default limit is 150 in Graylog
}

my_api = Grapi(url, token)
response = my_api.send("get", **my_params)

if response.status_code == 200:
    res_lst = []
    res_line = {}
    for line in response.iter_lines():
        res_line0 = {}
        line_s = line.decode('utf8').replace('"','').split(',')
        res_line0['c_ip']  = line_s[1]
        res_line0['uname'] = line_s[2]
        res_lst.append(res_line0)


    res_lst = res_lst[1:] #第一行为字典名称,删除
    print(res_lst)
    #先按客户端IP进行分组,然后再统计每个IP破解的账户名称
    ip_times_attacked = 0  #定义单个IP发生401的最少错误次数,超过该次数才会告警
    uname_count_attacked = 0 #定义单个IP上尝试登录失败的最少账号数量,超过该数量才会告警

    for key,group_cip in groupby(sorted(res_lst,key=itemgetter('c_ip')),itemgetter('c_ip')):
        lgroup_cip = list(group_cip)
        if len(lgroup_cip) > ip_times_attacked:
            group_uname = groupby(sorted(lgroup_cip,key=itemgetter('uname')),itemgetter('uname'))
            lsgroup_uname2 = list(copy.deepcopy(group_uname))
            print(f'客户端IP:{key} ,尝试登录失败的账户数量为: {len(lsgroup_uname2)}')

            if len(lsgroup_uname2) > uname_count_attacked:
                for key1,group_uname1 in group_uname:
                    lguname1 = list(group_uname1)
                    print(f'客户端IP:{key} ,账户 {key1} 尝试登录失败次数为: {len(lguname1)}')


else:
    print(response.status_code,response.reason)    

 

标签:195.131,Python,ip,192.168,uname,Graylog,APi,res,202.139
From: https://www.cnblogs.com/dreamer-fish/p/18168208

相关文章

  • Web Audio API 第6章 高级主题
    高级主题这一章涵盖了非常重要的主题,但比本书的其他部分稍微复杂一些。我们会深入对声音添加音效,完全不通过任何音频缓冲来计算合成音效,模拟不同声音环境的效果,还有关于空3D空间音频。重要理论:双二阶滤波器一个滤波可以增强或减弱声音频谱的某些部分。直观地,在频域上它可......
  • Python: unZip
     importosimportsocketimportstructfromunidecodeimportunidecodeimportreimportjsonimportrequestsfrombs4importBeautifulSoupimportgzipimportzipfilefrompathlibimportPathfromzipfileimportZipFileclassCzip:"""......
  • Barcode Detection API
    BarcodeDetectionAPI:用于检测图像中的条形码和二维码//创建新检测器constbarcodeDetector=newBarcodeDetector({formats:["qr_code"],});//检查支持的类型BarcodeDetector?.getSupportedFormats().then((supportedFormats)=>{supportedFormats.forEach(......
  • python
                                搜索复制......
  • pip debug —— 查看当前版本的python解释器支持的wheel包类型
    在pip安装依赖时,我们可能会遇到依赖包无法下载成功的情况解决办法:去寻找对应版本的wheel包下载到本地搜寻wheel包网址:以python-ladp为例格式示例:python_ldap-2.5.1-cp27-cp27m-win32.whl2.5.1代表版本号cp27代表支持python27版本win32代表支持系统位数可以通过pipdeb......
  • simpread-课程 21:API 项目重构
    项目结构重构1.1Electric.DbMigrator存在的问题我们先来看下,后台API项目的目录结构。其中Electric.DbMigrator,这个项目作用是用来做数据库迁移的,但是同时也会被其他项目引用,还有这个项目类型还是WebAPI类型的。所以存在以下的几个问题:1、项目功能重合:数据库迁移和数......
  • 关于JSON转字符串后前端与python得到的结果不一致的问题,及对象按key排序
    背景:哈希码参数校验防参数篡改。前端下发接口时对参数按约定秘钥和逻辑进行加密,后端在获取到请求后对请求参数以同样的秘钥和逻辑加密计算得出哈希值,再与请求的哈希值对比,如果不一致则证明参数被篡改。前端代码:对json对象进行了按key排序1letdataTmp=this.de......
  • URL Pattern API
    URLPatternAPI创建URL模式匹配器。这些模式能够与完整的URL或URL的各个组成部分进行匹配模式语法基于path-to-regexp库。模式可包含:将被精确匹配的文字字符串。匹配任何字符的通配符(/posts/*)。命名组(/books/:id),提取匹配URL的一部分。非捕获组(/books{......
  • Popover API
    PopoverAPI:内置的弹框能力popover具有auto状态的弹窗可以通过在弹窗之外的区域进行选择,以达到“轻触关闭”的目的,并且通常一次仅允许屏幕上显示一个弹窗manual弹窗必须始终明确隐藏,但可以用于菜单中嵌套弹窗等使用情况。<buttontype="button"popovertarget="popov......
  • Chromium 提示:缺少 Google API 密钥,因此 Chromium 的部分功能将无法使用
    打开下载好的 chrome.exe,提示缺少GoogleAPI密钥,因此Chromium的部分功能将无法使用。1.将chrome.exe发送到桌面,右键--属性--目标加入参数"--test-type=webdriver"。 2.设置环境变量,屏蔽提示打开windows的cmd命令提示符,依次输入以下命令:setxGOOGLE_API_KEY"n......