리버싱

14일차, 크랙을 응용한 키젠만들기.

컴공 2013. 4. 30. 01:07
반응형


// 0426.cpp : Defines the entry point for the console application. // 키젠 1

KeyGenMe1.exe
//

#include "stdafx.h"
#include <stdio.h>

int main(int argc, char* argv[])
{
 char str[20];
 int ret = 0, i;

 scanf("%s", str);

 for( i = 0 ; str[i] ; i++ ){
  ret += str[i] << 3;
 }
 
 ret += i << 3;

 ret = ret << 2;

 printf("%d", ret);


 return 0;
}

---------------------
while(글자 길이){
 답 += 글자 << 3;
}
답 += 길이 << 3;

답 = 답 << 2;
-------------------------------------
// 0425_2.cpp : Defines the entry point for the console application. // 키젠 2 파일

KeyGenMe2.exe


//

#include "stdafx.h"
#include <stdio.h>

int main(int argc, char* argv[])
{
 char str[20];
 int ESI = 0 , i;

 scanf("%s", str);

 for( i = 0 ; str[i] ; i++ ){
  ESI += str[i] * str[i];
  ESI += str[i] >> 1;
  ESI -= str[i];
 }

 printf("답 : %d", ESI);


 return 0;
}

------------------------------
while(배열 길이){
ESI += 글자 * 글자;
ESI += 글자 >> 1;
ESI -= 글자;
}

if(ESI == 입력)
 GoodJob
---------------------------
#include <stdio.h>
#include <malloc.h>
#include <string.h>

int main(){

 char lpCmd[]="LWedqn";
 
 int len;
 char ch;
 
 for( len = 0 ; lpCmd[len] ; len++ );
 
 char * p = (char * ) malloc(len+1);;
 len = 0;
 
 while(lpCmd[len]){
  if( lpCmd[len] >= 'A' && lpCmd[len] <= 'Z')
    ch = 'A';
  else if(lpCmd[len] >= 'a' && lpCmd[len] <= 'z')
   ch = 'a';
  else if( lpCmd[len] == ' '){
   p[len] = lpCmd[len];
   len++;
   continue;
  }
  else
   return 0;
  
  p[len]= (lpCmd[len] - ch - 3) % 0x1A + ch;
  len++;
  
 }
 p[len] = NULL;
 
 printf("%s\n", p);
  
 return 0;
}
----------------------------

 

 

 

 

 

 

 

 

반응형