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


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


 링크 : 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
,

 VisualStudio에서 소스를 관리할 수 있는 기능을 2가지 지원해주고 있다.


 하나는 Micro Soft에서 지원해주고 있는 MS Cloud이고, 또 다른 하나는 Git에서 지원해주는 GitHub이다.


 GitHub는 매달 7~21달러를 준다면, 숨김 기능을 사용할 수 있는 기능도 지원해주면서 더 많은 용량을 지원해주는 걸로 알고 있다.(MS Cloud도 유사하다.)


 여기서, 돈이 없고 사람들이 자주 사용하는 Git의 GitHub을 연동하는 방법을 기록하고자한다.

 


 '팀 탐색기' 라는 창이 있다.

 여기서  '팀 탐색기' 라는 곳에서 GitHub와 MS의 호스티드 서비스가 있게 된다.

 GitHub를 사용할려면 GitHub에 가입되어 있는 정보를 이용해서 가입이 되어 있어야 된다.

 즉, GitHub에 대한 가입을 처리해야된다.

 가입을 위해서 Sign up을 클릭한다.



 클릭하면, 위에 있는 사진처럼 해당 링크의 사이트로 이동이 된다.

 여기서, 가입을 하기 위해서 Sign up을 클릭하면 다음과 같은 페이지로 이동하게 된다.



 Join GitHub에 가입이 될 수 있게 뜨게 된다.

 여기서 UserName은 사용자의 닉네임을 뜻하게 되고, E-mail Address에서 설정이 될 것이다.

 Password라는 것은 가입을 하기 위해서 사용하는 비밀번호 설정이 되어 있다.



 Choose your plan이라는 것에서 어떤것을 사용할 것인지 표현되어 있다. 여기서 free라는 것을 사용하는 게 된다.



 'Connect...'을 클릭하면, GitHub에 연결하는 창이 띄워진다.

 여기서 GitHub에 회원가입에서 이메일을 사용하는데. 여기서 회원 가입이 마무리가 되면, 이메일에 확인 메일을 보내게 된다. 여기서 인증을 해야지만, 제대로된 회원가입이 되는 것이므로 인증 메일을 꼭 처리하길 바란다.


 여기서 로그인을 마무리하게 되면, 다음과 같은 창으로 변하게 된다.

 Clone은 GitHub에 올려져있는 프로젝트들을 복제해서 가지고오게 하는 것이고, Create는 Visual Studio에서 프로젝트를 작성하는 것이다.

 이것을 이용해서 프로젝트를 GitHub에 올리게 되고, 팀과 같이 소스 작성을 할 수 있게 되는 것이다.

Posted by JunkMam
,

 Windows 10으로 넘어가면서 MS(Micro Soft)에서 Visual Studio을 무료로 제공해주는 장치가 있다.

 참고로 소스를 편집 및 디버깅하는 툴또한 무료로 제공하고 있다.


 단, MS(Micro Soft)의 회원이어야지만 가능하다.


 그게 아니라면, 불가능하다. 하지만, 딱 1번만 로그인하면 승인이 떨어지므로 문제는 없다.


 딱 한번 설치한 후에 로그인을 해주자.(Skype 회원이면, 자동으로 지원이 가능하다.)


 마이크로 소프트 Visual Studio 설치 사이트 https://www.visualstudio.com/ko/


 참고로 Community에 대해서만 무료이다. 그 외에는 기능들이 지원의 차이가 확실히 나므로 돈이 들더라도 제대로 사용할려면, 이 제품을 안 쓰는 것도 낫다.(하지만, 그게 아니라면 문제는 없다.)


 


 해당 사이트에서 무료 다운로드는 Community 버전이다. Enterprise와는 확실히 차이가 있다.

 


 다운로드를 하면, 엄청나게 빠르게 다운로드가 되는것을 확인 할 수 있다.


 이유는 이것은 인터넷을 통해서 연결하기 위한 연결용 프로그램이고, 제대로된 설치 파일은 이 파일을 실행한 후에 제대로 작동이 된다.



 필자는 Visual Studio를 설치한 후에 다시 재설치하는 것이기 때문에 이 스샷이랑은 다를 수 있다.



 필자는 프로그래밍 언어를 전부 다 설치하고 다시 설치하는 것이기 때문에 39GByte가 되어 있지만, 정확하게는 약 60GByte가 된다.

 그래서 원하는 것만 설치하는 것이 중요하다.



 설치하는 중.


 이렇게 해서 Visual Studio가 설치가 되며, Unity 및 Cocos, Android 등이 설치가 되기 때문에 하나의 프로그램으로 대부분의 개발 환경을 조성하기 쉬워져 있다는 점에서 쓸만하다.(그렇다고 CodeBlocks로 IDE을 조성할 수 없다는 건 아니다. 단지 환경을 설정하기 위해서는 많은 것을 건들어야 된다.)


 그리고, 여기서 처음에 라이센스가 제대로 등록이 되어 있지 않아서 약 30일치의 평가판으로 동작하게 된다.


 도움말 > 제품 등록을 클릭해서 로그인을 딱 1번만해준다면, 이상없이 제품을 사용할 수 있게 됩니다.


 Visual Studio에서 윈도우 폰 등의 활발한 환경을 조성하기 위해서 Visual Studio에 일부분을 무료로 공개하여 사용할 수 있게 만든 것 같다.


 다음은 Visual Studio에서 다양한 개발자들이랑 소스를 공유하면서 개발할 수 있는 환경인 GitHub와 연동하는 방법을 작성할려고 한다.

Posted by JunkMam
,