반응형

안드로이드 앱 개발 시 반드시 필요한게 keystore.jks 파일이다.

이 파일을 만드는 과정에서 비밀번호를 입력하는데 이를 잘 간수하지 않으면 나중에 생각이 안나서 난감해진다.

이렇게 비밀번호를 잊어버린 경우 찾는 방법이 있다.

구글에서도 공식 문서를 만들어 배포하기 때문에 위험하거나 어려운 방식은 아니다.

비밀번호에 사용했을 것 같은 단어 리스트를 만들고 이를 프로그램을 통해 조합하여 대입하는 방식으로 비밀번호를 찾는 것이다.

물론 사람이 계속 대입해서 찾을 수도 있지만 시간과 노력이 많이 들어가는 만큼 이 방법을 사용하면 좋을 것이다.

또한 이 방법은 연상되는 단어가 없을 경우 무용지물이니 악용하기는 힘들 것 같다.

 

테스트 keystore.jks 파일 생성

일단 테스트를 위해 "C:\KeystoreFile" 경로에 keystore.jks 파일을 만들겠다.

비밀번호는 "qwe!123~ASD"로 설정한다.

Android Studio를 통해 keystore.jks 파일을 생성한다. 비밀번호는 "qwe!123~ASD".
keystore.jks 파일이 생성되었다.

 

비밀번호를 잊어버렸다 가정하고 아무 비밀번호를 입력하면 에러가 발생한다.

"asdf"를 입하면 에러발생

 

잃어버린 비밀번호를 찾아보자

아래 과정은 다음 문서를 보고 따라한 것이다.

https://code.google.com/archive/p/android-keystore-password-recover/wikis/HowTo.wiki

 

Google Code Archive - Long-term storage for Google Code Project Hosting.

 

code.google.com

1. Java 7 설치

이 포스트를 보고 있다면 Java는 설치됐을 것이기 때문에 패스해도 되지만 혹시 모르니 Java 버전을 확인해보자.

Win + R 단축키로 실행창을 열고 "cmd" 입력

cmd 창에 다음을 입력

java -version

나는 Javs 1.8.0_302 버전이 설치되어 있다.

일단 java가 설치되어 있으니 넘어가자.

 

2. 다음 경로에서 프로그램 다운로드

https://drive.google.com/file/d/0B_Rw7kNjv3BATldrLXMwcVRud2c/edit?usp=sharing

 

AndroidKeystoreBrute_v1.05.jar

 

drive.google.com

AndroidKeystoreBrute_v1.05.jar 파일을 다운로드 폴더에 다운로드한다.

Download 폴더에 다운된 AndroidKeystoreBrute_v1.05.jar 파일

이 파일은 아래 생성할 wordlist.txt에 입력된 단어를 조합하여 사람을 대신해 비밀번호를 입력하고 비밀번호를 알아내는 프로그램이다.

 

3. wordlist.txt 파일 생성하기

편의를 위해 AndroidKeystoreBrute_v1.05.jar 파일과 같은 경로인 Download 폴더에 wordlist.txt 파일을 생성한다.

Download 폴더에서 우클릭 후 text 파일 생성
wordlist.txt로 이름 변경

wordlist.txt 파일을 열고 연상되는 비밀번호의 단어 조각을 입력한다.

테스트 keystore 파일의 비밀번호를 "qwe!123~ASD"로 설정했으니 다음과 같이 단어의 조각들을 입력하고 저장한다.

123
qwe
ASD
!
~

 

4. AndroidKeystoreBrute_v1.05.jar 파일을 실행하여 wordlist.txt에 입력된 문자를 기반으로 비밀번호 찾기 실행

아까처럼 Win + R 단축키로 cmd를 열고 다음을 입력한다.

(AndroidKeystoreBrute_v1.05.jar, keystore.jks, wordlist.txt 파일의 경로는 본인의 경로를 입력)

java -jar C:\Users\A\Downloads\AndroidKeystoreBrute_v1.05.jar -m 3 -k "C:\KeystoreFile\keystore.jks" -d "C:\Users\A\Downloads\wordlist.txt"

AndroidKeystoreBrute_v1.05.jar 프로그램이 wordlist.txt 파일에 입력한 단어를 조합하여 비밀번호를 찾아준다.

단어를 조합하여 8초만에 "qwe!123~ASD" 비밀번호를 찾았다.

 

5. 자 이제 비밀번호를 잊어버리지 않게 잘 간직하자!!!

 

 

반응형

'Dev Story' 카테고리의 다른 글

[macOS] Ventura에서 Monterey로 다운그레이드 하기  (0) 2023.03.04
[Graphics] Variance shadow maps  (0) 2023.01.31
[C++] pragma pack(1)  (1) 2022.06.09
반응형

맥에서 언리얼 엔진4 C++ 프로젝트를 빌드하려 보니 xcode14에서 다음과 같은 에러가 났다.

Cannot code sign because the target does not have an Info.plist file

 

이것저것 찾아보니 xcode13에서 빌드해야하는데 xcode13은 Ventura에서 실행이 안된다고 한다.

따라서 가장 먼저 MacOS를 Monterey로 다운 그레이드 해야한다.

 

부팅 디스크 만들기

일단 Monterey라는 특정 버전으로 설치해야하기 때문에 부팅디스크를 만들어 설치하기로 하고 부팅 디스크를 만들기 위해 AppStore에서 Monterey 다운로드 받았다.

App Store에서 Monterey를 받는다.

다운받은 Monterey는 Application 폴더에 있다.

Application 폴더에 받아진 Monterey.

당연하지만 이 상태에서 바로 설치는 불가능하다.

Ventura에서 바로 다운그레이드는 안된다.

 

부팅 디스크를 만들기 위해 다음 애플 공식 문서를 참고하였다.

https://support.apple.com/ko-kr/HT201372

 

부팅 가능한 macOS용 설치 프로그램 생성하기

외장 드라이브나 보조 볼륨을 시동 디스크로 사용하여 Mac 운영 체제를 설치할 수 있습니다.

support.apple.com

"사용 가능한 저장 공간이 14GB 이상 있고 Mac OS 확장으로 포맷된 USB 플래시 드라이브"가 필요하므로 USB 메모리를 꼽고 디스크 유틸리티를 실행하여 USB를 Mac OS 확장포맷으로 포맷해줬다.

USB 메모리 포맷

 

그 후 터미널을 열고 다음 명령어를 입력하니 설치가 부팅가능한 USB 메모리가 됐다.(왠일로 한 번에 성공)

MyVolume 부분을 자신의 USB 이름으로 변경하고 실행하면 된다.

만약 공백이 있으면 "로 감싸준다.

sudo /Applications/Install\ macOS\ Monterey.app/Contents/Resources/createinstallmedia --volume "/Volumes/My Volume"

터미널에서 부팅디스크 만들기. 100%가 될 때까지 기다리면 된다.

 

Ventura 삭제

지금 설치된 Ventura를 제거하기 위해 맥을 재시동하며 Shift+Option+Command+R을 누르면 다음과 같은 복구 모드가 나온다.

일단 네트워크를 선택
복구모드로 부팅중
macOS 유틸리티 실행 완료 (Ventura 일 때 찍은 사진이 없어서 Monterey로 다운그레이드하고 다시 찍은 사진)

 

디스크 유틸리티를 선택하고 지금 Ventura가 설치된 볼륨을 삭제하며 볼륨의 이름은 "Mac"으로 포맷은 "APFS"로 설정한다.

과감히 삭제.
Ventura 삭제 완료.

이제 삭제된 볼륨에 컨테이너를 추가하여 MacOS를 설치할 수 있게 만들어 준다.

볼륨을 선택하고 컨테이너를 추가한다.(볼륨 + 버튼을 눌렀던거 같다.)
볼륨이름이 사진에는 "무제"이지만 "Mac"으로 입력하고 컨테이너를 추가했다.

 

Monterey 설치

Monterey가 설치된 USB를 꼽은 상태로 맥을 재시동하며 Option을 누르고 있으면 부팅 디스크 선택모드가 나온다.

option 버튼을 꾸욱 누른다.
Monterey 부팅디스크가 꼽혀있으면 다음과 같이 설치 가능 옵션이 나온다.

Install macOS Monterey를 클릭하여 다음으로 넘어가면 복구모드가 나타나고 "macOS Monterey 설치"를 선택하여 설치한다.

"macOS Monterey 설치"를 선택
설치중... 난 아이맥 2017 이라서 30분정도 걸렸다.
설치 완료.

자 드디어 Monterey로 다운그레이드 했다.

맥은 업그레이드를 아무 생각없이하면 안된다는 교훈을 얻었다.

반드시 사용해야하는 프로그램이 있다면 확인하고 macOS를 업그레이드 하길 바란다.

Ventura가 더 편한거 같지도 않았다...

이제 Monterey에 맞는 어플을 설치해서 즐기면 된다~~

 

반응형

'Dev Story' 카테고리의 다른 글

[Android] keystore 비밀번호 찾기  (0) 2023.03.05
[Graphics] Variance shadow maps  (0) 2023.01.31
[C++] pragma pack(1)  (1) 2022.06.09
반응형

Variance shadow maps are a type of shadow mapping technique used in 3D graphics to accurately represent the shadows cast by 3D objects in a scene. They are designed to eliminate the artifact known as "shadow acne" (where shadows appear as dots or jagged lines on the surface of objects) and provide more consistent and smooth shadows.

The variance shadow map algorithm uses two maps to store information about the depth of the shadow: a depth map, which stores the depth of each pixel from the light source, and a variance map, which stores the variance of that depth value. The depth map is used to calculate the shadows and the variance map is used to determine the quality of the shadows.

Variance shadow maps provide more accurate shadows by using a statistical approach to calculate the shadow values. They are also faster than traditional shadow maps because they reduce the number of samples needed to get accurate shadow results.

Overall, variance shadow maps offer a better representation of shadows in 3D graphics compared to traditional shadow maps, making them an important tool for creating realistic and immersive 3D environments.


분산 그림자 맵은 장면에서 3D 객체가 드리우는 그림자를 정확하게 표현하기 위해 3D 그래픽에 사용되는 일종의 그림자 매핑 기술입니다. 그들은 "그림자 여드름"(그림자가 개체 표면에 점이나 들쭉날쭉한 선으로 나타나는 현상)으로 알려진 아티팩트를 제거하고 보다 일관되고 부드러운 그림자를 제공하도록 설계되었습니다.

분산 그림자 맵 알고리즘은 그림자의 깊이에 대한 정보를 저장하기 위해 두 개의 맵을 사용합니다. 광원에서 각 픽셀의 깊이를 저장하는 깊이 맵과 해당 깊이 값의 분산을 저장하는 분산 맵입니다. 깊이 맵은 그림자를 계산하는 데 사용되고 분산 맵은 그림자의 품질을 결정하는 데 사용됩니다.

분산 그림자 맵은 그림자 값을 계산하기 위해 통계적 접근 방식을 사용하여 보다 정확한 그림자를 제공합니다. 또한 정확한 그림자 결과를 얻는 데 필요한 샘플 수를 줄이기 때문에 기존 그림자 맵보다 빠릅니다.

전반적으로 분산 그림자 맵은 기존 그림자 맵에 비해 3D 그래픽에서 그림자를 더 잘 표현하므로 사실적이고 몰입감 있는 3D 환경을 만드는 데 중요한 도구입니다.

반응형
반응형

서버와 주고 받는 패킷을 정의하는 코드 상단에 #pragma pack(1)이란 전처리문을 발견했다.

이 전처리문은 이 후 정의되는 구조체의 크기를 1바이트 단위로 지정할 수 있도록 한다.

구조체의 크기는 프로그램이 실행되는 플랫폼에 따라 데이터가 처리될 때 가장 빨리 실행될 수 있는 데이터의 기본 단위로 맞춰진다. 32/64비트의 운영체제에서는 4바이트가 기준이다. 만약 구조체의 크기가 4의 배수가 안될 경우 패딩비트라는 것으로 채워서 어떻게든 4바이트를 만들어 처리 속도를 최적화 한다.

그런데 서버와 패킷을 주고 받는 경우 1바이트 단위가 아니면 전송 데이터가 늘어나고 패킷을 처리하는 데이터 단위가 달라질 수 있다. 

이를 막기 위해 운영체제와 상관없이 무조건 1바이트 단위로 구조체의 크기를 결정하도록 하는 전처리 지시문이 #pragma pack(1)이다.

pack(1)에서 숫자 1을 2로 바꾸면 2바이트 단위로 구조체의 크기를 결정하게 된다.

이렇게 구조체의 크기 단위를 임의로 설정하는 구간이 끝나면 #pragma pack()으로 다시 기본 상태로 돌려 놓아서 다른 구조체의 크기 최적화를 방해하지 않도록 한다.

 

// #pragma pack(1)를 지정하지 않은 경우
typedef struct A_ { char c; } A;
int main()
{
    A a;
    sizeof(a); // 크기가 4byte로 나온다.
}


// ------------------------------ //

// #pragma pack(1)를 지정하여 구조체의 기본 크기 단위를 1바이트로 저정한 경우
#pragma pack(1)

typedef struct A_ { char c; } A;
int main()
{
    A a;
    sizeof(a); // 크기가 1byte로 나온다.
}

// 구조체의 기본 크기 단위를 플랫폼 기본값으로 설정하여 구조체의 기본 크기를 4byte로 돌린다.
#pragma pack()

 

참고

https://hydroponicglass.tistory.com/229

 

[C, C++] pragma pack 개념과 사용이유

구조체의 크기 구조체의 크기는 구조체 변수 중 크기가 가장 큰 자료형을 기준으로 배수만큼 커진다. 즉 구조체의 크기는 변수의 크기에 패딩비트(구조체 크기를 가장 큰 자료형 기준으로 배수

hydroponicglass.tistory.com

https://docs.microsoft.com/ko-kr/cpp/preprocessor/pack?view=msvc-170 

 

팩 pragma

Microsoft C/C++의 pack pragma 지시문에 대해 자세히 알아보기

docs.microsoft.com

 

반응형
반응형

UE4.19.2에서 모델을 불러왔을 때 머티리얼이 적용안되는 경우가 있다.

머티리얼에 문제가 있는 것 같아 머티리얼을 열어보니 다음과 같이 에러가 나있었다.

"Metal Shared PCH generation failed"로 검색하니 그냥 엔진 업데이트하여 해결했다는 글이 있어서 4.26으로 업그레이드하니 해결되었다.

 

UE4.26에서 해결된 모습

 

참고

https://answers.unrealengine.com/questions/853042/problem-with-ue-419-on-mojave.html

반응형
반응형

윈도우10에서는 스크린 캡처 기능이 예전과 다르게 많이 좋아졌다.

물론 픽픽 같은 전문 프로그램에 비할바는 아니지만 일반적인 용도에서는 기본 캡처 기능만 사용해도 부족함 없이 사용 가능해졌다.

 

여러가지 캡처 방법

1. 전체화면 캡처

- 단축키 : [Print Screen]

- 단순하게 전체화면을 캡처하여 클립보드에 저장한다.

2. 활성화된 창 캡처

- 단축키 : [Alt] + [Print Screen]

- 현재 활성화된 윈도우만 캡처하여 클립보드에 저장한다.

3. 캡처 방법을 선택하여 캡처

- 단축키 : [Shift] + [Win] + [S]

- 화면 상단에 캡처 메뉴가 나오는데 여기서 '사각형 캡처', '자유형 캡처', '창 캡처', '전체 화면 캡처' 등의 방법을 선택하여 캡처할 수 있다.

- 이 단축키만 기억해도 캡처를 다양하게 사용할 수 있다.

Shift + Win + S 눌렀을 때 나오는 캡처 메뉴

4. 전체화면 캡처 후 파일로 저장

- 단축키 : [Win] + [Print Screen]

- 전체화면을 캡처하고 이미지 파일로 바로 저장한다.

- 캡처 시 화면이 잠깐 어두워지는 효과가 나타난다.

- 이미지 파일은 "\Pictures\Screenshots" 폴더에 저장된다.

 

원드라이브와 연동하여 캡처 이미지 자동 저장하기

원드라이버에는 '캡처한 스크린샷을 OneDrive에 자동 저장' 기능이 있다.

이를 활성화시키는 옵션은 다음에 있다.

"원드라이브 설정 > 백업 > 스크린샷 > 캡처한 스크린샷을 OneDrive에 자동 저장"

이를 활성화하면 윈도우10 기본 캡처 기능으로 캡처한 이미지가 원드라이브 폴더에 자동저장된다.

위치는 다음과 같다.

"OneDrive\Pictures\스크린샷"

다만 위에 설명한 1, 2번의 방법으로 캡처하면 저장이 되지만 3, 4번의 방법은 원드라이브에는 저장되지 않는다.

 

마무리

윈도우10에서 드디어 쓸만한 캡처 기능이 추가되었다.

특히 원드라이브와 연동하여 캡처 이미지를 자동 저장하고 클라우드에 올리는 기능은 꽤 괜찮은 기능이라서 적극 사용하면 되겠다.

 

 

반응형
반응형

맥에서의 파일 검색은 Spotlight를 통해 이루어진다.

아래와 같은 Spotlight UI를 통하지 않고 Finder의 검색 기능을 이용해도 내부적으로 Spotlight를 활용한다.

맥의 Spotlight UI

Spotlight를 통한 파일 검색은 이름뿐만 아니라 내용까지 검색하고 데이터베이스화 하기 때문에 빠르고 좋은 검색결과를 보여준다.

하지만 내부 데이터베이스에 문제가 생긴다면 더 이상 맥에서 제공하는 검색을 믿을 수 없게 된다.

지금 나는 맥의 파일 검색 시스템을 믿을 수 없다.

 

나는 삼성 T5 외장 SSD를 exFAT으로 포맷하여 맥의 외장 저장장치로 사용한다.

윈도우도 종종 사용하기 때문에 exFAT 포맷을 사용하고 있다.

이 곳에 프로젝트 파일들을 저장하고 매일같이 사용한다.

그런데 파인더에서 프로젝트 파일을 검색하면 검색이 되지 않는다.

물론 Spotlight에서도 안된다.

 

파일 검색이 되지 않으면 "환경설정 > Spotlight > 개인 정보 보호"에서 폴더를 추가했다 제거하면 데이터베이스 인덱싱을 다시 하기 때문에 파일 검색이 된다.

이 방법은 애플의 공식 문서에 있는 해결 방법이다.

세계 최고 컴퓨터 회사에서 자사 제품에 대해 내놓은 공식 해결방법이라는게 믿기지 않을 정도다.

 

진짜 문제는 이 방법으로 해결이 안된다는 것이다.

인덱싱을 다시하면 검색이 되지만 몇일 지나면 다시 검색이 되지 않는다.

또한 외장 SSD의 폴더에 태그를 지정해도 나중에 태그 항목에서 그 폴더를 볼 수가 없다.

 

다음은 파인더에서 파일 검색에 실패하는 영상이다.

src라는 폴더에서 app.js 파일을 찾는데 뻔히 눈으로 보이는 파일을 찾지 못한다.

 

눈앞에 있는 파일도 못 찾는 바보같은 macOS

 

윈도우 탐색기는 검색하는 순간 해당 폴더의 파일을 직접 찾고 맥의 Spotlight는 데이터베이스에서 찾는다.

그런데 데이터베이스는 문제가 있다. 

따라서 신뢰할 수 없다.

운영체제의 기본중 기본이 파일 관리다. 

그런데 서드파티 앱(Path Finder, Commander One 등)을 사용해야 파일을 찾을 수 있다는게 황당하고 짜증난다.

파일 검색도 못하는데 이쁘면 뭐하나... 기본이 안되어있는데...

최소한 파인더에서는 실제 파일에서 검색해야하는거 아닌가?

 

나만 문제인지 다른 사람들은 잘 사용하는거 같다.

가끔 문제가 있으면 위에 써놓은 해결 방법을 사용하면 된다는 식이다.

맥은 원래 그렇게 쓰는건가 보다.

 


# 추가

내장 SSD에 파티션을 나누고 exFAT으로 포맷한 뒤 파일을 추가했다.

역시 파인더에서 파일 검색이 되지 않는다.

이 볼륨도 Spotlight의 환경설정에서 추가/삭제 하니 검색이 된다.

언제 또 검색이 안될지 기대된다.

 

 

반응형
반응형

scrcpy란?

데스크탑 컴퓨터에서 Android 장치를 제어할 수 있는 무료 오픈 소스 화면 미러링 응용 프로그램이다.

읽을 땐 screen copy로 읽는다.

 

homebrew 설치

scrcpy를 터미널을 통해 설치하기 위해 homebrew를 먼저 설치해준다.

터미널을 열고 다음 명령어를 복사 붙여넣기 후 실행

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

 

터미널에서 scrcpy 설치

터미널에서 다음 명령어를 순차적으로 실행

설치 시간이 꽤 걸린다.

brew install scrcpy

brew cask install android-platform-tools

 

android-platform-tools까지 설치 완료된 모습

scrcpy 실행

안드로이드 디바이스를 mac에 연결한 후 터미널에 다음을 입력하여 실행

scrcpy

 

안드로이드 미러링이 성공한 모습

사용하기

mac에서 마우스로 터치하고 키보드로 입력이 모두 가능하다.

다만 디바이스의 물리 버튼을 대체할 UI가 따로 나오지 않기 때문에 다음과 같이 키보드 단축키를 통해 물리 버튼을 대체해야한다.

switch fullscreen mode Ctrl+f
resize window to 1:1 (pixel-perfect) Ctrl+g
resize window to remove black borders Ctrl+x | Double-click¹
click on HOME Ctrl+h | Middle-click
click on BACK Ctrl+b | Right-click²
click on APP_SWITCH Ctrl+s
click on MENU Ctrl+m
click on VOLUME_UP Ctrl+↑ (up)
click on VOLUME_DOWN Ctrl+↓ (down)
click on POWER Ctrl+p
turn screen on Right-click²
paste computer clipboard to device Ctrl+v
enable/disable FPS counter (on stdout) Ctrl+i
install APK from computer drag & drop APK file
push file to /sdcard/ drag & drop non-APK file

https://github.com/Genymobile/scrcpy/issues/304

 

 

scrcpy 실행 스크립트

연결 시 마다 터미널을 열고 "scrcpy" 명령어를 입력하는게 귀찮기 때문에 실행 스크립트를 만들어 사용한다.

스크립트 편집기를 열어 신규 문서를 하나 만들고 다음과 같이 입력한다.

tell application "Terminal"
	do script "scrcpy"
end tell

 

입력 후 "파일 > 내보내기"를 선택하면 다음과 같은 UI창이 나오는데 여기서 파일 포맷을 "응용 프로그램"으로 선택한 후 적당한 곳에 저장한다.

파일 포맷을 "응용 프로그램"으로 선택
응용 프로그램으로 저장된 스크립트 파일

이제 이 프로그램을 실행하면 터미널과 scrcpy가 자동으로 실행된다.

 

단점

  • 사운드는 디바이스에서 재생된다.
  • 구글 키보드(Gboard)를 설치해야 mac에 연결된 키보드로 한글 입력이된다.(갤럭시 노트5 기준)
  • scrcpy에서 한/영 전환이 Shift+Space인데 macOS에서 한/영 전환을 Shift+Space로 해놓은 경우 scrcpy에서 한/영 전환이 안된다.

 

 

참고

http://egloos.zum.com/kim0522ms/v/6548026

 

[scrcpy] MacOS에서 안드로이드 장치 미러링

삼성 휴대폰의 경우, 갤럭시 S9 이하의 휴대폰은 자체적으로 제공하는 SideSync 프로그램을 활용하여 MacOS 에서도 스크린 미러링이 가능하다. 하지만 삼성의 갤럭시 S9 이후 출시 모델들은 SideSync의

egloos.zum.com

 

 

 

 

 

반응형

+ Recent posts