草庐IT

暴力破解pdf文档密码

昵称还在想呢 2023-10-06 原文

目录

前言

准备系统环境

安装pdfcrack

使用指定字符开始暴力破解

使用字典文件进行爆破

附pdfcrack man手册


前言

相信小伙伴们都遇到这种情况;你收到了一些标题很吸引人的pdf文档 或者是重要数据泄露 学习资料总结,再或者是某机构的押题密卷,打开pdf却提示你要输入密码 因为不知道密码 只能弃罢。我就遇到过这种情况 网友发来了标题为某天一的押题密卷 ,我也想看看这个卷子的题怎么样,因为被设置了密码 我尝试用6到10位的纯数字组合来暴力破解这个pdf,结果三 四个小时都没找到正确的密码。有些网友为破解这个密码 请某宝某多来破解 也都没有破解成功。

后来我也得知了这个pdf的密码,是一串大小字母+数字的组合 长度很长,理论上暴力破解是可以破解出来的 不过以我电脑的运算速度 可能需要几十年甚至上百年...

当我打开文档时 惊了 这那是什么押题卷啊!这是奥特曼... 因该是某人的恶作剧吧! 很气愤....

接下演示破解pdf文档工具的使用方法

准备系统环境

这次使用的工具是pdfcrack 它依旧是Linux命令行工具

我用的liunx系统 仍然是kali (虚拟机) 如果没有可以去官网下载文件 导入你的虚拟机里

准备一个加了密的pdf文档

我们用wps就可以给pdf增加打开密码 方法如下

1.我们用world 先生成一个pdf 文档名就叫做secret吧

2.再打开secret.pdf 选择文档加密

 

 为了演示 我设置一个简单的密码 221217

 

 现在当你再次打开pdf 就提示你必须输入密码了

 

安装pdfcrack

直接使用命令安装

sudo apt-get update

sudo apt install pdfcrack

 

使用指定字符开始暴力破解

使用特定的字符排列组合

pdfcrack -f secret.pdf -n 6 -m 8 -c 0123456789

-f:选择要破解的pdf文件

· -n:密码最短多少个字符

· -m:密码最长多少个字符

· -c:使用的字符集

由于密码很简单 长度只有6位  很快就找到了密码 所以建议密码一定设置一个复杂的啊

 

 或者

pdfcrack -f secret.pdf -n 1 -m 20 -c 0123456789abcdefghijklmnopqrstuvwxyABCDEFGHIJKLMNOPQRSTUVWXYZ...

如果你的设置密码足够长 包含了真实密码的长度 字符也包含进去了(键盘上所有可输出的字符) 理论上是可以破解出来的 只不过是时间问题

下图可以看到我的电脑的运算速度   

 你可以随时使用 Ctrl+c 终止破解,它会保存破解的进度,下次继续在终止的地方执行。

使用字典文件进行爆破

pdfcrack -f secret.pdf -w pass.txt

 

 使用字典破解密码的关键在于你的密码字典是否全面 强悍 这就需要你的社工能力了 通过搜集所有者的信息 打造一款针对他的密码字典 这个可以大大提高破解的成功率。

附pdfcrack man手册

NAME pdfcrack - Password recovery tool for PDF-files

SYNOPSIS pdfcrack [ -f ] FILE [OPTION]...

DESCRIPTION PDFCrack is a tool for recovering passwords and content from PDF-files.

If aborted with Ctrl-C or by receiving a SIGINT signal, pdfcrack will auto‐ matically save current position. The position will be saved in a file called savedstate.sav in current working directory.

Mandatory arguments for long options are mandatory for short options too.

OPTIONS -b, --bench perform benchmark and exit

-c, --charset=STRING Use the characters in STRING as charset

-w, --wordlist=FILE Use FILE as source of passwords to try

-n, --minpw=INTEGER Skip trying passwords shorter than INTEGER

-m, --maxpw=INTEGER Stop when reaching this INTEGER passwordlength

-l, --loadstate=FILE Continue from the state saved in FILE

-o, --owner Work with the ownerpassword

-u, --user Work with the userpassword (default)

-p, --password=STRING Give userpassword to speed up breaking ownerpassword (implies -o)

-q, --quiet Run quietly

-s, --permutate Try permutating the passwords (currently only supports switching first character to uppercase)

-v, --version Print version and exit

REPORTING BUGS Via e-mail to Henning Noren confusion42@users.sourceforge.net or report on project page at http://pdfcrack.sourceforge.net/ AUTHOR Henning Noren

COPYRIGHT Copyright © 2009 Henning Noren confusion42@users.sourceforge.net This is free software. You may redistribute copies of it under the terms of the GNU General Public License The GNU General Public License v3.0- GNU Project - Free Software Foundation. There is NO WARRANTY, to the extent permitted by law.

User Commands February 2009 PDFCRACK(1)

有关暴力破解pdf文档密码的更多相关文章

  1. ruby-on-rails - Prawn PDF : I need to generate nested tables - 2

    我需要一个表,其中行实际上是2行表,一个嵌套表是..我怎样才能在Prawn中做到这一点?也许我需要延期..但哪一个? 最佳答案 现在支持子表:Prawn::Document.generate("subtable.pdf")do|pdf|subtable=pdf.make_table([["sub"],["table"]])pdf.table([[subtable,"original"]])end 关于ruby-on-rails-PrawnPDF:Ineedtogeneratenested

  2. Matlab imread()读到了什么 (浅显 当复习文档了) - 2

    matlab打开matlab,用最简单的imread方法读取一个图像clcclearimg_h=imread('hua.jpg');返回一个数组(矩阵),往往是a*b*cunit8类型解释一下这个三维数组的意思,行数、数和层数,unit8:指数据类型,无符号八位整形,可理解为0~2^8的数三个层数分别代表RGB三个通道图像rgb最常用的是24-位实现方法,即RGB每个通道有256色阶(2^8)。基于这样的24-位RGB模型的色彩空间可以表现256×256×256≈1670万色当imshow传入了一个二维数组,它将以灰度方式绘制;可以把图像拆分为rgb三层,可以以灰度的方式观察它figure(1

  3. ruby-on-rails - CarrierWave - PDF - 只选择第一页 - 2

    我的Rails应用程序中安装了carrierwave。但是,当用户上传多页pdf时,我只希望应用程序获取文档中的第一页并将其转换为jpeg。这可能吗?用什么命令?这是我的uploader。#encoding:utf-8classImageUploader[200,300]##defscale(width,height)##dosomething#end#Createdifferentversionsofyouruploadedfiles:version:thumbdoprocess:resize_to_fill=>[150,210]process:convert=>:jpgdefful

  4. ruby-on-rails - 在 Rails 中自定义 "Password confirmation doesn' t 匹配密码 - 2

    有没有办法在Rails中为确认字段自定义消息?例如在设计中我必须输入密码和password_confirmation并且错误消息是:Passwordconfirmationdoesn'tmatchPassword我可以更改事件记录语言环境消息(“不匹配”),但它会在该语言环境消息的开头和结尾输出密码确认和密码,所以我得到如下内容:"PasswordconfirmationmustmatchPassword"有没有办法将其更改为不同的字符串?PasswordconfirmationandPasswordmustmatch.编辑另一件事是拥有完全自定义的消息,例如:'Setpassword

  5. Ruby 等同于 Sphinx 文档生成器? - 2

    Ruby有一些不错的文档生成器,例如Yard、rDoc,甚至Glyph。问题是Sphinx可以做网站、PDF、epub、LaTex等。它在重组文本中完成所有这些事情。在Ruby世界中有替​​代方案吗?也许是程序的组合?如果我也能使用Markdown就更好了。 最佳答案 自1.0版以来,Sphinx有了“域”的概念,它是从Python和/或C以外的语言标记代码实体(如方法调用、对象、函数等)的方法。有一个rubydomain,所以你可以只使用Sphinx本身。您唯一会缺少的(我认为)是Sphinx使用autodoc从源代码自动创建文档

  6. ruby-on-rails - 我如何比较 'Bcrypt' Gem解密的密码和加密的密码 - 2

    我正在尝试对某些帖子的评论使用简单的身份验证。用户使用即时ID和密码输入评论我使用“bcrypt”gem将密码存储在数据库中。在comments_controller.rb中像这样@comment=Comment.new(comment_params)bcrypted_pwd=BCrypt::Password.create(@comment.user_pwd)@comment.user_pwd=bcrypted_pwd当用户想要删除他们的评论时,我使用data-confirm-modalgem来确认数据在这部分,我必须解密用户输入的密码以与数据库中的加密密码进行比较我怎样才能解密密码,

  7. ruby-on-rails - 如何在记录更新期间从验证中排除密码字段? ( rails 3.0.4, ruby 1.9.2) - 2

    我有一个允许更新用户记录的表单。它包含:password和:password_confirmation字段,但我不希望在数据库中已存储加密密码时对它们运行验证。View文件中的字段:'ConfirmPassword'%>在互联网上搜索时,我发现了这段代码,我认为它是针对以前版本的Ruby/Rails的。(我会把它放在我的用户模型中。)validates_presence_of:password,:on=>create由于我的用户模型中密码验证的语法不同(如下),我对我需要的语法感到困惑。validates:password,:presence=>true,:confirmation=>

  8. ruby-on-rails - Devise 在更改密码后注销用户 - 2

    我正在使用devise,当用户更改密码时,网站会将他们注销。我在网上读到,添加sign_in可以解决问题但不起作用,并且当密码更改时用户会注销。这是我的代码if@user.errors[:base].empty?and@user.update_attributes(params[:user])sign_in(current_user,:bypass=>true)flash[:success]="Useraccounthasbeensuccessfullyupdated"redirect_toedit_user_path(params[:site_id],@user)elserender

  9. ruby-on-rails - 在 irb 中阅读文档 - 2

    我怀念ipython的一件事是它有一个?为特定功能挖掘文档的运算符。我知道ruby​​有一个类似的命令行工具,但是我在irb中调用它非常不方便。ruby/irb有类似的东西吗? 最佳答案 Pry是IPython的Ruby版本,它支持?命令来查找有关方法的文档,但语法略有不同:pry(main)>?File.dirnameFrom:file.cinRubyCore(CMethod):Numberoflines:6visibility:publicsignature:dirname()Returnsallcomponentsofthef

  10. ruby - 存储外部 API 的密码 - 最佳实践 - 2

    如果我构建了一个应用程序来访问来自Gmail、Twitter和Facebook的一些数据,并且我希望用户只需输入一次他们的身份验证信息,并且在几天或几周后重置,那会怎样是在Ruby中动态执行此操作的最佳方法吗?我看到很多人只是拥有他们客户/用户凭证的配置文件,如下所示:gmail_account:username:myClientpassword:myClientsPassword这看起来a)非常不安全,b)如果我想为成千上万的用户存储此类信息,它就无法工作。推荐的方法是什么?我希望能够在这些服务之上构建一个界面,因此每次用户进行交易时都必须输入凭据是不可行的。

随机推荐