{"id":1090,"date":"2016-09-07T18:37:16","date_gmt":"2016-09-07T18:37:16","guid":{"rendered":"http:\/\/blog.paranoidprofessor.com\/?p=1090"},"modified":"2017-07-27T16:14:35","modified_gmt":"2017-07-27T16:14:35","slug":"security-through-obscurity-pdf-removing-passwords","status":"publish","type":"post","link":"https:\/\/blog.paranoidprofessor.com\/index.php\/2016\/09\/07\/security-through-obscurity-pdf-removing-passwords\/","title":{"rendered":"Security through obscurity &#8211; pdf removing passwords"},"content":{"rendered":"<p>Initially I was not planning on writing about how to crack pdf passwords. \u00a0After all, that would be irresponsible much in the way giving a knife to a small child is irresponsible &#8211; right?<\/p>\n<p>Well, simply typing in the following three words into your search engine.<\/p>\n<blockquote><p><strong>pdf password recovery<\/strong><\/p><\/blockquote>\n<p>This search will return quite a few entries that can be purchased or downloaded for free. \u00a0This blog posting will help you most with pdf&#8217;s you created with a password that wasn&#8217;t overly strong. \u00a0If you are looking strong passwords you might be taking months or centuries to <a href=\"http:\/\/blog.paranoidprofessor.com\/index.php\/2016\/07\/27\/safe-computing-strengthening-passwords\/\" target=\"_blank\">crack your password<\/a>.<\/p>\n<p>I received a pdf file that was protected with a password. \u00a0Apparently there was a slight miscommunication of what the password was and so I couldn&#8217;t open the file that was intended for me.<\/p>\n<p>Guessing passwords, especially if you have no idea about the length or how secure the password is &#8211; is foolish.\u00a0\u00a0Despite how fast the computers are today they are not fast enough to break an arbitrarily long and complex password.<\/p>\n<p>A four character password actually can be brute force broken without any real effort in less than 2 minutes<\/p>\n<blockquote><p>&gt;echo 23:31:42,30<br \/>\n23:31:42,30<\/p>\n<p>&gt;..\\pdfcrack file-4char.pdf<br \/>\nPDF version 1.4<br \/>\nSecurity Handler: Standard<br \/>\nV: 2<br \/>\nR: 3<br \/>\nP: -3904<br \/>\nLength: 128<br \/>\nEncrypted Metadata: True<br \/>\nFileID: ee806bec8c858dd1bdd1575322c0202b<br \/>\nU: 5a1e5f56878012e4b920c42d2616f85900000000000000000000000000000000<br \/>\nO: 18512d0db798a3154a508336074c85f9171b9147980a8a2a48009fc1a1cf91aa<br \/>\nAverage Speed: 42185.4 w\/s. Current Word: &#8216;lDGc&#8217;<br \/>\nAverage Speed: 42201.3 w\/s. Current Word: &#8216;Gceg&#8217;<br \/>\nAverage Speed: 42447.3 w\/s. Current Word: &#8216;m3Mj&#8217;<br \/>\nAverage Speed: 42391.4 w\/s. Current Word: &#8216;1Bln&#8217;<br \/>\nAverage Speed: 42208.1 w\/s. Current Word: &#8216;xdTq&#8217;<br \/>\nfound user-password: &#8216;Pass&#8217;<\/p>\n<p>&gt;echo 23:33:31,21<br \/>\n23:33:31,21<\/p><\/blockquote>\n<p>If you can narrow down the composition of\u00a0the password it is even faster at about a minute.<\/p>\n<blockquote><p>&gt;echo 22:56:23,41<br \/>\n22:56:23,41<\/p>\n<p>&gt;..\\pdfcrack file-4char.pdf -c abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ -n 4<br \/>\nPDF version 1.4<br \/>\nSecurity Handler: Standard<br \/>\nV: 2<br \/>\nR: 3<br \/>\nP: -3904<br \/>\nLength: 128<br \/>\nEncrypted Metadata: True<br \/>\nFileID: ee806bec8c858dd1bdd1575322c0202b<br \/>\nU: 5a1e5f56878012e4b920c42d2616f85900000000000000000000000000000000<br \/>\nO: 18512d0db798a3154a508336074c85f9171b9147980a8a2a48009fc1a1cf91aa<br \/>\nAverage Speed: 42185.2 w\/s. Current Word: &#8216;ebag&#8217;<br \/>\nAverage Speed: 42079.4 w\/s. Current Word: &#8216;znZl&#8217;<br \/>\nAverage Speed: 42294.0 w\/s. Current Word: &#8216;veas&#8217;<br \/>\nfound user-password: &#8216;Pass&#8217;<\/p>\n<p>echo 22:57:24,61<br \/>\n22:57:24,61<\/p><\/blockquote>\n<p>Just extending the password by one more character moves the task from the minutes to the hours.<\/p>\n<p>I was lucky because the document wasn&#8217;t that important and the password was all lowercase letters (and not too long).<\/p>\n<p>Had the task been a bit more complex I\u00a0never could have managed to crack the code that fast. \u00a0Had it taken longer, the time from that timezone would have changed\u00a0and I would have been able to pick up the phone and get a new file.<\/p>\n<p>The pdfcrack utility doesn&#8217;t take full advantage of multi threading on modern computers. \u00a0This is actually the only serious drawback for this program. \u00a0The task of brute forcing passwords while using it is less of a slam dunk with one thread versus four\u00a0or more.<\/p>\n<blockquote><p><strong>pdfcrack -t 4 receipe128.pdf<\/strong><\/p>\n<p>1:13:24,60<br \/>\nPDF version 1.4<br \/>\nSecurity Handler: Standard<br \/>\nV: 2<br \/>\nR: 3<br \/>\nP: -1852<br \/>\nLength: 128<br \/>\nEncrypted Metadata: True<br \/>\nFileID: 2625660821a90493e6068fab2aae37c8<br \/>\nU: 4e25fb3aea8995c47eed5bcafb67bc0300000000000000000000000000000000<br \/>\nO: 793706a064e35128a24bb79929a29805a1b0e20163d8edcf431da912648bdcae<br \/>\nthread 0 started<br \/>\nthread 1 started<br \/>\nthread 2 started<br \/>\nthread 3 started<br \/>\nAverage Speed: 161666.2 w\/s. Current Word: &#8216;3Jxc&#8217;<br \/>\nAverage Speed: 161633.8 w\/s. Current Word: &#8216;7iWf&#8217;<br \/>\nAverage Speed: 162077.2 w\/s. Current Word: &#8216;zslj&#8217;<br \/>\nAverage Speed: 162074.8 w\/s. Current Word: &#8216;5DKm&#8217;<br \/>\nThread 3 found password: &#8216;Pass&#8217;<br \/>\njoined thread 0<br \/>\njoined thread 1<br \/>\njoined thread 2<br \/>\njoined thread 3<br \/>\nfound user-password: &#8216;Pass&#8217;<br \/>\n1:13:53,10<\/p><\/blockquote>\n<p>The changes to support multi threading don&#8217;t appear to be base build of the pdfcrack tool but it is possible to get a copy that does from the following site.<\/p>\n<blockquote><p><a href=\"http:\/\/andi.flowrider.ch\/research\/pdfcrack.html\">http:\/\/andi.flowrider.ch\/research\/pdfcrack.html<\/a><\/p>\n<p><strong>Source code<\/strong><\/p>\n<p><a href=\"http:\/\/andi.flowrider.ch\/research\/public\/pdfcrack\/pdfcrack.tar\" target=\"_blank\">http:\/\/andi.flowrider.ch\/research\/public\/pdfcrack\/pdfcrack.tar<\/a><\/p>\n<p><strong>Windows binary<\/strong><\/p>\n<p><a href=\"http:\/\/andi.flowrider.ch\/research\/public\/pdfcrack\/pdfcrack_windows.zip\" target=\"_blank\">http:\/\/andi.flowrider.ch\/research\/public\/pdfcrack\/pdfcrack_windows.zip<\/a><\/p><\/blockquote>\n<p>During my testing I had a chance to experiment more with PDF&#8217;s. \u00a0It is a lot easier during testing if you can easily add and remove passwords.<\/p>\n<p>The PDFTK tool does offer a number of different abilities to manipulate pdf files including both adding and removing passwords.<\/p>\n<p>&nbsp;<\/p>\n<h2>Secure PDF with password<\/h2>\n<p>The entire reason I became familiar with the PDFTK tool was because it was a command line program that could be used to encrypt pdf files.\u00a0 It is much easier to quickly type up the following command to &#8220;lock up&#8221; your pdf.<\/p>\n<pre><code>pdftk &lt;source pdf&gt; output &lt;encrypted pdf&gt; owner_pw &lt;owner pass&gt; user_pw &lt;user pass&gt; allow printing\r\n\r\npdftk receipe.pdf output receipe-encr128.pdf owner_pw secretpw user_pw pass6\r\n<\/code><\/pre>\n<p>The owner password is required for setting or clearing the password to prevent people from reading your document. \u00a0The user password is that password. \u00a0It is the user password that you are prompted for when opening up your encrypted PDF file.<\/p>\n<p>The last two parameters on the command line actually are very self explanatory. \u00a0When you add &#8220;allow printing&#8221; you can also print the PDF file once you enter your password. \u00a0It is not clear if every open source PDF viewer respects that flag but Adobe reader certainly does.<\/p>\n<p>There are a few other permissions you can grant.<\/p>\n<ul>\n<li>DegradedPrinting<\/li>\n<li>ModifyContents<\/li>\n<li>Assembly<\/li>\n<li>CopyContents<\/li>\n<li>ScreenReaders<\/li>\n<li>ModifyAnnotations<\/li>\n<li>FillIn<\/li>\n<li>AllFeatures<\/li>\n<\/ul>\n<p>If you want to be able to print out your encrypted file, don&#8217;t forget to add &#8220;allow printing&#8221;.<\/p>\n<p>&nbsp;<\/p>\n<h2>Remove PDF password<\/h2>\n<p>Removing a password is just as easy as adding it. \u00a0Simply pick your file and provide your owner password and it will be removed.<\/p>\n<pre><code>pdftk &lt;source pdf&gt; input_pw &lt;pass&gt; output &lt;destination pdf&gt;\r\n\r\npdftk receipe128.pdf input_pw secretpw output receipe-nopass.pdf\r\n<\/code><\/pre>\n<p>&nbsp;<\/p>\n<h2>Extract a single page<\/h2>\n<p>The PDFTK tool can also manipulate the pdf itself not just deal with the security.<\/p>\n<p>The PDFTK tool works great at extracting one or more pages from a larger pdf to create a smaller pdf.\u00a0 Whats more, the command actually seems pretty clear what it needs and what it is doing.<\/p>\n<pre><code>pdftk &lt;source pdf&gt; cat &lt;page or range&gt; output &lt;destination pdf&gt; \r\n\r\npdftk main.pdf cat 1 output page1.pdf\r\n\r\npdftk main.pdf cat 1-8 output firsteightpages.pdf<\/code><\/pre>\n<p>This example is creating a new pdf called page1.pdf which will contain page 1 from our pdf called &#8220;main.pdf&#8221;.\u00a0 It isn&#8217;t clear why the parameter &#8220;cat&#8221;\u00a0wasn&#8217;t perhaps page or range to be a bit more friendly to the people less comfortable with the command line.\u00a0 Yet in general, most commands are a bit arbitrary and you simply need to memorize the name, their parameters and what the command does does.<\/p>\n<p>The PDFTK program does the extraction with no output to the screen.\u00a0 If you want a bit more feedback from the program simply add the parameter &#8220;verbose&#8221; at the end. \u00a0The output doesn&#8217;t provide much that is interesting.<\/p>\n<p>It is usually easier to run the command and if you do make a mistake the error will be displayed.<\/p>\n<p>&nbsp;<\/p>\n<h2>Extract all pages<\/h2>\n<p>After seeing what is necessary to extract a single page, my mind had already created a shell script to go through the process and extract all pages.<\/p>\n<p>This must be a fairly common desire when manipulating pdfs as there is a parameter for doing this.<\/p>\n<pre><code>pdftk &lt;source pdf&gt; burst\r\n\r\npdftk main.pdf burst\r\n<\/code><\/pre>\n<p>PDFTK will create as many pg_####.pdf \u00a0files as there are pages.<\/p>\n<blockquote><p><strong>ls -ltr<\/strong><br id=\"yiv6816067000yui_3_16_0_ym19_1_1473173459063_4311\" \/>total 328<br id=\"yiv6816067000yui_3_16_0_ym19_1_1473173459063_4312\" \/>drwxr-xr-x 2 cdock cdock\u00a0 4096 Mar 11\u00a0 2015 Videos<br id=\"yiv6816067000yui_3_16_0_ym19_1_1473173459063_4313\" \/>drwxr-xr-x 2 cdock cdock\u00a0 4096 Mar 11\u00a0 2015 Templates<br id=\"yiv6816067000yui_3_16_0_ym19_1_1473173459063_4314\" \/>drwxr-xr-x 2 cdock cdock\u00a0 4096 Mar 11\u00a0 2015 Public<br id=\"yiv6816067000yui_3_16_0_ym19_1_1473173459063_4315\" \/>drwxr-xr-x 2 cdock cdock\u00a0 4096 Mar 11\u00a0 2015 Pictures<br id=\"yiv6816067000yui_3_16_0_ym19_1_1473173459063_4316\" \/>drwxr-xr-x 2 cdock cdock\u00a0 4096 Mar 11\u00a0 2015 Music<br id=\"yiv6816067000yui_3_16_0_ym19_1_1473173459063_4317\" \/>drwxr-xr-x 2 cdock cdock\u00a0 4096 Mar 11\u00a0 2015 Downloads<br id=\"yiv6816067000yui_3_16_0_ym19_1_1473173459063_4318\" \/>drwxr-xr-x 2 cdock cdock\u00a0 4096 Mar 11\u00a0 2015 Documents<br id=\"yiv6816067000yui_3_16_0_ym19_1_1473173459063_4319\" \/>drwxr-xr-x 2 cdock cdock\u00a0 4096 Mar 11\u00a0 2015 Desktop<br id=\"yiv6816067000yui_3_16_0_ym19_1_1473173459063_4320\" \/>-rw-r&#8211;r&#8211; 1 cdock cdock 69845 Sep\u00a0 6 16:01 main.pdf<\/p>\n<p><br id=\"yiv6816067000yui_3_16_0_ym19_1_1473173459063_4325\" \/>&gt; <strong>pdftk main.pdf burst<\/strong><br id=\"yiv6816067000yui_3_16_0_ym19_1_1473173459063_4326\" \/>&gt; <strong>ls -ltr<\/strong><br id=\"yiv6816067000yui_3_16_0_ym19_1_1473173459063_4327\" \/>total 484<br id=\"yiv6816067000yui_3_16_0_ym19_1_1473173459063_4328\" \/>drwxr-xr-x 2 cdock cdock\u00a0 4096 Mar 11\u00a0 2015 Videos<br id=\"yiv6816067000yui_3_16_0_ym19_1_1473173459063_4329\" \/>drwxr-xr-x 2 cdock cdock\u00a0 4096 Mar 11\u00a0 2015 Templates<br id=\"yiv6816067000yui_3_16_0_ym19_1_1473173459063_4330\" \/>drwxr-xr-x 2 cdock cdock\u00a0 4096 Mar 11\u00a0 2015 Public<br id=\"yiv6816067000yui_3_16_0_ym19_1_1473173459063_4331\" \/>drwxr-xr-x 2 cdock cdock\u00a0 4096 Mar 11\u00a0 2015 Pictures<br id=\"yiv6816067000yui_3_16_0_ym19_1_1473173459063_4332\" \/>drwxr-xr-x 2 cdock cdock\u00a0 4096 Mar 11\u00a0 2015 Music<br id=\"yiv6816067000yui_3_16_0_ym19_1_1473173459063_4333\" \/>drwxr-xr-x 2 cdock cdock\u00a0 4096 Mar 11\u00a0 2015 Downloads<br id=\"yiv6816067000yui_3_16_0_ym19_1_1473173459063_4334\" \/>drwxr-xr-x 2 cdock cdock\u00a0 4096 Mar 11\u00a0 2015 Documents<br id=\"yiv6816067000yui_3_16_0_ym19_1_1473173459063_4335\" \/>drwxr-xr-x 2 cdock cdock\u00a0 4096 Mar 11\u00a0 2015 Desktop<br id=\"yiv6816067000yui_3_16_0_ym19_1_1473173459063_4336\" \/>-rw-r&#8211;r&#8211; 1 cdock cdock 69845 Sep\u00a0 6 16:01 main.pdf<br id=\"yiv6816067000yui_3_16_0_ym19_1_1473173459063_4341\" \/><span style=\"color: #3366ff;\">-rw-r&#8211;r&#8211; 1 cdock cdock 43184 Sep\u00a0 6 16:55 pg_0002.pdf<\/span><br id=\"yiv6816067000yui_3_16_0_ym19_1_1473173459063_4342\" \/><span style=\"color: #3366ff;\">-rw-r&#8211;r&#8211; 1 cdock cdock 52053 Sep\u00a0 6 16:55 pg_0001.pdf<\/span><br id=\"yiv6816067000yui_3_16_0_ym19_1_1473173459063_4343\" \/><span style=\"color: #3366ff;\">-rw-r&#8211;r&#8211; 1 cdock cdock 54452 Sep\u00a0 6 16:55 pg_0003.pdf<\/span><br id=\"yiv6816067000yui_3_16_0_ym19_1_1473173459063_4344\" \/><span style=\"color: #3366ff;\">-rw-r&#8211;r&#8211; 1 cdock cdock\u00a0\u00a0 505 Sep\u00a0 6 16:55 doc_data.txt<\/span><\/p><\/blockquote>\n<p>The final file create, doc_data.txt, contains information about the pdf itself.<\/p>\n<h2>Assembly of new PDF&#8217;s<\/h2>\n<p>Merging multiple pdf files into a single pdf is also trivial. \u00a0Simply list all of them on the command line and they are placed into the final pdf file in the same order they are listed on the command line.<\/p>\n<div class=\"sbody-code\">\n<pre><code>pdftk &lt;source pdf 1&gt; &lt;source pdf 2&gt; ... &lt;source pdf n&gt;  cat output newfile.pdf\r\npdftk pg_0001.pdf pg_0002.pdf pg_0003.pdf cat output newfile.pdf<\/code><\/pre>\n<\/div>\n<h2>Installing Windows software<\/h2>\n<p>The good news is that even if you aren&#8217;t a Linux person you can download windows versions of these utilities.<\/p>\n<h5><strong>PDFCrack Windows binary<\/strong><\/h5>\n<p><a href=\"http:\/\/andi.flowrider.ch\/research\/public\/pdfcrack\/pdfcrack_windows.zip\" target=\"_blank\">http:\/\/andi.flowrider.ch\/research\/public\/pdfcrack\/pdfcrack_windows.zip<\/a><\/p>\n<h5><strong>PDFTK Windows binary<\/strong><\/h5>\n<p><a href=\"https:\/\/www.pdflabs.com\/tools\/pdftk-the-pdf-toolkit\/\" target=\"_blank\">https:\/\/www.pdflabs.com\/tools\/pdftk-the-pdf-toolkit\/<\/a><\/p>\n<h2><\/h2>\n<h2>Installing Linux software<\/h2>\n<p>Installation on Linux may vary depending on your distribution. \u00a0On the Debian based distros simply use apt-get to get your own copy of either pdftk or pdfcrack.<\/p>\n<h5><strong>Install PDFCrack<\/strong><\/h5>\n<blockquote><p>&gt; sudo apt-get install pdfcrack<br \/>\n[sudo] password for dock:<br \/>\nReading package lists&#8230; Done<br \/>\nBuilding dependency tree<br \/>\nReading state information&#8230; Done<br \/>\nThe following packages were automatically installed and are no longer required:<br \/>\ngstreamer1.0-pulseaudio icedtea-netx-common libasn1-8-heimdal libatk-wrapper-java libatk-wrapper-java-jni libfreerdp-rail1.1<br \/>\nlibgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhx509-5-heimdal libkrb5-26-heimdal<br \/>\nliblivemedia23 libmpg123-0 libpostproc52 libproxy-tools libroken18-heimdal libusageenvironment1 libwind0-heimdal<br \/>\nUse &#8216;apt-get autoremove&#8217; to remove them.<br \/>\nThe following NEW packages will be installed:<br \/>\npdfcrack<br \/>\n0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.<br \/>\nNeed to get 32.4 kB of archives.<br \/>\nAfter this operation, 105 kB of additional disk space will be used.<br \/>\nGet:1 http:\/\/ftp.de.debian.org\/debian\/ jessie\/main pdfcrack amd64 0.14-2 [32.4 kB]<br \/>\nFetched 32.4 kB in 0s (167 kB\/s)<br \/>\nSelecting previously unselected package pdfcrack.<br \/>\n(Reading database &#8230; 144680 files and directories currently installed.)<br \/>\nPreparing to unpack &#8230;\/pdfcrack_0.14-2_amd64.deb &#8230;<br \/>\nUnpacking pdfcrack (0.14-2) &#8230;<br \/>\nProcessing triggers for man-db (2.7.0.2-5) &#8230;<br \/>\nSetting up pdfcrack (0.14-2) &#8230;<\/p><\/blockquote>\n<h5><strong>Install PDFTK<\/strong><\/h5>\n<blockquote><p>&gt; sudo apt-get install pdftk<br \/>\nReading package lists&#8230; Done<br \/>\nBuilding dependency tree<br \/>\nReading state information&#8230; Done<br \/>\nThe following packages were automatically installed and are no longer required:<br \/>\ngstreamer1.0-pulseaudio icedtea-netx-common libasn1-8-heimdal libatk-wrapper-java libatk-wrapper-java-jni libfreerdp-rail1.1<br \/>\nlibgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhx509-5-heimdal libkrb5-26-heimdal<br \/>\nliblivemedia23 libmpg123-0 libpostproc52 libproxy-tools libroken18-heimdal libusageenvironment1 libwind0-heimdal<br \/>\nUse &#8216;apt-get autoremove&#8217; to remove them.<br \/>\nThe following extra packages will be installed:<br \/>\ngcj-4.9-jre-lib libgcj-common libgcj15<br \/>\nSuggested packages:<br \/>\nlibgcj15-dbg libgcj15-awt<br \/>\nThe following NEW packages will be installed:<br \/>\ngcj-4.9-jre-lib libgcj-common libgcj15 pdftk<br \/>\n0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.<br \/>\nNeed to get 20.4 MB of archives.<br \/>\nAfter this operation, 70.6 MB of additional disk space will be used.<br \/>\nDo you want to continue? [Y\/n] y<br \/>\nGet:1 http:\/\/ftp.de.debian.org\/debian\/ jessie\/main libgcj-common all 1:4.9.1-7 [160 kB]<br \/>\nGet:2 http:\/\/ftp.de.debian.org\/debian\/ jessie\/main libgcj15 amd64 4.9.2-10 [9,224 kB]<br \/>\nGet:3 http:\/\/ftp.de.debian.org\/debian\/ jessie\/main gcj-4.9-jre-lib all 4.9.2-10 [10.3 MB]<br \/>\nGet:4 http:\/\/ftp.de.debian.org\/debian\/ jessie\/main pdftk amd64 2.02-2 [678 kB]<br \/>\nFetched 20.4 MB in 23s (851 kB\/s)<br \/>\nSelecting previously unselected package libgcj-common.<br \/>\n(Reading database &#8230; 144687 files and directories currently installed.)<br \/>\nPreparing to unpack &#8230;\/libgcj-common_1%3a4.9.1-7_all.deb &#8230;<br \/>\nUnpacking libgcj-common (1:4.9.1-7) &#8230;<br \/>\nSelecting previously unselected package libgcj15:amd64.<br \/>\nPreparing to unpack &#8230;\/libgcj15_4.9.2-10_amd64.deb &#8230;<br \/>\nUnpacking libgcj15:amd64 (4.9.2-10) &#8230;<br \/>\nSelecting previously unselected package gcj-4.9-jre-lib.<br \/>\nPreparing to unpack &#8230;\/gcj-4.9-jre-lib_4.9.2-10_all.deb &#8230;<br \/>\nUnpacking gcj-4.9-jre-lib (4.9.2-10) &#8230;<br \/>\nSelecting previously unselected package pdftk.<br \/>\nPreparing to unpack &#8230;\/pdftk_2.02-2_amd64.deb &#8230;<br \/>\nUnpacking pdftk (2.02-2) &#8230;<br \/>\nProcessing triggers for man-db (2.7.0.2-5) &#8230;<br \/>\nSetting up libgcj-common (1:4.9.1-7) &#8230;<br \/>\nSetting up libgcj15:amd64 (4.9.2-10) &#8230;<br \/>\nSetting up gcj-4.9-jre-lib (4.9.2-10) &#8230;<br \/>\nSetting up pdftk (2.02-2) &#8230;<br \/>\nProcessing triggers for libc-bin (2.19-18+deb8u4) &#8230;<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Initially I was not planning on writing about how to crack pdf passwords. \u00a0After all, that would be irresponsible much in the way giving a knife to a small child is irresponsible &#8211; right? Well, simply typing in the following &hellip; <a href=\"https:\/\/blog.paranoidprofessor.com\/index.php\/2016\/09\/07\/security-through-obscurity-pdf-removing-passwords\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2,89,3],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.paranoidprofessor.com\/index.php\/wp-json\/wp\/v2\/posts\/1090"}],"collection":[{"href":"https:\/\/blog.paranoidprofessor.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.paranoidprofessor.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.paranoidprofessor.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.paranoidprofessor.com\/index.php\/wp-json\/wp\/v2\/comments?post=1090"}],"version-history":[{"count":22,"href":"https:\/\/blog.paranoidprofessor.com\/index.php\/wp-json\/wp\/v2\/posts\/1090\/revisions"}],"predecessor-version":[{"id":1239,"href":"https:\/\/blog.paranoidprofessor.com\/index.php\/wp-json\/wp\/v2\/posts\/1090\/revisions\/1239"}],"wp:attachment":[{"href":"https:\/\/blog.paranoidprofessor.com\/index.php\/wp-json\/wp\/v2\/media?parent=1090"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.paranoidprofessor.com\/index.php\/wp-json\/wp\/v2\/categories?post=1090"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.paranoidprofessor.com\/index.php\/wp-json\/wp\/v2\/tags?post=1090"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}