<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Didier Stevens</title>
	<atom:link href="http://blog.didierstevens.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.didierstevens.com</link>
	<description>(blog \'DidierStevens)</description>
	<lastBuildDate>Thu, 23 May 2013 18:25:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.didierstevens.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Didier Stevens</title>
		<link>http://blog.didierstevens.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.didierstevens.com/osd.xml" title="Didier Stevens" />
	<atom:link rel='hub' href='http://blog.didierstevens.com/?pushpress=hub'/>
		<item>
		<title>Quickpost: Signed PDF Stego</title>
		<link>http://blog.didierstevens.com/2013/05/15/quickpost-signed-pdf-stego/</link>
		<comments>http://blog.didierstevens.com/2013/05/15/quickpost-signed-pdf-stego/#comments</comments>
		<pubDate>Wed, 15 May 2013 14:08:08 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
				<category><![CDATA[Encryption]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[Quickpost]]></category>

		<guid isPermaLink="false">http://blog.didierstevens.com/?p=3503</guid>
		<description><![CDATA[A signed PDF file is just like all signed files with embedded signatures: the signature itself is excluded from the hash calculation. Open a signed PDF document in a hex editor and search for string /ByteRange. You&#8217;ll find something like this: 36 0 obj &#60;&#60;/ByteRange[0 227012 248956 23362 ]            /Contents&#60;308226e106092a864886f7 This indicates which byte sequences  are [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&#038;blog=264765&#038;post=3503&#038;subd=didierstevens&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>A signed PDF file is just like all signed files with embedded signatures: the signature itself is excluded from the hash calculation.</p>
<p>Open a signed PDF document in a hex editor and search for string /ByteRange. You&#8217;ll find something like this:</p>
<pre>36 0 obj
&lt;&lt;/ByteRange[0 227012 248956 23362 ]            /Contents&lt;308226e106092a864886f7</pre>
<p>This indicates which byte sequences  are used for the hash calculation (position and length of each sequence). So in this example, byte sequence 227013-248955 is excluded, because it contains the signature in hex format padded with 0&#215;00 bytes. This padding is not part of the DER signature, you can change it without changing or invalidating the signature.</p>
<hr />
<p><a href="http://blog.didierstevens.com/2007/11/01/announcing-quickposts/">Quickpost info</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/3503/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/3503/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&#038;blog=264765&#038;post=3503&#038;subd=didierstevens&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2013/05/15/quickpost-signed-pdf-stego/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/b7ca17d338918a19d656f79b0b16057f?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>
	</item>
		<item>
		<title>Adobe Reader and CRLs</title>
		<link>http://blog.didierstevens.com/2013/05/13/adobe-reader-and-crls/</link>
		<comments>http://blog.didierstevens.com/2013/05/13/adobe-reader-and-crls/#comments</comments>
		<pubDate>Mon, 13 May 2013 18:08:36 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
				<category><![CDATA[Encryption]]></category>
		<category><![CDATA[PDF]]></category>

		<guid isPermaLink="false">http://blog.didierstevens.com/?p=3492</guid>
		<description><![CDATA[There&#8217;s something that I wanted to test out for quite some time, but kept postponing until recently. Adobe Reader will ask confirmation before it retrieves a URL when a PDF document contains an action to do so. But what about the Certificate Revocation List in a signed PDF document? When you open a signed PDF [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&#038;blog=264765&#038;post=3492&#038;subd=didierstevens&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>There&#8217;s something that I wanted to test out for quite some time, but kept postponing until recently. Adobe Reader will ask confirmation before it retrieves a URL when a PDF document contains an action to do so. But what about the <a href="http://blog.didierstevens.com/2013/05/08/howto-make-your-own-cert-and-revocation-list-with-openssl/">Certificate Revocation List</a> in a <a href="http://blog.didierstevens.com/2013/04/26/howto-add-a-digital-signature-to-a-pdf-file-free-software/">signed PDF document</a>?</p>
<p>When you open a signed PDF document with Adobe Reader, the signature gets checked automatically. If the signature is not OK, for example because it doesn&#8217;t chain up to a trusted root CA, revocations checks are not performed. In other words, the CRL is not downloaded:</p>
<p><img class="alignnone size-full wp-image-3493" alt="20130426-141512" src="http://didierstevens.files.wordpress.com/2013/05/20130426-141512.png?w=1024&#038;h=770" width="1024" height="770" /></p>
<p>But when I change the settings so that my root CA is trusted, the signature is considered valid and the CRL is retrieved. No warning is given to the user, it happens automatically and silently. Here is the log entry on my server:</p>
<p>192.168.1.1 &#8211; - [26/Apr/2013:11:33:35 -0400] &#8220;GET /root.crl HTTP/1.1&#8243; 200 709 &#8220;-&#8221; &#8220;PPKHandler&#8221;</p>
<p>PPKHandler is the User Agent String.</p>
<p><img class="alignnone size-full wp-image-3494" alt="20130426-173447" src="http://didierstevens.files.wordpress.com/2013/05/20130426-173447.png?w=1024&#038;h=703" width="1024" height="703" /></p>
<p><img class="alignnone size-full wp-image-3495" alt="20130426-173632" src="http://didierstevens.files.wordpress.com/2013/05/20130426-173632.png?w=1013&#038;h=691" width="1013" height="691" /></p>
<p>The CRL file can&#8217;t be an empty file, and must be signed by the root CA, otherwise the signature is considered invalid.</p>
<p>So when you open a signed PDF document with Adobe Reader, the signature is automatically checked and the CRL is silently downloaded. This is done with a request to the webserver of the commercial CA which issued the certificate (crl.adobe.com, crl.geotrust.com, &#8230;). You can change automatic checking with Preferences / Signatures / Verification.</p>
<p>A quick check with Foxit Reader reveals it doesn&#8217;t check the signature automatically.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/3492/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/3492/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&#038;blog=264765&#038;post=3492&#038;subd=didierstevens&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2013/05/13/adobe-reader-and-crls/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/b7ca17d338918a19d656f79b0b16057f?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2013/05/20130426-141512.png" medium="image">
			<media:title type="html">20130426-141512</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2013/05/20130426-173447.png" medium="image">
			<media:title type="html">20130426-173447</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2013/05/20130426-173632.png" medium="image">
			<media:title type="html">20130426-173632</media:title>
		</media:content>
	</item>
		<item>
		<title>Howto: Make Your Own Cert And Revocation List With OpenSSL</title>
		<link>http://blog.didierstevens.com/2013/05/08/howto-make-your-own-cert-and-revocation-list-with-openssl/</link>
		<comments>http://blog.didierstevens.com/2013/05/08/howto-make-your-own-cert-and-revocation-list-with-openssl/#comments</comments>
		<pubDate>Wed, 08 May 2013 10:34:07 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
				<category><![CDATA[Encryption]]></category>

		<guid isPermaLink="false">http://blog.didierstevens.com/?p=3482</guid>
		<description><![CDATA[Here is a variant to my &#8220;Howto: Make Your Own Cert With OpenSSL&#8221; method. This time, I needed a signing cert with a Certificate Revocation List (CRL) extension and an (empty) CRL. I used instructions from this post. Adding a CRL extension to a certificate is not difficult, you just need to include a configuration [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&#038;blog=264765&#038;post=3482&#038;subd=didierstevens&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Here is a variant to my <a href="http://blog.didierstevens.com/2008/12/30/howto-make-your-own-cert-with-openssl/">&#8220;Howto: Make Your Own Cert With OpenSSL&#8221;</a> method. This time, I needed a signing cert with a Certificate Revocation List (CRL) extension and an (empty) CRL. I used instructions from this <a href="http://math.cmu.edu/~svasey/old-homepage-archive-2013/projects/software-usage-notes/ssl_en.html">post</a>.</p>
<p>Adding a CRL extension to a certificate is not difficult, you just need to include a configuration file with one line. But creating a CRL file requires more steps, that&#8217;s why I needed this howto. The start of this howto is the same as my <a href="http://blog.didierstevens.com/2008/12/30/howto-make-your-own-cert-with-openssl/">previous howto</a>.</p>
<p>First we generate a 4096-bit long RSA key for our root CA and store it in file ca.key:</p>
<p><strong>openssl genrsa -out ca.key 4096</strong></p>
<pre>Generating RSA private key, 4096 bit long modulus
...................................................................................++
........................................................................++
e is 65537 (0x10001)</pre>
<p>If you want to password-protect this key, add option -des3.</p>
<p>Next, we create our self-signed root CA certificate ca.crt; you&#8217;ll need to provide an identity for your root CA:</p>
<p><strong>openssl req -new -x509 -days 1826 -key ca.key -out ca.crt</strong></p>
<pre>You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:BE
State or Province Name (full name) []:Brussels
Locality Name (eg, city) [Default City]:Brussels
Organization Name (eg, company) [Default Company Ltd]:Didier Stevens
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:Didier Stevens CA
Email Address []:</pre>
<p>The -x509 option is used for a self-signed certificate. 1826 days gives us a cert valid for 5 years.</p>
<p>Next step: create our subordinate CA that will be used for the actual signing. First, generate the key:</p>
<p><strong>openssl genrsa -out ia.key 4096</strong></p>
<pre>Generating RSA private key, 4096 bit long modulus
.....++
.............................................................................++
e is 65537 (0x10001)</pre>
<p>Then, request a certificate for this subordinate CA:</p>
<p><strong>openssl req -new -key ia.key -out ia.csr</strong></p>
<pre>You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:BE
State or Province Name (full name) []:Brussels
Locality Name (eg, city) [Default City]:Brussels
Organization Name (eg, company) [Default Company Ltd]:Didier Stevens
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:Didier Stevens IA
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:</pre>
<p>Make sure the Common Name is different for both certs, otherwise you&#8217;ll get an error. Now, before we process the request for the subordinate CA certificate and get it signed by the root CA, we need to create a couple of files (this step is done with Linux; to create empty file certindex on Windows, you could use Notepad in stead of touch).</p>
<pre>touch certindex
echo 01 &gt; certserial
echo 01 &gt; crlnumber</pre>
<p>And also create this configuration file (ca.conf):</p>
<pre># Mainly copied from:
# http://swearingscience.com/2009/01/18/openssl-self-signed-ca/

[ ca ]
default_ca = myca

[ crl_ext ]
# issuerAltName=issuer:copy  #this would copy the issuer name to altname
authorityKeyIdentifier=keyid:always

 [ myca ]
 dir = ./
 new_certs_dir = $dir
 unique_subject = no
 certificate = $dir/ca.crt
 database = $dir/certindex
 private_key = $dir/ca.key
 serial = $dir/certserial
 default_days = 730
 default_md = sha1
 policy = myca_policy
 x509_extensions = myca_extensions
 crlnumber = $dir/crlnumber
 default_crl_days = 730

 [ myca_policy ]
 commonName = supplied
 stateOrProvinceName = supplied
 countryName = optional
 emailAddress = optional
 organizationName = supplied
 organizationalUnitName = optional

 [ myca_extensions ]
 basicConstraints = CA:false
 subjectKeyIdentifier = hash
 authorityKeyIdentifier = keyid:always
 keyUsage = digitalSignature,keyEncipherment
 extendedKeyUsage = serverAuth
 crlDistributionPoints = URI:http://example.com/root.crl
 subjectAltName  = @alt_names

 [alt_names]
 DNS.1 = example.com
 DNS.2 = *.example.com</pre>
<p>Notice the crlDistributionPoints and DNS. entries pointing to domain example.com. You should change them to your domain.</p>
<p>Now you can sign the request:</p>
<p><strong>openssl ca -batch -config ca.conf -notext -in ia.csr -out ia.crt</strong></p>
<pre>Using configuration from ca.conf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName          : PRINTABLE:'BE'
stateOrProvinceName   :ASN.1 12:'Brussels'
localityName          :ASN.1 12:'Brussels'
organizationName      :ASN.1 12:'Didier Stevens'
commonName            :ASN.1 12:'Didier Stevens IA'
Certificate is to be certified until May  3 21:13:02 2015 GMT (730 days)

Write out database with 1 new entries
Data Base Updated</pre>
<p>To use this subordinate CA key for <a href="http://en.wikipedia.org/wiki/Authenticode" target="_blank">Authenticode</a> signatures with <a href="https://knowledge.verisign.com/support/code-signing-support/index?page=content&amp;id=AR190" target="_blank">Microsoft&#8217;s signtool</a>, you&#8217;ll have to package the keys and certs in a <a href="http://en.wikipedia.org/wiki/PKCS12" target="_blank">PKCS12</a> file:</p>
<p><strong>openssl pkcs12 -export -out ia.p12 -inkey ia.key -in ia.crt -chain -CAfile ca.crt</strong></p>
<pre>Enter Export Password:
Verifying - Enter Export Password:</pre>
<p>Finally, you can generate the empty CRL file:<br />
<strong>openssl ca -config ca.conf -gencrl -keyfile ca.key -cert ca.crt -out root.crl.pem</strong><br />
<strong>openssl crl -inform PEM -in root.crl.pem -outform DER -out root.crl</strong><br />
<strong>rm root.crl.pem</strong></p>
<p>rm is a Linux command, use del on a Windows machine.</p>
<p>The last step is to host this root.crl file on the webserver pointed to in the CRL extension (<a href="http://example.com/root.crl">http://example.com/root.crl</a> in this example).</p>
<p>If you need to revoke the intermediate certificate, use this command:</p>
<p><strong>openssl ca -config ca.conf -revoke ia.crt -keyfile ca.key -cert ca.crt</strong></p>
<p>And then regenerate the CRL file like explained above.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/3482/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/3482/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&#038;blog=264765&#038;post=3482&#038;subd=didierstevens&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2013/05/08/howto-make-your-own-cert-and-revocation-list-with-openssl/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/b7ca17d338918a19d656f79b0b16057f?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>
	</item>
		<item>
		<title>VirusTotal: Searching And Submitting</title>
		<link>http://blog.didierstevens.com/2013/05/03/virustotal-searching-and-submitting/</link>
		<comments>http://blog.didierstevens.com/2013/05/03/virustotal-searching-and-submitting/#comments</comments>
		<pubDate>Fri, 03 May 2013 08:47:20 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
				<category><![CDATA[Malware]]></category>
		<category><![CDATA[My Software]]></category>
		<category><![CDATA[Update]]></category>

		<guid isPermaLink="false">http://blog.didierstevens.com/?p=3478</guid>
		<description><![CDATA[This is an update for virustotal-search.py and a release of a new tool: virustotal-submit.py. I created this new tool because I needed to submit a sample stored in a password protected ZIP-file (not the ZIP-file), without extracting the sample to disk. To submit a file to VirusTotal, you just run virustotal-submit.py sample.exe. If you submit [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&#038;blog=264765&#038;post=3478&#038;subd=didierstevens&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>This is an update for virustotal-search.py and a release of a new tool: virustotal-submit.py. I created this new tool because I needed to submit a sample stored in a password protected ZIP-file (not the ZIP-file), without extracting the sample to disk.</p>
<p>To submit a file to VirusTotal, you just run virustotal-submit.py sample.exe.</p>
<p>If you submit a ZIP file, virustotal-submit.py will extract the first file to memory and submit that to VirusTotal. The ZIP file can be password protected with password &#8220;infected&#8221;. To submit the ZIP file itself, use option -z.</p>
<p>To submit a batch of samples, create a textfile with the name of the files to submit and use option -f.</p>
<p>virustotal-submit.py supports proxies too (Python variables HTTP_PROXY and HTTPS_PROXY or environment variables http_proxy and https_proxy).</p>
<p>Python module <a href="https://pypi.python.org/pypi/poster">poster</a> is required for this tool.</p>
<p><a href="http://didierstevens.com/files/software/virustotal-submit_V0_0_1.zip" target="_self">virustotal-submit_V0_0_1.zip</a> (<a href="https://didierstevens.com/files/software/virustotal-submit_V0_0_1.zip" target="_self">https</a>)<br />
MD5: 8793C3276822DDE36BA0804D3390AD4D<br />
SHA256: F17B9EEC408833039AE63FCED9F6114F99AADFBE9D547AE88B2C3A6E54AE91B4</p>
<p>Updates to virustotal-search.py:</p>
<ul>
<li>uses json or simplejson module</li>
<li>proxies are supported (Python variables HTTP_PROXY and HTTPS_PROXY or environment variables http_proxy and https_proxy)</li>
<li>option -g forces virustotal-search.py to use the local database in the same directory as the program</li>
</ul>
<p><a href="http://didierstevens.com/files/software/virustotal-search_V0_0_8.zip" target="_self">virustotal-search_V0_0_8.zip</a> (<a href="https://didierstevens.com/files/software/virustotal-search_V0_0_8.zip" target="_self">https</a>)<br />
MD5: 011C88A9C9026A32DA473187A64E880C<br />
SHA256: 30711202BB0CD01A17AFA7BB8BBFE1545B6A840BDB91D83C7753300EF7E71A8F</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/3478/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/3478/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&#038;blog=264765&#038;post=3478&#038;subd=didierstevens&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2013/05/03/virustotal-searching-and-submitting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/b7ca17d338918a19d656f79b0b16057f?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>
	</item>
		<item>
		<title>Howto: Add a Digital Signature to a PDF File &#8211; Free Software</title>
		<link>http://blog.didierstevens.com/2013/04/26/howto-add-a-digital-signature-to-a-pdf-file-free-software/</link>
		<comments>http://blog.didierstevens.com/2013/04/26/howto-add-a-digital-signature-to-a-pdf-file-free-software/#comments</comments>
		<pubDate>Fri, 26 Apr 2013 12:58:14 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
				<category><![CDATA[Encryption]]></category>
		<category><![CDATA[PDF]]></category>

		<guid isPermaLink="false">http://blog.didierstevens.com/?p=3473</guid>
		<description><![CDATA[This is an update to my post Howto: Add a Digital Signature to a PDF File, but this time I found free software. Again we use our certificate which we install (open the .p12 file). Install the free JSignPdf software. Select the PDF file to sign and select an output file (if you don&#8217;t want [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&#038;blog=264765&#038;post=3473&#038;subd=didierstevens&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>This is an update to my post <a href="http://blog.didierstevens.com/2009/01/04/howto-add-a-digital-signature-to-a-pdf-file/">Howto: Add a Digital Signature to a PDF File</a>, but this time I found free software.</p>
<p>Again we use <a href="http://blog.didierstevens.com/2008/12/30/howto-make-your-own-cert-with-openssl/">our certificate</a> which we install (open the .p12 file). Install the free <a href="http://jsignpdf.sourceforge.net/">JSignPdf software</a>.</p>
<p>Select the PDF file to sign and select an output file (if you don&#8217;t want to overwrite your original):</p>
<p><img class="alignnone size-full wp-image-3474" alt="20130426-140107" src="http://didierstevens.files.wordpress.com/2013/04/20130426-140107.png?w=425&#038;h=271" width="425" height="271" /></p>
<p>Push Sign It:</p>
<p><img class="alignnone size-full wp-image-3475" alt="20130426-141230" src="http://didierstevens.files.wordpress.com/2013/04/20130426-141230.png?w=509&#038;h=380" width="509" height="380" /></p>
<p>And then you can check the signature with Adobe Reader:</p>
<p><img class="alignnone size-full wp-image-3476" alt="20130426-141337" src="http://didierstevens.files.wordpress.com/2013/04/20130426-141337.png?w=1024&#038;h=770" width="1024" height="770" /></p>
<p>If you get the following error, make sure you change your PDF version from %PDF-1.1 to %PDF-1.4:</p>
<p>Choosen configuration requires PDF version update, but it&#8217;s not possible in the &#8220;append&#8221; signature mode.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/3473/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/3473/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&#038;blog=264765&#038;post=3473&#038;subd=didierstevens&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2013/04/26/howto-add-a-digital-signature-to-a-pdf-file-free-software/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/b7ca17d338918a19d656f79b0b16057f?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2013/04/20130426-140107.png" medium="image">
			<media:title type="html">20130426-140107</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2013/04/20130426-141230.png" medium="image">
			<media:title type="html">20130426-141230</media:title>
		</media:content>

		<media:content url="http://didierstevens.files.wordpress.com/2013/04/20130426-141337.png" medium="image">
			<media:title type="html">20130426-141337</media:title>
		</media:content>
	</item>
		<item>
		<title>js-unicode-unescape.1sc</title>
		<link>http://blog.didierstevens.com/2013/04/21/js-unicode-unescape-1sc/</link>
		<comments>http://blog.didierstevens.com/2013/04/21/js-unicode-unescape-1sc/#comments</comments>
		<pubDate>Sun, 21 Apr 2013 00:00:02 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
				<category><![CDATA[010 Editor]]></category>
		<category><![CDATA[My Software]]></category>

		<guid isPermaLink="false">http://blog.didierstevens.com/?p=3469</guid>
		<description><![CDATA[As a thank you to those who nominated me for the European Security Bloggers Awards, I’m going to release some new scripts this week. Here’s the sixth one. This script does the opposite of js-unicode-escape.1sc: a Unicode escape encode string is decode to bytes. js-unicode-unescape_v0_0_1.zip (https) MD5: E4FF29FB631142AC995636EED4CFB2AB SHA256: C5659BCED1C6A7F92C2F7F9058DAA5807D2907283041E4F9DD1E4B6F318F2BBD<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&#038;blog=264765&#038;post=3469&#038;subd=didierstevens&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>As a thank you to those who nominated me for the <a href="https://www.surveymonkey.com/s/EUSecurityBloggerAwards">European Security Bloggers Awards</a>, I’m going to release some new scripts this week. Here’s the sixth one.</p>
<p>This script does the opposite of js-unicode-escape.1sc: a Unicode escape encode string is decode to bytes.</p>
<p><a href="http://didierstevens.com/files/software/js-unicode-unescape_v0_0_1.zip" target="_self">js-unicode-unescape_v0_0_1.zip</a> (<a href="https://didierstevens.com/files/software/js-unicode-unescape_v0_0_1.zip" target="_self">https</a>)<br />
MD5: E4FF29FB631142AC995636EED4CFB2AB<br />
SHA256: C5659BCED1C6A7F92C2F7F9058DAA5807D2907283041E4F9DD1E4B6F318F2BBD</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/3469/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/3469/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&#038;blog=264765&#038;post=3469&#038;subd=didierstevens&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2013/04/21/js-unicode-unescape-1sc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/b7ca17d338918a19d656f79b0b16057f?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>
	</item>
		<item>
		<title>js-unicode-escape.1sc</title>
		<link>http://blog.didierstevens.com/2013/04/20/js-unicode-escape-1sc/</link>
		<comments>http://blog.didierstevens.com/2013/04/20/js-unicode-escape-1sc/#comments</comments>
		<pubDate>Sat, 20 Apr 2013 00:00:40 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
				<category><![CDATA[010 Editor]]></category>
		<category><![CDATA[My Software]]></category>

		<guid isPermaLink="false">http://blog.didierstevens.com/?p=3467</guid>
		<description><![CDATA[As a thank you to those who nominated me for the European Security Bloggers Awards, I’m going to release some new scripts this week. Here’s the fifth one. 010 Editor has a different functions to copy bytes from a file. As raw bytes, as hex, as base64, &#8230; This script copies the selected bytes to [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&#038;blog=264765&#038;post=3467&#038;subd=didierstevens&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>As a thank you to those who nominated me for the <a href="https://www.surveymonkey.com/s/EUSecurityBloggerAwards">European Security Bloggers Awards</a>, I’m going to release some new scripts this week. Here’s the fifth one.</p>
<p>010 Editor has a different functions to copy bytes from a file. As raw bytes, as hex, as base64, &#8230;</p>
<p>This script copies the selected bytes to the clipboard as a Unicode escape encoded string for JavaScript: %u3421%u9a0d&#8230;</p>
<p><a href="http://didierstevens.com/files/software/js-unicode-escape_v0_0_3.zip" target="_self">js-unicode-escape_v0_0_3.zip</a> (<a href="https://didierstevens.com/files/software/js-unicode-escape_v0_0_3.zip" target="_self">https</a>)<br />
MD5: B86B7E73D93C5A4C086384C2FF89303C<br />
SHA256: 81F26C328FD67FB7512CD60485481D7FFD8B7FE5ACE95455D45F4F635EADF81C</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/3467/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/3467/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&#038;blog=264765&#038;post=3467&#038;subd=didierstevens&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2013/04/20/js-unicode-escape-1sc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/b7ca17d338918a19d656f79b0b16057f?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>
	</item>
		<item>
		<title>pecheck.py</title>
		<link>http://blog.didierstevens.com/2013/04/19/3462/</link>
		<comments>http://blog.didierstevens.com/2013/04/19/3462/#comments</comments>
		<pubDate>Fri, 19 Apr 2013 00:00:04 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
				<category><![CDATA[My Software]]></category>
		<category><![CDATA[Reverse Engineering]]></category>

		<guid isPermaLink="false">http://blog.didierstevens.com/?p=3462</guid>
		<description><![CDATA[As a thank you to those who nominated me for the European Security Bloggers Awards, I&#8217;m going to release some new scripts this week. Here&#8217;s the fourth one. pecheck.py is a wrapper for pefile, but this version has a new feature: check a PE file stored in a (password protected) ZIP file (password infected). pecheck_v0_3_0.zip [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&#038;blog=264765&#038;post=3462&#038;subd=didierstevens&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>As a thank you to those who nominated me for the <a href="https://www.surveymonkey.com/s/EUSecurityBloggerAwards">European Security Bloggers Awards</a>, I&#8217;m going to release some new scripts this week. Here&#8217;s the fourth one.</p>
<p>pecheck.py is a wrapper for <a href="https://code.google.com/p/pefile/">pefile</a>, but this version has a new feature: check a PE file stored in a (password protected) ZIP file (password infected).</p>
<p><a href="http://didierstevens.com/files/software/pecheck_v0_3_0.zip" target="_self">pecheck_v0_3_0.zip</a> (<a href="https://didierstevens.com/files/software/pecheck_v0_3_0.zip" target="_self">https</a>)<br />
MD5: C2AC9FED3C7F1787854C8D0E651B2591<br />
SHA256: 3CDEBADA4C594DD3622E234747C6AABD41573C94087C0554CBA65D0472F6B413</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/3462/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/3462/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&#038;blog=264765&#038;post=3462&#038;subd=didierstevens&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2013/04/19/3462/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/b7ca17d338918a19d656f79b0b16057f?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>
	</item>
		<item>
		<title>search-and-replace-with-wildcards.1sc</title>
		<link>http://blog.didierstevens.com/2013/04/18/search-and-replace-with-wildcards-1sc/</link>
		<comments>http://blog.didierstevens.com/2013/04/18/search-and-replace-with-wildcards-1sc/#comments</comments>
		<pubDate>Thu, 18 Apr 2013 00:00:24 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
				<category><![CDATA[010 Editor]]></category>
		<category><![CDATA[My Software]]></category>

		<guid isPermaLink="false">http://blog.didierstevens.com/?p=3458</guid>
		<description><![CDATA[As a thank you to those who nominated me for the European Security Bloggers Awards, I&#8217;m going to release some new scripts this week. Here&#8217;s the third one. 010 Editor has a search feature with wildcards (like FC 01 * 10 CF), but no search and replace with wildcards (like FC 01 * 10 CF [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&#038;blog=264765&#038;post=3458&#038;subd=didierstevens&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>As a thank you to those who nominated me for the <a href="https://www.surveymonkey.com/s/EUSecurityBloggerAwards">European Security Bloggers Awards</a>, I&#8217;m going to release some new scripts this week. Here&#8217;s the third one.</p>
<p>010 Editor has a search feature with wildcards (like FC 01 * 10 CF), but no search and replace with wildcards (like FC 01 * 10 CF -&gt; FD 02 * 20 DF). This scripts implements such a feature.</p>
<p><a href="http://didierstevens.com/files/software/search-and-replace-with-wildcards_v0_0_1.zip" target="_self">search-and-replace-with-wildcards_v0_0_1.zip</a> (<a href="https://didierstevens.com/files/software/search-and-replace-with-wildcards_v0_0_1.zip" target="_self">https</a>)<br />
MD5: 7D620E8BEFFD4ED5563D9944C9B0B859<br />
SHA256: B7F074304660A8DBF7AB2261D8619FFFFD461EFB5EE4C6E42880C87A3C1A4AB7</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/3458/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/3458/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&#038;blog=264765&#038;post=3458&#038;subd=didierstevens&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2013/04/18/search-and-replace-with-wildcards-1sc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/b7ca17d338918a19d656f79b0b16057f?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>
	</item>
		<item>
		<title>fuzzer.1sc</title>
		<link>http://blog.didierstevens.com/2013/04/17/fuzzer-1sc/</link>
		<comments>http://blog.didierstevens.com/2013/04/17/fuzzer-1sc/#comments</comments>
		<pubDate>Wed, 17 Apr 2013 00:00:42 +0000</pubDate>
		<dc:creator>Didier Stevens</dc:creator>
				<category><![CDATA[010 Editor]]></category>
		<category><![CDATA[My Software]]></category>

		<guid isPermaLink="false">http://blog.didierstevens.com/?p=3456</guid>
		<description><![CDATA[As a thank you to those who nominated me for the European Security Bloggers Awards, I&#8217;m going to release some new scripts this week. Here&#8217;s the second one. fuzzer.1sc is a 010 Editor script that implements a simple fuzzer. It overwrites bytes in a file or selection. A selection is particularly useful combined with a [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&#038;blog=264765&#038;post=3456&#038;subd=didierstevens&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>As a thank you to those who nominated me for the <a href="https://www.surveymonkey.com/s/EUSecurityBloggerAwards">European Security Bloggers Awards</a>, I&#8217;m going to release some new scripts this week. Here&#8217;s the second one.</p>
<p>fuzzer.1sc is a 010 Editor script that implements a simple fuzzer. It overwrites bytes in a file or selection. A selection is particularly useful combined with a template. For example, with a couple of clicks you can fuzz the control structures of a JPEG image.</p>
<p>4 parameters (number of fuzz sequences to overwrite, minimum length and maximum length of a sequence, and the fuzz character) allow you to control the random overwriting process.</p>
<p><a href="http://didierstevens.com/files/software/fuzzer_v0_0_1.zip" target="_self">fuzzer_v0_0_1.zip</a> (<a href="https://didierstevens.com/files/software/fuzzer_v0_0_1.zip" target="_self">https</a>)<br />
MD5: E9B7114952E81A504C7CF3B06B99B5CF<br />
SHA256: CF399EE2D86B6039236608F4FE882E579D7DCFED1DA980B4124ED06FD0C5807A</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/didierstevens.wordpress.com/3456/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/didierstevens.wordpress.com/3456/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.didierstevens.com&#038;blog=264765&#038;post=3456&#038;subd=didierstevens&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.didierstevens.com/2013/04/17/fuzzer-1sc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/b7ca17d338918a19d656f79b0b16057f?s=96&#38;d=http%3A%2F%2F2.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">didierstevens</media:title>
		</media:content>
	</item>
	</channel>
</rss>
