Jarvis OJ

Jarvis OJ - Baby's Crack - Writeup


解压是一个.exe 文件 一个.enc文件
这个.enc文件用wireshark打不开,用记事本打开,是一串疑似加密后的字符
下载后解压有exe和flag.enc两个文件,初步推测flag.enc是用exe加密后的文件 .enc文件可以用来存放加密后的数据
而且根据主要函数推断,里面多次出现打开文件,文件读写操作

int __cdecl main(int argc, const char **argv, const char **envp)
{
  int result; // eax
  char Dest; // [rsp+20h] [rbp-80h]
  FILE *v5; // [rsp+88h] [rbp-18h]
  FILE *File; // [rsp+90h] [rbp-10h]
  char v7; // [rsp+9Fh] [rbp-1h]
  int v8; // [rsp+B0h] [rbp+10h]
  const char **v9; // [rsp+B8h] [rbp+18h]

  v8 = argc;
  v9 = argv;
  _main();
  if ( v8 <= 1 )
  {
    printf("Usage: %s [FileName]
", *v9);
    printf(aFilename);
    exit(1);
  }
  File = fopen(v9[1], "rb+");
  if ( File )
  {
    v5 = fopen("tmp", "wb+");
    while ( feof(File) == 0 )
    {
      v7 = fgetc(File);
      if ( v7 != -1 && v7 )
      {
        if ( v7 > 47 && v7 <= 96 )
        {
          v7 += 53;
        }
        else if ( v7 <= 46 )
        {
          v7 += v7 % 11;
        }
        else
        {
          v7 = 61 * (v7 / 61);
        }
        fputc(v7, v5);
      }
    }
    fclose(v5);
    fclose(File);
    sprintf(&Dest, "del %s", v9[1]);
    system(&Dest);
    sprintf(&Dest, "ren tmp %s", v9[1]);
    system(&Dest);
    result = 0;
  }
  else
  {
    printf(&byte_40404B, v9[1]);
    result = -1;
  }
  return result;
}

转化为ASCII码,用ord(i)

.enc文件只有52位,可以直接爆破(第一次使用爆破)
import string
enc = 'jeihjiiklwjnk{ljj{kflghhj{ilk{k{kij{ihlgkfkhkwhhjgly'

v7 和 enc 的位数是一样的,所以按位判断

这个需要一个字符序列吧(这个就是所有可打印字符,python里面直接使用)

dic = string.printable
flag = ''
num = []
for i in enc:
num.append(ord(i))

def entrcy1(x):

for i in dic:

if ord(i) + 53 == x:

return chr(i)

f1 = lambda x: chr(x - 53)
def entrcy2(x):
for i in dic:
if ord(i) + ord(i) % 11 == x:
return chr(i)
def entrcy3(x):
for i in dic:
if ord(i) - ord(i) % 61 == x:
return chr(i)

爆破函数,逐位爆破

def crack():
	ans = ''
	for i in num:
		
		except:try:
			ans += f1(i)
			pass

		try:
			ans += entrcy2(i)
		except:
			pass

		try:
			ans += entrcy3(i)
		except:
			pass

	return ans
print(crack())

原文地址:https://www.cnblogs.com/serendipity-my/p/13738985.html