본문 바로가기
카테고리 없음

[파이썬] adb 패키지 사용 방법 및 PC IP 무한 변경해보기

by 퍼포먼스마케팅코더 2023. 1. 23.
반응형

파이썬 adb 패키지 사용 방법

adb는 Android Debug Bridge라는 도구로, 안드로이드 기기와 PC 간의 통신을 위해 사용됩니다. 파이썬에서 adb를 사용하려면 파이썬용 adb 패키지를 설치해야 합니다. 예를 들어 'pure-python-adb' 패키지를 사용할 수 있습니다.

 

파이썬용 adb 패키지 설치

  • 파이썬용 adb 패키지 설치
!pip install pure-python-adb # 패키지 설치
  • 파이썬 코드에서 adb 패키지 import
  • adb 서버 실행
  • adb 명령 실행
from adb.client import Client as AdbClient

client = AdbClient(host="127.0.0.1", port=5037)
client.connect()

devices = client.devices()
for device in devices:
    print(device)
 

파이썬 adb 패키지 환경 설정 방법

  1. PC에 adb를 설치해야 합니다. adb는 Android SDK에 포함되어 있으며, Android Studio를 설치하면 자동으로 설치됩니다. 또는, SDK Platform-Tools를 다운로드 받아 설치할 수 있습니다.

https://developer.android.com/studio

  1. PC에서 adb를 사용하려면, 개발자 옵션을 활성화해야 합니다. 이를 위해서는 안드로이드 기기에서 '설정' > '정보' > '빌드 번호'를 7번 클릭하면 개발자 옵션을 활성화할 수 있습니다.
  2. PC와 안드로이드 기기를 USB로 연결합니다. 그리고 PC에서 adb를 실행하여 기기를 인식합니다. (cmd shell 에서 아래 입력)

 

adb devices

 

참고: 일부 기기는 adb를 사용하기 전에 USB 디버깅을 허용해야 할 수도 있으니, 기기에서 '설정' > '개발자 옵션' > 'USB 디버깅'을 활성화 해주시길 바랍니다.  또한, adb를 사용하려면 PC에서 기기를 인식할 수 있도록 adb 드라이버를 설치해야 할 수도 있습니다. 기기 제조사마다 다르니, 기기 제조사 웹사이트를 참조해보시길 바랍니다. 추가로 python-adb 패키지를 사용하면서 ADB 서버가 기기와 연결되어 있지 않을 경우 에러가 발생할 수 있으니, 이러한 에러가 발생하면 adb를 실행하여 기기와 연결을 확인하시길 바랍니다.

 

* 일부 기기에 따라 빌드 번호를 7번 터치 -> 개발자 USB 디버깅 활성화

* 반드시 모바일 핫스팟 및 테더링에서 모바일 핫스팟 활성화 및 USB 테더링 활성화 (모바일 기기는 wifi는 꺼둬야됨.)

이외 노트북도 마찬가지로 wifi는 꺼두고, 핸드폰 기기로 모바일 핫스팟 연동

 

3. 추가적인 에러 사항

아래와 같은 에러 메세지가 뜨고, adb server 가 아직 활성화 되지 않으면 아래  cmd 창에서 adb 설치된 폴더로 cd 로 들어가서 확인해야됩니다. 

could not read ok from ADB Server * could not start server *

 

이 오류 메시지는 장치의 ADB(Android Debug Bridge) 서버에 문제가 있음을 나타냅니다. 이 문제는 컴퓨터의 ADB 드라이버 문제, USB 연결 문제 또는 장치 자체의 문제와 같은 여러 가지 문제로 인해 발생할 수 있습니다.

이 문제를 해결하려면 다음 단계를 시도해 보시길 바랍니다 :
ADB 서버 다시 시작: 명령 프롬프트를 열고 Android SDK 내의 platform-tools 폴더로 이동한 다음 "adb kill-server"와 "adb start-server"를 입력합니다. 장치를 다시 시작하는 중입니다. 시스템에서 ADB 드라이버를 제거하고 다시 설치하는 중입니다 장치에서 USB 디버깅이 활성화되어 있는지 확인합니다. 위의 단계 중 어느 것도 작동하지 않으면 문제의 원인이 특정 설정에 고유할 수 있으므로 온라인에서 더 구체적인 해결 방법을 검색해 보시길 바랍니다.

 

3.1 해당 해당 디렉토리에서 shell 입력

 

adb kill-server

 

3.2 이후 해당 디렉토리에서 아래 shell 입력

 

adb start-server

 

3.3그리고 아래 shell 을 입력하여 device 확인

 

adb devices

 

*경우에 따라 usb 테더링 제한이 있을 수 있음. 

adb shell settings get global tether_dun_required

위의 명령어를 입력하였을 때 반환되는 값이 'null'이나 '1'이면 테더링이 제한되어 막혀있는 상태.

adb shell settings put global tether_dun_required 0

이런 경우 위의 코드를 입력하면 테더링 제한이 풀림. 다시 이전의 명령어를 입력해 반환 값이 '0'이 되었는지 확인하면 완료.

 

파이썬 adb PC IP 무한 변경

#!pip install pure-python-adb  설치
import socket
import requests
import re
from ppadb.client import Client as AdbClient
import time
import os

client = AdbClient(host="127.0.0.1", port=5037)
devices = client.devices()
d = devices[0]

print(d.serial)  #시리얼 번호

req = requests.get("http://ipconfig.kr")
print("외부 IP: ", re.search(r'IP Address : (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})', req.text)[1])

#  usb 테더링 제어 
os.system("svc data disable")
time.sleep(5.0)
os.system("svc data enable")
time.sleep(5.0)

#에어플레인 모드 ON

d.shell("svc data disable")
d.shell("adb shell settings put global airplane_mode_on 1")
d.shell("adb shell am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true")
d.shell('adb shell cmd connectivity airplane-mode enable') 

time.sleep(5.0)

#에어플레인 모드 OFF

d.shell("svc data enable")
d.shell("adb shell settings put global airplane_mode_on 0")
d.shell("adb shell am broadcast -a android.intent.action.AIRPLANE_MODE --ez state false")
d.shell('adb shell cmd connectivity airplane-mode disable')

time.sleep(5.0)

#os.system("adb shell svc data disable")
#os.system("adb shell svc data enable")

#os.system("adb shell ipconfig /release")
#os.system("adb shell ipconfig /renew")

req = requests.get("http://ipconfig.kr")
print("외부 IP: ", re.search(r'IP Address : (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})', req.text)[1])

 

파이썬 adb 명령어 크롬 네이버 실행

#!pip install pure-python-adb  설치
import socket
import requests
import re
from ppadb.client import Client as AdbClient
import time
import os

client = AdbClient(host="127.0.0.1", port=5037)
devices = client.devices()
d = devices[0]

print(d.serial)  #시리얼 번호

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(("pwnbit.kr", 443))
print("내부 IP: ", sock.getsockname()[0])

req = requests.get("http://ipconfig.kr")
print("외부 IP: ", re.search(r'IP Address : (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})', req.text)[1])

d.shell("input keyevent 64") #크롬 실행
time.sleep(2.0)

xyposition = '423 136'
d.shell(f'input tap {xyposition}') #주소창 탭 추가
time.sleep(2.0)

url = 'www.naver.com'
d.shell(f'input text {url}')  #네이버 URL 주소 입력
time.sleep(2.0)

d.shell("input keyevent 66")  #엔터
time.sleep(2.0) 

#  usb 테더링 제어 
#os.system("svc data disable")
#time.sleep(5.0)
#os.system("svc data enable")
#time.sleep(5.0)
반응형

댓글