티스토리 뷰

아이폰은 특유의 폐쇄성으로 자동화 테스트를 구현하기 까다롭다. 그중에서도 앱을 원격 커맨드로 실행하고 종료하는 방법을 찾기 어렵다. 이에 stackoverflow의 답변을 받아 두 가지 방법을 찾게 되어 포스팅한다.

 

기본적으로 아이폰을 테스트에 용이하도록 컨트롤 하기 위해서는 JailBreak를 해야 한다. 그 방법은 많이 알려져 있으니 생략하고

 

준비된 환경은 다음과 같이 마련해야 한다. 현재 기준으로

 

1. iOS 7.04 탈옥된 머신

2. root 권한과 mobile 권한에 대해서 password 변경 (탈옥후 기본값으로 계정 암호가 설정되어 있으므로 변경해야 한다.)

3. Cydia 앱에서 openssh 설치

 

이제 준비가 되었다면 원격에서 앱을 실행하는 방법을 알아보자.

iOS는 기본적으로 Unix 계열의 OS를 사용하고 있으므로 원격에서 SSH 통신을 통한 명령어 전달이 가능하다. 또한, USB 연결을 통해 TCP 통신을 하기 위한 방법으로 PC에서 다음과 같은 터널링 연결을 맺어야 한다.

 

터널링을 위해서는 다음의 커맨드 라인 툴이 필요하다.

 

 

먼저 SSH 터널링을 생성하자.

 

itunnel_mux --lport 22 --iport 22 

 

USB연결의 22번 포트를 TCP 통신 22포트로 연결해 주어 LocalHost로 TCP 통신을 하면 그것을 다시 USB 터널링을 거쳐 iPhone 내부에 TCP 통신으로 전달한다.

 

터널링이 성공하면 다음과 같은 콘솔화면을 보게된다.

[INFO] Device connected: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

 

이제 앱 커맨드 실행을 위해 위의 stackoverflow 내용대로 아이폰에 Cydia 앱을 설치해보자.

 

개발자의 사이트(http://kramerapps.com/cydia/를 아이폰에서 접속한 후 Cydia 연결하면 open 앱을 설치할 수 있다. 동영상을 보자.

 

 

이제 open 앱이 설치되었다.

 

윈도우 머신에서 커맨드 라인을 통해 앱을 실행하고 종료해 보자.

 

SSH 커맨드를 날리기 위해서는 윈도우용 Putty의 백앤드 툴이 필요하다.

 

이제 실행해보자.

 

plink -l root -pw 앞서 탈옥후 변경한 root의 PW root@127.0.0.1 open com.apple.calculator

 

뒤의 com.apple.calculator는 해당 앱의 Unique Name이다. 이와 같이 실행하면 TCP 통신 22번 포트를 통해 통신을 날리고 터널링이 USB를 통해 아이폰으로 전달한다. 앞서 설치했던 open 앱이 실행되면서 계산기 앱을 실행해 준다.

 

이제 이 앱을 커맨드로 종료하는 방법을 알아보자.

 

plink -l root -pw 앞서 탈옥후 변경한 root의 PW root@127.0.0.1 killall Calculator

 

뒤의 Calculator는 아이폰의 실행 프로세스 이름을 보면 찾을 수 있는 프로세서 명이다. 이와 같은 커맨드로 앱의 실행과 종료를 자유롭게 할 수 있다.

 

이제 이 커맨드를 연속으로 실행해서 앱을 실행하고 종료한 최종 결과를 보자.

 

 

영상을 보면 알 수 있지만 터치를 해서 실행하는 것도 아니고 종료할 때도 홈 키 두 번을 통해 종료하지도 않는다. 정말 원격에서 실행하고 종료하는 것이다.

 

Happy AU3!

 

댓글
댓글쓰기 폼
공지사항
Total
409,794
Today
12
Yesterday
27
«   2019/11   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함