跳转到主要内容

一个简单的Python包,用于查询JSON数据。

项目描述

pyjq

一个简单的Python包,用于查询JSON数据。

功能

  • 支持纯JSON文件
  • 支持文件中的多个JSON对象,由换行符(/n)分隔
  • 支持gzip文件
  • 支持可自定义的过滤器
  • 支持纯日期时间范围过滤器

待办事项

过滤器可以很容易地扩展,采用Python3 stdlib运算符。请参阅pyjq.PyJQ.filter以扩展操作映射。

安装

pip install pyjq-ng

示例数据

请参阅example/alerts.json。pyjq按行操作(由\n分割)。它已用于Wazuh警报JSON文件和Django转储。

pyjq -j examples/django_dump.json -limit 2 -filter 'fields__original_url == https://google.com'
pyjq -j examples/django_dump.json -limit 2 -filter 'model == urlshortener.urlshortener'

用法

'agent__name'是pyjq用于访问嵌套子元素的命名空间的示例。换句话说,它意味着json['agent']['name']。它对嵌套元素的数目没有限制。

在Wazuh警报文件上应用一些自定义过滤器,使用AND和OR运算符

pyjq -j ../Scaricati/alerts.json -filter 'agent__ip == 172.16.16.102 and agent__name == telegram-gw or agent__ip == 172.16.16.108'

包含运算符

pyjq -j ../Scaricati/alerts.json -filter 'rule__description in iptables and agent__name == dev-bastion'

将指定字段转换为纯日期时间对象并在指定范围内进行过滤

pyjq -j ../Scaricati/alerts.json -start_datetime 2020-04-06T10:22:00 -end_datetime 2020-04-06T13:22:00 -datetime_field timestamp

实时读取,它将仅获取最后的条目,由换行符\n分隔

pyjq -j /var/ossec/logs/alerts/alerts.json -datetime_field timestamp -realtime

直接使用gzip JSON文件

pyjq -j ../Scaricati/alerts.json.gzip

限制结果为2

pyjq -j ../Scaricati/alerts.json  -limit 2

对特定实体进行实时监控

pyjq -j /var/ossec/logs/alerts/alerts.json -realtime -filter 'agent__name == tinyurl and rule__level == 3'

自定义回调,对于机器人集成和其他pub/sub API很有用

python3 pyjq -j examples/alerts.json -realtime -filter 'agent__name == tinyurl and rule__description in ssh' -callback 'examples.callback.things'

从stdin读取

cat examples/alerts.json | python3 ./pyjq -filter 'rule__level > 3'

# continous processing
tail -f  /tmp/alerts.json | python3 ./pyjq -filter 'location != osquery'

作者

Giuseppe De Marco giuseppe.demarco@unical.it

鸣谢

Wazuh SIEM小组 @GarrLab

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

pyjq-ng-0.8.0.tar.gz (5.2 kB 查看哈希值)

上传时间

构建分发

pyjq_ng-0.8.0-py3-none-any.whl (6.5 kB 查看哈希值)

上传时间 Python 3

支持