该项目通过adb
为 Android 提供反向网络共享:它允许设备使用其所插入的计算机的互联网连接。它不需要任何root访问权限(无论是在设备上还是在计算机上)。它适用于GNU/Linux 、 Windows和Mac OS 。
目前,它通过 IPv4 流量中继 TCP 和 UDP,但它不支持 IPv6(还?)。
该项目不再被积极维护,仅修复了主要障碍(如构建问题)。不过,它应该仍然有效。
Gnirehtet有两种可用的实现:
使用Rust实现。本机二进制文件消耗较少的 CPU 和内存,并且不需要Java运行时环境。
Gnirehtet的中继服务器最初仅用 Java 实现。好处是,相同的“二进制文件”可以在安装了Java 8运行时的每个平台上运行。它仍然被维护,以在 Rust 版本出现问题时提供可行的替代方案。
Android 应用程序至少需要 API 21 (Android 5.0)。
仅对于Java版本,您的计算机上需要Java 8 (JRE)。在基于 Debian 的发行版上,安装软件包openjdk-8-jre
。
您需要最新版本的 adb(其中实现了adb reverse
,它适用于 1.0.36)。
它在Android SDK平台工具中可用。
在基于 Debian 的发行版上,您也可以安装包android-tools-adb
。
在 Windows 上,如果您仅需要adb
用于此应用程序,只需下载平台工具并将以下文件解压到gnirehtet目录:
adb.exe
AdbWinApi.dll
AdbWinUsbApi.dll
确保您在设备上启用了 adb 调试。
如果您使用 Homebrew,启动和运行会非常快。要安装 Rust 版本:
brew install gnirehtet
下载您想要的风格的最新版本。
gnirehtet-rust-linux64-v2.5.1.zip
gnirehtet-rust-win64-v2.5.1.zip
gnirehtet-rust-macos64-v2.2.1.zip
(旧版本)然后将其提取。
Linux 和 MacOS 档案包含:
gnirehtet.apk
gnirehtet
Windows 存档包含:
gnirehtet.apk
gnirehtet.exe
gnirehtet-run.cmd
gnirehtet-java-v2.5.1.zip
然后将其提取。档案包含:
gnirehtet.apk
gnirehtet.jar
gnirehtet
gnirehtet.cmd
gnirehtet-run.cmd
注意:在 Windows 上,将以下命令中的./gnirehtet
替换为gnirehtet
。
该应用程序没有 UI,只能通过计算机进行控制。
如果您想为一台设备激活反向网络共享,只需执行:
./gnirehtet run
反向网络共享将保持活动状态,直到您按Ctrl+C为止。
在 Windows 上,为了方便起见,您可以双击gnirehtet-run.cmd
(它只执行gnirehtet run
,而不需要打开终端)。
第一次启动应该打开一个弹出窗口来请求权限:
只要Gnirehtet处于活动状态,状态栏中就会出现一个“钥匙”徽标:
或者,您可以通过调用以下命令为所有连接的设备(当前和未来)启用反向网络共享:
./gnirehtet autorun
您可以单独执行这些操作(如果您想同时反向绑定多个设备,这可能很有用)。
启动中继服务器并保持打开状态:
./gnirehtet relay
在您的 Android 设备上安装apk
:
./gnirehtet install [serial]
在另一个终端中,对于每个客户端,执行:
./gnirehtet start [serial]
要停止客户端:
./gnirehtet stop [serial]
重置隧道(当 gnirehtet 处于活动状态时拔出并重新插入设备时,有助于恢复连接):
./gnirehtet tunnel [serial]
仅当adb devices
输出多个设备时才需要串行参数。
对于高级选项,请调用不带参数的./gnirehtet
以获取更多详细信息。
gnirehtet
程序公开了一个执行较低级别命令的简单命令行界面。您可以手动调用它们。
启动中继服务器:
./gnirehtet relay
要安装APK:
adb install -r gnirehtet.apk
启动客户端:
adb reverse localabstract:gnirehtet tcp:31416
adb shell am start -a com.genymobile.gnirehtet.START
-n com.genymobile.gnirehtet/.GnirehtetActivity
要停止客户端:
adb shell am start -a com.genymobile.gnirehtet.STOP
-n com.genymobile.gnirehtet/.GnirehtetActivity
ADB
定义了adb
可执行文件的自定义路径:
ADB=/path/to/my/adb ./gnirehtet run
GNIREHTET_APK
定义gnirehtet.apk
的自定义路径:
GNIREHTET_APK=/usr/share/gnirehtet/gnirehtet.apk ./gnirehtet run
rev <<< tethering
(在bash中)
阅读开发者页面。
Copyright (C) 2017 Genymobile
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.