RCU 使用

之前在Linux RCU 内核同步机制中对RCU使用场景和使用方式理解存在不足,这里记录一下目前对RCU使用方面更多的个人理解。

阅读全文

tc tbf qdisc

本文记录tc tbf qdisc使用netlink与内核通信的参数格式及其数据含义与tc命令中tbf相关实现与内核中相关实现。

阅读全文

gdb查看寄存器及内存数据与函数调用栈分析

在分析kdump生成的vmcore文件时,有时会需要分析函数调用栈及函数参数与局部变量的情况,这里以使用gdb为例调试分析一下函数调用的栈帧创建与销毁。

阅读全文

libpcap在libvirt虚拟化环境下捕获数据包不完整的一种情况分析

在虚拟化环境下镜像流量交给suricata分析,遇到了文件还原不完整的问题,同环境下使用tcpdump抓包查看可以看到捕获的数据包存在大包被截断的情况。这里分析一下为什么tcpdump会出现数据包被截断的情况以及什么条件下会触发该情况,suricata的问题不完全一致,但是基本思路是一样的。

阅读全文

一种简单的bash审计方法

在高交互蜜罐环境中,ssh服务允许攻击者成功由ssh登录并获取到一个可进行各种操作的真实shell,同时需要记录shell中所有操作。严谨的方案是在bash源码及内核模块中做审计记录。这里给出另一种娱乐性质的方案,简单而tricky的方式达成该目标的基本功能,当然这种方案在了解的人面前很容易被绕过。

阅读全文

bash 调用方式与配置文件

在做bash环境配置时,会遇到配置应该写到哪个文件里的问题。以centos7.5为例就有/etc/profile/etc/bashrc$HOME/.bash_profile$HOME/.profile$HOME/.bashrc这么多配置文件。本文从login shell和interactive shell两个角度交叉描述各种情况下配置文件的加载情况。参考man bash

阅读全文

uriparser 解析处理URI

uriparser是一个用于解析与处理RFC3986标准URI的C语言库,这里简单记录其基本使用方式。

阅读全文

rabbitmq-c 非阻塞订阅

rabbitmq-c是一个C语言的AMQP(高级消息队列协议)客户端库,一般用于配合RabbitMQ使用。本文记录以非阻塞订阅方式使用该库的方法及注意事项。

阅读全文

libyaml 解析配置文件

本文记录在C语言环境使用libyaml库解析YAML文件的方法及相关数据结构,并进一步封装libyaml作为配置文件解析模块。

阅读全文

Linux network namespace 简单解读

一个network namespace是网络栈的一个逻辑拷贝,它包含了自有的路由表、防火墙规则和网络设备。

首先假定已经基本了解network namespace(网络命名空间)并熟悉使用iproute2工具包的ip命令操作netns。本文主要记录相关操作命令的实现逻辑,比如netns的名字是如何设定的、netns在内核中是如何存在的、用户态进程是如何与netns关联的。

阅读全文