安卓免root抓包包器怎么不

当前位置: &
> Packet Capture中文版(无ROOT抓包工具) v1.4.7 汉化版
Packet Capture中文版(无ROOT抓包工具) v1.4.7 汉化版
更新时间:
软件大小:4.56MB
软件分类:
软件类型:国产软件
软件语言:简体中文
授权方式:免费版
用户评分:
运行环境:Android
Packet Capture中文版是一款无须Root也可以抓包的工具,而且Packet Capture Apk可捕获任何网络流量,是一个强大的调试应用。它可以直接显示文本或显示16进制,并可以保存你想要的网络流量包内容,它还标注出了网络流量的app来源,便于你查找捕获到的网络数据包。
最新版本的Packet Capture汉化版,可以单独捕获某一个程序的数据包非常强大。
Packet Capture中文版软件特色:
抓包并记录
通过中间人技术抓取ssl
不需要root
直接显示文本或显示16进制
下载错误?
Packet Capture中文版(无ROOT抓包工具) v1.4.7 汉化版
下载地址:
15.9M | 简体中文
10.4M | 简体中文
1220M | 简体中文
280.79M | 简体中文
15.4M | 简体中文
30.9M | 简体中文
1400M | 简体中文
1250M | 简体中文
86.0M | 简体中文
注:您的评论需要经过审核才能显示哦,请文明发言!
本站资源均收集整理于互联网,其著作权归原作者所有,如果有侵犯您权利的资源,请来信告知,我们将及时撤销相应资源。
Copy 2016 xp510.Com. All Rights Reserved.你的位置: >
> Packet Capture – 安卓无需root抓包工具
https://play.google.com/store/apps/details?id=app.greyshirts.sslcapture
或者其他应用平台搜索Packet Capture
Packet Capture是一个通过内建一个VPn(只监听本地),然后控制安卓使用该内建vpn,通过捕获通过其vpn的流量达到不root也能抓取全局流量包的效果。
转载请注明: &
与本文相关的文章Android设备上非root的抓包实现方法(Tcpdump方法)-阿里云资讯网
Android设备上非root的抓包实现方法(Tcpdump方法)
发布时间:
更新时间:
来源:网络
上传者:用户
通常我们在Android应用中执行某个命令时会使用“Runtime.getRuntime().exec(&命令路径&)”这种方式,但是当我们执行抓包操作时,使用这条命令无论如何都不行,通过下面代码打印结果发现,该命令一定要在root权限下才能执行。 BufferedReader brW = new BufferedReader(new InputStreamReader(p.getErrorStream())); while((str = brW.readLine()) != null) Log.d(&cwmp&, &w:&+str);
但是我们的Android设备(包括机顶盒、手机等)通常并没有root过,apk的最高权限也只是system权限,这该怎么解决?首先我们要知道,方法总比问题多,在Android设备的/system/bin路径下,我们会看到很多二进制文件,这些二进制文件可以获得root权限。因此,我们可以通过C语言来实现抓包功能,通过NDK把该C代码交叉编译成二进制文件置于/system/bin路径下,并赋予其root权限,此时,这个二进制文件就具备了抓包能力了。现在问题又来了,我们现在是想通过apk去调用这个抓包指定,抓包完成后又该怎么通知apk呢?其实,Android可以通过socket使底层与framework层进行通信,具体请参考Android中使用socket使底层和framework通信的实现方法。
接下来我们将贴出关键实现代码。
1、编写socket服务端代码fstiService.cpp,生成可执行脚本fstiService #define SOCKET_NAME &fstiService& #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, &itv_assistance&, __VA_ARGS__) #include &jni.h& #include &stdio.h& #include &stdlib.h& #include &errno.h& #include &string.h& #include &sys/types.h& #include &netinet/in.h& #include &sys/socket.h& #include &sys/wait.h& #include &sys/un.h& #include &cutils/sockets.h& #include &android/log.h& #include &unistd.h& #include &time.h& #include &sys/time.h& #include &pthread.h& pthread_t thread[2]; char s_time[10]; //抓包时间子串 char s_command[256]; //抓包指令子串 //抓包指令:system(&/system/bin/tcpdump -v -w /sdcard/te.pcap&); //获取进程tcpdump的进程号 int getPid() { //for Linux C //FILE *fp = popen(&ps -e | grep \'tcpdump\' | awk \'{print $1}\'&, &r&); //for Android(ARM) //FILE *fp = popen(&ps | grep \'tcpdump\'&, &r&); FILE *fp = popen(&ps | grep \'tcpdump\'&, &r&); char buff[1024] = { 0 }; while (NULL != fgets(buff, sizeof(buff), fp)) ; //取消换行符(10) buff[strlen(buff) - 1] = '\0'; pclose(fp); char dst[5] = { 0 }; char *p = char *q = //每一行进程信息的第二个字符串为进程号 while (*p != ' ') p++; while (*p == ' ') p++; while (*p != ' ') *(q++) = *(p++); *(q++) = '\0'; return atoi(dst); } //截取子串(抓包时间(秒):抓包命令) void substring(char *time, char *command, char *src) { char *p = char *q = char *s = while (*p != '/') *(q++) = *(p++); *(q++) = '\0'; //如果Tcpdump命令已添加环境变量,则添加下行代码 //否则删除下一行代码,client传递的参数格式必须为: num/tcpdump所在路径 p++; while (*p) *(s++) = *(p++); *(s++) = '\0'; } //抓包线程 void *thread1(void *arg) { system(s_command); } void *thread2(void *arg) { int i_time = atoi(s_time); int begin = time((time_t*) NULL); while (1) { if (time((time_t*) NULL) - begin & i_time) { //printf(&当前时间(s):%ld\n&, time((time_t*)NULL)); } else { int n = kill(getPid(), SIGKILL); LOGD(&the kill process result is n=%d&, n); } } return 0; } //创建子线程 void thread_create() { memset(&thread, 0, sizeof(thread)); if ((temp = pthread_create(&thread[0], NULL, thread1, NULL)) != 0) LOGD(&create tcpdump thread failure&); else LOGD(&create tcpdump thread success&); if ((temp = pthread_create(&thread[1], NULL, thread2, NULL)) != 0) LOGD(&create count thread failure&); else LOGD(&create count thread success&); } void thread_wait() { if (thread[0] != 0) { pthread_join(thread[0], NULL); LOGD(&tcpdump thread has terminated&); } if (thread[1] != 0) { //pthread_join(thread[1], NULL); printf(&counter thread has terminated&); } } /** * Native层Socket服务端 */ int main() { int connect_number = 6; int fdListen = -1, new_fd = -1; struct sockaddr_ socklen_t socklen = sizeof(peeraddr); char buff[256]; //这一步很关键,就是获取init.rc中配置的名为 &fstiService& 的socket //获取已绑定的socket,返回-1为错误情况 fdListen = android_get_control_socket(SOCKET_NAME); if (fdListen & 0) { LOGD(&failed to get socket '& SOCKET_NAME &' errno %d&, errno); exit(-1); } /** * 方法说明:开始监听(等待参数fdListen的socket连接,参数connect_number指定同时能处理的最大连接要求) * 如果连接数目达此上限则client端将收到ECONNREFUSED的错误。listen函数并未开始连接,只是设置 * socket为listen模式,真正接收client端连接的是accept()。通常listen()会在socket() * bind()之后调用,接着才调用accept(). * 返回值:成功返回0,失败返回-1,错误原因存在errno中 */ ret = listen(fdListen, connect_number); LOGD(&listen result %d&, ret); if (ret & 0) { /** * perror(s)将一个函数发生错误的原因输出到标准设备(stderr) * 参数s所指的字符串会先打印出,后面再加上错误原因字符串 */ perror(&listen&); exit(-1); } /** * 方法说明:accept(int s, struct sockaddr * addr, socklen_t * addrlen)用来接受参数s的socket连接。 * socket必须先经bind()、listen()函数处理过,当有socket客户端连接进来时会返回一个新的socket处理 * 代码,往后的数据传送与读取就是经由新的socket处理,而原来参数s的socket能继续使用accept()来接受新的 * 连接请求。连线成功时, 参数addr 所指的结构会被系统填入远程主机的地址数据,参数addrlen为sockaddr的 * 结构长度。 * 返回值:成功返回新的socket处理代码,失败返回-1,错误原因存在于errno中。 */ new_fd = accept(fdListen, (struct sockaddr *) &peeraddr, &socklen); LOGD(&accept_fd %d&, new_fd); if (new_fd & 0) { LOGD(&%d&, errno); perror(&accept error&); exit(-1); } //循环等待Socket客户端发来消息 while (1) { /** * 方法说明:recv(int s, void *buf, size_t len, unsigned int flags)用来接收 * 客户端socket传来的数据,并把数据存到由参数buf指向的内存空间,参数len为可接收数据的最大长度。 * 参数flags一般设0 * 返回值:失败返回-1 */ if ((numbytes = recv(new_fd, buff, sizeof(buff), 0)) == -1) { LOGD(&%d&, errno); perror(&recv&); } LOGD(&the parameter received from socket client is %s&, buff); if(strcmp(buff, &exit&) != 0){ substring(s_time, s_command, buff); thread_create(); thread_wait(); } char result[10] = &successp&; /** * 方法说明:send(int s, const void *msg, size_t len, unsigned int flags) * 参数s为已建立好连接的socket,参数msg指向欲发送的数据内容,参数len为数据长度,flags一般置0. * 返回值:失败返回-1,错误原因存在errno中 */ int sendR = send(new_fd, result, strlen(result), 0); //apk退出后,buff中仍然缓存之前的调用命令,此时会额外再执行一次抓包,固下面代用重写buff中数据 strcpy(buff, &exit&); if (sendR == -1) { perror(&send&); close(new_fd); exit(0); } } close(new_fd); close(fdListen); return 0; }
2、配置init.rc文件,添加如下配置 service fstiService /system/bin/fstiService socket fstiService stream 777 system system class main
此处配置了一个名为“fstiService”的服务,Android设备开机会自动启动并运行/system/bin/fstiService这个脚本文件。服务端代码完成后,我们需要将其编译成可执行脚本fstiService,Android.mk内容如下: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) #指定该模块在所有版本下都编译 LOCAL_MODULE_TAGS :=optional LOCAL_MODULE := fstiService LOCAL_SRC_FILES := fstiService.cpp LOCAL_LDLIBS := -llog #编译成动态库 #include $(BUILD_SHARED_LIBRARY) #编译成可执行文件 include $(BUILD_EXECUTABLE)
3、Android客户端代码 public class SocketClient { private final String SOCKET_NAME = &fstiService&; private LocalSocket client = private LocalSocketAddress address = private boolean isConnected = private int connectTime = 1; public SocketClient(){ client = new LocalSocket(); //A socket in the Android reserved namespace in /dev/socket. //Only the init process may create a socket here address = new LocalSocketAddress(SOCKET_NAME, LocalSocketAddress.Namespace.RESERVED); new ConnectSocketThread().start(); } /** * 发送消息 * @param msg * @return 返回Socket服务端消息回执 */ public String sendMsg(String msg){ if(!isConnected) return &Connect failure&; try{ BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream())); PrintWriter out = new PrintWriter(client.getOutputStream()); out.println(msg); out.flush(); return in.readLine(); }catch(IOException e){ e.printStackTrace(); } return &Nothing Return&; } /** * Socket连接线程,若连接失败会尝试重连3次 * @author Administrator * */ private class ConnectSocketThread extends Thread{ @Override public void run() { while(!isConnected && connectTime &= 3){ try{ sleep(1000); Log.d(&itv_assistance&, &T ConnectTime: &+connectTime); client.connect(address); isConnected = }catch(Exception e){ connectTime++; isConnected = Log.d(&itv_assistance&, &Connect Failure&); } } } } /** * 关闭Socket */ public void closeSocket(){ try{ client.close(); }catch(IOException e){ e.printStackTrace(); } } }
  至此,基于非root的Android设备上的抓包实现方法就完成了,接下来就是编译系统进行测试了,这步我没有亲自去做,而是把fstiService脚本及init.rc配置文件的操作交给合作厂商来做了,apk是我们自己做的,经测试一切OK。
点击下载源码:http://xiazai.jb51.net/201611/yuanma/AndroidFstiService(jb51.net)
以上所述是小编给大家介绍的Android设备上非root的抓包实现方法(Tcpdump方法),实现一个模拟后台数据登入的效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:zixun-group@service.aliyun.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。
Android图片上传
Android图片上传预览
Android图片预览
首先具体分析一下,实现的功能,其中需求分析是必不可少的,需求、逻辑清除之后,再上手写代码,思路会很清晰。 1.多图上传首先得选择图片(这里项目需求是既可以拍照上传也可以从相册中选择) 2.拍照上传很简单了网上也有很多例子,调用照相机,返回uri,获取图片 3.从相册中选择图片 &3.1 获取手机中的所有图片 &3.2 将图片存到自定义图片数组中显示 &3.3 自...
ListPopWindow
先看一下效果: 效果就是这样,看一下实现,其实也没多难,就是想开源出来供小伙伴们使用,如有不合理地方,希望大家多多指正。 1.自定义PopWindow 首先我们分析一下,这样的效果肯定是一个PopWindow嵌套着listview,而上面的title、和下面的cancel是两个文本框,实现起来也比较简单。 然后我们在PopWindow中声明两个接口,用来回调cancel和item的点击事...
android_imagespan
textview_imagespan
AndroidRichText帮助实现像QQ,微信一样的,一个TextView里既有文字又有表情又有图片的效果,采用插件化的框架,代码简单,可拓展性强。 基础框架包只有四个java文件, RichTextWrapper :TextView的包裹类,实现支持富文本,通过new RichTextWrapper(TextView v)来构造。 RTMovementMethod: 继承自And...
android_listview翻页
istview异步加载数据
例子中用于解析Json的Gson请自己Google下载 主Activity: package COM.Example.M import java.util.HashM import java.util.I import java.util.LinkedL import java.util.L import java.util.M imp...
listview的异步加载
listview性能优化
listview异步加载
&Android中ListView是使用平率最高的控件之一(GridView跟ListView是兄弟,都是继承AbsListView),ListView优化最有效的无非就是采用ViewHolder来减少频繁的对view查询和更新,缓存图片加快解码,减小图片尺寸。 关于listview的异步加载,网上其实很多示例了,中心思想都差不多,不过很多版本或是有bug,或是有性能问题有待优化,...
listview加载优化
listview性能优化
在android开发中Listview是一个很重要的组件,它以列表的形式根据数据的长自适应展示具体内容,用户可以自由的定义listview每一列的布局,但当listview有大量的数据需要加载的时候,会占据大量内存,影响性能,这时候就需要按需填充并重新使用view来减少对象的创建。 listview加载的核心是其adapter,本文针对listview加载的性能优化就是对adpter的优化,...
若您要投稿、删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在5个工作日内回复。
售前咨询热线
服务与支持
账号与支持
关注阿里云
International免root抓包下载|免root抓包安卓版 1.1.0 - 统一手机站
当前位置:& >
> 免root抓包安卓版 1.1.0
免root抓包安卓版 1.1.0
大小:3.13MB 版本:1.1.0 系统:Android 4.0.0 星级:
语言:简体中文
提示:免费版
作者:Grey Shirts
免root抓包版Packet Capture是一款数据包捕获/SSL网络流量嗅探的应用程序。免root权限进行数据包抓取,并且支持SSL,设计巧妙,原理是以ip方式抓经过网络的取数据包。
免root抓包安卓版特点:
-捕获网络数据包,并记录它们
-使用中间人技术对SSL解密
-无须root权限
-以十六进制或文本显示数据包
(您的评论需要经过审核才能显示,请文明发言!)&&剩余字数:
点击图片更换
分类:策略游戏
分类:休闲益智
分类:休闲益智下次自动登录
现在的位置:
安卓免ROOT抓包工具v1.2.3去广告版【安卓软件】
软件简介:
这是一款直接运行在安卓手机的抓包工具。
下载地址:
备用地址:
【上篇】【下篇】
您可能还会对这些文章感兴趣!
软件:947个
评论:2068条
分类:48类
标签:439个
运行:2595天
最后更新:日}

我要回帖

更多关于 手机免root抓包 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信