bcc基础代码——Hello world

bcc代码——Hello,world

1、简单监控clone()系统调用,将相关的信息打印出来

#!/usr/bin/python
from bcc import BPF
BPF(text="""
int kprobe__sys_clone(void *ctx){
	bpf_trace_printk("hello,world!\\n");
	return 0;
}
""").trace_print()

在这里插入图片描述

test="…"包含的是C语言编写的BPF程序

kprobe__sys_clone()对应内核kprobes的动态跟踪,也就是sys_clone()接口;

void *ctx这里没有用到参数,直接设置为void *类型

bpf_trace_printk()是一个通用的打印函数,会输出到trace_pipe中(/sys/kernel/debug/tracing/trace_pipe文件)然后trace_print()会读取上面的输出

2、格式化输出监控信息


#!/usr/bin/python
from bcc import BPF
prog="""
int hello(void *ctx){
      bpf_trace_printk("hello,world!\\n");
      return 0;
}
"""
#load BPF program
b=BPF(text=prog)
b.attach_kprobe(event=b.get_syscall_fnname("clone"),fn_name="hello")
#header and format output
print("%-18s %-16s %-6s %s" %("TIME(s)","COMM","PID","MESSAG"))
while 1:
        try:
                (task, pid, cpu, flags, ts, msg) = b.trace_fields()
        except ValueError:
                continue
        print("%-18.9f %-16s %-6d %s" % (ts, task, pid, msg))                                                              

采用hello()作为通用函数,而非使用kprobe__的前缀,接着,调用attach_kprobe()将hello()函数添加到系统调用clone()处

从全局共享文件/sys/kernel/debug/tracing/trace_pi/pe中读取一行并返回域。

在这里插入图片描述

### 头哥的信息安全技术讲解 #### 关于头哥的教学背景与资质 现任四川信息职业技术学院信息安全专业的教师,主要负责信息安全相关课程的教学工作,包括但不限于信息安全技术基础、信息安全技术实训以及安全攻防技术等内容[^1]。该教师还积极参与省级精品课程和国家级资源库的建设,并持有CISP(注册信息安全专业人员)认证资格。 #### 教学内容概述 在教学过程中,涉及的内容广泛涵盖了信息安全的基础理论和技术实践。具体而言,这些课程旨在培养学生掌握信息安全的核心概念及其实际应用场景,使学生能够理解并运用各种安全技术和工具来保护信息系统免受威胁攻击。通过课堂学习与实验操作相结合的方式,学生们可以更好地巩固所学到的知识点,并提升解决复杂问题的能力。 #### 推荐书籍介绍之一——企业级安全运营指南 对于希望深入了解如何构建全面的企业内部网络安全防护体系的人来说,《市场上的某本指导手册》是一份宝贵的参考资料。这本书不仅提供了关于如何有效实施安全措施的具体建议,而且针对不同层次的需求给出了详尽说明。其目标群体主要包括企业中的各类角色如安全运维专员、信息技术管理者以及其他相关人员等。书中覆盖的主题范围非常广博,足以满足大多数情况下所需获取的专业资讯[^2]。 #### 推荐书籍介绍之二——eBPF云原生安全实战指南 另外一本值得关注的好书是由鱼哥推荐给大家阅读的作品《eBPF云原生安全》,它专注于探索新兴技术领域内的可能性。此著作深入浅出地解析了什么是eBPF(extended Berkeley Packet Filter),这项革命性的Linux内核特性允许开发者无需修改核心代码即可执行复杂的网络数据包过滤及其他任务。更重要的是,作者们利用大量真实的编码实例展示了怎样借助这种先进技术手段去应对当今云计算环境中日益严峻的各种挑战,同时也不忘提醒我们注意潜在的风险因素[^3]。 ```python # 示例代码展示 eBPF 的基本用法 (摘自参考材料改编) from bcc import BPF program = """ int hello(void *ctx) { bpf_trace_printk("Hello, World!\\n"); return 0; } """ b = BPF(text=program) fn = b.load_func("hello", BPF.KPROBE) b.attach_kprobe(event="__x64_sys_clone", fn_name="hello") print(b.trace_fields()) ``` 上述脚本片段简单演示了一个基于 Python 编写的程序框架调用了 Linux 内核探针接口的功能,从而实现了每当触发特定系统调用事件时打印消息到控制台的效果。这仅仅只是庞大而强大的 eBPF 生态圈里很小的一部分而已! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董lucky

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值