Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
5f32be5
support Allow/Disallow Application
Jan 23, 2019
775e130
English support
Jan 24, 2019
7fd4272
readme fix
Jan 24, 2019
1623972
readme language fix
Jan 24, 2019
c9ccf6d
support for android 9.0
Feb 3, 2019
a2c8237
readme fix
Feb 3, 2019
6b018c6
support loadIcon
Sep 17, 2019
bdfe6bf
suppoert app search
Sep 18, 2019
d533804
readme fix
Sep 18, 2019
ed860a9
support sort by
Sep 18, 2019
4e205fa
fix image
Sep 18, 2019
400b758
bugfix pref
Sep 22, 2019
1f09dfe
fix gradle property
Sep 24, 2019
a13d05e
readme fix
Sep 25, 2019
e6eac51
modify icon
Sep 26, 2019
fca4c85
Correcting mismatch of uninstall package
Nov 30, 2019
bb2455a
fix first click start not work
likfe Dec 7, 2019
18c4e30
Merge pull request #2 from likfe/master
raise-isayan Dec 21, 2019
11b1b68
bug fix and remove permission
Dec 21, 2019
18cdd25
support Clear all selection
Jan 19, 2020
42e6e35
support v1.1.5 help
Jan 19, 2020
fc94c07
fix a wrong queue data length
simontrek Feb 21, 2020
c9facc9
Merge pull request #3 from simontrek/master
raise-isayan Mar 17, 2020
e4b5d16
Fixed DNS lookup
Mar 24, 2020
83ec5bf
Merge branch 'master' of https://github.com/raise-isayan/TunProxy
Mar 24, 2020
89948c3
support androidx
Mar 28, 2020
4fe186a
bugfix allowed/disallowd Application
Mar 29, 2020
e59d25c
support order by / sort by
Mar 29, 2020
c356d7b
fix help and release pkg
Mar 30, 2020
c890284
Support for the display of Wait while creating the application list.
Mar 31, 2020
b5ff833
Fixed a bug that crashes when the screen is rotated.
Apr 1, 2020
573dbab
Fixed crash after repeated rotation.
Apr 2, 2020
9e6e010
support filter by
Apr 12, 2020
d68818a
bugfix
Apr 12, 2020
06dca05
upgrade gradle
Jul 10, 2021
6764f5a
support Android 11
Jul 10, 2021
beac530
support Android 12
Apr 23, 2022
b5670f3
アプリ一覧取得方法修正
Jul 24, 2024
e776700
システムアプリのフィルタ機能追加
Jul 24, 2024
b4bf0a1
Filter Menu修正
Jul 25, 2024
df3e895
release ファイル修正
Jul 25, 2024
0fa20b4
Upgrade 31 to 37
Jun 16, 2026
49cee38
deprecated となった機能の移行
Jun 16, 2026
344e490
Android 15 の Edge-to-Edge の対応
Jun 17, 2026
1908959
リファクタリング
Jun 17, 2026
67f6570
upgrade gradle
Jun 17, 2026
6d2f9dd
デフォルトポート以外の転送を考慮
Jun 17, 2026
860a676
一部の警告対応
Jun 18, 2026
dc0144c
処理みなおし
Jun 19, 2026
39e1fb9
DNSをユーザ指定可能なように変更
Jun 28, 2026
403f454
Readme の修正
Jun 28, 2026
9d03601
DNS設定処理みなおし
Jun 28, 2026
379cb6c
selected application count の変更
Jun 29, 2026
b7ae9cf
リテラルをリソース化
Jun 29, 2026
c872847
Upgrade gradle 9.6.1
Jun 29, 2026
266506a
tlsヘッダチェックの効率化
Jun 29, 2026
74fb468
Readme 修正
Jul 1, 2026
54bdab5
Connectivity Checkの実装
Jul 1, 2026
069af8f
Preference処理の見直し
Jul 2, 2026
edcadad
リファクタリング
Jul 2, 2026
e6b666b
Readme修正
Jul 3, 2026
1dc65da
Image修正
Jul 3, 2026
629cd52
HTTP,SOCKS切り換え機能実装
Jul 3, 2026
606bab5
必ず host:port の形式を要求
Jul 3, 2026
c0a6368
ProxyTypeをEnum化
Jul 3, 2026
c3f7e08
Readme 修正
Jul 3, 2026
fd9a5fa
C言語 可読性の向上
Jul 4, 2026
17c5d3f
ドメイン名を許可
Jul 4, 2026
dd53623
android.permission.QUERY_ALL_PACKAGES パーミッションの付与
Jul 5, 2026
8613bae
Readme修正
Jul 5, 2026
c4db0d6
プロファイルの切り換え機能の実装
Jul 5, 2026
ee99bf3
プロファイル一覧にプロファイル名、Host:Port、プロキシタイプの表示
Jul 5, 2026
b65c76f
Profileの追加・変更・削除の実装変更
Jul 5, 2026
80f1ab8
IP,DNS周りをまとめてNetUtilに統合
Jul 5, 2026
79f2772
Android Log表示
Jul 5, 2026
69662a0
Profile Settingsの表示をSettingsの表示と同じに変更
Jul 5, 2026
df0b0f9
Readme修正
Jul 5, 2026
05d0ddb
Unit Testのテストケースの追加
Jul 7, 2026
ddb5ec3
Host and Port共通化
Jul 8, 2026
cc3d885
IPv6形式チェック
Jul 8, 2026
8748bdc
DNSの形式チェックのバグ修正
Jul 21, 2026
7419881
IPv4 形式チェックのバグ修正
Jul 21, 2026
070f55e
Code Format
Jul 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 1 addition & 37 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,37 +1 @@
# Built application files
/*/build/

# Crashlytics configuations
com_crashlytics_export_strings.xml

# Local configuration file (sdk path, etc)
local.properties

# Gradle generated files
.gradle/

# Signing files
.signing/

# User-specific configurations
.idea/libraries/
.idea/workspace.xml
.idea/tasks.xml
.idea/.name
.idea/compiler.xml
.idea/copyright/profiles_settings.xml
.idea/encodings.xml
.idea/misc.xml
.idea/modules.xml
.idea/scopes/scope_settings.xml
.idea/vcs.xml
*.iml

# OS-specific files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
/.vscode
197 changes: 197 additions & 0 deletions Readme-ja.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,197 @@
Android 通信 Proxy 設定ツール
=============

Language/[English](https://github.com/raise-isayan/TunProxy/blob/master/Readme.md)

このツールは、Android の VPNService 機能を利用した Proxy 設定ツールです。
指定したアプリからの通信のみを取得することが可能です。

## 使用方法

ユーザ証明書領域に信頼させたい Root CA がない場合はインストールします。

TunProxyアプリを起動すると以下の画面が起動します。

![Tun Proxy](images/TunProxy.png)

* Profile 選択
* 選択したプロファイルを適用します。
* Manual
* 手動で設定します。

* Proxy address (host:port)
* 接続先のプロキシサーバを ** host:port ** の形式で指定します。
IPアドレスの場合はIPv4形式で記載する必要があります。

* Proxy Type
* HTTP
HTTPプロキシとして接続します。
* SOCKS5
SOCKS5プロキシとして接続します。

* [Start] ボタン
* 接続を開始します。
* [Stop] ボタン
* 接続を停止します。

## メニュー

画面上部のメニューアイコン(![Menu](images/Menu.png))からアプリケーションの設定ができます。

## Settings

VPNの接続設定を行います。

![Menu Settings](images/Menu-Settings.png) ⇒ ![Menu Settings](images/Menu-Settings-app.png)

Disallowed Application と Allowed Application の2つのモードがありますが、同時に指定することはできません。
このためどちらのモードで動作させたいかを選択する必要があります。
デフォルトは **Disallowed Application** が選択された状態です。

## VPN connection setting

* Disallowed Application
* VPN通信から除外したいアプリを選択する。
選択したアプリはVPN通信を経由されなくなり、VPNを利用しない場合と同じ挙動となります。

* Allowed Application
* VPN通信を行いたいアプリを選択する。
選択したアプリはVPN通信を経由するようになります。
選択されていないアプリは、VPNを利用しない場合と同じ挙動になります。
なお、一つも選択されていない場合は、すべてのアプリの通信がVPNを経由します。

* Clear all selection
* Allowed / Disallowed Application のすべての選択をクリアします。

### Settings 検索

![Menu Settings](images/Menu-Settings-Search.png) / ![Menu Settings](images/Menu-Settings-Menu.png)

画面上部の検索アイコン(![Menu](images/Search.png))から、アプリケーションを絞り込めます。
アプリケーション名または、パッケージ名に指定したキーワードを含むアプリケーションのみが表示されます。

プリケーションリストは、画面上部のメニューアイコン(![Menu](images/Menu.png))からソートできます。

### Settings Menu

アプリ一覧の表示方法を変更します。

* show system app
* システムアプリを表示します。

#### sort by

* app name
* アプリケーション名でアプリケーションリストを並べ替えます。

* package name
* パッケージ名でアプリケーションリストを並べ替えます。

#### order by

* ascending
* 昇順にソートします

* descending
* 降順にソートします

#### filter by

* app name
* アプリケーション名に指定したキーワードを含むものを検索します。

* package name
* パッケージ名に指定したキーワードを含むものを検索します。

## Proxy setting
有効な場合、開始する前にプロキシの接続状態を確認します。

## DNS setting

DNSサーバの設定を行います。

* Use Custom DNS
* 有効な場合カスタムDNSサーバを指定します。

* Primary DNS
* プライマリDNSを指定します。

* Secondary DNS
* セカンダリDNSを指定します。

## Profile Settings

### Profile Lis

プロファイルの一覧が表示されます。

![Profile New](images/Menu-Profile-List.png)

### Profile New

プロファイルを新規作成します。

![Profile New](images/Menu-Profile-New.png)

### Profile Edit

プロファイルを編集します。

![Profile New](images/Menu-Profile-Edit.png)

### Profile Delete

プロファイルを削除します。

![Profile New](images/Menu-Profile-Delete.png)

## About

アプリケーションバージョンを表示します。

## MITM (SSL 復号化)

TunProxyはSSL復号化を実行しません。TunProxyは透過プロキシのように機能します。

SSL復号化を実行するには、Burp suite や Fiddler などのSSLを復号化可能なローカルプロキシツールのIPをTunProxyのIPに設定します

SSLを復号化可能なローカルプロキシツールとしては次に記載するものがあります。

* Burp suite
* https://portswigger.net/burp

* Fiddler
* https://www.telerik.com/fiddler

* ZAP Proxy
* https://www.zaproxy.org/


SSLを復号化するには、ローカルプロキシツールのRoot証明書をAndroid端末のユーザ証明書にインストールしてください。
ただし、Android 7.0 以降において、デフォルトではユーザ証明書を信頼しなくなっています。

* https://android-developers.googleblog.com/2016/07/changes-to-trusted-certificate.html

解決策として次のWebサイトを参照してください。

* Android 7 Nougatおよび認証局
* https://blog.jeroenhd.nl/article/android-7-nougat-and-certificate-authorities

## 動作環境

* Android 6.0 (API Level 23) 以降

### ビルド
gradlew build

## 謝辞

アプリ作成にあたりコードの大部分は以下のアプリをベースとして作成しました。

* forked from MengAndy/tun2http
* https://github.com/MengAndy/tun2http/

## 開発環境

* JRE(JDK) 1.8以上(Open JDK)
* AndroidStudio 2026.1.1 (https://developer.android.com/studio/index.html)
Loading