Powerpoint Sunusuna Gömülen Flash SWF Dosyasını Çıkarma
Powerpoint sunularına gömülen Shockwave Flash Object (SWF) nesneleri *.swf dosyası olarak isteniyorsa yapılacak işlemler..
- Öncelikle php scriptlerini bilgisayarda çalıştırabilmek için bir sunucu kurmak gerekir. (örneğin Wampserver)
- Windows Klasör ve Arama Seçeneklerinden “Bilinen dosya türleri için uzantıları gizle” seçeneğinin önündeki tik işareti kaldırılmalı.. Bu sayede dosya uzantısı değiştirilebilir.
- Swf gömülü powerpoint dosyasının uzantısı *.zip ya da *.rar olarak değiştirilir. Örneğin dosyanın adı sunu.pptx bu sunu.zip olarak değiştirilir.
- İsim değiştirildikten sonra Winrar/Winzip gibi sıkıştırma programlarıyla dosya açılır.
- .\ppt\activeX klasörüne gelinir.
- Bu klasördeki *.bin uzantılı dosyalar Localhost klasörüne (www veya wwwroot) kopyalanır.
- Aşağıdaki php scripti Localhosta bir php dosyası olarak kaydedilir. (örneğin convert.php)
- Daha sonra sunucudan bu dosya çalıştırıldığında bin dosyalarıyla aynı ismi taşıyan swf dosyaları elde edilmiş olur..
Php script;
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 <span class="php"><span class="php-comment"><?php//Script to extract SWF files from pptx files (once unzipped)</span><span class="php-comment">//Set up file type an extension for checking</code></span><span class="php-var">$FWSMarker</span> <span class="php-operator">=</span> <span class="php-string">"FWS"</span>;<span class="php-var">$extension</span> <span class="php-operator">=</span> <span class="php-string">".BIN"</span>;<span class="php-comment">// Start parsing directory</span><span class="php-keyword">if</span> <span class="php-brackets">(</span><span class="php-var">$handle</span> <span class="php-operator">=</span> <span class="php-function">opendir</span><span class="php-brackets">(</span><span class="php-string">'.'</span><span class="php-brackets">)</span><span class="php-brackets">)</span> <span class="php-brackets">{</span><span class="php-keyword">echo</span> <span class="php-string">"Directory handle: $handle\n"</span>;<span class="php-keyword">echo</span> <span class="php-string">"Entries:\n"</span>;<span class="php-comment">/* Loop over the directory searching for all files */</span><span class="php-keyword">while</span> <span class="php-brackets">(</span><span class="php-keyword">false</span> <span class="php-operator">!</span><span class="php-operator">=</span><span class="php-operator">=</span> <span class="php-brackets">(</span><span class="php-var">$entry</span> <span class="php-operator">=</span> <span class="php-function">readdir</span><span class="php-brackets">(</span><span class="php-var">$handle</span><span class="php-brackets">)</span><span class="php-brackets">)</span><span class="php-brackets">)</span> <span class="php-brackets">{</span><span class="php-comment">/* Check for file extension*/</span><span class="php-var">$filename</span> <span class="php-operator">=</span> <span class="php-function">strtoupper</span><span class="php-brackets">(</span><span class="php-function">rtrim</span><span class="php-brackets">(</span><span class="php-var">$entry</span><span class="php-brackets">)</span><span class="php-brackets">)</span>;<span class="php-var">$entry_len</span> <span class="php-operator">=</span> <span class="php-function">strlen</span><span class="php-brackets">(</span><span class="php-var">$entry</span><span class="php-brackets">)</span>;<span class="php-var">$entry_pos</span> <span class="php-operator">=</span> <span class="php-var">$entry_len</span> <span class="php-operator">-</span> <span class="php-function">strlen</span><span class="php-brackets">(</span><span class="php-var">$extension</span><span class="php-brackets">)</span>;<span class="php-comment">/* If .BIN search in file for FWS*/</span><span class="php-keyword">if</span> <span class="php-brackets">(</span><span class="php-function">substr</span><span class="php-brackets">(</span><span class="php-var">$filename</span>, <span class="php-var">$entry_pos</span> , <span class="php-function">strlen</span><span class="php-brackets">(</span><span class="php-var">$extension</span><span class="php-brackets">)</span><span class="php-brackets">)</span> <span class="php-operator">=</span><span class="php-operator">=</span> <span class="php-var">$extension</span> <span class="php-brackets">)</span><span class="php-brackets">{</span><span class="php-keyword">echo</span> <span class="php-string">"Found entry $entry that is a .bin file \n"</span>;<span class="php-var">$newhandle</span> <span class="php-operator">=</span> <span class="php-function">fopen</span><span class="php-brackets">(</span><span class="php-var">$entry</span>, <span class="php-string">"r"</span><span class="php-brackets">)</span>;<span class="php-var">$contents</span> <span class="php-operator">=</span> <span class="php-function">fread</span><span class="php-brackets">(</span><span class="php-var">$newhandle</span>, <span class="php-function">filesize</span><span class="php-brackets">(</span><span class="php-var">$entry</span><span class="php-brackets">)</span><span class="php-brackets">)</span>;<span class="php-var">$marker</span> <span class="php-operator">=</span> <span class="php-function">strpos</span><span class="php-brackets">(</span><span class="php-var">$contents</span>, <span class="php-var">$FWSMarker</span><span class="php-brackets">)</span>;<span class="php-keyword">if</span> <span class="php-brackets">(</span><span class="php-var">$marker</span> <span class="php-operator">!</span><span class="php-operator">=</span> <span class="php-number">0</span><span class="php-brackets">)</span><span class="php-brackets">{</span><span class="php-keyword">echo</span> <span class="php-string">"FWS Found at position : $marker\n"</span>;<span class="php-comment">// truncate file from before FWS marker</span><span class="php-var">$newlen</span> <span class="php-operator">=</span> <span class="php-function">strlen</span> <span class="php-brackets">(</span><span class="php-var">$contents</span><span class="php-brackets">)</span>;<span class="php-var">$contents</span> <span class="php-operator">=</span> <span class="php-function">substr</span><span class="php-brackets">(</span><span class="php-var">$contents</span>, <span class="php-var">$marker</span>, <span class="php-brackets">(</span><span class="php-var">$newlen</span><span class="php-operator">-</span><span class="php-var">$marker</span><span class="php-brackets">)</span><span class="php-brackets">)</span>;<span class="php-comment">// get SWF file length from SWF header and reverse (little endian)</span><span class="php-var">$swflen</span> <span class="php-operator">=</span> <span class="php-function">substr</span> <span class="php-brackets">(</span><span class="php-var">$contents</span>, <span class="php-number">4</span>, <span class="php-number">4</span><span class="php-brackets">)</span>;<span class="php-var">$swflen</span> <span class="php-operator">=</span> <span class="php-function">strrev</span><span class="php-brackets">(</span><span class="php-var">$swflen</span><span class="php-brackets">)</span>;<span class="php-comment">//convert file length into something php can work with</span><span class="php-var">$act_len</span><span class="php-operator">=</span><span class="php-string">""</span>;<span class="php-keyword">for</span> <span class="php-brackets">(</span><span class="php-var">$i</span><span class="php-operator">=</span><span class="php-number">0</span>; <span class="php-var">$i</span><span class="php-operator"><</span><span class="php-number">4</span>; <span class="php-var">$i</span><span class="php-operator">+</span><span class="php-operator">+</span><span class="php-brackets">)</span><span class="php-brackets">{</span><span class="php-var">$newchar</span><span class="php-operator">=</span><span class="php-function">ord</span><span class="php-brackets">(</span><span class="php-function">substr</span><span class="php-brackets">(</span><span class="php-var">$swflen</span>,<span class="php-var">$i</span>,<span class="php-number">1</span><span class="php-brackets">)</span><span class="php-brackets">)</span>;<span class="php-var">$newchar</span><span class="php-operator">=</span><span class="php-function">strval</span><span class="php-brackets">(</span><span class="php-function">dechex</span><span class="php-brackets">(</span><span class="php-var">$newchar</span><span class="php-brackets">)</span><span class="php-brackets">)</span>;<span class="php-var">$act_len</span><span class="php-operator">=</span><span class="php-var">$act_len</span><span class="php-operator">.</span><span class="php-var">$newchar</span>;<span class="php-brackets">}</span><span class="php-comment">// convert from hex to dec</span><span class="php-var">$act_len</span><span class="php-operator">=</span><span class="php-function">hexdec</span><span class="php-brackets">(</span><span class="php-var">$act_len</span><span class="php-brackets">)</span>;<span class="php-keyword">echo</span> <span class="php-string">"Actual SWF file length : $act_len bytes\n"</span>;<span class="php-comment">/* Truncate File to that length*/</span><span class="php-var">$contents</span><span class="php-operator">=</span><span class="php-function">substr</span><span class="php-brackets">(</span><span class="php-var">$contents</span>,<span class="php-number">0</span>,<span class="php-var">$act_len</span><span class="php-brackets">)</span>;<span class="php-comment">/* Save New File */</span><span class="php-var">$newfilename</span> <span class="php-operator">=</span> <span class="php-var">$entry</span><span class="php-operator">.</span><span class="php-string">".swf"</span>;<span class="php-var">$newhandle</span> <span class="php-operator">=</span> <span class="php-function">fopen</span><span class="php-brackets">(</span><span class="php-var">$newfilename</span>, <span class="php-string">'w'</span><span class="php-brackets">)</span>;<span class="php-function">fwrite</span><span class="php-brackets">(</span><span class="php-var">$newhandle</span>,<span class="php-var">$contents</span><span class="php-brackets">)</span>;<span class="php-keyword">echo</span> <span class="php-string">"SWF file outputted to $newfilename \n\n"</span>;<span class="php-function">fclose</span><span class="php-brackets">(</span><span class="php-var">$newhandle</span><span class="php-brackets">)</span>;<span class="php-brackets">}</span><span class="php-brackets">}</span><span class="php-brackets">}</span><span class="php-comment">//Wrap it up and exit</span><span class="php-function">closedir</span><span class="php-brackets">(</span><span class="php-var">$handle</span><span class="php-brackets">)</span>;<span class="php-brackets">}?></span></span>