您的位置:首页 > 理论基础 > 计算机网络

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共享电脑网络)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: