https://github.com/Rtoax/test/tree/master/bpf/bpftrace/study

#!/usr/bin/bpftrace// 荣涛
// UNIX socket STREAM 抓包
// 2021年7月8日
// 内核版本: 3.10.0-1062.el7.x86_64#include <linux/aio.h>
#include <linux/socket.h>
#include <linux/net.h>
#include <linux/fs.h>
#include <linux/mount.h>
#include <linux/module.h>
#include <net/sock.h>
#include <net/af_unix.h>//#include "undump/msghdr.h"BEGIN
{if($1 == 0) {printf("USAGE: undump.bt [PID]\n");exit();}printf("Dump UNIX socket of PID %d. Ctrl-C to end\n", $1);printf("%-8s %-20s  %-5s  %-s\n", "TIME", "PATH", "SIZE", "DATA");
}kprobe:unix_stream_recvmsg,
kprobe:unix_dgram_recvmsg
/pid == $1/
{@[probe, ustack, comm] = count();$iocb = (struct kiocb *)arg0;$sock = (struct socket *)arg1;$msghdr = (struct msghdr *)arg2;$size = arg3;$flags = arg4;$sk = $sock->sk;$unsk = (struct unix_sock *)$sk;$ops = $sock->ops;/* 显示 TCP 还是 UDP 模式if($sock->type == SOCK_DGRAM) {printf("\033[1;31m Recv SOCK_DGRAM UNIX msg, \033[m");} else if ($sock->type == SOCK_STREAM) {printf("\033[1;31m Recv SOCK_STREAM UNIX msg, \033[m");}*///printf("UNIX PATH %s\n", str($unsk->path.dentry->d_parent->d_name.name), str($unsk->path.dentry->d_name.name));time("%H:%M:%S ");printf("%-20s  ", str($unsk->path.dentry->d_name.name));}//static int unix_stream_read_actor(struct sk_buff *skb, int skip, int chunk, struct unix_stream_read_state *state)
kprobe:unix_stream_read_actor
/pid == $1/
{$skb = (struct sk_buff *)arg0;$data = $skb->data;$len = $skb->len;//$_msghdr = (struct MsgHdr *)$skb->data;printf("%-5d  ", $skb->len);printf("%s\n", str($data));//printf("(%d->%d) id %d\n", $_msghdr->src, $_msghdr->dst, $_msghdr->id);}END
{printf("Goodbye!\n");
}

eBPF bpftrace 实现个UNIX socket抓包试试相关推荐

  1. eBPF BCC 实现UNIX socket抓包

    在之前,我写了一个<eBPF bpftrace 实现个UNIX socket抓包试试>,但是很受限啊,不能完整打印包数据信息,今天又写了一个BCC的,感觉没问题了. 不多说,直接上代码: ...

  2. socket抓包_64、抓包分析tcp与udp

    从前面的两个案例,我们了解到了如何通过原生socket函数分别创建tcp和udp服务,以及通过相应的客户端进行连接测试.在本文中,我们将继续深入地去了解tcp和udp的差别,和思考它们两者如何应该多个 ...

  3. java socket 抓包_linux下用socket的抓包程序

    void die(char *why, int n) { perror(why); exit(n); } int do_promisc(char *nif, int sock ) { struct i ...

  4. 如何给UNIX域Socket套接字抓包?

    目录 源代码 client.c common.c common.h Makefile server.c undump.sh 测试 源代码 https://github.com/Rtoax/test/t ...

  5. 转载:实用 FRIDA 进阶 --- objection :内存漫游、hook anywhere、抓包

    转载:实用FRIDA进阶:内存漫游.hook anywhere.抓包:https://www.anquanke.com/post/id/197657 frida github 地址:https://g ...

  6. Linux系统无线网络抓包程序(分析手机WIFI MAC地址)

    前面讲述了使用tcpdump和wireshark抓WIFI包,但这只是使用工具的层面,再深一层则是自己写代码实现这个功能.本文在前面文章<Linux系统有线网络抓包程序>的基础上添加实现无 ...

  7. :实用 FRIDA 进阶 --- objection :内存漫游、hook anywhere、抓包

    转载:实用FRIDA进阶:内存漫游.hook anywhere.抓包:https://www.anquanke.com/post/id/197657 frida github 地址:https://g ...

  8. 实用frida进阶:内存漫游、hook anywhere、抓包

    目录 1 内存漫游 1.1 获取基本信息 1.2 提取内存信息 1.3 内存堆搜索与执行 1.4 启动activity或service 2 Frida hook anywhere 2.1 object ...

  9. 安卓抓包 python hook_搞定某APP的TCP抓包,并直接调用so文件进行Hook抓取

    APP抓包比较繁琐,尤其是对方优先走socket,发TCP包,而不是走应用层发http/https协议.这种抓包更烦躁,绝大部分利用中间人攻击原理这种代理抓包软件都抓不到tcp请求,代理抓包软件大都只 ...

最新文章

  1. java实现上传_文件上传(java)
  2. C#3.0笔记(五)Lambda表达式
  3. ProtoBuf使用指南(C++)
  4. Redis实现分布式锁1
  5. 如何实现windows和linux之间的文件传输
  6. 《关键对话——注意观察,如何判断对话氛围是否安全》读书笔记(四)
  7. gcc: internal compiler error: Killed (program cci)错误
  8. Good Time 冲刺 六
  9. dubbo服务降级与限流
  10. 推理集 —— 特殊的工具
  11. linux 路由表设置 之 route 指令详解【转】
  12. 基本的 HTML 标签
  13. android采集声卡,农步祥作品 - Android系统下使用USB声卡音质测评报告 [Soomal]
  14. python转化excel数字日期为标准日期
  15. win7系统怎么安装dhcp服务器,笔者研习win7系统安装dhcp服务器的技巧介绍
  16. 一个简单的爬虫例子-天气
  17. VScode终端配置bash.git(默认),terminal.integrated.shell:windows路径查找不到前提下
  18. 安卓内存监控工具,2021年Android面试心得,系列教学
  19. 麻省理工学院智能探索计划,旨在探索人类智力基础
  20. 快速记忆电阻器色环值

热门文章

  1. Java中 volatile 关键字的最全总结,赶快给自己查缺补漏吧!
  2. SpringMVC中使用@RequestBody,@ResponseBody注解实现Java对象和XML/JSON数据自动转换)
  3. 移除动态view android,请教Android,动态添加到控件能动态删除吗?
  4. Element - Vue UI Framework
  5. Java线程通信之等待/通知
  6. 网络编程基础_5.3聊天室-多人聊天室
  7. 使用虚拟按钮(Ghost Buttons)的25个网站
  8. 网上看到的,关于测试用例编写粒度准则
  9. spinlock导读
  10. html设置边框dw,Dreamweaver表格边框设置的css语法大全