我有一个基于linux的移动设备,每隔4-6周就会开始每分钟10到12倍地敲击Google地址。这种增加的敲击开始和结束似乎是随机的,持续几天后才恢复正常(即不敲击),并且ping请求似乎毫无例外地收到了成功的响应。每次开始新的ping活动时,用于请求的IP地址都会发生变化,尽管ping似乎总是使用Google地址。
有什么方法可以找到在我的设备上启动pings的应用程序/程序吗?我跑了
grep -r "Google"
希望能找到某种类型的列表或数据库,该设备将其用作不同IP地址的源,但没有任何运气。如有任何建议/反馈/指导,将不胜感激。
发布于 2020-01-13 07:56:15
假设ftrace是在内核中配置的,并且您有根访问权限,那么您可以使用内核跟踪工具。
有较新的工具可用,特别是bpftrace,但嵌入式设备通常缺乏安装所需依赖项所需的空间。此解决方案使用了多年来可用的ftrace。这只是使用原始文件,有一些工具将自动化这些步骤。
如果调试器尚未挂载,则挂载它。
[ -e /sys/kernel/debug/tracing/README ] || mount -t debugfs debugfs /sys/kernel/debug
禁用跟踪,将报表设置为跟踪函数,设置要监视的函数
cd /sys/kernel/debug/tracing
echo 0 > tracing_on
echo function > current_tracer
echo ping_init_sock > set_ftrace_filter
echo sock_sendmsg >> set_ftrace_filter # Optional, omit if ping_init_sock gives results
启用跟踪
echo 1 > tracing_on
等待ping
事件发生,然后检查trace
文件中的内容。
cat trace
# tracer: function
#
# entries-in-buffer/entries-written: 56/56 #P:1
#
# _-----=> irqs-off
# / _----=> need-resched
# | / _---=> hardirq/softirq
# || / _--=> preempt-depth
# ||| / delay
# TASK-PID CPU# |||| TIMESTAMP FUNCTION
# | | | |||| | |
ping-3085 [000] .... 8035797.349326: ping_init_sock <-inet_create
ping-3085 [000] .... 8035797.349352: ping_init_sock <-inet6_create
ping-3085 [000] .... 8035797.349739: sock_sendmsg <-___sys_sendmsg
ping-3085 [000] .... 8035797.349764: sock_sendmsg <-___sys_sendmsg
ping-3085 [000] .... 8035797.365248: sock_sendmsg <-__sys_sendto
ping-3085 [000] .... 8035797.365486: sock_sendmsg <-__sys_sendto
ping-3085 [000] .... 8035797.379917: sock_sendmsg <-__sys_sendto
ping-3085 [000] .... 8035797.387487: sock_sendmsg <-__sys_sendto
这表明PID 3085正在执行ping操作。如果幸运的话,执行find操作的进程将仍然在运行,所以您可以在ps
输出中找到它。如果没有,你可能希望它有一个可识别的名字。
如果这两种方法都失败了,那么也许https://github.com/brendangregg/perf-tools/blob/master/deprecated/execsnoop-proc可以帮上忙。
https://unix.stackexchange.com/questions/561729
复制相似问题