앱 플레이어 녹스

연습 2017. 1. 20. 22:00

 앱 플레이어 Nox라는 것이 있다.


 해당 프로그램은 가상 머신용으로 사용하는 프로그램이다.


 쉽게 말해서 안드로이드를 개발할때, 가상으로 프로그램을 동작시키는 방식이다.


 안드로이드 스튜디오에서 사용하는 가상 머신 방식보다 빠르고, 정확하게 처리가 가능한 것 같다.


 그리고 Google App Store가 기본으로 설치가 되어 있기 때문에 사용자가 어플을 다운 받아서 사용할 수 있기도 하다.


 링크 : https://www.bignox.com/kr


 


 여기서, 다운로드를 할 수 있다.

 


 이렇게 다운을 받아서 처리할 수 있다.


 그리고, ADB을 할 수 있게 되는데, Nox_ADB을 이용해서 처리하는 것을 할 수 있을 것이다.


 여기서 ADB을 연결하는 방법은 구글링해보니, 특이한 포트를 사용한다. 라고 한다.


 adb connect 127.0.0.1:62001


 이렇게 하면, 녹스의 앱의 정보랑 연결이 된다.


 이걸 이용해서 쉽게 매크로를 돌리고 연동할 수도 있다.(단점은 몇몇 어플에서는 동작을 막아 둔 경우가 있다.)

Posted by JunkMam
,

 Visual Studio에서 axml의 디자인을 설정하는 툴이 있다.


 그런데, 필자는 해당 디자인 설정 툴이 제대로 동작하지 않고, Android SDK을 설정했는데.


 그게 업그레이드를 하면서 오류가 나는지 SDK가 날아가는 문제점이 있었다.


 필자는 그것 때문에 SDK을 다시 설치하는 짓을 4번 이상 했다.(엄청난 삽질이다...)


 그런데, 해당 문제점이 아님을 알게 되었다.


 http://t2t2tt.tistory.com/3


 필자가 말하는 문제를 제대로 설명을 하지 않는데.


 필자의 문제점은 axml의 디자인이 제대로 동작하지 않는다. 라는 문제점이다.


 SDK 버전도 버전이지만, AXML의 툴이 제대로 띄워지지 않는다. 라는 문제점 도 있었다.


 SDK 버전은 Android Studio에서 존재하는 SDK을 이용해서 덮어 씌웠다.


 이렇게 해도 동일하게 SDK 버전 문제가 뜨거나 디자인 창이 띄워지지 않는 문제점이 있었다.


 하지만, 해당 링크에 존재하는 프로그램을 설치하니(웃긴건 Visual Studio에서 자동으로 설치해준다고 했던 툴이다.), 문제가 없어졌다.


 http://xamarin.com/download


 해당 사이트에 들어가면, 쉽게 다운로드를 할 수 있다.


 이렇게 해서 axml의 디자인 툴을 사용해서 Visual Studio에서 쉽게 안드로이드 어플을 제작할 수 있게 된다.

'연습' 카테고리의 다른 글

압축 현황  (0) 2017.01.21
앱 플레이어 녹스  (0) 2017.01.20
새로운 랜섬웨어 스포라.  (0) 2017.01.18
LEA로 파일 암호화 사용하기.  (0) 2017.01.17
Visual Studio 2015로 안드로이드 만들기.  (0) 2017.01.16
Posted by JunkMam
,

 최근에 필자가 신문 메일을 받으면서 보고 있는데.


 새로운 랜섬웨어라고 하면서 이야기하는 것이 있었다.


 링크 : http://www.itworld.co.kr/news/102981


 스포라라고하여, '오프라인 랜섬웨어'이다.


 해당 방법은 파일 암호화는 대칭키를 해당 대칭키를 비대칭키로 암호화해서 서버(공격자)에게 주고 받는 일반 적인 랜섬웨어와 다르게 해당 랜섬웨어는 오프라인.


 즉, 인터넷이 연결이 안되어있어도 공격이 가능한 방법이다.


 해당 신문의 설명에 따르면,


 일반적인 랜섬웨어는 파일는 대칭키로 암호화 한 후에 공격자에게 비대칭키(공개키)를 받아서 대칭키를 암호화/전송하는 과정을 거친다고 한다.


 즉, 네트워크 통신을 통해야지만, 랜섬웨어가 제대로 작동이 된다는 말이다.


 그래서 방화벽로 모르는 경로로 서버를 연결할 수 없게 만든다면, 딱히 문제가 없어진다.


 하지만, 오프라인 랜섬웨어는 다음과 같은 방법을 통한다.


 1. 멀웨어가 동작 각파일에 맞는 대칭키로 암호화.

 2. 대칭키를 멀웨어가 가지고 있는 공개키로 암호화.


 이렇게 할 경우에는 공개키가 멀웨어에 존재해서 단일한 공개키만으로 암호화가 거치게 되며, 개인키를 받게되면, 다른 피해자도 동일한 개인키로 해체가 될 수 있다는 점이 있었다.


 기사에서 나온 스포라는 다음과 같이 동작한다.

 1. 멀웨어가 동작. 각 파일에 맞는 대칭키로 암호화.

 2. 대칭키를 RSA로 암호화하여 공개키/개인키 생성.

 3. 해당 공개키/개인키를 대칭키로 암호화.

 4. 멀웨어가 가지고 있는 공개키로 대칭키 암호화.


 이렇게 하면, 파일에 암호화한 대칭키를 RSA가 암호화 했기 때문에. 개인키가 있어야 된다.

 여기까지(2)는 사용자가 풀 수 있다.


 하지만, 다시 대칭키를 만들어서 공개키와 개인키로 암호화한다.


 이것은 RSA로 만든 키가 뭔지 알 수 없게 되어버린다.

 이 후에 다시 대칭키를 멀웨어가 가지고 있는 공개키로 암호화해서 사용자는 어쩔 수 없이 공격자에게 돈을 보낼 수 밖에 없게 만들었다.


 이렇게 하면, 공격자는 RSA을 풀 수 있는 대칭키만 풀어서 보내주면 된다.


 우리나라의 공인 인증서 같은거랑 비슷하게 돌아가는 것같다.(사용자가 공인인증서의 인증서와 키가 같이 가지고 있고, 암호를 풀려면 비밀번호를 알아야 되는 것과 같이...)


 그리고 전문가의 말로는 쉽게 풀기 어렵다고 한다.


 암호는 사용자의 사적 정보를 지키기 위해서 만들어진 '방패'인데.


 '방패치기'(랜섬웨어)를 당하고 있는 사용자들을 보면, 참으로 아이러니하다.

Posted by JunkMam
,

 LEA로 파일 암호화 사용한 것이 있었다.


 2016/04/01 - [분류 전체보기] - LEA 암호화 라이브러리 테스트


 여기서 사용한 것으로 LEA 암호화 라이브러리를 사용해서 파일을 암호화 해보았다.


 전에 사용하는 것에서 LEA에는 32Byte에서 설정되는 키가 설정이 되어 있고, IV에 관련되서도 설정이 제대로 되어 있지 않았다.


 이것을 해결하기 위해서 SHA-256을 사용할려고 한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <stdio.h>
#include <stdlib.h>
 
#include <string>
 
#include "include\config.h"
#include "include\lea.h"
 
#include "KISA_SHA256.h"
 
 
unsigned char mk[32= { 0, };
 
unsigned int mk_len = 32;
 
char ctr_enc[16= { 0, };
 
unsigned char pyn_buffer[16= { 0, };
//unsigned int pyn_buffer_len = 16;
 
char cyp_buffer[16];
//unsigned int cyp_buffer_len = 16;
 
int main()
{
    size_t M = 0;
 
    SHA256_INFO sha256info;
 
    LEA_KEY key;
 
    FILE *fip = NULL;
    FILE *fop = NULL;
 
    //fip = fopen64("test", "rb");
    //fop = fopen64("test.LEA_CTR", "wb");
 
    fopen_s(&fip, "test""rb");
    fopen_s(&fop, "test.lea""wb");
 
    if (fip == NULL)
    {
        return -1;
    }
 
    if (fop == NULL)
    {
        return -1;
    }
    
    char password[256]="TestMessage";
 
    SHA256_Init(&sha256info);
    SHA256_Process(&sha256info, (unsigned char*)password, strlen(password));
 
    SHA256_Close(&sha256info, mk);
 
    lea_set_key(&key, mk, mk_len);
 
    M = fread(pyn_buffer, sizeof(char), sizeof(pyn_buffer), fip);
    lea_ecb_enc((unsigned char*)cyp_buffer, pyn_buffer, M, &key);
 
    if (fwrite(cyp_buffer, sizeof(char), M, fop) == 0)
    {
        fclose(fip);
        fclose(fop);
        _unlink("test.lea"); // 에러난 파일 지우고 종료
        return -1;
    }
 
    strcpy(ctr_enc, cyp_buffer);
 
    while ((M = fread(pyn_buffer, sizeof(char), sizeof(pyn_buffer), fip)) != NULL)
    {
        lea_ctr_enc((unsigned char*) cyp_buffer, pyn_buffer, M, (unsigned char*)ctr_enc, &key);
        //lea_ctr_dec(cyp_buffer, pyn_buffer,M,ctr_enc,&key);
        if (fwrite(cyp_buffer, sizeof(char), M, fop) == 0)
        {
            fclose(fip);
            fclose(fop);
            _unlink("test.lea"); // 에러난 파일 지우고 종료
            return -1;
        }
        //lea_ctr_enc(cyp_buffer, pyn_buffer, pyn_buffer_len, ctr_enc, &key);
        //fwrite(cyp_buffer, cyp_buffer_len, 1, fop);
    }
 
    fclose(fip);
    fclose(fop);
 
    return 0;
}
 
 
 
 
cs


 이렇게 앞부분 16Byte는 ECB모드를 사용하고, 나머지는 CTR모드를 이용해서 암호화 시킨다.

Posted by JunkMam
,

 Visual Studio에서 안드로이드 플랫폼에 프로그래밍을 할 수 있도록 지원해주는 부분이 있다.


 그래서, 그걸 이용할려고 한다.


 ANT와 Grandle로 나뉘어져 있는데.

 빌드 시스템을 어떻게 사용할 것인가에 나뉘어져 있다.


 참고로 Grandle은 Android Studio에서도 사용되는 방식이다.

 참조 : http://codedragon.tistory.com/1322


 필자는 Android Studio에서 설정한 소스를 그대로 사용하고 싶은데, 제대로 설정이 안되는 것인지.


 원래, 소스를 제대로 불러오지 못하는 문제점이 있다.(심지어 R클래스도 자동으로 제작이 안되어지는거 보니깐, 아직까진 옮기기에는 힘이 드는 것일지도...)


 사용하면서 알아봐야 될것 같다.(소스 상에서 소스를 생성하는 형태를 취하고 있다.)


 먼저 그런것은 둘째치고, 안드로이드 소스를 짜보자.

 


 먼저 Visual C++에서 플랫폼 간 이라는 곳에서 Android가 존재한다.

 여기서 기존 응용 프로그램을 선택한 후에 처리한다.


 여기서 Grandle과 ANT로 나뉘는데, 그것은 위에 말한 것처럼 빌드의 차이이다.


 결과로 이렇게 예제소스가 나와준다.

 여기서 Android의 디자인을 쉽게 조작하지 않는다.


 프로그래머는 Android의 디자인을 소스상에서 각자의 객체를 생성해서 사용해야 될 것이다.



Posted by JunkMam
,

 암호에서 비밀번호를 사용할때, 해시함수를 사용한다.


 해시 함수는 단방향(일방적)인 암호방식을 사용할때, 혹은 암호문과 메세지의 변동이 있는지의 유무를 확인할 수 있다.


 보통은 비밀번호에 사용한다.(그리고 해시함수를 이용하면, 파일이 깨졌는지의 유무도 확인 할 수 있다.)


 해시란, 특정 덩어리를 특정 크기만큼으로 줄이는 방식을 뜻하는데. 압축이랑은 별개로 해당 값(해시 값)이 특정 덩어리를 뜻하긴 하지만, 해시 값으론 특정 덩어리를 알 수 없게 되어 있어서 압축과는 다르다.(압축은 압축한 대상이 특정 덩어리로 변환 될 수 있는 양방향성을 띈다.)


 여기서 유명한 SHA256을 사용할려고 한다.(필자는 SHA256을 이용해서 파일의 깨짐 유무를 확인할때 사용하기도 한다.)


 KISA에서 소스를 제공해주기도 한다.


 링크  : https://seed.kisa.or.kr/iwt/ko/bbs/EgovReferenceDetail.do?bbsId=BBSMSTR_000000000002&nttId=79


 외국에서는 C++로 객체화 해서 만들어져 있다.


 링크 : http://www.zedwood.com/article/cpp-sha256-function



소스


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include "KISA_SHA256.h"
 
#include <stdio.h>
#include <stdlib.h>
#include <tchar.h>
 
int main(int argc, char** argv)
{
 
    //변수 초기화.
    FILE *fp = NULL;
    unsigned char buffer[2048= { 0, };
    unsigned char result[32= { 0, };
    int read = 0;
    int loop_number = 0;
 
    //SHA256 변수 초기화.
    SHA256_INFO sha256_info;
 
    SHA256_Init(&sha256_info);
 
    //파일 읽기.
    //fp = fopen("Test.txt", "rb"); Visual Studio 옛버전을 사용할 경우. 이것을 사용할 것. Visual Studio에서 안전성 문제로 인한 함수 개선을 하였음.
    fopen_s(&fp, "Text.txt""rb");
 
    if (fp == NULL)
    {
        printf("Error : File not find.\n");
        system("pause");
        return -1;
    }
 
    while ((read = fread(buffer, 20481, fp)) != 0)
    {
        SHA256_Process(&sha256_info, buffer, read);
    }
 
    SHA256_Close(&sha256_info, result);
 
    for (loop_number = 0; loop_number < 32; loop_number++)
    {
        printf("%02x", result[loop_number]);
    }
 
    system("pause");
    return 0;
 
}
 
cs


Posted by JunkMam
,

 구글 포토스(Google Photos)의 문제점이 JPEG 파일 등이 올리면서 압축을 한다는 특징을 가지고 있다.




 그래서 JPEG(JPG)에서 고화질 저용량의 방식을 사용하게 되어 화질의 변화가 발생한다.


 전에 적은 글에서 PNG을 이용하면 화질과 용량의 변화가 없기 때문에 백업용으로 사용해도 문제가 없을 것이다. 라고 한적이 있다.


 그런데, 현재 확인한 결과 PNG 파일일 경우엔 원본 저장으로 하여 구글 드라이버에 전부 다 옮겨버린다는 특징을 가지는걸 확인하였다.


필자가 막 올리다가 이렇게 드라이브에 용량을 사용한적이 거진 없는데 이렇게 가득 채워 놓은거 보면, google photos에 의해서 용량을 가득 채워 놨다. 라고 밖엔 안된다.


 JPEG나 WebP는 문제 없다. 라는 식의 설명도 있는데.

 변환이 되는 파일형태만 가능하다. 라는걸 알 수 있으니.


 원본을 가지길 원하는 사람들은 google Photos을 사용하는것은 고민해봐야 할 것이다.

Posted by JunkMam
,

 Visual Studio에서 인라인 어셈블러 방식은 제대로 설명이 되어 있는 곳이 많다.

 참조 링크 : https://msdn.microsoft.com/ko-kr/library/4ks26t93.aspx


 하지만, asm이 인라인으로 설정이 되어 있으면, 가독성이 떨어질 수도 있다는 점에서 이걸 이용하지 말고, 다른 방법을 이용하기로 한다.


 Visual Studio에서는 추가하는 곳에서 어셈블리어가 추가되어 있진 않다.

 그래서, 세팅을 하는 것을 작성한다.




 사용자 지정 빌드를 이용해서 masm을 사용하기 위해서 사용한다.




추가하는 소스를 만든다.



main.asm을 이용해서 만든다.



 *.asm인 확장자를 설정하기 위해서 main.asm을 오른쪽 버튼을 눌러서 속성에 들어간다.



 여기서 항목형식(*.asm)을 사용할 수 있게된다.

 초반에 이렇게 한 번은 설정을 해줘야된다.



 그리고 libcmt.lib을 링크 라이브러리에 설정을 한다.

 libc.lib이 최근 버전에서 libcmt.lib으로 바뀌었다고 한다.

 그리고 MSDN을 검색해보니, libcmtd.lib 등이 있으니, 정확하게는 MSDN을 참조하는 것이 좋을 것이다.




 이렇게해서 어셈블리어를 사용해서 처리할 수 있게된다.


 참조 링크


 블로그 : http://moomini.tistory.com/80


 블로그 : http://blog.witstudio.net/35


 설정하는 방식 유튜브 : https://www.youtube.com/watch?v=9e1ER2o83N0&index=185&list=WL.

Posted by JunkMam
,

 필자는 SSD와  HDD 1TByte가 2개로 사용을 하고 있다.

 (그냥 예외로 말하자면, 몇개의 HDD를 백업한다고 작업하다가 다 날려 먹었다. 백업을 생활화하고, 혹시 모르는 복사한 후에 원본과 함께 남겨 둬라.)


 그런데, Visual Studio가 C:드라이브의 용량 60GByte이상을 잡아 먹고 있다는 점이 있다.


 이것은 꽤 큰 용량을 차지하는 것인데(SSD가 엄청 비싼거 아닌 이상[약 30만원] 50GByte가 큰 용량이다.)


 그래서 사용자로써 Visual Studio의 파일들의 위치를 다른 드라이버로 옮기고 싶다.


 그와 비슷한 생각을 한 사람이 한국과 외국에 있는걸 확인 하였다.


 해당 사이트 : http://softwareji.tistory.com/176


 외국에서는 임시적으로 사용하는 방법으로 Visual Studio의 정보를 mklink을 이용하여 링크를 연결 시키고, 그것을 이용해서 임시적으로 속이는 작업을 사용하였다.


 필자는 Android의 설정만 바꿀려고 하기 때문에, [도구] - [옵션]을 이용해서 조절할려고 했다.


 하지만, 제대로 동작이 되지 않았다.


 동작이 제대로 되지 않아서 외국에서 설정한 방식을 채택할려고 한다.


 mklink라는 것이 무엇인지 알아야 될 것이다.


 링크 : https://technet.microsoft.com/ko-kr/library/cc753194(v=ws.10).aspx


 이렇게 하기 위해서 실행을 하기 위해서 cmd을 관리자 권한을 받아서 사용해야된다.




 이렇게 하여 관리자 권한을 받은 cmd에서 정션을 사용한다.


 여기서 정션이라는 것은 가상 디렉토리를 연결하는 방식으로 하드 링크와는 차이가 있다.


 하드 링크라는 것은 파일을 해당 파티션에서 존재하는 것을 복제하는 것이다.


 그래서 타 볼륨(디스크)에서는 제대로 동작할 수 없고, 디렉토리(파일 정보가 있는 위치를 가지는 정보)를 이용하는 것이다.


 그래서 파일 시스템이 사라진다면, 못 찾지만, 하드 링크가 어떻게든 2개 이상으로 설정이 되어 있다면, 둘중에 하나를 삭제할 경우에도 해당 파일이 삭제가 되지 않는다.(제로 필등의 삭제 방식이나 SSD을 사용하지 않는 이상)


 mklink의 종류를 설명해둔 블로그 링크 : http://cappleblog.co.kr/538


 여기서 mklink /J을 사용한다.


 먼저, VisualStudio에서 설치하게 만든 Android SDK을 옮긴다면,

 해당 Android SDK을 D:\폴더에 옮긴다.


 이 후에 다음과 같이 한다.


 


 이렇게하면, dir을 이용하면, 어떻게 되어 있는지 잘 나오게 되어 있다.


 해당 방식을 이용하면, SSD의 용량을 아낄 수도 있게 된다.


 단, 외국인이 말하기로는 이 방법은 임시 방편이기 때문에 완벽하게 옮기는 방식은 아니다. 라고 한다.


 그러므로 해당 방식을 올바르게 사용한다고 생각하고 사용하는 것은 조심할 필요가 있다.

'연습' 카테고리의 다른 글

Google Photos를 사용 후기.  (0) 2017.01.14
Visual Studio 2015에서 masm 사용하는 방법  (0) 2017.01.13
GitHub 탈퇴하기.  (0) 2017.01.11
VisualStudio에 GitHub 연동시키기.  (0) 2017.01.10
Visual Studio 설치하기.  (0) 2017.01.09
Posted by JunkMam
,

GitHub 탈퇴하기.

연습 2017. 1. 11. 00:00

 Git을 탈퇴하고자 하는 사람들이 있을 것이다.(필자는 실수로 여러개의 아이디를 만들어서 문제가 있어서 지웠다.)


 Git은 간단하게 탈퇴를 할 수 있게 구성되어 있다.


 그래서 이것을 기록할려고 한다.

 


 Git 홈페이지에 들어가서 로그인을 한다.

 그 후에 우측상단에 보면, 해당 사용자의 아이콘이 띄워져 있을 것이다.

 거기서 화살표에 클릭하면, 다음과 같은 사진이 나오게 되고, 거기서 Setting이라는 것을 누르면, 다음 페이지로 넘어가게 된다.



 Settings라는 것을 클릭하게 되면, Profile(사용자 정보 설정)이라는 페이지로 이동이 되는데, Account라는 것을 클릭한다.



 해당 페이지는 사용자의 Password라는것을 수정할 수 있는 것과, 사용자 정보를 수정하는 것이 있다.

 그리고 탈퇴 부분이 있다.


 Delete Account라는 것을 클릭하면, 삭제 페이지로 이동하게 된다.


 이것으로 가입할때 사용한 이메일을 작성하거나, 아이디를 이용한 후에 delete my account라는(게임에서 보면, '내 캐릭터 삭제' 라는걸 입력하세요. 라는 것과 같은 것이다.) 것을 입력한 후에 삭제시키면 이상 없이 삭제(탈퇴)가 완료가 된다.

Posted by JunkMam
,