<?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/"
	>

<channel>
	<title>Ivan Villareal &#187; Decrypting SourceCop php files &#8211; Ivan Villareal</title>
	<atom:link href="http://ivanvillareal.com/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://ivanvillareal.com</link>
	<description>IT stuff and more...</description>
	<lastBuildDate>Tue, 01 Nov 2011 23:00:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Decrypting SourceCop php files</title>
		<link>http://ivanvillareal.com/development/php-development/decrypting-sourcecop-php-files/</link>
		<comments>http://ivanvillareal.com/development/php-development/decrypting-sourcecop-php-files/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 19:41:46 +0000</pubDate>
		<dc:creator>Ivan Villareal</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sourcecop]]></category>

		<guid isPermaLink="false">http://ivanvillareal.com/?p=176</guid>
		<description><![CDATA[Every once in a while, I receive code that is encrypted using one of many php encoder software out there, so when I face this situation and if the project [...]]]></description>
			<content:encoded><![CDATA[<p>Every once in a while, I receive code that is encrypted using one of many php encoder software out there, so when I face this situation and if the project is worth it, I start playing around with the encrypted files to see how the encoding algorithm works, so far I’ve been able to successful decrypt files encoded with Zend, and ioncube, I don’t remember the versions of the encoders but I remember that the latter one took me some time, but I did it.</p>
<p>I must say that decoding files also becomes a personal challenge, it is like a hobby when I have the time to play with it.</p>
<p> Yesterday I received a couple of files encoded with an unknown encoder for me, it didn’t require any php modification or extension install, so I tough that it would be easy to break it, because at some point the code must be evaluated, so after I opened the zip file, I noticed a folder called “scopbin“, that contained only 1 php file named “911006.php“, the two encoded files were  including this file so I assumed that this is were the decryption logic had to be.</p>
<p>I was exhausted by a long working day, and when I got this files and saw that they were encrypted I placed them in my laptop for later analysis. This analysis was done while  I was waiting for the local news, I didn’t research the encoding, or did  anything that give me some pointers, I just started to playing around with the code to see how far  could I get.</p>
<p>My objective this time was getting this files decrypted, and not analysing the steps of the algorithm, so with this in mind, this is what I did:</p>
<p>This was the original “911006.php” file:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">&nbsp;
<span style="color: #339933;">&lt;</span> ?php <span style="color: #990000;">ini_set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'include_path'</span><span style="color: #339933;">,</span><span style="color: #990000;">dirname</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">__FILE__</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>function A4540acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">function</span> b5434f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">function</span> c43dsd0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">function</span> Xdsf0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">function</span> y0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #000088;">$x0b43c25ccf2340e23492d4d3141479dc</span><span style="color: #339933;">=</span><span style="color: #0000ff;">''</span><span style="color: #339933;">;</span><span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span><span style="color: #000088;">$x16754c94f2e48aae0d6f34280507be58</span><span style="color: #339933;">=</span><span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span><span style="color: #339933;">=</span><span style="color: #990000;">hexdec</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'&amp;H'</span><span style="color: #339933;">.</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>for<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x1b90e1035d4d268e0d8b1377f3dc85a2</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span><span style="color: #000088;">$x1b90e1035d4d268e0d8b1377f3dc85a2</span><span style="color: #339933;">&lt;</span>strlen<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$x1b90e1035d4d268e0d8b1377f3dc85a2</span><span style="color: #339933;">+=</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #000088;">$xe594cc261a3b25a9c99ec79da9c91ba5</span><span style="color: #339933;">=</span><span style="color: #990000;">hexdec</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x1b90e1035d4d268e0d8b1377f3dc85a2</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span><span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span><span style="color: #339933;">&lt;</span><span style="color: #000088;">$x16754c94f2e48aae0d6f34280507be58</span><span style="color: #009900;">&#41;</span>?<span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span><span style="color: #339933;">=</span><span style="color: #000088;">$xe594cc261a3b25a9c99ec79da9c91ba5</span> ^ <span style="color: #990000;">ord</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>if<span style="color: #009900;">&#40;</span><span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span><span style="color: #339933;">&lt;=</span><span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span><span style="color: #009900;">&#41;</span><span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">255</span><span style="color: #339933;">+</span><span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span><span style="color: #339933;">-</span><span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span><span style="color: #339933;">;</span>else <span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span><span style="color: #339933;">=</span><span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span><span style="color: #339933;">-</span><span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span><span style="color: #339933;">;</span><span style="color: #000088;">$x0b43c25ccf2340e23492d4d3141479dc</span><span style="color: #339933;">=</span><span style="color: #000088;">$x0b43c25ccf2340e23492d4d3141479dc</span><span style="color: #339933;">.</span><span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span><span style="color: #339933;">=</span><span style="color: #000088;">$xe594cc261a3b25a9c99ec79da9c91ba5</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">return</span> <span style="color: #000088;">$x0b43c25ccf2340e23492d4d3141479dc</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">function</span> f5434f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>return <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">function</span> j43dsd0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>return <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">function</span> hdsf0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>return <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">function</span> tr5434f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>return <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">function</span> f0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #b1b100;">return</span> <span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">''</span><span style="color: #339933;">,</span><span style="color: #990000;">file</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">function</span> g0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'echo'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==</span><span style="color: #009900; font-weight: bold;">false</span>?<span style="color: #009900;">&#40;</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'print'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==</span><span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span>?<span style="color: #009900;">&#40;</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'sprint'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==</span><span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span>?<span style="color: #009900;">&#40;</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'sprintf'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==</span><span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span>?<span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">:</span><span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">function</span> hyr3dsd0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>return <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">function</span> uygf0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>return <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">function</span> drfg34f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>return <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">function</span> jhkgvdsd0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>return <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">function</span> yrdhhdacdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>return <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span> <span style="color: #990000;">ini_set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'include_path'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>I’ve used a code formatter to make the code  more readable:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">ivan<span style="color: #000000; font-weight: bold;">@</span>mini:<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>copdecrypt<span style="color: #000000; font-weight: bold;">/</span>scopbin$ phpCB <span style="color: #660033;">--space-after-if</span>  \
<span style="color: #660033;">--space-after-switch</span>                                           \
<span style="color: #660033;">--space-after-while</span>                                            \
<span style="color: #660033;">--space-before-srt-angle-bracket</span>                               \
<span style="color: #660033;">--space-after-end-angle-bracket</span>                                \
<span style="color: #660033;">--glue-amperscore</span>                                              \
<span style="color: #660033;">--change-shell-comment-to-double-slashes-comment</span>               \
<span style="color: #660033;">--force-large-php-code-tag</span>                                     \
<span style="color: #660033;">--force-true-false-null-contant-lowercase</span>                      \
<span style="color: #660033;">--align-equal-statements</span>                                       \
<span style="color: #660033;">--comment-rendering-style</span> PEAR                                 \
<span style="color: #660033;">--equal-align-position</span> <span style="color: #000000;">50</span>                                      \
<span style="color: #660033;">--padding-char-count</span> <span style="color: #000000;">4</span>                                         \
<span style="color: #000000;">911006</span>.php</pre></div></div>

<p>And this was the result:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #990000;">ini_set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'include_path'</span><span style="color: #339933;">,</span> <span style="color: #990000;">dirname</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">__FILE__</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">function</span> A4540acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> b5434f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> c43dsd0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> Xdsf0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> y0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$x0b43c25ccf2340e23492d4d3141479dc</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$x16754c94f2e48aae0d6f34280507be58</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span> <span style="color: #339933;">=</span> <span style="color: #990000;">hexdec</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'&amp;H'</span> <span style="color: #339933;">.</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x1b90e1035d4d268e0d8b1377f3dc85a2</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span><span style="color: #000088;">$x1b90e1035d4d268e0d8b1377f3dc85a2</span> <span style="color: #339933;">&lt;</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$x1b90e1035d4d268e0d8b1377f3dc85a2</span> <span style="color: #339933;">+=</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$xe594cc261a3b25a9c99ec79da9c91ba5</span> <span style="color: #339933;">=</span> <span style="color: #990000;">hexdec</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x1b90e1035d4d268e0d8b1377f3dc85a2</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span> <span style="color: #339933;">&lt;</span> <span style="color: #000088;">$x16754c94f2e48aae0d6f34280507be58</span><span style="color: #009900;">&#41;</span>?<span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$xe594cc261a3b25a9c99ec79da9c91ba5</span> ^ <span style="color: #990000;">ord</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span> <span style="color: #339933;">&lt;=</span> <span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span><span style="color: #009900;">&#41;</span><span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">255</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">else</span> <span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$x0b43c25ccf2340e23492d4d3141479dc</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$x0b43c25ccf2340e23492d4d3141479dc</span> <span style="color: #339933;">.</span> <span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$xe594cc261a3b25a9c99ec79da9c91ba5</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> 
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$x0b43c25ccf2340e23492d4d3141479dc</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> f5434f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> j43dsd0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> hdsf0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> tr5434f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> f0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #990000;">file</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> g0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'echo'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #009900; font-weight: bold;">false</span>?<span style="color: #009900;">&#40;</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'print'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span>?<span style="color: #009900;">&#40;</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'sprint'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span>?<span style="color: #009900;">&#40;</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'sprintf'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span>?<span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">:</span><span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">:</span><span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> hyr3dsd0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> uygf0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> drfg34f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> jhkgvdsd0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">function</span> yrdhhdacdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #990000;">unlink</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x456e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$Xew6e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #990000;">ini_set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'include_path'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>After a quick review of this file, I saw that it had several functions that had same logic, return an unknow variable or delete the file that this unknown variable had, appart from all this “useless” functions I quickly found what appeared to be the decryption function this was the function named <strong>y0666f0acdeed38d4cd9084ade1739498 </strong>with this information I headed to check one of the encrypted files, and this is how it looked:</p>
</pre>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">&nbsp;
<span style="color: #339933;">&lt;</span> ?php <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">function_exists</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'findsysfolder'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #000000; font-weight: bold;">function</span> findsysfolder<span style="color: #009900;">&#40;</span><span style="color: #000088;">$fld</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #000088;">$fld1</span><span style="color: #339933;">=</span><span style="color: #990000;">dirname</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fld</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$fld</span><span style="color: #339933;">=</span><span style="color: #000088;">$fld1</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'/scopbin'</span><span style="color: #339933;">;</span>clearstatcache<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>if<span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">is_dir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fld</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #b1b100;">return</span> findsysfolder<span style="color: #009900;">&#40;</span><span style="color: #000088;">$fld1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>else <span style="color: #b1b100;">return</span> <span style="color: #000088;">$fld</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#125;</span><span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span>findsysfolder<span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">__FILE__</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'/911006.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$REXISTHECAT4FBI</span><span style="color: #339933;">=</span><span style="color: #0000ff;">'FE50E574D754E76AC679F242F450F768FB5DCB77F34DE341 660C280D176E374DE7FB3B090A782B6B68DBC97BEAD93B681C452F25BE26'</span><span style="color: #339933;">;</span>g0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span>f0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">__FILE__</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$REXISTHEDOG4FBI</span><span style="color: #339933;">=</span><span style="color: #0000ff;">'9CEF6BE117B329ADFC4560538EBF16BB6DAD1748FE354E8EDA7AABFA376EB6938496F43560E4123D85D272E342E363FD51F3181763A3F623 660B6E2369243EE5781CD76A133E272E37DACA198968397F150425B4326A126CD64F051F35287DE7BD3 5354276B880BDEF525247533610 64282D07BA63861F81DB715C115BC1BD57FC5D9C8 225D2 A F177EDC7EA026A7E74D37AC28A125D1B8F73B63C6D1C3A1E137639BEECEDACFDBBD9F8D948CE93D6FCDCDD8CCA98B36AA21A08B8BD87FD8 15143C2C2D37593B82857516FC9ABF9237BDEC9DBB9F92F7BDEB8EE3B6AEA153C9DF3 A2CAE2CD218B1E566C0D274D6 F32DC2A E20 512 062A2F72C 96FB9ED3B6FC9ABF927A34985CAB5D3 65D89B315B3E61076D8 E4488B2127FCEF82C78DDBBED3A6FBB7FCEEACEE04453412363B6E246F05086C7 52E C408CC263E078A53461E0 331B71EB81DC475DB6CAC9531914393D4 22AC9C3D7CE7194438AD638 03D6FCDCDD8CCA98F99211B1177D5C7DEC6A3F427 5 510 461C7D1C51AB492F850FA56FE445EC0154885BDACDC 819BD76A72A419A4D859CFE5A5268CDABFD2A7FAB8DEF227BA3869183E12277A386E03763B6E241F75282CDBFCA187ECE74D7 D1D4881D3C7432177D4 E3F83DA54417EAA8FE93C68BDE94C2E7CA5FD5B4C5E3C9993A98CEA3D69BCE84F2D989C9EEECFDDBFFF15 164C2D471D3 228D3 51CBA75D4 A3C85C1 4618EC5 E6BE91FCD F4D87BE F 56BFB5BFE2A3EA923BDDDBB9D26BE13CD 41F6E584D593C1A C18 D19D29D958C94F12577D5D5C0D4B19781958094F21EB6EF20CC77D87CD0CDC57FA13D8484F61076D47ED5 366F521A6FA2FEFBAF22772A680E23168B0958290F23366B297F12470A5F1543664EF6DA42DAD5E5EB718C569EA2C5F8AE81BBF16BE489E3EE13D7FBD98FE297DA8FC5B396BB2EA4E594B2969D3C7689230A1F4441763B1E83114 31173B3E6331670A6F22672D4B6E43C64C1D6C475FA5AFB2BDF36A83F9F55F8 62A C69BEEC4F4F5A4E2B D1B F1A E68CAD86F44 B1C E6CACF92E B6DDCDDD26437 3'</span><span style="color: #339933;">;</span><span style="color: #000088;">$REXISTHECAT4FBI</span><span style="color: #339933;">=</span><span style="color: #0000ff;">'94CD76CD371C5A7BC70C186E779C293B9B49BACA5A781A6'</span><span style="color: #339933;">;</span> <span style="color: #990000;">eval</span><span style="color: #009900;">&#40;</span>y0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'4EF6454FB298E72B 5'</span><span style="color: #339933;">,</span><span style="color: #000088;">$REXISTHEDOG4FBI</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Again I used the code beautifier  to make this file more readable:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">function_exists</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'findsysfolder'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">function</span> findsysfolder<span style="color: #009900;">&#40;</span><span style="color: #000088;">$fld</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$fld1</span> <span style="color: #339933;">=</span> <span style="color: #990000;">dirname</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fld</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$fld</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$fld1</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/scopbin'</span><span style="color: #339933;">;</span>
        <span style="color: #990000;">clearstatcache</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">is_dir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fld</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #b1b100;">return</span> findsysfolder<span style="color: #009900;">&#40;</span><span style="color: #000088;">$fld1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">return</span> <span style="color: #000088;">$fld</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> 
<span style="color: #009900;">&#125;</span> 
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span>findsysfolder<span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">__FILE__</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/911006.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$REXISTHECAT4FBI</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'FE50E574D754E76AC679F242F450F768FB5DCB77F34DE341 660C280D176E374DE7FB3B090A782B6B68DBC97BEAD93B681C452F25BE26'</span><span style="color: #339933;">;</span>
g0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span>f0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">__FILE__</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$REXISTHEDOG4FBI</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'9CEF6BE117B329ADFC4560538EBF16BB6DAD1748FE354E8EDA7AABFA376EB6938496F43560E4123D85D272E342E363FD51F3181763A3F623 660B6E2369243EE5781CD76A133E272E37DACA198968397F150425B4326A126CD64F051F35287DE7BD3 5354276B880BDEF525247533610 64282D07BA63861F81DB715C115BC1BD57FC5D9C8 225D2 A F177EDC7EA026A7E74D37AC28A125D1B8F73B63C6D1C3A1E137639BEECEDACFDBBD9F8D948CE93D6FCDCDD8CCA98B36AA21A08B8BD87FD8 15143C2C2D37593B82857516FC9ABF9237BDEC9DBB9F92F7BDEB8EE3B6AEA153C9DF3 A2CAE2CD218B1E566C0D274D6 F32DC2A E20 512 062A2F72C 96FB9ED3B6FC9ABF927A34985CAB5D3 65D89B315B3E61076D8 E4488B2127FCEF82C78DDBBED3A6FBB7FCEEACEE04453412363B6E246F05086C7 52E C408CC263E078A53461E0 331B71EB81DC475DB6CAC9531914393D4 22AC9C3D7CE7194438AD638 03D6FCDCDD8CCA98F99211B1177D5C7DEC6A3F427 5 510 461C7D1C51AB492F850FA56FE445EC0154885BDACDC 819BD76A72A419A4D859CFE5A5268CDABFD2A7FAB8DEF227BA3869183E12277A386E03763B6E241F75282CDBFCA187ECE74D7 D1D4881D3C7432177D4 E3F83DA54417EAA8FE93C68BDE94C2E7CA5FD5B4C5E3C9993A98CEA3D69BCE84F2D989C9EEECFDDBFFF15 164C2D471D3 228D3 51CBA75D4 A3C85C1 4618EC5 E6BE91FCD F4D87BE F 56BFB5BFE2A3EA923BDDDBB9D26BE13CD 41F6E584D593C1A C18 D19D29D958C94F12577D5D5C0D4B19781958094F21EB6EF20CC77D87CD0CDC57FA13D8484F61076D47ED5 366F521A6FA2FEFBAF22772A680E23168B0958290F23366B297F12470A5F1543664EF6DA42DAD5E5EB718C569EA2C5F8AE81BBF16BE489E3EE13D7FBD98FE297DA8FC5B396BB2EA4E594B2969D3C7689230A1F4441763B1E83114 31173B3E6331670A6F22672D4B6E43C64C1D6C475FA5AFB2BDF36A83F9F55F8 62A C69BEEC4F4F5A4E2B D1B F1A E68CAD86F44 B1C E6CACF92E B6DDCDDD26437 3'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$REXISTHECAT4FBI</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'94CD76CD371C5A7BC70C186E779C293B9B49BACA5A781A6'</span><span style="color: #339933;">;</span>
<span style="color: #990000;">eval</span><span style="color: #009900;">&#40;</span>y0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'4EF6454FB298E72B 5'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$REXISTHEDOG4FBI</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>So what we have here is more obfuscated code, but a simple to understand, we have 2 variables and 3 functions, the variable that has the encrypted code should be the larger one so I'm assuming that is the "$REXISTHEDOG4FBI" variable, the other one apparently isn't used, so what I did at this point was to print the results of the evaluated function which corresponds to the function where the decrypt logic is (deofuscated):</p>
</pre>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$key</span><span style="color: #339933;">,</span> <span style="color: #000088;">$program</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$position</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$keyLength</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$decValue</span> <span style="color: #339933;">=</span> <span style="color: #990000;">hexdec</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'&amp;H'</span> <span style="color: #339933;">.</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$program</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span> <span style="color: #339933;">&lt;</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$program</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span> <span style="color: #339933;">+=</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$decProgram</span> <span style="color: #339933;">=</span> <span style="color: #990000;">hexdec</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$program</span><span style="color: #339933;">,</span> <span style="color: #000088;">$i</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$position</span>   <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$position</span> <span style="color: #339933;">&lt;</span> <span style="color: #000088;">$keyLength</span><span style="color: #009900;">&#41;</span> ? <span style="color: #000088;">$position</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">1</span> <span style="color: #339933;">:</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$ascii</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$decProgram</span>^ <span style="color: #990000;">ord</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$key</span><span style="color: #339933;">,</span> <span style="color: #000088;">$position</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$ascii</span> <span style="color: #339933;">&lt;=</span> <span style="color: #000088;">$decValue</span><span style="color: #009900;">&#41;</span> <span style="color: #000088;">$ascii</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">255</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$ascii</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$decValue</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">else</span> <span style="color: #000088;">$ascii</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$ascii</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$decValue</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000088;">$result</span>   <span style="color: #339933;">=</span> <span style="color: #000088;">$result</span> <span style="color: #339933;">.</span> <span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ascii</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$decValue</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$decProgram</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> 
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$result</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>unfortunately printing the result didn't work, so I did a review to check why, and I found that the other 2 functions where the problem, let me explain what happens, first a call is made to</p>
</pre>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> f0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #b1b100;">return</span> <span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #990000;">file</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>this function receives the name of the executing file (test.php in my case), read its content in an array, then glues all lines to create a 1 line string, without any new lines, then this result is passed to the following function:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> g0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'echo'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #009900; font-weight: bold;">false</span> ? <span style="color: #009900;">&#40;</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'print'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span> ? <span style="color: #009900;">&#40;</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'sprint'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span> ? <span style="color: #009900;">&#40;</span><span style="color: #990000;">strstr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'sprintf'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span> ? <span style="color: #009900; font-weight: bold;">false</span> <span style="color: #339933;">:</span> <span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>which are a series of nested ternary conditions, looking for the words "echo,print,sprint,sprintf", if any of this words are in the encrypted file, then the script simply exits, that's why I was unable to print the decrypted code after calling the decoding function, so simply avoiding the call to this function will fix the issue and I will get my decrypted code.<br />
However, I didn't want to modify the original encrypted files, so a second approach I took was modifying the decryption function and echoing the output from there, so I've added a couple of lines (15 and 16) to the "<strong>y0666f0acdeed38d4cd9084ade1739498</strong>" function:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> y0666f0acdeed38d4cd9084ade1739498<span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$x0b43c25ccf2340e23492d4d3141479dc</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$x16754c94f2e48aae0d6f34280507be58</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span> <span style="color: #339933;">=</span> <span style="color: #990000;">hexdec</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'&amp;H'</span> <span style="color: #339933;">.</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x1b90e1035d4d268e0d8b1377f3dc85a2</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span><span style="color: #000088;">$x1b90e1035d4d268e0d8b1377f3dc85a2</span> <span style="color: #339933;">&lt;</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$x1b90e1035d4d268e0d8b1377f3dc85a2</span> <span style="color: #339933;">+=</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$xe594cc261a3b25a9c99ec79da9c91ba5</span> <span style="color: #339933;">=</span> <span style="color: #990000;">hexdec</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x276e79316561733d64abdf00f8e8ae48</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x1b90e1035d4d268e0d8b1377f3dc85a2</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span> <span style="color: #339933;">&lt;</span> <span style="color: #000088;">$x16754c94f2e48aae0d6f34280507be58</span><span style="color: #009900;">&#41;</span>?<span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">:</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$xe594cc261a3b25a9c99ec79da9c91ba5</span> ^ <span style="color: #990000;">ord</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x897356954c2cd3d41b221e3f24f99bba</span><span style="color: #339933;">,</span> <span style="color: #000088;">$x71510c08e23d2083eda280afa650b045</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span> <span style="color: #339933;">&lt;=</span> <span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span><span style="color: #009900;">&#41;</span><span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">255</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">else</span> <span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$x0b43c25ccf2340e23492d4d3141479dc</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$x0b43c25ccf2340e23492d4d3141479dc</span> <span style="color: #339933;">.</span> <span style="color: #990000;">chr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$xab6389e47b1edcf1a5267d9cfb513ce5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$x7a86c157ee9713c34fbd7a1ee40f0c5a</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$xe594cc261a3b25a9c99ec79da9c91ba5</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> 
    <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$x0b43c25ccf2340e23492d4d3141479dc</span><span style="color: #339933;">;</span>
    <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$x0b43c25ccf2340e23492d4d3141479dc</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>And voilà, I was able to see the source code.</p>
<p>So in short, just print the output of the decrypt function, and kill the script to get the decrypted code, I don't know if there are any other versions of the "911006.php" file, but I guess that the same logic applies.
</pre>
]]></content:encoded>
			<wfw:commentRss>http://ivanvillareal.com/development/php-development/decrypting-sourcecop-php-files/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>File Type Detection in PHP</title>
		<link>http://ivanvillareal.com/linux/file-type-detecion-in-php/</link>
		<comments>http://ivanvillareal.com/linux/file-type-detecion-in-php/#comments</comments>
		<pubDate>Fri, 25 Dec 2009 04:47:24 +0000</pubDate>
		<dc:creator>Ivan Villareal</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[fileinfo]]></category>
		<category><![CDATA[pecl]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://ivanvillareal.com/?p=150</guid>
		<description><![CDATA[I&#8217;m working on a project where the users can upload files, and I need to know the type of file they are uploading, a simple solution would be to check [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m working on a project where the users can upload files, and I need to know the type of file they are uploading, a simple solution would be to check the extensions of the files, but this has many flaws, so I was looking for a reliable way to detect the type of file, and I found a PECL extension called <a href="http://pecl.php.net/package/Fileinfo/php-src/ext/fileinfo">file info</a> this extension is enabled by default in PHP 5.3, unfortunately I&#8217;m runing PHP 5.2.10, and the prod server also has this version.</p>
<p>So what I did to install this on ubuntu 9.10 karmic was the following:</p>
<p>&nbsp;</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">root<span style="color: #000000; font-weight: bold;">@</span>mini:<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>php5<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #666666; font-style: italic;"># apt-get install php5-dev libmagic-dev php-pear</span>
....
root<span style="color: #000000; font-weight: bold;">@</span>mini:<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>php5<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #666666; font-style: italic;"># pear channel-update pear.php.net</span>
...
root<span style="color: #000000; font-weight: bold;">@</span>mini:<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>php5<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #666666; font-style: italic;"># pecl install Fileinfo</span>
....
Build process completed successfully
Installing <span style="color: #ff0000;">'/usr/lib/php5/20060613+lfs/fileinfo.so'</span>
<span style="color: #c20cb9; font-weight: bold;">install</span> ok: channel:<span style="color: #000000; font-weight: bold;">//</span>pear.php.net<span style="color: #000000; font-weight: bold;">/</span>Fileinfo-1.0.4</pre></div></div>

<p>&nbsp;</p>
<p>and finally I added the extension to php.ini</p>
<p>extension=fileinfo.so</p>
<p>I restarted the apache server, and tested with this</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$fileInfo</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> finfo<span style="color: #009900;">&#40;</span>FILEINFO_MIME<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #000088;">$mimeType</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$fileInfo</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">buffer</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">file_get_contents</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$uploadedFile</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://ivanvillareal.com/linux/file-type-detecion-in-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mysql5 and PHP5 on centos4</title>
		<link>http://ivanvillareal.com/linux/mysql5-and-php5-on-centos4/</link>
		<comments>http://ivanvillareal.com/linux/mysql5-and-php5-on-centos4/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 19:00:06 +0000</pubDate>
		<dc:creator>Ivan Villareal</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://ivanvillareal.com/?p=76</guid>
		<description><![CDATA[I have the need to install php5 and mysql 5 on a centos 4 server, so I found that the Centos Plus repository had this, and this is what I [...]]]></description>
			<content:encoded><![CDATA[<p>I have the need to install php5 and mysql 5 on a centos 4 server, so I found that the Centos Plus repository had this, and this is what I did to get these two working.</p>
<p>First check what is the version of the distro:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/*</span>release<span style="color: #000000; font-weight: bold;">*</span></pre></div></div>

<p>Then make an update:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">yum update</pre></div></div>

<p>After 496 package updates I&#8217;ve installed php5</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">yum <span style="color: #660033;">--enablerepo</span>=centosplus <span style="color: #c20cb9; font-weight: bold;">install</span> php</pre></div></div>

<p>This were the installed packages:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">php-5.1.6-<span style="color: #000000;">3</span>.el4s1.10
php-cli-5.1.6-<span style="color: #000000;">3</span>.el4s1.10
php-common-5.1.6-<span style="color: #000000;">3</span>.el4s1.10</pre></div></div>

<p>So I&#8217;ve created a info.php file, and restarted the apache server:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;&lt; ?php phpinfo(); ?&gt;&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>html<span style="color: #000000; font-weight: bold;">/</span>info.php <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> service httpd restart</pre></div></div>

<p>It was working correctly, so the next thing was to have mysql 5 in it, so I did:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">yum <span style="color: #660033;">--enablerepo</span>=centosplus <span style="color: #c20cb9; font-weight: bold;">install</span> mysql-server</pre></div></div>

<p>I got some problems here, first I got this:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">Transaction Check Error: <span style="color: #c20cb9; font-weight: bold;">file</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>my.cnf from <span style="color: #c20cb9; font-weight: bold;">install</span> of mysql-libs-5.0.68-<span style="color: #000000;">1</span>.el4_6 conflicts with <span style="color: #c20cb9; font-weight: bold;">file</span> from package mysql-4.1.22-<span style="color: #000000;">2</span>.el4
<span style="color: #c20cb9; font-weight: bold;">file</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>mysql<span style="color: #000000; font-weight: bold;">/</span>charsets<span style="color: #000000; font-weight: bold;">/</span>Index.xml from <span style="color: #c20cb9; font-weight: bold;">install</span> of mysql-libs-5.0.68-<span style="color: #000000;">1</span>.el4_6 conflicts with <span style="color: #c20cb9; font-weight: bold;">file</span> from package mysql-4.1.22-<span style="color: #000000;">2</span>.el4
<span style="color: #c20cb9; font-weight: bold;">file</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>mysql<span style="color: #000000; font-weight: bold;">/</span>charsets<span style="color: #000000; font-weight: bold;">/</span>README from <span style="color: #c20cb9; font-weight: bold;">install</span> of mysql-libs-5.0.68-<span style="color: #000000;">1</span>.el4_6 conflicts with <span style="color: #c20cb9; font-weight: bold;">file</span> from package mysql-4.1.22-<span style="color: #000000;">2</span>.el4
<span style="color: #c20cb9; font-weight: bold;">file</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>mysql<span style="color: #000000; font-weight: bold;">/</span>charsets<span style="color: #000000; font-weight: bold;">/</span>armscii8.xml from <span style="color: #c20cb9; font-weight: bold;">install</span> of mysql-libs-5.0.68-<span style="color: #000000;">1</span>.el4_6 conflicts with <span style="color: #c20cb9; font-weight: bold;">file</span> from package mysql-4.1.22-<span style="color: #000000;">2</span>.el4
<span style="color: #c20cb9; font-weight: bold;">file</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>mysql<span style="color: #000000; font-weight: bold;">/</span>charsets<span style="color: #000000; font-weight: bold;">/</span>ascii.xml from <span style="color: #c20cb9; font-weight: bold;">install</span> of mysql-libs-5.0.68-<span style="color: #000000;">1</span>.el4_6 conflicts with <span style="color: #c20cb9; font-weight: bold;">file</span> from package mysql-4.1.22-<span style="color: #000000;">2</span>.el4</pre></div></div>

<p>So what I found was that yum was trying to install mysql.i386 but the architechture is x86_64, to fix this I had to specify the arch</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">yum <span style="color: #660033;">--enablerepo</span>=centosplus <span style="color: #c20cb9; font-weight: bold;">install</span> mysql.x86_64 mysql-server</pre></div></div>

<p>After this I was able to install it, but when I tried to start the server I received some errors about error messages not right, I&#8217;ve checked the installed packages and it was installed mysqlclient10, so I removed the error messages problem disappeared, however I still couldn&#8217;t startup the server, checking at the logs I found this:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">InnoDB: Creating foreign key constraint system tables
InnoDB: Foreign key constraint system tables created
091012 <span style="color: #000000;">11</span>:01:<span style="color: #000000;">18</span>  InnoDB: Started; log sequence number <span style="color: #000000;">0</span> <span style="color: #000000;">0</span>                       091012 <span style="color: #000000;">11</span>:01:<span style="color: #000000;">18</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>ERROR<span style="color: #7a0874; font-weight: bold;">&#93;</span> Fatal error: Can<span style="color: #ff0000;">'t open and lock privilege tables: Table '</span>mysql.host<span style="color: #ff0000;">' doesn'</span>t exist                                                     091012 <span style="color: #000000;">11</span>:01:<span style="color: #000000;">18</span>  mysqld ended</pre></div></div>

<p>To fix this I cleared the data dir, that had som files, this was in &#8216;/var/lib/mysql&#8217; and after that I ran mysql_install_db:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>prestant <span style="color: #000000; font-weight: bold;">/</span><span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #666666; font-style: italic;"># cd /var/lib/mysql </span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>prestant mysql<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #666666; font-style: italic;"># rm -rf *</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>prestant mysql<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #666666; font-style: italic;"># mysql_install_db --user=mysql -ldata=/var/lib/mysql</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>prestant mysql<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #666666; font-style: italic;"># service mysqld start</span></pre></div></div>

<p>After the server was up, I changed the root password and added a new user:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>prestant mysql<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #666666; font-style: italic;"># mysqladmin -u root password NEWPASSWORD</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>prestant mysql<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #666666; font-style: italic;"># mysql -pNEWPASSWORD</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="mysql" style="font-family:monospace;">Welcome <span style="color: #990099; font-weight: bold;">to</span> the MySQL monitor.  Commands <span style="color: #009900;">end</span> <span style="color: #990099; font-weight: bold;">with</span> <span style="color: #000033;">;</span> <span style="color: #CC0099; font-weight: bold;">or</span> \g.
Your MySQL <span style="color: #FF9900; font-weight: bold;">connection</span> id <span style="color: #CC0099; font-weight: bold;">is</span> <span style="color: #008080;">5</span>
Server <span style="color: #000099;">version</span>: 5.0.82sp1 Source distribution
&nbsp;
<span style="color: #990099; font-weight: bold;">Type</span> <span style="color: #008000;">'help;'</span> <span style="color: #CC0099; font-weight: bold;">or</span> <span style="color: #008000;">'<span style="color: #004000; font-weight: bold;">\h</span>'</span> for <span style="color: #990099; font-weight: bold;">help</span>. <span style="color: #990099; font-weight: bold;">Type</span> <span style="color: #008000;">'<span style="color: #004000; font-weight: bold;">\c</span>'</span> <span style="color: #990099; font-weight: bold;">to</span> clear the current input statement.
&nbsp;
mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">CREATE</span> <span style="color: #000099;">USER</span> <span style="color: #008000;">'ivan'</span>@<span style="color: #008000;">'<span style="color: #008080; font-weight: bold;">%</span>'</span> IDENTIFIED BY <span style="color: #008000;">'passhere'</span><span style="color: #000033;">;</span>
Query OK<span style="color: #000033;">,</span> <span style="color: #008080;">0</span> rows affected <span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">0.00</span> sec<span style="color: #FF00FF;">&#41;</span>
&nbsp;
mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">GRANT</span> <span style="color: #990099; font-weight: bold;">ALL</span> <span style="color: #990099; font-weight: bold;">PRIVILEGES</span> <span style="color: #990099; font-weight: bold;">ON</span> <span style="color: #CC0099;">*</span>.<span style="color: #CC0099;">*</span> <span style="color: #990099; font-weight: bold;">TO</span> <span style="color: #008000;">'ivan'</span>@<span style="color: #008000;">'<span style="color: #008080; font-weight: bold;">%</span>'</span> IDENTIFIED BY <span style="color: #008000;">'passhere'</span> <span style="color: #990099; font-weight: bold;">WITH</span> <span style="color: #990099; font-weight: bold;">GRANT</span> <span style="color: #990099; font-weight: bold;">OPTION</span> MAX_QUERIES_PER_HOUR <span style="color: #008080;">0</span> MAX_CONNECTIONS_PER_HOUR <span style="color: #008080;">0</span> MAX_UPDATES_PER_HOUR <span style="color: #008080;">0</span> MAX_USER_CONNECTIONS <span style="color: #008080;">0</span> <span style="color: #000033;">;</span>
Query OK<span style="color: #000033;">,</span> <span style="color: #008080;">0</span> rows affected <span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">0.00</span> sec<span style="color: #FF00FF;">&#41;</span>
&nbsp;
mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">CREATE</span> <span style="color: #000099;">USER</span> <span style="color: #008000;">'ivan'</span>@<span style="color: #008000;">'localhost'</span> IDENTIFIED BY <span style="color: #008000;">'passhere'</span><span style="color: #000033;">;</span>
Query OK<span style="color: #000033;">,</span> <span style="color: #008080;">0</span> rows affected <span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">0.00</span> sec<span style="color: #FF00FF;">&#41;</span>
&nbsp;
mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">GRANT</span> <span style="color: #990099; font-weight: bold;">ALL</span> <span style="color: #990099; font-weight: bold;">PRIVILEGES</span> <span style="color: #990099; font-weight: bold;">ON</span> <span style="color: #CC0099;">*</span>.<span style="color: #CC0099;">*</span> <span style="color: #990099; font-weight: bold;">TO</span> <span style="color: #008000;">'ivan'</span>@<span style="color: #008000;">'localhost'</span> <span style="color: #990099; font-weight: bold;">WITH</span> <span style="color: #990099; font-weight: bold;">GRANT</span> <span style="color: #990099; font-weight: bold;">OPTION</span><span style="color: #000033;">;</span>
Query OK<span style="color: #000033;">,</span> <span style="color: #008080;">0</span> rows affected <span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">0.00</span> sec<span style="color: #FF00FF;">&#41;</span>
&nbsp;
mysql<span style="color: #CC0099;">&gt;</span> flush <span style="color: #990099; font-weight: bold;">privileges</span><span style="color: #000033;">;</span>
Query OK<span style="color: #000033;">,</span> <span style="color: #008080;">0</span> rows affected <span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">0.00</span> sec<span style="color: #FF00FF;">&#41;</span>
&nbsp;
mysql<span style="color: #CC0099;">&gt;</span> exit
Bye</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://ivanvillareal.com/linux/mysql5-and-php5-on-centos4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mysql unique keys and collations</title>
		<link>http://ivanvillareal.com/development/mysql-unique-keys-and-collations/</link>
		<comments>http://ivanvillareal.com/development/mysql-unique-keys-and-collations/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 01:10:59 +0000</pubDate>
		<dc:creator>Ivan Villareal</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[utf8]]></category>

		<guid isPermaLink="false">http://ivanvillareal.com/?p=65</guid>
		<description><![CDATA[I&#8217;m working on an application that stores unique values on a field, so I used the unique index for this column, everything was ok, until I&#8217;ve started inserting&#160;multi byte&#160;characters&#160;in it. [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m working on an application that stores unique values on a field, so I used the unique index for this column, everything was ok, until I&#8217;ve started inserting&nbsp;multi byte&nbsp;characters&nbsp;in it.</p>
<p>The charachters inserted fine, the problem was that I&#8217;m using <a href="http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html" target="_blank">INSERT &#8230; ON DUPLICATE KEY UPDATE</a>&nbsp;syntax to avoid looking if the field exists, so after debugging where the application was breaking I got this:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">Query failed: Cannot add or update a child row: a foreign key constraint fails 
(`trubaseek/mapKeywordName`, CONSTRAINT `fkDomainMapNameId` FOREIGN KEY (`NameId`) 
REFERENCES `names` (`nameId`) ON DELETE NO ACTION ON UPDATE NO ACTION)&amp;lt;br&amp;gt; 
SQL: INSERT INTO `mapKeywordName` (`keywordId`, `nameId`) VALUES ('1', '326');</pre></div></div>

<p>so I&#8217;ve spent about an hour changing the encodings&nbsp;without&nbsp;success, but after some testing I discovered that <strong>hôteles</strong> was the same as <strong>hotelës, </strong>I did several testing from the linux console, the mysql browser, and from a php script, and all revealed the same.</p>
<p>When I did this</p>

<div class="wp_syntax"><div class="code"><pre class="mysql" style="font-family:monospace;"><span style="color: #990099; font-weight: bold;">INSERT</span> <span style="color: #990099; font-weight: bold;">INTO</span> <span style="color: #008000;">`names`</span> <span style="color: #FF00FF;">&#40;</span><span style="color: #008000;">`name`</span><span style="color: #000033;">,</span> <span style="color: #008000;">`price`</span><span style="color: #000033;">,</span> <span style="color: #008000;">`priceCurrency`</span><span style="color: #000033;">,</span> <span style="color: #008000;">`bids`</span><span style="color: #000033;">,</span> <span style="color: #008000;">`traffic`</span><span style="color: #000033;">,</span> <span style="color: #008000;">`lastUpdate`</span><span style="color: #FF00FF;">&#41;</span> 
<span style="color: #990099; font-weight: bold;">VALUES</span> <span style="color: #FF00FF;">&#40;</span><span style="color: #008000;">'hotelës'</span><span style="color: #000033;">,</span> <span style="color: #008000;">'0'</span><span style="color: #000033;">,</span> <span style="color: #008000;">'$US'</span><span style="color: #000033;">,</span> <span style="color: #008000;">'0'</span><span style="color: #000033;">,</span> <span style="color: #008000;">'0'</span><span style="color: #000033;">,</span> <span style="color: #000099;">NOW</span><span style="color: #FF00FF;">&#40;</span><span style="color: #FF00FF;">&#41;</span><span style="color: #FF00FF;">&#41;</span> 
<span style="color: #990099; font-weight: bold;">ON</span> <span style="color: #990099; font-weight: bold;">DUPLICATE KEY</span> <span style="color: #990099; font-weight: bold;">UPDATE</span> <span style="color: #008000;">`price`</span><span style="color: #CC0099;">=</span><span style="color: #008000;">'0'</span><span style="color: #000033;">,</span> <span style="color: #008000;">`priceCurrency`</span><span style="color: #CC0099;">=</span><span style="color: #008000;">'$US'</span><span style="color: #000033;">,</span> <span style="color: #008000;">`bids`</span><span style="color: #CC0099;">=</span><span style="color: #008000;">'0'</span><span style="color: #000033;">,</span> <span style="color: #008000;">`traffic`</span><span style="color: #CC0099;">=</span><span style="color: #008000;">'0'</span><span style="color: #000033;">,</span> <span style="color: #008000;">`lastUpdate`</span> <span style="color: #CC0099;">=</span> <span style="color: #000099;">NOW</span><span style="color: #FF00FF;">&#40;</span><span style="color: #FF00FF;">&#41;</span><span style="color: #000033;">;</span></pre></div></div>

<p>I&#8217;ve got this:</p>

<div class="wp_syntax"><div class="code"><pre class="mysql" style="font-family:monospace;">Query OK<span style="color: #000033;">,</span> <span style="color: #008080;">2</span> rows affected <span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">0.01</span> sec<span style="color: #FF00FF;">&#41;</span></pre></div></div>

<p>Called from a php script <strong>mysql_insert_id(); </strong>returned me an Id like if it was inserted not updated, but when if I select the returned Id, an error were thrown, because it didn&#8217;t existed.</p>
<p>So after some research, I&#8217;ve found that adding a collation <strong>utf8_bin </strong>to that column fixed this issue.</p>
<p>I haven&#8217;t tested this enough but for now it appears to be working.</p>
]]></content:encoded>
			<wfw:commentRss>http://ivanvillareal.com/development/mysql-unique-keys-and-collations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Parsing HTML documents with Simple Html DOM</title>
		<link>http://ivanvillareal.com/development/parsing-html-documents-whit-simple-html-dom/</link>
		<comments>http://ivanvillareal.com/development/parsing-html-documents-whit-simple-html-dom/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 23:02:34 +0000</pubDate>
		<dc:creator>Ivan Villareal</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Scrapping]]></category>

		<guid isPermaLink="false">http://ivanvillareal.com/?p=45</guid>
		<description><![CDATA[I had to get some information from an XHTML document, the information required was on nested tables, I&#8217;ve started working on that and my first approach was to get the [...]]]></description>
			<content:encoded><![CDATA[<p>I had to get some information from an XHTML document, the information required was on nested tables, I&#8217;ve started working on that and my first approach was to get the needed info using regular expressions.</p>
<p>After 2 hours I&#8217;ve got a set of regex that worked pretty well, but when I received a new document, the layout was changed a little bit, and my didn&#8217;t worked as expected, the content was on the same table but this time it had nested tables, which were a really big problem.</p>
<p>I already have used the PHP DOM, but only on xml files, I didn&#8217;t was aware that it had the ability to parse HTML, so I&#8217;ve started working with this and within an hour I had it working, and this time the changes in the document didn&#8217;t affect the scrapping.</p>
<p>In about an hour I had a larger class with several methods to get all the elements I needed, but suddenly I was presented with another challenge, again with nested tables, sometimes the number of childs were shorter than expected, I&#8217;ve experimented several things until I found this <a href="http://sourceforge.net/projects/simplehtmldom/">Simple Html Dom</a>&nbsp;it is pretty straight forward, and it does an excellent job scrapping html documents, all the methods I did were replaced by this:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">            <span style="color: #000088;">$html</span>   <span style="color: #339933;">=</span> <span style="color: #990000;">curl_exec</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000088;">$dom</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> simple_html_dom<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000088;">$dom</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">load</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$html</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000088;">$items</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000088;">$tabla</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$dom</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">find</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'table[cellpadding^=2]'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
            <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$dom</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">find</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'table[cellpadding^=2]'</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$table</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$table</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">find</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'tr'</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$tr</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                    <span style="color: #000088;">$link</span> <span style="color: #339933;">=</span> <span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$tr</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">find</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'a'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">title</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$link</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                        <span style="color: #000088;">$item</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'item'</span><span style="color: #009900;">&#93;</span>  <span style="color: #339933;">=</span> <span style="color: #000088;">$link</span><span style="color: #339933;">;</span>
                        <span style="color: #000088;">$item</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'price'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$tr</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">children</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">plaintext</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                        <span style="color: #000088;">$item</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'bids'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$tr</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">children</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">plaintext</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                        <span style="color: #000088;">$items</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$item</span><span style="color: #339933;">;</span>
                    <span style="color: #009900;">&#125;</span>
                <span style="color: #009900;">&#125;</span>
            <span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://ivanvillareal.com/development/parsing-html-documents-whit-simple-html-dom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automated Capture of Webpages (Main Process)</title>
		<link>http://ivanvillareal.com/linux/automated-capture-of-webpages-main-process/</link>
		<comments>http://ivanvillareal.com/linux/automated-capture-of-webpages-main-process/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 00:21:45 +0000</pubDate>
		<dc:creator>Ivan Villareal</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[architechture]]></category>
		<category><![CDATA[daemon]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[xvfb]]></category>
		<category><![CDATA[Zend_Json]]></category>

		<guid isPermaLink="false">http://ivanvillareal.com/?p=25</guid>
		<description><![CDATA[This post is the continuation of &#160;Xvfb and Firefox headless screenshot generator&#160;were I explained how Xvfb and Firefox can be used to get a screenshot of any web resource supported [...]]]></description>
			<content:encoded><![CDATA[<p>This post is the continuation of &nbsp;<strong><a title="Xvfb and Firefox headless screenshot generator" href="http://ivanvillareal.com/linux/xvfb-and-firefox-headles-screenshot-generator/">Xvfb and Firefox headless screenshot generator</a>&nbsp;</strong>were I explained how Xvfb and Firefox can be used to get a screenshot of any web resource supported by firefox.</p>
<p>The next challenge I had, involved the creation of an automated process that could be called from the web or from a cron job, this process job would take a list of sites that need to be captured, and it will save its shots with their respective thumbnail somewhere, also this same process had to&nbsp;communicate&nbsp;somehow with the&nbsp;front end, to inform the user about the status.</p>
<p>So I&#8217;ve planned the&nbsp;architecture&nbsp;for this solution in a modular way</p>
<ul>
<li>A daemon checking if new jobs were sent.</li>
<li>The main process that takes some parameters including the site list and save the generated screenshots somewhere.</li>
<li>A logger facility to&nbsp;communicate&nbsp;with an external process.</li>
<li>A web application to take the site list and show the results.</li>
</ul>
<p>This is the&nbsp;architecture&nbsp;diagram:</p>
<div id="attachment_28" class="wp-caption aligncenter" style="width: 727px"><a href="http://ivanvillareal.com/wp-content/uploads/2009/09/screen_grabber_system_arquitechture1.png"><img class="size-large wp-image-28 " title="Screen Grabber System Arquitechture" src="http://ivanvillareal.com/wp-content/uploads/2009/09/screen_grabber_system_arquitechture1-717x1024.png" alt="Screen Grabber System Arquitechture" width="717" height="1024" /></a><p class="wp-caption-text">Screen Grabber System Arquitechture</p></div>
<p>From the above modules, I will describe briefly the Main process, this main process started as a simple bash script but this wasn&#8217;t sufficient for&nbsp;scalability and security standpoints, so I&#8217;ve decided to make it in perl.</p>
<p>&nbsp;</p>
<p>The current version has changed a lot, but I will describe the main aspects of this script:</p>
<p>The following CPAN extensions were used in this module:</p>
<ul>
<li><a title="Run - Perl extension for to start programs in background" href="http://search.cpan.org/~ilyaz/Run-0.03/Run.pm" target="_blank">Run</a></li>
<li><a title="DBI - Database independent interface for Perl" href="http://search.cpan.org/~timb/DBI-1.609/DBI.pm" target="_blank">DBI</a></li>
<li><a title="File::Basename - Parse file paths into directory, filename and suffix." href="http://search.cpan.org/~dapm/perl-5.10.1/lib/File/Basename.pm" target="_blank">File::Basename</a></li>
<li><span style="text-decoration: line-through;"><a title="Perl implementation of PHP's native serialize(), unserialize() [Used at first to comunicate with PHP frontend, now the comunication is done trough the db]" href="http://hurring.com/code/perl/serialize/" target="_blank">Serialize</a></span></li>
</ul>
<p>This process receives the following arguments:</p>
<ol>
<li>The path to a file where the list of urls are, the filename represents the job name and this file must contain 1 url per line <span style="color: #ff0000;">(Required)</span></li>
<li><span style="color: #ff0000;"><span style="color: #000000;">The number of seconds that firefox will have to render each url <span style="color: #3366ff;">(Optional)</span></span></span></li>
</ol>
<p>After the main process is called, either by a daemon or by a cron job, it will connect to a database and search the job based on the received parameter, this job needs to be inserted with an API I did in php, this API is called from the frontend and the cron jobs as well and it serves as a glue point between everything.</p>
<p>After the update is done, I prepare the environment for Xvfb and spawn a new Virtual Screen with its corresponding firefox instance:</p>
<p>This is the code used:</p>

<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">sub</span> initialize <span style="color: #009900;">&#123;</span>
    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;======= Process Starting ==========&quot;</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$numArgs</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$#ARGV</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$numArgs</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Bad number of parameters&quot;</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;Bad Number of params <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000066;">chomp</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$siteList</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$ARGV</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$numArgs</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066;">chomp</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$renderTime</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$ARGV</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$jobName</span><span style="color: #339933;">,</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$dirName</span><span style="color: #339933;">,</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$fileExtension</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> fileparse<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$siteList</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'\.processing'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Parameters received <span style="color: #000099; font-weight: bold;">\n</span>SiteList: $siteList<span style="color: #000099; font-weight: bold;">\n</span>Related Domain:$relatedDomain<span style="color: #000099; font-weight: bold;">\n</span>Render Time: $renderTime&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Initializing Db&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">$dsn</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;DBI:mysql:database=$db{'name'};host=$db{'host'};port=$db{'port'}&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">$dbh</span> <span style="color: #339933;">=</span> DBI<span style="color: #339933;">-&gt;</span><span style="color: #006600;">connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$dsn</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$db</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'user'</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$db</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'pass'</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'failed to connect'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$jobRow</span> <span style="color: #339933;">=</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$domain</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$dbh</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">selectrow_hashref</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;SELECT idJobs FROM jobs WHERE jobName = ?&quot;</span><span style="color: #339933;">,</span><span style="color: #000066;">undef</span><span style="color: #339933;">,</span><span style="color: #0000ff;">$jobName</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">$jobId</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$jobRow</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'idJobs'</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$result</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$dbh</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">do</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;UPDATE jobs SET dateStarted = CURRENT_TIMESTAMP WHERE jobName = ?&quot;</span><span style="color: #339933;">,</span><span style="color: #000066;">undef</span><span style="color: #339933;">,</span><span style="color: #0000ff;">$jobName</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Conected to Db $db{'name'}&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    jobUpdate<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Starting capture process...&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">$ENV</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'DISPLAY'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span><span style="color: #ff0000;">':1'</span><span style="color: #339933;">;</span>
    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Starting virtual screen...&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">$pid</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'xvfb'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> spawn <span style="color: #0000ff;">$xvfbBin</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">':1'</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">'-screen'</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">'0'</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">'1024x768x24'</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;Xvfb failed to start $!&quot;</span><span style="color: #339933;">;</span>
    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Xvfb Pid: $pid{'xvfb'} &quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">$pid</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'ratpoison'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> spawn <span style="color: #ff0000;">'ratpoison'</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;spawn ratpoison failed&quot;</span><span style="color: #339933;">;</span>
    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Ratpoison Pid: $pid{'ratpoison'} &quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">sleep</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">$pid</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'firefox'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> spawn <span style="color: #0000ff;">$ffBin</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">'-width 1024'</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">'-height 768'</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;spawn $!&quot;</span><span style="color: #339933;">;</span>
    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Firefox Process Id: $pid{'firefox'}&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">sleep</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;---Initialize sub end here---&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">return</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>After the initialization I proceed to read the list of files to start capturing each one, this is the code that does exactly that:</p>

<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #009999;">&lt;file&gt;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$site</span>    <span style="color: #339933;">=</span> <span style="color: #0000ff;">$_</span><span style="color: #339933;">;</span>
 <span style="color: #000066;">chop</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$site</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #666666; font-style: italic;">##</span>
 <span style="color: #666666; font-style: italic;"># Validate that the line starts with http or https</span>
 <span style="color: #666666; font-style: italic;">##</span>
 <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$site</span> <span style="color: #339933;">=~</span> <span style="color: #000066;">m</span><span style="color: #339933;">!</span><span style="color: #0000ff;">\b</span><span style="color: #009900;">&#40;</span>https<span style="color: #339933;">?</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">://!</span>i<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Processing: $site&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    captureSite<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$site</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$relatedDomainId</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Sites Processed&quot;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">$stats</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'processed'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">.</span><span style="color: #ff0000;">&quot;=&quot;</span><span style="color: #339933;">.</span> <span style="color: #0000ff;">$stats</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'succesfull'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">.</span><span style="color: #ff0000;">&quot;+&quot;</span><span style="color: #339933;">.</span> <span style="color: #0000ff;">$stats</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'failed'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">.</span><span style="color: #ff0000;">&quot;+&quot;</span><span style="color: #339933;">.</span> <span style="color: #0000ff;">$stats</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'unrendered'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">.</span><span style="color: #ff0000;">&quot;entre &quot;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">$stats</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'siteCount'</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">$stats</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'percentage'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$stats</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'processed'</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">/</span><span style="color: #0000ff;">$stats</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'siteCount'</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #cc66cc;">100</span><span style="color: #339933;">;</span>
    updateStatus<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'stats'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">\%stats</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
 <span style="color: #009900;">&#125;</span><span style="color: #339933;">&lt;/</span>file<span style="color: #339933;">&gt;</span></pre></div></div>

<p>And the captureSite sub is where the magic is, here it is:</p>

<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">sub</span> captureSite <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$site</span>          <span style="color: #339933;">=</span> <span style="color: #000066;">shift</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$result</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$imgName</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$imageStatus</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">''</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$fileNameExit</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$imgCounter</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$imgFullName</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$thumbFile</span><span style="color: #339933;">;</span>
&nbsp;
    updateStatus<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'status'</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Processing $site&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    jobUpdate<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Processing $site&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Starting to capture: $site&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">##</span>
<span style="color: #666666; font-style: italic;"># Check the domain for valid parts</span>
<span style="color: #666666; font-style: italic;">##</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@domainParts</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$site</span> <span style="color: #339933;">=~</span> <span style="color: #009966; font-style: italic;">m/\b((?#protocol)https?|ftp):\/\/((?#domain)[-A-Z0-9.]+)((?#file)\/[-A-Z0-9+&amp;@#\/%=~_|!:,.;]*)?((?#parameters)\?[-A-Z0-9+&amp;@#\/%=~_|!:,.;]*)?/ig</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$domainParts</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #0000ff;">$domainParts</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$openedTabs</span> <span style="color: #339933;">&gt;</span> <span style="color: #0000ff;">$maximumTabs</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Maximum Number of Opened Tabs Reached Killing Firefox pid $pid{'firefox'}&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000066;">kill</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$pid</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'firefox'</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
            <span style="color: #000066;">sleep</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #0000ff;">$pid</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'firefox'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> spawn <span style="color: #0000ff;">$ffBin</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">'-width 1024'</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">'-height 768'</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;spawn $!&quot;</span><span style="color: #339933;">;</span>
            logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;New Firefox Process Id: $pid{'firefox'}&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000066;">sleep</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #0000ff;">$openedTabs</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
<span style="color: #666666; font-style: italic;">#because ff is tabless the old page doesn't disappear until</span>
<span style="color: #666666; font-style: italic;">#all content is loaded, so I should remove content first.</span>
        <span style="color: #0000ff;">$cmd</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$ffBin</span> <span style="color: #339933;">.</span> <span style="color: #ff0000;">' -remote &quot;openUrl(http://localhost/blank.html)&quot;'</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$res</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">`$cmd`</span><span style="color: #339933;">;</span>
        <span style="color: #000066;">sleep</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #0000ff;">$cmd</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$ffBin</span> <span style="color: #339933;">.</span> <span style="color: #ff0000;">' -remote &quot;openUrl('</span><span style="color: #339933;">.</span><span style="color: #0000ff;">$site</span><span style="color: #339933;">.</span><span style="color: #ff0000;">')&quot;'</span><span style="color: #339933;">;</span>
        logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Opening $site&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        logThis<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$cmd</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #0000ff;">$res</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">`$cmd`</span><span style="color: #339933;">;</span>
        <span style="color: #0000ff;">$openedTabs</span><span style="color: #339933;">++;</span>
        logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Waiting $renderTime seconds to allow page rendering&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000066;">sleep</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$renderTime</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">##</span>
<span style="color: #666666; font-style: italic;"># We remove harmfull charachters</span>
<span style="color: #666666; font-style: italic;"># maybe an md5sum would be better, because</span>
<span style="color: #666666; font-style: italic;"># we would always have the same number of chars</span>
<span style="color: #666666; font-style: italic;">##</span>
        <span style="color: #0000ff;">$imgName</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$site</span><span style="color: #339933;">;</span>
        <span style="color: #0000ff;">$imgName</span> <span style="color: #339933;">=~</span> <span style="color: #000066;">s</span><span style="color: #339933;">!</span><span style="color: #0000ff;">\b</span><span style="color: #009900;">&#40;</span>https<span style="color: #339933;">?</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">://|</span><span style="color: #009900;">&#40;</span>www\<span style="color: #339933;">.</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">!!</span>g<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">#removes http://www</span>
            <span style="color: #0000ff;">$imgName</span> <span style="color: #339933;">=~</span> <span style="color: #000066;">s</span><span style="color: #339933;">!</span>\<span style="color: #339933;">/|</span>\<span style="color: #666666; font-style: italic;">#|\?$!!g; #removes \ # ? from the end</span>
            <span style="color: #0000ff;">$imgName</span> <span style="color: #339933;">=~</span> <span style="color: #000066;">s</span><span style="color: #339933;">!</span><span style="color: #009900;">&#91;</span><span style="color: #339933;">^</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">9</span><span style="color: #339933;">^</span>A<span style="color: #339933;">-</span>Z<span style="color: #339933;">^</span>a<span style="color: #339933;">-</span>z<span style="color: #339933;">^</span>_<span style="color: #339933;">^.</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">!</span>_<span style="color: #339933;">!</span>g<span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">#cut excessive large filenames</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000066;">length</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$imgName</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;</span> <span style="color: #0000ff;">$maxFileNameLength</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #0000ff;">$imgName</span> <span style="color: #339933;">=</span> <span style="color: #000066;">substr</span> <span style="color: #0000ff;">$imgName</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$maxFileNameLength</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$baseImgName</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$imgName</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #0000ff;">$fileNameExit</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #0000ff;">$imgFullName</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$saveDir</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">$imgName</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">$saveFormat</span><span style="color: #339933;">;</span>
            <span style="color: #0000ff;">$thumbFile</span>   <span style="color: #339933;">=</span> <span style="color: #0000ff;">$thumbsDir</span> <span style="color: #339933;">.</span> <span style="color: #ff0000;">'thumb_'</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">$imgName</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">$saveFormat</span><span style="color: #339933;">;</span>
            logThis<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$imgFullName</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Cecking if image already exists&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span>e <span style="color: #0000ff;">$imgFullName</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #0000ff;">$imgCounter</span><span style="color: #339933;">++;</span>
                <span style="color: #0000ff;">$imgName</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$baseImgName</span> <span style="color: #339933;">.</span> <span style="color: #ff0000;">'_'</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">$imgCounter</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #0000ff;">$fileNameExit</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
<span style="color: #666666; font-style: italic;">#creating the screenshot</span>
        <span style="color: #0000ff;">$cmd</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">'import -window root '</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">$imgFullName</span><span style="color: #339933;">;</span>
        logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Command: &quot;</span> <span style="color: #339933;">.</span><span style="color: #0000ff;">$cmd</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #0000ff;">$res</span>   <span style="color: #339933;">=</span> <span style="color: #ff0000;">`$cmd`</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span>e <span style="color: #0000ff;">$imgFullName</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;The image $imgFullName was created succesfully&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #0000ff;">$imageStatus</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">'success'</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$fileSize</span> <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #000066;">s</span> <span style="color: #0000ff;">$imgFullName</span><span style="color: #339933;">;</span>
            logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;File Size for image created: $fileSize&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;"># Check the filesize, if its to low wait give more time to render the page</span>
            <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$fileSize</span> <span style="color: #339933;">&lt;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$minFileSize</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;File is too small, I think the page has not finished rendering, giving it more time...&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$exit</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$try</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #0000ff;">$exit</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Giving the page $renderTime more seconds to render...&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    updateStatus<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'status'</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Giving $site more time to render...&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    <span style="color: #000066;">sleep</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$renderTime</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Command: &quot;</span> <span style="color: #339933;">.</span><span style="color: #0000ff;">$cmd</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    <span style="color: #0000ff;">$res</span>   <span style="color: #339933;">=</span> <span style="color: #ff0000;">`$cmd`</span><span style="color: #339933;">;</span>
                    <span style="color: #0000ff;">$fileSize</span> <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #000066;">s</span> <span style="color: #0000ff;">$imgFullName</span><span style="color: #339933;">;</span>
                    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;File Size for image created: $fileSize&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$fileSize</span> <span style="color: #339933;">&gt;</span> <span style="color: #0000ff;">$minFileSize</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                        <span style="color: #0000ff;">$exit</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
                        <span style="color: #0000ff;">$imageStatus</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">'success'</span><span style="color: #339933;">;</span>
                    <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
                        <span style="color: #0000ff;">$try</span><span style="color: #339933;">++;</span>
                    <span style="color: #009900;">&#125;</span>
                    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$try</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">3</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                        <span style="color: #0000ff;">$exit</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
                        <span style="color: #0000ff;">$imageStatus</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">'failed'</span><span style="color: #339933;">;</span>
                    <span style="color: #009900;">&#125;</span>
                <span style="color: #009900;">&#125;</span>
            <span style="color: #009900;">&#125;</span>
            logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Croping image...&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #0000ff;">$cmd</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;convert $imgFullName -crop '1024x768+0+24' $imgFullName&quot;</span><span style="color: #339933;">;</span>
            <span style="color: #0000ff;">$res</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">`$cmd`</span><span style="color: #339933;">;</span>
&nbsp;
            logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Creating Thumbnail in $thumbFile&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #0000ff;">$cmd</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;convert $imgFullName -resize '170x128' $thumbFile&quot;</span><span style="color: #339933;">;</span>
            <span style="color: #0000ff;">$res</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">`$cmd`</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">%image</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>
                    site   <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$site</span><span style="color: #339933;">,</span>
                    image  <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$imgFullName</span><span style="color: #339933;">,</span>
                    thumb  <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$thumbFile</span><span style="color: #339933;">,</span>
                    status <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$imageStatus</span><span style="color: #339933;">,</span>
                    <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000066;">push</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">@images</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">\%image</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            insertImage<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$site</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$imgFullName</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$thumbFile</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$relatedDomainId</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$imageStatus</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$imageStatus</span> <span style="color: #b1b100;">eq</span> <span style="color: #ff0000;">'success'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #0000ff;">$stats</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'succesfull'</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">++;</span>
            <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #0000ff;">$stats</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'failed'</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">++;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
            logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Fail creating the image&quot;</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #0000ff;">$stats</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'unrendered'</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">++;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #0000ff;">$stats</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'unrendered'</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">++;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #0000ff;">$stats</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'processed'</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">++;</span>
    jobUpdate<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Finished processing $site&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>As you can see I&#8217;m updating the job status in the <strong>jobUpdate</strong> sub, also there are other subs to take care of &nbsp;inserting the screenshot info in the db.</p>
<p>When this program ends, it updates the db to let the inform the daemon that is ready to take more jobs.</p>
<p>In the next post I will be providing &nbsp;info on how the frontend works, and what the final results of this implementation ended.</p>
]]></content:encoded>
			<wfw:commentRss>http://ivanvillareal.com/linux/automated-capture-of-webpages-main-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

