728x90
이 포스트는 이전 블로그에서 이전된 포스트입니다.

 

검색해 보면 다들 멀티바이트의 경우라 현재의 최신버전 visual studio에서는 오류를 출력한다.

 

따라서 최신 컴파일러를 사용해 유니코드 환경이라면 아래 처럼 가능하다.

이는 Cstring -> Char* 로 변형하는 것이다.

 

CString tmpcstr = _T("testing");
char * tmpch;

int sLen = WideCharToMultiByte(CP_ACP, 0, m_strInput, -1, NULL, 0, NULL, NULL);       
tmpch = new char[sLen + 1];
WideCharToMultiByte(CP_ACP, 0, m_strInput, -1, tmpch, sLen, NULL, NULL);

//사용 후, 마지막에 동적할당 된 메모리를 제거해야 합니다.
delete []tmpch;

 

아래는 코드에 대한 설명이다.

참고로 MultiByteToWideChar는 멀티바이트에서 유니코드로 변환하는 함수이고, WideCharToMultiByte는 유니코드에서 멀티바이트로 변환하는 함수이다.

 

int sLen = WideCharToMultiByte(CP_ACP, 0, m_strInput, -1, NULL, 0, NULL, NULL);      

   -> WideCharToMultiByte 함수는 변환할 문자열의 길이를 리턴한다.

tmpch = new char[sLen + 1];

   -> 저장될 문자열 공간을 동적 할당한다.

WideCharToMultiByte(CP_ACP, 0, m_strInput, -1, tmpch, sLen, NULL, NULL);

   -> 아래 순서대로 인자에 대한 설명이다.

    __in UINT     CodePage,       // 변환할 코드 페이지( 기본적으로 CP_ACP 사용)
    __in DWORD    dwFlags,      // 변환 타입을 나타낸다.
    __in_ecount(cchWideChar) LPCWSTR  lpWideCharStr,    // 변환할 문자열
    __in int      cchWideChar,   // 변화할 문자열의 사이즈
    __out_bcount_opt(cbMultiByte) __transfer(lpWideCharStr) LPSTR   lpMultiByteStr,  // 변환값 저장 버퍼
    __in int      cbMultiByte,      // 변환될 값의 사이즈
    __in_opt LPCSTR   lpDefaultChar,
    __out_opt LPBOOL  lpUsedDefaultChar

참고 원문 : http://blog.naver.com/doug0476/10145174622

delete []tmpch;
   -> 동적 메모리 제거
 

 

 
반대로의 작업이다.
이는 char* -> CString 로 변형하는 것이다.
char* ps = "wow";
CString str;

int len = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, ps, -1, NULL, NULL);    
str = new TCHAR[len];
MultiByteToWideChar(CP_ACP, 0, ps, -1, (LPWSTR)(LPCWSTR)str, len);

//Testing
AfxMessageBox(str);
728x90
728x90
이 포스트는 이전 블로그에서 이전한 포스트입니다.

 

Notepad++에서 Convert, Compare 등의 유용한 plugin 들을 사용하기 위하여 Plugin Manager를 실행하려고 하면 해당 버튼이 없는 경우가 있다.

 

 

 

이는 Notepad++ 프로그램이 64 bit로 설치되어 있을 가능성이 높다.

제작/배포사 홈페이지의 내용을 확인하면 아래와 같이 64 bit 프로그램에서는 Plugin Manager를 포함한 대부분의 Plugin이 제공되지 않음을 명시하고 있다.

 

 

 

이에 따라, 해당 64 bit 프로그램을 제거하고, 32 bit 용으로 다운로드하는 것이 Plugin Manager 부재의 해결 방안으로 볼 수 있다.

 

Notepad++ 다운로드 : https://notepad-plus-plus.org/download/

 

Downloads | Notepad++

 

notepad-plus-plus.org

 

 

728x90
728x90
이 포스트는 이전 블로그에서 이전된 포스트입니다.

에디트플러스에서 자바 컴파일 및 실행하기 (Compile and run java in editplus)


먼저 설정하기 전에 JDK의 설치가 필요합니다.
이는 개발자라면 아마 되어 있겠지만 혹시몰라 링크도 같이 올립니다.
JDK의 최신 버전은 아래 링크를 통해 받으실 수 있습니다.
http://www.oracle.com/technetwork/java/javase/downloads/index.html


본격적으로 EditPlus에서 자바 컴파일 및 실행이 가능하도록 하겠습니다.
사전에 JDK의 설치 경로를 알아야합니다.
최신버전의 JDK의 경로는 기본적으로 아래와 같습니다.
C:\Program Files\Java\jdk1.8.0_65  (버전별 상이)

1. EditPlus를 실행합니다. / 도구(T) 탭에서 기본 설정(P)를 클릭합니다.


2. 사용자 도구를 클릭한 후, 추가(D)에서 프로그램(P)를 클릭합니다.


3. 아래와 같이 입력하여 컴파일을 위한 javac를 추가합니다.
메뉴제목 : javac
명령 : C:\Program Files\Java\jdk1.8.0_65\bin\javac.exe   (경로는 버전별로 상이할 수 있음)
인수 : $(FileName)
디렉토리 : $(FileDir)
동작 : 출력 내용 캡쳐


4. 다시한번 추가(D)/프로그램(P)를 클릭한 후, java를 추가합니다.
메뉴제목 : java
명령 : C:\Program Files\Java\jdk1.8.0_65\bin\java.exe (경로는 버전별로 상이할 수 있음)
인수 :
$(FileNameNoExt) 디렉토리 : $(FileDir)


5. 정상적으로 추가되면 아래와 같이 도구 탭에 추가된 2 항목을 볼 수 있으며, 이는 Ctrl+1, Ctrl+2의 단축키로도 사용가능합니다.


6. 컴파일 및 실행을 하면 아래와 같이 정상적으로 출력되는 것을 볼 수 있습니다.

(참고) 수행을 위해서는 main 메서드를 포함한 Class 이름과 파일의 이름은 동일하여야 합니다!!



728x90
728x90
이 포스트는 이전 블로그에서 이전한 포스트입니다.

 

(C/C++) 1의 보수 구하기 (1의 보수 소스)

 

1의 보수는 전체 비트를 1로 채워 절대치 표현 값을 뺀 것입니다.

즉, 

     11111

   - 00110

 ------------

     11001

과 같습니다.

 

이는 모든 자릿수를 1은 0으로, 0은 1로 뒤집어서 표현하는 방법을 사용하면 쉽습니다.

(즉, 반전을 이용할 것)

 

본격적으로 소스를 보면 아래와 같습니다.

이는 10진수를 받아 1의 보수를 구하는 과정입니다.

재귀 함수를 이용하여 10진수를 2진수로 변환하는 과정을 이용하였으며,

각각 자리를 반전시켜서 출력하였습니다.

 

#include <iostream>
using namespace std;

void complement(int n);
int main(void)
{
    int input;
    cout << "숫자를 입력하세요.(10진수): ";                                   
    cin >> input;

    if (input < 0)
    {
        cout << "잘못된 입력입니다.";
        return 0;
    }

    cout << "변환 후: ";
    complement(input);
    cout << endl;
    return 0;
}

void complement(int n)
{
    int tmp;
    if (n <= 1)
    {
        cout << !n;
        return;
    }
    tmp = n % 2;
    complement(n / 2);
    cout << !tmp;
}

 

결과 예제는 아래와 같습니다.

십진수 10은 2진수로 1010이고, 이를 반전하면 0101이 됩니다.

즉, 십진수 10의 1의 보수는 0101입니다.

 

728x90
728x90
이 포스트는 이전 블로그에서 이전된 포스트입니다.

 

압축파일 zip, rar 암호 풀기 / 알집 패스워드 해제 프로그램 (unlock zip, rar password) / john the ripper

 

 

알집(혹은 다른 zip 파일)에 걸린 암호를 풀기 위한 일을 수행하는 패스워드 언락 툴이 있습니다.

공식 사이트는 openwall 이며, john the ripper라는 프로그램을 이용합니다.

공식 사이트에서 받아도 되고, 빠르게 아래 파일을 받으셔도 됩니다.

 

공식 다운로드: https://www.openwall.com/john/

 

John the Ripper password cracker

John the Ripper password cracker John the Ripper is an Open Source password security auditing and password recovery tool available for many operating systems. John the Ripper jumbo supports hundreds of hash and cipher types, including for: user passwords o

www.openwall.com

 

John the Ripper (Windows) - 1.7.9 직접 다운로드
가능한 홈페이지에서 최신 버전을 받으시는 것이 좋습니다.
구버전은 windows defender에서 삭제하기도 하네요.
john179j5w.zip
3.75MB

 

반응형

 

수행 방법은 아래와 같습니다.

 

 1. 위 파일의 압축을 해제합니다.
 2. '압축을 해제한 폴더\john179j5\ 안에보면 'run' 이란 폴더가 있습니다. 이를 C:\ 드라이브로 복사합니다.
 3. 패스워드가 걸린 압축 파일 역시 C:\ 드라이브로 복사합니다.
   



 4. 시작 > 보조 프로그램 > 명령 프롬프트를 실행합니다.
   

 5. 열린 명령 프롬프트에서 아래 명령어를 입력합니다.
      > cd C:\


   

 6. 본격적으로 패스워드를 해제합니다. 아래 명령어를 입력합니다.
    아래 명령어를 통해 암호 해시가 포함된 zip.hashes라는 파일을 얻을 수 있습니다.
     > run\zip2john.exe Test.zip > zip.hashes
   
  (rar의 경우 rar2john.exe를 사용합니다.)



 7. 다음으로 암호 해시 파일에 존리퍼를 실행합니다.
     > run\john.exe zip.hashes
       - 작동중에 Enter를 누르면 현재 작업중인 과정을 볼 수 있습니다.   
 위 처럼 작업이 끝나면 암호를 알 수 있습니다. (zip파일의 암호는 test4321 입니다.)
   test4321                    <Test.zip>
 (위 테스팅은 i3 시스템에서 수행되었으며 약 4시간 가량 수행되었다.)
 8. 다시 간단하게 확인하려면 아래 명령어를 이용합니다.
     > run\john.exe zip.hashes --show
   

 

 

728x90
1···5678910

+ Recent posts