有意思的 CrackRTF

博客详细解析了一段C程序,该程序使用Windows API进行SHA1和MD5加密。通过爆破和逆向工程,解密出两部分的密码。第一部分是SHA1加密的123321,第二部分通过MD5加密,最终通过程序生成了一个RTF文件。文章探讨了如何通过程序的逻辑找出解密字符串的方法,并提供了相关API的功能解释。
摘要由CSDN通过智能技术生成

CrackRTF

最近刷题遇到的不会又不错的题,考了几个我没有见过的API,以及一种奇妙的给出flag的方式

题目描述

在互联网时代,兼容就是胜利,兼容就是王道。为了遏制微软一家独大的趋势,小明自诩民族斗士,向微软CEO挑战,CEO给了他一个文件,据说破解后能得到一个微软的多信息文本格式文件。只有得到了才能获得挑战CEO的机会。小明绞尽脑汁,最后不得不求助大家。。。兄弟们该出手时就出手! 注意:得到的 flag 请包上 flag{} 提交

main函数:

int __cdecl main_0(int argc, const char **argv, const char **envp)
{
  DWORD len_1; // eax
  DWORD len_2; // eax
  char Str[260]; // [esp+4Ch] [ebp-310h] BYREF
  int v7; // [esp+150h] [ebp-20Ch]
  char String1[260]; // [esp+154h] [ebp-208h] BYREF
  char Destination[260]; // [esp+258h] [ebp-104h] BYREF

  memset(Destination, 0, sizeof(Destination));
  memset(String1, 0, sizeof(String1));
  v7 = 0;
  printf("pls input the first passwd(1): ");
  scanf("%s", Destination);
  if ( strlen(Destination) != 6 )
  {
    printf("Must be 6 characters!\n");
    ExitProcess(0);
  }
  v7 = atoi(Destination);
  if ( v7 < 100000 )
    ExitProcess(0);
  strcat(Destination, "@DBApp");
  len_1 = strlen(Destination);
  sub_40100A(Destination, len_1, String1);
  if ( !_strcmpi(String1, "6E32D0943418C2C33385BC35A1470250DD8923A9") )
  {
    printf("continue...\n\n");
    printf("pls input the first passwd(2): ");
    memset(Str, 0, sizeof(Str));
    scanf("%s", Str);
    if ( strlen(Str) != 6 )
    {
      printf("Must be 6 characters!\n");
      ExitProcess(0);
    }
    strcat(Str, Destination);
    memset(String1, 0, sizeof(String1));
    len_2 = strlen(Str);
    sub_401019(Str, len_2, String1);
    if ( !_strcmpi("27019e688a4e62a649fd99cadaafdb4e", String1) )
    {
      if ( !sub_40100F(Str) )
      {
        printf("Error!!\n");
        ExitProcess(0);
      }
      printf("bye ~~\n");
    }
  }
  return 0;
}

总体大致分为两个加密检验部分

第一部分
if ( strlen(Destination) != 6 )
  {
    printf("Must be 6 characters!\n");
    ExitProcess(0);
  }
  v
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zsc_02

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值