Android Framework预装traceroute执行文件到system/bin下

文章目录

  • [Android SDK中寻找traceroute代码](#Android SDK中寻找traceroute代码)
  • 内置traceroute到SDK中
  • traceroute参数说明
    • [-I 参数(使用 ICMP Echo 请求)](#-I 参数(使用 ICMP Echo 请求))
    • [-T 参数(使用 TCP SYN 包)](#-T 参数(使用 TCP SYN 包))
  • 相关文章

Android SDK中寻找traceroute代码

设备使用的是Android 11,在/system/bin下默认有traceroute6,但是没有找到traceroute。

SDK下只搜索到traceroute6的代码,没找到traceroute的

bash 复制代码
# ls ./external/iputils/traceroute*
./external/iputils/traceroute6.c

内置traceroute到SDK中

  1. 下载可执行文件

    先参照这篇文章Android设备推送traceroute命令进行网络诊断下载traceroute的可执行文件

  2. 在vendor目录下的mk中查找关键字PRODUCT_COPY_FILES

bash 复制代码
find vendor/ -name "*.mk" |xargs grep "COPY"

可以找到如下图所示的结果

有许多mk都用了拷贝文件到系统的方法,

  1. 添加拷贝请求

其中vendor/xxx/proprietary/build/target_system_product.mk就是这次要使用的。

首先把bin文件拷贝到SDK下的external/iputils/目录中。

然后target_system_product.mk中添加

xml 复制代码
PRODUCT_COPY_FILES += external/iputils/traceroute:system/bin/traceroute
  1. 重新编译,在out目录下查询下是否存在traceroute
bash 复制代码
find out/ -name "traceroute"

# 可以正常的搜索到,说明拷贝成功了
out/target/product/xx/system/bin/traceroute
  1. 烧录新固件到设备后开机, 用adb指令执行traceroute
    正常会打印如下信息:

    说明集成traceroute指令到安卓设备中成功了。
    另外确保设备是连接网络的,否则指令会失败
bash 复制代码
traceroute -I www.baidu.com

www.baidu.com: No address associated with hostname
Cannot handle "host" cmdline arg `www.baidu.com' on position 1 (argc 2)

traceroute参数说明

-I 参数(使用 ICMP Echo 请求)

bash 复制代码
traceroute -I target_host
  • 作用:使用 ICMP Echo 请求(类似 ping 命令)作为探测包,而不是默认的 UDP 包。
  • 适用场景:
    当目标主机或中间路由器过滤 UDP 流量时,ICMP 可能更易通过。
    某些网络环境(如企业内网)可能对 ICMP 限制较少。
  • 注意:
    部分防火墙可能仍然拦截 ICMP 流量。

-T 参数(使用 TCP SYN 包)

bash 复制代码
traceroute -T target_host
  • 作用:使用 TCP SYN 包(建立连接的第一步)作为探测包。
  • 适用场景:
    当 UDP 和 ICMP 都被封锁时,TCP 通常是允许的(如 Web 流量使用 TCP 80/443 端口)。
    可通过-p指定目标端口(默认 80)。
  • 示例:
bash 复制代码
traceroute -T -p 443 www.baidu.com  # 使用TCP 443端口(HTTPS)
  • 注意
    需要root权限,否则可能会失败
bash 复制代码
You do not have enough privileges to use this traceroute method.
socket: Operation not permitted

相关文章

Android设备推送traceroute命令进行网络诊断

作者:帅得不敢出门

相关推荐
tealcwu20 小时前
【Unity实战】如何使用VS Code在真实Android设备上调试 Unity应用
android·unity·游戏引擎
鹏多多21 小时前
flutter-屏幕自适应插件flutter_screenutil教程全指南
android·前端·flutter
小龙报21 小时前
【C语言初阶】动态内存分配实战指南:C 语言 4 大函数使用 + 经典笔试题 + 柔性数组优势与内存区域
android·c语言·开发语言·数据结构·c++·算法·visual studio
小龙报21 小时前
【算法通关指南:算法基础篇(三)】一维差分专题:1.【模板】差分 2.海底高铁
android·c语言·数据结构·c++·算法·leetcode·visual studio
TeleostNaCl21 小时前
使用 Android Jetpack 中的 Startup 组件快速实现组件初始化逻辑与主模块解耦
android·经验分享·android jetpack·androidx·android runtime·jetpack android
恋猫de小郭21 小时前
让 AI 用 Flutter 实现了猗窝座的破坏杀·罗针动画,这个过程如何驯服 AI
android·前端·flutter
2501_937193141 天前
技术加持!PLB-TV:HDR10+UDP 传输
android·源码·源代码管理·机顶盒
霸王大陆1 天前
《零基础学 PHP:从入门到实战》模块十:从应用到精通——掌握PHP进阶技术与现代化开发实战-2
android·开发语言·php
低调小一2 天前
在 Android 上获取视频流逐帧时间戳并与 GPS/IMU 对齐(CameraX 实践)
android
Android_Trot2 天前
Flutter android 多渠道配置,多包名、icon、等配置。
android·flutter