> Gemini 통해 작업하고, 결과 Gemini 로 정리한 내용

Alldocube iPlay 50 mini 모델에 GSI(LineageOS 등)를 설치하면서 겪을 수 있는 모든 시행착오와 해결 방법을 정리한 블로그 포스팅 초안입니다. 기술적인 깊이와 독자들의 이해를 돕는 가이드 형식으로 작성했습니다.


iPlay 50 mini GSI 설치 완벽 가이드: NFE 모델 구분부터 vbmeta 보안 해제까지

안드로이드 태블릿 커스텀 롬 설치는 즐거운 여정이지만, Unisoc(Spreadtrum) 칩셋을 사용하는 Alldocube 기기들은 생각보다 까다로운 보안 체계를 가지고 있습니다. 특히 최근 iPlay 50 mini 시리즈는 '일반 모델'과 'NFE(Netflix Edition)' 모델이 섞여 있어 펌웨어 선택부터 주의가 필요합니다.

수많은 시행착오 끝에 찾아낸 가장 안전하고 확실한 부트루프 탈출 및 GSI 설치 경로를 공유합니다.


1. 첫 번째 함정: 내 태블릿은 NFE인가, 일반 모델인가?

가장 먼저 확인해야 할 것은 모델의 정확한 버전입니다. 두 모델은 외형이 거의 같지만, 펌웨어는 전혀 호환되지 않습니다.

  • 일반 모델 (Standard): Widevine L3 등급으로 넷플릭스 등 OTT 화질이 SD로 제한됩니다.
  • NFE 모델 (Netflix Edition): Widevine L1 등급으로 넷플릭스 FHD 화질을 지원합니다.

주의: NFE 기기에 일반 펌웨어를 올리거나 그 반대로 진행할 경우, 부팅 과정에서 커널 패닉(Kernel Panic)이 발생하며 10~20초 간격으로 무한 재부팅되는 지옥을 맛보게 됩니다. 반드시 자신의 모델명(T811 등)과 박스에 적힌 NFE 로고를 확인하세요.


2. 보안의 핵심: vbmeta와 '120번째 바이트'의 비밀

GSI 롬을 올리기 위해서는 안드로이드의 보안 검증 시스템인 AVB(Android Verified Boot)를 비활성화해야 합니다. 보통 fastboot --disable-verity --disable-verification flash vbmeta 명령어를 사용하지만, Unisoc 기기에서는 이 명령어가 제대로 먹히지 않는 경우가 많습니다.

그 이유는 PC의 fastboot 프로그램이 vbmeta라는 이름의 파티션만 인식하여 변조하고, 나머지 vbmeta_system, vbmeta_vendor 등은 원본 그대로 쏴버리기 때문입니다.

해결책: 파이썬을 이용한 수동 변조

파일의 120번째 바이트(Flags) 를 직접 수정하여 보안 검증을 꺼야 합니다. 아래 파이썬 코드를 사용해 모든 vbmeta 관련 파일들을 -disabled.img 버전으로 만드세요.

Python
 
# 120번째 바이트를 3(검증 안 함)으로 수정하는 코드
data = bytearray(open('vbmeta.img', 'rb').read())
data[120] |= 3
open('vbmeta-disabled.img', 'wb').write(data)

3. 부트루프 탈출을 위한 '골든 패스' 5단계

만약 기기가 벽돌이 되었거나 부트루프에 빠졌다면, 아래 5단계 시나리오가 가장 완벽한 복구 경로입니다.

1단계: 순정 PAC 파일로 전체 복구

먼저 제조사에서 제공하는 순정 펌웨어(.pac)와 SPD ResearchDownload Tool을 사용하여 기기를 공장 출고 상태로 되돌립니다. 이때 반드시 모델(NFE 여부)에 맞는 파일을 사용하세요.

2단계: CVE 취약점을 이용한 BootROM 언락 (가장 중요)

PAC 파일로 복구하면 부트로더가 다시 잠깁니다. spd_dump 등의 도구와 CVE 취약점을 이용하여 BootROM 수준에서 부트로더를 다시 언락해야 합니다. 화면에 UNLOCK FLAG IS UNLOCK!!!이 떠야 다음 단계가 가능합니다.

3단계: fastbootd 진입 및 vbmeta 주입

리커버리를 거쳐 fastbootd(빨강/초록 글씨 화면) 로 진입합니다. 여기서 아까 직접 만든 vbmeta-disabled.img를 주입합니다.

  • 핵심: 메인 vbmeta만 변조된 파일을 쓰고, 나머지(system, vendor 등)는 가급적 순정 원본을 사용하는 것이 안전합니다. 하위 파일들이 너무 작으면 변조 시 구조가 깨질 수 있기 때문입니다.

4단계: 필수 파티션 확인 (init_boot & dtbo)

안드로이드 13 이상의 기기에서는 boot 뿐만 아니라 init_boot(램디스크)와 dtbo(하드웨어 설계도) 파티션이 짝이 맞아야 합니다. 펌웨어 복구 시 이 부분들이 누락되지 않았는지 꼭 확인하세요.

5단계: Wipe Data (암호화 해제)

보안 설정(vbmeta)을 바꿨다면, 기존의 암호화된 데이터와 충돌이 납니다. 반드시 리커버리 모드에서 Wipe data/factory reset을 실행해야 부팅이 시작됩니다.


4. 마치며: GSI 설치를 앞둔 분들에게

iPlay 50 mini는 가성비 최고의 태블릿이지만, 커스텀 롬 설치 과정은 결코 만만치 않습니다. 하지만 모델 버전 일치BootROM 언락정확한 vbmeta 변조 이 세 가지만 기억한다면 벽돌의 공포에서 벗어나 LineageOS의 쾌적함을 누릴 수 있습니다.

지금 부트루프 때문에 고민하고 계신다면, 다시 처음(PAC 복구)부터 차근차근 단계를 밟아보세요. 논리적인 순서만 지킨다면 기기는 반드시 살아납니다!

Posted by Parker Falcon

서버 비슷하게 사용하고 있는 2010 MID MacBook Pro 15inch 의 팬이 고장났는지 어느 날 부터 갑자기 달달달 소리가 났습니다.


뜯어 보고 먼지 청소 해도 효과가 없어 알리익스프레스에서 호환 부품을 구매하였습니다.


https://www.aliexpress.com/item/Cooling-Fan-For-Macbook-Pro-15-4-A1286-Right-Left-CPU-Cooling-Fans-661-4952-922/32812092651.html


귀찮아서 사진을 안찍었습니다.


오른쪽 팬을 교체하였는데 걱정과 달리 아무 문제 없이 잘 작동중입니다.

Posted by Parker Falcon

Amazon RDS now supports MySQL 8.0

Posted On: Oct 23, 2018


Amazon RDS for MySQL 에 MySQL Community Edition 8.0 이 모든 리전에서 지원됩니다. MySQL 8.0 은 가장 최신 버전이며 쿼리 함수와 성능 향성, 안정성, 보안, 관리와 국제화 및 모바일 지원에서 좋아졌습니다. MySQL 8.0의 특징입니다.


  • 윈도우 함수 및 공용 테이블 표현(WITH 쿼리)로 쿼리 복잡도가 줄어듭니다.
  • JSON: JSON을 관계 테이블로 변환하고, JSON 객체를 합치고 모우고, JSON 객체의 출력, 범위 표현과 --> 연산자 지원, 그 자리에서 업데이트 및 정렬하는 성능 향상이 있었습니다.
  • GIS: 공간 데이터 타입, 인덱스가 지원됩니다. 또한 다음 함수들이 지원됩니다. 5,108 종류의 공간기준계를 지원하는데 여기에는 4,628 종류의 투영(평면 지도)과 479개의 타원체 형식의 지구, 그리고 카르테시안 추상면을 포함합니다.
  • 성능: MySQL 5.7에 비해 2배의 성능; InnoDB 성능이 읽기-쓰기 작업, IO 비중의 작업, 핫 스팟 작업(같은 곳을 처리하는 경쟁적인 쿼리), 복제 성능 향상; 내림 차순 정렬; 쿼리 실행 계획에서 사용하지 않는 투명 인덱스, 버퍼 풀의 내용에 맞춰 향상된 비용 모델; 그리고 일 부하에 따른 자원 사용의 우선순위를 사용자가 제어할 수 있는 리소스 그룹
  • 신뢰성: 원자적이고 크래시에서 안전한 Data Definition Language (DDL) 작업; 그리고 메타데이터를 통합된 트랜잭션 데이터 딕셔너리에 보관합니다.
  • 보안: 다수 사용자들에게 권한을 허가/차단하기 위한 권한들의 집합체인 역할(Roles); 비밀번호 정책과 재사용 정책 지원; OpenSSL을 기본 TLS/SSL 라이브러리로 사용
  • 관리성: 즉각적인 ADD COLUMN DDL 작업; 더 나은 모니터링을 위한 성능 스키마, 정보 스키마, 설정 변수와 에러 로그의 개선
  • 국제성과 모바일 지원: utf8mb4 가 기본 문자셋으로 지정



Amazon RDS for MySQL now supports MySQL Community Edition major version 8.0 in all AWS Regions. MySQL 8.0 is the latest major version release and offers new query functionality and enhancements for better performance, reliability, security, manageability, and international and mobile support. Highlights in MySQL 8.0 include:


Window Functions and Common Table Expressions (WITH queries) to reduce query complexity.

JSON: Functions for converting JSON to relational tables, merging JSON objects, and aggregation; utilities for sizing and printing JSON objects; support for range expressions and the ‘-->’ operator; and higher performance for partial in-place updates and sorting.

GIS: Spatial datatypes, indexes, and functions to support 5108 different Spatial Reference Systems, including 4628 projections (flat maps), 479 geographic (ellipsoidal) representations of Earth, and one Cartesian all-purpose abstract plane.

Performance: 2x higher performance versus MySQL 5.7; InnoDB performance optimizations for read-write, IO-bound, and high-contention “hot spot” workloads; replication performance improvements; descending indexes; invisible indexes; cost model improvements to account for contents of the buffer pool; and Resource Groups to allow users to control and prioritize resource usage by workload.

Reliability: Atomic, crash-safe Data Definition Language (DDL) operations; and a unified, transactional data dictionary for metadata.

Security: Roles, which are named collections of privileges, for granting and denying permissions to groups of users; support for password strength and password reuse policies; and use of OpenSSL as the default TLS/SSL library.

Manageability: Instant ADD COLUMN DDL operations; and Performance Schema, Information Schema, Configuration Variables, and Error Logging improvements for enhanced observability.

International and mobile support: utf8mb4 as the default character set.

To learn more about Amazon RDS for MySQL 8.0 and how to upgrade your database instances, please refer to the Amazon RDS User Guide. Launch a new Amazon RDS for MySQL 8.0 database instance or upgrade your current instance with just a few clicks in the AWS Management Console.


Posted by Parker Falcon

Announcing the general availability of Bring Your Own IP for Amazon Virtual Private Cloud

https://aws.amazon.com/ko/about-aws/whats-new/2018/10/announcing-the-general-availability-of-bring-your-own-ip-for-amazon-virtual-private-cloud/

Amazon VPC에서 사용자가 공개적으로 라우팅 가능하게 가지고 있는 공개 IP들를 AWS에서 사용할 수 있게 되었습니다.  Elastic IP를 만들 때 Bring Your Own IP 주소 대역에서 만들어 EC2, 네트워크 로드 발란서, NAT 게이트웨이등과 같은 AWS 자원들에 연동하여 사용할 수 있습니다. BYOIP 주소 대역에서 생성한 Elastic IP주소들은 기존에 Amazon 에서 생성한 Elastic IP와 완전 동일하게 작동합니다. BYOIP 주소 대역을 현재 위치에서 회수하며 AWS로 전파하는 과정을 잘 제어하여 이전 작업 동안 서비스 정지 시간을 최소화 할 수 있습니다.
Amazon Virtual Private Cloud (VPC) now allows you to bring your own publicly-routable IP address prefixes to AWS and advertise them on to the Internet. You can create Elastic IP addresses from your Bring Your Own IP (BYOIP) address prefix and use them with AWS resources such as EC2 instances, Network Load Balancers, and NAT Gateways. The Elastic IP addresses you create from BYOIP address prefix work exactly the same as Elastic IP addresses you get from Amazon. With control on advertising your BYOIP address prefixes, you can minimize your downtime during migration by simultaneously advertising your IP address prefix from AWS and withdrawing it from the current location.

만약 귀하의 어플리케이션이 사용하는 외부 서비스가 특정 IP에 대한 화이트리스트로 접근을 허용한다면, 어플리케이션들을 AWS로 이전하면서 외부 서비스 파트나와 고객들에게 화이트리스트의 IP 주소 변경을 요청할 필요가 없습니다.
BYOIP는 또한 IP주소의 평판을 믿는 상용 이메일 서비스를 사용할 때 기존에 사용하던 엔드포인트를 통하여 원하는 수취인에게까지 전달할 수 있게 하는데 유용합니다. 또한 일부 오래된 어플리케이션들에는 IP주소가 고정으로 잡혀있습니다. BYOIP를 통해서 해당 어플리케이션을 AWS로 이전 과정의 문제를 최소한으로 줄일 수 있습니다.

BYOIP를 사용하는데 추가 비용은 없습니다. 또한 BYOIP 주소 대역에서 생성된 Elastic IP 주소는 비용을 지불할 필요가 없습니다.
If your applications are using trusted IP addresses that your partners and customers have whitelisted in their firewalls, you can now move these applications to AWS without requiring your partners and customers to change their IP address whitelists. BYOIP is also useful for applications such as commercial email services that rely on IP address reputation to allow traffic from your endpoints to reach intended recipients. Some legacy applications have hard-coded IP address dependencies. Bring Your Own IP enables you to migrate such applications to AWS with minimal disruptions.

There is no additional charge to use the BYOIP feature. Also, you don’t have to pay for Elastic IP addresses that you create from BYOIP address prefixes.

현재 서비스는 US East(N. Virginia, Ohio), US West(Oregon)에서만 사용 가능합니다. 더 자세한 정보는 문서를 참고하십시오.
This feature is now publicly available in US East (N. Virginia), US East (Ohio) and US West (Oregon) AWS Regions. For more information about this feature, visit the Bring Your Own IP documentation.


Posted by Parker Falcon

SSR(Server-side Rendering) 이 필요하여 Angular 6 에서 Universal 기능을 추가했는데 계속 실패하였습니다.


계속 router-outlet 에서 더이상 SSR이 진행되지 않아 원인을 파악하고자 하였는데 놀랍게도 Google Analytics를 위한 모듈의 문제였습니다.


해당 기능을 모두 제외하고 나니 SSR이 정상적으로 잘 작동하였습니다.


SSR일 때는 GA를 끄도록 하는 설정이 필요할 것 같습니다.

Posted by Parker Falcon

CentOS7에 MariaDB 10.2를 올려놨는데 gitlab source로 돌리는 중에 새로 bundle install 하려다 보니까 mysql2 gem 설치랑 MariaDB 10.2 압축 풀기 설치가 안맞아서 결국 꼼수로 yum으로 MariaDB 임시로 설치해서 bundle install 하니까 겨우 넘어가네요 (기록용)

Posted by Parker Falcon

출처: http://blog.breakingiot.io/2015/08/compiling-staticly-linked-gdb-debugging.html



error: `LDFLAGS' has changed since the previous run


원인은 모르겠지만, 아래 명령 후 다시 컴파일/메이크 해서 성공함


root@kali:~/Desktop/gdb-7.9# updatedb
root@kali:~/Desktop/gdb-7.9# locate config.cache | xargs rm


Posted by Parker Falcon

http://regex101.com/r/sK0uG2/1


<a (target=\"_blank\" )?style=\"([^\"]+)\" href=\"http:\/\/bigmail.mail.daum.net\/Mail-bin\/bigfile_down\?uid=([^\"]+)\"( type=daum)?( target=[\"]?_blank[\"]?)?( type=\"daum\")?>\n?<strong style=\"([^\"]+)\">([^\<]+)<\/strong>[\n\s]?<\/a>

Posted by Parker Falcon
openssl 모듈을 추가하여 컴파일 하는 경우 ssl.h 파일에서 error 2 가 발생하는 경우가 있습니다.
정확한 원인은 알 수 없지만, 해결 방법은 다음과 같습니다.
1) 혹시 --with-openssl=/src/openssl-1.0.1g 옵션에 openssl의 소스가 아닌 설치 경로를 넣은 것은 아닌지 확인하자. 소스 경로를 넣어야된다.
2) make -j4 등 -j 옵션을 빼자. OpenSSL은 -j 넣으면 make가 잘 안된다
3) ./configure 옵션에서 --add-module 옵션은 전부 뒤로 빼자
Posted by Parker Falcon

Autobahn 에서 listenWS를 못찾는 경우가 있습니다.

from autobahn.websocket import listenWS         



위 HoneyProxy에서 이렇게 쓰고 있었습니다.


해결 방안은 autobahn.twisted.websocket import listenWS 식으로 바꾸는 것 입니다.

Posted by Parker Falcon