通过 API 快速创建 AlertManager silence

概述 通常我们要 silence 某个 AlertManager 的 alert 时,需要通过 UI 界面操作,如下图: 效率有点低,而且不够自动化,那么是否可以有一种办法快速创建 AlertManager silence 呢? -- 有的,通过 API. API Payload v1 如下: {

通过 Traefik Hub 暴露家里的网络服务

Traefik Hub 简介 📚️Reference: 你的云原生网络平台 -- 发布和加固你的容器从未如此简单。 Traefik Hub 为您在 Kubernetes 或其他容器平台上运行的服务提供一个网关。 Traefik Hub 定位: 云原生网络平台 它有 2 大核心功能,我这次体验感觉也

通过 Pulsar 源码彻底解决重复消费问题

背景 最近真是和 Pulsar 杠上了,业务团队反馈说是线上有个应用消息重复消费。 而且在测试环境是可以稳定复现的,根据经验来看一般能稳定复现的都比较好解决。 定位问题 接着便是定位问题了,根据之前的经验让业务按照这几种情况先排查一下: 通过排查:1,2可以排除了。 没有相关日志 存在异常,但最外层

EPSS 解读:与 CVSS 相比,孰美?

通用漏洞评分系统(CVSS)是当前应用最频繁的评分系统以评估安全漏洞的严重性。但是,由于该系统在评估漏洞和优先级排序方面存在不足而遭受批评。因此,有部分专业人士呼吁使用漏洞利用预测评分系统(EPSS)或将 CVSS 与 EPSS 结合来推动漏洞指标变得更加可执行和高效。与 CVSS 一样,EPSS

XTTS系列之三:中转空间的选择和优化

通常选择XTTS做迁移的数据库都不会太小的,至少都是几T、几十T这样的规模,这种级别的数据量原有空间不够用,所以在迁移过程临时用作存放迁移数据库备份文件的空间也是需要提前考虑规划的问题。 最近就有客户有这样场景,数据库的数据量已经达到了60T+,也是优先选择XTTS的方案做U2L迁移测试。 至于这个

驱动开发:内核强制结束进程运行

通常使用`Windows`系统自带的`任务管理器`可以正常地`结束`掉一般`进程`,而某些`特殊的`进程在应用层很难被结束掉,例如某些`系统核心进程`其权限是在`0环`内核态,但有时我们不得不想办法结束掉这些特殊的进程,当然某些正常进程在特殊状态下也会无法被正常结束,此时使用驱动前行在内核态将其结束掉就变得很有用了,驱动结束进程有多种方法。

4.2 x64dbg 针对PE文件的扫描

通过运用`LyScript`插件并配合`pefile`模块,即可实现对特定PE文件的扫描功能,例如载入PE程序到内存,验证PE启用的保护方式,计算PE节区内存特征,文件FOA与内存VA转换等功能的实现,首先简单介绍一下`pefile`模块。pefile模块是一个用于解析Windows可执行文件(PE文件)的Python模块,它可以从PE文件中提取出文件头、节表、导入表、导出表、资源表等信息,也可以

5.2 基于ROP漏洞挖掘与利用

通常情况下栈溢出可能造成的后果有两种,一类是本地提权另一类则是远程执行任意命令,通常C/C++并没有提供智能化检查用户输入是否合法的功能,同时程序编写人员在编写代码时也很难始终检查栈是否会发生溢出,这就给恶意代码的溢出提供了的条件,利用溢出攻击者可以控制程序的执行流,从而控制程序的执行过程并实施恶意行为,本章内容笔者通过自行编写了一个基于网络的FTP服务器,并特意布置了特定的漏洞,通过本章的学习,

5.8 汇编语言:汇编高效除法运算

通常情况下计算除法会使用`div/idiv`这两条指令,该指令分别用于计算无符号和有符号除法运算,但除法运算所需要耗费的时间非常多,大概需要比乘法运算多消耗10倍的CPU时钟,在Debug模式下,除法运算不会被优化,但Release模式下,除法运算指令会被特定的算法经过优化后转化为为乘法,这样就可以提高除法运算的效率。

7.2 通过API创建新进程

创建新的进程是`Windows`程序开发的重要部分,它可以用于实现许多功能,例如进程间通信、并行处理等。其中,常用的三种创建进程的方式分别是`WinExec()`、`ShellExecute()`和`CreateProcessA()`,这三种创建进程的方式各有特点。如果需要创建简单进程或从其他程序启动新进程,可以使用`WinExec()`或`ShellExecute()`函数。如果需要对新进程进行

7.3 通过API枚举进程

首先实现枚举当前系统中所有进程信息,枚举该进程的核心点在于使用`CreateToolhelp32Snapshot()`函数,该函数用于创建系统进程和线程快照,它可以捕获当前系统中进程和线程相关的信息(如PID、线程数量、线程ID等),在对这些信息进行处理后,可以获得很多有用的数据,如当前系统中所有正在执行的进程的信息列表,以及每个进程各自的详细信息(如CPU、内存占用量等)。

7.4 通过API枚举进程权限

GetTokenInformation 用于检索进程或线程的令牌(Token)信息。Token是一个数据结构,其包含有关进程或线程的安全上下文,代表当前用户或服务的安全标识符和权限信息。GetTokenInformation函数也可以用来获取这些安全信息,通常用于在运行时检查某个进程或线程的权限或安全信息。

7.5 通过API判断进程状态

进程状态的判断包括验证进程是否存在,实现方法是通过枚举系统内的所有进程信息,并将该进程名通过`CharLowerBuff`转换为小写,当转换为小写模式后则就可以通过使用`strcmp`函数对比,如果发现继承存在则返回该进程的PID信息,否则返回-1。

8.8 异常处理机制反调试

通常可以通过在程序中设置异常处理函数,并在其中发起一个异常,然后判断程序是否已经被调试器附加来实现反调试。如果异常处理函数没有被触发,则说明程序已经被调试器附加;如果异常处理函数被触发,则说明程序没有被调试器附加。安装异常处理函数并手动触发,此时如果被调试器附加,则会不走异常处理流程,此时`IsDebug`将会返回默认的`False`,并直接走`_asm call pBuff;`在调试器不忽略`i

如何强制SQL走性能更优的hash join

通常nestloop join的复杂度是O(N方),hash join时间复杂度是O(N),所以我们一般倾向于使用hash join。

Mysql索引覆盖

通常情况下,我们创建索引的时候只关注 where 条件,不过这只是索引优化的一个方向。优秀的索引设计应该纵观整个查询,而不仅仅是 where 条件部分,还应该关注查询所包含的列。索引确实是一种高效的查找数据方式,但是 mysql 也可以从索引中直接获取数据,这样就不在需要读数据行了。

从源代码构建TensorFlow流程记录

通常情况下,直接安装构建好的.whl即可。不过,当需要一些特殊配置(或者闲来无事想体会 TensorFlow 构建过程到底有多麻烦)的时候,则需要选择从源代码构建TensorFlow。万幸文档混乱的 TensorFlow 还是好心地为我们提供了一整页的文档供参考

0源码基础学习Spring源码系列(一)——Bean注入流程

通过本文,读者可以0源码基础的初步学习spring源码,并能够举一反三从此进入源码世界的大米! 由于是第一次阅读源码,文章之中难免存在一些问题,还望包涵指正!

巧用GenericObjectPool创建自定义对象池

通常一个对象创建、销毁非常耗时的时候,我们不会频繁的创建和销毁它,而是考虑复用。复用对象的一种做法就是对象池,将创建好的对象放入池中维护起来,下次再用的时候直接拿池中已经创建好的对象继续用,这就是池化的思想。

一种新的告警收敛方式“先知预警”,为您的系统健康护航

通过这个预警系统,我们能够提前发现并主动处理对账事后异常,其技术难度并不高, 更多的讲究的是一个方法。对此方法起了一个名字叫"先知预警",也希望此理论能对您的系统有所帮助。