Waraxe IT Security Portal
Login or Register
November 5, 2024
Menu
Home
Logout
Discussions
Forums
Members List
IRC chat
Tools
Base64 coder
MD5 hash
CRC32 checksum
ROT13 coder
SHA-1 hash
URL-decoder
Sql Char Encoder
Affiliates
y3dips ITsec
Md5 Cracker
User Manuals
AlbumNow
Content
Content
Sections
FAQ
Top
Info
Feedback
Recommend Us
Search
Journal
Your Account
User Info
Welcome, Anonymous
Nickname
Password
(Register)

Membership:
Latest: MichaelSnaRe
New Today: 0
New Yesterday: 0
Overall: 9144

People Online:
Visitors: 118
Members: 0
Total: 118
Full disclosure
4 vulnerabilities in ibmsecurity
32 vulnerabilities in IBM Security Verify Access
xlibre Xnest security advisory & bugfix releases
APPLE-SA-10-29-2024-1 Safari 18.1
SEC Consult SA-20241030-0 :: Query Filter Injection in Ping Identity PingIDM (formerly known as ForgeRock Identity Management) (CVE-2024-23600)
SEC Consult SA-20241023-0 :: Authenticated Remote Code Execution in Multiple Xerox printers (CVE-2024-6333)
APPLE-SA-10-28-2024-8 visionOS 2.1
APPLE-SA-10-28-2024-7 tvOS 18.1
APPLE-SA-10-28-2024-6 watchOS 11.1
APPLE-SA-10-28-2024-5 macOS Ventura 13.7.1
APPLE-SA-10-28-2024-4 macOS Sonoma 14.7.1
APPLE-SA-10-28-2024-3 macOS Sequoia 15.1
APPLE-SA-10-28-2024-2 iOS 17.7.1 and iPadOS 17.7.1
APPLE-SA-10-28-2024-1 iOS 18.1 and iPadOS 18.1
Open Redirect / Reflected XSS - booked-schedulerv2.8.5
Log in Register Forum FAQ Memberlist Search
IT Security and Insecurity Portal

www.waraxe.us Forum Index -> PHP script decode requests -> Wordpress plugin hacked - I would really like to decode this
Post new topicReply to topic View previous topic :: View next topic
Wordpress plugin hacked - I would really like to decode this
PostPosted: Sun Apr 03, 2011 2:35 am Reply with quote
meedt1
Beginner
Beginner
Joined: Apr 03, 2011
Posts: 2




<?php // This file is protected by copyright law and provided under license. Reverse engineering of this file is strictly prohibited.
$OOO0O0O00=__FILE__;$O00O00O00=__LINE__;$OO00O0000=36052;eval((base64_decode('JE8wMDBPME8wMD1mb3BlbigkT09PME8wTzAwLCdyYicpO3doaWxlKC0tJE8wME8wME8wMClmZ2V0cygkTzAwME8wTzAwLDEwMjQpO2ZnZXRzKCRPMDAwTzBPMDAsNDA5Nik7JE9PMDBPMDBPMD0oYmFzZTY0X2RlY29kZShzdHJ0cihmcmVhZCgkTzAwME8wTzAwLDM3MiksJ3k1R3IyQXBGTlpjaDBqOGlneEV0V2U5bnd6WUNsZmJzUE9ScTRUSW1hM01TL2RRVStWQjFLdUR2N0hrNlhKTG89JywnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLycpKSk7ZXZhbCgkT08wME8wME8wKTs=')));return;?>
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
View user's profile Send private message
PostPosted: Sun Apr 03, 2011 2:44 am Reply with quote
johnburn
Advanced user
Advanced user
Joined: Jan 14, 2011
Posts: 199
Location: Malaysia




Code:
<?php

if ( preg_match('#'.basename(__FILE__).'#', $_SERVER['PHP_SELF']) ) { die('You are not allowed to call this page directly.');}

if (!function_exists('memory_get_usage')) :

function memory_get_usage( $real_usage = false )

{

return false;

}

endif;

class Functions

{

var $main;

function Functions()

{

}

function createDir( $dirName, $permit = 0777 )

{

global $wpdb, $pageFlipError;

$dir = substr( $dirName, strlen( ABSPATH ) );

if ( !is_dir( $dirName ) )

{

if ( !wp_mkdir_p( $dirName ) )

{

$txt = __('Directory', 'pageFlip').' <strong>'.$dir.'</strong> '.__("didn't exist. Please create directory with permission 777 manually!", 'pageFlip').'<br />';

$pageFlipError = $pageFlipError . $this->errorMessage( $txt );

return false;

}

}

if ( !is_writeable( $dirName ) || !is_readable( $dirName ) )

{

$txt = __('Directory', 'pageFlip').' <strong>'.$dir.'</strong> '.__('is not writeable! Please set 777 permission.', 'pageFlip').'<br />';

$pageFlipError = $pageFlipError . $this->errorMessage( $txt );

return false;

}

if ( $this->checkSafeMode() && fileowner ( $dirName ) !== getmyuid () )

{

rmdir( $dirName );

$txt = __('Please create ', 'pageFlip').' <strong>'.$dir.'</strong> '.__('directory with permission 777 manually.', 'pageFlip').'<br />';

$pageFlipError = $pageFlipError . $this->errorMessage( $txt );

return false;

}

return true;

}

function imgSize( $width, $height, $thumbWidth = '', $thumbHeight = '' )

{

if( $thumbWidth === '' ) $thumbWidth = $this->main->thumbWidth;

if( $thumbHeight === '' ) $thumbHeight = $this->main->thumbHeight;

if( $width > $thumbWidth )

{

$photoSize['width'] = $thumbWidth;

$photoSize['height'] = round( $height * $thumbWidth / $width );

if( $photoSize['height'] > $thumbHeight )

{

$photoSize['width'] = round( $photoSize['width'] * $thumbHeight / $photoSize['height'] );

$photoSize['height'] = $thumbHeight;

}

}

else

{

if( $height > $thumbHeight )

{

$photoSize['height'] = $thumbHeight;

$photoSize['width'] = round( $width * $photoSize['height'] / $height );

}

else

{

$photoSize['width'] = $width;

$photoSize['height'] = $height;

}

}

return $photoSize;

}

function printImg( $img, $alt = '', $width = '', $height = '', $pageList = false )

{

if ($width === '') $width = $this->main->thumbWidth;

if ($height === '') $height = $this->main->thumbHeight;

if ($img == '')

return ' ;;';

$pathParts = pathinfo($img);

preg_match('/.*\.(.*)$/', $pathParts['basename'], $fileExt);

$result = '';

switch (strtolower( $fileExt[1] ))

{

case 'swf':

if( $pageList == false )

$result = '<script src="'.$this->main->jsUrl.'AC_RunActiveContent.js" type="text/javascript"></script>' . "\n" .

'<script type="text/javascript">' . "\n" .

' //<![CDATA[' . "\n" .

' AC_FL_RunContent( ' .

'\'codebase\',' .

'\'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0\',' .

'\'width\',' .

'\'' . $width . '\',' .

'\'height\',' .

'\'' . $height . '\',' .

'\'src\',' .

'\'' . $pathParts['dirname'] . '/' . $fileExt[0] . '\',' .

'\'quality\',' .

'\'high\',' .

'\'pluginspage\',' .

'\'http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash\',' .

'\'movie\',' .

'\'' . $pathParts['dirname'] . '/' . $fileExt[0] . '\'' .

'); //end AC code' . "\n" .

' //]]>' . "\n" .

'</script>' . "\n" .

'<noscript>';

$result .= '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="'.$width.'" height="'.$height.'">' . "\n" .

' <param name="movie" value="' . $img . '" />' . "\n" .

' <param name="quality" value="high" />' . "\n" .

' <embed src="' . $img . '" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="'.$width.'" height="'.$height.'"></embed>' . "\n" .

'</object>';

if ($pageList == false)

$result .= '</noscript>';

break;

default:

$thumb = $this->getThumb($img);

if ( !ini_get('allow_url_fopen') || ini_get('allow_url_fopen') == 'Off' )

$photoSize = array( 'width' => $width, 'height' => $height );

else

{

$imageSize = $this->getImageSize($thumb);

if ( !$imageSize )

return __('No image', 'pageFlip');

$photoSize = $this->imgSize( $imageSize[0], $imageSize[1], $width, $height );

}

$result = "<img src=\"{$thumb}\" width=\"{$photoSize['width']}\" height=\"{$photoSize['height']}\" alt=\"{$alt}\" />";

}

return $result;

}

function img_resize( $src, $dest, $width, $height, $rgb=0xFFFFFF, $quality=100 )

{

if ( !file_exists($src) || !is_file($src) )

{

echo " $src - file not found. ";

return false;

}

$size = @getimagesize( $src );

if ( $size === false )

{

echo ' Invalid image. ';

return false;

}

$format = strtolower( substr( $size['mime'], strpos( $size['mime'], '/' ) + 1 ) );

$icfunc = "imagecreatefrom" . $format;

if ( !function_exists( $icfunc ) )

{

echo " $icfunc() - function not exists. ";

return false;

}

$x_ratio = $width / $size[0];

$y_ratio = $height / $size[1];

$ratio = min( $x_ratio, $y_ratio );

$use_x_ratio = ( $x_ratio == $ratio );

$new_width = $use_x_ratio ? $width : floor( $size[0] * $ratio );

$new_height = !$use_x_ratio ? $height : floor( $size[1] * $ratio );

$new_left = $use_x_ratio ? 0 : floor( ( $width - $new_width ) / 2 );

$new_top = !$use_x_ratio ? 0 : floor( ( $height - $new_height ) / 2 );

$memoryNeed = $width * $height * 5 + $size[0] * $size[1] * 5 + 1048576;

if ( $memoryNeed > $this->get_freeMemory() )

{

$oldLimit = $this->mToBytes( @ini_get('memory_limit') );

$newLimit = $memoryNeed + memory_get_usage();

if ( $newLimit > $oldLimit )

@ini_set( 'memory_limit', $this->bytesToM($newLimit) );

}

$isrc = $icfunc( $src );

if( !$isrc )

{

echo " $icfunc() error. ";

return false;

}

$idest = imagecreatetruecolor( $width, $height );

if( $idest === false )

{

echo " imagecreatetruecolor() error. ";

return false;

}

imagefill( $idest, 0, 0, $rgb );

imagecopyresampled( $idest, $isrc, $new_left, $new_top, 0, 0,

$new_width, $new_height, $size[0], $size[1] );

if ( imagejpeg($idest, $dest, $quality) )

{

@chmod($dest, 0644);

}

else

{

echo " imagejpeg() error. ";

return false;

}

imagedestroy( $isrc );

imagedestroy( $idest );

return true;

}

function splitImage( $src, $quality=75 )

{

if ( !file_exists( $src ) ) return false;

$prefix = $this->randStr( 5 );

do {

$str = $this->randStr( 5 );

$destFiles = array( 0 => $this->main->imagesPath . '/p1_' . $str . '_' . basename( $src ),

1 => $this->main->imagesPath . '/p2_' . $str . '_' . basename( $src ) );

}

while( file_exists( $destFiles[0] ) || file_exists( $destFiles[1] ) );

$size = @getimagesize( $src );

if ( $size === false ) return false;

$format = strtolower( substr( $size['mime'], strpos( $size['mime'], '/' ) + 1 ) );

$icfunc = "imagecreatefrom" . $format;

if ( !function_exists( $icfunc ) ) return false;

$width[0] = ceil( $size[0] / 2 );

$width[1] = $size[0] - $width[0];

$left = array( 0 => 0, 1 => $width[0] );

$isrc = $icfunc( $src );

if( !$isrc ) return false;

foreach( $destFiles as $id=>$dest )

{

$idest = imagecreatetruecolor( $width[$id], $size[1] );

if( $idest === false ) return false;

imagecopyresampled( $idest, $isrc, 0, 0, $left[$id], 0,

$width[$id], $size[1], $width[$id], $size[1] );

if ( imagejpeg($idest, $dest, $quality) )

{

@chmod($dest, 0644);

}

else

{

return false;

}

imagedestroy( $idest );

$thumbName = $this->main->imagesPath . '/t_' . basename( $dest );

$newSize = $this->imgSize( $width[$id], $size[1], $this->main->thumbWidth, $this->main->thumbHeight );

$this->img_resize( $dest, $thumbName, $newSize['width'], $newSize['height'] );

}

imagedestroy( $isrc );

return $destFiles;

}

function buildImage( $images, $page, $width, $height, $layoutId, $quality=75 )

{

do

{

$destFile = $this->main->imagesPath . '/fe_' . $this->randStr() . '.jpg';

}

while( file_exists( $destFile ) );

$idest = imagecreatetruecolor( $width, $height );

if( $idest === false ) return false;

imagefill( $idest, 0, 0, $page->frameColor );

$padding = ceil( $page->frameSize / 2 );

$areaX = $areaY = $padding;

$areaW = $width - $page->frameSize;

$areaH = $height - $page->frameSize;

foreach( $this->main->layouts[(int)$layoutId]->areas as $area )

{

if( empty( $images[(int)$area->id] ) ) continue;

$size = @getimagesize( $images[(int)$area->id] );

if ( $size === false ) continue;

$format = strtolower( substr( $size['mime'], strpos( $size['mime'], '/' ) + 1 ) );

$icfunc = "imagecreatefrom" . $format;

if ( !function_exists( $icfunc ) ) continue;

$isrc = $icfunc( $images[(int)$area->id] );

if( !$isrc ) continue;

$curAreaX = ceil( $area->X * $areaW ) + $areaX + $padding;

$curAreaY = ceil( $area->Y * $areaH ) + $areaY + $padding;

$curAreaW = ceil( $area->W * $areaW ) - 2 * $padding;

$curAreaH = ceil( $area->H * $areaH ) - 2 * $padding;

$srcX = 0;

$srcY = 0;

$srcW = $size[0];

$srcH = $size[1];

$dstX = $curAreaX;

$dstY = $curAreaY;

$dstW = $curAreaW;

$dstH = $curAreaH;

$coefArea = $curAreaW / $curAreaH;

$coefImg = $size[0] / $size[1];

switch( $page->imgs[(int)$area->id]->scaling )

{

case 'scaleToFit' :

{

if( $coefArea < $coefImg )

{

$dstH = ceil( $dstW / $coefImg );

$dstY += ceil( ( $curAreaH - $dstH ) / 2 );

}

else

{

$dstW = ceil( $dstH * $coefImg );

$dstX += ceil( ( $curAreaW - $dstW ) / 2 );

}

} break;

case 'scaleToFill' :

{

if( $coefArea > $coefImg )

{

$srcH = ceil( $srcW / $coefArea );

$srcY = ceil( ( $size[1] - $srcH ) / 2 );

}

else

{

$srcW = ceil( $srcH * $coefArea );

$srcX = ceil( ( $size[0] - $srcW ) / 2 );

}

} break;

case 'doNotScale' :

{

$srcX = (int)$page->imgs[(int)$area->id]->x;

$srcY = (int)$page->imgs[(int)$area->id]->y;

$srcW = $dstW;

$srcH = $dstH;

} break;

}

imagecopyresampled( $idest, $isrc, $dstX, $dstY, $srcX, $srcY, $dstW, $dstH, $srcW, $srcH );

imagedestroy( $isrc );

}

if( !imagejpeg( $idest, $destFile, $quality ) ) return false;

imagedestroy( $idest );

$destFile = basename( $destFile );

$thumbName = $this->main->imagesPath.'/t_'.$destFile;

$newSize = $this->imgSize( $width, $height, $this->main->thumbWidth, $this->main->thumbHeight );

$this->img_resize( $this->main->imagesPath.'/'.$destFile, $thumbName, $newSize['width'], $newSize['height'] );

return $destFile;

}

function getSplitImageName( $imageName )

{

$imageName = basename($imageName);

preg_match( "/^p(1|2)_[a-zA-Z0-9]{5}_([a-zA-Z0-9\._]*)$/", $imageName, $srcImageName );

return $srcImageName[2];

}

function getImageSize( $filename )

{

$filename = str_replace($this->main->siteURL.'/', ABSPATH, $filename);

if ( file_exists($filename) && is_file($filename) || $this->isUrl($filename) )

return @getimagesize($filename);

}

function getThumb( $image )

{

$pathParts = pathinfo($image);

if ( $pathParts['dirname'] == ($this->main->plugin_url . $this->main->imagesDir) && $this->getExt($image) !== 'swf' )

$thumb = $pathParts['dirname'] . '/t_' . $pathParts['basename'];

else

$thumb = $image;

return $thumb;

}

function getFullImage( $thumb, $type = 'url' )

{

$pathParts = pathinfo($thumb);

if ( $pathParts['dirname'] == ($this->main->plugin_url . $this->main->imagesDir) && $this->getExt( $thumb ) !== 'swf' )

$image = $pathParts['dirname'].'/' . str_replace( 't_', '', $pathParts['basename'] );

else

$image = $thumb;

if ( $type == 'path' )

$image = $this->main->imagesPath . basename( $image );

return $image;

}

function getResized( $name, $options=array() )

{

$name = basename($name);

$path = $this->main->imagesPath . $name;

$defaults = array(

'type' => 'url',

'max_width' => 160,

'max_height' => 240,

'background' => '0xFFFFFF',

'quality' => 90,

);

$options = array_merge($defaults, $options);

$options['background'] = hexdec(preg_replace('/^0x(.*)/', '$1', $options['background']));

$options['background'] = sprintf('%x', $options['background']);

if ( empty($options['width']) || empty($options['height']) )

{

list($width, $height) = $this->getImageSize($path);

$new_size = $this->imgSize($width, $height, $options['max_width'], $options['max_height']);

}

else

{

$new_size['width'] = &$options['width'];

$new_size['height'] = &$options['height'];

}

$new_width = &$new_size['width'];

$new_height = &$new_size['height'];

$new_name = 'q_'.$options['quality'].'_'.$new_width.'x'.$new_height.'_'.$options['background'].'_'.$name;

$new_path = $this->main->imagesPath . $new_name;

if ( !file_exists($new_path) )

{

if ($this->getExt($path) != 'swf')

$this->img_resize($path, $new_path, $new_width, $new_height, hexdec($options['background']), $options['quality']);

}

return

$options['type'] == 'url'

? $this->main->imagesUrl . $new_name

: $new_path;

}

function getExt( $filename )

{

preg_match('/.*\.(.*)$/', $filename, $fileExt);

return $fileExt[1];

}

function printHeader( $text )

{

return "<h2>".$text."</h2>";

}

function randStr( $length = 'rand', $max = 6, $min = 12 )

{

if( $length == 'rand' ) $length = rand( $max, $min );

$symb = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";

$str = '';

for( $i=0;$i < $length;$i++ ) $str .= substr( $symb, rand( 0, strlen( $symb ) ), 1 );

return $str;

}

function fileName( $type, $oldName )

{

preg_match('/.*\.(.*)$/', basename($oldName), $fileExt);

return substr( $type, 0, 1 ) . '_' . $this->randStr() . '.' . $fileExt[1];

}

function checkPic( $imageName )

{

if ( dirname( $imageName ) . '/' == $this->main->imagesUrl )

{

$basename = basename($imageName);

if ( substr( $basename, 0, 2 ) == 'i_' )

return 'pageFlip';

else

if ( substr( $basename, 0, 3 ) == 'fe_' )

return 'flashEditor';

else

if ( preg_match('/^p[12]_.*/', $basename) )

return 'splitImage';

}

}

function check()

{

if( !$this->checkMemoryLimit() )

$memoryLimit = $this->warningMessage( __("Attention! It's required to have Memory Limit 16 Mb or higher for roper work of PageFlip plugin.", "pageFlip") );

else $memoryLimit = '';

return $memoryLimit;

}

function checkMemoryLimit()

{

$memory_limit = (int)substr( ini_get('memory_limit'), 0, -1 );

if ( ( $memory_limit != 0 ) && ( $memory_limit < 16 ) )

return false;

else return true;

}

function checkSafeMode()

{

if ( ( gettype( ini_get( 'safe_mode' ) ) == 'string' ) )

{

if ( strtolower( ini_get( 'safe_mode' ) ) == 'off' || (int)ini_get( 'safe_mode' ) === 0 ) return false;

else return true;

}

else

return (bool)ini_get( 'safe_mode' );

}

function checkPermit( $dir )

{

if( empty( $dir ) ) $dir = $this->main->plugin_path;

$permitions = @fileperms( $dir );

$permitions = decoct( $permitions );

return substr( $permitions, strlen( $permitions )-3, strlen( $permitions ) );

}

function removeDir( $dirName )

{

if( !is_dir($dirName) )

return true;

$delete_dir = opendir($dirName);

chdir( $dirName );

while ( $delete = readdir($delete_dir) )

{

if( is_dir($delete) && ( $delete !== "." ) && ( $delete !== ".." ) )

$del_dir_names[] = $delete;

if( is_file($delete) )

$del_file_names[] = $delete;

}

if ( is_dir("0/") )

$del_dir_names[] = "0/";

if ( !empty($del_file_names) )

{

foreach ($del_file_names as $delete_this_file)

unlink( $dirName . $delete_this_file );

}

if ( !empty($del_dir_names) )

{

foreach ($del_dir_names as $delete_this_dir)

$this->removeDir( $dirName . $delete_this_dir .'/' );

}

closedir( $delete_dir );

if( rmdir($dirName) )

return true;

else

return false;

}

function getImageUrl( $filename )

{

if ( $this->isUrl($filename) )

return $filename;

else

return $this->main->plugin_url . $this->main->imagesDir . '/' . $filename;

}

function isUrl( $url )

{

return eregi("^http:\/\/[-0-9a-z\._]+.*$", trim( $url ));

}

function checkImage( $imageName )

{

$imageName = basename( $imageName );

if (!preg_match('/.*\.(jpg)|(jpeg)|(gif)|(png)|(swf)$/i', $imageName, $m))

{

echo '<strong>'.$imageName.'</strong> - <strong>' . __('Error', 'pageFlip') . '</strong>: ' . __('Wrong file type', 'pageFlip') . '<br />';

return false;

}

return true;

}

function checkTable( $tableName, $fields )

{

global $wpdb;

$sql = "SHOW COLUMNS FROM `{$tableName}`";

$columns = $wpdb->get_results($sql, ARRAY_A);

if ( $columns === false )

{

echo "<div>{$wpdb->last_error}<br />\nSQL: {$wpdb->last_query}</div>\n";

return false;

}

$existsFields = array();

foreach ( $columns as $column )

$existsFields[] = $column['Field'];

foreach ( $fields as $field => $prop )

{

if( !in_array( $field, $existsFields ) )

$wpdb->query( "ALTER TABLE `{$tableName}` ADD `{$field}` {$prop}" );

}

}

function createTable( $tableName, $fields )

{

global $wpdb;

if( $wpdb->get_var( "SHOW TABLES LIKE '".$tableName."'" ) != $tableName )

{

$columns = '';

foreach( $fields as $field=>$prop )

{

if( $columns != '' ) $columns .= ', ';

$columns .= '`'.$field.'` '.$prop.'';

}

$sql = "CREATE TABLE " . $tableName . " (".$columns.");";

$wpdb->query( $sql );

}

}

function navigationBar( $page = '', $imgPerPage = '', $type = 'pageFlip', $adParam = '', $gallery = 0 )

{

global $wpdb;

if( (int)$page < 1 ) $page = 1;

$countNumbers = 7;

$sql = $this->sqlImgList( 'count', $type, $gallery );

$countImg = $wpdb->get_var( $sql );

settype( $countImg, 'integer');

settype( $imgPerPage, 'integer');

if( $imgPerPage < 1 )

$imgPerPage = ( $countImg > 0 ) ? $countImg : 1;

$countPages = ceil( $countImg / $imgPerPage );

if( $page > $countPages ) $page = $countPages;

if( $page > 1 ) $left = $this->main->html->navigationLink( '&lt;&lt;', '1' , $adParam ) . ' ;;' . $this->main->html->navigationLink( '&lt;', ( $page - 1 ) , $adParam ) . ' ;;';

else $left = '';

if( $page < $countPages ) $right = ' ;;' . $this->main->html->navigationLink( '&gt;', ( $page + 1 ) , $adParam ) . ' ;;' . $this->main->html->navigationLink( '&gt;&gt;', $countPages , $adParam );

else $right = '';

if( $page + floor( $countNumbers / 2 ) > $countPages ) $minus = $page + 2 * floor( $countNumbers / 2 ) - $countPages;

else $minus = floor( $countNumbers / 2 );

$start = $page - $minus;

if( $start < 1 ) $start = 1;

$bar = '';

if( $countPages > 1 )

for( $i = $start;$i < $start + $countNumbers;$i++ )

{

if( $i > $countPages ) break;

if( $bar !== '' ) $bar .= ' ;;';

if( (int)$i === (int)$page ) $bar .= $i;

else $bar .= $this->main->html->navigationLink( $i, $i , $adParam );

}

$bar = $left . $bar . $right . ' ;;' . $this->imagesOnPage();

$result = array(

'bar' => $bar,

'page' => $page

);

return $result;

}

function galleryJumpList( $galleryId )

{

global $wpdb;

$galleryList = '';

$sql = "SELECT `id`, `name` FROM `".$this->main->table_gal_name."` ORDER BY `name` ASC";

$galleries = $wpdb->get_results( $sql, ARRAY_A );

if( count( $galleries ) > 0 )

foreach( $galleries as $gallery )

{

$galleryList .= '<option value="'.$gallery['id'].'"';

if( (int)$galleryId === (int)$gallery['id'] ) $galleryList .= ' selected="selected"';

$galleryList .= '>'.$gallery['name'].' </option>' . "\n";

}

$galleryList .= '<option value="0"';

if( (int)$galleryId === 0 ) $galleryList .= ' selected="selected"';

$galleryList .= '>'.__('Unsorted', 'pageFlip').' </option>' . "\n";

return $galleryList;

}

function imagesOnPage( )

{

$imgOnPage = get_option( 'pageFlip_imgPerPage' );

if( (string)$imgOnPage == '' )

{

$imgOnPage = $this->main->itemsPerPage[0]['value'];

add_option( 'pageFlip_imgPerPage', $imgOnPage, '', 'no' );

}

$id = rand();

$result = '<select size="1" name="itemsPerPage_' . $id . '" id="itemsPerPage_' . $id . '" style="font-size:9px; height: 19px;" onchange="itemsPerPage(this);">';

foreach( $this->main->itemsPerPage as $itemsPerPage )

{

$result .= '<option value="' . $itemsPerPage['value'] . '"';

$result .= ( (int)$itemsPerPage['value'] === (int)$imgOnPage ) ? ' selected="selected"' : '';

$result .= '>' . $itemsPerPage['label'] . '</option>';

}

$result .= '</select>';

return $result;

}

function sqlImgList( $typeQuery, $typeList, $gallery = 0 )

{

global $wpdb;

switch( $typeList )

{

case 'WPMedia':

$result['count'] = "SELECT COUNT(*) FROM `{$wpdb->postmeta}` WHERE `meta_key` = '_wp_attached_file' AND (`meta_value` LIKE '%.jpg' OR `meta_value` LIKE '%.jpeg' OR `meta_value` LIKE '%.gif' OR `meta_value` LIKE '%.swf')";

$result['list'] = "SELECT `post_id` FROM `{$wpdb->postmeta}` WHERE `meta_key` = '_wp_attached_file' AND (`meta_value` LIKE '%.jpg' OR `meta_value` LIKE '%.jpeg' OR `meta_value` LIKE '%.gif' OR `meta_value` LIKE '%.swf') ORDER BY `meta_id` DESC ";

break;

case 'NGGallery':

$result['count'] = "SELECT COUNT(*) FROM `{$wpdb->prefix}ngg_pictures` WHERE `galleryId` = '{$gallery}'";

$result['list'] = "SELECT `pid`, `filename`, `description`, `imagedate`, `alttext`, `galleryid` FROM `{$wpdb->prefix}ngg_pictures` WHERE `galleryId` = '{$gallery}' ORDER BY `imagedate` DESC ";

break;

default:

$result['count'] = "SELECT COUNT(*) FROM `{$this->main->table_img_name}` WHERE `type` = 'img' AND `gallery` = '{$gallery}'";

$result['list'] = "SELECT `id`, `name`, `filename`, `date` FROM `{$this->main->table_img_name}` WHERE `type` = 'img' AND `gallery` = '{$gallery}' ORDER BY `name` ASC, `date` DESC ";

break;

}

return $result[$typeQuery];

}

function getGalleryPreview( $galleryId, $type = 'pageFlip' )

{

global $wpdb;

switch( $type )

{

case 'NGGallery' : {

$sql = "SELECT `path`, `previewpic` FROM `{$wpdb->prefix}ngg_gallery` WHERE `gid` = '{$galleryId}'";

$gallery = $wpdb->get_row( $sql, ARRAY_A );

$sql = "SELECT `filename` FROM `{$wpdb->prefix}ngg_pictures` WHERE `pid` = '{$gallery['previewpic']}'";

$imgName = $wpdb->get_var( $sql );

if( !$imgName )

{

$sql = "SELECT `filename` FROM `{$wpdb->prefix}ngg_pictures` WHERE `galleryid` = '{$galleryId}' ORDER BY RAND() LIMIT 1";

$imgName = $wpdb->get_var( $sql );

}

$result = $this->main->siteURL.'/' . $gallery['path'] . '/thumbs/thumbs_' . $imgName;

} break;

default : {

$sql = "SELECT `filename` FROM `{$this->main->table_img_name}` WHERE `type` = 'img' AND `gallery` = '{$galleryId}' ORDER BY RAND() LIMIT 1";

$result = $this->main->functions->getImageUrl( $wpdb->get_var( $sql ) );

}

}

return $result;

}

function loadLayouts()

{

$xml = '<?xml version="1.0" ?>' .

'<Layouts>';

foreach( $this->main->layouts as $layout )

$xml .= $layout->asXML();

$xml .= '</Layouts>';

return $xml;

}

function loadAlbumXml( $bookId )

{

$book = new Book( $bookId );

return '<?xml version="1.0" encoding="UTF-8"?>' . $book->album->asXML();

}

function saveAlbumXML( $bookId )

{

$book = new Book( $bookId );

$book->album->parseFromXML( urldecode( $_POST['xml'] ) );

foreach( $book->album->pages as $page )

{

if ($page->modified == 'true')

{

unset( $newPage );

unset( $images );

foreach ( $page->imgs as $img )

$images[] = $this->getFullImage( $book->album->images[$img->id]->thumb );

$newPage = $this->buildImage( $images, $page, $book->album->pageWidth, $book->album->pageHeight, $page->template );

if( $newPage )

{

$addPage = new Page( $this->main->imagesUrl . $newPage, $page->id, '' );

if( $this->checkPic( $book->pages[(int)$page->id]->image ) == 'flashEditor' )

{

$oldPage = $this->main->plugin_path . $this->main->imagesDir . '/' . basename( $book->pages[(int)$page->id]->image );

@unlink( $oldPage );

if( $this->getExt( $oldPage ) != "swf" )

{

$thumb = $this->main->plugin_path . $this->main->imagesDir . '/t_' . basename( $book->pages[(int)$page->id]->image );

@unlink( $thumb );

}

}

$book->pages[(int)$page->id] = $addPage;

}

}

}

$book->save();

}

function myErrorHandler( $errNo, $errStr, $errFile, $errLine )

{

if( str_replace( '\\', '/', dirname( $errFile ) ) !== str_replace( '\\', '/', WP_PLUGIN_DIR . '/' . $this->main->plugin_dir ) ) return true;

switch ($errNo)

{

case E_ERROR:

case E_USER_ERROR:

{

$txt = __( '<b>Fatal error</b>: '.$errStr . ' on line ' . $errLine . ' in file ' . $errFile );

echo $this->errorMessage( $txt );

}

break;

case E_WARNING:

case E_USER_WARNING:

{

$txt = __( '<b>Warning</b>: '.$errStr . ' on line ' . $errLine . ' in file ' . $errFile );

echo $this->errorMessage( $txt );

}

break;

default:

{

$txt = __( '<b>Unknown error type</b>: '.$errStr . ' on line ' . $errLine . ' in file ' . $errFile );

echo $this->errorMessage( $txt );

}

break;

}

return true;

}

function errorMessage( $message )

{

return '<div class="wrap"><div class="error" id="error"><p>' . $message. '</p></div></div>' . "\n";

}

function warningMessage( $message )

{

return '<div class="wrap"><div class="updated fade" id="message"><p>' . $message . '</p></div></div>' . "\n";

}

function imgWriteText( $imageFile, $text, $style = array('left'=>0, 'top'=>0, 'fontFamily'=>'Helvetica', 'fontSize'=>14, 'color'=>'000000'), $rename = false )

{

global $pageFlip;

$path = pathinfo($imageFile);

list($imageWidth, $imageHeight) = $size = $this->getImageSize($imageFile);

$type = str_replace('image/', '', strtolower($size['mime']));

$imagecreate = 'imagecreatefrom'.$type;

$image = $imagecreate($imageFile);

if ( preg_match('/[#]*(..)(..)(..)/', $style['color'], $m) )

{

$r = hexdec($m[1]);

$g = hexdec($m[2]);

$b = hexdec($m[3]);

}

else

{

$r = 0xFF;$g = 0xFF;$b = 0xFF;

}

$text = html_entity_decode(stripslashes($text), ENT_COMPAT, 'UTF-8');

imagefttext($image, $style['fontSize'] * 0.75, 0, $style['left'], $style['top'] + $style['fontSize'] * 0.75, imagecolorallocate($image, $r, $g, $b), PAGEFLIP_DIR.'/fonts/'.$style['fontFamily'].'.ttf', $text);

if ($rename)

{

do {

$newName = $path['dirname'].'/'.$path['filename']. $this->randStr(1) . '.' . $path['extension'];

} while ( file_exists($newName) );

copy($imageFile, $newName);

$imageFile = $newName;

}

else

{

$imageBackup = $imageFile.'.bak';

if (!file_exists($imageBackup))

rename($imageFile, $imageBackup);

}

$imagewrite = 'image'.$type;

$imagewrite($image, $imageFile, 90);

if ( substr(basename($imageFile), 0, 2) != 'z_' )

{

$thumbName = $path['dirname'].'/'. 't_'.basename($imageFile);

$newSize = $this->imgSize( $imageWidth, $imageHeight, $pageFlip->thumbWidth, $pageFlip->thumbHeight );

$this->img_resize( $imageFile, $thumbName, $newSize['width'], $newSize['height'] );

}

return $imageFile;

}

function mToBytes($size)

{

$k = array(

'' => 1,

'B' => 1,

'K' => 1024,

'M' => 1048576,

'G' => 1073741824,

'T' => 1099511627776

);

if ( preg_match('/([\d\.]+)\s*([BKMGT]|)\w*/i', $size, $m) )

return (float)$m[1] * $k[strtoupper($m[2])];

else

return $size;

}

function bytesToM($size, $units = 'M', $precision = 0)

{

$k = array(

'' => 1,

'B' => 1,

'K' => 1024,

'M' => 1048576,

'G' => 1073741824,

'T' => 1099511627776

);

$units = strtoupper($units[0]);

return round($size / $k[$units], $precision) . $units;

}

function bytesToK($size, $units = 'K', $precision = 0)

{

return bytesToM($size, $units, $precision);

}

function get_freeMemory()

{

return $this->mToBytes( ini_get('memory_limit') ) - memory_get_usage();

}

}


?>
View user's profile Send private message
PostPosted: Sun Apr 03, 2011 3:08 am Reply with quote
meedt1
Beginner
Beginner
Joined: Apr 03, 2011
Posts: 2




Thanks so much, johnburn!

Does this look malicious at all? Should I be concerned that it may have compromised my Wordpress system? Or does it even look to be hacked after all? I have since removed that plugin.

Any feedback would be greatly appreciated. You guys are amazing! Smile
View user's profile Send private message
PostPosted: Sun Apr 03, 2011 11:59 am Reply with quote
johnburn
Advanced user
Advanced user
Joined: Jan 14, 2011
Posts: 199
Location: Malaysia




I just take a glance at the code and As far as I'm concerned it is safe with nothing malicious in it.
View user's profile Send private message
what is name this plugin??
PostPosted: Tue Apr 12, 2011 1:27 pm Reply with quote
prashant
Beginner
Beginner
Joined: Apr 03, 2011
Posts: 4




Any One tell me Which plugin you are hack?? which plugin u talking about?? what is name this plugin??
View user's profile Send private message Visit poster's website
Wordpress plugin hacked - I would really like to decode this
www.waraxe.us Forum Index -> PHP script decode requests
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
All times are GMT
Page 1 of 1

Post new topicReply to topic


Powered by phpBB © 2001-2008 phpBB Group



Space Raider game for Android, free download - Space Raider gameplay video - Zone Raider mobile games
All logos and trademarks in this site are property of their respective owner. The comments and posts are property of their posters, all the rest (c) 2004-2024 Janek Vind "waraxe"
Page Generation: 0.060 Seconds