(21/07/22)내용 추가 This document is outdated.
작성한지 한참 되었는데도 유입이 되니 내용을 추가합니다. 아래의 내용은 갤럭시 s3 / 노트2 세대에 적용되던 것으로서, SELinux / Knox 로 보호된 현 세대의 스마트폰에는 적용되지 않을 가능성이 큽니다. 복구를 한다 해도 Knox 카운터가 올라가 그 순간 삼성의 보안 관련 서비스(삼성 패스 / 지문인식 / 삼성페이까지!) 사용하지 못할 수 있습니다. 그냥 이런 내용이 있었구나 정도로 이 정보를 접하시면 감사하겠습니다.
Abstact
모든 WiFi 모듈과 블루투스 모듈에는 MAC이라는 고유 주소가 있습니다. 마찬가지로 3G/LTE/5G 통신 모듈에도 고유 주소가 있습니다. 그 고유주소를 우리는 IMEI라 부릅니다. 간단히 비유를 해보자면 MAC 주소는 운전면허증에 있는 번호와 같고, IMEI는 주민등록번호와 같습니다. 운전면허증은 면허 취소되었다 다시 따면 번호가 바뀝니다. 바꾸려면 바꿀 수 있는 존재입니다. 반면 주민등록번호는 한 번 태어나서 부여받으면 인생을 건 큰 변화(성전환..이런 것들)가 아니고서는 바꾸지 않습니다. 주민번호는 그리 간단한 존재가 아닙니다. 아래에서 소개하는 방법은 IMEI라는 것에 주민등록처럼 사망처리의 개념이 따로 없다는 점을 이용합니다. 망가진 휴대폰에서 IMEI를 적출하여 다른 신분으로 살아갈 수 있도록 합니다.
IMEI 변조가 가능하다면?
요즘도 그런 사람이 있을지는 모르겠지만, 커스텀롬을 가지고 놀다 IMEI를 잃어버리면 아래와 같은 방법으로 복구를 할 수 있었습니다. 그때 당시 통신사에서 기기의 정보를 얻어갈 때 IMEI를 얻어서 기기의 IMEI가 통신사 DB에 저장이 되어 있는지(이걸 화이트리스트라 부르며, 국내 정발된 제품들은 모두 화이트 리스트에 올라 있습니다. 직구한 경우는 보통 통신사 화이트리스트에 존재하지 않아 바로 사용이 불가능했습니다. 따라서 직구한 후 통신사와 연락해서 직구폰의 IMEI를 화이트리스트에 개별적으로 올렸던 걸로 기억합니다.) 확인 후 네트워크 접근에 대해 허가를 했었습니다.
커스텀롬 가지고 놀다 복구하기 위해 하신다면 그런 건 괜찮습니다. 그런데 세상에는 롬질하다 IMEI 날려먹는 귀여운 꼬마 친구보다 나쁜 친구들이 더 많습니다. IMEI 변조가 가능해지는 순간 스마트폰 시장 질서에 큰 문제가 생깁니다. 일단 스마트폰을 구입하면서 보험 가입후 분실처리하는 경우를 예로 들 수 있습니다. 실제로는 가지고 있는데도 잃어버렸다 거짓말을 합니다. 그렇게 되면 분실 당한...스마트폰의 IMEI는 블랙리스트에 올라 사용할 수 없는 상태가 됩니다. 여기서 중고로 화면만 겨우 나오는 갤럭시S를 구입해 갤럭시S의 IMEI를 새 스마트폰에 덮으면 새 스마트폰은 완벽히 신분을 변조해서 쓸 수 있게 되는겁니다.
이정도만 해도 양반입니다. 장물업자들이 장물을 대거 매입해 이렇게 신분세탁을 해나갈 수도 있습니다. 이런 문제로 인해 제가 요즘 IMEI 구조를 따로 분석하지는 않았지만 분명 IMEI에 관한 보안이 더욱 철저해졌으리라 생각하고 있습니다. 그런 의미에서 이 시점에서 이 글은 여러분께 IMEI 복구 및 변조에 관한 직접적인 해결책은 되기 어렵습니다. 정말 IMEI 변조가 필요하다 싶으시면 직접 노력해보시길 바랍니다. 이 글을 읽는 분이 미성년자라면 부모님께 혼나지 않기 위해 하실테고, 장물업자라면 돈을 벌기 위해 변조를 시도하실텐데, 둘 다 의지는 충만하니 불가능은 없으리라 믿습니다. 어느 쪽이든 일단 이 철옹성을 뚫으려는 그 시도 자체는 응원하겠습니다.
- 사건의 전말
- 갤럭시S3 LTE KT(SHV-E210K)에 S5 Sansation 롬을 올림
- 갑자기 SIM 인식을 못함
- 디바이스 정보를 보니 기저대역 버전을 잡지 못합
- 그외에 IMEI, IMEI SV 등 모든 통신에 대한 정보를 잡지 못함
- 해결
- 기저대역 버전을 잡지못함---> 순정롬에서 국내 모뎀만 빼서 Odin으로 올려봤으나 실패,
- imei를 잡지 못함--->백업본 압축을 풀어서 /efs/폴더에 넣음-->재부팅후 다시 휘발
- 현재 백업본 efs.tar.gz 밖에 없어서 파일에서 .gz부분 제거한 efs.tar 을 Odin으로 올림-->Odin 중지
- 구글링중 xda에 좋은 정보가 있어서 해봄--->백업본 압축을 풀고 내장 /efsbackup폴더에 넣어서 리키버리에 들어가 /efs/ mount후에 제공하는 zip파일 설치-->실패
- 사실 3번은 philz recovery에 efs mount 버튼이 없어서 skip.
- 3번에 같은 xda 게시물에 다른 방법이 있어 해봄--->2번처럼 다 efs 폴더에 넣고, terminal emulator 실행해서 su, chown 1001:1001 /efs/nv_data.bin 입력-->
- 5번 방법을 해보았으나 Read-only file system 오류가 뜸
- 이제 efs 복구가 아닌 efs파티션 복구로 눈을 돌림
- 디벨로이드에서 갤럭시s2 efs.img 가 있어 올림
- IMEI가 0000000000 으로 뜨지만 일단 파티션은 복구되었는지 efs 영역이 복구되었는지 전화번호랑 기저대역 버전을 잡음
- 자신감을 얻고, efs 파티션이 복구되었다는 가정 하에 2번처럼 함. 대신 5번의 su, chown 1001:1001 /efs/nv_data.bin 입력도 했는데 방법을 조금 다르게함
- su, chown 1001:1001 /efs/nv_data.bin 명령어는 정리하면 su권한 얻은채 /efs/nv_data.bin 파일의 권한은 rwx------ 으로 하란 소리니깐
- root explorer에서 수동으로 권한 적용 후 리붓
- 성공
자, 제가 해온 건 여기까지 입니다.
공통을 사용할 수 있는 방법을 알려드립니다(단, 기본적으로는 백업본이 필요하지만 백업본이야 만들면 됩니다. 백업 안했어도 꼼수가 있죠.)
1. 백업본이 있다면
efs가 날아간 건지, efs 파티션이 날아간 건지 확인합니다.
efs가 날아갔다면 그냥 그자리에 백업본 압축 풀어서 채워 넣고 nv_data.bin 권한만rwx------로 주면 꿑납니다.
하지만 파티션이 날아갔다면 권한 변경시 오류 메시지가 뜨기 마련이죠. 마치 "일부 파일 시스템은 권한 변경(예:SD카드)를 허용하지 않습니다"
그럼 어떻게든 일단 파티션이 날아갔습니다. 이는 img로 복구하면 될 것 같긴 한데 저처럼 efs.tar.gz밖에 없으신 분들은 난감할 겁니다.
혹시 img로 복구해도 안되는 경우는 다음의 파일을 Odin의 AP(3.09 기준) 에 넣고 올려주시기 바랍니다.
21/07/22추가내용--> 당시에는 아래 걸 사용해서 수정했지만 아시다시피 아래 파일은 노트2해외판(N7100)의 ND3 펌웨어의 efs 영역입니다. 기종과 기종에 설치된 펌웨어의 정보가 일치하는 efs 파티션을 구해 Odin에서 업로드 해야 합니다!
3_KH435987_REV05_user_low_ship.tar.md5
그럼 기저대역을 비롯해서 대부분의 정보가 잡히고 efs 파티션은 복구가 될 겁니다.
다만, imei는 0000000으로 뜨겠죠.
그 때 그자리에 백업본 압축 풀어서 채워 넣고 nv_data.bin 권한만rwx------로 주면 꿑납니다.
2. 백업본이 없다면?
!! 이 부분은 불법적인 내용을 포함하고 있습니다. 절대 따라하지 마십시오!
혹여나! 백업을 안했어요!
걱정마십시오 섣부른 두려움이 판단을 흐리게 합니다. 기본적으로 모든 휴대폰은 자신만의 efs/imei를 가지고 있죠.
집에 굴러다니는 갤럭시폰, 액정이 나가 화면이 안보이는 갤럭시폰을 써먹으십시오!
그 폰들의 efs를 백업해서 당신이 현재 쓰고있는 폰에 복구하는 겁니다.
어차피 그 폰들은 안쓰니까요.
그래서 어떻게 해야 하나요?
화면이 안나오는데 어떻게 백업해요?
화면은 죽었어도 보드는 살아있습니다. adb를 이용합시다.
ADB(Android Debug Bridge)
원래 디버깅하는 툴인데, 이를 이용해서 루트권한을 얻고 /efs영역의 폴더를 통째로 복사해옵시다.
그걸 갖다 쓰고 있는 폰에 붙여 넣으면 끝나죠. 경우에 따라 개발자 모드에서 usb 디버깅이 켜져있어야 하는 경우도 있습니다.
1.adb를 다운받습니다.
2.삼성 통합 usb 드라이버를 다운받습니다.
3.adb 압축을 풉니다. 환경변수 설정도 있으나 당신은 개발자가 아니므로 skip합니다. 여기서는 adb폴더를 C:\에 위치시켜뒀습니다.
4.Window +R 키를 실행해 실행 프로그램을 실행한 후 cmd를 쳐서 명령 프롬프트가 나타나도록 합니다
5. cd C:\adb 입력(C:\adb위치로 cmd의 명령타겟을 옮깁니다.)
6.adb shell su 입력합니다.
7. adb pull /efs C:\efs 명령어를 칩니다(폰의 /efs 이하 내용을 C:\efs로 싹 복사합니다)
8. 1. 백업본이 있다면부분을 따라하시면 됩니다.
여담이지만, adb를 이용해서 액정나간 휴대폰의 사진도 복구할 수 있죠.
방학이라 글도 좀 올리고 해야하는데.. 엉망입니다.
Tiny N-Screen도, Microsoft Visual Studio로 하루만에 끝내는 C언어, 진행중인 아두이노 프로젝트 모두 깜깜합니다.
어쨌든 감사합니다!