Android 不root 有没有办法使用路由追踪 traceroutee

7314人阅读
作者 : 万境绝尘转载请著名出处 :&http://blog.csdn.net/shulianghan/article/details/示例代码下载 :-- CSDN : http://download.csdn.net/detail/han9253;-- GitHub : /han1202012/TracerouteAndB1. 原理思路文件权限修改无法实现 : 如果&没有 root 权限, 就不能改变二进制文件的文件权限;-- 将busybox推送到Android系统中 : 使用 adb push 命令, 将 busybox 传入到 sd 卡中, 注意, 上传到内存中无法实现;-- 上传到sd卡成功 : 使用 adb push 文件名 手机中的文件全路径名 命令;octopus@octopus:~/csdn$ adb push busybox-armv7l /sdcard/octopus/busybox
3256 KB/s (1109128 bytes in 0.332s)
-- 上传到内存失败 : 使用 adb push 上传到内存中失败, 因为 adb 使用的是 system 用户, 只有 root 用户才有权限向内存中写入数据;octopus@octopus:~/csdn$ adb push busybox-armv7l /data/busybox
failed to copy 'busybox-armv7l' to '/data/busybox': Permission denied-- 查看并修改busybox权限失败 : system 用户没有修改 sd 卡文件模式的权限;shell@android:/sdcard/octopus $ ll
-rw-rw-r-- root
4-07-08 19:49 busybox
shell@android:/sdcard/octopus $ chmod 755 busybox
Unable to chmod busybox: Operation not permitted应用程序解决方案 :&-- 应用程序专属用户 : Android 操作系统会为每个应用程序设置一个用户, 这个用户对其安装目录(/data/data/包名/)下的文件有完整的权限;-- 将可执行二进制文件拷贝到安装目录中 : 将交叉编译好的 busybox 放到 工程目录下的 res/assets/ 目录下;2. 实现策略文件初始放置 : 将 交叉编译好的 busybox 文件放在 工程目录的 /res/assets/ 目录下;文件拷贝 : 将该 二进制文件 拷贝到 app 的安装目录的 files 目录下, 即 /data/data/包名/files/下;修改文件权限 : 使用命令可以直接修改该目录下的权限, 注意这个操作是可以执行的;执行busybox : 在代码中执行 ./data/data/包名/files/获取执行结果 :&3. 使用到的api解析(1) 获取 assets 目录文件的输入流InputStream is = context.getAssets().open(source);-- 获取AssetsManager : 调用 Context 上下文对象的 context.getAssets() 即可获取 AssetsManager对象;-- 获取输入流 : 调用 AssetsManager 的 open(String fileName) 即可获取对应文件名的输入流;(2) 文件流相关操作根据输入流获取文件大小 : 调用输入流的 inputStream.available() 方法;int size = is.available();将文件读取到缓冲区中 : 创建一个与文件大小相同的字节数组缓冲区, 输入流将数据存放到缓冲区中;byte[] buffer = new byte[size];
is.read(buffer);
is.close();将文件写到内存中 : 调用上下文对象的 openFileOutput(绝对路径名, 权限), 即可创建一个文件的输出流;FileOutputStream output = context.openFileOutput(destination, Context.MODE_PRIVATE);
output.write(buffer);
output.close();(3) 获取文件的绝对路径获取app绝对安装路径 : 调用 上下文对象的 getFilesDir().getAbsolutePath() 方法;String filesPath = context.getFilesDir().getAbsolutePath();(4) 执行二进制文件创建 Process 对象, 并使用该 process 执行shell脚本命令 :&Runtime runtime = Runtime.getRuntime();
process = runtime.exec(cmd); 获取执行的命令行结果 :&
InputStream is = process.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line =
while ((line = br.readLine()) != null) {
processList.add(line);
br.close(); 4. 代码示例MainActivity 主程序代码 :&package cn.org.octopus.
import java.io.BufferedR
import java.io.FileNotFoundE
import java.io.FileOutputS
import java.io.IOE
import java.io.InputS
import java.io.InputStreamR
import java.util.ArrayL
import java.util.L
import android.content.C
import android.os.B
import android.support.v7.app.ActionBarA
import android.view.V
import android.widget.EditT
import android.widget.TextV
/** 看不懂注释我就吃半斤狗粮 :-) */
public class MainActivity extends ActionBarActivity {
private EditText et_
private String app_
private TextView tv_
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home_activity);
/*初始化控件*/
et_cmd = (EditText) findViewById(R.id.et_cmd);
tv_result = (TextView) findViewById(R.id.tv_result);
/* 获取app安装路径 */
app_path = getApplicationContext().getFilesDir().getAbsolutePath();
/** 按钮点击事件 */
public void onClick(View view) {
int id = view.getId();
switch (id) {
case R.id.copy_busybox: /* 拷贝busybox可执行文件 */
varifyFile(getApplicationContext(), &busybox&);
case R.id.copy_traceroute:/* 拷贝traceroute可执行文件 */
varifyFile(getApplicationContext(), &traceroute&);
case R.id.exe_busybox:/* 将busybox命令添加到Editext中 */
String cmd = &.& + app_path + &/busybox&;
System.out.println(et_cmd);
et_cmd.setText(cmd);
case R.id.exe_traceroute:/* 将traceroute命令添加到Editext中 */
cmd = &.& + app_path + &/traceroute 8.8.8.8&;
et_cmd.setText(cmd);
case R.id.exe: /* 执行Editext中的命令 */
cmd = et_cmd.getText().toString();
/* 执行脚本命令 */
List&String& results = exe(cmd);
String result = &&;
/* 将结果转换成字符串, 输出到 TextView中 */
for(String line : results){
result += line + &\n&;
tv_result.setText(result);
/** 验证文件是否存在, 如果不存在就拷贝 */
private void varifyFile(Context context, String fileName) {
/* 查看文件是否存在, 如果不存在就会走异常中的代码 */
context.openFileInput(fileName);
} catch (FileNotFoundException notfoundE) {
/* 拷贝文件到app安装目录的files目录下 */
copyFromAssets(context, fileName, fileName);
/* 修改文件权限脚本 */
String script = &chmod 700 & + app_path + &/& + fileN
/* 执行脚本 */
exe(script);
} catch (Exception e) {
e.printStackTrace();
/** 将文件从assets目录中拷贝到app安装目录的files目录下 */
private void copyFromAssets(Context context, String source,
String destination) throws IOException {
/* 获取assets目录下文件的输入流 */
InputStream is = context.getAssets().open(source);
/* 获取文件大小 */
int size = is.available();
/* 创建文件的缓冲区 */
byte[] buffer = new byte[size];
/* 将文件读取到缓冲区中 */
is.read(buffer);
/* 关闭输入流 */
is.close();
/* 打开app安装目录文件的输出流 */
FileOutputStream output = context.openFileOutput(destination,
Context.MODE_PRIVATE);
/* 将文件从缓冲区中写出到内存中 */
output.write(buffer);
/* 关闭输出流 */
output.close();
/** 执行 shell 脚本命令 */
private List&String& exe(String cmd) {
/* 获取执行工具 */
Process process =
/* 存放脚本执行结果 */
List&String& list = new ArrayList&String&();
/* 获取运行时环境 */
Runtime runtime = Runtime.getRuntime();
/* 执行脚本 */
process = runtime.exec(cmd);
/* 获取脚本结果的输入流 */
InputStream is = process.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line =
/* 逐行读取脚本执行结果 */
while ((line = br.readLine()) != null) {
list.add(line);
br.close();
} catch (IOException e) {
e.printStackTrace();
home_activity.xml 布局文件代码 :&&?xml version=&1.0& encoding=&utf-8&?&
&LinearLayout xmlns:android=&/apk/res/android&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:orientation=&vertical& &
&LinearLayout
android:layout_width=&match_parent&
android:layout_height=&wrap_content&
android:gravity=&center&
android:orientation=&horizontal& &
android:id=&@+id/copy_busybox&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:onClick=&onClick&
android:text=&拷贝busybox&
android:textSize=&7dp&
android:textStyle=&bold& /&
android:id=&@+id/copy_traceroute&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:onClick=&onClick&
android:text=&拷贝traceroute&
android:textSize=&7dp&
android:textStyle=&bold& /&
android:id=&@+id/exe_busybox&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:onClick=&onClick&
android:text=&执行busybox&
android:textSize=&7dp&
android:textStyle=&bold& /&
android:id=&@+id/exe_traceroute&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:onClick=&onClick&
android:text=&执行traceroute&
android:textSize=&7dp&
android:textStyle=&bold& /&
&/LinearLayout&
&LinearLayout
android:layout_width=&match_parent&
android:layout_height=&wrap_content&
android:orientation=&horizontal& &
android:id=&@+id/et_cmd&
android:layout_width=&0dp&
android:layout_height=&wrap_content&
android:layout_weight=&4&
android:hint=&输入要执行的命令&
android:textStyle=&bold& /&
android:id=&@+id/exe&
android:layout_width=&0dp&
android:layout_height=&wrap_content&
android:layout_weight=&1&
android:onClick=&onClick&
android:text=&执行&
android:textSize=&10dp&
android:textStyle=&bold& /&
&/LinearLayout&
android:id=&@+id/tv_result&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:background=&#000000&
android:textColor=&#FFF&
android:textSize=&10dp&
android:textStyle=&bold& /&
&/LinearLayout&5. 执行结果执行 busybox 程序 :&执行 traceroute 程序 :&示例代码下载&:--&CSDN&:&http://download.csdn.net/detail/han9253;--&GitHub&:&/han1202012/TracerouteAndB作者&:&万境绝尘转载请著名出处&:&http://blog.csdn.net/shulianghan/article/details/
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1352467次
积分:13601
积分:13601
排名:第916名
原创:129篇
评论:665条
文章:14篇
阅读:55008
阅读:31771
文章:20篇
阅读:367876
联系方式 :&
微信公众号(订阅号) : 韩曙亮
扫描关注 :&
独立域名博客
博客手机版 :
(2)(1)(1)(2)(1)(2)(5)(1)(4)(3)(4)(2)(2)(1)(8)(6)(5)(3)(5)(7)(6)(1)(3)(4)(13)(9)(9)(8)(8)(3)(3)(2)- 最好的系统光盘下载网站!
当前位置: >
> 详细页面
Linux下traceroute命令的使用方法
来源:系统之家
作者:qipeng
  在Linux系统中,traceroute命令可用于显示数据包经过的路由器的ip地址,了解行走路径,在Linux系统和windows系统中的名称有些不同,不熟悉Linux系统的朋友可能一时没认出来,下面小编就给大家详细介绍下traceroute命令吧。
  通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的
  linux系统中,我们称之为traceroute,在MS Windows中为tracert。 traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。
  在大多数情况下,我们会在linux主机系统下,直接执行命令行:traceroute hostname
  而在Windows系统下是执行tracert的命令: tracert hostname
  1.命令格式:
  traceroute[参数][主机]
  2.命令功能:
  traceroute指令让你追踪网络数据包的路由途径,预设数据包大小是40Bytes,用户可另行设置。
  具体参数格式:traceroute [-dFlnrvx][-f《存活数值》][-g《网关》。。.][-i《网络界面》][-m《存活数值》][-p《通信端口》][-s《来源地址》][-t《服务类型》][-w《超时秒数》][主机名称或IP地址][数据包大小]
  3.命令参数:
  -d 使用Socket层级的排错功能。
  -f 设置第一个检测数据包的存活数值TTL的大小。
  -F 设置勿离断位。
  -g 设置来源路由网关,最多可设置8个。
  -i 使用指定的网络界面送出数据包。
  -I 使用ICMP回应取代UDP资料信息。
  -m 设置检测数据包的最大存活数值TTL的大小。
  -n 直接使用IP地址而非主机名称。
  -p 设置UDP传输协议的通信端口。
  -r 忽略普通的Routing Table,直接将数据包送到远端主机上。
  -s 设置本地主机送出数据包的IP地址。
  -t 设置检测数据包的TOS数值。
  -v 详细显示指令的执行过程。
  -w 设置等待远端主机回报的时间。
  -x 开启或关闭数据包的正确性检验。
  4.使用实例:
  实例1:traceroute 用法简单、最常用的用法
  命令:traceroute
  输出:
  代码如下:
  [root@localhost ~]# traceroute
  traceroute to
(61.135.169.125), 30 hops max, 40 byte packets
  1 192.168.74.2 (192.168.74.2) 2.606 ms 2.771 ms 2.950 ms
  2 211.151.56.57 (211.151.56.57) 0.596 ms 0.598 ms 0.591 ms
  3 211.151.227.206 (211.151.227.206) 0.546 ms 0.544 ms 0.538 ms
  4 210.77.139.145 (210.77.139.145) 0.710 ms 0.748 ms 0.801 ms
  5 202.106.42.101 (202.106.42.101) 6.759 ms 6.945 ms 7.107 ms
  6 61.148.154.97 (61.148.154.97) 718.908 ms * bt-228-025. (202.106.228.25) 5.177 ms
  7 124.65.58.213 (124.65.58.213) 4.343 ms 4.336 ms 4.367 ms
  8 202.106.35.190 (202.106.35.190) 1.795 ms 61.148.156.138 (61.148.156.138) 1.899 ms 1.951 ms
  9 * * *
  30 * * *
  [root@localhost ~]#
  说明:
  记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,单位是 ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果您用 traceroute -q 4
,表示向每个网关发送4个数据包。
  有时我们traceroute 一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。
  有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会 有延时长的现象;您可以加-n 参数来避免DNS解析,以IP格式输出数据。
  如果在局域网中的不同网段之间,我们可以通过traceroute 来排查问题所在,是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute 追踪数据包所经过的网关,提交IDC服务商,也有助于解决问题;但目前看来在国内解决这样的问题是比较困难的,就是我们发现问题所在,IDC服务商也不可能帮助我们解决。
  实例2:跳数设置
  命令:traceroute -m 10
  输出:
  代码如下:
  [root@localhost ~]# traceroute -m 10
  traceroute to
(61.135.169.105), 10 hops max, 40 byte packets
  1 192.168.74.2 (192.168.74.2) 1.534 ms 1.775 ms 1.961 ms
  2 211.151.56.1 (211.151.56.1) 0.508 ms 0.514 ms 0.507 ms
  3 211.151.227.206 (211.151.227.206) 0.571 ms 0.558 ms 0.550 ms
  4 210.77.139.145 (210.77.139.145) 0.708 ms 0.729 ms 0.785 ms
  5 202.106.42.101 (202.106.42.101) 7.978 ms 8.155 ms 8.311 ms
  6 bt-228-037. (202.106.228.37) 772.460 ms bt-228-025. (202.106.228.25) 2.152 ms 61.148.154.97 (61.148.154.97) 772.107 ms
  7 124.65.58.221 (124.65.58.221) 4.875 ms 61.148.146.29 (61.148.146.29) 2.124 ms 124.65.58.221 (124.65.58.221) 4.854 ms
  8 123.126.6.198 (123.126.6.198) 2.944 ms 61.148.156.6 (61.148.156.6) 3.505 ms 123.126.6.198 (123.126.6.198) 2.885 ms
  9 * * *
  10 * * *
  [root@localhost ~]#
栏目热门教程
人气教程排行
热门系统下载
本站发布的系统与软件仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,否则后果自负,请支持购买微软正版软件!如侵犯到您的权益,请及时通知我们,我们会及时处理。
Copyright&2011 系统之家(www.xitongzhijia.net) 版权所有 闽ICP备号-1&>&&>&&>&&>&非root权限移植busybox 和 traceroute 示例程序
非root权限移植busybox 和 traceroute 示例程序
上传大小:5.07MB
配套 讲解博客 : http://blog.csdn.net/shulianghan/article/details/
综合评分:4.7(15位用户评分)
所需积分:
下载次数:178
审核通过送C币
创建者:jiangsucsdn
创建者:dickyqie
创建者:qq_
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var q = $("#form1").serializeArray();
console.log(q);
var res_area_r = $.trim($(".res_area_r").val());
if (res_area_r == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
var mess = $(".res_area_r").val();
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, _username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
//填充回复
function KeyP(v) {
$(".res_area_r").val($.trim($(".res_area").val()));
/*删除回复*/
$(".del_comment_r").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
评论共有11条
正好做这种功能,参考了
应用此工具解决了root问题。
不错,可以使用,学习了
还在研究中,希望能有帮助
学了下怎么在apk里封装程序,然后用命令行调用。
非常好,值得推荐
因为版本的问题,还没有测试!利用这个工具可以执行shell命令吗?
不错,可以使用
不错,可以使用,学习了
为什么我traceroot 不显示任何东西的
上传者其他资源上传者专辑
移动开发热门标签
VIP会员动态
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
android服务器底层网络模块的设计方法
所需积分:0
剩余积分:720
您当前C币:0
可兑换下载积分:0
兑换下载分:
兑换失败,您当前C币不够,请先充值C币
消耗C币:0
你当前的下载分为234。
非root权限移植busybox 和 traceroute 示例程序
会员到期时间:剩余下载次数:
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
han1202012
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:有什么办法能够不获取root也能看到系统文件?【android吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:1,194,152贴子:
有什么办法能够不获取root也能看到系统文件?收藏
RTRT!!!
re 能看到部分
找刷机包打开看。  ------来自世界上最牛逼的电脑与最牛逼的浏览器。
有一个什么蓝牙分享,可以把系统程序的安装包从ram分离出来,。不用权限。
es能看到全部……
root就是777权限。
可以看到部分用re
用那个很牛b的视频播放软件!
pc端什么91手机助手,腾讯手机管家的貌似可以看到
登录百度帐号推荐应用

我要回帖

更多关于 traceroute使用 的文章

 

随机推荐