2014-02-23 6 views
0

나는이 problem에서 작업했습니다. "hello there"와 같이 암호화 된 작은 구문을 해독하려고하면 코드가 작동하지만 주어진 암호 텍스트에서는 작동하지 않습니다. 나는 openssl에 익숙하지 않고 무엇이 잘못되었는지를 알 수 없다.가끔씩 openssl 암호 해독이 작동합니다.

int main() 
{ 
    int i, j, k, ret, m; 
    char pwd[4]; 
    char lower_alphabet[26] = "abcdefghijklmnopqrstuvwxyz"; 
    for (i=0; i<26; i++) 
    { 
     for(j=0; j<26; j++) 
     { 
      for(k=0; k<26; k++) 
      { 
       char cmd[70] = "openssl enc -aes128 -base64 -d -in cipher.enc -pass pass:"; 
       snprintf(pwd, sizeof(pwd), "%c%c%c", lower_alphabet[i], lower_alphabet[j], lower_alphabet[k]); 
       strncat (cmd, pwd, 3); 
       if ((ret = system(cmd)) == 0) 
       { 
        printf("\n%s\n",pwd); 
        scanf ("%d", &m); 
       } 
      } 
     } 
    } 

} 

그래서 내 코드는 가능한 모든 암호 값을 시도하고 openssl이 성공적으로 종료 될 때마다 사용자 입력을 위해 중지합니다.

답변

1

올바른 암호는 '예'입니다 :

$ openssl enc -aes128 -base64 -d -in cipher.enc -pass pass:yes 
http://www.youtube.com/watch?v=EzBIH8Frq-8&feature=player_embedded 

나는 무력에 의해 그것을 찾아 모든 가능한 조합으로 cipher.enc 메시지를 디코딩 할

  1. 시도 이 스크립트에 의해 세 개의 소문자로 된 :

    #!/bin/bash 
    
    for a in {a..z}; do 
        for b in {a..z}; do 
         for c in {a..z}; do 
          echo -e "\n" 
          openssl enc -aes128 -base64 -d -in cipher.enc -pass pass:$a$b$c 
          echo -e "\nPASSWD: $a$b$c\n" 
         done 
        done 
    done 
    
  2. 실행이 스크립트와 내가 secret-message을 찾아처럼

    $ egrep -an --color '.*[[:alpha:]]{8,}' all.txt 
    6401:??l$?? f?T^[email protected])?f?℗???uuEb??KFrVw????߁?LHtsQyfe? 
                     C5y 
    56180:?RCpWmnuWЇ_?y???\߱???cg???V?ߥŕ??{?GyD_?ڼZ???JN+;#? 
    85793:http://www.youtube.com/watch?v=EzBIH8Frq-8&feature=player_embedded 
    
  3. 와 빙고, 보이는 다음 명령으로 모든 충분히 단어와 같은 문자열을 찾을 수 있습니다. 암호 '예'로 인코딩하여 확인하고 결과를 cipher.enc과 비교하면 동일합니다. 문제 해결됨! 암호가 '순자산'도 openssl 반환 제로를 만들었 기 때문에 그런데


는 0이 아닌 openssl 반환 올바른 암호를 찾을 수있는 충분 조건처럼 보인다.

+0

"openssl return zero는 충분한 조건이 아닙니다."- 오른쪽. 진실로 말할 수있는 유일한 방법은 암호화 텍스트와 인증 태그를 사용하는 것입니다. iv. 패딩이 정확했기 때문에 오탐 (false positive)을 보았습니다. 약한 확인이었습니다 (Padding Oracles FTW!). – jww

관련 문제