All posts by RSR

WAP2 KEY 변환

일반적으로 공유기에서 특정 ASCII를 WPA passphrase로 사용하지 못하게 막고있다.
이런경우

과 같이 필터링을 당하게 되며 스크립트단에서 넘긴다 하더라도 공격시도로 인해 세션이 끊어지게 된다.
ASCII 외에 HEX 옵션이 있는경우 SSID와 WPA passphrase를 이용하여 키를 계산해서 HEX값으로 넣어줄 수 있다.
http://jorisvr.nl/wpapsk.html 와 같은 웹베이스 계산기를 사용하여도 되지만 보안상 찝찝하다면 아래의 파이썬 코드를 실행하면 된다.

from pbkdf2 import PBKDF2
ssid = 'home' 
phrase = 'qwerty123'
print "SSID: "+ssid
print "Pass phrase: "+phrase
print "Pairwise Master Key: " + PBKDF2(phrase, ssid, 4096).read(32).encode("hex")

파이썬 코드는 https://medium.com/@billatnapier/wpa-2-hash-cracking-3098befd1300 에서 참조하였다.

실행시 나오는 Pairwise Master Key항목을 이용하여 WPA2 세션을 진행할 수 있다.

Flac Wav파일 CUE로 분할 및 태그 정리

*.cue로 *.wav 분할하기 (flac 가능, 결과는 wav로..)

shnsplit -f *.cue *.wav -t “%n %t”

분할된 wav를 다시 flac 압축

flac *.wav

CUE를 기반으로 Tag 생성 (cuetools 필요)

cuetag.sh *.cue *.flac

TAG를 기반으로 Filename 변경

for a in *.flac; do
ARTIST=`metaflac “$a” –show-tag=ARTIST | sed s/.*=//g`
TITLE=`metaflac “$a” –show-tag=TITLE | sed s/.*=//g`
TRACKNUMBER=`metaflac “$a” –show-tag=TRACKNUMBER | sed s/.*=//g`
mv “$a” “`printf %02g $TRACKNUMBER` – $ARTIST – $TITLE.flac”
done

ref.

https://wiki.archlinux.org/index.php/CUE_Splitting
http://lglinux.blogspot.com/2008/10/use-flac-tags-to-rename-files.html

LG G6 Music Player 분석

최근 G6 Pro를 중고로 구매하면서 가지고있던 음원들을 싹 정리하였다.
하는김에 가사도 정리하려고 metaflac을 이용하여 LYRICS 태그를 추가하였음에도 가사가 뜨지 않아 apk를 추출하여 로직을 확인하게 되었다.

아래는 확인한 com.lge.music.MusicUtils 클래스의 getLyrics 메서드

    public static String getLyrics(Context context) {
        if (mPlayType != Defs.PLAY_TYPE_LOCAL) {
            ELog.m111d("It is not Local Type.");
            return null;
        }
        try {
            String contentPath = sService.getPath();
            String lyricsText = "";
            if (contentPath == null) {
                return lyricsText;
            }
            String filePath = getFilePath(context, contentPath);
            String lyricsTemp = null;
            if (!TextUtils.isEmpty(filePath)) {
                String mimeType = getMimeTypeFromData(context, filePath);
                ELog.m111d("mimeType : " + mimeType);
                if ("audio/flac".equals(mimeType) || "audio/vorbis".equals(mimeType) || "application/ogg".equals(mimeType)) {
                    MediaExtractor mediaExtractor = new MediaExtractor();
                    mediaExtractor.setDataSource(filePath);
                    lyricsTemp = mediaExtractor.getTrackFormat(0).getString("unsynced-lyrics");
                } else {
                    Lyrics file = new Lyrics(filePath);
                    if (file != null) {
                        lyricsTemp = file.getLyricsText();
                    }
                }
                ELog.m111d("lyricsTemp : " + lyricsTemp);
            }
            if (TextUtils.isEmpty(lyricsTemp)) {
                return "";
            }
            return lyricsTemp.replace("\n\r", StringUtil.f539LF).concat(StringUtil.f539LF);
        } catch (Exception e) {
            ELog.m114e("Exception:: " + e.toString());
            return null;
        }
    }

flac, vorbis 타입은 안드로이드의 MediaExtractor를 이용하여
lyricsTemp = mediaExtractor.getTrackFormat(0).getString(“unsynced-lyrics“); 를 실행하여 가사를 가져오는것으로 확인된다.

아래 metaflac 명령어를 이용하여 “UNSYNCEDLYRICS” 태그로 추가하니

metaflac --set-tag="UNSYNCEDLYRICS=TEST LYRICS
TEST LYRICS
TEST LYRICS
TEST LYRICS
TEST LYRICS" test.flac

 

가사가 잘 뜬다.

ps

“setprop persist.service.main.enable 1″을 하면 로그를 볼 수 있다.
삼성이나 서드파티앱에서 지원되는 LRC와 같은 싱크가사는 지원되지 않는다. ㅠ

Lineage OS 16 on LG G2 F320

쓸때없는 서론

2013년 8월에 런칭한 LG G2에 최신의 Android PIE를 올려보았다.
해외제품인 d80x시리즈는 Lineage OS에서 정식으로 지원되어 별탈없이 공식지원되는 이미지를 사용하면 별탈없이 사용가능하나, 일부사양변경된 국내형 F320x의 경우 정상적인 부팅이 되지 않았다.

관심없는 과정

부팅과정을 분석하여 Kernel 부터 로드가 제대로 되지않음을 확인하여 Kernel을 리빌드 해보기로 하였다.
Lineage OS의 빌드 가이드에 따라 “breakfast d802” 명령까지 실행하고 커널만 빌드하기 위해 “make bootimage” 커맨드를 사용하였다.

커널이 로드가 안되는 이유로 대상장비와 커널의 Device Tree가 맞지않음을 확인하였고 이를 맞춰주기위해 이전에 사용하던 Lambda 커널의 DTB를 추출하여 사용하였으나 부팅실패.
빌드과정에서 DTB를 바꿔서 빌드하는 등 여러가지 시도 끝에 부팅에 성공했으나 터치스크린 인식이 되지 않아 확인결과 D802와 F320의 변경사항중 하나로 터치스크린에서 사용하는 드라이버가 다른것으로 확인.
터치를잘되게 만들었으나 WiFi인식불량, 역시 드라이버 초기화 문제, 스피커 소리가 나지 않는등 여러가지 문제가 발생하였고

하나씩 수정하여 해결하다가 그냥 이글요글을 토대로 디바이스 포팅과정을 진행하게 되었다.

대충 요약하면
기본이 될 ~/android/lineage/device/lge/d802를 f320으로 복사하고 안의 내용을 적당히 수정해주고 (대부분 d802 문자를 찾아 f320으로..)
~/android/lineage/vendor/lineage/vendorsetup.sh파일 끝에 “add_lunch_combo f320” 추가,
이후 breakfast f320을 실행하고 커널빌드 순으로 진행하였다.

커널 설정파일(lineageos_f320_defconfig)의 짜깁기가 좀 필요했으며 삽질끝에 정상부팅가능한 커널이미지를 빌드하게 되었다.

설치 방법

아래 과정을 진행함에있어 부팅불가, 데이터 삭제 등의 문제에 대해 저는 책임지지 않습니다.
초보자분들은 따라하지 않았으면 하는 바램에 자세히 설명하지 않습니다.

루팅, 리커버리 플래싱 과정은 생략
공식지원되는 D802 이미지를 다운받아 \META-INF\com\google\android\updater-script의 디바이스 체크 구문을 지우고 TWRP를 통해 플래싱
myboot_f320_v_1.0.bin을 다운받아 해당 디렉토리에서 아래의 커맨드 실행
adb push myboot_f320_v_1.0.bin /sdcard/
adb shell dd if=/sdcard/myboot_f320_v_1.0.bin of=/dev/block/platform/msm_sdcc.1/by-name/boot
기호에 따라 기존데이터 삭제 (매우 권장)
재부팅 (첫 부팅에 5분정도 소요)

인증

lineage-16.0-20190524와
lineage-16.0-20190529버전에서 정상동작 확인

확인된 기능

부팅, 터치, 소리, 와이파이, 카메라

알려진 문제점

노인학대의 끝장판이다 보니 동작이 느리다.
댓글달아주시면 감사합니다. <수정할 시간은 없고, 여기 내용 추가해드릴게요>

여담

보유하고 있던 G2 4대중 1대는 중고방출, 1대는 액정파손, 2대는 액정터치불량으로 판매를 제외하면 모든 기기에서 액정문제가 발생했다.
보유하고 있던 G2의 배터리 4개중 3개에서 스웰링이 발생하였다 (무려 75%)
LG의 초기대응은 어땠는지 모르겠지만 본인의경우 서비스센터에서 잘 수리해줬다. (사실 그래서 이번 포팅도 생각해본것)

G6 Plus 모델 삽니다. 구매완료