Linux下完美驱动HTC Android手机的Internet传输(通过USB共享电脑网络)
2014-07-15 22:49
1216 查看
Htc android手机的Internet传输(Internet pass-through)是手机使用USB连接线通过PC上网,共享电脑网络。
但是,这么好的功能需要在windows系统下安装最新版的HTC Sync才能启动。
Linux下怎么才能使用Internet传输功能呢?
------------------------------------------------------------
前期做的研究:Android手机通过USB数据线共享Linux电脑网络(internet传输)
能勉强使用,但是很麻烦,不完善,缺陷有:
1.需要手机有root权限。
2.需要在手机终端上输入大量命令。
3.实际联上网,手机却一直显示脱机状态。
------------------------------------------------------------
Internet传输这么好的功能,难道在Linux下就只能这么将就的用着?对Linuxer来说,没有什么是不可能的!不需root,不需敲命令,手机完美进入internet传输状态,这都可以实现。
项目地址:https://github.com/qileilu/htcnetup
一、win下htc sync激活internet传输过程——抓包
要想像htc sync那样完美的激活internet传输,我们先小小的hacker一下这个htc sync。
这里我使用tcpdump来抓包。
1.首先把tcpdump文件放到手机的/data/local/tmp/目录下。(tcpdump下载)
2.win下打开终端,转到adb.exe目录,插入手机后,运行命令:
说明:做这一步是需要手机root权限,毕竟是抓包啊;命令运行要快,时机很重要,太早adb连接还没建立,太晚很多包又抓不上;网络设备是usb0。
3.抓包结果如下:
看不懂?没关系,我看懂了:
a.手机在电脑生成的网口地址:192.168.99.89 端口53370;手机网口地址:192.168.99.214 端口 6000;
b.电脑向手机发送的第一次数据:4字节,内容:0002 0000; 手机向电脑应答:4字节 80002 0000;
c.电脑向手机发送的第二次数据:4字节,内容:0003 0000; 手机向电脑应答:4字节 80003 0000;
d.电脑向手机发送的第三次数据:4字节,内容:0005 0000; 手机无应答,internet传输模式建立。
好了,有这些就够了,接下来我们在linux下实现这个过程。
二、Linux下激活internet传输——编程
有了上述htc sync激活internet传输过程的抓包,我们要做的就是在linux下模仿这个激活过程。
这里我用c来写。
1.程序流程
1)主程序:
a.接收输入的手机IP地址
b.建立socket
c.建立connect
d.调用激活子程序
e.关闭socket退出
2)激活子程序:
a.向手机IP的6000端口,发送0x00020000,
b.收到手机发来的0x8002000后,向手机IP的6000端口发送0x00030000
c.收到手机发来的0x8003000后,向手机IP的6000端口发送0x00050000
2.程序代码
3.程序编译执行
gcc编译:
执行:
这里的命令参数192.168.99.214是手机的IP地址。手机ip地址可以用下列命令获取:
执行完程序后,你会发现手机状态栏久违的internet传输图标出现了!手机的internet传输功能在linux下完美激活!
看图左上角:
三、Linux下的包转发和网关服务
手机的internet传输激活之后(或者说最好是之前),还需要设置一下Linux系统的包转发。
网关服务在 Linux 系统中非常容易实现的,两条命令即可完成:
DNS 服务在 Linux 系统中也有很多实现,不过如果是访问 Internet 的话,还是使用 Iptables 转到 8.8.8.8 解决更简便:
(此处参考:Linux 系统使用 HTC Internet pass-through)
四、shell脚本编制
总结前面步骤,首先需设置linux系统网关服务,然后在运行internet传输激活程序前,还需知道手机端的ip地址,把这些内容在一个shell脚本中实现如下:
最后,手机插入电脑usb,运行htcnet.sh脚本,完美实现htc android手机internet传输,共享电脑网络吧!!
五、加入udev规则
插入手机后还得手动运行一个命令激活,能否更方便呢?可以的,我们加入udev规则即可。
1.把htcnetup和htcnet.sh文件复制到命令搜索目录:
2.建立规则文件49-htcpnet.rules,内容如下:
把它放到/etc/udev/rules.d/中去:
这样插入手机,就会自动激活internet 传输了!
六、从git安装
这里简单的说一下怎么从git安装。
原文地址:Linux下完美驱动HTC Android手机的Internet传输(通过USB共享电脑网络)
但是,这么好的功能需要在windows系统下安装最新版的HTC Sync才能启动。
Linux下怎么才能使用Internet传输功能呢?
------------------------------------------------------------
前期做的研究:Android手机通过USB数据线共享Linux电脑网络(internet传输)
能勉强使用,但是很麻烦,不完善,缺陷有:
1.需要手机有root权限。
2.需要在手机终端上输入大量命令。
3.实际联上网,手机却一直显示脱机状态。
------------------------------------------------------------
Internet传输这么好的功能,难道在Linux下就只能这么将就的用着?对Linuxer来说,没有什么是不可能的!不需root,不需敲命令,手机完美进入internet传输状态,这都可以实现。
项目地址:https://github.com/qileilu/htcnetup
一、win下htc sync激活internet传输过程——抓包
要想像htc sync那样完美的激活internet传输,我们先小小的hacker一下这个htc sync。
这里我使用tcpdump来抓包。
1.首先把tcpdump文件放到手机的/data/local/tmp/目录下。(tcpdump下载)
3.抓包结果如下:
a.手机在电脑生成的网口地址:192.168.99.89 端口53370;手机网口地址:192.168.99.214 端口 6000;
b.电脑向手机发送的第一次数据:4字节,内容:0002 0000; 手机向电脑应答:4字节 80002 0000;
c.电脑向手机发送的第二次数据:4字节,内容:0003 0000; 手机向电脑应答:4字节 80003 0000;
d.电脑向手机发送的第三次数据:4字节,内容:0005 0000; 手机无应答,internet传输模式建立。
好了,有这些就够了,接下来我们在linux下实现这个过程。
二、Linux下激活internet传输——编程
有了上述htc sync激活internet传输过程的抓包,我们要做的就是在linux下模仿这个激活过程。
这里我用c来写。
1.程序流程
1)主程序:
a.接收输入的手机IP地址
b.建立socket
c.建立connect
d.调用激活子程序
e.关闭socket退出
2)激活子程序:
a.向手机IP的6000端口,发送0x00020000,
b.收到手机发来的0x8002000后,向手机IP的6000端口发送0x00030000
c.收到手机发来的0x8003000后,向手机IP的6000端口发送0x00050000
2.程序代码
看图左上角:
三、Linux下的包转发和网关服务
手机的internet传输激活之后(或者说最好是之前),还需要设置一下Linux系统的包转发。
网关服务在 Linux 系统中非常容易实现的,两条命令即可完成:
总结前面步骤,首先需设置linux系统网关服务,然后在运行internet传输激活程序前,还需知道手机端的ip地址,把这些内容在一个shell脚本中实现如下:
插入手机后还得手动运行一个命令激活,能否更方便呢?可以的,我们加入udev规则即可。
1.把htcnetup和htcnet.sh文件复制到命令搜索目录:
六、从git安装
这里简单的说一下怎么从git安装。
相关文章推荐
- android 手机通过 usb 共享电脑网络
- Android手机通过USB共享电脑网络
- 〖Linux〗通过USB连接,共享Linux上的网络,使用Android手机上网。
- android手机通过USB共享电脑网络
- [Android]手机通过USB绑定共享电脑网络
- Linux下实现Android手机数据传输及网络共享
- Android手机利用USB共享网络通过Ubuntu连接网络
- Android手机如何通过USB共享网络给Mac?
- 技术三等奖:Linux下实现Android手机数据传输及网络共享【评委点评】
- G1 Android手机通过USB线共享电脑的网络上网
- 如何将手机wifi网络通过USB共享给电脑使用
- linux设备如何通过USB网络共享与手机通信(包含安卓手机以及iphone)
- Android手机通过USB网络共享限速
- 手机或pad通过usb共享网络给电脑
- Android手机如何通过USB共享网络给Mac?
- Ubuntu下android手机通过usb连接电脑,显示"???????????? no permissions"问题
- Windows8 WiFi共享,让手机通过WiFi借用电脑有线网络上网
- ubuntu通过蓝牙共享网络给Android手机