리모트로 아이폰 패킷 캡쳐하는 방법
개발/iOS 2017. 12. 8. 07:53아이폰에서 리모트로 패킷 캡쳐하여 Mac으로 전달하여 보여주는 방법을 포스팅하도록 하겠습니다.
우선 필요한 것은 UDID를 볼 수 있는 xcode나 iTunes가 필요합니다. 본 내용에서는 xcode에서 확인하는 방법을 살펴 볼 것입니다.
진행할때 아이폰은 USB에 연결해 놓고 있어야 합니다.
1. 아이폰을 Mac의 Network Virtual Interface 로 등록
1) UDID 확인하기
우선 xcode를 실행합니다. 그리고 메뉴에서 [Window -> Devices and Simulators]를 선택합니다.
[Devices and Simulators] 창이 뜹니다. 그럼 위 그림처럼 빨간색 네모를 친 Identifier 항목이 보이실 껍니다. Identifier 값을 기록해 놓습니다.
2) virtual interface 로 등록
terminal 을 실행합니다.
virtual interface로 등록합니다.
$ rvictl -s <UDID> |
등록된 virtual interface 이름을 확인 해봅시다.
$ rvictl -l |
virtual interface 이름은 rvi0, rvi1, rvi2 등으로 구성됩니다.
네트워크로 등록되어 있는지 확인 해봅시다. 확인된 이름으로 조회해야 됩니다. 일반적으로 rvi0 으로 등록됩니다.
$ ifconfig rvi0 |
virtual interface 를 삭제하려면 아래 명령어를 입력하세요.
$ rvictl -x <UDID> |
자 이제 준비는 끝난거 같군요. 패킷 캡쳐하는 방법은 여러가지가 있겠지만 2가지를 소개해 드리도록 하겠습니다.
(참고로 아래 예제에서 나오는 모든 패킷 데이터는 사파리 브라우저로 네이버를 접속했을때 나오는 데이터를 표시하였습니다.)
2. tcpdump 사용법
tcpdump 는 간단한 방법으로 오가는 패킷을 확인할 수 있습니다. 원하는 형태로 살펴보고자 하면 여러 옵션에 대해서 알아 보아야 하지만 여기서는 기본적인 옵션만 알아보겠습니다.
우선 아래 명령어로 쳐봅시다. (사파리 브라우져로 네이버를 접속 했을때 나오는 패킷을 캡쳐한 내용입니다. )
$ tcpdump -n -i rvi0 |
복잡하게 나와서 보기가 힘들죠? 아래 명령어로 좀더 심플하게 볼 수도 있습니다.
$ tcpdump -n -t -i rvi0 -q tcp |
심플하죠? IP 출발지와 목적지를 쉽게 확인할 수 있습니다.
tcpdump 는 이정도로 하겠습니다. 옵션에 대해서는 직접 알아보고 원하는 형태로 사용하시면 됩니다.
3. Wireshark 사용법
윈도우, Mac 에서 패킷 캡쳐할때 널리 사용되고 있는 프로그램입니다. 다운로드는 아래 주소에서 받으시면 됩니다.
다운로드 주소 : https://www.wireshark.org/
Wireshark 실행합니다.
아까 등록된 virtual interface인 rvi0 가 보이네요.
rvi0를 더블클릭합니다. 그럼 바로 패킷 캡쳐가 됩니다.
그런데 간혹 fillter 설정때문에 IP Source 와 IP Destination 이 나오지 않을때가 있습니다.
이건 tcp 등 프로토콜이 빠져있을 때 나오게 됩니다.
메뉴에서 [Analyze -> Enabled Protocols..] 을 선택합니다.
그럼 Enabled Protocols 팝업창이 뜨게 됩니다.
여기서 Enable All 버튼을 선택하여 모두 선택합니다. OK 버튼을 누르시면 모든 패킷이 정상적으로 나오는것을 확인 할 수 있습니다.
자, 여기서 또 고민이 생깁니다. 데이터가 너무 많아 찾기가 힘듭니다. 이럴땐 display filter를 이용하면 원하는 데이터를 확인 할 수 있습니다.
아래 사진의 빨간색 네모박스 처럼 작성해봅시다. (IP는 찾으려고 하는 IP를 작성하시면 됩니다.)
display filter는 여러가지가 있습니다. 몇가지 소개해 드리겠습니다만 고급옵션은 알아보셔야 합니다. Wireshark 는 널리 사용되는 프로그램이라 많은 정보를 찾으실 수 있습니다.
ip.addr == 10.1.0.1 : 출발지나 목적지 IP주소로 검색
ip.src == 10.1.0.1 출발지 IP주소로 검색
ip.len == 52 패킷 사이즈 검색
tcp.port == 1470 TCP 출발지나 목적지 포트 번호로 검색
tcp.dstport == 1470 TCP 포트 목적지 포트 번호로 검색
tcp.srcport == 1470 TCP 포트 출발지 포트 번호로 검색
'개발 > iOS' 카테고리의 다른 글
UITableview 기본 소스코드 - Objective-C (0) | 2022.01.27 |
---|---|
iOS 10 이상 APNS 관련 AppDelegate에 작성되는 메소드 (0) | 2020.11.19 |
iOS 디바이스 크기 알아오기 (0) | 2018.06.07 |
iOS String에 공백 제거 (Trim) (0) | 2018.01.18 |
iOS - 아이폰 디자인 가이드 (0) | 2017.12.05 |
iOS 싱글톤 객체 만드는 방법 (0) | 2017.12.01 |
iOS 커스텀 폰트 등록하기 (0) | 2017.10.30 |
iOS 개발 시 StoryBoard (스토리보드) 없이 프로젝트 생성하기 (0) | 2017.10.27 |