Skip to content

Instantly share code, notes, and snippets.

@ziozzang
Last active November 26, 2024 07:53
Show Gist options
  • Save ziozzang/13f29c0c076b2e258c191cde808160cc to your computer and use it in GitHub Desktop.
Save ziozzang/13f29c0c076b2e258c191cde808160cc to your computer and use it in GitHub Desktop.
Rooted Android MIFI / DUN (telephony.db) & TTL (iptables) setup.

WHY?

중국산 MIFI중 일부는 APN을 적용할때, 강제로 APN에 dun설정을 하지 않음. 이 경우, 일반적으로 테더링 데이터만 먼저 소모가 되고, 일반 무제한 데이터를 사용하지 않게 됨. 이에 따라 DUN을 강제로 APN타입에 설정 해 주어야 한다는 이슈가 존재 함.

사전 전제 조건

  • adb 가 가능해야 한다. (쉘 접근 가능할 것)
  • 루팅이 되어 있어야 한다. (telephony DB에 직접 접근이 가능해야 한다)
  • Android 9 이상 일 것.

HOW


# ADB쉘 접근
adb shell

# 루트 권한 획득
su

# 디렉토리 이동
cd /data/user_de/0/com.android.providers.telephony/databases/

# telephoy DB열기(APN저장 데이터베이스임)
sqlite3 telephony.db

# 원하는 APN을 수정 한다
SELECT _id, name, type FROM carriers;

# 특정 데이터 베이스를 업데이트 치기
UPDATE carriers SET type='default,dun,supl,xcap' WHERE _id=3017;
UPDATE carriers SET type='default,dun,supl,xcap' WHERE name LIKE '%lgu%';

# 업데이트 된 것을 확인하고
select * from WHERE _id=3017;
select * from WHERE name LIKE '%lgu%';

# 저장후 기기 재시작
.quit

reboot

추가 사항.

  • tethering 이 dun apn type을 강제로 사용 하지 않도록 하는 설정
adb shell
su

# 설정 쓰기
settings put global tether_dun_required 0

# 설정 확인
settings list global

WHY?

TTL을 감지 하여 테더링을 감지 하는 경우에 강제로 아래의 테크닉을 쓰도록 한다.

조건, 상동

  • Rooted / Android 기반 MIFI

  • iptables 사용 가능 할 것.

  • SKT등 일부 캐리어에서 해당 기법을 사용하여 감지를 시도 함.

HOW

iptables -t mangle -A POSTROUTING -j TTL --ttl-set 65
@ziozzang
Copy link
Author

한국내 테더링 감지 관련 특허: https://patents.google.com/patent/KR20120108135A/ko

@ziozzang
Copy link
Author

예시

adb shell su -c "sqlite3 /data/user_de/0/com.android.providers.telephony/databases/telephony.db \"UPDATE carriers SET type='default,dun,supl,xcap' WHERE name like '%LGU%' and type like '%default%'\""

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment