标签归档:Python

Arrow-更好的Python日期和时间

Arrow:Python更好的日期和时间

Arrow是一个Python库,它为创建、操作、格式化和转换日期、时间和时间戳提供了一种明智且人性化的方法。它实现并更新了DateTime类型,填补了功能上的空白,并提供了支持许多常见创建场景的智能模块API。简单地说,它帮助您使用更少的导入和更少的代码来处理日期和时间

Arrow以arrow of time在很大程度上受到了moment.jsrequests

为什么要使用Arrow而不是内置模块?

Python的标准库和其他一些低级模块具有近乎完整的日期、时间和时区功能,但从可用性的角度来看,它们工作得不是很好:

  • 模块太多:DateTime、Time、Calendar、Dateutil、pytz等等
  • 类型太多:Date、Time、DateTime、tzinfo、Time Delta、Relativedelta等
  • 时区和时间戳转换既冗长又令人不快
  • 时区天真是常态
  • 功能差距:ISO 8601解析、时间跨度、人性化

功能

  • DateTime的完全实现的插入式替代
  • 支持Python 3.6+
  • 默认情况下支持时区和UTC
  • 针对许多常见输入方案的超简单创建选项
  • shift支持相对偏移量(包括周)的方法
  • 自动格式化和解析字符串
  • 广泛支持ISO 8601标准
  • 时区转换
  • 支持dateutilpytz,以及ZoneInfotzinfo对象
  • 为从微秒到一年的时间范围生成时间跨度、范围、下限和上限
  • 通过不断增加的区域设置列表,使日期和时间人性化
  • 可扩展到您自己的Arrow派生类型
  • 完全支持PEP 484样式的类型提示

快速入门

安装

要安装Arrow,请使用pippipenv

$ pip install -U arrow

用法示例

>>> import arrow
>>> arrow.get('2013-05-11T21:23:58.970460+07:00')
<Arrow [2013-05-11T21:23:58.970460+07:00]>

>>> utc = arrow.utcnow()
>>> utc
<Arrow [2013-05-11T21:23:58.970460+00:00]>

>>> utc = utc.shift(hours=-1)
>>> utc
<Arrow [2013-05-11T20:23:58.970460+00:00]>

>>> local = utc.to('US/Pacific')
>>> local
<Arrow [2013-05-11T13:23:58.970460-07:00]>

>>> local.timestamp()
1368303838.970460

>>> local.format()
'2013-05-11 13:23:58 -07:00'

>>> local.format('YYYY-MM-DD HH:mm:ss ZZ')
'2013-05-11 13:23:58 -07:00'

>>> local.humanize()
'an hour ago'

>>> local.humanize(locale='ko-kr')
'한시간 전'

文档

有关完整文档,请访问arrow.readthedocs.io

贡献

代码和本地化(添加和更新区域设置)都欢迎贡献。首先熟悉Arrow库及其功能。然后,开始投身于贡献吧:

  1. 在撞击上查找问题或功能issue tracker标记为“good first issue” label可能是一个很好的起点!
  2. 叉子this repository在GitHub上,并开始在分支机构中进行更改
  3. 添加一些测试以确保错误已修复或功能按预期工作
  4. 通过运行以下命令之一运行整个测试套件和linting检查:tox && tox -e lint,docs(如果您有tox已安装)make build39 && make test && make lint(如果未安装Python 3.9,请替换build39在您的系统上安装最新的Python版本)
  5. 提交拉取请求并等待反馈😃

如果你在路上有什么问题,尽管问。here

支撑箭头

Open Collective是一个在线融资平台,提供工具来筹集资金,并在完全透明的情况下分享您的财务。它是个人和公司直接向该项目进行一次性或经常性捐款的首选平台。如果您有兴趣捐款,请浏览Arrow collective

Borg-使用压缩和身份验证加密对服务器执行数据消除

更多截屏视频:installationadvanced usage

什么是BorgBackup?

BorgBackup(简称:Borg)是一个重复数据消除备份程序。或者,它支持压缩和经过身份验证的加密

Borg的主要目标是提供一种高效、安全的数据备份方式。由于只存储更改,因此使用的重复数据消除技术使Borg适用于日常备份。经过身份验证的加密技术使其适用于备份到不完全受信任的目标

请参阅installation manual或者,如果您已经下载了Borg,docs/installation.rst开始学习博格。还有一个offline documentation可用,有多种格式

主要特点

节省空间的存储
基于内容定义的区块的重复数据消除用于减少存储的字节数:每个文件被拆分成多个可变长度的区块,并且只有以前从未见过的区块才会添加到存储库中

如果一个块的id_hash值相同,则认为它是重复的。密码强散列或MAC函数用作id_hash,例如(HMAC-)sha256

要执行重复数据消除,将考虑同一存储库中的所有区块,无论它们来自不同的计算机、来自以前的备份、来自相同的备份,甚至来自相同的单个文件

与其他重复数据消除方法相比,此方法不依赖于:

  • 文件/目录名称保持不变:因此,即使在共享回收站的计算机之间,您也可以在不影响重复数据删除的情况下四处移动数据
  • 完整的文件或时间戳保持不变:如果大文件稍有更改,则只需存储几个新的区块-这对虚拟机或原始磁盘非常有用
  • 数据块在文件内的绝对位置:填充可能会发生移位,但重复数据消除算法仍会找到该位置
速度
  • 性能关键型代码(分块、压缩、加密)是用C/Cython实现的
  • 文件/块索引数据的本地缓存
  • 快速检测未修改的文件
数据加密
所有数据均可使用256位AES加密进行保护,数据完整性和真实性使用HMAC-SHA256进行验证。数据是加密的客户端
模糊处理
可选地,Borg可以主动地模糊例如文件/块的大小,以使指纹攻击更加困难
压缩
可以选择压缩所有数据:
  • LZ4(超高速、低压缩)
  • zstd(从高速低压缩到高压缩低速的大范围)
  • zlib(中速和压缩)
  • LZMA(低速、高压缩)
异地备份
Borg可以将数据存储在可通过SSH访问的任何远程主机上。如果在远程主机上安装了Borg,与使用网络文件系统(sshfs、nfs、.)相比,可以获得很大的性能提升。
可装载为文件系统的备份
备份归档可作为用户空间文件系统挂载,以便轻松进行交互式备份检查和恢复(例如,使用常规文件管理器)
在多个平台上轻松安装
我们提供不需要安装任何内容的单文件二进制文件-您只需在以下平台上运行它们:
  • Linux操作系统
  • Mac OS X
  • FreeBSD
  • OpenBSD和NetBSD(尚不支持xattrs/ACL或二进制文件)
  • Cygwin(试验性的,目前还没有二进制文件)
  • Windows 10的Linux子系统(实验性)
自由开放源码软件
  • 安全性和功能可以独立审核
  • 在BSD(3条款)许可下获得许可,请参阅License获取完整的许可证

易于使用

初始化新的备份存储库(请参见borg init --help对于加密选项):

$ borg init -e repokey /path/to/repo

创建备份存档:

$ borg create /path/to/repo::Saturday1 ~/Documents

现在再做一次备份,只是为了炫耀一下伟大的重复数据消除功能:

$ borg create -v --stats /path/to/repo::Saturday2 ~/Documents
-----------------------------------------------------------------------------
Archive name: Saturday2
Archive fingerprint: 622b7c53c...
Time (start): Sat, 2016-02-27 14:48:13
Time (end):   Sat, 2016-02-27 14:48:14
Duration: 0.88 seconds
Number of files: 163
-----------------------------------------------------------------------------
               Original size      Compressed size    Deduplicated size
This archive:        6.85 MB              6.85 MB             30.79 kB  <-- !
All archives:       13.69 MB             13.71 MB              6.88 MB

               Unique chunks         Total chunks
Chunk index:             167                  330
-----------------------------------------------------------------------------

有关图形前端,请参阅我们的补充项目BorgWeb

帮助,捐款,施舍,成为赞助人

我们随时欢迎您的帮助!

传播信息、提供反馈、帮助编写文档、测试或开发

你也可以给这个项目提供资金支持,详情请看那里:

https://www.borgbackup.org/support/fund.html

链接

兼容性说明

预计当主要版本号更改时(如从0.x.y到1.0.0或从1.x.y到2.0.0),我们会反复破坏兼容性

未发布的开发版本具有未知的兼容性属性

这是正在开发的软件,您自己决定它是否适合您的需求

安全问题应报告给Security contact(或参阅docs/support.rst在源代码分发中)

Urh-通用无线电黑客:像老板一样调查无线协议

通用无线电黑客(URH)是一套完整的无线协议研究套件,具有本机支持many常见软件定义的无线电URH允许易于解调的信号组合在一起automatic调制参数的检测使得识别飞翔空中传输的比特和字节变得轻而易举。因为数据通常会已编码在传输之前,URH提供可定制的解码甚至可以破解像CC1101数据白化这样的复杂编码。当涉及到协议逆向工程,URH在两个方面都有帮助。您可以手动分配协议字段和消息类型,也可以让URH自动推断协议字段使用一个rule-based intelligence最后,市建局需要一个模糊组件针对无状态协议和仿真环境用于状态攻击

快速入门

为了开始工作,

如果您喜欢URH,请⭐此存储库和join our Slack channel感谢您的支持!

引用URH

我们鼓励与URH合作的研究人员引用thisWOOT‘18纸或直接使用下面的BibTeX条目

URH BibTeX条目用于您的研究论文
@inproceedings {220562,
author = {Johannes Pohl and Andreas Noack},
title = {Universal Radio Hacker: A Suite for Analyzing and Attacking Stateful Wireless Protocols},
booktitle = {12th {USENIX} Workshop on Offensive Technologies ({WOOT} 18)},
year = {2018},
address = {Baltimore, MD},
url = {https://www.usenix.org/conference/woot18/presentation/pohl},
publisher = {{USENIX} Association},
}

安装

URH可以在Windows、Linux和MacOS上运行。单击下面的操作系统查看安装说明

窗口

在Windows上,URH可以通过其Installer不需要进一步的依赖关系

如果您收到关于丢失的错误api-ms-win-crt-runtime-l1-1-0.dll、运行Windows Update或直接安装KB2999226

Linux操作系统
使用pip进行常规安装(推荐)

有关URH的信息,请访问PyPi因此,您可以使用以下命令进行安装

# IMPORTANT: Make sure your pip is up to date
sudo python3 -m pip install --upgrade pip  # Update your pip installation
sudo python3 -m pip install urh            # Install URH

这是在Linux上安装URH的推荐方式,因为它附带所有本地扩展预编译

要以非root用户身份访问您的SDR,请安装相应的UDEV规则你可以找到他们in the wiki

通过软件包管理器安装

URH包含在许多Linux发行版的存储库中,例如Arch Linux根图(Gentoo)软呢帽OpenSUSENixOS还有一个套餐是FreeBSD如果可用,只需使用包管理器安装URH

注意事项:要获得本机支持,您必须安装相应的-dev您的SDR包,例如hackrf-dev在此之前安装URH

捕捉

URH以快照形式提供:https://snapcraft.io/urh

Docker镜像

市建局的官方对接图片现已推出。here它包含所有本机后端,并且随时可以运行

MacOS
使用DMG

建议使用至少MacOS 10.14使用可用的DMG时here

带管道
  1. 安装Python 3 for Mac OS X如果您遇到预安装的Python问题,请确保使用给定链接更新到最新版本
  2. (可选)安装所需的本地库,例如brew install librtlsdr以获得相应的本机设备支持
  3. 在终端中,键入:pip3 install urh
  4. 类型urh在终端中启动它
更新您的安装

如果您通过pip安装了urh,则可以使用python3 -m pip install --upgrade urh

从源运行
不安装的情况下

要在不安装的情况下执行Universal Radio Hacker,只需运行:

git clone https://github.com/jopohl/urh/
cd urh/src/urh
./main.py

请注意,在首次使用之前,将构建C++扩展

从源安装

要从源安装URH,您需要具备python-setuptools已安装。你可以用以下方式买到它们python3 -m pip install setuptools安装setuptools后,执行:

git clone https://github.com/jopohl/urh/
cd urh
python setup.py install

并通过键入以下命令启动应用程序urh在终端中

物品

用URH破解东西

关于URH的一般演示文稿和教程

外部解码

看见wiki查看我们社区提供的外部解码列表!谢谢你这么说!

屏幕截图

从原始信号中获取数据

即使是复杂的协议也要保持概述

记录和发送信号

PySyft-用于使用看不到的数据回答问题的库

用于对数据进行计算的库
你不是自己的,也看不到


PySyft是一个Python库,用于安全和私有的深度学习

PySyft将私有数据与模型训练解耦,使用Federated LearningDifferential Privacy和加密计算(如Multi-Party Computation (MPC)Homomorphic Encryption (HE))在主要的深度学习框架(如PyTorch和TensorFlow)中。加入到这场运动中来吧Slack


大多数软件库允许您计算您拥有的信息,并查看您控制的机器的内部情况。但是,这意味着在没有首先获得(至少是部分)信息所有权的情况下,您不能对该信息进行计算。这还意味着,如果不先获得对机器的控制,您就不能使用这些机器进行计算。这对人类协作非常有限,并且系统地推动了数据的集中化,因为如果不先将数据全部放在一个(中心)位置,您就无法处理大量数据

Syft生态系统试图改变这一系统,允许您编写软件,在您无法(完全)控制的计算机上计算您不拥有的信息。这不仅包括云中的服务器,还包括个人台式机、笔记本电脑、手机、网站和边缘设备。无论您的数据想要存放在您拥有的任何地方,Syft生态系统都可以帮助您将其保留在那里,同时允许将其私下用于计算

单声道回购🚝

此repo包含多个协同工作的项目,即PySyft和PyGrid。很快就会添加PyGrid,同时这是目录结构

OpenMined/PySyft
├── README.md   <-- You are here 📌
└── packages
    ├── grid    <-- The Grid droids from OpenMined/PyGrid
    └── syft    <-- The Syft droids you are looking for 👋🏽

注意事项更改整个文件夹结构可能会导致一些小问题。如果您发现了一个,请通知我们或打开公关

PySyft

PySyft是Syft生态系统的核心。它有两个主要目的。您可以使用PySyft执行两种类型的计算:

  1. 动态:直接计算您看不到的数据
  2. 静电:创建静电计算图,以后可以在不同的计算上部署/扩展

这个PyGrid library用作大规模管理和部署PySyft的API。它还允许您使用以下Syft工作器库扩展PySyft,以便在Web、移动和边缘设备上进行联合学习:

  • KotlinSyft(Android)
  • SwiftSyft(IOS)
  • syft.js(JavaScript)
  • PySyft(Python,您可以将PySyft本身用作这些“FL Worker库”之一)

但是,Syft生态系统只关注跨这些语言的一致对象序列化/反序列化、核心抽象和算法设计/执行。仅靠这些库不能将您与现实世界中的数据连接起来。Syft生态系统由网格生态系统提供支持,网格生态系统重点关注运行真实系统以计算和处理数据(如数据合规性Web应用程序)的部署、可扩展性和其他其他问题

  • PySyft是定义对象、抽象和算法的库
  • PyGrid是让您可以在真正的机构中部署它们的平台
  • PyGrid Admin是允许数据所有者管理其PyGrid部署的UI

有关PySyft的更详细说明,请参阅white paper on Arxiv

YouTube上的视频也解释了PySyft:

安装前

PySyft在PyPI和CONDA上可用

我们建议您在如下所示的虚拟环境中安装PySyftConda,因为它易于使用。如果您使用的是Windows,我们建议您安装Anaconda and using the Anaconda
Prompt
要从命令行工作,请执行以下操作

$ conda create -n pysyft python=3.9
$ conda activate pysyft
$ conda install jupyter notebook

版本支持

我们支持Linux操作系统MacOS窗口以及以下Python和Torch版本。旧版本可能可以运行,但我们已停止测试和支持它们

PY/手电筒 1.6 1.7 1.8
3.7
3.8
3.9

安装

管道

$ pip install syft

这将根据需要自动安装PyTorch和其他依赖项,以运行示例和教程。有关从源代码构建的更多信息,请参阅贡献指南here

文档

马上就来!在此之前,请查看以下示例

示例

可以找到示例的综合列表here

这些教程涵盖了各种用于数据科学和机器学习的Python库

所有示例都可以通过启动Jupyter笔记本并导航到examples文件夹

$ jupyter notebook

二重唱

Duet是PySyft中的一个点对点工具,它为数据所有者提供了一个研究友好的API来私下公开他们的数据,而数据科学家可以通过零知识访问控制机制访问或操作所有者端的数据。它旨在降低研究和隐私保护机制之间的屏障,这样就可以在目前无法访问或严格控制的数据上取得科学进展。使用Duet的主要好处是允许您开始使用PySyft,而无需管理完整的PyGrid部署。这是使用Syft的最简单途径,无需安装任何东西(Syft除外😉)

您可以找到所有Duet examplesexamples/duet文件夹

贡献

投稿人指南可以在here它涵盖了现在开始向PySyft贡献代码所需了解的所有内容

此外,加入快速增长的超过12,000人的社区SlackSlake社区非常友好,能够快速回答有关PySyft使用和开发的问题!

免责声明

这个软件是测试版。使用风险自负

关于0.2.x的快速说明

PySyft 0.2.x代码库现在位于自己的分支中here,但OpenMines不会对此版本范围提供官方支持。我们已经编制了一份名单FAQs与此版本相关。_

支持

要获得使用此库的支持,请加入#支持#松弛的渠道。Click here to join our Slack community!

组织贡献

我们非常感谢以下组织对PySyft的贡献!

  • |

许可证

Apache License 2.0

Caprover 可扩展的PaaS(自动Docker+nginx)

CapRover

适用于NodeJS、Python、PHP、Ruby、Go应用程序的最简单的应用程序/数据库部署平台和Web服务器软件包

不需要码头工人,nginx知识!



这是什么?

CapRover是一款极其易于使用的应用程序/数据库部署和Web服务器管理器,适用于NodeJS、Python、PHP、ASP.NET、Ruby、MySQL、MongoDB、Postgres、WordPress(等等)申请!

它的速度非常快,而且非常健壮,因为它在其简单易用的界面背后使用了Docker、nginx、LetsEncrypt和NetData

✔用于自动化和脚本编写的CLI

✔便于访问和方便的Web GUI

✔不能锁定!删除CapRover,您的应用程序将继续工作!

✔引擎盖下的码头工人蜂拥而至,进行集装箱化和集群化

✔Nginx(完全可定制的模板)在引擎盖下,用于负载均衡

✔让我们在幕后加密以获得免费的SSL(HTTPS)

我是认真的!谁应该关心CapRover?

  • 不喜欢花费数小时和数天时间设置服务器、构建工具、向服务器发送代码、构建服务器、获取SSL证书、安装证书、反复更新nginx的[web]开发人员
  • 开发人员使用昂贵的服务,如Heroku、Microsoft Azure等,并希望将其成本降低到原来的1/4(Heroku对其1 GB实例每月收费25美元,而同一服务器在Valltr上的收费是5美元!)
  • 喜欢写更多关于showResults(getUserList())而且不是很多$ apt-get install libstdc++6 > /dev/null
  • 喜欢在服务器上安装MySQL、MongoDB等的开发人员,方法是从下拉菜单中选择并单击Install!
  • 设置CapRover服务器需要多少服务器/坞站/Linux知识?答:复制粘贴知识!!有关要复制和粘贴的内容的信息,请转到“入门”;-)

了解更多信息!

有关更多详细信息和文档,请访问https://CapRover.com/

贡献者

这个项目的存在要归功于所有做出贡献的人。[Contribute]

支持者

感谢我们所有的支持者!🙏

Js-beautify-javascript 格式化工具

JS 格式化

这个小美化器将重新格式化和重新缩进bookmarklet、丑陋的JavaScript、解压由Dean Edward的流行打包程序打包的脚本,以及对由NPM包处理的脚本进行部分去模糊处理javascript-obfuscator

我把这个放在最前面和中心,因为现有的业主目前在这个项目上的工作时间非常有限。这是一个很受欢迎并被广泛使用的项目,但它迫切需要有时间致力于修复面向客户的错误以及内部设计和实现的潜在问题的贡献者

如果您有兴趣,请看一下CONTRIBUTING.md然后修复标有“Good first issue”贴上标签并提交请购单。尽可能多地重复。谢谢!

安装

您可以安装node.js或python的美化器

Node.js JavaScript

您可以安装npm包。js-beautify全局安装时,它提供一个可执行文件js-beautify剧本。与Python脚本一样,美化结果被发送到stdout除非另有配置,否则

$ npm -g install js-beautify
$ js-beautify foo.js

您还可以使用js-beautify作为一个node库(本地安装,npm默认值):

$ npm install js-beautify

Node.js JavaScript(VNext)

以上安装了最新的稳定版本。要安装测试版或RC版,请执行以下操作:

$ npm install js-beautify@next

Web库

美容师可以作为Web库添加到您的页面上

JS美颜托管在两个CDN服务上:cdnjs和生菜

要从这些服务之一提取最新版本,请在您的文档中包含以下一组脚本标记:

“>
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.14.0/beautify.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.14.0/beautify-css.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.14.0/beautify-html.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.14.0/beautify.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.14.0/beautify-css.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.14.0/beautify-html.min.js"></script>

<script src="https://cdn.rawgit.com/beautify-web/js-beautify/v1.14.0/js/lib/beautify.js"></script>
<script src="https://cdn.rawgit.com/beautify-web/js-beautify/v1.14.0/js/lib/beautify-css.js"></script>
<script src="https://cdn.rawgit.com/beautify-web/js-beautify/v1.14.0/js/lib/beautify-html.js"></script>

通过更改版本号可以使用较旧的版本

免责声明:这些都是免费服务,所以有no uptime or support guarantees

python

要安装Python版本的美容器,请执行以下操作:

$ pip install jsbeautifier

与JavaScript版本不同,Python版本只能重新格式化JavaScript。它不适用于HTML或CSS文件,但您可以安装CSS-美化对于CSS:

$ pip install cssbeautifier

用法

您可以在Web浏览器中使用JS美化器美化javascript,也可以在命令行上使用node.js或python美化javascript

Web浏览器

打开beautifier.io选项通过UI提供

Web库

上面的脚本标记公开了三个函数:js_beautifycss_beautify,以及html_beautify

Node.js JavaScript

全局安装时,美容器提供一个可执行文件js-beautify剧本。美化结果发送到stdout除非另有配置,否则

$ js-beautify foo.js

要使用js-beautify作为一个node库(在本地安装之后),为javascript(Js)、CSS或HTML导入并调用适当的Beautifier方法。所有三个方法签名都是beautify(code, options)code是要美化的代码字符串。Options是一个具有您希望用来美化代码的设置的对象

配置选项名称与CLI名称相同,但使用下划线而不是破折号。例如,--indent-size 2 --space-in-empty-paren会是{ indent_size: 2, space_in_empty_paren: true }

var beautify = require('js-beautify').js,
    fs = require('fs');

fs.readFile('foo.js', 'utf8', function (err, data) {
    if (err) {
        throw err;
    }
    console.log(beautify(data, { indent_size: 2, space_in_empty_paren: true }));
});

python

安装后,要使用Python进行美化,请执行以下操作:

$ js-beautify file.js

美化的产出流向stdout默认情况下,

要使用jsbeautifier因为库很简单:

import jsbeautifier
res = jsbeautifier.beautify('your javascript string')
res = jsbeautifier.beautify_file('some_file.js')

或者,要指定一些选项,请执行以下操作:

opts = jsbeautifier.default_options()
opts.indent_size = 2
opts.space_in_empty_paren = True
res = jsbeautifier.beautify('some javascript', opts)

配置选项名称与CLI名称相同,但使用下划线而不是破折号。上面的示例将在命令行上设置为--indent-size 2 --space-in-empty-paren

选项

以下是Python和JS脚本的命令行标志:

CLI Options:
  -f, --file       Input file(s) (Pass '-' for stdin)
  -r, --replace    Write output in-place, replacing input
  -o, --outfile    Write output to file (default stdout)
  --config         Path to config file
  --type           [js|css|html] ["js"] Select beautifier type (NOTE: Does *not* filter files, only defines which beautifier type to run)
  -q, --quiet      Suppress logging to stdout
  -h, --help       Show this help
  -v, --version    Show the version

Beautifier Options:
  -s, --indent-size                 Indentation size [4]
  -c, --indent-char                 Indentation character [" "]
  -t, --indent-with-tabs            Indent with tabs, overrides -s and -c
  -e, --eol                         Character(s) to use as line terminators.
                                    [first newline in file, otherwise "\n]
  -n, --end-with-newline            End output with newline
  --editorconfig                    Use EditorConfig to set up the options
  -l, --indent-level                Initial indentation level [0]
  -p, --preserve-newlines           Preserve line-breaks (--no-preserve-newlines disables)
  -m, --max-preserve-newlines       Number of line-breaks to be preserved in one chunk [10]
  -P, --space-in-paren              Add padding spaces within paren, ie. f( a, b )
  -E, --space-in-empty-paren        Add a single space inside empty paren, ie. f( )
  -j, --jslint-happy                Enable jslint-stricter mode
  -a, --space-after-anon-function   Add a space before an anonymous function's parens, ie. function ()
  --space-after-named-function      Add a space before a named function's parens, i.e. function example ()
  -b, --brace-style                 [collapse|expand|end-expand|none][,preserve-inline] [collapse,preserve-inline]
  -u, --unindent-chained-methods    Don't indent chained method calls
  -B, --break-chained-methods       Break chained method calls across subsequent lines
  -k, --keep-array-indentation      Preserve array indentation
  -x, --unescape-strings            Decode printable characters encoded in xNN notation
  -w, --wrap-line-length            Wrap lines that exceed N characters [0]
  -X, --e4x                         Pass E4X xml literals through untouched
  --good-stuff                      Warm the cockles of Crockford's heart
  -C, --comma-first                 Put commas at the beginning of new line instead of end
  -O, --operator-position           Set operator position (before-newline|after-newline|preserve-newline) [before-newline]
  --indent-empty-lines              Keep indentation on empty lines
  --templating                      List of templating languages (auto,django,erb,handlebars,php,smarty) ["auto"] auto = none in JavaScript, all in html

它们对应于两个库接口的带下划线的选项键

每个CLI选项的默认值

{
    "indent_size": 4,
    "indent_char": " ",
    "indent_with_tabs": false,
    "editorconfig": false,
    "eol": "\n",
    "end_with_newline": false,
    "indent_level": 0,
    "preserve_newlines": true,
    "max_preserve_newlines": 10,
    "space_in_paren": false,
    "space_in_empty_paren": false,
    "jslint_happy": false,
    "space_after_anon_function": false,
    "space_after_named_function": false,
    "brace_style": "collapse",
    "unindent_chained_methods": false,
    "break_chained_methods": false,
    "keep_array_indentation": false,
    "unescape_strings": false,
    "wrap_line_length": 0,
    "e4x": false,
    "comma_first": false,
    "operator_position": "before-newline",
    "indent_empty_lines": false,
    "templating": ["auto"]
}

CLI中未显示的默认值

{
  "eval_code": false,
  "space_before_conditional": true
}

请注意,并非所有默认值都通过CLI显示。从历史上看,Python和JSAPI并不是100%相同的。还有一些其他情况使我们无法实现100%的API兼容性

从环境或.jsBeaufyrc加载设置(仅限JavaScript)

除了CLI参数之外,您还可以通过以下方式将配置传递给JS可执行文件:

  • 任何jsbeautify_-带前缀的环境变量
  • 一个JSON-由指示的格式化文件--config参数
  • 一个.jsbeautifyrc包含以下内容的文件JSON以上文件系统的任何级别的数据$PWD

此堆栈中前面提供的配置源将覆盖后面的配置源

设置继承和特定于语言的重写

这些设置是一个浅树,其值对于所有语言都是继承值,但可以被覆盖。这适用于在任一实现中直接传递给API的设置。在Javascript实现中,从配置文件(如.jsBeaufyrc)加载的设置也可以使用继承/覆盖

下面是一个示例配置树,显示了语言覆盖节点的所有支持位置。我们将使用indent_size要讨论此配置的行为方式,但可以继承或覆盖任意数量的设置,请执行以下操作:

{
    "indent_size": 4,
    "html": {
        "end_with_newline": true,
        "js": {
            "indent_size": 2
        },
        "css": {
            "indent_size": 2
        }
    },
    "css": {
        "indent_size": 1
    },
    "js": {
       "preserve-newlines": true
    }
}

使用上述示例将产生以下结果:

  • HTML文件
    • 继承indent_size从顶层设置开始,共4个空间
    • 这些文件还将以换行符结尾
    • HTML中的JavaScript和CSS
      • 继承HTMLend_with_newline设置
      • 将它们的缩进覆盖为2个空格
  • CSS文件
    • 将顶级设置重写为indent_size共1个空间
  • JavaScript文件
    • 继承indent_size从顶层设置开始,共4个空间
    • 设置preserve-newlinestrue

CSS和HTML

除了js-beautify可执行文件,css-beautifyhtml-beautify还提供了进入这些脚本的简单界面。或者,js-beautify --cssjs-beautify --html将分别完成相同的任务

// Programmatic access
var beautify_js = require('js-beautify'); // also available under "js" export
var beautify_css = require('js-beautify').css;
var beautify_html = require('js-beautify').html;

// All methods accept two arguments, the string to be beautified, and an options object.

CSS和HTML美化程序在范围上要简单得多,并且拥有的选项要少得多

CSS Beautifier Options:
  -s, --indent-size                  Indentation size [4]
  -c, --indent-char                  Indentation character [" "]
  -t, --indent-with-tabs             Indent with tabs, overrides -s and -c
  -e, --eol                          Character(s) to use as line terminators. (default newline - "\\n")
  -n, --end-with-newline             End output with newline
  -b, --brace-style                  [collapse|expand] ["collapse"]
  -L, --selector-separator-newline   Add a newline between multiple selectors
  -N, --newline-between-rules        Add a newline between CSS rules
  --indent-empty-lines               Keep indentation on empty lines

HTML Beautifier Options:
  -s, --indent-size                  Indentation size [4]
  -c, --indent-char                  Indentation character [" "]
  -t, --indent-with-tabs             Indent with tabs, overrides -s and -c
  -e, --eol                          Character(s) to use as line terminators. (default newline - "\\n")
  -n, --end-with-newline             End output with newline
  -p, --preserve-newlines            Preserve existing line-breaks (--no-preserve-newlines disables)
  -m, --max-preserve-newlines        Maximum number of line-breaks to be preserved in one chunk [10]
  -I, --indent-inner-html            Indent <head> and <body> sections. Default is false.
  -b, --brace-style                  [collapse-preserve-inline|collapse|expand|end-expand|none] ["collapse"]
  -S, --indent-scripts               [keep|separate|normal] ["normal"]
  -w, --wrap-line-length             Maximum characters per line (0 disables) [250]
  -A, --wrap-attributes              Wrap attributes to new lines [auto|force|force-aligned|force-expand-multiline|aligned-multiple|preserve|preserve-aligned] ["auto"]
  -i, --wrap-attributes-indent-size  Indent wrapped attributes to after N characters [indent-size] (ignored if wrap-attributes is "aligned")
  -d, --inline                       List of tags to be considered inline tags
  -U, --unformatted                  List of tags (defaults to inline) that should not be reformatted
  -T, --content_unformatted          List of tags (defaults to pre) whose content should not be reformatted
  -E, --extra_liners                 List of tags (defaults to [head,body,/html] that should have an extra newline before them.
  --editorconfig                     Use EditorConfig to set up the options
  --indent_scripts                   Sets indent level inside script tags ("normal", "keep", "separate")
  --unformatted_content_delimiter    Keep text content together between this string [""]
  --indent-empty-lines               Keep indentation on empty lines
  --templating                       List of templating languages (auto,none,django,erb,handlebars,php,smarty) ["auto"] auto = none in JavaScript, all in html

指令

指令允许您从源文件中控制美化器的行为。指令放在文件内部的注释中。指令的格式为/* beautify {name}:{value} */用CSS和JavaScript编写。在HTML中,它们的格式为<!-- beautify {name}:{value} -->

忽略指令

这个ignore指令使美化器完全忽略文件的一部分,将其视为不解析的文字文本。美化后以下输入保持不变:

// Use ignore when the content is not parsable in the current language, JavaScript in this case.var a =  1;/* beautify ignore:start */ {This is some strange{template language{using open-braces?/* beautify ignore:end */

保留指令

注意:此指令仅适用于HTML和JavaScript,不适用于CSS

这个preserve指令使美化器解析,然后保留一段代码的现有格式

美化后以下输入保持不变:

// Use preserve when the content is valid syntax in the current language, JavaScript in this case.
// This will parse the code and preserve the existing formatting.
/* beautify preserve:start */
{
    browserName: 'internet explorer',
    platform:    'Windows 7',
    version:     '8'
}
/* beautify preserve:end */

许可证

您可以自由地以任何您想要的方式使用它,以防您觉得它对您有用或有效,但您必须保留版权声明和许可证。(麻省理工学院)

学分

还要感谢杰森·戴蒙德、帕特里克·霍夫、诺姆·索松科、安德烈亚斯·施耐德、戴夫·瓦西列夫斯基、维塔利·巴特马诺夫、罗恩·鲍德温、加布里埃尔·哈里森、克里斯·J·舒尔、马蒂亚斯·拜恩斯、维托里奥·甘巴莱塔等人

(Readme.md:js-Beautify@1.14.0)

Ciphey-⚡在不知道密钥或密码的情况下自动解密加密、解码编码和破解散列⚡

使用自然语言处理和人工智能的全自动解密/解码/破解工具,以及一些常识

🤔这是什么?

输入加密文本,取回解密文本

“哪种类型的加密?”

这就是问题所在。你不知道,你只知道它可能是加密的。西菲会帮你想办法的

西菲可以在3秒或更短的时间内解决大部分问题。

Ciphey的目标是成为自动化大量解密和解码的工具,例如多基编码、经典密码、散列或更高级的密码术

如果您对密码学了解不多,或者您想在自己处理密文之前快速检查密文,Ciphey适合您

技术部分Ciphey使用定制的人工智能模块(自动搜索),并带有密码检测接口用来近似加密的东西。然后是定制的、可定制的自然语言处理语言检查器界面,它可以检测给定文本何时变为明文。

这里没有神经网络或臃肿的人工智能。我们只用最快最少的东西

而这只是冰山一角。有关完整的技术说明,请查看我们的documentation

✨功能

  • 支持50+加密/编码例如二进制、莫尔斯电码和Base64。经典密码,如凯撒密码、仿射密码和维吉内尔密码。以及现代加密,如重复密钥异或等。For the full list, click here
  • 带有增强搜索的定制人工智能(AuSearch),用于回答“使用了什么加密?”从而导致解密所需的时间不到3秒
  • 定制的自然语言处理模块Ciphey可以确定某些内容是否是明文。无论明文是JSON、CTF标志还是英语,Ciphey都可以在几毫秒内得到它
  • 多语言支持目前,只有德语和英语(带有AU、UK、CAN、USA变体)
  • 支持加密和哈希而像CyberChef Magic这样的替代品是做不到的
  • C++ core惊人的速度

🔭Ciphey vs CyberChef

🔁base64编码42次

名字 ⚡西菲⚡ 🐢网络厨师🐢
GIF
时间 2秒 6秒
设置
  • 对文件运行密码
  • 将正则表达式参数设置为“{”
  • 您需要知道要递归多少次
  • 你要知道一直到现在都是Base64
  • 您需要加载CyberChef(它是一个臃肿的JS应用程序)
  • 对CyberChef有足够的了解来创建这个渠道
  • 把火柴倒过来

注意事项gif可能会在不同的时间加载,因此一个gif的加载速度可能明显快于另一个gif。
关于魔术的注解CyberChef与Ciphey最相似的功能是Magic。Magic在此输入上立即失效并崩溃。我们迫使CyberChef竞争的唯一方法是手动定义它

我们还测试了CyberChef和Ciphey6 GB文件西菲破解了它5分54秒CyberChef还没开始就崩溃了

📊Ciphey vs Katana vs CyberChef Magic

名字 ⚡西菲⚡ 🗡️片名🗡️ 🐢网络厨师魔术🐢
高级语言检查器
支持加密
以反乌托邦主题命名的发行🌃
支持哈希
易于设置
我能猜出什么东西是用什么加密的
由黑客为黑客创建

🎬快速入门

如果您在安装Ciphey时遇到问题,read this.

‼️重要链接(文档、安装指南、不一致支持)

安装指南 文档 不和谐 Docker图像(来自REMnux)
📖Installation Guide 📚Documentation 🦜Discord 🐋Docker Documentation

🏃‍♀️运行Ciphey

有3种方法可以运行Ciphey

  1. 文件输入ciphey -f encrypted.txt
  2. 不合格的输入ciphey -- "Encrypted input"
  3. 正常方式ciphey -t "Encrypted input"

要消除进度条、概率表和所有噪音,请使用静音模式

ciphey -t "encrypted text here" -q

有关参数的完整列表,请运行ciphey --help

⚗️正在导入Ciphey

您可以导入Ciphey的Main并在您自己的程序和代码中使用它。from Ciphey.__main__ import main

🎪贡献者

Ciphey是由Bee2008年,并于2019年复兴。如果没有西菲,它就不会有今天的地位Cyclic3-UOL网络安全协会主席

西菲被复活并重新创造了Cyber Security Society用于CTF。如果你来利物浦,可以考虑做个演讲或赞助我们的活动。给我们发电子邮件到cybersecurity@society.liverpoolguild.org了解更多信息🤠

主要学分感谢George H研究出如何使用适当的算法来加快搜索过程特别感谢varghalladesign用来设计徽标。看看他们的其他设计作品吧!

🐕‍🦺Contributing

不要害怕贡献自己的力量!我们有很多很多你可以做的事情来帮助我们。每一个都贴上标签,并用例子很容易解释。如果你想做贡献却被困住了,那么标签@bee-san✨

或者,加入不和谐组并在那里发送消息(链接到contrib file)或作为徽章出现在本自述文件的顶部

请阅读contributing file有关如何投稿的确切详细信息,请参阅✨

通过这样做,您的名字将被添加到下面的自述文件中,并成为一个不断发展的项目的一部分!

💰财政捐赠者

这笔捐款不仅将用于资助Ciphey及其作者的未来,还将用于资助利物浦大学的网络安全协会

GitHub不支持“赞助这个项目,我们会平均分配资金”,所以选择一个链接,我们会自己解决🥰

✨贡献者

感谢这些优秀的人们(emoji key):


cyclic3

🎨🚧💻🤔

Brandon

🎨🚧💻🤔

michalani

💻

ashb07

💻

Shardion

🐛

Bryan

🌍📖

Lukas Gabriel

💻🐛🌍🤔

Darshan

🐛

SkeletalDemise

💻

Christian Clauss

💻🐛

Machinexa2

🖋

Anant Verma

💻🐛

XVXTOR

📖

Itamikame

💻

MikeMerz

💻

Jacob Galam

💻🐛

TuxTheXplorer

🌍

Itamai

💻🐛

Filipe

🌍

Malathi

💻

Jack

🌍

Younes

🌍

Marnick Vandecauter

🌍

Michael V

💻

chuinzer

🌍

blackcat-917

🌍📖

Åsmund Brekke

💻

Sashreek Shankar

💻

cryptobadger

💻🐛

elf

💻

Roger Yu

💻

dysleixa

💻

Mohammad Zulfikar

📖

此项目遵循all-contributors规格。欢迎任何形式的投稿!

Flasky-O‘Reilly“Flask Web Development”(第二版)的配套代码

Flasky

此存储库包含我的O‘Reilly书第二版的源代码示例Flask Web Development

此存储库中的提交和标记是精心创建的,以与书中呈现概念的顺序相匹配。有关说明,请阅读本书序言中标题为“如何使用示例代码”的部分

面向本书第一版的读者

该书第一版的代码示例已移动到另一个存储库:https://github.com/miguelgrinberg/flasky-first-edition

Trio-Trio-用于异步并发和I/O的友好Python库

Trio项目的目标是生产一种生产质量高、permissively licensed,异步/等待-Python的本机I/O库。与所有异步库一样,它的主要目的是帮助您编写执行以下操作的程序同时做多件事使用并行I/O一个想要并行获取大量页面的网络蜘蛛,一个需要同时处理大量下载和websocket连接的网络服务器,一个监控多个子进程的进程管理程序。诸如此类的事情。与其他图书馆相比,Trio试图通过痴迷于可用性正确性并发性是复杂的;我们试图使其简单易懂去拿东西正确的

三人组是从头开始建造的,目的是利用latest
Python features
,并从以下方面获得灵感many sources,特别是戴夫·比兹利的Curio由此产生的设计从根本上比老的竞争对手要简单得多,比如asyncioTwisted,但同样有能力。Trio是我一直想要的Python I/O库;我发现它使构建面向I/O的程序变得更容易、更不容易出错,而且更有趣。Perhaps you’ll find the same

这个项目还很年轻,还有点实验性:总体设计是可靠的,现有的特性经过了充分的测试和记录,但是您可能会遇到功能缺失或边缘粗糙的问题。我们鼓励你使用它,但你应该read and
subscribe to issue #1
以获得警告,并有机会就任何破坏兼容性的更改提供反馈

下一站是哪里?

我想试试!太棒了!我们有一个friendly tutorial来帮助您入门;不需要以前的异步编码经验

呃,我不想看这些-给我看一些代码!如果你不耐烦,这里有一个simple concurrency example,一个echo client,和一个echo server

与竞争方法相比,Trio如何使程序更易于阅读和推理?TRIO基于一种我们称之为“结构化并发”的新思维方式。最好的理论介绍是这篇文章Notes on structured concurrency, or: Go statement
considered harmful
或,check out this talk at PyCon 2018观看在旧图书馆与Trio中实施“快乐眼球”算法的演示

酷,但它能在我的系统上工作吗?可能吧!只要您有某种Python3.6或更好的版本(CPython或最新的Py3都可以),并且使用的是Linux、MacOS、Windows或FreeBSD,那么Trio就可以工作。其他环境可能也可以工作,但这些都是我们测试的环境。我们所有的依赖项都是纯Python,除了Windows上的CFFI,它有轮子可用,所以安装应该很容易(不需要C编译器)

我试过了,但它不起作用听到这个我很难受!您可以尝试在我们的chat roomforumfiling a bug,或posting a
question on StackOverflow
,我们会尽最大努力帮助你

三人组很棒,我想让它变得更棒!你是最棒的!有大量的工作要做-填补缺失的功能,建立一个Trio使用库的生态系统,可用性测试(例如,也许可以试着教自己或朋友使用Trio,并列出您遇到的每条错误消息和您感到困惑的地方?),改进文档。请查看我们的guide
for contributors
好了!

我目前还没有使用它的计划,但我喜欢研究I/O库设计!这有点奇怪吗?但老实说,你会很适合这里的。我们有一个whole sub-forum
for discussing structured concurrency
(欢迎其他系统的开发人员!)或查看我们的discussion of design
choices
reading list,以及issues tagged design-discussion

我想确保我公司的律师不会生我的气!不用担心,Trio根据您选择的麻省理工学院或Apache2获得许可。LICENSE有关详细信息,请参阅

行为规范

请投稿人遵循我们的code of conduct在所有项目空间中

Maltrail – 恶意流量检测系统

引言

马特里是一种恶意流量检测系统,它利用包含恶意和/或一般可疑路径的公开可用(黑色)列表,以及从各种AV报告和自定义用户定义列表编译的静电路径,其中路径可以是域名(例如zvpprsensinaix.comBanjori恶意软件)、URL(例如hXXp://109.162.38.120/harsh02.exe对于已知的恶意executable)、IP地址(例如185.130.5.231对于已知攻击者)或HTTP User-Agent标头值(例如sqlmap用于自动SQL注入和数据库接管工具)。此外,它还使用(可选)高级启发式机制,可帮助发现未知威胁(例如新的恶意软件)

正在使用以下(黑色)列表(即提要):

360bigviktor, 360chinad, 360conficker, 360cryptolocker, 360gameover, 
360locky, 360necurs, 360suppobox, 360tofsee, 360virut, abuseipdb, alienvault, 
atmos, badips, bitcoinnodes, blackbook, blocklist, botscout, 
bruteforceblocker, ciarmy, cobaltstrike, cruzit, cybercrimetracker, 
dataplane, dshieldip, emergingthreatsbot, emergingthreatscip, 
emergingthreatsdns, feodotrackerip, gpfcomics, greensnow, ipnoise,
kriskinteldns, kriskintelip, malc0de, malwaredomainlistdns, malwaredomains,
maxmind, minerchk, myip, openphish, palevotracker, policeman, pony,
proxylists, proxyrss, proxyspy, ransomwaretrackerdns, ransomwaretrackerip, 
ransomwaretrackerurl, riproxies, rutgers, sblam, socksproxy, sslbl, 
sslproxies, talosintelligence, torproject, trickbot, turris, urlhaus, 
viriback, vxvault, zeustrackermonitor, zeustrackerurl, etc.

截至静电条目,已手动包含以下恶意实体(例如恶意软件C&C或天坑)的踪迹(来自各种反病毒报告和个人研究):

1ms0rry, 404, 9002, aboc, absent, ab, acbackdoor, acridrain, activeagent, 
adrozek, advisorbot, adwind, adylkuzz, adzok, afrodita, agaadex, agenttesla, 
aldibot, alina, allakore, almalocker, almashreq, alpha, alureon, amadey, 
amavaldo, amend_miner, ammyyrat, android_acecard, android_actionspy, 
android_adrd, android_ahmythrat, android_alienspy, android_andichap, 
android_androrat, android_anubis, android_arspam, android_asacub, 
android_backflash, android_bankbot, android_bankun, android_basbanke, 
android_basebridge, android_besyria, android_blackrock, android_boxer, 
android_buhsam, android_busygasper, android_calibar, android_callerspy, 
android_camscanner, android_cerberus, android_chuli, android_circle, 
android_claco, android_clickfraud, android_cometbot, android_cookiethief, 
android_coolreaper, android_copycat, android_counterclank, android_cyberwurx, 
android_darkshades, android_dendoroid, android_dougalek, android_droidjack, 
android_droidkungfu, android_enesoluty, android_eventbot, android_ewalls, 
android_ewind, android_exodus, android_exprespam, android_fakeapp, 
android_fakebanco, android_fakedown, android_fakeinst, android_fakelog, 
android_fakemart, android_fakemrat, android_fakeneflic, android_fakesecsuit, 
android_fanta, android_feabme, android_flexispy, android_fobus, 
android_fraudbot, android_friend, android_frogonal, android_funkybot, 
android_gabas, android_geinimi, android_generic, android_geost, 
android_ghostpush, android_ginmaster, android_ginp, android_gmaster, 
android_gnews, android_godwon, android_golddream, android_goldencup, 
android_golfspy, android_gonesixty, android_goontact, android_gplayed, 
android_gustuff, android_gypte, android_henbox, android_hiddad, 
android_hydra, android_ibanking, android_joker, android_jsmshider, 
android_kbuster, android_kemoge, android_ligarat, android_lockdroid, 
android_lotoor, android_lovetrap, android_malbus, android_mandrake, 
android_maxit, android_mobok, android_mobstspy, android_monokle, 
android_notcompatible, android_oneclickfraud, android_opfake, 
android_ozotshielder, android_parcel, android_phonespy, android_pikspam, 
android_pjapps, android_qdplugin, android_raddex, android_ransomware, 
android_redalert, android_regon, android_remotecode, android_repane, 
android_riltok, android_roamingmantis, android_roidsec, android_rotexy, 
android_samsapo, android_sandrorat, android_selfmite, android_shadowvoice, 
android_shopper, android_simbad, android_simplocker, android_skullkey, 
android_sndapps, android_spynote, android_spytekcell, android_stels, 
android_svpeng, android_swanalitics, android_teelog, android_telerat, 
android_tetus, android_thiefbot, android_tonclank, android_torec, 
android_triada, android_uracto, android_usbcleaver, android_viceleaker, 
android_vmvol, android_walkinwat, android_windseeker, android_wirex, 
android_wolfrat, android_xavirad, android_xbot007, android_xerxes, 
android_xhelper, android_xploitspy, android_z3core, android_zertsecurity, 
android_ztorg, andromeda, antefrigus, antibot, anubis, anuna, apocalypse, 
apt_12, apt_17, apt_18, apt_23, apt_27, apt_30, apt_33, apt_37, apt_38, 
apt_aridviper, apt_babar, apt_bahamut, etc.

架构

Maltrail基于流量->传感器<->服务器<->客户端建筑。传感器(S)是在监视节点上运行的独立组件(例如,Linux平台被动连接到SPAN/镜像端口或在Linux网桥上透明地内联),或者在其“监视”传递的独立机器(例如,蜜罐)上运行流量用于列入黑名单的项目/踪迹(即域名、URL和/或IP)。如果匹配成功,它会将事件详细信息发送到(中心)服务器它们存储在适当的日志目录内的位置(即LOG_DIR中描述的配置节)。如果传感器正在同一台计算机上运行,与服务器(默认配置),日志直接存储到本地日志目录。否则,它们将通过UDP消息发送到远程服务器(即LOG_SERVER中描述的配置节)

服务器的主要作用是存储事件详细信息并为报告Web应用程序提供后端支持。在默认配置中,服务器和传感器将在同一台计算机上运行。因此,为了防止传感器活动可能中断,前端报告部分基于“Fat client”架构(即所有数据后处理都在客户端的Web浏览器实例中完成)。所选(24小时)期间的事件(即日志条目)将传输到客户端,其中报告Web应用程序单独负责演示部分。数据以压缩区块的形式发送到客户端,并在那里按顺序进行处理。最终报告以高度浓缩的形式创建,实际上允许呈现几乎无限数量的事件

注:服务器组件可以完全跳过,只使用独立的传感器在这种情况下,所有事件都将存储在本地日志目录中,而日志条目可以手动检查或由某个CSV读取应用程序检查

演示页面

可以找到功能齐全的演示页面,其中包含收集到的真实威胁here

要求

为了正确运行马特里,Python2.62.73.x*nix/BSD系统上需要,以及已安装的软件包pcapy-ng传感器组件至少需要1 GB的RAM才能在单进程模式下运行,如果在多进程模式下运行,则需要更多内存,具体取决于选项的值CAPTURE_BUFFER另外,传感器组件(一般情况下)需要管理/root权限。服务器组件没有任何特殊要求。

快速入门

下面的一组命令应该会获取您的Maltrab传感器启动并运行(开箱即用,默认设置和监控接口为“Any”):

  • Ubuntu/Debian
sudo apt-get install git python3 python3-dev python3-pip python-is-python3 libpcap-dev build-essential procps schedtool
sudo pip3 install pcapy-ng
git clone --depth 1 https://github.com/stamparm/maltrail.git
cd maltrail
sudo python3 sensor.py
  • SuSE/openSUSE
sudo zypper install gcc gcc-c++ git libpcap-devel python-devel python2-pip procps schedtool
sudo pip2 install pcapy-ng
git clone --depth 1 https://github.com/stamparm/maltrail.git
cd maltrail
sudo python sensor.py
  • 码头工人可以找到环境说明here

要启动(可选),请执行以下操作服务器在同一台机器上,打开一个新终端并执行以下命令:

[[ -d maltrail ]] || git clone --depth 1 https://github.com/stamparm/maltrail.git
cd maltrail
python server.py

要测试一切是否正常运行,请执行以下命令:

ping -c 1 136.161.101.53
cat /var/log/maltrail/$(date +"%Y-%m-%d").log

此外,要测试DNS流量的捕获,您可以尝试以下操作:

nslookup morphed.ru
cat /var/log/maltrail/$(date +"%Y-%m-%d").log

停下来传感器服务器实例(如果在后台运行)执行以下命令:

sudo pkill -f sensor.py
pkill -f server.py

访问报告界面(即客户端)通过访问http://127.0.0.1:8338(默认凭据:admin:changeme!)从您的Web浏览器执行以下操作:

管理员指南

传感器

传感器的配置可以在maltrail.conf文件的部分[Sensor]

IF选项USE_MULTIPROCESSING设置为true那么所有的CPU核心都将被使用。一个核心将仅用于数据包捕获(具有适当的亲和性、IO优先级和良好的级别设置),而其他核心将用于数据包处理。否则,一切都将在单个内核上运行。选项USE_FEED_UPDATES可以用来完全关闭订阅源中的跟踪更新(只需使用提供的静电更新即可)。选项UPDATE_PERIOD包含每次自动跟踪更新之间的秒数(注意:默认值设置为86400(即一天))通过使用trails目录(注:两者传感器服务器注意跟踪更新)。选项CUSTOM_TRAILS_DIR可由用户用来提供包含自定义路径的目录位置(*.txt)文件

选项USE_HEURISTICS启用启发式机制(例如long domain name (suspicious)excessive no such domain name (suspicious)direct .exe download (suspicious)等等),潜在地引入假阳性。选项CAPTURE_BUFFER提供在多处理模式下用于将数据包捕获存储在环形缓冲区中以供非捕获进程进一步处理的总内存(以总物理内存百分比的字节为单位)。选项MONITOR_INTERFACE应包含捕获接口的名称。使用价值any从所有接口捕获(如果操作系统支持)。选项CAPTURE_FILTER应包含网络捕获(tcpdump)过滤跳过不感兴趣的数据包,简化捕获过程。选项SENSOR_NAME包含应该出现在事件内部的名称sensor_name值,因此可以将来自一个传感器的事件与来自另一个传感器的事件区分开来。IF选项LOG_SERVER设置,则所有事件都将远程发送到服务器否则,它们将直接存储到使用OPTION设置的日志目录中LOG_DIR,可以在maltrail.conf文件的部分[All]如果该选项UPDATE_SERVER,则从给定位置拉出所有轨迹,否则将从位于安装本身内部的轨迹定义更新它们

选项SYSLOG_SERVER和/或LOGSTASH_SERVER可用于向非Maltrab服务器发送传感器事件(即日志数据)。如果SYSLOG_SERVER,事件数据将在CEF中发送(公共事件格式)格式化为在给定地址监听的UDP(例如,系统日志)服务(例如192.168.2.107:514),而在以下情况下LOGSTASH_SERVER事件数据将以JSON格式发送到侦听给定地址(例如Logstash)的UDP(例如Logstash)服务。192.168.2.107:5000)

通过UDP发送的事件数据示例如下:

  • 用于选项SYSLOG_SERVER(注:LogSeverity值为0(表示低)、1(表示中等)和2(表示高)):

Dec 24 15:05:55 beast CEF:0|Maltrail|sensor|0.27.68|2020-12-24|andromeda (malware)|2|src=192.168.5.137 spt=60453 dst=8.8.8.8 dpt=53 trail=morphed.ru ref=(static)

  • 用于选项LOGSTASH_SERVER

{"timestamp": 1608818692, "sensor": "beast", "severity": "high", "src_ip": "192.168.5.137", "src_port": 48949, "dst_ip": "8.8.8.8", "dst_port": 53, "proto": "UDP", "type": "DNS", "trail": "morphed.ru", "info": "andromeda (malware)", "reference": "(static)"}

在运行传感器时(例如sudo python sensor.py)第一次和/或在较长时间不运行后,它将根据轨迹定义自动更新轨迹(注意:存储在trails目录)。初始化后,它将开始监视已配置的接口(选项MONITOR_INTERFACEmaltrail.conf)并将事件写入配置的日志目录(选项LOG_DIRmaltrail.conf文件的部分[All])或远程将它们发送到日志记录/报告服务器(选项LOG_SERVER)

检测到的事件存储在服务器的日志目录(即选项LOG_DIRmaltrail.conf文件的部分[All])以易于阅读的CSV格式(注意:空格‘’用作分隔符)作为单行条目,包括:timesensorsrc_ipsrc_portdst_ipdst_portprototrail_typetrailtrail_inforeference(例如"2015-10-19 15:48:41.152513" beast 192.168.5.33 32985 8.8.8.8 53 UDP DNS 0000mps.webpreview.dsl.net malicious siteinspector.comodo.com):

服务器

服务器的配置可以在maltrail.conf部分[Server]

选项HTTP_ADDRESS包含Web服务器的侦听地址(注意:使用0.0.0.0以侦听所有接口)。选项HTTP_PORT包含Web服务器的侦听端口。默认侦听端口设置为8338IF选项USE_SSL设置为true然后SSL/TLS将用于访问Web服务器(例如https://192.168.6.10:8338/)。在这种情况下,选项SSL_PEM应指向服务器的专用/证书PEM文件

小节USERS包含用户的配置设置。每个用户条目都由username:sha256(password):UID:filter_netmask(s)价值UID表示唯一的用户标识符,其中建议对管理帐户使用小于1000的值,而对非管理帐户使用较高的值。该部分filter_netmask(s)表示可用于过滤显示的事件的逗号分隔的硬过滤,具体取决于用户帐户。默认条目如下:

选项UDP_ADDRESS包含服务器的日志收集侦听地址(注意:使用0.0.0.0侦听所有接口),While选项UDP_PORT包含侦听端口值。如果启用,则与选项结合使用时LOG_SERVER,它可以用于不同的(多个)传感器<->服务器架构

选项FAIL2BAN_REGEX包含正则表达式(例如attacker|reputation|potential[^"]*(web scan|directory traversal|injection|remote code)|spammer|mass scanner)将用于/fail2ban网络要求提取今天的攻击者源IP。这允许使用IP阻塞机制(例如fail2baniptablesipset)通过定期从远程位置拉取列入黑名单的IP地址。示例用法如下所示(例如,以root按分钟计算的cronjob):

#!/bin/bash
ipset -q flush maltrail
ipset -q create maltrail hash:net
for ip in $(curl http://127.0.0.1:8338/fail2ban 2>/dev/null | grep -P '^[0-9.]+$'); do ipset add maltrail $ip; done
iptables -I INPUT -m set --match-set maltrail src -j DROP

与的相同传感器,在运行服务器(例如python server.py)第一次和/或在较长时间不运行之后,如果可选USE_SERVER_UPDATE_TRAILS设置为true,它将根据轨迹定义自动更新轨迹(注意:存储在trails目录)。其基本功能是将日志条目存储在日志目录内(即选项LOG_DIRmaltrail.conf文件的部分[All]),并提供用于向最终用户显示这些相同条目的Web报告界面(注意:不需要安装第三方Web服务器软件包,如Apache):

用户指南

报表界面

当进入服务器的报告界面(即通过选项定义的地址HTTP_ADDRESSHTTP_PORT),将向用户显示以下身份验证对话框。用户必须在配置文件中输入由服务器管理员设置的正确凭据maltrail.conf(注意:默认凭据为admin:changeme!):

一旦进入,用户将看到以下报告界面:

顶部包含滑动时间线(注意:单击当前日期标签和/或日历图标后激活),其中用户可以选择过去事件的日志(注意:将鼠标悬停在事件上将触发工具提示的显示,并显示当前日期的大致事件数)。日期按月分组,其中4个月的数据周期显示在小部件本身内。但是,通过使用提供的滑块(即)用户可以轻松访问前几个月的活动

单击日期后,应加载该特定日期的所有事件,并由客户端的Web浏览器表示。根据事件数量和网络连接速度的不同,加载和显示记录的事件可能需要几秒到几分钟的时间(例如,100,000个事件总共需要大约5秒)。在整个处理时间内,动画加载器将显示在禁用的用户界面上:

中间部分包含所显示事件的摘要。Events框表示选定24小时内的事件总数,其中红线表示基于IP的事件,蓝线表示基于DNS的事件,黄线表示基于URL的事件。Sources框以堆叠柱状图的形式表示每个顶层源的事件数,顶部是源的总数。Threats框以饼形图的形式表示最大威胁的百分比(注意:灰色区域包含每个威胁在总事件中所占比例小于1%的所有威胁),威胁总数位于顶部。Trails框以饼形图的形式表示顶部轨迹的百分比(注意:灰色区域包含每个轨迹在事件总数中小于1%的所有轨迹),顶部包含轨迹总数。这些框中的每一个都处于活动状态,因此单击其中一个框将显示更详细的图形

底部以分页表的形式保存记录事件的浓缩表示。每个条目都包含单个威胁的详细信息(注意:由一对唯一标识(src_ip, trail)(dst_ip, trail)如果src_iptrail就像来自外部的攻击一样):

threat持有威胁的唯一ID(例如85fdb08d)和颜色(注意:从威胁ID挤出),sensor保存已触发事件的传感器名称(例如blitvenica),events保存当前威胁的事件总数,severity保存评估的威胁严重程度(注意:根据中的值计算inforeference列,对恶意软件生成的流量进行优先级排序),first_seen保存选定(24小时)时段内的第一个事件的时间(例如06th 08:21:54),last_seen保存所选(24小时)时段内最后一个事件的时间(例如06th 15:21:23),sparkline保存表示选定时段内威胁活动的小迷你图,src_ip保存威胁的源IP(例如99.102.41.102),src_port保留源端口(例如44556, 44589, 44601),dst_ip保存目标IP(例如213.202.100.28),dst_port保留目的端口(例如80 (HTTP)),proto保存协议(例如TCP),trail保存触发事件的黑名单(或启发式)条目,info包含有关威胁/跟踪的更多信息(例如known attacker对于已知攻击者的IP地址或ipinfo对于恶意软件在启动期间通常使用的已知IP信息服务),reference保存列入黑名单的条目的源(例如(static)对于静电路径或myip.ms对于从同一源检索的动态馈送)和tags保存给定轨迹的用户定义标记(例如APT28)

当鼠标移动到上方时src_ipdst_ip表格条目、信息工具提示与详细的反向DNS和WHOIS信息一起显示(注意:RIPE是信息提供商):

活动详细信息(例如src_portdst_portproto等)在同一威胁条目内不同信息被浓缩为泡沫图标(即)。执行此操作是为了获得具有尽可能少行的可用报告界面。将鼠标移到此类图标上将导致显示信息工具提示,其中包含所有项目(例如,所有正在扫描的端口号attacker):

单击其中一个这样的图标将打开一个新对话框,其中包含准备复制粘贴的所有存储项目(注:未压缩形式),以供进一步分析:

将鼠标指针悬停在威胁的踪迹上几秒钟时,将产生一个由结果组成的帧,该框使用该踪迹作为针对执行的搜索项Search Encrypt搜索引擎。在许多情况下,这提供了有关威胁本身的基本信息,从而消除了用户手动搜索威胁的需要。在打开的框架窗口的右上角有两个额外的按钮。通过单击第一个(即),则生成的框架将在新浏览器的选项卡(或窗口)内打开,而通过单击第二个选项卡(即)将立即关闭框架(注意:将鼠标指针移出框架边界即可实现相同的操作):

对于每个威胁,都有一个列tag可以用任意的“标签”来紧密描述共享同一踪迹的所有威胁。此外,这也是单独描述威胁的一种很好的方式,因此所有的威胁都共享同一个标签(例如yahoo)可以稍后分组:

真实案例

在接下来的章节中,我们将通过真实的案例来描述一些“常见嫌犯”的场景。

大规模扫描

大规模扫描是一种相当常见的现象,个人和/或组织有权每天扫描整个0.0.0.0/0 IP范围(即整个互联网),但他们会声明,如果您不喜欢,那么您应该私下联系他们,以便在以后的扫描中跳过

更糟糕的是,像这样的组织ShodanZoomEye通过搜索引擎免费提供(对其他潜在攻击者)可用的所有结果。在下面的屏幕截图中,您将看到一天内Shodan扫描的详细信息

以下是“攻击者”地址的反向DNS和WHOIS查找:

将鼠标指针悬停在trail列的内容(IP地址),您将看到来自Search Encrypt在那里您可以找到有关“攻击者”的更多信息:

dst_ip列中,如果您的组织很大,您将看到扫描的IP地址的大列表:

dst_port列中,您将能够看到已通过此类大规模扫描扫描的所有端口:

在其他类似情况下,您将看到来自列入黑名单的单个攻击者的相同行为(在本例中为cinsscore.com):

另一种常见行为是扫描整个0.0.0.0/0IP范围(即,因特网)以搜索一个特定端口(例如,在以下情况下的TCP端口443Heartbleed已找到)。在下面的屏幕截图中,您将发现之前被列入黑名单的攻击者的一个或多个这样的案例(在本例中,通过alienvault.com和另外两个黑名单)以UDP端口5060(即SIP)为目标进行搜索misconfigured VoIP devices

匿名攻击者

找出隐藏在Tor匿名网络,Maltrar利用可公开获得的Tor出口节点列表。在下面的屏幕截图中,您将看到潜在攻击者一直在利用ToR网络以可疑方式(通过HTTP)访问我们组织范围内的Web目标(10分钟内总共有171个连接请求):

服务攻击者

与前一个相当类似的情况是,之前列入黑名单的攻击者试图以非常可疑的方式访问我们组织范围内的特定(例如,非HTTP)服务(即,在不到15分钟内总共尝试了1513次连接):

如果我们输入ssh attacker发送到Filter字段,我们将能够看到当天发生的所有类似事件,但在本例中是端口22(即SSH):

恶意软件

如果我们组织内受感染的计算机尝试连接到已知的C&C服务器,您将能够找到类似于以下内容的威胁(在本例中Beebone):

在DNS请求包含已知DGA域名、威胁将如下所示(在本例中Necurs):

在以下情况下,从黑名单下载文件(在本例中是通过malwarepatrol.net)个URL已出现:

如果我们输入特定的恶意软件名称(在本例中Ramnit)进入Filter字段中,将只过滤已知链接到此恶意软件的威胁(向您显示所有受影响的内部计算机):

更广泛地说,如果我们输入malware进入到Filter字段中,恶意软件(相关)跟踪发现的所有威胁(例如IP地址)将过滤到:

可疑的域查找

马特劳尔使用静电热度排行榜domains他们通常被认为与可疑活动有关。大多数这样的人TLD域名来自免费的域名注册商(例如Freenom),因此它们应该受到更严格的审查。在下面的屏幕截图中,我们可以找到这样一个TLD域.cm已被未知恶意软件使用DGA用于联系ITS的算法C&C服务器:

也有完全有效的TLD域(例如.ru)用于可疑活动,例如在本例中(例如long domain name (suspicious))其中的域显然是由未知恶意软件生成的DGA:

马特拉尔使用静电list经常用于可疑活动的所谓“动态域”(例如,经常更改目标IP地址的恶意软件C&C服务器):

此外,马特拉尔使用静电list也经常用于可疑活动的“洋葱”相关域(例如,恶意软件通过使用Tor2Web服务联系C&C服务器):

如果旧的和/或过时的恶意软件驻留在组织受感染的内部计算机上而未被检测到,则通常会出现恶意软件在没有任何DNS解析的情况下不断尝试联系停机已久的C&C服务器的域的“现象”。因此,这些(潜在的)威胁将被标记为excessive no such domain (suspicious)

如果一条路径负责太多威胁(例如,在DNS放大攻击中出现假源IP的情况),所有类似的威胁都将分组到一个floodThreat(注意:Threat的ID将标有后缀F0),如下例所示:

可疑的ipinfo请求

很多恶意软件都会使用某种ipinfo服务(例如ipinfo.io)查找受害者的互联网IP地址。在正常情况下,尤其是在非办公时间,应密切监控此类请求,如下例所示:

通过使用过滤ipinfo我们组织范围内所有可能受感染的计算机都可以列出具有这种可疑行为的计算机:

可疑的直接文件下载

Maltrab跟踪所有可疑的直接文件下载尝试(例如.apk.bin.class.chm.dll.egg.exe.hta.hwp.ps1.scr.sct.xpi文件扩展名)。这可能会引发大量误报,但最终可能有助于重建感染链(注:合法服务提供商,如Google,通常使用加密的HTTPS来执行此类下载):

可疑的HTTP请求

如果可疑请求来自外部Web应用程序安全扫描程序(例如,搜索SQLI、XSS、LFI等漏洞)和/或内部用户恶意尝试未知网站,可能会发现如下威胁(攻击者试图利用Joomla!CMS CVE-2015-7297、CVE-2015-7857和CVE-2015-7858vulnerabilities):

在以下示例中,Web应用程序漏洞扫描已标记为“可疑”:

如果我们单击泡沫图标(即)有关详细信息,并将整个内容复制粘贴到文本文件中,我们将能够看到所有可疑的HTTP请求:

在下面的屏幕截图中,运行了一系列流行的SQLI漏洞工具sqlmap可以在我们的日志中找到:

端口扫描

如果针对大量不同TCP端口的连接尝试过多,则由于其启发式机制检测,Maltrab将警告潜在的端口扫描。在运行流行的端口扫描工具时,可以在以下屏幕截图中找到此类警告nmap

DNS资源耗尽

针对Web服务器基础设施的一种流行的DDoS攻击是通过对(伪)随机子域名(例如,)进行有效的DNS递归查询来耗尽其(主)DNS服务器的资源。abpdrsguvjkyz.www.dedeni.com):

数据泄露

杂项程序(尤其是基于移动的)呈现恶意软件(类似)行为,将潜在的敏感数据发送到远程信标帖子。Maltrail将尝试捕获此类行为,如下例所示:

假阳性

就像在所有其他安全解决方案中一样,Maltrail容易出现“false positives“。在这种情况下,马特劳尔将(特别是在以下情况下)suspicious威胁)记录常规用户的行为,并将其标记为恶意和/或可疑。在下面的示例中,可以看到黑名单提要提供程序blocklist.de将常规Google服务器标记为attacker(S),导致以下威胁:

通过将鼠标悬停在轨迹上,使用来自Search Encrypt搜索结果显示,这(最有可能)是一个普通的谷歌服务器:

作为另一个示例,访问常规.work域(恶意用途的流行TLD)导致以下威胁:

不过,管理员应该投入一些额外的时间(用其他方式)检查“可疑”是否表示恶意,如下例所示:

最佳实践

  1. 安装Maltrab:
  • 在……上面Ubuntu/Debian
    sudo apt-get install git python3 python3-dev python3-pip python-is-python3 libpcap-dev build-essential procps schedtool
    sudo pip3 install pcapy-ng
    cd /tmp
    git clone --depth 1 https://github.com/stamparm/maltrail.git
    sudo mv /tmp/maltrail /opt
    sudo chown -R $USER:$USER /opt/maltrail
  • 在……上面SuSE/openSUSE
    sudo zypper install gcc gcc-c++ git libpcap-devel python-devel python2-pip procps schedtool
    sudo pip2 install pcapy-ng
    cd /tmp
    git clone --depth 1 https://github.com/stamparm/maltrail.git
    sudo mv /tmp/maltrail /opt
    sudo chown -R $USER:$USER /opt/maltrail
  1. 设置工作环境:
    sudo mkdir -p /var/log/maltrail
    sudo mkdir -p /etc/maltrail
    sudo cp /opt/maltrail/maltrail.conf /etc/maltrail
    sudo nano /etc/maltrail/maltrail.conf
  2. 设置运行环境:
    • crontab -e # autostart server & periodic update
    */5 * * * * if [ -n "$(ps -ef | grep -v grep | grep 'server.py')" ]; then : ; else python /opt/maltrail/server.py -c /etc/maltrail/maltrail.conf; fi
    0 1 * * * cd /opt/maltrail && git pull
    
    • sudo crontab -e # autostart sensor & periodic restart
    */1 * * * * if [ -n "$(ps -ef | grep -v grep | grep 'sensor.py')" ]; then : ; else python /opt/maltrail/sensor.py -c /etc/maltrail/maltrail.conf; fi
    2 1 * * * /usr/bin/pkill -f maltrail
    

许可证

该软件是在麻省理工学院的许可下提供的。请参阅随附的LICENSE有关详细信息,请参阅文件

赞助商

开发商

演示文稿

  • 第47次工作组-CSIRT会议,布拉格(捷克共和国),2016年(slides)

黑名单

  • 可以找到Maltrail每日更新的恶意软件相关域名黑名单here它基于在trails/static/malware并且可以安全地用于DNS流量阻止目的

谢谢

  • 托马斯·克里斯纳
  • 爱德华多·阿库萨·莱斯
  • 詹姆斯·雷
  • 拉迪斯拉夫·巴科(@lacike)
  • 约翰·克里斯托夫(@jtkdpu)
  • 迈克尔·穆恩兹(@mimugmail)
  • 大卫·布鲁什(David Brush)
  • @Godwottery

第三方集成

1个使用(仅限)小径