• 大小: 34KB
    文件类型: .gz
    金币: 1
    下载: 0 次
    发布日期: 2021-06-17
  • 语言: 其他
  • 标签: pdf  口令  破解  

资源简介

这个程序在linux平台下编译,可以破解全系的PDF加密文档。破解方式是口令字典破解。默认情况是pdf9以下版本的破解,但其实pdf9.10.11等更高版本都是一样的,在主程序里吧版本限制修改,所有版本的PDF文档都是可以破解

资源截图

代码片段和文件信息

/**
 * Copyright (C) 2006-2015 Henning Norén
 * 
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not write to the Free Software
 * Foundation Inc. 51 Franklin Street Fifth Floor Boston MA  02110-1301 
 * USA.
 */

#include 
#include 
#include 
#include 
#include 
#include 
#include “benchmark.h“
#include “common.h“
#include “md5.h“
#include “rc4.h“
#include “sha256.h“
#include “pdfcrack.h“

#define COMMON_MD5_SIZE 88
#define COMMON_SHA256_SIZE 40
#define COMMON_SHA256_SLOW_SIZE 56

#define BENCHINTERVAL 3 /** The interval to run the specific benchmarks */

static volatile bool finished = false;

/** interruptBench is used to stop the current benchmark */
static void
interruptBench() {
  finished = true;
}

/** print_and_clean was supposed to make the binary somewhat smaller but
    I think I failed and have not bothered to investigate it further (like 
    checking if the function is inlined or if one can force it to not be 
    inline). As this stuff is pretty boring and not critical to performance I 
    would prefer that all the boring stuff between benchmarks would be as 
    small as possible.
*/
static void
print_and_clean(const char *str unsigned int nrprocessed
const clock_t *start const clock_t *end) {
  printf(“%s\t%.1f\n“ str 
 nrprocessed/(((double)(*end-*start))/CLOCKS_PER_SEC));
  cleanPDFCrack();
  finished = false;
}

static void
sha256_bench(void) {
  uint8_t *buf;
  uint8_t hash[32];
  unsigned int nrprocessed = 0;
  clock_t startTime endTime;

  buf = calloc(COMMON_SHA256_SLOW_SIZE sizeof(uint8_t));

  alarm(BENCHINTERVAL);
  startTime = clock();
  while(!finished) {
    sha256f(buf COMMON_SHA256_SIZE hash);
    buf[0]++;
    nrprocessed++;
  }
  endTime = clock();
  print_and_clean(“SHA256 (fast):\t“ nrprocessed &startTime &endTime);

  buf[0] = 0;
  nrprocessed = 0;
  alarm(BENCHINTERVAL);
  startTime = clock();
  while(!finished) {
    sha256(buf COMMON_SHA256_SLOW_SIZE hash);
    buf[0]++;
    nrprocessed++;
  }
  endTime = clock();
  print_and_clean(“SHA256 (slow):\t“ nrprocessed &startTime &endTime);
  free(buf);
}


static void
md5_bench(void) {
  uint8_t *buf;
  uint8_t digest[16];
  unsigned int nrprocessed = 0;
  clock_t startTime endTime;

  buf = calloc(COMMON_MD5_SIZE sizeof(uint8_t));

  alarm(BENCHINTERVAL);
  startTime = clock();
  while(!finished) {
    md5(buf COMMON_MD5_SIZE d

评论

共有 条评论