ai-bolit-hoster.php 1.3 MB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747
  1. <?php
  2. ///////////////////////////////////////////////////////////////////////////
  3. // Version: HOSTER-30.1.1
  4. // Copyright 2018-2020 CloudLinux Software Inc.
  5. ///////////////////////////////////////////////////////////////////////////
  6. ini_set('memory_limit', '1G');
  7. ini_set('xdebug.max_nesting_level', 500);
  8. define('SHORT_PHP_TAG', strtolower(ini_get('short_open_tag')) == 'on' || strtolower(ini_get('short_open_tag')) == 1);
  9. //////////////////////////////////////////////////////////////////////////
  10. $vars = new Variables();
  11. $lang = 'RU';
  12. $snum = '';
  13. if (isCli()) {
  14. if (strpos('--eng', $argv[$argc - 1]) !== false) {
  15. $lang = 'EN';
  16. }
  17. } else {
  18. define('NEED_REPORT', true);
  19. }
  20. Translate::setLang($lang);
  21. // put 1 for expert mode, 0 for basic check and 2 for paranoid mode
  22. // установите 1 для режима "Обычное сканирование", 0 для быстрой проверки и 2 для параноидальной проверки (диагностика при лечении сайтов)
  23. define('AI_EXPERT_MODE', 2);
  24. define('AI_HOSTER', 1);
  25. define('CLOUD_ASSIST_LIMIT', 5000);
  26. $defaults = array(
  27. 'path' => __DIR__,
  28. 'scan_all_files' => (AI_EXPERT_MODE == 2), // full scan (rather than just a .js, .php, .html, .htaccess)
  29. 'scan_delay' => 0, // delay in file scanning to reduce system load
  30. 'max_size_to_scan' => '650K',
  31. 'max_size_to_cloudscan' => '650K',
  32. 'no_rw_dir' => 0,
  33. 'skip_ext' => '',
  34. 'skip_cache' => false,
  35. 'report_mask' => JSONReport::REPORT_MASK_FULL,
  36. 'use_template_in_path' => false,
  37. );
  38. define('DEBUG_MODE', 0);
  39. define('DEBUG_PERFORMANCE', 0);
  40. define('AIBOLIT_START_TIME', time());
  41. define('START_TIME', microtime(true));
  42. define('DIR_SEPARATOR', '/');
  43. define('AIBOLIT_MAX_NUMBER', 200);
  44. define('MIN_FILE_SIZE_FOR_CHECK', 14); //14b - The minimum possible file size for the initial checking
  45. define('MAX_FILE_SIZE_FOR_CHECK', 268435456); //256Mb - The maximum possible file size for the initial checking
  46. define('DOUBLECHECK_FILE', 'AI-BOLIT-DOUBLECHECK.php');
  47. if ((isset($_SERVER['OS']) && stripos('Win', $_SERVER['OS']) !== false)) {
  48. define('DIR_SEPARATOR', '\\');
  49. }
  50. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  51. if (!(function_exists("file_put_contents") && is_callable("file_put_contents"))) {
  52. echo "#####################################################\n";
  53. echo "file_put_contents() is disabled. Cannot proceed.\n";
  54. echo "#####################################################\n";
  55. exit;
  56. }
  57. define('AI_VERSION', 'HOSTER-30.1.1');
  58. ////////////////////////////////////////////////////////////////////////////
  59. $l_Res = '';
  60. $g_SpecificExt = false;
  61. $g_UpdatedJsonLog = 0;
  62. $g_FileInfo = array();
  63. $g_Iframer = array();
  64. $g_PHPCodeInside = array();
  65. $g_Base64 = array();
  66. $g_HeuristicDetected = array();
  67. $g_HeuristicType = array();
  68. $g_UnixExec = array();
  69. $g_UnsafeFilesFound = array();
  70. $g_HiddenFiles = array();
  71. $g_RegExpStat = array();
  72. error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING);
  73. srand(time());
  74. set_time_limit(0);
  75. ini_set('max_execution_time', '900000');
  76. ini_set('realpath_cache_size', '16M');
  77. ini_set('realpath_cache_ttl', '1200');
  78. ini_set('pcre.backtrack_limit', '1000000');
  79. ini_set('pcre.recursion_limit', '200000');
  80. ini_set('pcre.jit', '1');
  81. $filter = new FileFilter();
  82. $finder = new Finder($filter);
  83. if (!function_exists('stripos')) {
  84. function stripos($par_Str, $par_Entry, $Offset = 0) {
  85. return strpos(strtolower($par_Str), strtolower($par_Entry), $Offset);
  86. }
  87. }
  88. /**
  89. * Determine php script is called from the command line interface
  90. * @return bool
  91. */
  92. function isCli() {
  93. return PHP_SAPI == 'cli';
  94. }
  95. /**
  96. * Print to console
  97. * @param mixed $text
  98. * @param bool $add_lb Add line break
  99. * @return void
  100. */
  101. function stdOut($text, $add_lb = true) {
  102. if (!isCli()) {
  103. return;
  104. }
  105. if (is_bool($text)) {
  106. $text = $text ? 'true' : 'false';
  107. } else if (is_null($text)) {
  108. $text = 'null';
  109. }
  110. if (!is_scalar($text)) {
  111. $text = print_r($text, true);
  112. }
  113. if ((!BOOL_RESULT) && (!JSON_STDOUT)) {
  114. @fwrite(STDOUT, $text . ($add_lb ? "\n" : ''));
  115. }
  116. }
  117. /**
  118. * Print progress
  119. *
  120. * @param int $num Current file
  121. * @param $par_File
  122. * @param $vars
  123. */
  124. function printProgress($num, $par_File, $vars) {
  125. global $g_Base64, $g_Iframer, $g_UpdatedJsonLog, $g_AddPrefix, $g_NoPrefix;
  126. $total_files = $vars->foundTotalFiles;
  127. $elapsed_time = microtime(true) - START_TIME;
  128. $percent = number_format($total_files ? $num * 100 / $total_files : 0, 1);
  129. $stat = '';
  130. $left_files = 0;
  131. $left_time = 0;
  132. $elapsed_seconds = 0;
  133. if ($elapsed_time >= 1) {
  134. $elapsed_seconds = round($elapsed_time, 0);
  135. $fs = floor($num / $elapsed_seconds);
  136. $left_files = $total_files - $num;
  137. if ($fs > 0) {
  138. $left_time = ($left_files / $fs); //ceil($left_files / $fs);
  139. $stat = ' [Avg: ' . round($fs, 2) . ' files/s' . ($left_time > 0 ? ' Left: ' . AibolitHelpers::seconds2Human($left_time) : '') . '] [Mlw:' . (count($vars->criticalPHP) + count($g_Base64) + count($vars->warningPHP)) . '|' . (count($vars->criticalJS) + count($g_Iframer) + count($vars->phishing)) . ']';
  140. }
  141. }
  142. $l_FN = substr($par_File, -60);
  143. $text = "$percent% [$l_FN] $num of {$total_files}. " . $stat;
  144. $text = str_pad($text, 160, ' ', STR_PAD_RIGHT);
  145. stdOut(str_repeat(chr(8), 160) . $text, false);
  146. $data = array(
  147. 'self' => __FILE__,
  148. 'started' => AIBOLIT_START_TIME,
  149. 'updated' => time(),
  150. 'progress' => $percent,
  151. 'time_elapsed' => $elapsed_seconds,
  152. 'time_left' => round($left_time),
  153. 'files_left' => $left_files,
  154. 'files_total' => $total_files,
  155. 'current_file' => substr($g_AddPrefix . str_replace($g_NoPrefix, '', $par_File), -160)
  156. );
  157. if (function_exists('aibolit_onProgressUpdate')) {
  158. aibolit_onProgressUpdate($data);
  159. }
  160. if (defined('PROGRESS_LOG_FILE') && (time() - $g_UpdatedJsonLog > 1)) {
  161. if (function_exists('json_encode')) {
  162. file_put_contents(PROGRESS_LOG_FILE, json_encode($data));
  163. } else {
  164. file_put_contents(PROGRESS_LOG_FILE, serialize($data));
  165. }
  166. $g_UpdatedJsonLog = time();
  167. }
  168. if (defined('SHARED_MEMORY')) {
  169. shmop_write(SHARED_MEMORY, str_repeat("\0", shmop_size(SHARED_MEMORY)), 0);
  170. if (function_exists('json_encode')) {
  171. shmop_write(SHARED_MEMORY, json_encode($data), 0);
  172. } else {
  173. shmop_write(SHARED_MEMORY, serialize($data), 0);
  174. }
  175. }
  176. }
  177. if (isCli()) {
  178. $cli_options = array(
  179. 'y' => 'deobfuscate',
  180. 'c:' => 'avdb:',
  181. 'm:' => 'memory:',
  182. 's:' => 'size:',
  183. 'a' => 'all',
  184. 'd:' => 'delay:',
  185. 'l:' => 'list:',
  186. 'r:' => 'report:',
  187. 'f' => 'fast',
  188. 'j:' => 'file:',
  189. 'p:' => 'path:',
  190. 'q' => 'quite',
  191. 'e:' => 'cms:',
  192. 'x:' => 'mode:',
  193. 'k:' => 'skip:',
  194. 'n' => 'sc',
  195. 'o:' => 'json_report:',
  196. 't:' => 'php_report:',
  197. 'z:' => 'progress:',
  198. 'g:' => 'handler:',
  199. 'b' => 'smart',
  200. 'u:' => 'username:',
  201. 'h' => 'help'
  202. );
  203. $cli_longopts = array(
  204. 'deobfuscate',
  205. 'avdb:',
  206. 'cmd:',
  207. 'noprefix:',
  208. 'addprefix:',
  209. 'scan:',
  210. 'one-pass',
  211. 'smart',
  212. 'with-2check',
  213. 'skip-cache',
  214. 'username:',
  215. 'no-html',
  216. 'json-stdout',
  217. 'listing:',
  218. 'encode-b64-fn',
  219. 'cloud-assist:',
  220. 'cloudscan-size:',
  221. 'with-suspicious',
  222. 'rapid-account-scan:',
  223. 'rapid-account-scan-type:',
  224. 'extended-report',
  225. 'factory-config:',
  226. 'shared-mem-progress:',
  227. 'create-shared-mem',
  228. 'max-size-scan-bytes:',
  229. 'input-fn-b64-encoded',
  230. 'use-heuristics',
  231. 'use-heuristics-suspicious',
  232. 'resident',
  233. 'detached:',
  234. 'log:',
  235. 'log-level:',
  236. 'use-template-in-path',
  237. 'ignore-list:',
  238. 'ignore-filenames:',
  239. 'only-filepaths:',
  240. 'skip-files-older:',
  241. 'skip-root-owner',
  242. 'skip-system-owner',
  243. 'follow-symlink',
  244. 'ignore-quarantine',
  245. 'quiet',
  246. 'use-filters',
  247. 'csv_report:'
  248. );
  249. $cli_longopts = array_merge($cli_longopts, array_values($cli_options));
  250. $reports = [];
  251. $options = getopt(implode('', array_keys($cli_options)), $cli_longopts);
  252. if (isset($options['h']) || isset($options['help'])) {
  253. $memory_limit = ini_get('memory_limit');
  254. echo <<<HELP
  255. Revisium AI-Bolit - an Intelligent Malware File Scanner for Websites.
  256. Usage: php {$_SERVER['PHP_SELF']} [OPTIONS] [PATH]
  257. Current default path is: {$defaults['path']}
  258. -j, --file=FILE Full path to single file to check
  259. -p, --path=PATH Directory path to scan, by default the file directory is used
  260. Current path: {$defaults['path']}
  261. --use-template-in-path Use template in path(-p, --path). For example: /home*/*/public_html
  262. -p, --listing=FILE Scan files from the listing. E.g. --listing=/tmp/myfilelist.txt
  263. Use --listing=stdin to get listing from stdin stream
  264. --extended-report To expand the report
  265. --ignore-list=FILE This file will be contain the list of ignored files when scanning.
  266. The files are base64-encoded and occupy one line for one file.
  267. --ignore-filenames=<templates> Skip files with the same name by template. Example: *.php,*abc.abc,config.*
  268. --only-filepaths=<templates> Take only the paths matching this pattern. Example: /check/*.php,*.abc
  269. --skip-files-older=UNIXTIME If set then we ignore the files created or modified earlier than the specified date
  270. --skip-root-owner If set, we skip root's owner files
  271. --skip-system-owner If set, we skip system's owner files
  272. --follow-symlink If set then we follow symlink
  273. --ignore-quarantine If set, we ignore the files in the folder ".imunify.quarantined" if root is owner of it
  274. -x, --mode=INT Set scan mode. 0 - for basic, 1 - for expert and 2 for paranoic.
  275. -k, --skip=jpg,... Skip specific extensions. E.g. --skip=jpg,gif,png,xls,pdf
  276. --scan=php,... Scan only specific extensions. E.g. --scan=php,htaccess,js
  277. --cloud-assist=TOKEN Enable cloud assisted scanning. Disabled by default.
  278. --with-suspicious Detect suspicious files. Disabled by default.
  279. --rapid-account-scan=<dir> Enable rapid account scan. Use <dir> for base db dir. Need to set only root permissions(700)
  280. --rapid-account-scan-type=<type> Type rapid account scan. <type> = NONE|ALL|SUSPICIOUS, def:SUSPICIOUS
  281. --use-heuristics Enable heuristic algorithms and mark found files as malicious.
  282. --use-heuristics-suspicious Enable heuristic algorithms and mark found files as suspicious.
  283. -r, --report=PATH
  284. -o, --json_report=FILE Full path to create json-file with a list of found malware
  285. --csv_report=FILE Full path to create csv-file with a list of found malware
  286. -l, --list=FILE Full path to create plain text file with a list of found malware
  287. --no-html Disable HTML report
  288. --encode-b64-fn Encode file names in a report with base64 (for internal usage)
  289. --input-fn-b64-encoded Base64 encoded input filenames in listing or stdin
  290. --smart Enable smart mode (skip cache files and optimize scanning)
  291. -m, --memory=SIZE Maximum amount of memory a script may consume. Current value: $memory_limit
  292. Can take shorthand byte values (1M, 1G...)
  293. -s, --size=SIZE Scan files are smaller than SIZE with signatures. 0 - All files. Current value: {$defaults['max_size_to_scan']}
  294. --max-size-scan-bytes=SIZE Scan first <bytes> for large(can set by --size) files with signatures.
  295. --cloudscan-size Scan files are smaller than SIZE with cloud assisted scan. 0 - All files. Current value: {$defaults['max_size_to_cloudscan']}
  296. -d, --delay=INT Delay in milliseconds when scanning files to reduce load on the file system (Default: 1)
  297. -a, --all Scan all files (by default scan. js,. php,. html,. htaccess)
  298. --one-pass Do not calculate remaining time
  299. --with-2check Create or use AI-BOLIT-DOUBLECHECK.php file
  300. -z, --progress=FILE Runtime progress of scanning, saved to the file, full path required.
  301. --shared-mem-progress=<ID> Runtime progress of scanning, saved to the shared memory <ID>.
  302. --create-shared-mem Need to create shared memory segment <ID> for --shared-mem-progress.
  303. -u, --username=<username> Run scanner with specific user id and group id, e.g. --username=www-data
  304. -g, --hander=FILE External php handler for different events, full path to php file required.
  305. --cmd="command [args...]" Run command after scanning
  306. --help Display this help and exit
  307. * Mandatory arguments listed below are required for both full and short way of usage.
  308. HELP;
  309. exit;
  310. }
  311. $l_FastCli = false;
  312. if ((isset($options['memory']) && !empty($options['memory']) && ($memory = $options['memory'])) || (isset($options['m']) && !empty($options['m']) && ($memory = $options['m']))) {
  313. $memory = AibolitHelpers::getBytes($memory);
  314. if ($memory > 0) {
  315. $defaults['memory_limit'] = $memory;
  316. ini_set('memory_limit', $memory);
  317. }
  318. }
  319. $avdb = '';
  320. if ((isset($options['avdb']) && !empty($options['avdb']) && ($avdb = $options['avdb'])) || (isset($options['c']) && !empty($options['c']) && ($avdb = $options['c']))) {
  321. if (file_exists($avdb)) {
  322. $defaults['avdb'] = $avdb;
  323. }
  324. }
  325. if ((isset($options['file']) && !empty($options['file']) && ($file = $options['file']) !== false) || (isset($options['j']) && !empty($options['j']) && ($file = $options['j']) !== false)) {
  326. define('SCAN_FILE', $file);
  327. }
  328. if (isset($options['deobfuscate']) || isset($options['y'])) {
  329. define('AI_DEOBFUSCATE', true);
  330. }
  331. if ((isset($options['list']) && !empty($options['list']) && ($file = $options['list']) !== false) || (isset($options['l']) && !empty($options['l']) && ($file = $options['l']) !== false)) {
  332. $reports[PlainReport::class] = $file;
  333. }
  334. if(isset($options['with-2check'])) {
  335. $reports[DoublecheckReport::class] = DOUBLECHECK_FILE;
  336. }
  337. if ((isset($options['listing']) && !empty($options['listing']) && ($listing = $options['listing']) !== false)) {
  338. if (file_exists($listing) && is_file($listing) && is_readable($listing)) {
  339. define('LISTING_FILE', $listing);
  340. }
  341. if ($listing == 'stdin') {
  342. define('LISTING_FILE', $listing);
  343. }
  344. }
  345. if ((isset($options['ignore-list']) && !empty($options['ignore-list']) && ($ignore_list_file = $options['ignore-list']) !== false)) {
  346. if (file_exists($ignore_list_file) && is_file($ignore_list_file) && is_readable($ignore_list_file)) {
  347. $filter->setIgnoreListFile($ignore_list_file);
  348. }
  349. }
  350. if ((isset($options['ignore-filenames']) && !empty($options['ignore-filenames']) && ($ignore_filenames = $options['ignore-filenames']) !== false)) {
  351. $filter->setIgnoreFilenames($ignore_filenames);
  352. }
  353. if ((isset($options['only-filepaths']) && !empty($options['only-filepaths']) && ($only_filepathes = $options['only-filepaths']) !== false)) {
  354. $filter->setOnlyFilepaths($only_filepathes);
  355. }
  356. if ((isset($options['skip-files-older']) && !empty($options['skip-files-older']) && ($skip_files_older = $options['skip-files-older']) !== false)) {
  357. $filter->setSkipFilesOlder($skip_files_older);
  358. }
  359. if (isset($options['skip-root-owner'])) {
  360. $filter->setSkipRootOwner();
  361. }
  362. if (isset($options['skip-system-owner'])) {
  363. $max_min_uid = getMaxMinUid();
  364. $vars->maxMinUid = $max_min_uid;
  365. $filter->setSkipSystemOwner($max_min_uid);
  366. unset($max_min_uid);
  367. }
  368. if (isset($options['follow-symlink'])) {
  369. $filter->setFollowSymlink();
  370. }
  371. if (isset($options['ignore-quarantine'])) {
  372. $filter->setIgnoreQuarantine();
  373. }
  374. if (isset($options['use-filters'])) {
  375. $filter->setImunifyFilters();
  376. }
  377. if ((isset($options['json_report']) && !empty($options['json_report']) && ($file = $options['json_report']) !== false) || (isset($options['o']) && !empty($options['o']) && ($file = $options['o']) !== false)) {
  378. $reports[JSONReport::class] = $file;
  379. if (!function_exists('json_encode')) {
  380. die('json_encode function is not available. Enable json extension in php.ini');
  381. }
  382. }
  383. if (isset($options['csv_report']) && !empty($options['csv_report']) && ($file = $options['csv_report']) !== false) {
  384. $reports[CSVReport::class] = $file;
  385. }
  386. if ((isset($options['php_report']) && !empty($options['php_report']) && ($file = $options['php_report']) !== false) || (isset($options['t']) && !empty($options['t']) && ($file = $options['t']) !== false)) {
  387. $reports[PHPReport::class] = $file;
  388. }
  389. $env_log = getenv('AIBOLIT_RESIDENT_LOG');
  390. $env_log_level = getenv('AIBOLIT_RESIDENT_LOG_LEVEL');
  391. if ((isset($options['log']) && !empty($options['log']) && ($log_file = $options['log']) !== false) || ($env_log !== false && ($log_file = $env_log) !== false)) {
  392. define('LOG_FILE', $log_file);
  393. }
  394. if ((isset($options['log-level']) && !empty($options['log-level']) && ($log_level = $options['log-level']) !== false) || ($env_log_level !== false && ($log_level = $env_log_level) !== false)) {
  395. define('LOG_LEVEL', $log_level);
  396. }
  397. if (defined('LOG_FILE') && !defined('LOG_LEVEL')) {
  398. define('LOG_LEVEL', 'INFO');
  399. }
  400. if ((isset($options['handler']) && !empty($options['handler']) && ($file = $options['handler']) !== false) || (isset($options['g']) && !empty($options['g']) && ($file = $options['g']) !== false)) {
  401. if (file_exists($file)) {
  402. define('AIBOLIT_EXTERNAL_HANDLER', $file);
  403. }
  404. }
  405. if ((isset($options['progress']) && !empty($options['progress']) && ($file = $options['progress']) !== false) || (isset($options['z']) && !empty($options['z']) && ($file = $options['z']) !== false)) {
  406. define('PROGRESS_LOG_FILE', $file);
  407. }
  408. if (isset($options['create-shared-mem'])) {
  409. define('CREATE_SHARED_MEMORY', true);
  410. } else {
  411. define('CREATE_SHARED_MEMORY', false);
  412. }
  413. if (isset($options['shared-mem-progress']) && !empty($options['shared-mem-progress']) && ($sh_mem = $options['shared-mem-progress']) !== false) {
  414. if (CREATE_SHARED_MEMORY) {
  415. @$shid = shmop_open((int)$sh_mem, "n", 0666, 5000);
  416. } else {
  417. @$shid = shmop_open((int)$sh_mem, "w", 0, 0);
  418. }
  419. if (!empty($shid)) {
  420. define('SHARED_MEMORY', $shid);
  421. } else {
  422. die('Error with shared-memory.');
  423. }
  424. }
  425. if ((isset($options['size']) && ($size = $options['size']) !== false) || (isset($options['s']) && ($size = $options['s']) !== false)) {
  426. $size = AibolitHelpers::getBytes($size);
  427. $defaults['max_size_to_scan'] = $size > 0 ? $size : 0;
  428. }
  429. if (isset($options['cloudscan-size']) && !empty($options['cloudscan-size']) && ($cloudscan_size = $options['cloudscan-size']) !== false) {
  430. $cloudscan_size = AibolitHelpers::getBytes($cloudscan_size);
  431. $defaults['max_size_to_cloudscan'] = $cloudscan_size > 0 ? $cloudscan_size : 0;
  432. }
  433. if (isset($options['max-size-scan-bytes']) && !empty($options['max-size-scan-bytes'])) {
  434. define('MAX_SIZE_SCAN_BYTES', AibolitHelpers::getBytes($options['max-size-scan-bytes']));
  435. } else {
  436. define('MAX_SIZE_SCAN_BYTES', 0);
  437. }
  438. if ((isset($options['username']) && !empty($options['username']) && ($username = $options['username']) !== false) || (isset($options['u']) && !empty($options['u']) && ($username = $options['u']) !== false)) {
  439. if (!empty($username) && ($info = posix_getpwnam($username)) !== false) {
  440. posix_setgid($info['gid']);
  441. posix_setuid($info['uid']);
  442. $defaults['userid'] = $info['uid'];
  443. $defaults['groupid'] = $info['gid'];
  444. } else {
  445. echo ('Invalid username');
  446. exit(-1);
  447. }
  448. }
  449. if ((isset($options['file']) && !empty($options['file']) && ($file = $options['file']) !== false) || ((isset($options['j']) && !empty($options['j']) && ($file = $options['j']) !== false) && (isset($options['q'])))) {
  450. $BOOL_RESULT = true;
  451. }
  452. if (isset($options['json-stdout'])) {
  453. define('JSON_STDOUT', true);
  454. } else {
  455. define('JSON_STDOUT', false);
  456. }
  457. if (isset($options['f'])) {
  458. $l_FastCli = true;
  459. }
  460. if (isset($options['q']) || isset($options['quite']) || isset($options['quiet'])) {
  461. $BOOL_RESULT = true;
  462. }
  463. if (isset($options['x'])) {
  464. define('AI_EXPERT', $options['x']);
  465. } else if (isset($options['mode'])) {
  466. define('AI_EXPERT', $options['mode']);
  467. } else {
  468. define('AI_EXPERT', AI_EXPERT_MODE);
  469. }
  470. if (AI_EXPERT < 2) {
  471. $g_SpecificExt = true;
  472. $defaults['scan_all_files'] = false;
  473. } else {
  474. $defaults['scan_all_files'] = true;
  475. }
  476. define('BOOL_RESULT', $BOOL_RESULT);
  477. if ((isset($options['delay']) && !empty($options['delay']) && ($delay = $options['delay']) !== false) || (isset($options['d']) && !empty($options['d']) && ($delay = $options['d']) !== false)) {
  478. $delay = (int) $delay;
  479. if (!($delay < 0)) {
  480. $defaults['scan_delay'] = $delay;
  481. }
  482. }
  483. if ((isset($options['skip']) && !empty($options['skip']) && ($ext_list = $options['skip']) !== false) || (isset($options['k']) && !empty($options['k']) && ($ext_list = $options['k']) !== false)) {
  484. $defaults['skip_ext'] = $ext_list;
  485. }
  486. if (isset($options['n']) || isset($options['skip-cache'])) {
  487. $defaults['skip_cache'] = true;
  488. }
  489. if (isset($options['scan'])) {
  490. $ext_list = strtolower(trim($options['scan'], " ,\t\n\r\0\x0B"));
  491. if ($ext_list != '') {
  492. $l_FastCli = true;
  493. $filter->setSensitiveExt($ext_list);
  494. $g_SensitiveFiles = $filter->getSensitiveExt();
  495. $g_SpecificExt = true;
  496. }
  497. }
  498. if (isset($options['cloud-assist'])) {
  499. define('CLOUD_ASSIST_TOKEN', $options['cloud-assist']);
  500. }
  501. if (isset($options['rapid-account-scan'])) {
  502. define('RAPID_ACCOUNT_SCAN', $options['rapid-account-scan']);
  503. }
  504. if (defined('RAPID_ACCOUNT_SCAN')) {
  505. if (isset($options['rapid-account-scan-type'])) {
  506. define('RAPID_ACCOUNT_SCAN_TYPE', $options['rapid-account-scan-type']);
  507. }
  508. else {
  509. define('RAPID_ACCOUNT_SCAN_TYPE', 'SUSPICIOUS');
  510. }
  511. }
  512. if (isset($options['with-suspicious'])) {
  513. define('AI_EXTRA_WARN', true);
  514. }
  515. if (isset($options['extended-report'])) {
  516. define('EXTENDED_REPORT', true);
  517. }
  518. if (isset($options['all'])||isset($options['a'])) {
  519. $defaults['scan_all_files'] = true;
  520. $g_SpecificExt = false;
  521. }
  522. if (isset($options['cms'])) {
  523. define('CMS', $options['cms']);
  524. } else if (isset($options['e'])) {
  525. define('CMS', $options['e']);
  526. }
  527. if (!defined('SMART_SCAN')) {
  528. define('SMART_SCAN', 0);
  529. }
  530. if (!defined('AI_DEOBFUSCATE')) {
  531. define('AI_DEOBFUSCATE', false);
  532. }
  533. if (!defined('AI_EXTRA_WARN')) {
  534. define('AI_EXTRA_WARN', false);
  535. }
  536. $l_SpecifiedPath = false;
  537. if ((isset($options['path']) && !empty($options['path']) && ($path = $options['path']) !== false)
  538. || (isset($options['p']) && !empty($options['p']) && ($path = $options['p']) !== false)
  539. ) {
  540. $defaults['path'] = $path;
  541. $l_SpecifiedPath = true;
  542. }
  543. $defaults['use_template_in_path'] = isset($options['use-template-in-path']);
  544. if (isset($options['noprefix']) && !empty($options['noprefix']) && ($g_NoPrefix = $options['noprefix']) !== false) {
  545. } else {
  546. $g_NoPrefix = '';
  547. }
  548. if (isset($options['addprefix']) && !empty($options['addprefix']) && ($g_AddPrefix = $options['addprefix']) !== false) {
  549. } else {
  550. $g_AddPrefix = '';
  551. }
  552. if (isset($options['use-heuristics'])) {
  553. define('USE_HEURISTICS', true);
  554. }
  555. if (isset($options['use-heuristics-suspicious'])) {
  556. define('USE_HEURISTICS_SUSPICIOUS', true);
  557. }
  558. if (defined('USE_HEURISTICS') && defined('USE_HEURISTICS_SUSPICIOUS')) {
  559. die('You can not use --use-heuristic and --use-heuristic-suspicious the same time.');
  560. }
  561. $l_SuffixReport = str_replace('/var/www', '', $defaults['path']);
  562. $l_SuffixReport = str_replace('/home', '', $l_SuffixReport);
  563. $l_SuffixReport = preg_replace('~[/\\\.\s]~', '_', $l_SuffixReport);
  564. $l_SuffixReport .= "-" . rand(1, 999999);
  565. if ((isset($options['report']) && ($report = $options['report']) !== false) || (isset($options['r']) && ($report = $options['r']) !== false)) {
  566. $report = str_replace('@PATH@', $l_SuffixReport, $report);
  567. $report = str_replace('@RND@', rand(1, 999999), $report);
  568. $report = str_replace('@DATE@', date('d-m-Y-h-i'), $report);
  569. define('REPORT', $report);
  570. define('NEED_REPORT', true);
  571. }
  572. if (isset($options['no-html'])) {
  573. define('REPORT', 'no@email.com');
  574. }
  575. defined('ENCODE_FILENAMES_WITH_BASE64') || define('ENCODE_FILENAMES_WITH_BASE64', isset($options['encode-b64-fn']));
  576. defined('INPUT_FILENAMES_BASE64_ENCODED') || define('INPUT_FILENAMES_BASE64_ENCODED', isset($options['input-fn-b64-encoded']));
  577. defined('REPORT') || define('REPORT', 'AI-BOLIT-REPORT-' . $l_SuffixReport . '-' . date('d-m-Y_H-i') . '.html');
  578. $last_arg = max(1, sizeof($_SERVER['argv']) - 1);
  579. if (isset($_SERVER['argv'][$last_arg])) {
  580. $path = $_SERVER['argv'][$last_arg];
  581. if (substr($path, 0, 1) != '-'
  582. && (substr($_SERVER['argv'][$last_arg - 1], 0, 1) != '-'
  583. || array_key_exists(substr($_SERVER['argv'][$last_arg - 1], -1), $cli_options)
  584. )
  585. ) {
  586. $defaults['path'] = $path;
  587. }
  588. }
  589. define('ONE_PASS', isset($options['one-pass']));
  590. // BEGIN of configuring the factory
  591. $factoryConfig = [
  592. RapidAccountScan::class => RapidAccountScan::class,
  593. RapidScanStorage::class => RapidScanStorage::class,
  594. CloudAssistedStorage::class => CloudAssistedStorage::class,
  595. DbFolderSpecification::class => DbFolderSpecification::class,
  596. CriticalFileSpecification::class => CriticalFileSpecification::class,
  597. CloudAssistedRequest::class => CloudAssistedRequest::class,
  598. CSVReport::class => CSVReport::class,
  599. JSONReport::class => JSONReport::class,
  600. PHPReport::class => PHPReport::class,
  601. PlainReport::class => PlainReport::class,
  602. DoublecheckReport::class => DoublecheckReport::class,
  603. HTMLReport::class => HTMLReport::class,
  604. DetachedMode::class => DetachedMode::class,
  605. ResidentMode::class => ResidentMode::class,
  606. Logger::class => Logger::class,
  607. ];
  608. if (isset($options['factory-config'])) {
  609. $optionalFactoryConfig = require($options['factory-config']);
  610. $factoryConfig = array_merge($factoryConfig, $optionalFactoryConfig);
  611. }
  612. Factory::configure($factoryConfig);
  613. // END of configuring the factory
  614. } else {
  615. define('AI_EXPERT', AI_EXPERT_MODE);
  616. define('ONE_PASS', true);
  617. }
  618. if (ONE_PASS && defined('CLOUD_ASSIST_TOKEN')) {
  619. die('Both parameters(one-pass and cloud-assist) not supported');
  620. }
  621. if (defined('RAPID_ACCOUNT_SCAN') && !defined('CLOUD_ASSIST_TOKEN')) {
  622. die('CloudScan should be enabled');
  623. }
  624. if (defined('CREATE_SHARED_MEMORY') && CREATE_SHARED_MEMORY == true && !defined('SHARED_MEMORY')) {
  625. die('shared-mem-progress should be enabled and ID specified.');
  626. }
  627. if (defined('RAPID_ACCOUNT_SCAN')) {
  628. if (!mkdir(RAPID_ACCOUNT_SCAN, 0700, true) && !is_dir(RAPID_ACCOUNT_SCAN)) {
  629. throw new Exception(sprintf('Directory "%s" was not created', RAPID_ACCOUNT_SCAN));
  630. }
  631. $specification = Factory::instance()->create(DbFolderSpecification::class);
  632. if (!$specification->satisfiedBy(RAPID_ACCOUNT_SCAN)) {
  633. @unlink(RAPID_ACCOUNT_SCAN);
  634. die('Rapid DB folder error! Please check the folder.');
  635. }
  636. }
  637. if (defined('RAPID_ACCOUNT_SCAN_TYPE') && !in_array(RAPID_ACCOUNT_SCAN_TYPE, array('NONE', 'ALL', 'SUSPICIOUS'))) {
  638. die('Wrong Rapid account scan type');
  639. }
  640. if (defined('RAPID_ACCOUNT_SCAN') && !extension_loaded('leveldb')) {
  641. die('LevelDB extension needed for Rapid DB');
  642. }
  643. $vars->blackFiles = [];
  644. if (DEBUG_MODE || DEBUG_PERFORMANCE) {
  645. $debug = new DebugMode(DEBUG_MODE, DEBUG_PERFORMANCE);
  646. } else {
  647. $debug = null;
  648. }
  649. $vars->signs = new LoadSignaturesForScan(isset($defaults['avdb']) ? $defaults['avdb'] : null, AI_EXPERT, DEBUG_PERFORMANCE);
  650. if ($vars->signs->getResult() == $vars->signs::SIGN_EXTERNAL) {
  651. stdOut('Loaded external signatures from ' . $defaults['avdb']);
  652. } else if ($vars->signs->getResult() == $vars->signs::SIGN_IMPORT) {
  653. stdOut('Loaded ' . __DIR__ . '/ai-bolit.sig signatures from ai-bolit.sig');
  654. } else if (is_object($debug) && $vars->signs->getResult() == $vars->signs::SIGN_ERROR) {
  655. $debug->QCR_Debug('Import ai-bolit.sig ' . $vars->signs->getLastError());
  656. }
  657. if (is_object($debug)) {
  658. $debug->QCR_Debug();
  659. }
  660. if (isset($defaults['userid'])) {
  661. stdOut('Running from ' . $defaults['userid'] . ':' . $defaults['groupid']);
  662. }
  663. if (AI_EXTRA_WARN) {
  664. $sign_count = $vars->signs->getDBCountWithSuspicious();
  665. } else {
  666. $sign_count = $vars->signs->getDBCount();
  667. }
  668. stdOut('Malware signatures: ' . $sign_count);
  669. if ($g_SpecificExt) {
  670. stdOut("Scan specific extensions: " . implode(',', $g_SensitiveFiles));
  671. }
  672. // Black list database
  673. try {
  674. $file = __DIR__ . '/AIBOLIT-BINMALWARE.db';
  675. if (isset($defaults['avdb'])) {
  676. $file = dirname($defaults['avdb']) . '/AIBOLIT-BINMALWARE.db';
  677. }
  678. $vars->blacklist = FileHashMemoryDb::open($file);
  679. stdOut("Binary malware signatures: " . ceil($vars->blacklist->count()));
  680. } catch (Exception $e) {
  681. $vars->blacklist = null;
  682. }
  683. if (DEBUG_PERFORMANCE) {
  684. stdOut("Debug Performance Scan");
  685. }
  686. // Init
  687. define('MAX_PREVIEW_LEN', 120);
  688. if (defined('AIBOLIT_EXTERNAL_HANDLER')) {
  689. include_once(AIBOLIT_EXTERNAL_HANDLER);
  690. stdOut("\nLoaded external handler: " . AIBOLIT_EXTERNAL_HANDLER . "\n");
  691. if (function_exists("aibolit_onStart")) {
  692. aibolit_onStart();
  693. }
  694. }
  695. // Perform full scan when running from command line
  696. if ($l_FastCli) {
  697. $defaults['scan_all_files'] = 0;
  698. }
  699. define('SCAN_ALL_FILES', (bool) $defaults['scan_all_files']);
  700. define('SCAN_DELAY', (int) $defaults['scan_delay']);
  701. define('MAX_SIZE_TO_SCAN', AibolitHelpers::getBytes($defaults['max_size_to_scan']));
  702. define('MAX_SIZE_TO_CLOUDSCAN', AibolitHelpers::getBytes($defaults['max_size_to_cloudscan']));
  703. if (SCAN_ALL_FILES) {
  704. $filter->setScanAll();
  705. }
  706. if ($defaults['memory_limit'] && ($defaults['memory_limit'] = AibolitHelpers::getBytes($defaults['memory_limit'])) > 0) {
  707. ini_set('memory_limit', $defaults['memory_limit']);
  708. stdOut("Changed memory limit to " . $defaults['memory_limit']);
  709. }
  710. if (realpath($defaults['path']) === false) {
  711. define('ROOT_PATH', $defaults['path']);
  712. } else {
  713. define('ROOT_PATH', realpath($defaults['path']));
  714. }
  715. if (!ROOT_PATH) {
  716. if (isCli()) {
  717. die(stdOut("Directory '{$defaults['path']}' not found!"));
  718. }
  719. } elseif (!$defaults['use_template_in_path'] && !is_readable(ROOT_PATH) && isCli()) {
  720. die2(stdOut("Cannot read directory '" . ROOT_PATH . "'!"));
  721. }
  722. define('CURRENT_DIR', getcwd());
  723. if(!$defaults['use_template_in_path']) {
  724. chdir(ROOT_PATH);
  725. }
  726. if (isCli() && REPORT !== '' && REPORT !== 'no@email.com') {
  727. $report = str_replace('\\', '/', REPORT);
  728. $abs = strpos($report, '/') === 0 ? DIR_SEPARATOR : '';
  729. $report = array_values(array_filter(explode('/', $report)));
  730. $report_file = array_pop($report);
  731. $report_path = realpath($abs . implode(DIR_SEPARATOR, $report));
  732. define('REPORT_FILE', $report_file);
  733. define('REPORT_PATH', $report_path);
  734. if (REPORT_FILE && REPORT_PATH && is_file(REPORT_PATH . DIR_SEPARATOR . REPORT_FILE)) {
  735. @unlink(REPORT_PATH . DIR_SEPARATOR . REPORT_FILE);
  736. }
  737. if (!isset($options['no-html']) && defined('REPORT_FILE')) {
  738. $reports[HTMLReport::class] = REPORT_PATH . DIR_SEPARATOR . REPORT_FILE;
  739. }
  740. }
  741. if (defined('REPORT_PATH')) {
  742. $l_ReportDirName = REPORT_PATH;
  743. }
  744. $vars->options = $options;
  745. $path = $defaults['path'];
  746. $report_mask = $defaults['report_mask'];
  747. $extended_report = defined('EXTENDED_REPORT') && EXTENDED_REPORT;
  748. $rapid_account_scan_report = defined('RAPID_ACCOUNT_SCAN');
  749. $max_size_to_scan = AibolitHelpers::getBytes(MAX_SIZE_TO_SCAN);
  750. $max_size_to_scan = $max_size_to_scan > 0 ? $max_size_to_scan : AibolitHelpers::getBytes('1m');
  751. $max_size_to_scan = AibolitHelpers::bytes2Human($max_size_to_scan);
  752. $use_doublecheck = isset($options['with-2check']) && file_exists(DOUBLECHECK_FILE);
  753. $reportFactory = function ($reports) use ($vars, $path, $db_meta_info, $report_mask, $extended_report,
  754. $rapid_account_scan_report, $g_AddPrefix, $g_NoPrefix, $snum, $max_size_to_scan, $g_SpecificExt, $use_doublecheck) {
  755. foreach($reports as $report_class => $file) {
  756. yield Factory::instance()->create($report_class, [$vars->signs->_Mnemo, $path,
  757. $vars->signs->getDBLocation(), $vars->signs->getDBMetaInfoVersion(),
  758. $report_mask, $extended_report, $rapid_account_scan_report, AI_VERSION, AI_HOSTER,
  759. AI_EXTRA_WARN, AI_EXPERT, SMART_SCAN, ROOT_PATH, SCAN_ALL_FILES, $g_SpecificExt,
  760. DOUBLECHECK_FILE, $use_doublecheck, START_TIME, $snum, $max_size_to_scan, $g_AddPrefix, $g_NoPrefix,
  761. isset($reports[CSVReport::class]), $file, JSON_STDOUT]);
  762. }
  763. };
  764. define('QUEUE_FILENAME', ($l_ReportDirName != '' ? $l_ReportDirName . '/' : '') . 'AI-BOLIT-QUEUE-' . md5($defaults['path']) . '-' . rand(1000, 9999) . '.txt');
  765. if (isset($options['detached'])) {
  766. $detached = Factory::instance()->create(DetachedMode::class, [$finder, $debug, $options['detached'], $vars, START_TIME, $reportFactory]);
  767. if (defined('LISTING_FILE')) {
  768. $detached->scanListing(LISTING_FILE, INPUT_FILENAMES_BASE64_ENCODED);
  769. }
  770. else {
  771. $detached->scanDirectories(ROOT_PATH);
  772. }
  773. exit(0);
  774. }
  775. if (isset($options['resident'])) {
  776. $logger = null;
  777. $levels = explode(',', LOG_LEVEL);
  778. $logger = new Logger(LOG_FILE, $levels);
  779. Factory::instance()->create(ResidentMode::class, [$finder, $debug, $reportFactory, $vars->signs, $vars->blacklist, $logger, $vars->maxMinUid]);
  780. exit(0);
  781. }
  782. ////////////////////////////////////////////////////////////////////////////
  783. if (!isCli()) {
  784. header('Content-type: text/html; charset=utf-8');
  785. }
  786. if (!$defaults['use_template_in_path'] && !is_readable(ROOT_PATH)) {
  787. echo Translate::getStr('warning.folder_read_permission');
  788. exit;
  789. }
  790. if (isCli()) {
  791. if (defined('REPORT_PATH') && REPORT_PATH) {
  792. if (!is_writable(REPORT_PATH)) {
  793. die2("\nCannot write report. Report dir " . REPORT_PATH . " is not writable.");
  794. }
  795. else if (!REPORT_FILE) {
  796. die2("\nCannot write report. Report filename is empty.");
  797. }
  798. else if (($file = REPORT_PATH . DIR_SEPARATOR . REPORT_FILE) && is_file($file) && !is_writable($file)) {
  799. die2("\nCannot write report. Report file '$file' exists but is not writable.");
  800. }
  801. }
  802. }
  803. // detect version CMS
  804. $g_CmsListDetector = null;
  805. if (!$defaults['use_template_in_path']) {
  806. $g_KnownCMS = [];
  807. $g_CmsListDetector = new CmsVersionDetector(ROOT_PATH);
  808. $l_CmsDetectedNum = $g_CmsListDetector->getCmsNumber();
  809. for ($tt = 0; $tt < $l_CmsDetectedNum; $tt++) {
  810. $vars->CMS[] = $g_CmsListDetector->getCmsName($tt) . ' v' . AibolitHelpers::makeSafeFn($g_CmsListDetector->getCmsVersion($tt), $g_AddPrefix, $g_NoPrefix);
  811. }
  812. }
  813. $g_DirIgnoreList = array();
  814. $g_IgnoreList = array();
  815. $g_UrlIgnoreList = array();
  816. $g_KnownList = array();
  817. $g_AiBolitAbsolutePath = __DIR__;
  818. $l_IgnoreFilename = $g_AiBolitAbsolutePath . '/.aignore';
  819. $l_DirIgnoreFilename = $g_AiBolitAbsolutePath . '/.adirignore';
  820. $l_UrlIgnoreFilename = $g_AiBolitAbsolutePath . '/.aurlignore';
  821. if (file_exists($l_IgnoreFilename)) {
  822. $l_IgnoreListRaw = file($l_IgnoreFilename);
  823. for ($i = 0, $iMax = count($l_IgnoreListRaw); $i < $iMax; $i++) {
  824. $g_IgnoreList[] = explode("\t", trim($l_IgnoreListRaw[$i]));
  825. }
  826. unset($l_IgnoreListRaw);
  827. }
  828. if (file_exists($l_UrlIgnoreFilename)) {
  829. $g_UrlIgnoreList = file($l_UrlIgnoreFilename);
  830. for ($i = 0, $iMax = count($g_UrlIgnoreList); $i < $iMax; $i++) {
  831. $g_UrlIgnoreList[$i] = trim($g_UrlIgnoreList[$i]);
  832. }
  833. }
  834. $filter->setIgnoreListPatterns($l_DirIgnoreFilename);
  835. if (SMART_SCAN) {
  836. $filter->setSmartScan();
  837. $g_DirIgnoreList = array_merge($g_DirIgnoreList, $l_SkipMask);
  838. }
  839. if (is_object($debug)) {
  840. $debug->QCR_Debug();
  841. }
  842. $defaults['skip_ext'] = strtolower(trim($defaults['skip_ext']));
  843. if ($defaults['skip_ext'] != '') {
  844. $filter->setIgnoreExt($defaults['skip_ext']);
  845. $g_IgnoredExt = explode(',', $defaults['skip_ext']);
  846. for ($i = 0, $iMax = count($g_IgnoredExt); $i < $iMax; $i++) {
  847. $g_IgnoredExt[$i] = trim($g_IgnoredExt[$i]);
  848. }
  849. if (is_object($debug)) {
  850. $debug->QCR_Debug('Skip files with extensions: ' . implode(',', $g_IgnoredExt));
  851. }
  852. stdOut('Skip extensions: ' . implode(',', $g_IgnoredExt));
  853. }
  854. $use_listingfile = defined('LISTING_FILE');
  855. $listing = false;
  856. if ($use_doublecheck) {
  857. $listing = DOUBLECHECK_FILE;
  858. } elseif ($use_listingfile) {
  859. $listing = LISTING_FILE;
  860. }
  861. $base64_encoded = INPUT_FILENAMES_BASE64_ENCODED;
  862. try {
  863. $scan = new Scanner($finder, $vars, $debug);
  864. if (defined('SCAN_FILE')) {
  865. // scan single file
  866. $filepath = INPUT_FILENAMES_BASE64_ENCODED ? FilepathEscaper::decodeFilepathByBase64(SCAN_FILE) : SCAN_FILE;
  867. stdOut("Start scanning file '" . $filepath . "'.");
  868. if (file_exists($filepath) && is_file($filepath) && is_readable($filepath)) {
  869. $vars->foundTotalFiles = 1;
  870. $s_file[] = $filepath;
  871. $base64_encoded = false;
  872. } else {
  873. stdOut("Error:" . $filepath . " either is not a file or readable");
  874. }
  875. } elseif ($listing) {
  876. //scan listing
  877. if ($listing == 'stdin') {
  878. $lines = explode("\n", getStdin());
  879. } else {
  880. $lines = new SplFileObject($listing);
  881. $lines->setFlags(SplFileObject::READ_AHEAD | SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE);
  882. }
  883. if (is_array($lines)) {
  884. $vars->foundTotalFiles = count($lines);
  885. } else if ($lines instanceof SplFileObject) {
  886. $lines->seek($lines->getSize());
  887. $vars->foundTotalFiles = $lines->key();
  888. $lines->seek(0);
  889. }
  890. $s_file = $lines;
  891. stdOut("Start scanning the list from '" . $listing . "'.\n");
  892. } else {
  893. //scan by path
  894. $base64_encoded = true;
  895. file_exists(QUEUE_FILENAME) && unlink(QUEUE_FILENAME);
  896. $scan->QCR_ScanDirectories(ROOT_PATH);
  897. stdOut("Found $vars->foundTotalFiles files in $vars->foundTotalDirs directories.");
  898. stdOut("Start scanning '" . ROOT_PATH . "'.\n");
  899. if (is_object($debug)) {
  900. $debug->QCR_Debug();
  901. }
  902. stdOut(str_repeat(' ', 160), false);
  903. $s_file = new SplFileObject(QUEUE_FILENAME);
  904. $s_file->setFlags(SplFileObject::READ_AHEAD | SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE);
  905. }
  906. $scan->QCR_GoScan($s_file, null, $base64_encoded, $use_doublecheck);
  907. unset($s_file);
  908. @unlink(QUEUE_FILENAME);
  909. $vars->foundTotalDirs = $vars->totalFolder;
  910. if (defined('PROGRESS_LOG_FILE') && file_exists(PROGRESS_LOG_FILE)) {
  911. @unlink(PROGRESS_LOG_FILE);
  912. }
  913. if (CREATE_SHARED_MEMORY) {
  914. shmop_delete(SHARED_MEMORY);
  915. }
  916. if (defined('SHARED_MEMORY')) {
  917. shmop_close(SHARED_MEMORY);
  918. }
  919. } catch (Exception $e) {
  920. if (is_object($debug)) {
  921. $debug->QCR_Debug($e->getMessage());
  922. }
  923. }
  924. if (is_object($debug)) {
  925. $debug->QCR_Debug();
  926. }
  927. if (true) {
  928. $g_HeuristicDetected = array();
  929. $g_Iframer = array();
  930. $g_Base64 = array();
  931. }
  932. list($snum, $i) = $scan->whitelisting();
  933. ////////////////////////////////////////////////////////////////////////////
  934. if (AI_HOSTER) {
  935. $g_IframerFragment = array();
  936. $g_Iframer = array();
  937. $vars->redirect = array();
  938. $vars->doorway = array();
  939. $g_EmptyLink = array();
  940. $g_HeuristicType = array();
  941. $g_HeuristicDetected = array();
  942. $vars->adwareList = array();
  943. $vars->phishing = array();
  944. $g_PHPCodeInside = array();
  945. $g_PHPCodeInsideFragment = array();
  946. $vars->bigFiles = array();
  947. $vars->redirectPHPFragment = array();
  948. $g_EmptyLinkSrc = array();
  949. $g_Base64Fragment = array();
  950. $g_UnixExec = array();
  951. $vars->phishingSigFragment = array();
  952. $vars->phishingFragment = array();
  953. $g_PhishingSig = array();
  954. $g_IframerFragment = array();
  955. $vars->CMS = array();
  956. $vars->adwareListFragment = array();
  957. }
  958. if (BOOL_RESULT && (!defined('NEED_REPORT'))) {
  959. if ((count($vars->criticalPHP) > 0) || (count($vars->criticalJS) > 0) || (count($g_PhishingSig) > 0)) {
  960. exit(2);
  961. } else {
  962. exit(0);
  963. }
  964. }
  965. ////////////////////////////////////////////////////////////////////////////
  966. $time_taken = AibolitHelpers::seconds2Human(microtime(true) - START_TIME);
  967. stdOut("\nBuilding report [ mode = " . AI_EXPERT . " ]\n");
  968. //stdOut("\nLoaded signatures: " . count($g_FlexDBShe) . " / " . count($g_JSVirSig) . "\n");
  969. ////////////////////////////////////////////////////////////////////////////
  970. $scan_time = round(microtime(true) - START_TIME, 1);
  971. foreach($reportFactory($reports) as $report) {
  972. $report->generateReport($vars, $scan_time);
  973. $res = $report->write();
  974. if ($res !== '') {
  975. stdOut($res);
  976. }
  977. }
  978. stdOut("\n");
  979. if (!AI_HOSTER) {
  980. stdOut("Building list of vulnerable scripts " . count($vars->vulnerable));
  981. }
  982. stdOut("Building list of shells " . count($vars->criticalPHP));
  983. stdOut("Building list of js " . count($vars->criticalJS));
  984. stdOut("Building list of unread files " . count($vars->notRead));
  985. if (!AI_HOSTER) {
  986. stdOut("Building list of phishing pages " . count($vars->phishing));
  987. stdOut('Building list of redirects ' . count($vars->redirect));
  988. stdOut("Building list of symlinks " . count($vars->symLinks));
  989. }
  990. if (AI_EXTRA_WARN) {
  991. stdOut("Building list of suspicious files " . count($vars->warningPHP));
  992. }
  993. ////////////////////////////////////
  994. if (!AI_HOSTER) {
  995. stdOut("Building list of adware " . count($vars->adwareList));
  996. stdOut("Building list of bigfiles " . count($vars->bigFiles));
  997. stdOut("Building list of doorways " . count($vars->doorway));
  998. }
  999. if (!defined('REPORT') || REPORT === '') {
  1000. die2('Report not written.');
  1001. }
  1002. stdOut("Scanning complete! Time taken: " . AibolitHelpers::seconds2Human($scan_time));
  1003. if (DEBUG_PERFORMANCE) {
  1004. $debug->printPerfomanceStats();
  1005. die();
  1006. }
  1007. stdOut("\n\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
  1008. stdOut("Attention! DO NOT LEAVE either ai-bolit.php or AI-BOLIT-REPORT-<xxxx>-<yy>.html \nfile on server. COPY it locally then REMOVE from server. ");
  1009. stdOut("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
  1010. if (isset($options['cmd'])) {
  1011. stdOut("Run \"{$options['cmd']}\" ");
  1012. system($options['cmd']);
  1013. }
  1014. if (is_object($debug)) {
  1015. $debug->QCR_Debug();
  1016. }
  1017. # exit with code
  1018. $l_EC1 = count($vars->criticalPHP);
  1019. $l_EC2 = count($vars->criticalJS) + count($vars->phishing) + count($vars->warningPHP);
  1020. $code = 0;
  1021. if ($l_EC1 > 0) {
  1022. $code = 2;
  1023. } else {
  1024. if ($l_EC2 > 0) {
  1025. $code = 1;
  1026. }
  1027. }
  1028. $stat = array(
  1029. 'php_malware' => count($vars->criticalPHP),
  1030. 'cloudhash' => count($vars->blackFiles),
  1031. 'js_malware' => count($vars->criticalJS),
  1032. 'phishing' => count($vars->phishing)
  1033. );
  1034. if (function_exists('aibolit_onComplete')) {
  1035. aibolit_onComplete($code, $stat);
  1036. }
  1037. stdOut('Exit code ' . $code);
  1038. exit($code);
  1039. ############################################# END ###############################################
  1040. function getStdin()
  1041. {
  1042. $stdin = '';
  1043. $f = @fopen('php://stdin', 'r');
  1044. while($line = fgets($f))
  1045. {
  1046. $stdin .= $line;
  1047. }
  1048. fclose($f);
  1049. return $stdin;
  1050. }
  1051. function die2($str) {
  1052. if (function_exists('aibolit_onFatalError')) {
  1053. aibolit_onFatalError($str);
  1054. }
  1055. die($str);
  1056. }
  1057. function getMaxMinUid($path = '/etc/login.defs')
  1058. {
  1059. $uid_min = 1000;
  1060. $uid_max = 60000;
  1061. if (!file_exists($path)) {
  1062. $release = new OsReleaseInfo();
  1063. $ver = $release->getOsVersion();
  1064. if ($release->isIdLikeCentos() && $ver && (strpos($ver, '6') === 0)) {
  1065. $uid_min = 500;
  1066. $uid_max = 60000;
  1067. }
  1068. unset($ver);
  1069. return [$uid_min, $uid_max];
  1070. }
  1071. $file = file($path, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
  1072. foreach ($file as $line) {
  1073. $line = trim($line);
  1074. if (strpos($line, 'UID_MIN') === 0) {
  1075. list($key, $value) = preg_split('~\s+~', trim($line), 2, PREG_SPLIT_NO_EMPTY);
  1076. $uid_min = intval(trim($value));
  1077. }
  1078. if (strpos($line, 'UID_MAX') === 0) {
  1079. list($key, $value) = preg_split('~\s+~', trim($line), 2, PREG_SPLIT_NO_EMPTY);
  1080. $uid_max = intval(trim($value));
  1081. }
  1082. }
  1083. return [$uid_min, $uid_max];
  1084. }
  1085. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1086. /// The following instructions should be written the same pattern,
  1087. /// because they are replaced by file content while building a release.
  1088. /// See the release_aibolit_ru.sh file for details.
  1089. class AibolitHelpers
  1090. {
  1091. /**
  1092. * Format bytes to human readable
  1093. *
  1094. * @param int $bytes
  1095. *
  1096. * @return string
  1097. */
  1098. public static function bytes2Human($bytes)
  1099. {
  1100. if ($bytes < 1024) {
  1101. return $bytes . ' b';
  1102. } elseif (($kb = $bytes / 1024) < 1024) {
  1103. return number_format($kb, 2) . ' Kb';
  1104. } elseif (($mb = $kb / 1024) < 1024) {
  1105. return number_format($mb, 2) . ' Mb';
  1106. } elseif (($gb = $mb / 1024) < 1024) {
  1107. return number_format($gb, 2) . ' Gb';
  1108. } else {
  1109. return number_format($gb / 1024, 2) . 'Tb';
  1110. }
  1111. }
  1112. /**
  1113. * Seconds to human readable
  1114. * @param int $seconds
  1115. * @return string
  1116. */
  1117. public static function seconds2Human($seconds)
  1118. {
  1119. $r = '';
  1120. $_seconds = floor($seconds);
  1121. $ms = $seconds - $_seconds;
  1122. $seconds = $_seconds;
  1123. if ($hours = floor($seconds / 3600)) {
  1124. $r .= $hours . ' h ';
  1125. $seconds %= 3600;
  1126. }
  1127. if ($minutes = floor($seconds / 60)) {
  1128. $r .= $minutes . ' m ';
  1129. $seconds %= 60;
  1130. }
  1131. if ($minutes < 3) {
  1132. $r .= ' ' . (string)($seconds + ($ms > 0 ? round($ms) : 0)) . ' s';
  1133. }
  1134. return $r;
  1135. }
  1136. /**
  1137. * Get bytes from shorthand byte values (1M, 1G...)
  1138. * @param int|string $val
  1139. * @return int
  1140. */
  1141. public static function getBytes($val)
  1142. {
  1143. $val = trim($val);
  1144. $last = strtolower($val[strlen($val) - 1]);
  1145. switch ($last) {
  1146. case 't':
  1147. $val *= 1024;
  1148. case 'g':
  1149. $val *= 1024;
  1150. case 'm':
  1151. $val *= 1024;
  1152. case 'k':
  1153. $val *= 1024;
  1154. }
  1155. return intval($val);
  1156. }
  1157. /**
  1158. * Convert dangerous chars to html entities
  1159. *
  1160. * @param $par_Str
  1161. * @param string $addPrefix
  1162. * @param string $noPrefix
  1163. * @param bool $replace_path
  1164. *
  1165. * @return string
  1166. */
  1167. public static function makeSafeFn($par_Str, $addPrefix = '', $noPrefix = '', $replace_path = false)
  1168. {
  1169. if ($replace_path) {
  1170. $lines = explode("\n", $par_Str);
  1171. array_walk($lines, static function(&$n) use ($addPrefix, $noPrefix) {
  1172. $n = $addPrefix . str_replace($noPrefix, '', $n);
  1173. });
  1174. $par_Str = implode("\n", $lines);
  1175. }
  1176. return htmlspecialchars($par_Str, ENT_SUBSTITUTE | ENT_QUOTES);
  1177. }
  1178. public static function myCheckSum($str)
  1179. {
  1180. return hash('crc32b', $str);
  1181. }
  1182. }
  1183. class Variables
  1184. {
  1185. public $structure = array();
  1186. public $totalFolder = 0;
  1187. public $totalFiles = 0;
  1188. public $adwareList = array();
  1189. public $criticalPHP = array();
  1190. public $phishing = array();
  1191. public $CMS = array();
  1192. public $redirect = array();
  1193. public $redirectPHPFragment = array();
  1194. public $criticalJS = array();
  1195. public $criticalJSFragment = array();
  1196. public $blackFiles = array();
  1197. public $notRead = array();
  1198. public $bigFiles = array();
  1199. public $criticalPHPSig = array();
  1200. public $criticalPHPFragment = array();
  1201. public $phishingSigFragment = array();
  1202. public $phishingFragment = array();
  1203. public $criticalJSSig = array();
  1204. public $adwareListFragment = array();
  1205. public $warningPHPSig = array();
  1206. public $warningPHPFragment = array();
  1207. public $warningPHP = array();
  1208. public $blacklist = null;
  1209. public $vulnerable = array();
  1210. public $crc = 0;
  1211. public $counter = 0;
  1212. public $foundTotalDirs = 0;
  1213. public $foundTotalFiles = 0;
  1214. public $files_and_ignored = 0;
  1215. public $doorway = array();
  1216. public $symLinks = array();
  1217. public $skippedFolders = array();
  1218. public $hashtable = null;
  1219. public $fileinfo = null;
  1220. public $rescanCount = 0;
  1221. public $maxMinUid = array();
  1222. public $options = array();
  1223. public $signs = array();
  1224. }
  1225. class Logger
  1226. {
  1227. /**
  1228. * $log_file - path and log file name
  1229. * @var string
  1230. */
  1231. protected $log_file;
  1232. /**
  1233. * $file - file
  1234. * @var string
  1235. */
  1236. protected $file;
  1237. /**
  1238. * dateFormat
  1239. * @var string
  1240. */
  1241. protected $dateFormat = 'd-M-Y H:i:s';
  1242. /**
  1243. * @var array
  1244. */
  1245. const LEVELS = ['ERROR' => 1, 'DEBUG' => 2, 'INFO' => 4, 'ALL' => 7];
  1246. /**
  1247. * @var int
  1248. */
  1249. private $level;
  1250. /**
  1251. * Class constructor
  1252. *
  1253. * @param string $log_file - path and filename of log
  1254. * @param string|array $level - Level of logging
  1255. *
  1256. * @throws Exception
  1257. */
  1258. public function __construct($log_file = null, $level = 'INFO')
  1259. {
  1260. if (!$log_file) {
  1261. return;
  1262. }
  1263. if (is_array($level)) {
  1264. foreach ($level as $v) {
  1265. if (!isset(self::LEVELS[$v])) {
  1266. $v = 'INFO';
  1267. }
  1268. $this->level |= self::LEVELS[$v];
  1269. }
  1270. } else {
  1271. if (isset(self::LEVELS[$level])) {
  1272. $this->level = self::LEVELS[$level];
  1273. } else {
  1274. $this->level = self::LEVELS['INFO'];
  1275. }
  1276. }
  1277. $this->log_file = $log_file;
  1278. //Create log file if it doesn't exist.
  1279. if (!file_exists($log_file)) {
  1280. fopen($log_file, 'w') or exit("Can't create $log_file!");
  1281. }
  1282. //Check permissions of file.
  1283. if (!is_writable($log_file)) {
  1284. //throw exception if not writable
  1285. throw new Exception('ERROR: Unable to write to file!', 1);
  1286. }
  1287. }
  1288. /**
  1289. * Info method (write info message)
  1290. * @param string $message
  1291. * @return void
  1292. */
  1293. public function info($message)
  1294. {
  1295. if ($this->level & self::LEVELS['INFO']) {
  1296. $this->writeLog($message, 'INFO');
  1297. }
  1298. }
  1299. /**
  1300. * Debug method (write debug message)
  1301. * @param string $message
  1302. * @return void
  1303. */
  1304. public function debug($message)
  1305. {
  1306. if ($this->level & self::LEVELS['DEBUG']) {
  1307. $this->writeLog($message, 'DEBUG');
  1308. }
  1309. }
  1310. /**
  1311. * Error method (write error message)
  1312. * @param string $message
  1313. * @return void
  1314. */
  1315. public function error($message)
  1316. {
  1317. if ($this->level & self::LEVELS['ERROR']) {
  1318. $this->writeLog($message, 'ERROR');
  1319. }
  1320. }
  1321. /**
  1322. * Write to log file
  1323. * @param string $message
  1324. * @param string $level
  1325. * @return void
  1326. */
  1327. public function writeLog($message, $level)
  1328. {
  1329. if (!$this->log_file) {
  1330. return;
  1331. }
  1332. // open log file
  1333. if (!is_resource($this->file)) {
  1334. $this->openLog();
  1335. }
  1336. //Grab time - based on timezone in php.ini
  1337. $time = date($this->dateFormat);
  1338. // Write time & message to end of file
  1339. fwrite($this->file, "[$time] : [$level] - $message" . PHP_EOL);
  1340. }
  1341. /**
  1342. * Open log file
  1343. * @return void
  1344. */
  1345. private function openLog()
  1346. {
  1347. $openFile = $this->log_file;
  1348. // 'a' option = place pointer at end of file
  1349. $this->file = fopen($openFile, 'a') or exit("Can't open $openFile!");
  1350. }
  1351. /**
  1352. * Class destructor
  1353. */
  1354. public function __destruct()
  1355. {
  1356. if ($this->file) {
  1357. fclose($this->file);
  1358. }
  1359. }
  1360. }
  1361. class LoadSignaturesForScan
  1362. {
  1363. private $sig_db = array();
  1364. private $sig_db_meta_info = array();
  1365. private $sig_db_location = 'internal';
  1366. private $mode;
  1367. private $debug;
  1368. public $_DBShe;
  1369. public $X_DBShe;
  1370. public $_FlexDBShe;
  1371. public $X_FlexDBShe;
  1372. public $XX_FlexDBShe;
  1373. public $_ExceptFlex;
  1374. public $_AdwareSig;
  1375. public $_PhishingSig;
  1376. public $_JSVirSig;
  1377. public $X_JSVirSig;
  1378. public $_SusDB;
  1379. public $_SusDBPrio;
  1380. public $_DeMapper;
  1381. public $_Mnemo;
  1382. public $whiteUrls;
  1383. public $blackUrls;
  1384. public $ownUrl = null;
  1385. private $count;
  1386. private $count_susp;
  1387. private $result = 0;
  1388. private $last_error = '';
  1389. const SIGN_INTERNAL = 1;
  1390. const SIGN_EXTERNAL = 2;
  1391. const SIGN_IMPORT = 3;
  1392. const SIGN_ERROR = 9;
  1393. public function __construct($avdb_file, $mode, $debug)
  1394. {
  1395. $this->mode = $mode;
  1396. $this->debug = $debug;
  1397. $this->sig_db_meta_info = array(
  1398. 'build-date' => 'n/a',
  1399. 'version' => 'n/a',
  1400. 'release-type' => 'n/a',
  1401. );
  1402. if ($avdb_file && file_exists($avdb_file)) {
  1403. $avdb = explode("\n", gzinflate(base64_decode(str_rot13(strrev(trim(file_get_contents($avdb_file)))))));
  1404. $this->sig_db_location = 'external';
  1405. $this->_DBShe = explode("\n", base64_decode($avdb[0]));
  1406. $this->X_DBShe = explode("\n", base64_decode($avdb[1]));
  1407. $this->_FlexDBShe = explode("\n", base64_decode($avdb[2]));
  1408. $this->X_FlexDBShe = explode("\n", base64_decode($avdb[3]));
  1409. $this->XX_FlexDBShe = explode("\n", base64_decode($avdb[4]));
  1410. $this->_ExceptFlex = explode("\n", base64_decode($avdb[5]));
  1411. $this->_AdwareSig = explode("\n", base64_decode($avdb[6]));
  1412. $this->_PhishingSig = explode("\n", base64_decode($avdb[7]));
  1413. $this->_JSVirSig = explode("\n", base64_decode($avdb[8]));
  1414. $this->X_JSVirSig = explode("\n", base64_decode($avdb[9]));
  1415. $this->_SusDB = explode("\n", base64_decode($avdb[10]));
  1416. $this->_SusDBPrio = explode("\n", base64_decode($avdb[11]));
  1417. $this->_DeMapper = array_combine(explode("\n", base64_decode($avdb[12])), explode("\n", base64_decode($avdb[13])));
  1418. $this->_Mnemo = @array_flip(@array_combine(explode("\n", base64_decode($avdb[14])), explode("\n", base64_decode($avdb[15]))));
  1419. // get meta information
  1420. $avdb_meta_info = json_decode(base64_decode($avdb[16]), true);
  1421. $this->sig_db_meta_info['build-date'] = $avdb_meta_info ? $avdb_meta_info['build-date'] : 'n/a';
  1422. $this->sig_db_meta_info['version'] = $avdb_meta_info ? $avdb_meta_info['version'] : 'n/a';
  1423. $this->sig_db_meta_info['release-type'] = $avdb_meta_info ? $avdb_meta_info['release-type'] : 'n/a';
  1424. if (count($this->_DBShe) <= 1) {
  1425. $this->_DBShe = array();
  1426. }
  1427. if (count($this->X_DBShe) <= 1) {
  1428. $this->X_DBShe = array();
  1429. }
  1430. if (count($this->_FlexDBShe) <= 1) {
  1431. $this->_FlexDBShe = array();
  1432. }
  1433. if (count($this->X_FlexDBShe) <= 1) {
  1434. $this->X_FlexDBShe = array();
  1435. }
  1436. if (count($this->XX_FlexDBShe) <= 1) {
  1437. $this->XX_FlexDBShe = array();
  1438. }
  1439. if (count($this->_ExceptFlex) <= 1) {
  1440. $this->_ExceptFlex = array();
  1441. }
  1442. if (count($this->_AdwareSig) <= 1) {
  1443. $this->_AdwareSig = array();
  1444. }
  1445. if (count($this->_PhishingSig) <= 1) {
  1446. $this->_PhishingSig = array();
  1447. }
  1448. if (count($this->X_JSVirSig) <= 1) {
  1449. $this->X_JSVirSig = array();
  1450. }
  1451. if (count($this->_JSVirSig) <= 1) {
  1452. $this->_JSVirSig = array();
  1453. }
  1454. if (count($this->_SusDB) <= 1) {
  1455. $this->_SusDB = array();
  1456. }
  1457. if (count($this->_SusDBPrio) <= 1) {
  1458. $this->_SusDBPrio = array();
  1459. }
  1460. $this->result = self::SIGN_EXTERNAL;
  1461. } else {
  1462. InternalSignatures::init();
  1463. $this->_DBShe = InternalSignatures::$_DBShe;
  1464. $this->X_DBShe = InternalSignatures::$X_DBShe;
  1465. $this->_FlexDBShe = InternalSignatures::$_FlexDBShe;
  1466. $this->X_FlexDBShe = InternalSignatures::$X_FlexDBShe;
  1467. $this->XX_FlexDBShe = InternalSignatures::$XX_FlexDBShe;
  1468. $this->_ExceptFlex = InternalSignatures::$_ExceptFlex;
  1469. $this->_AdwareSig = InternalSignatures::$_AdwareSig;
  1470. $this->_PhishingSig = InternalSignatures::$_PhishingSig;
  1471. $this->_JSVirSig = InternalSignatures::$_JSVirSig;
  1472. $this->X_JSVirSig = InternalSignatures::$X_JSVirSig;
  1473. $this->_SusDB = InternalSignatures::$_SusDB;
  1474. $this->_SusDBPrio = InternalSignatures::$_SusDBPrio;
  1475. $this->_DeMapper = InternalSignatures::$_DeMapper;
  1476. $this->_Mnemo = InternalSignatures::$_Mnemo;
  1477. // get meta information
  1478. $avdb_meta_info = InternalSignatures::$db_meta_info;
  1479. $this->sig_db_meta_info['build-date'] = $avdb_meta_info ? $avdb_meta_info['build-date'] : 'n/a';
  1480. $this->sig_db_meta_info['version'] = $avdb_meta_info ? $avdb_meta_info['version'] : 'n/a';
  1481. $this->sig_db_meta_info['release-type'] = $avdb_meta_info ? $avdb_meta_info['release-type'] : 'n/a';
  1482. $this->result = self::SIGN_INTERNAL;
  1483. }
  1484. // use only basic signature subset
  1485. if ($mode < 2) {
  1486. $this->X_FlexDBShe = array();
  1487. $this->XX_FlexDBShe = array();
  1488. $this->X_JSVirSig = array();
  1489. }
  1490. // Load custom signatures
  1491. if (file_exists(__DIR__ . '/ai-bolit.sig')) {
  1492. try {
  1493. $s_file = new SplFileObject(__DIR__ . '/ai-bolit.sig');
  1494. $s_file->setFlags(SplFileObject::READ_AHEAD | SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE);
  1495. foreach ($s_file as $line) {
  1496. $this->_FlexDBShe[] = preg_replace('#\G(?:[^~\\\\]+|\\\\.)*+\K~#', '\\~', $line); // escaping ~
  1497. }
  1498. $this->result = self::SIGN_IMPORT;
  1499. $s_file = null; // file handler is closed
  1500. }
  1501. catch (Exception $e) {
  1502. $this->result = self::SIGN_ERROR;
  1503. $this->last_error = $e->getMessage();
  1504. }
  1505. }
  1506. $this->count = count($this->_JSVirSig) + count($this->X_JSVirSig) + count($this->_DBShe) + count($this->X_DBShe) + count($this->_FlexDBShe) + count($this->X_FlexDBShe) + count($this->XX_FlexDBShe);
  1507. $this->count_susp = $this->count + count($this->_SusDB);
  1508. if (!$debug) {
  1509. $this->OptimizeSignatures();
  1510. }
  1511. $this->_DBShe = array_map('strtolower', $this->_DBShe);
  1512. $this->X_DBShe = array_map('strtolower', $this->X_DBShe);
  1513. }
  1514. private function OptimizeSignatures()
  1515. {
  1516. ($this->mode == 2) && ($this->_FlexDBShe = array_merge($this->_FlexDBShe, $this->X_FlexDBShe, $this->XX_FlexDBShe));
  1517. ($this->mode == 1) && ($this->_FlexDBShe = array_merge($this->_FlexDBShe, $this->X_FlexDBShe));
  1518. $this->X_FlexDBShe = $this->XX_FlexDBShe = array();
  1519. ($this->mode == 2) && ($this->_JSVirSig = array_merge($this->_JSVirSig, $this->X_JSVirSig));
  1520. $this->X_JSVirSig = array();
  1521. $count = count($this->_FlexDBShe);
  1522. for ($i = 0; $i < $count; $i++) {
  1523. if ($this->_FlexDBShe[$i] == '[a-zA-Z0-9_]+?\(\s*[a-zA-Z0-9_]+?=\s*\)')
  1524. $this->_FlexDBShe[$i] = '\((?<=[a-zA-Z0-9_].)\s*[a-zA-Z0-9_]++=\s*\)';
  1525. if ($this->_FlexDBShe[$i] == '([^\?\s])\({0,1}\.[\+\*]\){0,1}\2[a-z]*e')
  1526. $this->_FlexDBShe[$i] = '(?J)\.[+*](?<=(?<d>[^\?\s])\(..|(?<d>[^\?\s])..)\)?\g{d}[a-z]*e';
  1527. if ($this->_FlexDBShe[$i] == '$[a-zA-Z0-9_]\{\d+\}\s*\.$[a-zA-Z0-9_]\{\d+\}\s*\.$[a-zA-Z0-9_]\{\d+\}\s*\.')
  1528. $this->_FlexDBShe[$i] = '\$[a-zA-Z0-9_]\{\d+\}\s*\.\$[a-zA-Z0-9_]\{\d+\}\s*\.\$[a-zA-Z0-9_]\{\d+\}\s*\.';
  1529. $this->_FlexDBShe[$i] = str_replace('http://.+?/.+?\.php\?a', 'http://[^?\s]++(?<=\.php)\?a', $this->_FlexDBShe[$i]);
  1530. $this->_FlexDBShe[$i] = preg_replace('~\[a-zA-Z0-9_\]\+\K\?~', '+', $this->_FlexDBShe[$i]);
  1531. $this->_FlexDBShe[$i] = preg_replace('~^\\\\[d]\+&@~', '&@(?<=\d..)', $this->_FlexDBShe[$i]);
  1532. $this->_FlexDBShe[$i] = str_replace('\s*[\'"]{0,1}.+?[\'"]{0,1}\s*', '.+?', $this->_FlexDBShe[$i]);
  1533. $this->_FlexDBShe[$i] = str_replace('[\'"]{0,1}.+?[\'"]{0,1}', '.+?', $this->_FlexDBShe[$i]);
  1534. $this->_FlexDBShe[$i] = preg_replace('~^\[\'"\]\{0,1\}\.?|^@\*|^\\\\s\*~', '', $this->_FlexDBShe[$i]);
  1535. }
  1536. $this->optSig($this->_FlexDBShe);
  1537. $this->optSig($this->_JSVirSig);
  1538. $this->optSig($this->_AdwareSig);
  1539. $this->optSig($this->_PhishingSig);
  1540. $this->optSig($this->_SusDB);
  1541. //optSig($g_SusDBPrio);
  1542. //optSig($g_ExceptFlex);
  1543. // convert exception rules
  1544. $cnt = count($this->_ExceptFlex);
  1545. for ($i = 0; $i < $cnt; $i++) {
  1546. $this->_ExceptFlex[$i] = trim(Normalization::normalize($this->_ExceptFlex[$i]));
  1547. if ($this->_ExceptFlex[$i] == '')
  1548. unset($this->_ExceptFlex[$i]);
  1549. }
  1550. $this->_ExceptFlex = array_values($this->_ExceptFlex);
  1551. }
  1552. private function optSig(&$sigs)
  1553. {
  1554. $sigs = array_unique($sigs);
  1555. // Add SigId
  1556. foreach ($sigs as &$s) {
  1557. $s .= '(?<X' . AibolitHelpers::myCheckSum($s) . '>)';
  1558. }
  1559. unset($s);
  1560. $fix = array(
  1561. '([^\?\s])\({0,1}\.[\+\*]\){0,1}\2[a-z]*e' => '(?J)\.[+*](?<=(?<d>[^\?\s])\(..|(?<d>[^\?\s])..)\)?\g{d}[a-z]*e',
  1562. 'http://.+?/.+?\.php\?a' => 'http://[^?\s]++(?<=\.php)\?a',
  1563. '\s*[\'"]{0,1}.+?[\'"]{0,1}\s*' => '.+?',
  1564. '[\'"]{0,1}.+?[\'"]{0,1}' => '.+?'
  1565. );
  1566. $sigs = str_replace(array_keys($fix), array_values($fix), $sigs);
  1567. $fix = array(
  1568. '~^\\\\[d]\+&@~' => '&@(?<=\d..)',
  1569. '~^((\[\'"\]|\\\\s|@)(\{0,1\}\.?|[?*]))+~' => ''
  1570. );
  1571. $sigs = preg_replace(array_keys($fix), array_values($fix), $sigs);
  1572. $this->optSigCheck($sigs);
  1573. $tmp = array();
  1574. foreach ($sigs as $i => $s) {
  1575. if (!preg_match('~^(?>(?!\.[*+]|\\\\\d)(?:\\\\.|\[.+?\]|.))+$~', $s)) {
  1576. unset($sigs[$i]);
  1577. $tmp[] = $s;
  1578. }
  1579. }
  1580. usort($sigs, 'strcasecmp');
  1581. $txt = implode("\n", $sigs);
  1582. for ($i = 24; $i >= 1; ($i > 4) ? $i -= 4 : --$i) {
  1583. $txt = preg_replace_callback('#^((?>(?:\\\\.|\\[.+?\\]|[^(\n]|\((?:\\\\.|[^)(\n])++\))(?:[*?+]\+?|\{\d+(?:,\d*)?\}[+?]?|)){' . $i . ',})[^\n]*+(?:\\n\\1(?![{?*+]).+)+#im', [$this, 'optMergePrefixes'], $txt);
  1584. }
  1585. $sigs = array_merge(explode("\n", $txt), $tmp);
  1586. $this->optSigCheck($sigs);
  1587. }
  1588. private function optMergePrefixes($m)
  1589. {
  1590. $limit = 8000;
  1591. $prefix = $m[1];
  1592. $prefix_len = strlen($prefix);
  1593. $len = $prefix_len;
  1594. $r = array();
  1595. $suffixes = array();
  1596. foreach (explode("\n", $m[0]) as $line) {
  1597. if (strlen($line) > $limit) {
  1598. $r[] = $line;
  1599. continue;
  1600. }
  1601. $s = substr($line, $prefix_len);
  1602. $len += strlen($s);
  1603. if ($len > $limit) {
  1604. if (count($suffixes) == 1) {
  1605. $r[] = $prefix . $suffixes[0];
  1606. } else {
  1607. $r[] = $prefix . '(?:' . implode('|', $suffixes) . ')';
  1608. }
  1609. $suffixes = array();
  1610. $len = $prefix_len + strlen($s);
  1611. }
  1612. $suffixes[] = $s;
  1613. }
  1614. if (!empty($suffixes)) {
  1615. if (count($suffixes) == 1) {
  1616. $r[] = $prefix . $suffixes[0];
  1617. } else {
  1618. $r[] = $prefix . '(?:' . implode('|', $suffixes) . ')';
  1619. }
  1620. }
  1621. return implode("\n", $r);
  1622. }
  1623. private function optMergePrefixes_Old($m)
  1624. {
  1625. $prefix = $m[1];
  1626. $prefix_len = strlen($prefix);
  1627. $suffixes = array();
  1628. foreach (explode("\n", $m[0]) as $line) {
  1629. $suffixes[] = substr($line, $prefix_len);
  1630. }
  1631. return $prefix . '(?:' . implode('|', $suffixes) . ')';
  1632. }
  1633. /*
  1634. * Checking errors in pattern
  1635. */
  1636. private function optSigCheck(&$sigs)
  1637. {
  1638. $result = true;
  1639. foreach ($sigs as $k => $sig) {
  1640. if (trim($sig) == "") {
  1641. if ($this->debug) {
  1642. echo ("************>>>>> EMPTY\n pattern: " . $sig . "\n");
  1643. }
  1644. unset($sigs[$k]);
  1645. $result = false;
  1646. }
  1647. if (@preg_match('~' . $sig . '~smiS', '') === false) {
  1648. $error = error_get_last();
  1649. if ($this->debug) {
  1650. echo ("************>>>>> " . $error['message'] . "\n pattern: " . $sig . "\n");
  1651. }
  1652. unset($sigs[$k]);
  1653. $result = false;
  1654. }
  1655. }
  1656. return $result;
  1657. }
  1658. public static function getSigId($l_Found)
  1659. {
  1660. foreach ($l_Found as $key => &$v) {
  1661. if (is_string($key) && $v[1] != -1 && strlen($key) == 9) {
  1662. return substr($key, 1);
  1663. }
  1664. }
  1665. return null;
  1666. }
  1667. public function setOwnUrl($url)
  1668. {
  1669. if (isset($this->blackUrls)) {
  1670. foreach ($this->blackUrls->getDb() as $black) {
  1671. if (preg_match('~' . $black . '~msi', $url)) {
  1672. $this->ownUrl = null;
  1673. return;
  1674. }
  1675. }
  1676. }
  1677. $this->ownUrl = $url;
  1678. }
  1679. public function getOwnUrl()
  1680. {
  1681. return $this->ownUrl;
  1682. }
  1683. public function getDBLocation()
  1684. {
  1685. return $this->sig_db_location;
  1686. }
  1687. public function getDB()
  1688. {
  1689. return $this->sig_db;
  1690. }
  1691. public function getDBMetaInfo()
  1692. {
  1693. return $this->sig_db_meta_info;
  1694. }
  1695. public function getDBMetaInfoVersion()
  1696. {
  1697. return $this->sig_db_meta_info['version'];
  1698. }
  1699. public function getDBCount()
  1700. {
  1701. return $this->count;
  1702. }
  1703. public function getDBCountWithSuspicious()
  1704. {
  1705. return $this->count_susp;
  1706. }
  1707. public function getResult()
  1708. {
  1709. return $this->result;
  1710. }
  1711. public function getLastError()
  1712. {
  1713. return $this->last_error;
  1714. }
  1715. }
  1716. class InternalSignatures
  1717. {
  1718. public static $_DBShe;
  1719. public static $X_DBShe;
  1720. public static $_FlexDBShe;
  1721. public static $X_FlexDBShe;
  1722. public static $XX_FlexDBShe;
  1723. public static $_ExceptFlex;
  1724. public static $_AdwareSig;
  1725. public static $_PhishingSig;
  1726. public static $_JSVirSig;
  1727. public static $X_JSVirSig;
  1728. public static $_SusDB;
  1729. public static $_SusDBPrio;
  1730. public static $_DeMapper;
  1731. public static $_Mnemo;
  1732. public static $db_meta_info;
  1733. public static function init()
  1734. {
  1735. //BEGIN_SIG 28/09/2020 01:02:09
  1736. self::$_DBShe = unserialize(gzinflate(/*1601287329*/base64_decode("S7QysKquBQA=")));
  1737. self::$X_DBShe = unserialize(gzinflate(/*1601287329*/base64_decode("S7QysKquBQA=")));
  1738. self::$_FlexDBShe = unserialize(gzinflate(/*1601287329*/base64_decode("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")));
  1739. self::$X_FlexDBShe = unserialize(gzinflate(/*1601287329*/base64_decode("S7QysKquBQA=")));
  1740. self::$XX_FlexDBShe = unserialize(gzinflate(/*1601287329*/base64_decode("S7QysKquBQA=")));
  1741. self::$_ExceptFlex = unserialize(gzinflate(/*1601287329*/base64_decode("S7QysKquBQA=")));
  1742. self::$_AdwareSig = unserialize(gzinflate(/*1601287329*/base64_decode("S7QysKquBQA=")));
  1743. self::$_PhishingSig = unserialize(gzinflate(/*1601287329*/base64_decode("S7QysKquBQA=")));
  1744. self::$_JSVirSig = unserialize(gzinflate(/*1601287329*/base64_decode("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")));
  1745. self::$X_JSVirSig = unserialize(gzinflate(/*1601287329*/base64_decode("S7QysKquBQA=")));
  1746. self::$_SusDB = unserialize(gzinflate(/*1601287329*/base64_decode("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")));
  1747. self::$_SusDBPrio = unserialize(gzinflate(/*1601287329*/base64_decode("S7QysKquBQA=")));
  1748. self::$_Mnemo = @array_flip(unserialize(gzinflate(/*1601287329*/base64_decode("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"))));
  1749. self::$_DeMapper = unserialize(base64_decode("YTo1OntzOjEwOiJ3aXphcmQucGhwIjtzOjM3OiJjbGFzcyBXZWxjb21lU3RlcCBleHRlbmRzIENXaXphcmRTdGVwIjtzOjE3OiJ1cGRhdGVfY2xpZW50LnBocCI7czozNzoieyBDVXBkYXRlQ2xpZW50OjpBZGRNZXNzYWdlMkxvZygiZXhlYyI7czoxMToiaW5jbHVkZS5waHAiO3M6NDg6IkdMT0JBTFNbIlVTRVIiXS0+SXNBdXRob3JpemVkKCkgJiYgJGFyQXV0aFJlc3VsdCI7czo5OiJzdGFydC5waHAiO3M6NjA6IkJYX1JPT1QuJy9tb2R1bGVzL21haW4vY2xhc3Nlcy9nZW5lcmFsL3VwZGF0ZV9kYl91cGRhdGVyLnBocCI7czoxMDoiaGVscGVyLnBocCI7czo1ODoiSlBsdWdpbkhlbHBlcjo6Z2V0UGx1Z2luKCJzeXN0ZW0iLCJvbmVjbGlja2NoZWNrb3V0X3ZtMyIpOyI7fQ=="));
  1750. self::$db_meta_info = unserialize(base64_decode("YTozOntzOjEwOiJidWlsZC1kYXRlIjtzOjEwOiIxNjAxMjg3Mjc2IjtzOjc6InZlcnNpb24iO3M6MTM6IjIwMjAwOTI4LTM4NTAiO3M6MTI6InJlbGVhc2UtdHlwZSI7czoxMDoicHJvZHVjdGlvbiI7fQ=="));
  1751. //END_SIG
  1752. }
  1753. }
  1754. class CmsVersionDetector
  1755. {
  1756. const CMS_BITRIX = 'Bitrix';
  1757. const CMS_WORDPRESS = 'WordPress';
  1758. const CMS_JOOMLA = 'Joomla';
  1759. const CMS_DLE = 'Data Life Engine';
  1760. const CMS_IPB = 'Invision Power Board';
  1761. const CMS_WEBASYST = 'WebAsyst';
  1762. const CMS_OSCOMMERCE = 'OsCommerce';
  1763. const CMS_DRUPAL = 'Drupal';
  1764. const CMS_MODX = 'MODX';
  1765. const CMS_INSTANTCMS = 'Instant CMS';
  1766. const CMS_PHPBB = 'PhpBB';
  1767. const CMS_VBULLETIN = 'vBulletin';
  1768. const CMS_SHOPSCRIPT = 'PHP ShopScript Premium';
  1769. const CMS_VERSION_UNDEFINED = '0.0';
  1770. private $root_path;
  1771. private $versions;
  1772. private $types;
  1773. public function __construct($root_path = '.') {
  1774. $this->root_path = $root_path;
  1775. $this->versions = array();
  1776. $this->types = array();
  1777. $version = '';
  1778. $dir_list = $this->getDirList($root_path);
  1779. $dir_list[] = $root_path;
  1780. foreach ($dir_list as $dir) {
  1781. if ($this->checkBitrix($dir, $version)) {
  1782. $this->addCms(self::CMS_BITRIX, $version);
  1783. }
  1784. if ($this->checkWordpress($dir, $version)) {
  1785. $this->addCms(self::CMS_WORDPRESS, $version);
  1786. }
  1787. if ($this->checkJoomla($dir, $version)) {
  1788. $this->addCms(self::CMS_JOOMLA, $version);
  1789. }
  1790. if ($this->checkDle($dir, $version)) {
  1791. $this->addCms(self::CMS_DLE, $version);
  1792. }
  1793. if ($this->checkIpb($dir, $version)) {
  1794. $this->addCms(self::CMS_IPB, $version);
  1795. }
  1796. if ($this->checkWebAsyst($dir, $version)) {
  1797. $this->addCms(self::CMS_WEBASYST, $version);
  1798. }
  1799. if ($this->checkOsCommerce($dir, $version)) {
  1800. $this->addCms(self::CMS_OSCOMMERCE, $version);
  1801. }
  1802. if ($this->checkDrupal($dir, $version)) {
  1803. $this->addCms(self::CMS_DRUPAL, $version);
  1804. }
  1805. if ($this->checkMODX($dir, $version)) {
  1806. $this->addCms(self::CMS_MODX, $version);
  1807. }
  1808. if ($this->checkInstantCms($dir, $version)) {
  1809. $this->addCms(self::CMS_INSTANTCMS, $version);
  1810. }
  1811. if ($this->checkPhpBb($dir, $version)) {
  1812. $this->addCms(self::CMS_PHPBB, $version);
  1813. }
  1814. if ($this->checkVBulletin($dir, $version)) {
  1815. $this->addCms(self::CMS_VBULLETIN, $version);
  1816. }
  1817. if ($this->checkPhpShopScript($dir, $version)) {
  1818. $this->addCms(self::CMS_SHOPSCRIPT, $version);
  1819. }
  1820. }
  1821. }
  1822. function getDirList($target) {
  1823. $remove = array(
  1824. '.',
  1825. '..'
  1826. );
  1827. $directories = array_diff(scandir($target), $remove);
  1828. $res = array();
  1829. foreach ($directories as $value) {
  1830. if (is_dir($target . '/' . $value)) {
  1831. $res[] = $target . '/' . $value;
  1832. }
  1833. }
  1834. return $res;
  1835. }
  1836. function isCms($name, $version) {
  1837. for ($i = 0, $iMax = count($this->types); $i < $iMax; $i++) {
  1838. if ((strpos($this->types[$i], $name) !== false) && (strpos($this->versions[$i], $version) !== false)) {
  1839. return true;
  1840. }
  1841. }
  1842. return false;
  1843. }
  1844. function getCmsList() {
  1845. return $this->types;
  1846. }
  1847. function getCmsVersions() {
  1848. return $this->versions;
  1849. }
  1850. function getCmsNumber() {
  1851. return count($this->types);
  1852. }
  1853. function getCmsName($index = 0) {
  1854. return $this->types[$index];
  1855. }
  1856. function getCmsVersion($index = 0) {
  1857. return $this->versions[$index];
  1858. }
  1859. private function addCms($type, $version) {
  1860. $this->types[] = $type;
  1861. $this->versions[] = $version;
  1862. }
  1863. private function checkBitrix($dir, &$version) {
  1864. $version = self::CMS_VERSION_UNDEFINED;
  1865. $res = false;
  1866. if (file_exists($dir . '/bitrix')) {
  1867. $res = true;
  1868. $tmp_content = @file_get_contents($this->root_path . '/bitrix/modules/main/classes/general/version.php');
  1869. if (preg_match('|define\("SM_VERSION","(.+?)"\)|smi', $tmp_content, $tmp_ver)) {
  1870. $version = $tmp_ver[1];
  1871. }
  1872. }
  1873. return $res;
  1874. }
  1875. private function checkWordpress($dir, &$version) {
  1876. $version = self::CMS_VERSION_UNDEFINED;
  1877. $res = false;
  1878. if (file_exists($dir . '/wp-admin')) {
  1879. $res = true;
  1880. $tmp_content = @file_get_contents($dir . '/wp-includes/version.php');
  1881. if (preg_match('|\$wp_version\s*=\s*\'(.+?)\'|smi', $tmp_content, $tmp_ver)) {
  1882. $version = $tmp_ver[1];
  1883. }
  1884. }
  1885. return $res;
  1886. }
  1887. private function checkJoomla($dir, &$version) {
  1888. $version = self::CMS_VERSION_UNDEFINED;
  1889. $res = false;
  1890. if (file_exists($dir . '/libraries/joomla')) {
  1891. $res = true;
  1892. // for 1.5.x
  1893. $tmp_content = @file_get_contents($dir . '/libraries/joomla/version.php');
  1894. if (preg_match('|var\s+\$RELEASE\s*=\s*\'(.+?)\'|smi', $tmp_content, $tmp_ver)) {
  1895. $version = $tmp_ver[1];
  1896. if (preg_match('|var\s+\$DEV_LEVEL\s*=\s*\'(.+?)\'|smi', $tmp_content, $tmp_ver)) {
  1897. $version .= '.' . $tmp_ver[1];
  1898. }
  1899. }
  1900. // for 1.7.x
  1901. $tmp_content = @file_get_contents($dir . '/includes/version.php');
  1902. if (preg_match('|public\s+\$RELEASE\s*=\s*\'(.+?)\'|smi', $tmp_content, $tmp_ver)) {
  1903. $version = $tmp_ver[1];
  1904. if (preg_match('|public\s+\$DEV_LEVEL\s*=\s*\'(.+?)\'|smi', $tmp_content, $tmp_ver)) {
  1905. $version .= '.' . $tmp_ver[1];
  1906. }
  1907. }
  1908. // for 2.5.x and 3.x
  1909. $tmp_content = @file_get_contents($dir . '/libraries/cms/version/version.php');
  1910. if (preg_match('|const\s+RELEASE\s*=\s*\'(.+?)\'|smi', $tmp_content, $tmp_ver)) {
  1911. $version = $tmp_ver[1];
  1912. if (preg_match('|const\s+DEV_LEVEL\s*=\s*\'(.+?)\'|smi', $tmp_content, $tmp_ver)) {
  1913. $version .= '.' . $tmp_ver[1];
  1914. }
  1915. }
  1916. }
  1917. return $res;
  1918. }
  1919. private function checkDle($dir, &$version) {
  1920. $version = self::CMS_VERSION_UNDEFINED;
  1921. $res = false;
  1922. if (file_exists($dir . '/engine/engine.php')) {
  1923. $res = true;
  1924. $tmp_content = @file_get_contents($dir . '/engine/data/config.php');
  1925. if (preg_match('|\'version_id\'\s*=>\s*"(.+?)"|smi', $tmp_content, $tmp_ver)) {
  1926. $version = $tmp_ver[1];
  1927. }
  1928. $tmp_content = @file_get_contents($dir . '/install.php');
  1929. if (preg_match('|\'version_id\'\s*=>\s*"(.+?)"|smi', $tmp_content, $tmp_ver)) {
  1930. $version = $tmp_ver[1];
  1931. }
  1932. }
  1933. return $res;
  1934. }
  1935. private function checkIpb($dir, &$version) {
  1936. $version = self::CMS_VERSION_UNDEFINED;
  1937. $res = false;
  1938. if (file_exists($dir . '/ips_kernel')) {
  1939. $res = true;
  1940. $tmp_content = @file_get_contents($dir . '/ips_kernel/class_xml.php');
  1941. if (preg_match('|IP.Board\s+v([0-9\.]+)|si', $tmp_content, $tmp_ver)) {
  1942. $version = $tmp_ver[1];
  1943. }
  1944. }
  1945. return $res;
  1946. }
  1947. private function checkWebAsyst($dir, &$version) {
  1948. $version = self::CMS_VERSION_UNDEFINED;
  1949. $res = false;
  1950. if (file_exists($dir . '/wbs/installer')) {
  1951. $res = true;
  1952. $tmp_content = @file_get_contents($dir . '/license.txt');
  1953. if (preg_match('|v([0-9\.]+)|si', $tmp_content, $tmp_ver)) {
  1954. $version = $tmp_ver[1];
  1955. }
  1956. }
  1957. return $res;
  1958. }
  1959. private function checkOsCommerce($dir, &$version) {
  1960. $version = self::CMS_VERSION_UNDEFINED;
  1961. $res = false;
  1962. if (file_exists($dir . '/includes/version.php')) {
  1963. $res = true;
  1964. $tmp_content = @file_get_contents($dir . '/includes/version.php');
  1965. if (preg_match('|([0-9\.]+)|smi', $tmp_content, $tmp_ver)) {
  1966. $version = $tmp_ver[1];
  1967. }
  1968. }
  1969. return $res;
  1970. }
  1971. private function checkDrupal($dir, &$version) {
  1972. $version = self::CMS_VERSION_UNDEFINED;
  1973. $res = false;
  1974. if (file_exists($dir . '/sites/all')) {
  1975. $res = true;
  1976. $tmp_content = @file_get_contents($dir . '/CHANGELOG.txt');
  1977. if (preg_match('|Drupal\s+([0-9\.]+)|smi', $tmp_content, $tmp_ver)) {
  1978. $version = $tmp_ver[1];
  1979. }
  1980. }
  1981. if (file_exists($dir . '/core/lib/Drupal.php')) {
  1982. $res = true;
  1983. $tmp_content = @file_get_contents($dir . '/core/lib/Drupal.php');
  1984. if (preg_match('|VERSION\s*=\s*\'(\d+\.\d+\.\d+)\'|smi', $tmp_content, $tmp_ver)) {
  1985. $version = $tmp_ver[1];
  1986. }
  1987. }
  1988. if (file_exists($dir . 'modules/system/system.info')) {
  1989. $res = true;
  1990. $tmp_content = @file_get_contents($dir . 'modules/system/system.info');
  1991. if (preg_match('|version\s*=\s*"\d+\.\d+"|smi', $tmp_content, $tmp_ver)) {
  1992. $version = $tmp_ver[1];
  1993. }
  1994. }
  1995. return $res;
  1996. }
  1997. private function checkMODX($dir, &$version) {
  1998. $version = self::CMS_VERSION_UNDEFINED;
  1999. $res = false;
  2000. if (file_exists($dir . '/manager/assets')) {
  2001. $res = true;
  2002. // no way to pick up version
  2003. }
  2004. return $res;
  2005. }
  2006. private function checkInstantCms($dir, &$version) {
  2007. $version = self::CMS_VERSION_UNDEFINED;
  2008. $res = false;
  2009. if (file_exists($dir . '/plugins/p_usertab')) {
  2010. $res = true;
  2011. $tmp_content = @file_get_contents($dir . '/index.php');
  2012. if (preg_match('|InstantCMS\s+v([0-9\.]+)|smi', $tmp_content, $tmp_ver)) {
  2013. $version = $tmp_ver[1];
  2014. }
  2015. }
  2016. return $res;
  2017. }
  2018. private function checkPhpBb($dir, &$version) {
  2019. $version = self::CMS_VERSION_UNDEFINED;
  2020. $res = false;
  2021. if (file_exists($dir . '/includes/acp')) {
  2022. $res = true;
  2023. $tmp_content = @file_get_contents($dir . '/config.php');
  2024. if (preg_match('|phpBB\s+([0-9\.x]+)|smi', $tmp_content, $tmp_ver)) {
  2025. $version = $tmp_ver[1];
  2026. }
  2027. }
  2028. return $res;
  2029. }
  2030. private function checkVBulletin($dir, &$version) {
  2031. $version = self::CMS_VERSION_UNDEFINED;
  2032. $res = false;
  2033. // removed dangerous code from here, see DEF-10390 for details
  2034. return $res;
  2035. }
  2036. private function checkPhpShopScript($dir, &$version) {
  2037. $version = self::CMS_VERSION_UNDEFINED;
  2038. $res = false;
  2039. if (file_exists($dir . '/install/consts.php')) {
  2040. $res = true;
  2041. $tmp_content = @file_get_contents($dir . '/install/consts.php');
  2042. if (preg_match('|STRING_VERSION\',\s*\'(.+?)\'|smi', $tmp_content, $tmp_ver)) {
  2043. $version = $tmp_ver[1];
  2044. }
  2045. }
  2046. return $res;
  2047. }
  2048. }
  2049. class CloudAssistedRequest
  2050. {
  2051. const API_URL = 'https://api.imunify360.com/api/hashes/check';
  2052. private $timeout = 60;
  2053. private $server_id = '';
  2054. public function __construct($server_id, $timeout = 60)
  2055. {
  2056. $this->server_id = $server_id;
  2057. $this->timeout = $timeout;
  2058. }
  2059. public function checkFilesByHash($list_of_hashes = array())
  2060. {
  2061. if (empty($list_of_hashes)) {
  2062. return array(
  2063. [],
  2064. [],
  2065. [],
  2066. 'white' => [],
  2067. 'black' => [],
  2068. 'verdicts_black' => [],
  2069. );
  2070. }
  2071. $result = $this->request($list_of_hashes);
  2072. $white = isset($result['white']) ? $result['white'] : [];
  2073. $black = isset($result['black']) ? $result['black'] : [];
  2074. $verdicts_black = isset($result['verdicts_black']) ? $result['verdicts_black'] : [];
  2075. return [
  2076. $white,
  2077. $black,
  2078. $verdicts_black,
  2079. 'white' => $white,
  2080. 'black' => $black,
  2081. 'verdicts_black' => $verdicts_black,
  2082. ];
  2083. }
  2084. // /////////////////////////////////////////////////////////////////////////
  2085. private function request($list_of_hashes)
  2086. {
  2087. $url = self::API_URL . '?server_id=' . urlencode($this->server_id) . '&indexed=1';
  2088. $data = array(
  2089. 'hashes' => $list_of_hashes,
  2090. );
  2091. $json_hashes = json_encode($data);
  2092. $info = [];
  2093. try {
  2094. $ch = curl_init();
  2095. curl_setopt($ch, CURLOPT_URL , $url);
  2096. curl_setopt($ch, CURLOPT_CUSTOMREQUEST , 'POST');
  2097. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER , false);
  2098. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST , false);
  2099. curl_setopt($ch, CURLOPT_TIMEOUT , $this->timeout);
  2100. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT , $this->timeout);
  2101. curl_setopt($ch, CURLOPT_RETURNTRANSFER , true);
  2102. curl_setopt($ch, CURLOPT_HTTPHEADER , array('Content-Type: application/json'));
  2103. curl_setopt($ch, CURLOPT_POSTFIELDS , $json_hashes);
  2104. $response_data = curl_exec($ch);
  2105. $info = curl_getinfo($ch);
  2106. $errno = curl_errno($ch);
  2107. curl_close($ch);
  2108. }
  2109. catch (Exception $e) {
  2110. throw new Exception($e->getMessage());
  2111. }
  2112. $http_code = isset($info['http_code']) ? $info['http_code'] : 0;
  2113. if ($http_code !== 200) {
  2114. if ($errno == 28) {
  2115. throw new Exception('Reuqest timeout! Return code: ' . $http_code . ' Curl error num: ' . $errno);
  2116. }
  2117. throw new Exception('Invalid response from the Cloud Assisted server! Return code: ' . $http_code . ' Curl error num: ' . $errno);
  2118. }
  2119. $result = json_decode($response_data, true);
  2120. if (is_null($result)) {
  2121. throw new Exception('Invalid json format in the response!');
  2122. }
  2123. if (isset($result['error'])) {
  2124. throw new Exception('API server returned error!');
  2125. }
  2126. if (!isset($result['result'])) {
  2127. throw new Exception('API server returned error! Cannot find field "result".');
  2128. }
  2129. return $result['result'];
  2130. }
  2131. }
  2132. /**
  2133. * Class Report
  2134. */
  2135. abstract class Report
  2136. {
  2137. const MAX_ROWS = 15000;
  2138. const AIBOLIT_MAX_NUMBER = 200;
  2139. /**
  2140. * Report constructor.
  2141. * @param $mnemo
  2142. * @param $path
  2143. * @param $db_location
  2144. * @param $db_meta_info_version
  2145. * @param $report_mask
  2146. * @param $extended_report
  2147. * @param $rapid_account_scan
  2148. * @param $ai_version
  2149. * @param $ai_hoster
  2150. * @param $ai_extra_warn
  2151. * @param $ai_expert
  2152. * @param $ai_smart
  2153. * @param $root_path
  2154. * @param $scan_all
  2155. * @param $specific_ext
  2156. * @param $doublecheck
  2157. * @param $use_doublecheck
  2158. * @param $start
  2159. * @param $snum
  2160. * @param $max_size
  2161. * @param $add_prefix
  2162. * @param $no_prefix
  2163. * @param $small
  2164. * @param $file
  2165. * @param $echo
  2166. */
  2167. public function __construct($mnemo, $path, $db_location, $db_meta_info_version, $report_mask, $extended_report,
  2168. $rapid_account_scan, $ai_version, $ai_hoster, $ai_extra_warn, $ai_expert, $ai_smart, $root_path, $scan_all,
  2169. $specific_ext, $doublecheck, $use_doublecheck, $start, $snum, $max_size, $add_prefix, $no_prefix, $small, $file, $echo)
  2170. {
  2171. }
  2172. /**
  2173. * Generate report
  2174. * @param $vars
  2175. * @param $scan_time
  2176. * @return mixed
  2177. */
  2178. public function generateReport($vars, $scan_time)
  2179. {
  2180. }
  2181. /**
  2182. * Write report to file and return string to stdout after write attempt
  2183. * @return string
  2184. */
  2185. public function write()
  2186. {
  2187. }
  2188. protected static function convertToUTF8($text)
  2189. {
  2190. if (function_exists('mb_convert_encoding')) {
  2191. $text = @mb_convert_encoding($text, 'utf-8', 'auto');
  2192. $text = @mb_convert_encoding($text, 'UTF-8', 'UTF-8');
  2193. }
  2194. return $text;
  2195. }
  2196. }
  2197. /**
  2198. * Class JSONReport report all data to JSON
  2199. */
  2200. class JSONReport extends Report
  2201. {
  2202. const REPORT_MASK_DOORWAYS = 1<<2;
  2203. const REPORT_MASK_SUSP = 1<<3;
  2204. const REPORT_MASK_FULL = self::REPORT_MASK_DOORWAYS | self::REPORT_MASK_SUSP;
  2205. protected $raw_report;
  2206. private $extended_report;
  2207. private $rapid_account_scan;
  2208. private $ai_extra_warn;
  2209. private $ai_hoster;
  2210. private $report_mask;
  2211. private $noPrefix;
  2212. private $addPrefix;
  2213. private $mnemo;
  2214. private $small;
  2215. protected $file;
  2216. private $echo;
  2217. public function __construct($mnemo, $path, $db_location, $db_meta_info_version, $report_mask, $extended_report,
  2218. $rapid_account_scan, $ai_version, $ai_hoster, $ai_extra_warn, $ai_expert, $ai_smart, $root_path, $scan_all,
  2219. $specific_ext, $doublecheck, $use_doublecheck, $start, $snum, $max_size, $add_prefix, $no_prefix,
  2220. $small = false, $file = false, $echo = false)
  2221. {
  2222. $this->mnemo = $mnemo;
  2223. $this->ai_extra_warn = $ai_extra_warn;
  2224. $this->extended_report = $extended_report;
  2225. $this->rapid_account_scan = $rapid_account_scan;
  2226. $this->ai_hoster = $ai_hoster;
  2227. $this->report_mask = $report_mask;
  2228. $this->addPrefix = $add_prefix;
  2229. $this->noPrefix = $no_prefix;
  2230. $this->small = $small;
  2231. $this->echo = $echo;
  2232. $this->raw_report = [];
  2233. $this->raw_report['summary'] = array(
  2234. 'scan_path' => $path,
  2235. 'report_time' => time(),
  2236. 'ai_version' => $ai_version,
  2237. 'db_location' => $db_location,
  2238. 'db_version' => $db_meta_info_version,
  2239. );
  2240. $this->file = $file;
  2241. if($this->file) {
  2242. @unlink($this->file);
  2243. @unlink($this->file . '.tmp');
  2244. }
  2245. }
  2246. public function generateReport($vars, $scan_time)
  2247. {
  2248. $tmp = clone $vars;
  2249. if (!$this->small) {
  2250. $tmp->criticalPHP = array_slice($tmp->criticalPHP, 0, self::MAX_ROWS);
  2251. $tmp->criticalJS = array_slice($tmp->criticalJS, 0, self::MAX_ROWS);
  2252. $tmp->notRead = array_slice($tmp->notRead, 0, self::AIBOLIT_MAX_NUMBER);
  2253. $tmp->symLinks = array_slice($tmp->symLinks, 0, self::AIBOLIT_MAX_NUMBER);
  2254. $tmp->warningPHP = array_slice($tmp->warningPHP, 0, self::AIBOLIT_MAX_NUMBER);
  2255. $tmp->bigFiles = array_slice($tmp->bigFiles, 0, self::AIBOLIT_MAX_NUMBER);
  2256. $tmp->doorway = array_slice($tmp->doorway, 0, self::AIBOLIT_MAX_NUMBER);
  2257. $this->generateJSONTables($tmp);
  2258. }
  2259. $this->generateSummary($tmp, $scan_time);
  2260. }
  2261. private function generateSummary($vars, $scan_time)
  2262. {
  2263. $summary_counters = array();
  2264. $summary_counters['redirect'] = count($vars->redirect);
  2265. $summary_counters['critical_php'] = count($vars->criticalPHP);
  2266. $summary_counters['critical_js'] = count($vars->criticalJS);
  2267. $summary_counters['cloudhash'] = count($vars->blackFiles);
  2268. $summary_counters['phishing'] = count($vars->phishing);
  2269. $summary_counters['unix_exec'] = 0; // count($g_UnixExec);
  2270. $summary_counters['iframes'] = 0; // count($g_Iframer);
  2271. $summary_counters['not_read'] = count($vars->notRead);
  2272. $summary_counters['base64'] = 0; // count($g_Base64);
  2273. $summary_counters['heuristics'] = 0; // count($g_HeuristicDetected);
  2274. $summary_counters['symlinks'] = count($vars->symLinks);
  2275. $summary_counters['big_files_skipped'] = count($vars->bigFiles);
  2276. $summary_counters['suspicious'] = count($vars->warningPHP);
  2277. $this->raw_report['summary']['counters'] = $summary_counters;
  2278. $this->raw_report['summary']['total_files'] = $vars->foundTotalFiles;
  2279. $this->raw_report['summary']['scan_time'] = $scan_time;
  2280. if ($this->extended_report && $this->rapid_account_scan) {
  2281. $this->raw_report['summary']['counters']['rescan_count'] = $vars->rescanCount;
  2282. }
  2283. }
  2284. private function generateJSONTables($vars)
  2285. {
  2286. $this->raw_report['vulners'] = $this->getRawJsonVuln($vars->vulnerable, $vars);
  2287. if (count($vars->criticalPHP) > 0) {
  2288. $this->raw_report['php_malware'] = $this->getRawJson($vars->criticalPHP, $vars, $vars->criticalPHPFragment, $vars->criticalPHPSig);
  2289. }
  2290. if (count($vars->blackFiles) > 0) {
  2291. $this->raw_report['cloudhash'] = $this->getRawBlackData($vars->blackFiles);
  2292. }
  2293. if (count($vars->criticalJS) > 0) {
  2294. $this->raw_report['js_malware'] = $this->getRawJson($vars->criticalJS, $vars, $vars->criticalJSFragment, $vars->criticalJSSig);
  2295. }
  2296. if (count($vars->notRead) > 0) {
  2297. $this->raw_report['not_read'] = $vars->notRead;
  2298. }
  2299. if ($this->ai_hoster) {
  2300. if (count($vars->phishing) > 0) {
  2301. $this->raw_report['phishing'] = $this->getRawJson($vars->phishing, $vars, $vars->phishingFragment, $vars->phishingSigFragment);
  2302. }
  2303. if (count($vars->redirect) > 0) {
  2304. $this->raw_report['redirect'] = $this->getRawJson($vars->redirect, $vars, $vars->redirectPHPFragment);
  2305. }
  2306. if (count($vars->symLinks) > 0) {
  2307. $this->raw_report['sym_links'] = $vars->symLinks;
  2308. }
  2309. }
  2310. else {
  2311. if (count($vars->adwareList) > 0) {
  2312. $this->raw_report['adware'] = $this->getRawJson($vars->adwareList, $vars, $vars->adwareListFragment);
  2313. }
  2314. if (count($vars->bigFiles) > 0) {
  2315. $this->raw_report['big_files'] = $this->getRawJson($vars->bigFiles, $vars);
  2316. }
  2317. if ((count($vars->doorway) > 0) && JSONReport::checkMask($this->report_mask, JSONReport::REPORT_MASK_DOORWAYS)) {
  2318. $this->raw_report['doorway'] = $this->getRawJson($vars->doorway, $vars);
  2319. }
  2320. if (count($vars->CMS) > 0) {
  2321. $this->raw_report['cms'] = $vars->CMS;
  2322. }
  2323. }
  2324. if ($this->ai_extra_warn) {
  2325. if ((count($vars->warningPHP) > 0) && JSONReport::checkMask($this->report_mask, JSONReport::REPORT_MASK_FULL)) {
  2326. $this->raw_report['suspicious'] = $this->getRawJson($vars->warningPHP, $vars, $vars->warningPHPFragment, $vars->warningPHPSig);
  2327. }
  2328. }
  2329. }
  2330. public static function checkMask($mask, $need)
  2331. {
  2332. return (($mask & $need) == $need);
  2333. }
  2334. public function write()
  2335. {
  2336. $ret = '';
  2337. $res = @json_encode($this->raw_report);
  2338. if ($this->file!== '.' && $l_FH = fopen($this->file . '.tmp', 'w')) {
  2339. fputs($l_FH, $res);
  2340. fclose($l_FH);
  2341. if (rename($this->file . '.tmp', $this->file)) {
  2342. $ret = "Report written to '$this->file'.";
  2343. } else {
  2344. $ret = "Cannot create '$this->file'.";
  2345. }
  2346. }
  2347. if ($this->echo) {
  2348. echo $res;
  2349. }
  2350. return $ret;
  2351. }
  2352. ////////////////////////////////////////////////////////////////////////////
  2353. private function getRawJsonVuln($par_List, $vars)
  2354. {
  2355. $results = array();
  2356. $l_Src = array(
  2357. '&quot;',
  2358. '&lt;',
  2359. '&gt;',
  2360. '&amp;',
  2361. '&#039;',
  2362. '<' . '?php.'
  2363. );
  2364. $l_Dst = array(
  2365. '"',
  2366. '<',
  2367. '>',
  2368. '&',
  2369. '\'',
  2370. '<' . '?php '
  2371. );
  2372. for ($i = 0, $iMax = count($par_List); $i < $iMax; $i++) {
  2373. $l_Pos = $par_List[$i]['ndx'];
  2374. $fn = $this->addPrefix . str_replace($this->noPrefix, '', $vars->structure['n'][$l_Pos]);
  2375. if (ENCODE_FILENAMES_WITH_BASE64) {
  2376. $res['fn'] = base64_encode($fn);
  2377. } else {
  2378. $res['fn'] = self::convertToUTF8($fn);
  2379. }
  2380. $res['sig'] = $par_List[$i]['id'];
  2381. $res['ct'] = $vars->structure['c'][$l_Pos];
  2382. $res['mt'] = $vars->structure['m'][$l_Pos];
  2383. $res['et'] = $vars->structure['e'][$l_Pos];
  2384. $res['sz'] = $vars->structure['s'][$l_Pos];
  2385. $res['sigid'] = 'vuln_' . md5($vars->structure['n'][$l_Pos] . $par_List[$i]['id']);
  2386. $results[] = $res;
  2387. }
  2388. return $results;
  2389. }
  2390. private function getRawJson($par_List, $vars, $par_Details = null, $par_SigId = null)
  2391. {
  2392. $results = array();
  2393. $l_Src = array(
  2394. '&quot;',
  2395. '&lt;',
  2396. '&gt;',
  2397. '&amp;',
  2398. '&#039;',
  2399. '<' . '?php.'
  2400. );
  2401. $l_Dst = array(
  2402. '"',
  2403. '<',
  2404. '>',
  2405. '&',
  2406. '\'',
  2407. '<' . '?php '
  2408. );
  2409. for ($i = 0, $iMax = count($par_List); $i < $iMax; $i++) {
  2410. if ($par_SigId != null) {
  2411. $l_SigId = 'id_' . $par_SigId[$i];
  2412. } else {
  2413. $l_SigId = 'id_n' . rand(1000000, 9000000);
  2414. }
  2415. $l_Pos = $par_List[$i];
  2416. $fn = $this->addPrefix . str_replace($this->noPrefix, '', $vars->structure['n'][$l_Pos]);
  2417. if (ENCODE_FILENAMES_WITH_BASE64) {
  2418. $res['fn'] = base64_encode($fn);
  2419. } else {
  2420. $res['fn'] = self::convertToUTF8($fn);
  2421. }
  2422. if ($par_Details != null) {
  2423. $res['sig'] = preg_replace('|(L\d+).+__AI_MARKER__|smi', '[$1]: ...', $par_Details[$i]);
  2424. $res['sig'] = preg_replace('/[^\x20-\x7F]/', '.', $res['sig']);
  2425. $res['sig'] = preg_replace('/__AI_LINE1__(\d+)__AI_LINE2__/', '[$1] ', $res['sig']);
  2426. $res['sig'] = preg_replace('/__AI_MARKER__/', ' @!!!>', $res['sig']);
  2427. $res['sig'] = str_replace($l_Src, $l_Dst, $res['sig']);
  2428. }
  2429. $res['sig'] = self::convertToUTF8($res['sig']);
  2430. $res['ct'] = $vars->structure['c'][$l_Pos];
  2431. $res['mt'] = $vars->structure['m'][$l_Pos];
  2432. $res['sz'] = $vars->structure['s'][$l_Pos];
  2433. $res['et'] = $vars->structure['e'][$l_Pos];
  2434. $res['hash'] = $vars->structure['crc'][$l_Pos];
  2435. $res['sigid'] = $l_SigId;
  2436. if (isset($vars->structure['sha256'][$l_Pos])) {
  2437. $res['sha256'] = $vars->structure['sha256'][$l_Pos];
  2438. } else {
  2439. $res['sha256'] = '';
  2440. }
  2441. if (isset($par_SigId) && isset($this->mnemo[$par_SigId[$i]])) {
  2442. $res['sn'] = $this->mnemo[$par_SigId[$i]];
  2443. } else {
  2444. $res['sn'] = '';
  2445. }
  2446. $results[] = $res;
  2447. }
  2448. return $results;
  2449. }
  2450. private function getRawBlackData($black_list)
  2451. {
  2452. $result = array();
  2453. foreach ($black_list as $filename => $hash)
  2454. {
  2455. try {
  2456. $stat = stat($filename);
  2457. $sz = $stat['size'];
  2458. $ct = $stat['ctime'];
  2459. $mt = $stat['mtime'];
  2460. }
  2461. catch (Exception $e) {
  2462. continue;
  2463. }
  2464. $result[] = array(
  2465. 'fn' => $filename,
  2466. 'sig' => '',
  2467. 'ct' => $ct,
  2468. 'mt' => $mt,
  2469. 'et' => $hash['ts'],
  2470. 'sz' => $sz,
  2471. 'hash' => $hash['h'],
  2472. 'sigid' => crc32($filename),
  2473. 'sn' => isset($hash['sn']) ? $hash['sn'] : 'cld',
  2474. );
  2475. }
  2476. return $result;
  2477. }
  2478. }
  2479. /**
  2480. * Class JSONReport report all data to JSON
  2481. */
  2482. class PHPReport extends JSONReport
  2483. {
  2484. public function write()
  2485. {
  2486. $ret = '';
  2487. $res = @serialize($this->raw_report);
  2488. if ($l_FH = fopen($this->file . '.tmp', 'w')) {
  2489. fputs($l_FH, $res);
  2490. fclose($l_FH);
  2491. if (rename($this->file . '.tmp', $this->file)) {
  2492. $ret = "Report written to '$this->file'.";
  2493. } else {
  2494. $ret = "Cannot create '$this->file'.";
  2495. }
  2496. }
  2497. return $ret;
  2498. }
  2499. ////////////////////////////////////////////////////////////////////////////
  2500. }
  2501. /**
  2502. * Class PlainReport report to text file
  2503. */
  2504. class PlainReport extends Report
  2505. {
  2506. private $extended_report;
  2507. private $rapid_account_scan;
  2508. private $ai_extra_warn;
  2509. private $ai_hoster;
  2510. private $noPrefix;
  2511. private $addPrefix;
  2512. private $mnemo;
  2513. private $file;
  2514. private $raw_report;
  2515. public function __construct($mnemo, $path, $db_location, $db_meta_info_version, $report_mask, $extended_report,
  2516. $rapid_account_scan, $ai_version, $ai_hoster, $ai_extra_warn, $ai_expert, $ai_smart, $root_path, $scan_all,
  2517. $specific_ext, $doublecheck, $use_doublecheck, $start, $snum, $max_size, $add_prefix, $no_prefix,
  2518. $small = false, $file = false, $echo = false)
  2519. {
  2520. $this->mnemo = $mnemo;
  2521. $this->ai_extra_warn = $ai_extra_warn;
  2522. $this->extended_report = $extended_report;
  2523. $this->rapid_account_scan = $rapid_account_scan;
  2524. $this->ai_hoster = $ai_hoster;
  2525. $this->addPrefix = $add_prefix;
  2526. $this->noPrefix = $no_prefix;
  2527. $this->file = $file;
  2528. if($this->file) {
  2529. @unlink($this->file);
  2530. @unlink($this->file . '.tmp');
  2531. }
  2532. $this->raw_report = '';
  2533. if (function_exists("gethostname") && is_callable("gethostname")) {
  2534. $l_HostName = gethostname();
  2535. } else {
  2536. $l_HostName = '???';
  2537. }
  2538. $this->raw_report = "# Malware list detected by AI-Bolit (https://revisium.com/ai/) on " . date("d/m/Y H:i:s", time()) . " " . $l_HostName . "\n\n";
  2539. }
  2540. public function generateReport($vars, $scan_time = false)
  2541. {
  2542. if (!$this->ai_hoster) {
  2543. foreach ($vars->vulnerable as $l_Item) {
  2544. $this->raw_report .= '[VULNERABILITY] ' . $this->replacePathArray($vars->structure['n'][$l_Item['ndx']]) . ' - ' . $l_Item['id'] . "\n";
  2545. }
  2546. $this->raw_report .= "\n";
  2547. }
  2548. if (count($vars->criticalPHP) > 0) {
  2549. $this->raw_report .= '[SERVER MALWARE]' . "\n" . $this->printPlainList(array_slice($vars->criticalPHP, 0, self::MAX_ROWS), $vars, $vars->criticalPHPFragment) . "\n";
  2550. }
  2551. if (count($vars->criticalJS) > 0) {
  2552. $this->raw_report .= '[CLIENT MALWARE / JS]' . "\n" . $this->printPlainList(array_slice($vars->criticalJS, 0, self::MAX_ROWS), $vars, $vars->criticalJSFragment) . "\n";
  2553. }
  2554. if (count($vars->notRead) > 0) {
  2555. $this->raw_report .= '[SCAN ERROR / SKIPPED]' . "\n" . $this->printPlainList(array_slice($vars->notRead, 0, self::AIBOLIT_MAX_NUMBER), $vars) . "\n\n";
  2556. }
  2557. if (count($vars->symLinks) > 0) {
  2558. $this->raw_report .= '[SYMLINKS]' . "\n" . $this->printPlainList(array_slice($vars->symLinks, 0, self::AIBOLIT_MAX_NUMBER), $vars) . "\n\n";
  2559. }
  2560. if (!$this->ai_hoster) {
  2561. if (count($vars->phishing) > 0) {
  2562. $this->raw_report .= '[PHISHING]' . "\n" . $this->printPlainList($vars->phishing, $vars, $vars->phishingFragment) . "\n";
  2563. }
  2564. if (count($vars->redirect) > 0) {
  2565. $this->raw_report .= printList($vars->redirect, $vars, $vars->redirectPHPFragment);
  2566. }
  2567. }
  2568. if ($this->ai_extra_warn) {
  2569. if (count($vars->warningPHP) > 0) {
  2570. $this->raw_report .= '[SUSPICIOUS]' . "\n" . $this->printPlainList(array_slice($vars->warningPHP, 0, self::AIBOLIT_MAX_NUMBER), $vars, $vars->warningPHPFragment) . "\n";
  2571. }
  2572. }
  2573. if (!$this->ai_hoster) {
  2574. if (count($vars->adwareList) > 0) {
  2575. $this->raw_report .= '[ADWARE]' . "\n" . $this->printPlainList($vars->adwareList, $vars, $vars->adwareListFragment) . "\n";
  2576. }
  2577. if (count($vars->bigFiles) > 0) {
  2578. $this->raw_report .= '[BIG FILES / SKIPPED]' . "\n" . $this->printPlainList(array_slice($vars->bigFiles, 0, self::AIBOLIT_MAX_NUMBER), $vars) . "\n\n";
  2579. }
  2580. }
  2581. $this->raw_report = preg_replace('|__AI_LINE1__|smi', '[', $this->raw_report);
  2582. $this->raw_report = preg_replace('|__AI_LINE2__|smi', '] ', $this->raw_report);
  2583. $this->raw_report = preg_replace('|__AI_MARKER__|smi', ' %> ', $this->raw_report);
  2584. }
  2585. public function write()
  2586. {
  2587. $ret = '';
  2588. if ($l_FH = fopen($this->file . '.tmp', "w")) {
  2589. fputs($l_FH, $this->raw_report);
  2590. fclose($l_FH);
  2591. }
  2592. if (rename($this->file . '.tmp', $this->file)) {
  2593. $ret = "Report written to '$this->file'.";
  2594. } else {
  2595. $ret = "Cannot create '$this->file'.";
  2596. }
  2597. return $ret;
  2598. }
  2599. ////////////////////////////////////////////////////////////////////////////
  2600. private function printPlainList($par_List, $vars, $par_Details = null) {
  2601. $l_Result = "";
  2602. $l_Src = array(
  2603. '&quot;',
  2604. '&lt;',
  2605. '&gt;',
  2606. '&amp;',
  2607. '&#039;'
  2608. );
  2609. $l_Dst = array(
  2610. '"',
  2611. '<',
  2612. '>',
  2613. '&',
  2614. '\''
  2615. );
  2616. for ($i = 0, $iMax = count($par_List); $i < $iMax; $i++) {
  2617. $l_Pos = $par_List[$i];
  2618. if ($par_Details != null) {
  2619. $l_Body = preg_replace('|(L\d+).+__AI_MARKER__|smi', '$1: ...', $par_Details[$i]);
  2620. $l_Body = preg_replace('/[^\x20-\x7F]/', '.', $l_Body);
  2621. $l_Body = str_replace($l_Src, $l_Dst, $l_Body);
  2622. } else {
  2623. $l_Body = '';
  2624. }
  2625. if (is_file($vars->structure['n'][$l_Pos])) {
  2626. $l_Result .= $this->addPrefix . str_replace($this->noPrefix, '', $vars->structure['n'][$l_Pos]) . "\t\t\t" . $l_Body . "\n";
  2627. } else {
  2628. $l_Result .= $this->addPrefix . str_replace($this->noPrefix, '', $vars->structure['n'][$par_List[$i]]) . "\n";
  2629. }
  2630. }
  2631. return $l_Result;
  2632. }
  2633. private function replacePathArray($par_Arr) {
  2634. array_walk($par_Arr, function(&$n) {
  2635. $n = $this->addPrefix . str_replace($this->noPrefix, '', $n);
  2636. });
  2637. return $par_Arr;
  2638. }
  2639. }
  2640. /**
  2641. * Class CSVReport report table data to CSV
  2642. */
  2643. class CSVReport extends Report
  2644. {
  2645. const CRITICAL_PHP = 'p';
  2646. const CRITICAL_JS = 'j';
  2647. const SUSPICIOUS = 's';
  2648. const PHISHING = 'h';
  2649. const VULNERABLE = 'v';
  2650. const CLOUDHASH = 'c';
  2651. const BIG_FILES = 'b';
  2652. const NOT_READ = 'n';
  2653. const DOORWAY = 'd';
  2654. const SYMLINKS = 'm';
  2655. const ADWARE = 'a';
  2656. const CMS = 'e';
  2657. private $extended_report;
  2658. private $rapid_account_scan;
  2659. private $ai_extra_warn;
  2660. private $ai_hoster;
  2661. private $noPrefix;
  2662. private $addPrefix;
  2663. private $mnemo;
  2664. private $file;
  2665. public function __construct($mnemo, $path, $db_location, $db_meta_info_version, $report_mask, $extended_report,
  2666. $rapid_account_scan, $ai_version, $ai_hoster, $ai_extra_warn, $ai_expert, $ai_smart, $root_path, $scan_all,
  2667. $specific_ext, $doublecheck, $use_doublecheck, $start, $snum, $max_size, $add_prefix, $no_prefix,
  2668. $small = false, $file = false, $echo = false)
  2669. {
  2670. $this->mnemo = $mnemo;
  2671. $this->ai_extra_warn = $ai_extra_warn;
  2672. $this->extended_report = $extended_report;
  2673. $this->rapid_account_scan = $rapid_account_scan;
  2674. $this->ai_hoster = $ai_hoster;
  2675. $this->addPrefix = $add_prefix;
  2676. $this->noPrefix = $no_prefix;
  2677. $this->file = $file;
  2678. if($this->file) {
  2679. @unlink($this->file);
  2680. @unlink($this->file . '.tmp');
  2681. }
  2682. }
  2683. public function generateReport($vars, $scan_time = false)
  2684. {
  2685. $this->writeRawCSVVuln($vars->vulnerable, $vars);
  2686. if (count($vars->criticalPHP) > 0) {
  2687. $this->writeRawCSV($vars->criticalPHP, $vars, self::CRITICAL_PHP, $vars->criticalPHPFragment, $vars->criticalPHPSig);
  2688. }
  2689. if (count($vars->blackFiles) > 0) {
  2690. $this->writeRawBlackData($vars->blackFiles);
  2691. }
  2692. if (count($vars->criticalJS) > 0) {
  2693. $this->writeRawCSV($vars->criticalJS, $vars, self::CRITICAL_JS, $vars->criticalJSFragment, $vars->criticalJSSig);
  2694. }
  2695. if (count($vars->notRead) > 0) {
  2696. $this->writeListCSV(self::NOT_READ, $vars->notRead);
  2697. }
  2698. if ($this->ai_hoster) {
  2699. if (count($vars->phishing) > 0) {
  2700. $this->writeRawCSV($vars->phishing, $vars, self::PHISHING, $vars->phishingFragment, $vars->phishingSigFragment);
  2701. }
  2702. if (count($vars->symLinks) > 0) {
  2703. $this->writeListCSV(self::SYMLINKS, $vars->symLinks);
  2704. }
  2705. }
  2706. else {
  2707. if (count($vars->adwareList) > 0) {
  2708. $this->writeRawCSV($vars->adwareList, $vars, self::ADWARE, $vars->adwareListFragment);
  2709. }
  2710. if (count($vars->bigFiles) > 0) {
  2711. $this->writeRawCSV($vars->bigFiles, $vars, self::BIG_FILES);
  2712. }
  2713. if (count($vars->doorway) > 0) {
  2714. $this->writeRawCSV($vars->doorway, $vars, self::DOORWAY);
  2715. }
  2716. if (count($vars->CMS) > 0) {
  2717. $this->writeListCSV(self::CMS, $vars->CMS);
  2718. }
  2719. }
  2720. if ($this->ai_extra_warn) {
  2721. if (count($vars->warningPHP) > 0) {
  2722. $this->writeRawCSV($vars->warningPHP, $vars, self::SUSPICIOUS, $vars->warningPHPFragment, $vars->warningPHPSig);
  2723. }
  2724. }
  2725. }
  2726. public function write()
  2727. {
  2728. $ret = '';
  2729. if ($this->file) {
  2730. if (rename($this->file . '.tmp', $this->file)) {
  2731. $ret = "Report written to '$this->file'.";
  2732. } else {
  2733. $ret = "Cannot create '$this->file'.";
  2734. }
  2735. }
  2736. return $ret;
  2737. }
  2738. ////////////////////////////////////////////////////////////////////////////
  2739. private function writeRawCSVVuln($par_List, $vars)
  2740. {
  2741. if (count($par_List) === 0) {
  2742. return;
  2743. }
  2744. $fh = fopen($this->file . '.tmp', "a+");
  2745. for ($i = 0, $iMax = count($par_List); $i < $iMax; $i++) {
  2746. $res = [];
  2747. $l_Pos = $par_List[$i]['ndx'];
  2748. $res[] = self::VULNERABLE;
  2749. $fn = $this->addPrefix . str_replace($this->noPrefix, '', $vars->structure['n'][$l_Pos]);
  2750. if (ENCODE_FILENAMES_WITH_BASE64) {
  2751. $res[] = base64_encode($fn);
  2752. } else {
  2753. $res[] = self::convertToUTF8($fn);
  2754. }
  2755. $res[] = $par_List[$i]['id'];
  2756. $res[] = $vars->structure['c'][$l_Pos];
  2757. $res[] = $vars->structure['m'][$l_Pos];
  2758. $res[] = $vars->structure['s'][$l_Pos];
  2759. $res[] = $vars->structure['e'][$l_Pos];
  2760. $res[] = 'vuln_' . md5($vars->structure['n'][$l_Pos] . $par_List[$i]['id']);
  2761. $res[] = '';
  2762. $res[] = '';
  2763. $res[] = '';
  2764. fputcsv($fh, $res);
  2765. }
  2766. fflush($fh);
  2767. fclose($fh);
  2768. }
  2769. private function writeListCSV($section, $list)
  2770. {
  2771. if (count($list) === 0) {
  2772. return;
  2773. }
  2774. $fh = fopen($this->file . '.tmp', "a+");
  2775. for ($i = 0, $iMax = count($list); $i < $iMax; $i++) {
  2776. $res = [];
  2777. $res[] = $section;
  2778. $res[] = $list[$i];
  2779. $res[] = '';
  2780. $res[] = '';
  2781. $res[] = '';
  2782. $res[] = '';
  2783. $res[] = '';
  2784. $res[] = '';
  2785. $res[] = '';
  2786. $res[] = '';
  2787. $res[] = '';
  2788. fputcsv($fh, $res);
  2789. }
  2790. fflush($fh);
  2791. fclose($fh);
  2792. }
  2793. private function writeRawCSV($par_List, $vars, $section = '', $par_Details = null, $par_SigId = null)
  2794. {
  2795. if (count($par_List) === 0) {
  2796. return;
  2797. }
  2798. $fh = fopen($this->file . '.tmp', "a+");
  2799. $l_Src = array(
  2800. '&quot;',
  2801. '&lt;',
  2802. '&gt;',
  2803. '&amp;',
  2804. '&#039;',
  2805. '<' . '?php.',
  2806. '\\'
  2807. );
  2808. $l_Dst = array(
  2809. '"',
  2810. '<',
  2811. '>',
  2812. '&',
  2813. '\'',
  2814. '<' . '?php ',
  2815. ''
  2816. );
  2817. for ($i = 0, $iMax = count($par_List); $i < $iMax; $i++) {
  2818. $res = [];
  2819. $res[] = $section;
  2820. if ($par_SigId != null) {
  2821. $l_SigId = 'id_' . $par_SigId[$i];
  2822. } else {
  2823. $l_SigId = 'id_n' . rand(1000000, 9000000);
  2824. }
  2825. $l_Pos = $par_List[$i];
  2826. $fn = $this->addPrefix . str_replace($this->noPrefix, '', $vars->structure['n'][$l_Pos]);
  2827. if (ENCODE_FILENAMES_WITH_BASE64) {
  2828. $res[] = base64_encode($fn);
  2829. } else {
  2830. $res[] = self::convertToUTF8($fn);
  2831. }
  2832. if ($par_Details != null) {
  2833. $sig = preg_replace('|(L\d+).+__AI_MARKER__|smi', '[$1]: ...', $par_Details[$i]);
  2834. $sig = preg_replace('/[^\x20-\x7F]/', '.', $sig);
  2835. $sig = preg_replace('/__AI_LINE1__(\d+)__AI_LINE2__/', '[$1] ', $sig);
  2836. $sig = preg_replace('/__AI_MARKER__/', ' @!!!>', $sig);
  2837. $sig = str_replace($l_Src, $l_Dst, $sig);
  2838. $sig = self::convertToUTF8($sig);
  2839. }
  2840. $res[] = $sig;
  2841. $res[] = $vars->structure['c'][$l_Pos];
  2842. $res[] = $vars->structure['m'][$l_Pos];
  2843. $res[] = $vars->structure['s'][$l_Pos];
  2844. $res[] = $vars->structure['e'][$l_Pos];
  2845. $res[] = $l_SigId;
  2846. $res[] = $vars->structure['crc'][$l_Pos];
  2847. if (isset($par_SigId) && isset($this->mnemo[$par_SigId[$i]])) {
  2848. $res[] = $this->mnemo[$par_SigId[$i]];
  2849. } else {
  2850. $res[] = '';
  2851. }
  2852. if (isset($vars->structure['sha256'][$l_Pos])) {
  2853. $res[] = $vars->structure['sha256'][$l_Pos];
  2854. } else {
  2855. $res[] = '';
  2856. }
  2857. fputcsv($fh, $res);
  2858. }
  2859. fflush($fh);
  2860. fclose($fh);
  2861. }
  2862. private function writeRawBlackData($black_list)
  2863. {
  2864. if (count($black_list) === 0) {
  2865. return;
  2866. }
  2867. $fh = fopen($this->file . '.tmp', "a+");
  2868. foreach ($black_list as $filename => $hash)
  2869. {
  2870. $res = [];
  2871. try {
  2872. $stat = stat($filename);
  2873. $sz = $stat['size'];
  2874. $ct = $stat['ctime'];
  2875. $mt = $stat['mtime'];
  2876. }
  2877. catch (Exception $e) {
  2878. continue;
  2879. }
  2880. $res[] = self::CLOUDHASH;
  2881. $res[] = $filename;
  2882. $res[] = '';
  2883. $res[] = $ct;
  2884. $res[] = $mt;
  2885. $res[] = $sz;
  2886. $res[] = $hash['ts'];
  2887. $res[] = crc32($filename);
  2888. $res[] = $hash['h'];
  2889. $res[] = isset($hash['sn']) ? $hash['sn'] : 'cld';
  2890. $res[] = '';
  2891. fputcsv($fh, $res);
  2892. }
  2893. fflush($fh);
  2894. fclose($fh);
  2895. }
  2896. }
  2897. /**
  2898. * Class DoublecheckReport generate doublecheck file
  2899. */
  2900. class DoublecheckReport extends Report
  2901. {
  2902. private $raw_report;
  2903. private $skip = false;
  2904. private $file = false;
  2905. private $res = '';
  2906. public function __construct($mnemo, $path, $db_location, $db_meta_info_version, $report_mask, $extended_report,
  2907. $rapid_account_scan, $ai_version, $ai_hoster, $ai_extra_warn, $ai_expert, $ai_smart, $root_path, $scan_all,
  2908. $specific_ext, $doublecheck, $use_doublecheck, $start, $snum, $max_size, $add_prefix, $no_prefix,
  2909. $small = false, $file = false, $echo = false)
  2910. {
  2911. $this->raw_report = [];
  2912. $this->file = $file;
  2913. if(file_exists($this->file)) {
  2914. $this->skip = true;
  2915. $this->res .= $this->file . ' already exists.' . PHP_EOL;
  2916. } else if ($l_FH = fopen($this->file . '.tmp', 'w')) {
  2917. fputs($l_FH, '<?php die("Forbidden"); ?>' . "\n");
  2918. fclose($l_FH);
  2919. } else {
  2920. $this->skip = true;
  2921. $this->res .= 'Error! Cannot create ' . $this->file . PHP_EOL;
  2922. }
  2923. }
  2924. public function generateReport($vars, $scan_time)
  2925. {
  2926. if ($this->skip) {
  2927. return;
  2928. }
  2929. $l_CurrPath = dirname(__FILE__);
  2930. if (!isset($vars->criticalPHP)) {
  2931. $vars->criticalPHP = array();
  2932. }
  2933. if (!isset($vars->criticalJS)) {
  2934. $vars->criticalJS = array();
  2935. }
  2936. if (!isset($vars->phishing)) {
  2937. $vars->phishing = array();
  2938. }
  2939. if (!isset($vars->adwareList)) {
  2940. $vars->adwareList = array();
  2941. }
  2942. if (!isset($vars->redirect)) {
  2943. $vars->redirect = array();
  2944. }
  2945. $this->raw_report = array_merge($vars->criticalPHP, $vars->criticalJS, $vars->phishing, $vars->adwareList, $vars->redirect);
  2946. $this->raw_report = array_values(array_unique($this->raw_report));
  2947. for ($i = 0, $iMax = count($this->raw_report); $i < $iMax; $i++) {
  2948. $this->raw_report[$i] = str_replace($l_CurrPath, '.', $vars->structure['n'][$this->raw_report[$i]]);
  2949. }
  2950. $this->raw_report = array_values(array_unique($this->raw_report));
  2951. if (count($this->raw_report) === 0) {
  2952. $this->skip = true;
  2953. unlink($this->file . '.tmp');
  2954. }
  2955. }
  2956. public function write()
  2957. {
  2958. $ret = '';
  2959. if ($this->skip) {
  2960. return $this->res;
  2961. }
  2962. $fh = fopen($this->file . '.tmp', "a+");
  2963. for ($i = 0, $iMax = count($this->raw_report); $i < $iMax; $i++) {
  2964. fputs($fh, $this->raw_report[$i] . "\n");
  2965. }
  2966. fclose($fh);
  2967. if (rename($this->file . '.tmp', $this->file)) {
  2968. $ret = "Report written to '$this->file'.";
  2969. } else {
  2970. $ret = "Cannot create '$this->file'.";
  2971. }
  2972. return $ret;
  2973. }
  2974. }
  2975. /**
  2976. * Class HTMLReport report all data to HTML
  2977. */
  2978. class HTMLReport extends Report
  2979. {
  2980. const REPORT_MASK_DOORWAYS = 1<<2;
  2981. const REPORT_MASK_SUSP = 1<<3;
  2982. const REPORT_MASK_FULL = self::REPORT_MASK_DOORWAYS | self::REPORT_MASK_SUSP;
  2983. private $raw_report;
  2984. private $extended_report;
  2985. private $rapid_account_scan;
  2986. private $ai_extra_warn;
  2987. private $ai_hoster;
  2988. private $report_mask;
  2989. private $noPrefix;
  2990. private $addPrefix;
  2991. private $mnemo;
  2992. private $small;
  2993. private $file;
  2994. private $echo;
  2995. private $template;
  2996. private $max_size;
  2997. private $start;
  2998. private $doublecheck;
  2999. public function __construct($mnemo, $path, $db_location, $db_meta_info_version, $report_mask, $extended_report,
  3000. $rapid_account_scan, $ai_version, $ai_hoster, $ai_extra_warn, $ai_expert, $ai_smart, $root_path, $scan_all,
  3001. $specific_ext, $doublecheck, $use_doublecheck, $start, $snum, $max_size, $add_prefix, $no_prefix,
  3002. $small = false, $file = false, $echo = false)
  3003. {
  3004. $this->mnemo = $mnemo;
  3005. $this->ai_extra_warn = $ai_extra_warn;
  3006. $this->extended_report = $extended_report;
  3007. $this->rapid_account_scan = $rapid_account_scan;
  3008. $this->ai_hoster = $ai_hoster;
  3009. $this->report_mask = $report_mask;
  3010. $this->addPrefix = $add_prefix;
  3011. $this->noPrefix = $no_prefix;
  3012. $this->small = $small;
  3013. $this->echo = $echo;
  3014. $this->max_size = $max_size;
  3015. $this->start = $start;
  3016. $this->doublecheck = $doublecheck;
  3017. $this->raw_report = '';
  3018. $this->file = $file;
  3019. if($this->file) {
  3020. @unlink($this->file);
  3021. @unlink($this->file . '.tmp');
  3022. }
  3023. if (file_exists(dirname(__FILE__) . '/ai-design.html')) {
  3024. $this->template = Template::create(file_get_contents(dirname(__FILE__) . '/ai-design.html'));
  3025. } else {
  3026. $this->template = Template::create(TemplateList::MAIN_PAGE);
  3027. $this->template->set('msg1', Translate::getStr('data_table.length_menu'));
  3028. $this->template->set('msg2', Translate::getStr('data_table.zero_records'));
  3029. $this->template->set('msg3', Translate::getStr('data_table.info'));
  3030. $this->template->set('msg4', Translate::getStr('data_table.info_empty'));
  3031. $this->template->set('msg5', Translate::getStr('data_table.info_filtered'));
  3032. $this->template->set('msg6', Translate::getStr('data_table.search'));
  3033. $this->template->set('msg7', Translate::getStr('data_table.paginate.first'));
  3034. $this->template->set('msg8', Translate::getStr('data_table.paginate.previous'));
  3035. $this->template->set('msg9', Translate::getStr('data_table.paginate.next'));
  3036. $this->template->set('msg10', Translate::getStr('data_table.paginate.last'));
  3037. $this->template->set('msg11', Translate::getStr('data_table.aria.sort_ascending'));
  3038. $this->template->set('msg12', Translate::getStr('data_table.aria.sort_descending'));
  3039. }
  3040. $this->template->set('MAIN_TITLE', Translate::getStr('header.scan_report_title'));
  3041. $this->template->set('MODE', $ai_expert . '/' . $ai_smart);
  3042. if (AI_EXPERT == 0) {
  3043. $this->raw_report .= '<div class="rep">' . Translate::getStr('scan.offer_modes_after_express') . '</div>';
  3044. }
  3045. $this->template->set('HEAD_TITLE', Translate::getStr('report_for') . $this->addPrefix . str_replace($this->noPrefix, '', $root_path));
  3046. $this->template->set('SERVICE_INFO', htmlspecialchars("[" . @ini_get('mbstring.internal_encoding') . "][" . $snum . "]"));
  3047. $this->template->set('PATH_URL', (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $this->addPrefix . str_replace($this->noPrefix, '', $this->addSlash($root_path))));
  3048. $this->template->set('VERSION', $ai_version);
  3049. $this->template->set('WARN_QUICK', (($scan_all || $specific_ext) ? '' : Translate::getStr('notice.scan_express', [$doublecheck])));
  3050. if ($use_doublecheck) {
  3051. if (Translate::getStr('file.scanned_manual', [$this->doublecheck, $this->doublecheck]) != '') {
  3052. $this->raw_report .= '<div class="rep">' . Translate::getStr('file.scanned_manual', [$this->doublecheck, $this->doublecheck]) . '</div>';
  3053. }
  3054. }
  3055. }
  3056. public function generateReport($vars, $scan_time)
  3057. {
  3058. $l_ShowOffer = false;
  3059. $this->template->set('SCANNED', Translate::getStr('info.files_checked', [$vars->totalFolder, $vars->totalFiles]));
  3060. $l_Summary = '<div class="title">' . Translate::getStr('report.summary') . '</div>';
  3061. $l_Summary .= '<table cellspacing=0 border=0>';
  3062. if (count($vars->redirect) > 0) {
  3063. $l_Summary .= $this->makeSummary(Translate::getStr('mobile_redirects'), count($vars->redirect), 'crit');
  3064. }
  3065. if (count($vars->criticalPHP) > 0) {
  3066. $l_Summary .= $this->makeSummary(Translate::getStr('malware'), count($vars->criticalPHP), "crit");
  3067. }
  3068. if (count($vars->criticalJS) > 0) {
  3069. $l_Summary .= $this->makeSummary(Translate::getStr('js_virused'), count($vars->criticalJS), "crit");
  3070. }
  3071. if (count($vars->phishing) > 0) {
  3072. $l_Summary .= $this->makeSummary(Translate::getStr('phishing_pages'), count($vars->phishing), "crit");
  3073. }
  3074. if (count($vars->notRead) > 0) {
  3075. $l_Summary .= $this->makeSummary(Translate::getStr('error.read_file'), count($vars->notRead), "crit");
  3076. }
  3077. if (count($vars->warningPHP) > 0) {
  3078. $l_Summary .= $this->makeSummary(Translate::getStr('suspicious'), count($vars->warningPHP), "warn");
  3079. }
  3080. if (count($vars->bigFiles) > 0) {
  3081. $l_Summary .= $this->makeSummary(Translate::getStr('skipped_large_file'), count($vars->bigFiles), "warn");
  3082. }
  3083. if (count($vars->symLinks) > 0) {
  3084. $l_Summary .= $this->makeSummary(Translate::getStr('link.symbolic'), count($vars->symLinks), "warn");
  3085. }
  3086. $l_Summary .= "</table>";
  3087. $l_ArraySummary = array();
  3088. $l_ArraySummary["redirect"] = count($vars->redirect);
  3089. $l_ArraySummary["critical_php"] = count($vars->criticalPHP);
  3090. $l_ArraySummary["critical_js"] = count($vars->criticalJS);
  3091. $l_ArraySummary["phishing"] = count($vars->phishing);
  3092. $l_ArraySummary["unix_exec"] = 0; // count($g_UnixExec);
  3093. $l_ArraySummary["iframes"] = 0; // count($g_Iframer);
  3094. $l_ArraySummary["not_read"] = count($vars->notRead);
  3095. $l_ArraySummary["base64"] = 0; // count($g_Base64);
  3096. $l_ArraySummary["heuristics"] = 0; // count($g_HeuristicDetected);
  3097. $l_ArraySummary["symlinks"] = count($vars->symLinks);
  3098. $l_ArraySummary["big_files_skipped"] = count($vars->bigFiles);
  3099. $l_ArraySummary["suspicious"] = count($vars->warningPHP);
  3100. if (function_exists('json_encode')) {
  3101. $l_Summary .= "<!--[json]" . json_encode($l_ArraySummary) . "[/json]-->";
  3102. }
  3103. $l_Summary .= "<div class=details style=\"margin: 20px 20px 20px 0\">" . Translate::getStr('notice.files_may_not_malicious') . "</div>\n";
  3104. $this->template->set('SUMMARY', $l_Summary);
  3105. $this->raw_report .= Translate::getStr('critical.title');
  3106. if(!$this->ai_hoster) {
  3107. if (count($vars->vulnerable) > 0) {
  3108. $this->raw_report .= '<div class="note_vir">' . Translate::getStr('script.vulnerable') . ' (' . count($vars->vulnerable) . ')</div><div class="crit">';
  3109. foreach ($vars->vulnerable as $l_Item) {
  3110. $this->raw_report .= '<li>' . AibolitHelpers::makeSafeFn($vars->structure['n'][$l_Item['ndx']], $this->addPrefix, $this->noPrefix, true) . ' - ' . $l_Item['id'] . '</li>';
  3111. }
  3112. $this->raw_report .= '</div><p>' . PHP_EOL;
  3113. }
  3114. }
  3115. if (count($vars->criticalPHP) > 0) {
  3116. $criticalPHP = array_slice($vars->criticalPHP, 0, self::MAX_ROWS);
  3117. $this->raw_report .= '<div class="note_vir">' . Translate::getStr('detected.shell_scripts') . ' (' . count($criticalPHP) . ')</div><div class="crit">';
  3118. $this->raw_report .= $this->printList($criticalPHP, $vars, $vars->criticalPHPFragment, $vars->criticalPHPSig, 'table_crit');
  3119. $this->raw_report .= '</div>' . PHP_EOL;
  3120. $l_ShowOffer = true;
  3121. } else {
  3122. $this->raw_report .= '<div class="ok"><b>' . Translate::getStr('not_detected.shell_scripts') . '</b></div>';
  3123. }
  3124. if (count($vars->criticalJS) > 0) {
  3125. $criticalJS = array_slice($vars->criticalJS, 0, self::MAX_ROWS);
  3126. $this->raw_report .= '<div class="note_vir">' . Translate::getStr('detected.javascript') . ' (' . count($criticalJS) . ')</div><div class="crit">';
  3127. $this->raw_report .= $this->printList($criticalJS, $vars, $vars->criticalJSFragment, $vars->criticalJSSig, 'table_vir');
  3128. $this->raw_report .= "</div>" . PHP_EOL;
  3129. $l_ShowOffer = true;
  3130. }
  3131. if (count($vars->notRead) > 0) {
  3132. $notRead = array_slice($vars->notRead, 0, self::AIBOLIT_MAX_NUMBER);
  3133. $this->raw_report .= '<div class="note_vir">' . Translate::getStr('warning.reading_error') . ' (' . count($notRead) . ')</div><div class="crit">';
  3134. $this->raw_report .= $this->printList($notRead, $vars);
  3135. $this->raw_report .= "</div><div class=\"spacer\"></div>" . PHP_EOL;
  3136. }
  3137. if (!$this->ai_hoster) {
  3138. if (count($vars->phishing) > 0) {
  3139. $this->raw_report .= '<div class="note_vir">' . Translate::getStr('detected.phishing_pages') . ' (' . count($vars->phishing) . ')</div><div class="crit">';
  3140. $this->raw_report .= $this->printList($vars->phishing, $vars, $vars->phishingFragment, $vars->phishingSigFragment, 'table_vir');
  3141. $this->raw_report .= "</div>" . PHP_EOL;
  3142. $l_ShowOffer = true;
  3143. }
  3144. if (count($vars->redirect) > 0) {
  3145. $l_ShowOffer = true;
  3146. $this->raw_report .= '<div class="note_vir">' . Translate::getStr('suspicion.htaccess') . ' (' . count($vars->redirect) . ')</div><div class="crit">';
  3147. $this->raw_report .= "</div>" . PHP_EOL;
  3148. }
  3149. if (count($vars->symLinks) > 0) {
  3150. $symLinks = array_slice($vars->symLinks, 0, self::AIBOLIT_MAX_NUMBER);
  3151. $this->raw_report .= '<div class="note_vir">' . Translate::getStr('symlinks') . ' (' . count($symLinks) . ')</div><div class="crit">';
  3152. $this->raw_report .= nl2br(AibolitHelpers::makeSafeFn(implode("\n", $symLinks), $this->addPrefix, $this->noPrefix, true));
  3153. $this->raw_report .= "</div><div class=\"spacer\"></div>";
  3154. }
  3155. }
  3156. if ($this->ai_extra_warn) {
  3157. $l_WarningsNum = count($vars->warningPHP);
  3158. if ($l_WarningsNum > 0) {
  3159. $this->raw_report .= "<div style=\"margin-top: 20px\" class=\"title\">" . Translate::getStr('warnings') . "</div>";
  3160. }
  3161. if ($l_WarningsNum > 0) {
  3162. $warningPHP = array_slice($vars->warningPHP, 0, self::AIBOLIT_MAX_NUMBER);
  3163. $this->raw_report .= '<div class="note_warn">' . Translate::getStr('suspicion.code') . ' (' . count($warningPHP) . ')</div><div class="warn">';
  3164. $this->raw_report .= $this->printList($warningPHP, $vars, $vars->warningPHPFragment, $vars->warningPHPSig, 'table_warn');
  3165. $this->raw_report .= '</div>' . PHP_EOL;
  3166. }
  3167. }
  3168. if (!$this->ai_hoster) {
  3169. $l_WarningsNum = count($vars->bigFiles) + count($vars->adwareList) + count($vars->doorway) + count($vars->warningPHP) + count($vars->skippedFolders);
  3170. if ($l_WarningsNum > 0) {
  3171. $this->raw_report .= "<div style=\"margin-top: 20px\" class=\"title\">" . Translate::getStr('warnings') . "</div>";
  3172. }
  3173. if (count($vars->adwareList) > 0) {
  3174. $this->raw_report .= '<div class="note_warn">' . Translate::getStr('detected.bad_links') . '</div><div class="warn">';
  3175. $this->raw_report .= $this->printList($vars->adwareList, $vars, $vars->adwareListFragment);
  3176. $this->raw_report .= "</div>" . PHP_EOL;
  3177. }
  3178. if (count($vars->bigFiles) > 0) {
  3179. $bigFiles = array_slice($vars->bigFiles, 0, self::AIBOLIT_MAX_NUMBER);
  3180. $this->raw_report .= "<div class=\"note_warn\">" . Translate::getStr('skipped.large_file', [$this->max_size]) . '</div><div class="warn">';
  3181. $this->raw_report .= $this->printList($bigFiles, $vars);
  3182. $this->raw_report .= "</div>";
  3183. }
  3184. if (count($vars->doorway) > 0) {
  3185. $doorway = array_slice($vars->doorway, 0, self::AIBOLIT_MAX_NUMBER);
  3186. $this->raw_report .= '<div class="note_warn">' . Translate::getStr('suspicion.doorway') . '</div><div class="warn">';
  3187. $this->raw_report .= nl2br(AibolitHelpers::makeSafeFn(implode("\n", $doorway), $this->addPrefix, $this->noPrefix, true));
  3188. $this->raw_report .= "</div>" . PHP_EOL;
  3189. }
  3190. if (count($vars->CMS) > 0) {
  3191. $this->raw_report .= "<div class=\"note_warn\">" . Translate::getStr('founded_CMS') . "<br/>";
  3192. $this->raw_report .= nl2br(AibolitHelpers::makeSafeFn(implode("\n", $vars->CMS), $this->addPrefix, $this->noPrefix));
  3193. $this->raw_report .= "</div>";
  3194. }
  3195. }
  3196. if (function_exists('memory_get_peak_usage')) {
  3197. $this->template->set('MEMORY', Translate::getStr('memory_used') . AibolitHelpers::bytes2Human(memory_get_peak_usage()));
  3198. }
  3199. if ($l_ShowOffer) {
  3200. $this->template->set('OFFER', Translate::getStr('offer.when_has_critical'));
  3201. } else {
  3202. $this->template->set('OFFER', Translate::getStr('offer.when_no_critical'));
  3203. }
  3204. $this->template->set('OFFER_OUR_PRODUCTS', Translate::getStr('offer_our_products'));
  3205. $this->template->set('CAUTION', Translate::getStr('сaution.aibolit_file'));
  3206. $this->template->set('CREDITS', Translate::getStr('info.non_commercial_use'));
  3207. $this->template->set('FOOTER', Translate::getStr('footer'));
  3208. $this->template->set('STAT', Translate::getStr('info.time_elapsed', [$scan_time, date('d-m-Y в H:i:s', floor($this->start)), date('d-m-Y в H:i:s')]));
  3209. ////////////////////////////////////////////////////////////////////////////
  3210. $this->template->set('MAIN_CONTENT', $this->raw_report);
  3211. }
  3212. public function write()
  3213. {
  3214. $ret = '';
  3215. $res = $this->template->render();
  3216. if ($l_FH = fopen($this->file . '.tmp', "w")) {
  3217. fputs($l_FH, $res);
  3218. fclose($l_FH);
  3219. }
  3220. if (rename($this->file . '.tmp', $this->file)) {
  3221. $ret = "Report written to '$this->file'.";
  3222. } else {
  3223. $ret = "Cannot create '$this->file'.";
  3224. }
  3225. return $ret;
  3226. }
  3227. ////////////////////////////////////////////////////////////////////////////
  3228. /////////////////////////////////////////////////////////////////////////////////////
  3229. private function makeSummary($par_Str, $par_Number, $par_Style)
  3230. {
  3231. return '<tr><td class="' . $par_Style . '" width=400>' . $par_Str . '</td><td class="' . $par_Style . '">' . $par_Number . '</td></tr>';
  3232. }
  3233. private function printList($par_List, $vars, $par_Details = null, $par_SigId = null, $par_TableName = null)
  3234. {
  3235. $i = 0;
  3236. if ($par_TableName == null) {
  3237. $par_TableName = 'table_' . rand(1000000, 9000000);
  3238. }
  3239. $l_Result = '';
  3240. $l_Result .= "<div class=\"flist\"><table cellspacing=1 cellpadding=4 border=0 id=\"" . $par_TableName . "\">";
  3241. $l_Result .= "<thead><tr class=\"tbgh" . ($i % 2) . "\">";
  3242. $l_Result .= "<th width=70%>" . Translate::getStr('path') . "</th>";
  3243. $l_Result .= "<th>" . Translate::getStr('property_change') . "</th>";
  3244. $l_Result .= "<th>" . Translate::getStr('content_change') . "</th>";
  3245. $l_Result .= "<th width=90>" . Translate::getStr('size') . "</th>";
  3246. $l_Result .= "<th width=0 class=\"hidd\">CRC32</th>";
  3247. $l_Result .= "<th width=0 class=\"hidd\"></th>";
  3248. $l_Result .= "<th width=0 class=\"hidd\"></th>";
  3249. $l_Result .= "<th width=0 class=\"hidd\"></th>";
  3250. $l_Result .= "</tr></thead><tbody>";
  3251. for ($i = 0, $iMax = count($par_List); $i < $iMax; $i++) {
  3252. if ($par_SigId != null) {
  3253. $l_SigId = 'id_' . $par_SigId[$i];
  3254. } else {
  3255. $l_SigId = 'id_z' . rand(1000000, 9000000);
  3256. }
  3257. $l_Pos = $par_List[$i];
  3258. $l_Creat = $vars->structure['c'][$l_Pos] > 0 ? date("d/m/Y H:i:s", $vars->structure['c'][$l_Pos]) : '-';
  3259. $l_Modif = $vars->structure['m'][$l_Pos] > 0 ? date("d/m/Y H:i:s", $vars->structure['m'][$l_Pos]) : '-';
  3260. $l_Size = $vars->structure['s'][$l_Pos] > 0 ? AibolitHelpers::bytes2Human($vars->structure['s'][$l_Pos]) : '-';
  3261. if ($par_Details != null) {
  3262. $l_WithMarker = preg_replace('|__AI_MARKER__|smi', '<span class="marker">&nbsp;</span>', $par_Details[$i]);
  3263. $l_WithMarker = preg_replace('|__AI_LINE1__|smi', '<span class="line_no">', $l_WithMarker);
  3264. $l_WithMarker = preg_replace('|__AI_LINE2__|smi', '</span>', $l_WithMarker);
  3265. $l_Body = '<div class="details">';
  3266. if ($par_SigId != null) {
  3267. $l_Body .= '<a href="#" onclick="return hsig(\'' . $l_SigId . '\')">[x]</a> ';
  3268. }
  3269. $l_Body .= $l_WithMarker . '</div>';
  3270. } else {
  3271. $l_Body = '';
  3272. }
  3273. $l_Result .= '<tr class="tbg' . ($i % 2) . '" o="' . $l_SigId . '">';
  3274. if (is_file($vars->structure['n'][$l_Pos])) {
  3275. $l_Result .= '<td><div class="it"><a class="it">' . AibolitHelpers::makeSafeFn($this->addPrefix . str_replace($this->noPrefix, '', $vars->structure['n'][$l_Pos]), $this->addPrefix, $this->noPrefix) . '</a></div>' . $l_Body . '</td>';
  3276. } else {
  3277. $l_Result .= '<td><div class="it"><a class="it">' . AibolitHelpers::makeSafeFn($this->addPrefix . str_replace($this->noPrefix, '', $vars->structure['n'][$par_List[$i]]), $this->addPrefix, $this->noPrefix) . '</a></div></td>';
  3278. }
  3279. $l_Result .= '<td align=center><div class="ctd">' . $l_Creat . '</div></td>';
  3280. $l_Result .= '<td align=center><div class="ctd">' . $l_Modif . '</div></td>';
  3281. $l_Result .= '<td align=center><div class="ctd">' . $l_Size . '</div></td>';
  3282. $l_Result .= '<td class="hidd"><div class="hidd">' . $vars->structure['crc'][$l_Pos] . '</div></td>';
  3283. $l_Result .= '<td class="hidd"><div class="hidd">' . 'x' . '</div></td>';
  3284. $l_Result .= '<td class="hidd"><div class="hidd">' . $vars->structure['m'][$l_Pos] . '</div></td>';
  3285. $l_Result .= '<td class="hidd"><div class="hidd">' . $l_SigId . '</div></td>';
  3286. $l_Result .= '</tr>';
  3287. }
  3288. $l_Result .= "</tbody></table></div><div class=clear style=\"margin: 20px 0 0 0\"></div>";
  3289. return $l_Result;
  3290. }
  3291. private function addSlash($dir)
  3292. {
  3293. return rtrim($dir, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;
  3294. }
  3295. }
  3296. class CloudAssistedFiles
  3297. {
  3298. private $white = [];
  3299. private $black = [];
  3300. public function __construct(CloudAssistedRequest $car, $file_list, $vars)
  3301. {
  3302. $list_of_hash = [];
  3303. $list_of_filepath = [];
  3304. foreach ($file_list as $index => $filepath)
  3305. {
  3306. if (!file_exists($filepath) || !is_readable($filepath) || is_dir($filepath)) {
  3307. continue;
  3308. }
  3309. try {
  3310. $list_of_hash[] = hash('sha256', file_get_contents($filepath));
  3311. $list_of_filepath[] = $filepath;
  3312. }
  3313. catch (Exception $e) {
  3314. }
  3315. }
  3316. unset($file_list);
  3317. if ($vars->hashtable !== null) {
  3318. $vars->hashtable->add($list_of_filepath, $list_of_hash);
  3319. }
  3320. try {
  3321. list($white_raw, $black_raw, $verdicts_black_raw) = $car->checkFilesByHash($list_of_hash);
  3322. }
  3323. catch (Exception $e) {
  3324. throw $e;
  3325. }
  3326. $this->white = $this->getListOfFile($white_raw, $list_of_hash, $list_of_filepath);
  3327. $this->black = $this->getListOfFile($black_raw, $list_of_hash, $list_of_filepath, $verdicts_black_raw);
  3328. unset($white_raw, $black_raw, $verdicts_black_raw, $list_of_hash, $list_of_filepath);
  3329. }
  3330. public function getWhiteList()
  3331. {
  3332. return $this->white;
  3333. }
  3334. public function getBlackList()
  3335. {
  3336. return $this->black;
  3337. }
  3338. // =========================================================================
  3339. private function getListOfFile($data_raw, $list_of_hash, $list_of_filepath, $verdicts = [])
  3340. {
  3341. $result = [];
  3342. foreach ($data_raw as $index => $hash_index)
  3343. {
  3344. if (!isset($list_of_hash[$hash_index])) {
  3345. continue;
  3346. }
  3347. $hash_result = [
  3348. 'h' => $list_of_hash[$hash_index],
  3349. 'ts' => time(),
  3350. ];
  3351. if ($verdicts) {
  3352. if (!isset($verdicts[$index])) {
  3353. throw new Exception('Wrong CloudAssisted format. List of verdicts has structure different from main list.');
  3354. }
  3355. $hash_result['sn'] = $verdicts[$index];
  3356. }
  3357. $result[$list_of_filepath[$hash_index]] = $hash_result;
  3358. }
  3359. return $result;
  3360. }
  3361. }
  3362. class DetachedMode
  3363. {
  3364. protected $workdir;
  3365. protected $scan_id;
  3366. protected $pid_file;
  3367. protected $report_file;
  3368. protected $csvreport_file;
  3369. protected $done_file;
  3370. protected $vars;
  3371. protected $start_time;
  3372. protected $json_report;
  3373. protected $sock_file;
  3374. protected $reports;
  3375. protected $finder;
  3376. protected $debug;
  3377. public function __construct($finder, $debug, $scan_id, $vars, $start_time, $json_report, $basedir = '/var/imunify360/aibolit/run', $sock_file = '/var/run/defence360agent/generic_sensor.sock.2')
  3378. {
  3379. $this->scan_id = $scan_id;
  3380. $this->vars = $vars;
  3381. $this->setWorkDir($basedir, $scan_id);
  3382. $this->pid_file = $this->workdir . '/pid';
  3383. $this->report_file = $this->workdir . '/report.json';
  3384. $this->csvreport_file = $this->workdir . '/report.csv';
  3385. $this->done_file = $this->workdir . '/done';
  3386. $this->start_time = $start_time;
  3387. $this->json_report = $json_report;
  3388. $this->setSocketFile($sock_file);
  3389. $this->savePid();
  3390. $this->checkWorkDir($this->workdir);
  3391. if (isset($vars->options['json_report']) && !empty($vars->options['json_report']) && $vars->options['json_report'] !== '.') {
  3392. $this->report_file = $vars->options['json_report'];
  3393. }
  3394. if (isset($vars->options['csv_report']) && !empty($vars->options['csv_report']) && $vars->options['csv_report'] !== '.') {
  3395. $this->csvreport_file = $vars->options['csv_report'];
  3396. $this->reports[CSVReport::class] = $this->csvreport_file;
  3397. }
  3398. $this->reports[JSONReport::class] = $this->report_file;
  3399. $this->finder = $finder;
  3400. $this->debug = $debug;
  3401. }
  3402. public function scanListing($listing, $use_base64)
  3403. {
  3404. $this->checkList($listing);
  3405. $this->scanFilesFromListingFile($listing, $use_base64);
  3406. $this->writeReport();
  3407. $this->complete();
  3408. }
  3409. public function scanDirectories($dir)
  3410. {
  3411. file_exists(QUEUE_FILENAME) && unlink(QUEUE_FILENAME);
  3412. $scan = new Scanner($this->finder, $this->vars);
  3413. if (method_exists($scan, 'QCR_ScanDirectories')) {
  3414. $scan->QCR_ScanDirectories($dir);
  3415. }
  3416. $this->scanFilesFromListingFile(QUEUE_FILENAME, true);
  3417. file_exists(QUEUE_FILENAME) && unlink(QUEUE_FILENAME);
  3418. $this->writeReport();
  3419. $this->complete();
  3420. unset($scan);
  3421. }
  3422. // /////////////////////////////////////////////////////////////////////////
  3423. protected function scanFilesFromListingFile($list_filepath, $use_base64 = false)
  3424. {
  3425. if (!is_file($list_filepath) || !is_readable($list_filepath)) {
  3426. $this->vars->foundTotalFiles = 0;
  3427. return;
  3428. }
  3429. $s_file = new SplFileObject($list_filepath);
  3430. $s_file->setFlags(SplFileObject::READ_AHEAD | SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE);
  3431. $s_file->seek($s_file->getSize());
  3432. $this->vars->foundTotalFiles = $s_file->key();
  3433. $s_file->seek(0);
  3434. $scan = new Scanner($this->finder, $this->vars);
  3435. if (method_exists($scan, 'QCR_GoScan')) {
  3436. $scan->QCR_GoScan($s_file, null, $use_base64, false);
  3437. $scan->whitelisting();
  3438. }
  3439. unset($scan);
  3440. unset($s_file);
  3441. }
  3442. protected function checkWorkDir($workdir)
  3443. {
  3444. if (!file_exists($workdir) && !mkdir($workdir) && !is_dir($workdir)) {
  3445. die('Error! Cannot create workdir ' . $workdir . ' for detached scan.');
  3446. } elseif (file_exists($workdir) && !is_writable($workdir)) {
  3447. die('Error! Workdir ' . $workdir . ' is not writable.');
  3448. }
  3449. }
  3450. protected function checkList($listing)
  3451. {
  3452. if (!file_exists($listing) || !is_readable($listing)) {
  3453. die('Error! Listing file ' . $listing . ' not exists or not readable');
  3454. }
  3455. }
  3456. protected function savePid()
  3457. {
  3458. file_put_contents($this->pid_file, strval(getmypid()));
  3459. }
  3460. protected function writeReport()
  3461. {
  3462. $scan_time = round(microtime(true) - $this->start_time, 1);
  3463. foreach($this->json_report->call($this, $this->reports) as $json_report) {
  3464. $json_report->generateReport($this->vars, $scan_time);
  3465. $json_report->write();
  3466. }
  3467. }
  3468. protected function complete()
  3469. {
  3470. @touch($this->done_file);
  3471. $complete = array(
  3472. 'method' => 'MALWARE_SCAN_COMPLETE',
  3473. 'scan_id' => $this->scan_id,
  3474. );
  3475. $json_complete = json_encode($complete) . "\n";
  3476. $socket = fsockopen('unix://' . $this->sock_file);
  3477. stream_set_blocking($socket, false);
  3478. fwrite($socket, $json_complete);
  3479. fclose($socket);
  3480. }
  3481. protected function setWorkDir($dir, $scan_id)
  3482. {
  3483. $this->workdir = $dir . '/' . $scan_id;
  3484. }
  3485. protected function setSocketFile($sock)
  3486. {
  3487. $this->sock_file = $sock;
  3488. }
  3489. }
  3490. /**
  3491. * Class ResidentMode used to stay aibolit alive in memory and wait for a job.
  3492. */
  3493. class ResidentMode
  3494. {
  3495. /**
  3496. * parent dir for all resident aibolit related
  3497. * @var string
  3498. */
  3499. protected $resident_dir;
  3500. /**
  3501. * directory for all jobs to be processed by aibolit
  3502. * @var string
  3503. */
  3504. protected $resident_in_dir;
  3505. /**
  3506. * directory with all the malicious files reports to be processed by imunify
  3507. * @var string
  3508. */
  3509. protected $resident_out_dir;
  3510. /**
  3511. * resident aibolit pid
  3512. * @var string
  3513. */
  3514. protected $aibolit_pid;
  3515. /**
  3516. * file lock used to make sure we start only one aibolit
  3517. * @var string
  3518. */
  3519. protected $aibolit_start_lock;
  3520. /**
  3521. * status file used to make sure aibolit didn't get stuck
  3522. * @var string
  3523. */
  3524. protected $aibolit_status_file;
  3525. /**
  3526. * number of seconds while aibolit will stay alive, while not receiving any work
  3527. * @var int
  3528. */
  3529. protected $stay_alive;
  3530. /**
  3531. * maximum number of seconds without updating ABOLIT_STATUS_FILE,
  3532. * used to track if AIBOLIT is stuck, should be killed
  3533. * @var int
  3534. */
  3535. protected $stuck_timeout;
  3536. /**
  3537. * number of seconds scripts would wait for aibolit to finish / send signal
  3538. * @var int
  3539. */
  3540. protected $upload_timeout;
  3541. /**
  3542. * max number of files to pick
  3543. * @var int
  3544. */
  3545. protected $max_files_per_notify_scan;
  3546. /**
  3547. * timestamp of last scan
  3548. * @var int
  3549. */
  3550. protected $last_scan_time;
  3551. /**
  3552. * time to sleep between lifecycle iterations in microseconds
  3553. */
  3554. protected $sleep_time;
  3555. protected $scannedNotify = 0;
  3556. protected $report;
  3557. protected $logger;
  3558. protected $resident_in_dir_notify;
  3559. protected $resident_in_dir_upload;
  3560. protected $blacklist;
  3561. protected $watchdog_socket;
  3562. protected $activation_socket;
  3563. protected $systemd = false;
  3564. protected $interval = 0;
  3565. protected $lastKeepAlive = 0;
  3566. protected $maxMinUid = array();
  3567. protected $signs;
  3568. protected $finder;
  3569. const JOB_UPLOAD = 'upload';
  3570. const JOB_NOTIFY = 'notify';
  3571. protected $upload_jobs = [];
  3572. protected $notify_jobs = [];
  3573. /**
  3574. * ResidentMode constructor.
  3575. *
  3576. * @param $finder
  3577. * @param $debug
  3578. * @param Closure $report
  3579. * @param $signs
  3580. * @param null $blacklist
  3581. * @param Logger|null $logger
  3582. * @param array $maxMinUid
  3583. * @param string $resident_dir
  3584. * @param int $stay_alive
  3585. * @param int $stuck_timeout
  3586. * @param int $upload_timeout
  3587. * @param int $max_files_per_notify_scan
  3588. * @param int $sleep_time
  3589. */
  3590. public function __construct(
  3591. $finder,
  3592. $debug,
  3593. Closure $report,
  3594. $signs,
  3595. $blacklist = null,
  3596. Logger $logger = null,
  3597. $maxMinUid = array(),
  3598. $resident_dir = '/var/imunify360/aibolit/resident',
  3599. $stay_alive = 30,
  3600. $stuck_timeout = 5,
  3601. $upload_timeout = 10,
  3602. $max_files_per_notify_scan = 500,
  3603. $sleep_time = 100000
  3604. ) {
  3605. $this->signs = $signs;
  3606. $this->setResidentDir($resident_dir);
  3607. $this->resident_in_dir = $this->resident_dir . '/in';
  3608. $this->resident_in_dir_upload = $this->resident_in_dir . '/upload-jobs';
  3609. $this->resident_in_dir_notify = $this->resident_in_dir . '/notify-jobs';
  3610. $this->resident_out_dir = $this->resident_dir . '/out';
  3611. $this->aibolit_pid = $this->resident_dir . '/aibolit.pid';
  3612. $this->aibolit_start_lock = $this->resident_dir . '/start.lock';
  3613. $this->aibolit_status_file = $this->resident_dir . '/aibolit.status';
  3614. $this->stay_alive = $stay_alive;
  3615. $this->stuck_timeout = $stuck_timeout;
  3616. $this->upload_timeout = $upload_timeout;
  3617. if (!empty($max_files_per_notify_scan)) {
  3618. $this->max_files_per_notify_scan = $max_files_per_notify_scan;
  3619. }
  3620. $this->sleep_time = $sleep_time;
  3621. $this->report = $report;
  3622. $this->blacklist = $blacklist;
  3623. $this->logger = $logger;
  3624. $this->maxMinUid = $maxMinUid;
  3625. umask(0);
  3626. if (!file_exists($this->resident_dir)) {
  3627. if (!mkdir($this->resident_dir, 0777, true) && !is_dir($this->resident_dir)) {
  3628. throw new Exception(sprintf('Directory "%s" was not created', $this->resident_dir));
  3629. }
  3630. }
  3631. if (!file_exists($this->resident_in_dir)) {
  3632. if (!mkdir($this->resident_in_dir, 0755) && !is_dir($this->resident_in_dir)) {
  3633. throw new Exception(sprintf('Directory "%s" was not created', $this->resident_in_dir));
  3634. }
  3635. }
  3636. if (!file_exists($this->resident_out_dir)) {
  3637. if (!mkdir($this->resident_out_dir, 0755) && !is_dir($this->resident_out_dir)) {
  3638. throw new Exception(sprintf('Directory "%s" was not created', $this->resident_out_dir));
  3639. }
  3640. }
  3641. if (!file_exists($this->resident_in_dir_notify)) {
  3642. if (!mkdir($this->resident_in_dir_notify, 0700) && !is_dir($this->resident_in_dir_notify)) {
  3643. throw new Exception(sprintf('Directory "%s" was not created', $this->resident_in_dir_notify));
  3644. }
  3645. }
  3646. if (!file_exists($this->resident_in_dir_upload)) {
  3647. if (!mkdir($this->resident_in_dir_upload, 01777) && !is_dir($this->resident_in_dir_upload)) {
  3648. throw new Exception(sprintf('Directory "%s" was not created', $this->resident_in_dir_upload));
  3649. }
  3650. }
  3651. $this->checkSpecs();
  3652. $addr = getenv('NOTIFY_SOCKET');
  3653. if ($addr[0] == '@') {
  3654. $addr = "\0";
  3655. }
  3656. if ($addr) {
  3657. $this->systemd = true;
  3658. }
  3659. if ($this->systemd) {
  3660. $this->watchdog_socket = fsockopen('udg://' . $addr);
  3661. stream_set_blocking($this->watchdog_socket, false);
  3662. $this->activation_socket = fopen('php://fd/3', 'r');
  3663. if ($this->activation_socket === false) {
  3664. die("Something went wrong with activation socket.");
  3665. }
  3666. stream_set_blocking($this->activation_socket, false);
  3667. if (getenv('WATCHDOG_USEC') !== false) {
  3668. $this->interval = intval(getenv('WATCHDOG_USEC'));
  3669. } else {
  3670. $this->interval = 1000000;
  3671. }
  3672. }
  3673. $this->finder = $finder;
  3674. $this->debug = isset($debug) ? $debug : null;
  3675. $this->lifeCycle();
  3676. }
  3677. protected function isRootWriteable($folder)
  3678. {
  3679. if (!file_exists($folder) || !is_dir($folder)) {
  3680. return false;
  3681. }
  3682. $owner_id = (int)fileowner($folder);
  3683. if (function_exists('posix_getpwuid')) {
  3684. $owner = posix_getpwuid($owner_id);
  3685. if (!isset($owner['name']) || $owner['name'] !== 'root') {
  3686. return false;
  3687. }
  3688. } elseif ($owner_id != 0) {
  3689. return false;
  3690. }
  3691. $perms = fileperms($folder);
  3692. if (($perms & 0x0100) // owner r
  3693. && ($perms & 0x0080) // owner w
  3694. && ($perms & 0x0040) && !($perms & 0x0800) // owner x
  3695. && !($perms & 0x0010) // group without w
  3696. && !($perms & 0x0002) // other without w
  3697. ) {
  3698. return true;
  3699. }
  3700. return false;
  3701. }
  3702. protected function isWorldWriteable($folder)
  3703. {
  3704. if (!file_exists($folder) || !is_dir($folder)) {
  3705. return false;
  3706. }
  3707. $perms = fileperms($folder);
  3708. if (($perms & 0x0004) // other r
  3709. && ($perms & 0x0002) // other w
  3710. && ($perms & 0x0200) // sticky bit
  3711. ) {
  3712. return true;
  3713. }
  3714. return false;
  3715. }
  3716. protected function checkSpecs()
  3717. {
  3718. if (!extension_loaded('posix')) {
  3719. die('Error! For resident scan need posix extension.');
  3720. } elseif (!$this->isRootWriteable($this->resident_in_dir_notify)) {
  3721. die('Error! Notify in dir ' . $this->resident_in_dir_notify . ' must be root writeable.');
  3722. } elseif (!$this->isWorldWriteable($this->resident_in_dir_upload)) {
  3723. die('Error! Upload in dir ' . $this->resident_in_dir_upload . ' must be world writeable.');
  3724. }
  3725. }
  3726. protected function setResidentDir($dir)
  3727. {
  3728. $this->resident_dir = $dir;
  3729. }
  3730. protected function writeReport($vars, $scan_time, $type, $file)
  3731. {
  3732. $file = basename($file);
  3733. $critPHP = count($vars->criticalPHP);
  3734. $critJS = count($vars->criticalJS);
  3735. $black = count($vars->blackFiles);
  3736. $warning = count($vars->warningPHP);
  3737. $malware = ($critPHP > 0)
  3738. || ($critJS > 0)
  3739. || ($black > 0)
  3740. || ($warning > 0);
  3741. if ($malware) {
  3742. $this->debugLog("Job {$file}: Found malware. PHP: {$critPHP}; JS: {$critJS}; Black: {$black}; SUS: {$warning}");
  3743. } else {
  3744. $this->debugLog("Job {$file}: No malware found.");
  3745. }
  3746. if ($type == 'upload') {
  3747. $pid = (int)basename($file, '.upload_job');
  3748. if ($malware) {
  3749. $this->debugLog("Job {$file}: Sending SIGUSR1 to {$pid}");
  3750. posix_kill($pid, SIGUSR1);
  3751. } else {
  3752. $this->debugLog("Job {$file}: Sending SIGUSR2 to {$pid}");
  3753. posix_kill($pid, SIGUSR2);
  3754. }
  3755. } elseif ($type == 'notify' && $malware) {
  3756. $filename = basename($file, '.notify_job');
  3757. $reports[JSONReport::class] = $this->resident_out_dir . '/' . $filename . '.report';
  3758. foreach($this->report->call($this, $reports) as $report) {
  3759. $report->generateReport($vars, $scan_time);
  3760. $this->debugLog("Job {$file}: Creating report for job in {$filename}.report");
  3761. $report->write();
  3762. }
  3763. unset($reports);
  3764. }
  3765. }
  3766. /**
  3767. * @param string $pattern
  3768. * @param string $type
  3769. *
  3770. * @return bool
  3771. */
  3772. protected function isJobFileExists($pattern, $type)
  3773. {
  3774. if ($type === self::JOB_UPLOAD) {
  3775. if (empty($this->upload_jobs)) {
  3776. $this->upload_jobs = glob($this->resident_in_dir . $pattern);
  3777. if (!empty($this->upload_jobs)) {
  3778. return true;
  3779. }
  3780. } else {
  3781. return true;
  3782. }
  3783. }
  3784. if ($type === self::JOB_NOTIFY) {
  3785. if (empty($this->notify_jobs)) {
  3786. $this->notify_jobs = glob($this->resident_in_dir . $pattern);
  3787. if (!empty($this->notify_jobs)) {
  3788. return true;
  3789. }
  3790. } else {
  3791. return true;
  3792. }
  3793. }
  3794. return false;
  3795. }
  3796. protected function isUploadJob()
  3797. {
  3798. if ($this->isJobFileExists('/upload-jobs/*.upload_job', self::JOB_UPLOAD)) {
  3799. return true;
  3800. }
  3801. return false;
  3802. }
  3803. protected function scanJob($job_file, $type)
  3804. {
  3805. $start_time = microtime(true);
  3806. $vars = new Variables();
  3807. $vars->blacklist = $this->blacklist;
  3808. $vars->maxMinUid = $type == 'notify' ? $this->maxMinUid : [];
  3809. $vars->signs = $this->signs;
  3810. $files_to_scan = array();
  3811. $count = 0;
  3812. $job = json_decode(file_get_contents($job_file));
  3813. $file = basename($job_file);
  3814. $this->debugLog("Job {$file} received from queue.");
  3815. if ($type == 'notify') {
  3816. $files_to_scan = $job->files;
  3817. $count = count($files_to_scan);
  3818. $this->debugLog("Job {$file}: notify. {$count} files to be scanned");
  3819. if ($count > $this->max_files_per_notify_scan) {
  3820. $this->debugLog("Job {$file}: Too many files to scan. Job skipped.");
  3821. // TODO: show a warning: too many files to scan, the job was skipped
  3822. return true;
  3823. }
  3824. if ($this->scannedNotify + $count > $this->max_files_per_notify_scan) {
  3825. $this->scannedNotify = 0;
  3826. unset($vars, $files_to_scan);
  3827. return false;
  3828. } else {
  3829. $this->scannedNotify += $count;
  3830. }
  3831. } elseif ($type == 'upload') {
  3832. $files_to_scan = $job->files;
  3833. $count = count($files_to_scan);
  3834. $this->debugLog("Job {$file}: upload. {$count} files to be scanned");
  3835. if ($count > 1) {
  3836. $this->debugLog("Job {$file}: Too many files to scan. Job skipped.");
  3837. // TODO: show a warning: too many files to scan, the job was skipped
  3838. return true;
  3839. }
  3840. }
  3841. $vars->foundTotalFiles = $count;
  3842. $scan = new Scanner($this->finder, $vars, $this->debug);
  3843. if (method_exists($scan, 'QCR_GoScan')) {
  3844. if ($this->systemd) {
  3845. $scan->QCR_GoScan($files_to_scan, array($this, 'keepAlive'), true, false);
  3846. } else {
  3847. $scan->QCR_GoScan($files_to_scan, null, true, false);
  3848. }
  3849. $scan->whitelisting();
  3850. }
  3851. $scan_time = round(microtime(true) - $start_time, 1);
  3852. $this->last_scan_time = time();
  3853. $this->writeReport($vars, $scan_time, $type, $job_file);
  3854. unset($vars, $files_to_scan, $scan);
  3855. if (defined('PROGRESS_LOG_FILE') && file_exists(PROGRESS_LOG_FILE)) {
  3856. @unlink(PROGRESS_LOG_FILE);
  3857. }
  3858. if (defined('CREATE_SHARED_MEMORY') && CREATE_SHARED_MEMORY) {
  3859. shmop_delete(SHARED_MEMORY);
  3860. }
  3861. if (defined('SHARED_MEMORY')) {
  3862. shmop_close(SHARED_MEMORY);
  3863. }
  3864. return true;
  3865. }
  3866. protected function isNotifyJob()
  3867. {
  3868. if ($this->isJobFileExists('/notify-jobs/*.notify_job', self::JOB_NOTIFY)) {
  3869. return true;
  3870. }
  3871. return false;
  3872. }
  3873. protected function scanUploadJob()
  3874. {
  3875. if (!empty($this->upload_jobs)) {
  3876. foreach ($this->upload_jobs as $index => $upload_job) {
  3877. $this->scanJob($upload_job, 'upload');
  3878. $file = basename($upload_job);
  3879. $this->debugLog("Job {$file}: Removing job.");
  3880. unlink($upload_job);
  3881. unset($this->upload_jobs[$index]);
  3882. }
  3883. }
  3884. }
  3885. protected function scanNotifyJob()
  3886. {
  3887. if (!empty($this->notify_jobs)) {
  3888. foreach ($this->notify_jobs as $index => $job) {
  3889. $res = $this->scanJob($job, 'notify');
  3890. if ($res) {
  3891. $file = basename($job);
  3892. $this->debugLog("Job {$file}: Removing job.");
  3893. unlink($job);
  3894. unset($this->notify_jobs[$index]);
  3895. } else {
  3896. break;
  3897. }
  3898. }
  3899. }
  3900. }
  3901. public function keepAlive()
  3902. {
  3903. if ((int)((microtime(true) - $this->lastKeepAlive) * 1000000) > $this->interval / 2) {
  3904. stream_get_contents($this->activation_socket);
  3905. fwrite($this->watchdog_socket, 'WATCHDOG=1');
  3906. $this->lastKeepAlive = microtime(true);
  3907. }
  3908. }
  3909. protected function lifeCycle()
  3910. {
  3911. $this->debugLog("Starting resident-mode loop.");
  3912. $this->last_scan_time = time();
  3913. while (true) {
  3914. if ($this->systemd) {
  3915. $this->keepAlive();
  3916. }
  3917. while ($this->isUploadJob()) {
  3918. $this->scanUploadJob();
  3919. }
  3920. while ($this->isNotifyJob() && !$this->isUploadJob()) {
  3921. $this->scanNotifyJob();
  3922. }
  3923. if ($this->last_scan_time + $this->stay_alive < time()) {
  3924. $this->debugLog("No more jobs. Shutting down.");
  3925. break;
  3926. }
  3927. touch($this->aibolit_status_file);
  3928. usleep($this->sleep_time); // 1/10 of second by default
  3929. }
  3930. if ($this->systemd) {
  3931. fclose($this->watchdog_socket);
  3932. fclose($this->activation_socket);
  3933. }
  3934. unlink($this->aibolit_status_file);
  3935. }
  3936. protected function debugLog($message)
  3937. {
  3938. if ($this->logger === null) {
  3939. return;
  3940. }
  3941. $this->logger->debug($message);
  3942. }
  3943. }
  3944. class DebugMode
  3945. {
  3946. private $debugMode = false;
  3947. private $debugPerfomance = false;
  3948. private $perfomance_stats = [];
  3949. public function __construct($debugMode, $debugPerfomance)
  3950. {
  3951. $this->debugMode = $debugMode;
  3952. $this->debugPerfomance = $debugPerfomance;
  3953. }
  3954. public function QCR_Debug($par_Str = "")
  3955. {
  3956. if ($this->debugMode) {
  3957. return;
  3958. }
  3959. $l_MemInfo = ' ';
  3960. if (function_exists('memory_get_usage')) {
  3961. $l_MemInfo .= ' curmem=' . AibolitHelpers::bytes2Human(memory_get_usage());
  3962. }
  3963. if (function_exists('memory_get_peak_usage')) {
  3964. $l_MemInfo .= ' maxmem=' . AibolitHelpers::bytes2Human(memory_get_peak_usage());
  3965. }
  3966. stdOut("\n" . date('H:i:s') . ': ' . $par_Str . $l_MemInfo . "\n");
  3967. }
  3968. public function getDebugMode()
  3969. {
  3970. return $this->debugMode;
  3971. }
  3972. public function getDebugPerfomance()
  3973. {
  3974. return $this->debugPerfomance;
  3975. }
  3976. public function addPerfomanceItem($item, $time)
  3977. {
  3978. $this->perfomance_stats[$item] = isset($this->perfomance_stats[$item]) ? $this->perfomance_stats[$item] + $time : 0;
  3979. }
  3980. public function printPerfomanceStats()
  3981. {
  3982. $keys = array_keys($this->perfomance_stats);
  3983. for ($i = 0, $iMax = count($keys); $i < $iMax; $i++) {
  3984. $this->perfomance_stats[$keys[$i]] = round($this->perfomance_stats[$keys[$i]] * 1000000);
  3985. }
  3986. arsort($this->perfomance_stats);
  3987. foreach ($this->perfomance_stats as $r => $v) {
  3988. echo $v . "\t\t" . $r . "\n";
  3989. }
  3990. }
  3991. }
  3992. class FileInfo
  3993. {
  3994. private $index = 0;
  3995. private $inode = 0;
  3996. private $filename = '';
  3997. private $size = 0;
  3998. private $created = 0;
  3999. private $modified = 0;
  4000. private $hash = 0;
  4001. private $sha256 = 0;
  4002. private $sha1file = 0;
  4003. private $content = '';
  4004. private $norm_content = '';
  4005. private $is_binary = 0;
  4006. private $hashtable = null;
  4007. /**
  4008. * @return int|string
  4009. */
  4010. public function getSha1file()
  4011. {
  4012. if ($this->sha1file == 0) {
  4013. $this->sha1file = sha1_file($this->filename);
  4014. }
  4015. return $this->sha1file;
  4016. }
  4017. public function __construct($filename, $index, $hashtable = null)
  4018. {
  4019. $this->index = $index;
  4020. $this->filename = $filename;
  4021. $this->hashtable = $hashtable;
  4022. }
  4023. /**
  4024. * @return bool
  4025. */
  4026. public function isBinary()
  4027. {
  4028. $header = '';
  4029. if ($this->is_binary === 0) {
  4030. if ($this->content == '') {
  4031. $header = @file_get_contents($this->filename, false, null, 0, 4);
  4032. } else {
  4033. $header = substr($this->content, 0, 4);
  4034. }
  4035. if ($header === chr(127) . 'ELF') {
  4036. $this->is_binary = true;
  4037. } else {
  4038. $this->is_binary = false;
  4039. }
  4040. unset($header);
  4041. }
  4042. return $this->is_binary;
  4043. }
  4044. /**
  4045. * @return false|mixed|string
  4046. */
  4047. public function getContent()
  4048. {
  4049. if ($this->content == '') {
  4050. $this->content = @file_get_contents($this->filename);
  4051. }
  4052. return $this->content;
  4053. }
  4054. /**
  4055. * @return string
  4056. */
  4057. public function getContentWithoutSpaces($max_size = false)
  4058. {
  4059. if($this->norm_content !== '') {
  4060. return $this->norm_content;
  4061. }
  4062. if (!$max_size) {
  4063. $this->norm_content = Normalization::strip_whitespace($this->getContent());
  4064. } else if(is_numeric($max_size)) {
  4065. $this->norm_content = Normalization::strip_whitespace($this->getContentBytes($max_size));
  4066. }
  4067. return $this->norm_content;
  4068. }
  4069. public function getContentBytes($max_bytes)
  4070. {
  4071. if ($this->content == '') {
  4072. $this->content = @file_get_contents($this->filename, false, null, 0, $max_bytes);
  4073. }
  4074. return $this->content;
  4075. }
  4076. /**
  4077. * @param $text
  4078. * @return string
  4079. */
  4080. private function _hash_($text)
  4081. {
  4082. static $r;
  4083. if (empty($r)) {
  4084. for ($i = 0; $i < 256; $i++) {
  4085. if ($i < 33 or $i > 127) {
  4086. $r[chr($i)] = '';
  4087. }
  4088. }
  4089. }
  4090. return sha1(strtr($text, $r));
  4091. }
  4092. /**
  4093. * @return integer
  4094. */
  4095. public function getIndex()
  4096. {
  4097. return $this->index;
  4098. }
  4099. /**
  4100. * @return string
  4101. */
  4102. public function getFilename()
  4103. {
  4104. return $this->filename;
  4105. }
  4106. private function _setStat()
  4107. {
  4108. $info = stat($this->filename);
  4109. $this->size = $info['size'];
  4110. $this->created = $info['ctime'];
  4111. $this->modified = $info['mtime'];
  4112. $this->inode = $info['ino'];
  4113. }
  4114. /**
  4115. * @return int|mixed
  4116. */
  4117. public function getSize()
  4118. {
  4119. if ($this->size == 0) {
  4120. $this->_setStat();
  4121. }
  4122. return $this->size;
  4123. }
  4124. /**
  4125. * @return int|mixed
  4126. */
  4127. public function getInode()
  4128. {
  4129. if ($this->inode == 0) {
  4130. $this->_setStat();
  4131. }
  4132. return $this->inode;
  4133. }
  4134. /**
  4135. * @return int|mixed
  4136. */
  4137. public function getCreated()
  4138. {
  4139. if ($this->created == 0) {
  4140. $this->_setStat();
  4141. }
  4142. return $this->created;
  4143. }
  4144. /**
  4145. * @return int|mixed
  4146. */
  4147. public function getModified()
  4148. {
  4149. if ($this->modified == 0) {
  4150. $this->_setStat();
  4151. }
  4152. return $this->modified;
  4153. }
  4154. /**
  4155. * @return int|string
  4156. */
  4157. public function getHash()
  4158. {
  4159. if ($this->hash == 0) {
  4160. $this->hash = $this->_hash_($this->getContentWithoutSpaces());
  4161. }
  4162. return $this->hash;
  4163. }
  4164. /**
  4165. * @return int|string
  4166. */
  4167. public function getSha256()
  4168. {
  4169. if ($this->hashtable !== null && $this->hashtable->get($this->filename) !== false) {
  4170. $this->sha256 = $this->hashtable->get($this->filename);
  4171. }
  4172. if ($this->sha256 == 0) {
  4173. $this->sha256 = hash('sha256', $this->getContent());
  4174. }
  4175. return $this->sha256;
  4176. }
  4177. }
  4178. class HashTable
  4179. {
  4180. private $hashes = [];
  4181. public function add($paths, $hashes)
  4182. {
  4183. $this->hashes[0] = $paths;
  4184. $this->hashes[1] = $hashes;
  4185. }
  4186. public function get($filename)
  4187. {
  4188. $index = array_search($filename, $this->hashes[0]);
  4189. if ($index === false) {
  4190. return false;
  4191. }
  4192. return $this->hashes[1][$index];
  4193. }
  4194. }
  4195. class Finder
  4196. {
  4197. const MAX_ALLOWED_PHP_HTML_IN_DIR = 600;
  4198. private $sym_links = [];
  4199. private $skipped_folders = [];
  4200. private $doorways = [];
  4201. private $total_dir_counter = 0;
  4202. private $total_files_counter = 0;
  4203. private $checked_hashes = [];
  4204. private $initial_dir = '';
  4205. private $initial_level = null;
  4206. private $level_limit = null;
  4207. private $filter;
  4208. public function __construct($filter = null, $level_limit = null)
  4209. {
  4210. $this->filter = $filter;
  4211. $this->level_limit = $level_limit;
  4212. }
  4213. private function linkResolve($path)
  4214. {
  4215. return realpath($path);
  4216. }
  4217. private function resolve($path, $follow_symlinks)
  4218. {
  4219. if (!$follow_symlinks || !is_link($path)) {
  4220. return $path;
  4221. }
  4222. return $this->linkResolve($path);
  4223. }
  4224. private function isPathCheckedAlready($path)
  4225. {
  4226. $root_hash = crc32($path);
  4227. if (isset($this->checked_hashes[$root_hash])) {
  4228. return true;
  4229. }
  4230. $this->checked_hashes[$root_hash] = '';
  4231. return false;
  4232. }
  4233. private function walk($path, $follow_symlinks)
  4234. {
  4235. $level = substr_count($path, '/');
  4236. if (isset($this->level_limit) && (($level - $this->initial_level + 1) > $this->level_limit)) {
  4237. return;
  4238. }
  4239. $l_DirCounter = 0;
  4240. $l_DoorwayFilesCounter = 0;
  4241. if ($follow_symlinks && $this->isPathCheckedAlready($path)) {
  4242. return;
  4243. }
  4244. # will not iterate dir, if it should be ignored
  4245. if (!$this->filter->needToScan($path, false, true)) {
  4246. $this->skipped_folders[] = $path;
  4247. return;
  4248. }
  4249. $dirh = @opendir($path);
  4250. if ($dirh === false) {
  4251. return;
  4252. }
  4253. while (($entry = readdir($dirh)) !== false) {
  4254. if ($entry == '.' || $entry == '..') {
  4255. continue;
  4256. }
  4257. $entry = $path . DIRECTORY_SEPARATOR . $entry;
  4258. if (is_link($entry)) {
  4259. $this->sym_links[] = $entry;
  4260. if (!$follow_symlinks) {
  4261. continue;
  4262. }
  4263. $real_path = $this->resolve($entry, true);
  4264. } else {
  4265. $real_path = $entry;
  4266. }
  4267. if (is_dir($entry)) {
  4268. $l_DirCounter++;
  4269. if ($l_DirCounter > self::MAX_ALLOWED_PHP_HTML_IN_DIR) {
  4270. $this->doorways[] = $path;
  4271. $l_DirCounter = -655360;
  4272. }
  4273. $this->total_dir_counter++;
  4274. yield from $this->walk($real_path, $follow_symlinks);
  4275. } else if (is_file($entry)) {
  4276. $stat = stat($entry);
  4277. if (!$stat) {
  4278. continue;
  4279. }
  4280. if (is_callable([$this->filter, 'checkShortExt']) && $this->filter->checkShortExt($entry)) {
  4281. $l_DoorwayFilesCounter++;
  4282. if ($l_DoorwayFilesCounter > self::MAX_ALLOWED_PHP_HTML_IN_DIR) {
  4283. $this->doorways[] = $path;
  4284. $l_DoorwayFilesCounter = -655360;
  4285. }
  4286. }
  4287. if ($follow_symlinks && $this->isPathCheckedAlready($real_path)) {
  4288. continue;
  4289. }
  4290. $need_to_scan = $this->filter->needToScan($real_path, $stat);
  4291. if ($need_to_scan) {
  4292. $this->total_files_counter++;
  4293. yield $real_path;
  4294. }
  4295. }
  4296. }
  4297. closedir($dirh);
  4298. }
  4299. private function expandPath($path, $follow_symlinks)
  4300. {
  4301. if ($path) {
  4302. if (is_dir($path)) {
  4303. yield from $this->walk($path, $follow_symlinks);
  4304. } else {
  4305. $need_to_scan = $this->filter->needToScan($path);
  4306. if ($need_to_scan) {
  4307. yield $path;
  4308. }
  4309. }
  4310. }
  4311. }
  4312. public function find($target)
  4313. {
  4314. if ($target === '/') {
  4315. $target = '/*';
  4316. }
  4317. if (is_string($target) && substr($target, -1) == DIRECTORY_SEPARATOR) {
  4318. $target = substr($target, 0, -1);
  4319. }
  4320. # We shouldn't use iglob for list of paths,
  4321. # cause they cannot contain * or regexp
  4322. # but can contain invalid sequence e.g. [9-0]
  4323. if (is_callable([$this->filter, 'generateCheckers'])) {
  4324. $this->filter->generateCheckers();
  4325. }
  4326. $paths = is_array($target) ? $target : new GlobIterator($target, FilesystemIterator::CURRENT_AS_PATHNAME);
  4327. foreach ($paths as $path) {
  4328. $this->initial_dir = realpath($path);
  4329. $this->initial_level = substr_count($this->initial_dir, '/');
  4330. $path = $this->linkResolve($path);
  4331. yield from $this->expandPath($path, $this->filter->isFollowSymlink());
  4332. }
  4333. }
  4334. private function convertTemplatesToRegexp($templates)
  4335. {
  4336. return '~(' . str_replace([',', '.', '*'], ['|', '\\.', '.*'], $templates) . ')~i';
  4337. }
  4338. public function setLevelLimit($level)
  4339. {
  4340. $this->level_limit = $level;
  4341. }
  4342. public function getSymlinks()
  4343. {
  4344. return $this->sym_links;
  4345. }
  4346. public function getDoorways()
  4347. {
  4348. return $this->doorways;
  4349. }
  4350. public function skippedDirs()
  4351. {
  4352. return $this->skipped_folders;
  4353. }
  4354. public function getTotalDirs()
  4355. {
  4356. return $this->total_dir_counter;
  4357. }
  4358. public function getTotalFiles()
  4359. {
  4360. return $this->total_files_counter;
  4361. }
  4362. }
  4363. class FileFilter
  4364. {
  4365. const LOG_AND_MAIL_PATTERN = [
  4366. '/sess\_\w*$',
  4367. '/stat/usage\_\w+\.html',
  4368. '/stat/site\_\w+\.html',
  4369. '/webstat/awstats.*\.txt',
  4370. '/awstats/awstats.*\.txt',
  4371. '/awstats/.{1,80}\.pl',
  4372. '/awstats/.{1,80}\.html',
  4373. '/logs/error\_log\..*',
  4374. '/logs/xferlog\..*',
  4375. '/logs/access\_log\..*',
  4376. '/domlogs/.+',
  4377. '/logs/cron\..*',
  4378. '/logs/exceptions/.+\.log(?:\.\d)?(?:\.gz)?$',
  4379. '/mail(?:/[^/]+)*/[^,]+,S=[^,]+,W=.+',
  4380. '/mail(?:/[^/]+)*/[^,]+,S=.+',
  4381. '/mail(?:/[^/]+)*/storage/u\.[0-9]+',
  4382. '/mail(?:/[^/]+)*/storage/m\.[0-9]+',
  4383. '/Maildir(?:/[^/]+)*/[^,]+,S=[^,]+,W=.+',
  4384. '/Maildir(?:/[^/]+)*/[^,]+,S=.+',
  4385. '^/var/ossec/.*',
  4386. ];
  4387. const IMUNIFY_LOG_PATTERN = [
  4388. '/var/log/imunify360/acronis-installer\.log$',
  4389. '/var/log/imunify360/console\.log(?:\.\d)?(?:\.gz)?$',
  4390. '/var/log/imunify360/debug\.log$',
  4391. '/var/log/imunify360/error\.log$',
  4392. '/var/log/install-mod\_remoteip\.log(?:\.\d{1.4})?(?:\.pid)?r$',
  4393. '/var/log/imunify360/malware\_scan\_\d{10}\.log$',
  4394. '/var/log/imunify360/network\.log$',
  4395. '/var/log/imunify360/process\_message\.log$',
  4396. '/var/log/imunify360-webshield/access.log(?:-\d{8})?(?:.gz)?$',
  4397. '/var/log/imunify360-webshield/error.log(?:-\d{8})?(?:.gz)?$',
  4398. '/.revisium_antivirus_cache/.revisium\d+/',
  4399. '/admin/plib/modules/revisium-antivirus/library/externals/',
  4400. ];
  4401. const IMUNIFY_DIRS = [
  4402. '/etc/cagefs/conf.d/ai-bolit.cfg',
  4403. '/etc/cagefs/conf.d/clamav.cfg',
  4404. '/etc/cagefs/exclude/imunify360',
  4405. '/etc/chkserv.d/imunify-antivirus',
  4406. '/etc/chkserv.d/imunify360-agent',
  4407. '/etc/cron.daily/imunify-antivirus.cron',
  4408. '/etc/cron.daily/imunify360.cron',
  4409. '/etc/imunify360-webshield',
  4410. '/etc/imunify360',
  4411. '/etc/logrotate.d/imunify360',
  4412. '/etc/nginx/conf.d/i360.remoteip.conf',
  4413. '/etc/sysconfig/imunify360',
  4414. '/opt/ai-bolit',
  4415. '/opt/alt/python35/bin/imunify360-agent',
  4416. '/opt/alt/python35/bin/imunify360-command-wrapper',
  4417. '/opt/alt/python35/lib/python3.5/site-packages/defence360agent',
  4418. '/opt/alt/python35/share/imunify360',
  4419. '/run/chkservd/imunify360-webshield',
  4420. '/run/chkservd/restart_track/imunify360-webshield',
  4421. '/run/imunify360-webshield.pid',
  4422. '/usr/bin/imunify-antivirus',
  4423. '/usr/bin/imunify360-agent',
  4424. '/usr/bin/imunify360-command-wrapper',
  4425. '/usr/lib/systemd/system/imunify-antivirus.service',
  4426. '/usr/lib/systemd/system/imunify360-pure.service',
  4427. '/usr/lib/systemd/system/imunify360-webshield',
  4428. '/usr/lib/systemd/system/imunify360.service',
  4429. '/usr/local/cpanel/base/frontend/paper_lantern/imunify',
  4430. '/usr/local/directadmin/plugins/Imunify',
  4431. '/usr/sbin/imunify360-webshield',
  4432. '/var/cache/imunify360-webshield',
  4433. '/var/cpanel/apps',
  4434. '/var/imunify360',
  4435. '/var/log/cloudlinux-backup-util'
  4436. ];
  4437. const SHORT_LIST_EXT = [
  4438. 'php',
  4439. 'php3',
  4440. 'php4',
  4441. 'php5',
  4442. 'php7',
  4443. 'pht',
  4444. 'html',
  4445. 'htm',
  4446. 'phtml',
  4447. 'shtml',
  4448. 'khtml',
  4449. '',
  4450. 'ico',
  4451. 'txt'
  4452. ];
  4453. const SUSPICIOUS_EXT = [
  4454. 'cgi',
  4455. 'pl',
  4456. 'o',
  4457. 'so',
  4458. 'py',
  4459. 'sh',
  4460. 'phtml',
  4461. 'php3',
  4462. 'php4',
  4463. 'php5',
  4464. 'php6',
  4465. 'php7',
  4466. 'pht',
  4467. 'shtml'
  4468. ];
  4469. private $sensitiveExt = [
  4470. 'php',
  4471. 'js',
  4472. 'json',
  4473. 'htaccess',
  4474. 'html',
  4475. 'htm',
  4476. 'tpl',
  4477. 'inc',
  4478. 'css',
  4479. 'txt',
  4480. 'sql',
  4481. 'ico',
  4482. '',
  4483. 'susp',
  4484. 'suspected',
  4485. 'zip',
  4486. 'tar'
  4487. ];
  4488. const SKIP_SMART_MASK = [
  4489. '/template_\w{32}.css',
  4490. '/cache/templates/.{1,150}\.tpl\.php',
  4491. '/system/cache/templates_c/\w{1,40}\.php',
  4492. '/assets/cache/rss/\w{1,60}',
  4493. '/cache/minify/minify_\w{32}',
  4494. '/cache/page/\w{32}\.php',
  4495. '/cache/object/\w{1,10}/\w{1,10}/\w{1,10}/\w{32}\.php',
  4496. '/cache/wp-cache-\d{32}\.php',
  4497. '/cache/page/\w{32}\.php_expire',
  4498. '/cache/page/\w{32}-cache-page-\w{32}\.php',
  4499. '\w{32}-cache-com_content-\w{32}\.php',
  4500. '\w{32}-cache-mod_custom-\w{32}\.php',
  4501. '\w{32}-cache-mod_templates-\w{32}\.php',
  4502. '\w{32}-cache-_system-\w{32}\.php',
  4503. '/cache/twig/\w{1,32}/\d+/\w{1,100}\.php',
  4504. '/autoptimize/js/autoptimize_\w{32}\.js',
  4505. '/bitrix/cache/\w{32}\.php',
  4506. '/bitrix/cache/.{1,200}/\w{32}\.php',
  4507. '/bitrix/cache/iblock_find/',
  4508. '/bitrix/managed_cache/MYSQL/user_option/[^/]+/',
  4509. '/bitrix/cache/s1/bitrix/catalog\.section/',
  4510. '/bitrix/cache/s1/bitrix/catalog\.element/',
  4511. '/bitrix/cache/s1/bitrix/menu/',
  4512. '/catalog.element/[^/]+/[^/]+/\w{32}\.php',
  4513. '/bitrix/managed\_cache/.{1,150}/\.\w{32}\.php',
  4514. '/core/cache/mgr/smarty/default/.{1,100}\.tpl\.php',
  4515. '/core/cache/resource/web/resources/[0-9]{1,50}\.cache\.php',
  4516. '/smarty/compiled/SC/.{1,100}/%%.{1,200}\.php',
  4517. '/smarty/.{1,150}\.tpl\.php',
  4518. '/smarty/compile/.{1,150}\.tpl\.cache\.php',
  4519. '/files/templates_c/.{1,150}\.html\.php',
  4520. '/uploads/javascript_global/.{1,150}\.js',
  4521. '/assets/cache/rss/\w{32}',
  4522. 'сore/cache/resource/web/resources/\d+\.cache\.php',
  4523. '/assets/cache/docid_\d+_\w{32}\.pageCache\.php',
  4524. '/t3-assets/dev/t3/.{1,150}-cache-\w{1,20}-.{1,150}\.php',
  4525. '/t3-assets/js/js-\w{1,30}\.js',
  4526. '/temp/cache/SC/.{1,100}/\.cache\..{1,100}\.php',
  4527. '/tmp/sess\_\w{32}$',
  4528. '/assets/cache/docid\_.{1,100}\.pageCache\.php',
  4529. '/stat/usage\_\w{1,100}\.html',
  4530. '/stat/site\_\w{1,100}\.html',
  4531. '/gallery/item/list/\w{1,100}\.cache\.php',
  4532. '/core/cache/registry/.{1,100}/ext-.{1,100}\.php',
  4533. '/core/cache/resource/shk\_/\w{1,50}\.cache\.php',
  4534. '/cache/\w{1,40}/\w+-cache-\w+-\w{32,40}\.php',
  4535. '/webstat/awstats.{1,150}\.txt',
  4536. '/awstats/awstats.{1,150}\.txt',
  4537. '/awstats/.{1,80}\.pl',
  4538. '/awstats/.{1,80}\.html',
  4539. '/inc/min/styles_\w+\.min\.css',
  4540. '/inc/min/styles_\w+\.min\.js',
  4541. '/logs/error\_log\.', '/logs/xferlog\.',
  4542. '/logs/access_log\.',
  4543. '/logs/cron\.',
  4544. '/logs/exceptions/.{1,200}\.log$',
  4545. '/hyper-cache/[^/]{1,50}/[^/]{1,50}/[^/]{1,50}/index\.html',
  4546. '/mail/new/[^,]+,S=[^,]+,W=',
  4547. '/mail/new/[^,]=,S=',
  4548. '/application/logs/\d+/\d+/\d+\.php',
  4549. '/sites/default/files/js/js_\w{32}\.js',
  4550. '/yt-assets/\w{32}\.css',
  4551. '/wp-content/cache/object/\w{1,5}/\w{1,5}/\w{32}\.php',
  4552. '/catalog\.section/\w{1,5}/\w{1,5}/\w{32}\.php',
  4553. '/simpla/design/compiled/[\w\.]{40,60}\.php',
  4554. '/compile/\w{2}/\w{2}/\w{2}/[\w.]{40,80}\.php',
  4555. '/sys-temp/static-cache/[^/]{1,60}/userCache/[\w\./]{40,100}\.php',
  4556. '/session/sess_\w{32}',
  4557. '/webstat/awstats\.[\w\./]{3,100}\.html',
  4558. '/stat/webalizer\.current',
  4559. '/stat/usage_\d+\.html'
  4560. ];
  4561. private $ignoreExt = [];
  4562. private $ignoreListPatterns = [];
  4563. private $ignoreList = null;
  4564. private $ignoreFilenameByRegexp = null;
  4565. private $onlyFilepathRegexp = null;
  4566. private $skipFilesOlder = null;
  4567. private $initialDir = null;
  4568. private $file_checkers = [];
  4569. private $dir_checkers = [];
  4570. private $excludes = [];
  4571. private $check_is_not_root;
  4572. private $check_is_not_system;
  4573. private $check_is_file;
  4574. private $ignore_quar;
  4575. private $check_file_older;
  4576. private $check_ignore_file;
  4577. private $check_ignore_filename_template;
  4578. private $check_only_filepath_template;
  4579. private $check_scope;
  4580. private $check_ext;
  4581. private $ignore_ext;
  4582. private $check_short_ext;
  4583. private $ignore_path_pattern;
  4584. private $skipRootOwner = false;
  4585. private $skipSystemOwner = false;
  4586. private $followSymlink = false;
  4587. private $ignoreQuarantine = false;
  4588. private $scanAllExt = false;
  4589. private $smartScan = false;
  4590. private $imunify_filters = false;
  4591. private $ignored_av_admin = false;
  4592. private $ignored_av_internal = false;
  4593. private $admin_watched = false;
  4594. private $ignore_symlink = true;
  4595. private $match_patterns = [];
  4596. private $no_match_patterns = [];
  4597. private $ignored_av_admin_file = '/etc/sysconfig/imunify360/malware-filters-admin-conf/processed/ignored/av-admin.txt';
  4598. private $ignored_av_internal_file = '/etc/sysconfig/imunify360/malware-filters-admin-conf/processed/ignored/av-internal.txt';
  4599. private $admin_watched_file = '/etc/sysconfig/imunify360/malware-filters-admin-conf/admin/watched.txt';
  4600. private $basedirs_file = '/etc/sysconfig/imunify360/malware-filters-admin-conf/processed/basedirs-list.txt';
  4601. private function getIgnoredAVAdmin()
  4602. {
  4603. if (!$this->ignored_av_admin) {
  4604. $this->ignored_av_admin = trim(file_get_contents($this->ignored_av_admin_file));
  4605. }
  4606. return $this->ignored_av_admin;
  4607. }
  4608. private function getIgnoredAVInternal()
  4609. {
  4610. if (!$this->ignored_av_internal) {
  4611. $this->ignored_av_internal = trim(file_get_contents($this->ignored_av_internal_file));
  4612. }
  4613. return $this->ignored_av_internal;
  4614. }
  4615. private function getBaseDirs()
  4616. {
  4617. return file($this->basedirs_file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
  4618. }
  4619. private function fixTrailingSlash($path)
  4620. {
  4621. if ($path[0] !== '/') {
  4622. $path = '/' . $path;
  4623. }
  4624. return $path;
  4625. }
  4626. private function resolveBaseDirs($basedirs, $path)
  4627. {
  4628. $result = [];
  4629. $tmp = substr($path, 1);
  4630. $tmp = $this->fixTrailingSlash($tmp);
  4631. foreach ($basedirs as $dir) {
  4632. $result [] = $dir . $tmp;
  4633. }
  4634. return $result;
  4635. }
  4636. private function processWatchedItems($basedirs, $paths)
  4637. {
  4638. $result = [];
  4639. foreach ($paths as $item) {
  4640. $item = trim($item);
  4641. if ($item[0] === '#') {
  4642. continue;
  4643. } else if ($item[0] === '+') {
  4644. $result = array_merge($result, $this->resolveBaseDirs($basedirs, $item));
  4645. } else {
  4646. $result[] = $item;
  4647. }
  4648. }
  4649. return $result;
  4650. }
  4651. private function getAdminWatched()
  4652. {
  4653. if (!$this->admin_watched) {
  4654. $this->admin_watched = [];
  4655. $basedirs = $this->getBaseDirs();
  4656. $paths = file($this->admin_watched_file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
  4657. $this->admin_watched = $this->processWatchedItems($basedirs, $paths);
  4658. }
  4659. return $this->admin_watched;
  4660. }
  4661. public function setSmartScan()
  4662. {
  4663. $this->smartScan = true;
  4664. }
  4665. public function isSmartScan()
  4666. {
  4667. return $this->smartScan;
  4668. }
  4669. public function setImunifyFilters()
  4670. {
  4671. $this->imunify_filters = true;
  4672. }
  4673. public function setScanAll()
  4674. {
  4675. $this->scanAllExt = true;
  4676. }
  4677. public function setIgnoreExt($ext_list)
  4678. {
  4679. if (!$ext_list) {
  4680. return;
  4681. }
  4682. $this->ignoreExt = explode(',', $ext_list);
  4683. for ($i = 0, $iMax = count($this->ignoreExt); $i < $iMax; $i++) {
  4684. $this->ignoreExt[$i] = trim($this->ignoreExt[$i]);
  4685. }
  4686. $this->ignoreExt = array_flip($this->ignoreExt);
  4687. }
  4688. public function setSensitiveExt($ext_list)
  4689. {
  4690. if (!$ext_list) {
  4691. return;
  4692. }
  4693. $this->sensitiveExt = explode(",", $ext_list);
  4694. for ($i = 0, $iMax = count($this->sensitiveExt); $i < $iMax; $i++) {
  4695. if ($this->sensitiveExt[$i] == '.') {
  4696. $this->sensitiveExt[$i] = '';
  4697. }
  4698. }
  4699. $this->sensitiveExt = array_flip($this->sensitiveExt);
  4700. }
  4701. public function getSensitiveExt()
  4702. {
  4703. return array_flip($this->sensitiveExt);
  4704. }
  4705. public function setIgnoreListPatterns($filepath)
  4706. {
  4707. if (!file_exists($filepath) || !is_file($filepath) || !is_readable($filepath)) {
  4708. return;
  4709. }
  4710. $this->ignoreListPatterns = [];
  4711. $content = file_get_contents($filepath);
  4712. $list = explode("\n", $content);
  4713. foreach ($list as $pattern) {
  4714. if (trim($pattern) == '') {
  4715. continue;
  4716. }
  4717. $this->ignoreListPatterns[] = $pattern;
  4718. }
  4719. }
  4720. public function __construct()
  4721. {
  4722. $this->sensitiveExt = array_merge($this->sensitiveExt, self::SUSPICIOUS_EXT);
  4723. $this->sensitiveExt = array_flip($this->sensitiveExt);
  4724. $this->ignore_quar = function ($file) {
  4725. if (strpos($file, '/.imunify.quarantined') !== false) {
  4726. $st = stat($file);
  4727. if (!$st) {
  4728. return false;
  4729. }
  4730. return $st['uid'] !== 0;
  4731. }
  4732. return true;
  4733. };
  4734. $this->ignore_excludes = function ($file) {
  4735. $tree = $this->getTree($file);
  4736. if ($this->pathRelatesTo($tree, $this->excludes)) {
  4737. return false;
  4738. }
  4739. return true;
  4740. };
  4741. $this->check_file_older = function ($file) {
  4742. return (@filemtime($file) > $this->skipFilesOlder) || (@filectime($file) > $this->skipFilesOlder);
  4743. };
  4744. $this->check_ignore_file = function ($file) {
  4745. $tree = $this->getTree($file);
  4746. if ($this->pathRelatesTo($tree, $this->ignoreList, true)) {
  4747. return false;
  4748. }
  4749. return true;
  4750. };
  4751. $this->check_ignore_filename_template = function ($file) {
  4752. return !preg_match($this->ignoreFilenameByRegexp, basename($file));
  4753. };
  4754. $this->check_only_filepath_template = function ($file) {
  4755. return preg_match($this->onlyFilepathRegexp, $file);
  4756. };
  4757. $this->check_is_not_root = function ($file) {
  4758. $stat = stat($file);
  4759. return $stat['gid'] !== 0 && $stat['uid'] !== 0;
  4760. };
  4761. $this->check_is_not_system = function ($file) {
  4762. $stat = stat($file);
  4763. return ($stat['uid'] >= $this->skipSystemOwner[0] && $stat['uid'] <= $this->skipSystemOwner[1]);
  4764. };
  4765. $this->check_is_file = function ($file) {
  4766. return is_file($file);
  4767. };
  4768. $this->check_file_patterns = function ($file) {
  4769. foreach($this->match_patterns as $pattern) {
  4770. $match = fnmatch($pattern, $file);
  4771. if ($match) {
  4772. return $match;
  4773. }
  4774. }
  4775. return false;
  4776. };
  4777. $this->check_file_not_patterns = function ($file) {
  4778. foreach($this->no_match_patterns as $pattern) {
  4779. $match = fnmatch($pattern, $file);
  4780. if ($match) {
  4781. return !$match;
  4782. }
  4783. }
  4784. return true;
  4785. };
  4786. $this->ignore_symlink = function ($file) {
  4787. return !is_link($file);
  4788. };
  4789. $this->check_scope = function ($file) {
  4790. return strpos($file, $this->initialDir) === 0;
  4791. };
  4792. $this->ignore_dots = function ($file) {
  4793. return !($file == '.' || $file == '..');
  4794. };
  4795. $this->check_ext = function ($file) {
  4796. if ($this->scanAllExt) {
  4797. return true;
  4798. }
  4799. $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
  4800. return isset($this->sensitiveExt[$ext]);
  4801. };
  4802. $this->ignore_ext = function ($file) {
  4803. $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
  4804. return !isset($this->ignoreExt[$ext]);
  4805. };
  4806. $this->check_short_ext = function ($file) {
  4807. $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
  4808. return in_array($ext, self::SHORT_LIST_EXT);
  4809. };
  4810. $this->ignore_path_pattern = function ($file) {
  4811. foreach ($this->ignoreListPatterns as $pattern) {
  4812. if (($pattern != '') && preg_match('#' . $pattern . '#', $file)) {
  4813. return false;
  4814. }
  4815. }
  4816. return true;
  4817. };
  4818. $this->imunify_filter = function ($file) {
  4819. if (preg_match('~' . $this->getIgnoredAVAdmin() . '~msi', $file)) {
  4820. return false;
  4821. }
  4822. if (preg_match('~' . $this->getIgnoredAVInternal() . '~msi', $file)) {
  4823. foreach ($this->getAdminWatched() as $rec_watched) {
  4824. if (fnmatch($rec_watched, $file)) {
  4825. return true;
  4826. }
  4827. }
  4828. return false;
  4829. }
  4830. return true;
  4831. };
  4832. $this->excludes = array_flip(self::IMUNIFY_DIRS);
  4833. $this->file_checkers[] = $this->ignore_path_pattern;
  4834. $this->file_checkers[] = $this->check_is_file;
  4835. $this->file_checkers[] = $this->check_ext;
  4836. $this->file_checkers[] = $this->ignore_excludes;
  4837. $this->dir_checkers[] = $this->ignore_path_pattern;
  4838. $this->dir_checkers[] = $this->ignore_excludes;
  4839. $this->dir_checkers[] = $this->ignore_dots;
  4840. }
  4841. public function setIgnoreListFile($filepath)
  4842. {
  4843. if (!file_exists($filepath) || !is_file($filepath) || !is_readable($filepath)) {
  4844. return;
  4845. }
  4846. $this->ignoreList = [];
  4847. $content = file_get_contents($filepath);
  4848. $list = explode("\n", $content);
  4849. foreach ($list as $base64_filepath) {
  4850. if ($base64_filepath !== '') {
  4851. $this->ignoreList[$base64_filepath] = '';
  4852. }
  4853. }
  4854. }
  4855. public function setIgnoreFilenames($templates)
  4856. {
  4857. if (!$templates) {
  4858. return;
  4859. }
  4860. $this->no_match_patterns = explode(',', $templates);
  4861. for ($i = 0, $iMax = count($this->no_match_patterns); $i < $iMax; $i++) {
  4862. $this->no_match_patterns[$i] = trim($this->no_match_patterns[$i]);
  4863. }
  4864. }
  4865. public function setOnlyFilepaths($templates)
  4866. {
  4867. if (empty($templates)) {
  4868. return;
  4869. }
  4870. $this->match_patterns = explode(',', $templates);
  4871. for ($i = 0, $iMax = count($this->match_patterns); $i < $iMax; $i++) {
  4872. $this->match_patterns[$i] = trim($this->match_patterns[$i]);
  4873. }
  4874. }
  4875. public function setSkipFilesOlder($unix_timestamp)
  4876. {
  4877. $this->skipFilesOlder = $unix_timestamp;
  4878. }
  4879. public function setSkipRootOwner()
  4880. {
  4881. $this->skipRootOwner = true;
  4882. }
  4883. public function setSkipSystemOwner($min_max_uid)
  4884. {
  4885. if (is_array($min_max_uid)) {
  4886. $this->skipSystemOwner = $min_max_uid;
  4887. }
  4888. }
  4889. public function setFollowSymlink()
  4890. {
  4891. $this->followSymlink = true;
  4892. }
  4893. public function isFollowSymlink()
  4894. {
  4895. return $this->followSymlink;
  4896. }
  4897. public function setIgnoreQuarantine()
  4898. {
  4899. $this->ignoreQuarantine = true;
  4900. }
  4901. public function generateCheckers()
  4902. {
  4903. $file_checkers = $this->file_checkers;
  4904. if ($this->match_patterns) {
  4905. $file_checkers[] = $this->check_file_patterns;
  4906. }
  4907. if ($this->no_match_patterns) {
  4908. $file_checkers[] = $this->check_file_not_patterns;
  4909. }
  4910. if ($this->skipRootOwner) {
  4911. $file_checkers[] = $this->check_is_not_root;
  4912. }
  4913. if ($this->skipSystemOwner && is_array($this->skipSystemOwner)) {
  4914. $file_checkers[] = $this->check_is_not_system;
  4915. }
  4916. $dir_checkers = $this->dir_checkers;
  4917. if(!$this->followSymlink) {
  4918. $dir_checkers[] = $this->ignore_symlink;
  4919. }
  4920. if ($this->ignoreQuarantine) {
  4921. $dir_checkers[] = $this->ignore_quar;
  4922. }
  4923. if ($this->skipFilesOlder) {
  4924. $file_checkers[] = $this->check_file_older;
  4925. }
  4926. if ($this->ignoreFilenameByRegexp) {
  4927. $file_checkers[] = $this->check_ignore_filename_template;
  4928. }
  4929. if (!empty($this->ignoreList)) {
  4930. $file_checkers[] = $this->check_ignore_file;
  4931. $dir_checkers[] = $this->check_ignore_file;
  4932. }
  4933. if ($this->onlyFilepathRegexp) {
  4934. $file_checkers[] = $this->check_only_filepath_template;
  4935. }
  4936. if (!empty($this->ignoreExt)) {
  4937. $file_checkers[] = $this->ignore_ext;
  4938. }
  4939. if ($this->imunify_filters) {
  4940. $file_checkers[] = $this->imunify_filter;
  4941. }
  4942. $this->ignoreListPatterns = array_merge($this->ignoreListPatterns, self::IMUNIFY_LOG_PATTERN, self::LOG_AND_MAIL_PATTERN);
  4943. if($this->smartScan) {
  4944. $this->ignoreListPatterns = array_merge($this->ignoreListPatterns, self::SKIP_SMART_MASK);
  4945. }
  4946. $this->file_checkers = $file_checkers;
  4947. $this->dir_checkers = $dir_checkers;
  4948. }
  4949. public function getFileCheckers()
  4950. {
  4951. return $this->file_checkers;
  4952. }
  4953. public function getDirCheckers()
  4954. {
  4955. return $this->dir_checkers;
  4956. }
  4957. private function check($file, $where, $stat = false)
  4958. {
  4959. if (!$file) {
  4960. return false;
  4961. }
  4962. if (!$stat) {
  4963. $stat = stat($file);
  4964. }
  4965. foreach ($where as $func) {
  4966. if(empty($func)) {
  4967. continue;
  4968. }
  4969. if (!$func($file, $stat)) {
  4970. return false;
  4971. }
  4972. }
  4973. return true;
  4974. }
  4975. public function needToScan($file, $stat = false, $only_dir = false)
  4976. {
  4977. if (!$file) {
  4978. return false;
  4979. }
  4980. if (!$stat) {
  4981. $stat = @stat($file);
  4982. if (!$stat) {
  4983. return false;
  4984. }
  4985. }
  4986. if (!$only_dir && !$this->check($file, $this->getFileCheckers(), $stat)) {
  4987. return false;
  4988. }
  4989. if (!$this->check($file, $this->getDirCheckers(), $stat)) {
  4990. return false;
  4991. }
  4992. return true;
  4993. }
  4994. private function getTree($file)
  4995. {
  4996. $tree = [];
  4997. $path = $file;
  4998. $i = 1;
  4999. while ($path !== '.' && $path !== '/') {
  5000. $path = dirname($path, $i);
  5001. $tree[] = $path;
  5002. $i++;
  5003. }
  5004. $tree[] = $file;
  5005. return $tree;
  5006. }
  5007. private function pathRelatesTo($tree, $pathes, $base64 = false)
  5008. {
  5009. foreach ($tree as $path) {
  5010. if ($base64) {
  5011. $path = base64_encode($path);
  5012. }
  5013. if (isset($pathes[$path])) {
  5014. return true;
  5015. }
  5016. }
  5017. return false;
  5018. }
  5019. public function checkShortExt($path)
  5020. {
  5021. return $this->check_short_ext->call($this, $path);
  5022. }
  5023. }
  5024. class Scanner
  5025. {
  5026. private $addPrefix;
  5027. private $noPrefix;
  5028. private $finder;
  5029. private $vars;
  5030. private $debug;
  5031. public function __construct($finder, $vars, $debug = null)
  5032. {
  5033. $this->addPrefix = isset($vars->options['addprefix']) ? $vars->options['addprefix'] : '';
  5034. $this->noPrefix = isset($vars->options['noprefix']) ? $vars->options['noprefix'] : '';;
  5035. $this->finder = $finder;
  5036. $this->vars = $vars;
  5037. $this->suspicious = isset($vars->options['with-suspicious']);
  5038. $this->debug = $debug;
  5039. }
  5040. private function CloudAssitedFilter($files_list)
  5041. {
  5042. $black_files = [];
  5043. $white_files = [];
  5044. try {
  5045. $car = Factory::instance()->create(CloudAssistedRequest::class, [CLOUD_ASSIST_TOKEN]);
  5046. $cloud_assist_files = new CloudAssistedFiles($car, $files_list, $this->vars);
  5047. $white_files = $cloud_assist_files->getWhiteList();
  5048. $black_files = $cloud_assist_files->getBlackList();
  5049. unset($cloud_assist_files);
  5050. }
  5051. catch (\Exception $e) {
  5052. fwrite(STDERR, 'Warning: [CAS] ' . $e->getMessage() . PHP_EOL);
  5053. if (isset($this->debug)) {
  5054. $this->debug->QCR_Debug($e->getMessage());
  5055. }
  5056. }
  5057. $this->vars->blackFiles = array_diff_assoc(array_merge($this->vars->blackFiles, $black_files), $white_files);
  5058. return array_diff($files_list, array_keys($black_files), array_keys($white_files));
  5059. }
  5060. public function QCR_ScanDirectories($l_RootDir)
  5061. {
  5062. static $l_Buffer = '';
  5063. if (isset($this->debug)) {
  5064. $this->debug->QCR_Debug('Scan ' . $l_RootDir);
  5065. }
  5066. $listFiles = $this->finder->find($l_RootDir);
  5067. foreach ($listFiles as $l_FileName) {
  5068. if (ONE_PASS) {
  5069. $this->QCR_ScanFile($l_FileName, $this->vars, null, $this->vars->counter++);
  5070. } else {
  5071. $l_Buffer .= FilepathEscaper::encodeFilepathByBase64($l_FileName) . "\n";
  5072. }
  5073. $this->vars->counter++;
  5074. if (strlen($l_Buffer) > 32000) {
  5075. file_put_contents(QUEUE_FILENAME, $l_Buffer, FILE_APPEND) || die2("Cannot write to file " . QUEUE_FILENAME);
  5076. $l_Buffer = '';
  5077. }
  5078. }
  5079. $this->vars->symLinks = $this->finder->getSymlinks();
  5080. $this->vars->doorway = $this->finder->getDoorways();
  5081. $this->vars->foundTotalDirs = $this->finder->getTotalDirs();
  5082. $this->vars->foundTotalFiles = $this->finder->getTotalFiles();
  5083. if (!empty($l_Buffer)
  5084. && (isset($this->vars->options['use-template-in-path'])
  5085. || $l_RootDir == ROOT_PATH
  5086. )
  5087. ) {
  5088. file_put_contents(QUEUE_FILENAME, $l_Buffer, FILE_APPEND) || die2("Cannot write to file " . QUEUE_FILENAME);
  5089. $l_Buffer = '';
  5090. }
  5091. unset($listFiles);
  5092. }
  5093. public function QCR_GoScan($s_file, $callback = null, $base64_encoded = true, $skip_first_line = false)
  5094. {
  5095. if (isset($this->debug)) {
  5096. $this->debug->QCR_Debug('QCR_GoScan ');
  5097. }
  5098. try {
  5099. $i = 0;
  5100. $filesForCloudAssistedScan = [];
  5101. foreach ($s_file as $index => $filepath_encoded) {
  5102. if ($callback !== null) {
  5103. $this->callCallback($callback);
  5104. }
  5105. if ($skip_first_line && $index == 0) {
  5106. $i = 1;
  5107. continue;
  5108. }
  5109. $filepath = $base64_encoded ? FilepathEscaper::decodeFilepathByBase64($filepath_encoded) : $filepath_encoded;
  5110. if (!file_exists($filepath) || !is_file($filepath) || !is_readable($filepath)) {
  5111. continue;
  5112. }
  5113. if (!empty($this->vars->maxMinUid)) {
  5114. $stat = stat($filepath);
  5115. if (!($stat['uid'] >= $this->vars->maxMinUid[0] && $this->stat['uid'] <= $this->vars->maxMinUid[1])) {
  5116. continue;
  5117. }
  5118. }
  5119. $filesize = filesize($filepath);
  5120. if ($filesize > MAX_FILE_SIZE_FOR_CHECK || $filesize < MIN_FILE_SIZE_FOR_CHECK) {
  5121. continue;
  5122. }
  5123. if (substr($filepath, -1) == DIR_SEPARATOR || !defined('CLOUD_ASSIST_TOKEN')) {
  5124. $this->QCR_ScanFile($filepath, $this->vars, $callback, $i++);
  5125. continue;
  5126. }
  5127. if ($this->isFileTooBigForCloudscan($filesize)) {
  5128. $this->QCR_ScanFile($filepath, $this->vars, $callback, $i++);
  5129. continue;
  5130. }
  5131. // collecting files to scan with Cloud Assistant
  5132. $filesForCloudAssistedScan[] = $filepath;
  5133. }
  5134. if (count($filesForCloudAssistedScan) == 0) {
  5135. return;
  5136. }
  5137. if (defined('RAPID_ACCOUNT_SCAN')) {
  5138. $cloud_assited_storage = Factory::instance()->create(CloudAssistedStorage::class, [RAPID_ACCOUNT_SCAN]);
  5139. $storage = Factory::instance()->create(RapidScanStorage::class, [RAPID_ACCOUNT_SCAN]);
  5140. /** @var RapidAccountScan $scanner */
  5141. $scanner = Factory::instance()->create(RapidAccountScan::class, [$this, $storage, $cloud_assited_storage, &$this->vars, $i]);
  5142. $scanner->scan($filesForCloudAssistedScan, $this->vars, constant('RapidAccountScan::RESCAN_' . RAPID_ACCOUNT_SCAN_TYPE));
  5143. if ($scanner->getStrError()) {
  5144. if (isset($this->debug)) {
  5145. $this->debug->QCR_Debug('Rapid scan log: ' . $scanner->getStrError());
  5146. }
  5147. }
  5148. $this->vars->rescanCount += $scanner->getRescanCount();
  5149. } else {
  5150. $scan_bufer_files = function ($files_list, &$i) use ($callback) {
  5151. $this->vars->hashtable = new HashTable();
  5152. $files_to_scan = $this->CloudAssitedFilter($files_list);
  5153. foreach ($files_to_scan as $filepath) {
  5154. $this->QCR_ScanFile($filepath, $this->vars, $callback, $i++);
  5155. }
  5156. $this->vars->hashtable = null;
  5157. };
  5158. $files_bufer = [];
  5159. foreach ($filesForCloudAssistedScan as $l_Filename) {
  5160. $files_bufer[] = $l_Filename;
  5161. if (count($files_bufer) >= CLOUD_ASSIST_LIMIT) {
  5162. $scan_bufer_files($files_bufer, $i);
  5163. $files_bufer = [];
  5164. }
  5165. }
  5166. if (count($files_bufer)) {
  5167. $scan_bufer_files($files_bufer, $i);
  5168. }
  5169. unset($files_bufer);
  5170. }
  5171. } catch (Exception $e) {
  5172. if (isset($this->debug)) {
  5173. $this->debug->QCR_Debug($e->getMessage());
  5174. }
  5175. }
  5176. }
  5177. public function QCR_ScanFile($l_Filename, $vars, $callback = null, $i = 0, $show_progress = true)
  5178. {
  5179. $return = array(RapidScanStorageRecord::RX_GOOD, '', '');
  5180. $g_SkipNextCheck = false;
  5181. /** @var CriticalFileSpecification $criticalFileSpecification */
  5182. $criticalFileSpecification = Factory::instance()->create(CriticalFileSpecification::class);
  5183. if ($vars->fileinfo !== null) {
  5184. if ($l_Filename !== $vars->fileinfo->getFilename()) {
  5185. unset($file);
  5186. $vars->fileinfo = null;
  5187. }
  5188. }
  5189. if ($vars->fileinfo == null) {
  5190. $file = new FileInfo($l_Filename, $i, $vars->hashtable);
  5191. $vars->fileinfo = $file;
  5192. }
  5193. $file = $vars->fileinfo;
  5194. $vars->crc = 0;
  5195. $l_CriticalDetected = false;
  5196. if (substr($l_Filename, -1) == DIR_SEPARATOR) {
  5197. // FOLDER
  5198. $vars->structure['n'][$i] = $l_Filename;
  5199. $vars->totalFolder++;
  5200. printProgress($vars->files_and_ignored, $l_Filename, $vars);
  5201. unset($file);
  5202. $vars->fileinfo = null;
  5203. return null;
  5204. }
  5205. if (isset($this->debug)) {
  5206. $this->debug->QCR_Debug('Scan file ' . $l_Filename);
  5207. }
  5208. if ($show_progress) {
  5209. printProgress(++$vars->files_and_ignored, $l_Filename, $vars);
  5210. }
  5211. $l_Ext = strtolower(pathinfo($l_Filename, PATHINFO_EXTENSION));
  5212. $l_Content = '';
  5213. if ($file->isBinary()) {
  5214. if(defined('USE_HEURISTICS') || defined('USE_HEURISTICS_SUSPICIOUS')) {
  5215. $vars->crc = $file->getSha1file();
  5216. $this->AddResult($file, $i, $vars);
  5217. if (defined('USE_HEURISTICS')) {
  5218. $vars->criticalPHP[] = $i;
  5219. $vars->criticalPHPFragment[] = 'SMW-HEUR-ELF';
  5220. $vars->criticalPHPSig[] = 'SMW-HEUR-ELF';
  5221. }
  5222. if (defined('USE_HEURISTICS_SUSPICIOUS')) {
  5223. $vars->warningPHP[] = $i;
  5224. $vars->warningPHPFragment[] = 'SMW-HEUR-ELF';
  5225. $vars->warningPHPSig[] = 'SMW-HEUR-ELF';
  5226. }
  5227. $return = array(RapidScanStorageRecord::HEURISTIC, 'SMW-HEUR-ELF', 'SMW-HEUR-ELF');
  5228. unset($file);
  5229. $vars->fileinfo = null;
  5230. return $return;
  5231. }
  5232. unset($file);
  5233. $vars->fileinfo = null;
  5234. return null;
  5235. }
  5236. // FILE
  5237. $is_too_big = $this->isFileTooBigForScanWithSignatures($file->getSize());
  5238. $hash = $file->getSha1file();
  5239. $l_TSStartScan = microtime(true);
  5240. if ($this->check_binmalware($hash)) {
  5241. $vars->totalFiles++;
  5242. $vars->crc = $hash;
  5243. $this->AddResult($file, $i, $vars);
  5244. $vars->criticalPHP[] = $i;
  5245. $vars->criticalPHPFragment[] = "BIN-" . $vars->crc;
  5246. $vars->criticalPHPSig[] = "bin_" . $vars->crc;
  5247. $return = array(RapidScanStorageRecord::RX_MALWARE, "bin_" . $vars->crc, "BIN-" . $vars->crc);
  5248. } elseif (!MAX_SIZE_SCAN_BYTES && $is_too_big) {
  5249. $vars->bigFiles[] = $i;
  5250. if (function_exists('aibolit_onBigFile')) {
  5251. aibolit_onBigFile($l_Filename);
  5252. }
  5253. $this->AddResult($file, $i, $vars);
  5254. if ((!AI_HOSTER) && $criticalFileSpecification->satisfiedBy($l_Ext, 'extensions')) {
  5255. $vars->criticalPHP[] = $i;
  5256. $vars->criticalPHPFragment[] = "BIG FILE. SKIPPED.";
  5257. $vars->criticalPHPSig[] = "big_1";
  5258. }
  5259. } else {
  5260. $vars->totalFiles++;
  5261. $file_type = filetype($l_Filename);
  5262. if ($file_type == 'file' || (isset($vars->options['follow-symlink']) && $file_type == 'link')) {
  5263. if ($is_too_big && MAX_SIZE_SCAN_BYTES) {
  5264. $l_Content = $file->getContentBytes(MAX_SIZE_SCAN_BYTES);
  5265. } else {
  5266. $l_Content = $file->getContent();
  5267. }
  5268. $l_Unwrapped = $file->getContentWithoutSpaces(MAX_SIZE_SCAN_BYTES);
  5269. }
  5270. if (($l_Content == '' || $l_Unwrapped == '') && $file->getSize() > 0) {
  5271. $vars->notRead[] = $i;
  5272. if (function_exists('aibolit_onReadError')) {
  5273. aibolit_onReadError($l_Filename, 'io');
  5274. }
  5275. $return = array(RapidScanStorageRecord::CONFLICT, 'notread','');
  5276. $this->AddResult('[io] ' . $l_Filename, $i, $vars);
  5277. unset($file);
  5278. $vars->fileinfo = null;
  5279. return $return;
  5280. }
  5281. // ignore itself
  5282. if (strpos($l_Content, '6dbb90dc4e81f3fc56e1396a8db92e5e') !== false) {
  5283. unset($file);
  5284. $vars->fileinfo = null;
  5285. return false;
  5286. }
  5287. $vars->crc = $file->getHash();
  5288. $l_UnicodeContent = Encoding::detectUTFEncoding($l_Content);
  5289. //$l_Unwrapped = $l_Content;
  5290. // check vulnerability in files
  5291. $l_CriticalDetected = $this->CheckVulnerability($l_Filename, $i, $l_Content, $vars);
  5292. if ($l_UnicodeContent !== false) {
  5293. if (Encoding::iconvSupported()) {
  5294. $l_Unwrapped = Encoding::convertToCp1251($l_UnicodeContent, $l_Unwrapped);
  5295. } else {
  5296. $vars->notRead[] = $i;
  5297. if (function_exists('aibolit_onReadError')) {
  5298. aibolit_onReadError($l_Filename, 'ec');
  5299. }
  5300. $return = array(RapidScanStorageRecord::CONFLICT, 'no_iconv', '');
  5301. $this->AddResult('[ec] ' . $l_Filename, $i, $vars);
  5302. }
  5303. }
  5304. // critical
  5305. $g_SkipNextCheck = false;
  5306. if ((!AI_HOSTER) || AI_DEOBFUSCATE) {
  5307. $l_DeobfObj = new Deobfuscator($l_Unwrapped, $l_Content);
  5308. $l_DeobfType = $l_DeobfObj->getObfuscateType($l_Unwrapped);
  5309. }
  5310. if (isset($l_DeobfType) && $l_DeobfType != '') {
  5311. $l_Unwrapped = $l_DeobfObj->deobfuscate();
  5312. $g_SkipNextCheck = $this->checkFalsePositives($l_Filename, $l_Unwrapped, $l_DeobfType, $vars);
  5313. } else {
  5314. if (DEBUG_MODE) {
  5315. stdOut("\n...... NOT OBFUSCATED\n");
  5316. }
  5317. }
  5318. $l_Unwrapped = Normalization::normalize($l_Unwrapped);
  5319. $precheck = function ($type, $content) use ($l_Ext, $criticalFileSpecification) {
  5320. $critical_params = [
  5321. 'CriticalPHP' => ['extensions', 'critical_content'],
  5322. 'CriticalPHP_2' => ['extensions', 'critical_content'],
  5323. 'CriticalPHP_3' => ['extensions', 'critical_content'],
  5324. 'CriticalPHP_4' => ['extensions', 'critical_content'],
  5325. 'CriticalPHP_5' => ['extensions', 'critical_content'],
  5326. 'CriticalPHPGIF' => ['extensions', 'critical_content'],
  5327. 'CriticalPHPUploader' => ['extensions', 'critical_content'],
  5328. 'CriticalJS' => ['js_extensions', 'critical_js_content'],
  5329. 'CriticalJS_PARA' => ['js_extensions', 'critical_js_content'],
  5330. 'Phishing' => ['phish_extensions', 'critical_phish_content'],
  5331. ];
  5332. if (!SMART_SCAN || !isset($critical_params[$type])) {
  5333. return true;
  5334. }
  5335. if (isset($check_params[$type])) {
  5336. $this->satisfiedBySmartScan($criticalFileSpecification, $l_Ext, $content, $check_params[$type][0], $check_params[$type][1]);
  5337. }
  5338. };
  5339. $processResult = function ($checker, $content, $l_Pos, $l_SigId, &$return) use (&$vars, $l_Ext, $i) {
  5340. $checkers = [
  5341. 'CriticalPHP' => ['criticalPHP', 'criticalPHPFragment', 'criticalPHPSig'],
  5342. 'CriticalPHP_2' => ['criticalPHP', 'criticalPHPFragment', 'criticalPHPSig'],
  5343. 'CriticalPHP_3' => ['criticalPHP', 'criticalPHPFragment', 'criticalPHPSig'],
  5344. 'CriticalPHP_4' => ['criticalPHP', 'criticalPHPFragment', 'criticalPHPSig'],
  5345. 'CriticalPHP_5' => ['criticalPHP', 'criticalPHPFragment', 'criticalPHPSig'],
  5346. 'CriticalPHPGIF' => ['criticalPHP', 'criticalPHPFragment', 'criticalPHPSig'],
  5347. 'CriticalPHPUploader' => ['criticalPHP', 'criticalPHPFragment', 'criticalPHPSig'],
  5348. 'CriticalJS' => ['criticalJS', 'criticalJSFragment', 'criticalJSSig'],
  5349. 'CriticalJS_PARA' => ['criticalJS', 'criticalJSFragment', 'criticalJSSig'],
  5350. 'WarningPHP' => ['warningPHP', 'warningPHPFragment', 'warningPHPSig'],
  5351. 'Phishing' => ['phishing', 'phishingFragment', 'phishingSigFragment'],
  5352. 'Adware' => ['adwareList', 'adwareListFragment'],
  5353. ];
  5354. if (strpos($checker, 'Critical') !== false) {
  5355. if ($l_Ext == 'js') {
  5356. $checker = 'CriticalJS';
  5357. }
  5358. $return = array(RapidScanStorageRecord::RX_MALWARE, $l_SigId, $this->getFragment($content, $l_Pos));
  5359. }
  5360. if ($checker == 'WarningPHP' || $checker == 'Phishing') {
  5361. $return = array(RapidScanStorageRecord::RX_SUSPICIOUS, $l_SigId, $this->getFragment($content, $l_Pos));
  5362. }
  5363. $vars->{$checkers[$checker][0]}[] = $i;
  5364. $vars->{$checkers[$checker][1]}[] = $this->getFragment($content, $l_Pos);
  5365. if (isset($checkers[$checker][2])) {
  5366. $vars->{$checkers[$checker][2]}[] = $l_SigId;
  5367. }
  5368. };
  5369. $l_Pos = 0;
  5370. $l_SigId = '';
  5371. if (!$g_SkipNextCheck) {
  5372. $checkers['CriticalPHP'] = true;
  5373. if (AI_EXPERT_MODE > 0) {
  5374. $checkers['CriticalPHP_3'] = true;
  5375. }
  5376. if (AI_EXPERT_MODE > 1) {
  5377. $checkers['CriticalPHP_2'] = true;
  5378. }
  5379. $checkers['CriticalPHP_4'] = true;
  5380. if (AI_EXPERT_MODE > 0) {
  5381. $checkers['CriticalPHP_5'] = true;
  5382. }
  5383. if (!AI_HOSTER && AI_EXPERT > 0 && $l_Ext == 'php') {
  5384. $checkers['CriticalPHPGIF'] = true;
  5385. }
  5386. if (!AI_HOSTER && AI_EXPERT > 1 && strpos($l_Ext, 'ph') !== false) {
  5387. $checkers['CriticalPHPUploader'] = true;
  5388. }
  5389. $checkers['CriticalJS'] = false;
  5390. if (AI_EXPERT_MODE > 1) {
  5391. $checkers['CriticalJS_PARA'] = false;
  5392. }
  5393. if ($this->suspicious) {
  5394. $checkers['WarningPHP'] = false;
  5395. $checkers['Phishing'] = true;
  5396. $checkers['Adware'] = false;
  5397. }
  5398. $g_SkipNextCheck = ScanUnit::QCR_ScanContent($checkers, $l_Unwrapped, $l_Content, $vars->signs, $this->debug, $precheck,
  5399. $processResult, $return);
  5400. }
  5401. if (!$g_SkipNextCheck && isset($checkers['Adware'])) {
  5402. // articles
  5403. if (stripos($l_Filename, 'article_index')) {
  5404. $vars->adwareList[] = $i;
  5405. $l_CriticalDetected = true;
  5406. }
  5407. }
  5408. } // end of if (!$g_SkipNextCheck) {
  5409. //printProgress(++$_files_and_ignored, $l_Filename);
  5410. $this->delayWithCallback(SCAN_DELAY, $callback);
  5411. $l_TSEndScan = microtime(true);
  5412. if ($l_TSEndScan - $l_TSStartScan >= 0.5) {
  5413. $this->delayWithCallback(SCAN_DELAY, $callback);
  5414. }
  5415. if ($g_SkipNextCheck || $l_CriticalDetected) {
  5416. $this->AddResult($file, $i, $vars);
  5417. }
  5418. unset($file);
  5419. $vars->fileinfo = null;
  5420. unset($l_Unwrapped);
  5421. unset($l_Content);
  5422. return $return;
  5423. }
  5424. private function callCallback($callback)
  5425. {
  5426. if ($callback !== null) {
  5427. call_user_func($callback);
  5428. }
  5429. }
  5430. private function delayWithCallback($delay, $callback)
  5431. {
  5432. $delay *= 1000;
  5433. $this->callCallback($callback);
  5434. while ($delay > 500000) {
  5435. $delay -= 500000;
  5436. usleep(500000);
  5437. $this->callCallback($callback);
  5438. }
  5439. usleep($delay);
  5440. $this->callCallback($callback);
  5441. }
  5442. public function AddResult($file, $i, $vars)
  5443. {
  5444. if (is_string($file)) {
  5445. $vars->structure['n'][$i] = $file;
  5446. return;
  5447. }
  5448. $vars->structure['n'][$i] = $file->getFilename();
  5449. $vars->structure['s'][$i] = $file->getSize();
  5450. $vars->structure['c'][$i] = $file->getCreated();
  5451. $vars->structure['m'][$i] = $file->getModified();
  5452. $vars->structure['e'][$i] = time();
  5453. $vars->structure['crc'][$i] = $vars->crc;
  5454. if (!$this->isFileTooBigForScanWithSignatures($file->getSize())) {
  5455. $vars->structure['sha256'][$i] = $file->getSha256();
  5456. }
  5457. }
  5458. private function satisfiedBySmartScan($fs, $ext, $content, $ext_table, $content_table)
  5459. {
  5460. $skip = $fs->satisfiedBy($ext, $ext_table) && $fs->satisfiedByContent($content, $content_table);
  5461. if ($skip && DEBUG_MODE) {
  5462. echo "Skipped file, not critical.\n";
  5463. }
  5464. return $skip;
  5465. }
  5466. ///////////////////////////////////////////////////////////////////////////
  5467. private function CheckVulnerability($par_Filename, $par_Index, $par_Content, $vars)
  5468. {
  5469. global $g_CmsListDetector, $defaults;
  5470. $use_cms_detector = ($g_CmsListDetector instanceof CmsVersionDetector);
  5471. if (!$use_cms_detector && !$defaults['use_template_in_path']) {
  5472. return false;
  5473. }
  5474. $l_Vuln = array();
  5475. $par_Filename = strtolower($par_Filename);
  5476. if ((strpos($par_Filename, 'libraries/joomla/session/session.php') !== false) && (strpos($par_Content, '&& filter_var($_SERVER[\'HTTP_X_FORWARDED_FOR') === false)) {
  5477. $l_Vuln['id'] = 'RCE : https://docs.joomla.org/Security_hotfixes_for_Joomla_EOL_versions';
  5478. $l_Vuln['ndx'] = $par_Index;
  5479. $vars->vulnerable[] = $l_Vuln;
  5480. return true;
  5481. }
  5482. if ($use_cms_detector
  5483. && (strpos($par_Filename, 'administrator/components/com_media/helpers/media.php') !== false)
  5484. && (strpos($par_Content, '$format == \'\' || $format == false ||') === false)
  5485. ) {
  5486. if ($g_CmsListDetector->isCms(CmsVersionDetector::CMS_JOOMLA, '1.5')) {
  5487. $l_Vuln['id'] = 'AFU : https://docs.joomla.org/Security_hotfixes_for_Joomla_EOL_versions';
  5488. $l_Vuln['ndx'] = $par_Index;
  5489. $vars->vulnerable[] = $l_Vuln;
  5490. return true;
  5491. }
  5492. return false;
  5493. }
  5494. if ($use_cms_detector
  5495. && (strpos($par_Filename, 'joomla/filesystem/file.php') !== false)
  5496. && (strpos($par_Content, '$file = rtrim($file, \'.\');') === false)
  5497. ) {
  5498. if ($g_CmsListDetector->isCms(CmsVersionDetector::CMS_JOOMLA, '1.5')) {
  5499. $l_Vuln['id'] = 'AFU : https://docs.joomla.org/Security_hotfixes_for_Joomla_EOL_versions';
  5500. $l_Vuln['ndx'] = $par_Index;
  5501. $vars->vulnerable[] = $l_Vuln;
  5502. return true;
  5503. }
  5504. return false;
  5505. }
  5506. if ((strpos($par_Filename, 'editor/filemanager/upload/test.html') !== false) || (stripos($par_Filename, 'editor/filemanager/browser/default/connectors/php/') !== false) || (stripos($par_Filename, 'editor/filemanager/connectors/uploadtest.html') !== false) || (strpos($par_Filename, 'editor/filemanager/browser/default/connectors/test.html') !== false)) {
  5507. $l_Vuln['id'] = 'AFU : FCKEDITOR : http://www.exploit-db.com/exploits/17644/ & /exploit/249';
  5508. $l_Vuln['ndx'] = $par_Index;
  5509. $vars->vulnerable[] = $l_Vuln;
  5510. return true;
  5511. }
  5512. if ((strpos($par_Filename, 'inc_php/image_view.class.php') !== false) || (strpos($par_Filename, '/inc_php/framework/image_view.class.php') !== false)) {
  5513. if (strpos($par_Content, 'showImageByID') === false) {
  5514. $l_Vuln['id'] = 'AFU : REVSLIDER : http://www.exploit-db.com/exploits/35385/';
  5515. $l_Vuln['ndx'] = $par_Index;
  5516. $vars->vulnerable[] = $l_Vuln;
  5517. return true;
  5518. }
  5519. return false;
  5520. }
  5521. if (strpos($par_Filename, 'includes/database/database.inc') !== false) {
  5522. if (strpos($par_Content, 'foreach ($data as $i => $value)') !== false) {
  5523. $l_Vuln['id'] = 'SQLI : DRUPAL : CVE-2014-3704';
  5524. $l_Vuln['ndx'] = $par_Index;
  5525. $vars->vulnerable[] = $l_Vuln;
  5526. return true;
  5527. }
  5528. return false;
  5529. }
  5530. if (strpos($par_Filename, 'engine/classes/min/index.php') !== false) {
  5531. if (strpos($par_Content, 'tr_replace(chr(0)') === false) {
  5532. $l_Vuln['id'] = 'AFD : MINIFY : CVE-2013-6619';
  5533. $l_Vuln['ndx'] = $par_Index;
  5534. $vars->vulnerable[] = $l_Vuln;
  5535. return true;
  5536. }
  5537. return false;
  5538. }
  5539. if ((strpos($par_Filename, 'timthumb.php') !== false) || (strpos($par_Filename, 'thumb.php') !== false) || (strpos($par_Filename, 'cache.php') !== false) || (strpos($par_Filename, '_img.php') !== false)) {
  5540. if (strpos($par_Content, 'code.google.com/p/timthumb') !== false && strpos($par_Content, '2.8.14') === false) {
  5541. $l_Vuln['id'] = 'RCE : TIMTHUMB : CVE-2011-4106,CVE-2014-4663';
  5542. $l_Vuln['ndx'] = $par_Index;
  5543. $vars->vulnerable[] = $l_Vuln;
  5544. return true;
  5545. }
  5546. return false;
  5547. }
  5548. if (strpos($par_Filename, 'components/com_rsform/helpers/rsform.php') !== false) {
  5549. if (preg_match('~define\s*\(\s*\'_rsform_version\'\s*,\s*\'([^\']+)\'\s*\)\s*;~msi', $par_Content, $version)) {
  5550. $version = $version[1];
  5551. if (version_compare($version, '1.5.2') !== 1) {
  5552. $l_Vuln['id'] = 'RCE : RSFORM : rsform.php, LINE 1605';
  5553. $l_Vuln['ndx'] = $par_Index;
  5554. $vars->vulnerable[] = $l_Vuln;
  5555. return true;
  5556. }
  5557. }
  5558. return false;
  5559. }
  5560. if (strpos($par_Filename, 'fancybox-for-wordpress/fancybox.php') !== false) {
  5561. if (strpos($par_Content, '\'reset\' == $_REQUEST[\'action\']') !== false) {
  5562. $l_Vuln['id'] = 'CODE INJECTION : FANCYBOX';
  5563. $l_Vuln['ndx'] = $par_Index;
  5564. $vars->vulnerable[] = $l_Vuln;
  5565. return true;
  5566. }
  5567. return false;
  5568. }
  5569. if (strpos($par_Filename, 'cherry-plugin/admin/import-export/upload.php') !== false) {
  5570. if (strpos($par_Content, 'verify nonce') === false) {
  5571. $l_Vuln['id'] = 'AFU : Cherry Plugin';
  5572. $l_Vuln['ndx'] = $par_Index;
  5573. $vars->vulnerable[] = $l_Vuln;
  5574. return true;
  5575. }
  5576. return false;
  5577. }
  5578. if (strpos($par_Filename, 'tiny_mce/plugins/tinybrowser/tinybrowser.php') !== false) {
  5579. $l_Vuln['id'] = 'AFU : TINYMCE : http://www.exploit-db.com/exploits/9296/';
  5580. $l_Vuln['ndx'] = $par_Index;
  5581. $vars->vulnerable[] = $l_Vuln;
  5582. return true;
  5583. }
  5584. if (strpos($par_Filename, '/bx_1c_import.php') !== false) {
  5585. if (strpos($par_Content, '$_GET[\'action\']=="getfiles"') !== false) {
  5586. $l_Vuln['id'] = 'AFD : https://habrahabr.ru/company/dsec/blog/326166/';
  5587. $l_Vuln['ndx'] = $par_Index;
  5588. $vars->vulnerable[] = $l_Vuln;
  5589. return true;
  5590. }
  5591. }
  5592. if (strpos($par_Filename, 'scripts/setup.php') !== false) {
  5593. if (strpos($par_Content, 'PMA_Config') !== false) {
  5594. $l_Vuln['id'] = 'CODE INJECTION : PHPMYADMIN : http://1337day.com/exploit/5334';
  5595. $l_Vuln['ndx'] = $par_Index;
  5596. $vars->vulnerable[] = $l_Vuln;
  5597. return true;
  5598. }
  5599. return false;
  5600. }
  5601. if (strpos($par_Filename, '/uploadify.php') !== false) {
  5602. if (strpos($par_Content, 'move_uploaded_file($tempFile,$targetFile') !== false) {
  5603. $l_Vuln['id'] = 'AFU : UPLOADIFY : CVE: 2012-1153';
  5604. $l_Vuln['ndx'] = $par_Index;
  5605. $vars->vulnerable[] = $l_Vuln;
  5606. return true;
  5607. }
  5608. return false;
  5609. }
  5610. if (strpos($par_Filename, 'com_adsmanager/controller.php') !== false) {
  5611. if (strpos($par_Content, 'move_uploaded_file($file[\'tmp_name\'], $tempPath.\'/\'.basename($file[') !== false) {
  5612. $l_Vuln['id'] = 'AFU : https://revisium.com/ru/blog/adsmanager_afu.html';
  5613. $l_Vuln['ndx'] = $par_Index;
  5614. $vars->vulnerable[] = $l_Vuln;
  5615. return true;
  5616. }
  5617. return false;
  5618. }
  5619. if (strpos($par_Filename, 'wp-content/plugins/wp-mobile-detector/resize.php') !== false) {
  5620. if (strpos($par_Content, 'file_put_contents($path, file_get_contents($_REQUEST[\'src\']));') !== false) {
  5621. $l_Vuln['id'] = 'AFU : https://www.pluginvulnerabilities.com/2016/05/31/aribitrary-file-upload-vulnerability-in-wp-mobile-detector/';
  5622. $l_Vuln['ndx'] = $par_Index;
  5623. $vars->vulnerable[] = $l_Vuln;
  5624. return true;
  5625. }
  5626. return false;
  5627. }
  5628. if (strpos($par_Filename, 'core/lib/drupal.php') !== false) {
  5629. $version = '';
  5630. if (preg_match('|VERSION\s*=\s*\'(8\.\d+\.\d+)\'|smi', $par_Content, $tmp_ver)) {
  5631. $version = $tmp_ver[1];
  5632. }
  5633. if (($version !== '') && (version_compare($version, '8.5.1', '<'))) {
  5634. $l_Vuln['id'] = 'Drupageddon 2 : SA-CORE-2018–002';
  5635. $l_Vuln['ndx'] = $par_Index;
  5636. $vars->vulnerable[] = $l_Vuln;
  5637. return true;
  5638. }
  5639. return false;
  5640. }
  5641. if (strpos($par_Filename, 'changelog.txt') !== false) {
  5642. $version = '';
  5643. if (preg_match('|Drupal\s+(7\.\d+),|smi', $par_Content, $tmp_ver)) {
  5644. $version = $tmp_ver[1];
  5645. }
  5646. if (($version !== '') && (version_compare($version, '7.58', '<'))) {
  5647. $l_Vuln['id'] = 'Drupageddon 2 : SA-CORE-2018–002';
  5648. $l_Vuln['ndx'] = $par_Index;
  5649. $vars->vulnerable[] = $l_Vuln;
  5650. return true;
  5651. }
  5652. return false;
  5653. }
  5654. if (strpos($par_Filename, 'phpmailer.php') !== false) {
  5655. $l_Detect = false;
  5656. if (strpos($par_Content, 'PHPMailer') !== false) {
  5657. $l_Found = preg_match('~Version:\s*(\d+)\.(\d+)\.(\d+)~', $par_Content, $l_Match);
  5658. if ($l_Found) {
  5659. $l_Version = $l_Match[1] * 1000 + $l_Match[2] * 100 + $l_Match[3];
  5660. if ($l_Version < 2520) {
  5661. $l_Detect = true;
  5662. }
  5663. }
  5664. if (!$l_Found) {
  5665. $l_Found = preg_match('~Version\s*=\s*\'(\d+)\.*(\d+)\.(\d+)~i', $par_Content, $l_Match);
  5666. if ($l_Found) {
  5667. $l_Version = $l_Match[1] * 1000 + $l_Match[2] * 100 + $l_Match[3];
  5668. if ($l_Version < 5220) {
  5669. $l_Detect = true;
  5670. }
  5671. }
  5672. }
  5673. if ($l_Detect) {
  5674. $l_Vuln['id'] = 'RCE : CVE-2016-10045, CVE-2016-10031';
  5675. $l_Vuln['ndx'] = $par_Index;
  5676. $vars->vulnerable[] = $l_Vuln;
  5677. return true;
  5678. }
  5679. }
  5680. return false;
  5681. }
  5682. }
  5683. private function checkFalsePositives($l_Filename, $l_Unwrapped, $l_DeobfType, $vars)
  5684. {
  5685. if ($l_DeobfType != '') {
  5686. if (DEBUG_MODE) {
  5687. stdOut("\n-----------------------------------------------------------------------------\n");
  5688. stdOut("[DEBUG]" . $l_Filename . "\n");
  5689. stdOut("\n...... $l_DeobfType ...........\n");
  5690. var_dump($l_Unwrapped);
  5691. stdOut("\n");
  5692. }
  5693. switch ($l_DeobfType) {
  5694. case 'Bitrix':
  5695. foreach ($vars->signs->_DeMapper as $fkey => $fvalue) {
  5696. if (DEBUG_MODE) {
  5697. stdOut("[$fkey] => [$fvalue]\n");
  5698. }
  5699. if ((strpos($l_Filename, $fkey) !== false) && (strpos($l_Unwrapped, $fvalue) !== false)) {
  5700. if (DEBUG_MODE) {
  5701. stdOut("\n[DEBUG] *** SKIP: False Positive\n");
  5702. }
  5703. return true;
  5704. }
  5705. }
  5706. break;
  5707. }
  5708. return false;
  5709. }
  5710. }
  5711. private function getFragment($par_Content, $par_Pos)
  5712. {
  5713. $l_MaxChars = MAX_PREVIEW_LEN;
  5714. $par_Content = preg_replace('/[\x00-\x1F\x80-\xFF]/', '~', $par_Content);
  5715. $l_MaxLen = strlen($par_Content);
  5716. $l_RightPos = min($par_Pos + $l_MaxChars, $l_MaxLen);
  5717. $l_MinPos = max(0, $par_Pos - $l_MaxChars);
  5718. $l_FoundStart = substr($par_Content, 0, $par_Pos);
  5719. $l_FoundStart = str_replace("\r", '', $l_FoundStart);
  5720. $l_LineNo = strlen($l_FoundStart) - strlen(str_replace("\n", '', $l_FoundStart)) + 1;
  5721. $l_Res = '__AI_LINE1__' . $l_LineNo . "__AI_LINE2__ " . ($l_MinPos > 0 ? '…' : '') . substr($par_Content, $l_MinPos, $par_Pos - $l_MinPos) . '__AI_MARKER__' . substr($par_Content, $par_Pos, $l_RightPos - $par_Pos - 1);
  5722. $l_Res = AibolitHelpers::makeSafeFn(Normalization::normalize($l_Res), $this->addPrefix, $this->noPrefix);
  5723. $l_Res = str_replace('~', ' ', $l_Res);
  5724. $l_Res = preg_replace('~[\s\t]+~', ' ', $l_Res);
  5725. $l_Res = str_replace('' . '?php', '' . '?php ', $l_Res);
  5726. return $l_Res;
  5727. }
  5728. /**
  5729. * @return array
  5730. */
  5731. public function whitelisting()
  5732. {
  5733. // whitelist
  5734. $snum = 0;
  5735. $list = $this->check_whitelist($this->vars->structure['crc'], $snum);
  5736. $keys = array(
  5737. 'criticalPHP',
  5738. 'criticalJS',
  5739. 'g_Iframer',
  5740. 'g_Base64',
  5741. 'phishing',
  5742. 'adwareList',
  5743. 'g_Redirect',
  5744. 'warningPHP'
  5745. );
  5746. foreach ($keys as $p) {
  5747. if (empty($this->vars->{$p})) {
  5748. continue;
  5749. }
  5750. $p_Fragment = $p . 'Fragment';
  5751. $p_Sig = $p . 'Sig';
  5752. if ($p == 'g_Redirect') {
  5753. $p_Fragment = $p . 'PHPFragment';
  5754. }
  5755. elseif ($p == 'g_Phishing') {
  5756. $p_Sig = $p . 'SigFragment';
  5757. }
  5758. $count = count($this->vars->{$p});
  5759. for ($i = 0; $i < $count; $i++) {
  5760. $id = $this->vars->{$p}[$i];
  5761. if ($this->vars->structure['crc'][$id] !== 0 && in_array($this->vars->structure['crc'][$id], $list)) {
  5762. unset($this->vars->{$p}[$i], $this->vars->{$p_Sig}[$i], $this->vars->{$p_Fragment}[$i]);
  5763. }
  5764. }
  5765. $this->vars->{$p} = array_values($this->vars->{$p});
  5766. $this->vars->{$p_Fragment} = array_values($this->vars->{$p_Fragment});
  5767. if (!empty($this->vars->{$p_Sig})) {
  5768. $this->vars->{$p_Sig} = array_values($this->vars->{$p_Sig});
  5769. }
  5770. }
  5771. return array($snum, $i);
  5772. }
  5773. public function check_whitelist($list, &$snum)
  5774. {
  5775. if (empty($list)) {
  5776. return array();
  5777. }
  5778. $avdb = '';
  5779. $file = dirname(__FILE__) . '/AIBOLIT-WHITELIST.db';
  5780. if ((isset($this->vars->options['avdb']) && !empty($this->vars->options['avdb']) && ($avdb = $this->vars->options['avdb'])) || (isset($this->vars->options['c']) && !empty($this->vars->options['c']) && ($avdb = $this->vars->options['c']))) {
  5781. if (file_exists($avdb)) {
  5782. $file = dirname($avdb) . '/AIBOLIT-WHITELIST.db';
  5783. }
  5784. }
  5785. try {
  5786. $db = FileHashMemoryDb::open($file);
  5787. } catch (Exception $e) {
  5788. stdOut("\nAn error occurred while loading the white list database from " . $file . "\n");
  5789. return array();
  5790. }
  5791. $snum = $db->count();
  5792. stdOut("\nLoaded " . ceil($snum) . " known files from " . $file . "\n");
  5793. return $db->find($list);
  5794. }
  5795. private function check_binmalware($hash)
  5796. {
  5797. if (isset($this->vars->blacklist)) {
  5798. return count($this->vars->blacklist->find(array($hash))) > 0;
  5799. }
  5800. return false;
  5801. }
  5802. ///////////////////////////////////////////////////////////////////////////
  5803. private function isFileTooBigForScanWithSignatures($filesize)
  5804. {
  5805. return (MAX_SIZE_TO_SCAN > 0 && $filesize > MAX_SIZE_TO_SCAN) || ($filesize < 0);
  5806. }
  5807. private function isFileTooBigForCloudscan($filesize)
  5808. {
  5809. return (MAX_SIZE_TO_CLOUDSCAN > 0 && $filesize > MAX_SIZE_TO_CLOUDSCAN) || ($filesize < 0);
  5810. }
  5811. }
  5812. class ScanUnit
  5813. {
  5814. public static function QCR_ScanContent($checkers, $l_Unwrapped, $l_Content, $signs, $debug = null, $precheck = null, $processResult = null, &$return = null)
  5815. {
  5816. foreach ($checkers as $checker => $full) {
  5817. $l_pos = 0;
  5818. $l_SignId = '';
  5819. if (isset($precheck) && is_callable($precheck)) {
  5820. if (!$precheck($checker, $l_Unwrapped) || ($full && !$precheck($checker, $l_Content))) {
  5821. continue;
  5822. }
  5823. }
  5824. $flag = ScanCheckers::{$checker}($l_Unwrapped, $l_pos, $l_SignId, $signs, $debug);
  5825. if ($flag && isset($processResult) && is_callable($processResult)) {
  5826. $processResult($checker, $l_Unwrapped, $l_pos, $l_SignId, $return);
  5827. }
  5828. if (!$flag && $full) {
  5829. $flag = ScanCheckers::{$checker}($l_Content, $l_pos, $l_SignId, $signs, $debug);
  5830. if ($flag && isset($processResult) && is_callable($processResult)) {
  5831. $processResult($checker, $l_Content, $l_pos, $l_SignId, $return);
  5832. }
  5833. }
  5834. if ($flag) {
  5835. return true;
  5836. }
  5837. }
  5838. return false;
  5839. }
  5840. }
  5841. class ScanCheckers
  5842. {
  5843. const URL_GRAB = '~(?:https?:)?\/\/(?:www\.)?[-a-zA-Z0-9@:%._\+\~#=]{2,256}\.[a-z]{2,4}\b(?:[-a-zA-Z0-9@:%_\+.\~#?&/=]*)~msi';
  5844. public static function WarningPHP($l_Content, &$l_Pos, &$l_SigId, $signs, $debug = null)
  5845. {
  5846. foreach ($signs->_SusDB as $l_Item) {
  5847. if (preg_match('~' . $l_Item . '~smiS', $l_Content, $l_Found, PREG_OFFSET_CAPTURE)) {
  5848. if (!self::CheckException($l_Content, $l_Found, $signs)) {
  5849. $l_Pos = $l_Found[0][1];
  5850. $l_SigId = LoadSignaturesForScan::getSigId($l_Found);
  5851. return true;
  5852. }
  5853. }
  5854. }
  5855. return false;
  5856. }
  5857. ///////////////////////////////////////////////////////////////////////////
  5858. public static function Adware($l_Content, &$l_Pos, &$l_SigId, $signs, $debug = null)
  5859. {
  5860. $l_Res = false;
  5861. foreach ($signs->_AdwareSig as $l_Item) {
  5862. $offset = 0;
  5863. while (preg_match('~' . $l_Item . '~smi', $l_Content, $l_Found, PREG_OFFSET_CAPTURE, $offset)) {
  5864. if (!self::CheckException($l_Content, $l_Found, $signs)) {
  5865. $l_Pos = $l_Found[0][1];
  5866. $l_SigId = 'adware';
  5867. return true;
  5868. }
  5869. $offset = $l_Found[0][1] + 1;
  5870. }
  5871. }
  5872. return $l_Res;
  5873. }
  5874. ///////////////////////////////////////////////////////////////////////////
  5875. public static function CheckException(&$l_Content, &$l_Found, $signs, $debug = null)
  5876. {
  5877. $l_FoundStrPlus = substr($l_Content, max($l_Found[0][1] - 10, 0), 70);
  5878. foreach ($signs->_ExceptFlex as $l_ExceptItem) {
  5879. if (@preg_match('~' . $l_ExceptItem . '~smi', $l_FoundStrPlus, $l_Detected)) {
  5880. return true;
  5881. }
  5882. }
  5883. return false;
  5884. }
  5885. ///////////////////////////////////////////////////////////////////////////
  5886. public static function Phishing($l_Content, &$l_Pos, &$l_SigId, $signs, $debug = null)
  5887. {
  5888. $l_Res = false;
  5889. foreach ($signs->_PhishingSig as $l_Item) {
  5890. $offset = 0;
  5891. while (preg_match('~' . $l_Item . '~smi', $l_Content, $l_Found, PREG_OFFSET_CAPTURE, $offset)) {
  5892. if (!self::CheckException($l_Content, $l_Found, $signs)) {
  5893. $l_Pos = $l_Found[0][1];
  5894. $l_SigId = LoadSignaturesForScan::getSigId($l_Found);
  5895. if (is_object($debug) && $debug->getDebugMode() == true) {
  5896. echo "Phis: $l_Content matched [$l_Item] in $l_Pos\n";
  5897. }
  5898. return $l_Pos;
  5899. }
  5900. $offset = $l_Found[0][1] + 1;
  5901. }
  5902. }
  5903. return $l_Res;
  5904. }
  5905. ///////////////////////////////////////////////////////////////////////////
  5906. public static function CriticalJS($l_Content, &$l_Pos, &$l_SigId, $signs, $debug = null)
  5907. {
  5908. $l_Res = false;
  5909. foreach ($signs->_JSVirSig as $l_Item) {
  5910. $offset = 0;
  5911. if (is_object($debug) && $debug->getDebugPerfomance() == true) {
  5912. $stat_start = microtime(true);
  5913. }
  5914. while (preg_match('~' . $l_Item . '~smi', $l_Content, $l_Found, PREG_OFFSET_CAPTURE, $offset)) {
  5915. if (!self::CheckException($l_Content, $l_Found, $signs)) {
  5916. $l_Pos = $l_Found[0][1];
  5917. $l_SigId = LoadSignaturesForScan::getSigId($l_Found);
  5918. if (is_object($debug) && $debug->getDebugMode() == true) {
  5919. echo "JS: $l_Content matched [$l_Item] in $l_Pos\n";
  5920. }
  5921. $l_Res = true;
  5922. break;
  5923. }
  5924. $offset = $l_Found[0][1] + 1;
  5925. }
  5926. if (is_object($debug) && $debug->getDebugPerfomance() == true) {
  5927. $stat_stop = microtime(true);
  5928. $debug->addPerfomanceItem($l_Item, $stat_stop - $stat_start);
  5929. }
  5930. }
  5931. return $l_Res;
  5932. }
  5933. public static function CriticalJS_PARA($l_Content, &$l_Pos, &$l_SigId, $signs, $debug = null)
  5934. {
  5935. foreach ($signs->X_JSVirSig as $l_Item) {
  5936. if (is_object($debug) && $debug->getDebugPerfomance() == true) {
  5937. $stat_start = microtime(true);
  5938. }
  5939. if (preg_match('~' . $l_Item . '~smi', $l_Content, $l_Found, PREG_OFFSET_CAPTURE)) {
  5940. if (!self::CheckException($l_Content, $l_Found, $signs)) {
  5941. $l_Pos = $l_Found[0][1];
  5942. //$l_SigId = myCheckSum($l_Item);
  5943. $l_SigId = LoadSignaturesForScan::getSigId($l_Found);
  5944. if (is_object($debug) && $debug->getDebugMode() == true) {
  5945. echo "JS PARA: $l_Content matched [$l_Item] in $l_Pos\n";
  5946. }
  5947. return true;
  5948. }
  5949. }
  5950. if (is_object($debug) && $debug->getDebugPerfomance() == true) {
  5951. $stat_stop = microtime(true);
  5952. $debug->addPerfomanceItem($l_Item, $stat_stop - $stat_start);
  5953. }
  5954. }
  5955. return false;
  5956. }
  5957. ///////////////////////////////////////////////////////////////////////////
  5958. public static function CriticalPHPGIF($l_Content, &$l_Pos, &$l_SigId, $signs, $debug = null)
  5959. {
  5960. if (strpos($l_Content, 'GIF89') === 0) {
  5961. $l_Pos = 0;
  5962. $l_SigId = 'GIF';
  5963. if (is_object($debug) && $debug->getDebugMode() == true) {
  5964. echo "CRIT 6: $l_Content matched [GIF] in $l_Pos\n";
  5965. }
  5966. return true;
  5967. }
  5968. return false;
  5969. }
  5970. public static function CriticalPHPUploader($l_Content, &$l_Pos, &$l_SigId, $signs, $debug = null)
  5971. {
  5972. // detect uploaders / droppers
  5973. $l_Found = null;
  5974. if ((strlen($l_Content) < 2048) && ((($l_Pos = strpos($l_Content, 'multipart/form-data')) > 0) || (($l_Pos = strpos($l_Content, '$_FILE[') > 0)) || (($l_Pos = strpos($l_Content, 'move_uploaded_file')) > 0) || (preg_match('|\bcopy\s*\(|smi', $l_Content, $l_Found, PREG_OFFSET_CAPTURE)))) {
  5975. if ($l_Found != null) {
  5976. $l_Pos = $l_Found[0][1];
  5977. $l_SigId = 'uploader';
  5978. }
  5979. if (is_object($debug) && $debug->getDebugMode() == true) {
  5980. echo "CRIT 7: $l_Content matched [uploader] in $l_Pos\n";
  5981. }
  5982. return true;
  5983. }
  5984. }
  5985. public static function CriticalPHP_3($l_Content, &$l_Pos, &$l_SigId, $signs, $debug = null)
  5986. {
  5987. foreach ($signs->X_FlexDBShe as $l_Item) {
  5988. if (is_object($debug) && $debug->getDebugPerfomance() == true) {
  5989. $stat_start = microtime(true);
  5990. }
  5991. if (preg_match('~' . $l_Item . '~smiS', $l_Content, $l_Found, PREG_OFFSET_CAPTURE)) {
  5992. if (!self::CheckException($l_Content, $l_Found, $signs)) {
  5993. $l_Pos = $l_Found[0][1];
  5994. $l_SigId = LoadSignaturesForScan::getSigId($l_Found);
  5995. if (is_object($debug) && $debug->getDebugMode() == true) {
  5996. echo "CRIT 3: $l_Content matched [$l_Item] in $l_Pos\n";
  5997. }
  5998. return true;
  5999. }
  6000. }
  6001. if (is_object($debug) && $debug->getDebugPerfomance() == true) {
  6002. $stat_stop = microtime(true);
  6003. $debug->addPerfomanceItem($l_Item, $stat_stop - $stat_start);
  6004. }
  6005. }
  6006. return false;
  6007. }
  6008. public static function CriticalPHP_2($l_Content, &$l_Pos, &$l_SigId, $signs, $debug = null)
  6009. {
  6010. foreach ($signs->XX_FlexDBShe as $l_Item) {
  6011. if (is_object($debug) && $debug->getDebugPerfomance() == true) {
  6012. $stat_start = microtime(true);
  6013. }
  6014. if (preg_match('~' . $l_Item . '~smiS', $l_Content, $l_Found, PREG_OFFSET_CAPTURE)) {
  6015. if (!self::CheckException($l_Content, $l_Found, $signs)) {
  6016. $l_Pos = $l_Found[0][1];
  6017. $l_SigId = LoadSignaturesForScan::getSigId($l_Found);
  6018. if (is_object($debug) && $debug->getDebugMode() == true) {
  6019. echo "CRIT 2: $l_Content matched [$l_Item] in $l_Pos\n";
  6020. }
  6021. return true;
  6022. }
  6023. }
  6024. if (is_object($debug) && $debug->getDebugPerfomance() == true) {
  6025. $stat_stop = microtime(true);
  6026. $debug->addPerfomanceItem($l_Item, $stat_stop - $stat_start);
  6027. }
  6028. }
  6029. return false;
  6030. }
  6031. public static function CriticalPHP_4($l_Content, &$l_Pos, &$l_SigId, $signs, $debug = null)
  6032. {
  6033. $l_Content_lo = strtolower($l_Content);
  6034. foreach ($signs->_DBShe as $l_Item) {
  6035. $l_Pos = strpos($l_Content_lo, $l_Item);
  6036. if ($l_Pos !== false) {
  6037. $l_SigId = AibolitHelpers::myCheckSum($l_Item);
  6038. if (is_object($debug) && $debug->getDebugMode() == true) {
  6039. echo "CRIT 4: $l_Content matched [$l_Item] in $l_Pos\n";
  6040. }
  6041. return true;
  6042. }
  6043. }
  6044. return false;
  6045. }
  6046. public static function CriticalPHP_5($l_Content, &$l_Pos, &$l_SigId, $signs, $debug = null)
  6047. {
  6048. $l_Content_lo = strtolower($l_Content);
  6049. foreach ($signs->X_DBShe as $l_Item) {
  6050. $l_Pos = strpos($l_Content_lo, $l_Item);
  6051. if ($l_Pos !== false) {
  6052. $l_SigId = AibolitHelpers::myCheckSum($l_Item);
  6053. if (is_object($debug) && $debug->getDebugMode() == true) {
  6054. echo "CRIT 5: $l_Content matched [$l_Item] in $l_Pos\n";
  6055. }
  6056. return true;
  6057. }
  6058. }
  6059. return false;
  6060. }
  6061. public static function CriticalPHP($l_Content, &$l_Pos, &$l_SigId, $signs, $debug = null)
  6062. {
  6063. foreach ($signs->_FlexDBShe as $l_Item) {
  6064. $offset = 0;
  6065. if (is_object($debug) && $debug->getDebugPerfomance() == true) {
  6066. $stat_start = microtime(true);
  6067. }
  6068. while (preg_match('~' . $l_Item . '~smiS', $l_Content, $l_Found, PREG_OFFSET_CAPTURE, $offset)) {
  6069. if (!self::CheckException($l_Content, $l_Found, $signs)) {
  6070. $l_Pos = $l_Found[0][1];
  6071. //$l_SigId = myCheckSum($l_Item);
  6072. $l_SigId = LoadSignaturesForScan::getSigId($l_Found);
  6073. if (is_object($debug) && $debug->getDebugMode() == true) {
  6074. echo "CRIT 1: $l_Content matched [$l_Item] in $l_Pos\n";
  6075. }
  6076. return true;
  6077. }
  6078. $offset = $l_Found[0][1] + 1;
  6079. }
  6080. if (is_object($debug) && $debug->getDebugPerfomance() == true) {
  6081. $stat_stop = microtime(true);
  6082. $debug->addPerfomanceItem($l_Item, $stat_stop - $stat_start);
  6083. }
  6084. }
  6085. return false;
  6086. }
  6087. public static function isOwnUrl($url, $own)
  6088. {
  6089. if (isset($own) && preg_match('~' . $own . '~msi', $url)) {
  6090. return true;
  6091. }
  6092. return false;
  6093. }
  6094. public static function isUrlInList($url, $list)
  6095. {
  6096. if (isset($list)) {
  6097. foreach ($list as $item) {
  6098. if (preg_match('~' . $item . '~msiS', $url, $id, PREG_OFFSET_CAPTURE)) {
  6099. return $id;
  6100. }
  6101. }
  6102. }
  6103. return false;
  6104. }
  6105. public static function UrlChecker($l_Content, &$l_Pos, &$l_SigId, $signs, $debug = null)
  6106. {
  6107. $l_Pos = [];
  6108. $l_SigId = [];
  6109. $offset = 0;
  6110. while (preg_match(self::URL_GRAB, $l_Content, $l_Found, PREG_OFFSET_CAPTURE, $offset)) {
  6111. if (!self::isOwnUrl($l_Found[0][0], $signs->getOwnUrl())
  6112. && (isset($signs->whiteUrls) && !self::isUrlInList($l_Found[0][0], $signs->whiteUrls->getDb()))) {
  6113. if ($id = self::isUrlInList($l_Found[0][0], $signs->blackUrls->getDb())) {
  6114. $l_Pos['black'][] = $l_Found[0][1];
  6115. $l_SigId['black'][] = $signs->blackUrls->getSig($id);
  6116. } else {
  6117. $l_Pos['unk'][] = $l_Found[0][1];
  6118. $l_SigId['unk'][] = $l_Found[0][0];
  6119. }
  6120. }
  6121. $offset = $l_Found[0][1] + strlen($l_Found[0][0]);
  6122. }
  6123. return !empty($l_Pos);
  6124. }
  6125. }
  6126. class TemplateList
  6127. {
  6128. /**
  6129. * #############
  6130. * # MAIN_PAGE #
  6131. * #############
  6132. */
  6133. const MAIN_PAGE = <<<MAIN_PAGE
  6134. <html>
  6135. <head>
  6136. <!-- revisium.com/ai/ -->
  6137. <meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
  6138. <META NAME="ROBOTS" CONTENT="NOINDEX,NOFOLLOW">
  6139. <title>@@HEAD_TITLE@@</title>
  6140. <style type="text/css" title="currentStyle">
  6141. @import "https://cdn.revisium.com/ai/media/css/demo_page2.css";
  6142. @import "https://cdn.revisium.com/ai/media/css/jquery.dataTables2.css";
  6143. </style>
  6144. <script type="text/javascript" language="javascript" src="https://cdn.revisium.com/ai/jquery.js"></script>
  6145. <script type="text/javascript" language="javascript" src="https://cdn.revisium.com/ai/datatables.min.js"></script>
  6146. <style>
  6147. body {
  6148. font-family: Tahoma, sans-serif;
  6149. color: #5a5a5a;
  6150. background: #FFFFFF;
  6151. font-size: 14px;
  6152. margin: 20px;
  6153. padding: 0;
  6154. }
  6155. .header {
  6156. font-size: 34px;
  6157. margin: 0 0 10px 0;
  6158. }
  6159. .hidd {
  6160. display: none;
  6161. }
  6162. .ok {
  6163. color: green;
  6164. }
  6165. .line_no {
  6166. -webkit-border-radius: 4px;
  6167. -moz-border-radius: 4px;
  6168. border-radius: 4px;
  6169. background: #DAF2C1;
  6170. padding: 2px 5px 2px 5px;
  6171. margin: 0 5px 0 5px;
  6172. }
  6173. .credits_header {
  6174. -webkit-border-radius: 4px;
  6175. -moz-border-radius: 4px;
  6176. border-radius: 4px;
  6177. background: #F2F2F2;
  6178. padding: 10px;
  6179. font-size: 11px;
  6180. margin: 0 0 10px 0;
  6181. }
  6182. .marker {
  6183. color: #FF0090;
  6184. font-weight: 100;
  6185. background: #FF0090;
  6186. padding: 2px 0 2px 0;
  6187. width: 2px;
  6188. }
  6189. .title {
  6190. font-size: 24px;
  6191. margin: 20px 0 10px 0;
  6192. color: #9CA9D1;
  6193. }
  6194. .summary {
  6195. float: left;
  6196. width: 500px;
  6197. }
  6198. .summary TD {
  6199. font-size: 12px;
  6200. border-bottom: 1px solid #F0F0F0;
  6201. font-weight: 700;
  6202. padding: 10px 0 10px 0;
  6203. }
  6204. .crit, .vir {
  6205. color: #D84B55;
  6206. }
  6207. .intitem {
  6208. color: #4a6975;
  6209. }
  6210. .spacer {
  6211. margin: 0 0 50px 0;
  6212. clear: both;
  6213. }
  6214. .warn {
  6215. color: #F6B700;
  6216. }
  6217. .clear {
  6218. clear: both;
  6219. }
  6220. .offer {
  6221. -webkit-border-radius: 4px;
  6222. -moz-border-radius: 4px;
  6223. border-radius: 4px;
  6224. width: 500px;
  6225. background: #F2F2F2;
  6226. color: #747474;
  6227. font-family: Helvetica, Arial, sans-serif;
  6228. padding: 30px;
  6229. margin: 20px 0 0 550px;
  6230. font-size: 14px;
  6231. }
  6232. .offer-our-products {
  6233. -webkit-border-radius: 4px;
  6234. -moz-border-radius: 4px;
  6235. border-radius: 4px;
  6236. width: 500px;
  6237. background: #f6f5e0;
  6238. color: #747474;
  6239. font-family: Helvetica, Arial, sans-serif;
  6240. padding: 30px;
  6241. margin: 20px 0 0 550px;
  6242. font-size: 14px;
  6243. }
  6244. HR {
  6245. margin-top: 15px;
  6246. margin-bottom: 15px;
  6247. opacity: .2;
  6248. }
  6249. .flist {
  6250. font-family: Henvetica, Arial, sans-serif;
  6251. }
  6252. .flist TD {
  6253. font-size: 11px;
  6254. padding: 5px;
  6255. }
  6256. .flist TH {
  6257. font-size: 12px;
  6258. height: 30px;
  6259. padding: 5px;
  6260. background: #CEE9EF;
  6261. }
  6262. .it {
  6263. font-size: 14px;
  6264. font-weight: 100;
  6265. margin-top: 10px;
  6266. }
  6267. .crit .it A {
  6268. color: #E50931;
  6269. line-height: 25px;
  6270. text-decoration: none;
  6271. }
  6272. .warn .it A {
  6273. color: #F2C900;
  6274. line-height: 25px;
  6275. text-decoration: none;
  6276. }
  6277. .details {
  6278. font-family: Calibri, sans-serif;
  6279. font-size: 12px;
  6280. margin: 10px 10px 10px 0;
  6281. }
  6282. .crit .details {
  6283. color: #A08080;
  6284. }
  6285. .warn .details {
  6286. color: #808080;
  6287. }
  6288. .details A {
  6289. color: #FFF;
  6290. font-weight: 700;
  6291. text-decoration: none;
  6292. padding: 2px;
  6293. background: #E5CEDE;
  6294. -webkit-border-radius: 7px;
  6295. -moz-border-radius: 7px;
  6296. border-radius: 7px;
  6297. }
  6298. .details A:hover {
  6299. background: #A0909B;
  6300. }
  6301. .ctd {
  6302. margin: 10px 0 10px 0;
  6303. align: center;
  6304. }
  6305. .ctd A {
  6306. color: #0D9922;
  6307. }
  6308. .disclaimer {
  6309. color: darkgreen;
  6310. margin: 10px 10px 10px 0;
  6311. }
  6312. .note_vir {
  6313. margin: 10px 0 10px 0;
  6314. / / padding: 10 px;
  6315. color: #FF4F4F;
  6316. font-size: 15px;
  6317. font-weight: 700;
  6318. clear: both;
  6319. }
  6320. .note_warn {
  6321. margin: 10px 0 10px 0;
  6322. color: #F6B700;
  6323. font-size: 15px;
  6324. font-weight: 700;
  6325. clear: both;
  6326. }
  6327. .note_int {
  6328. margin: 10px 0 10px 0;
  6329. color: #60b5d6;
  6330. font-size: 15px;
  6331. font-weight: 700;
  6332. clear: both;
  6333. }
  6334. .updateinfo {
  6335. color: #FFF;
  6336. text-decoration: none;
  6337. background: #E5CEDE;
  6338. -webkit-border-radius: 7px;
  6339. -moz-border-radius: 7px;
  6340. border-radius: 7px;
  6341. margin: 10px 0 10px 0;
  6342. padding: 10px;
  6343. }
  6344. .caution {
  6345. color: #EF7B75;
  6346. text-decoration: none;
  6347. margin: 20px 0 0 0;
  6348. font-size: 12px;
  6349. }
  6350. .footer {
  6351. color: #303030;
  6352. text-decoration: none;
  6353. background: #F4F4F4;
  6354. -webkit-border-radius: 7px;
  6355. -moz-border-radius: 7px;
  6356. border-radius: 7px;
  6357. margin: 80px 0 10px 0px;
  6358. padding: 10px;
  6359. }
  6360. .rep {
  6361. color: #303030;
  6362. text-decoration: none;
  6363. background: #94DDDB;
  6364. -webkit-border-radius: 7px;
  6365. -moz-border-radius: 7px;
  6366. border-radius: 7px;
  6367. margin: 10px 0 10px 0;
  6368. padding: 10px;
  6369. font-size: 12px;
  6370. }
  6371. </style>
  6372. </head>
  6373. <body>
  6374. <div class="header">@@MAIN_TITLE@@ @@PATH_URL@@ (@@MODE@@)</div>
  6375. <div class="credits_header">@@CREDITS@@</div>
  6376. <div class="details_header">
  6377. @@STAT@@<br/>
  6378. @@SCANNED@@ @@MEMORY@@.
  6379. </div>
  6380. @@WARN_QUICK@@
  6381. <div class="summary">
  6382. @@SUMMARY@@
  6383. </div>
  6384. <div class="offer">
  6385. @@OFFER@@
  6386. </div>
  6387. <div class="offer-our-products">
  6388. @@OFFER_OUR_PRODUCTS@@
  6389. </div>
  6390. <div class="clear"></div>
  6391. @@MAIN_CONTENT@@
  6392. <div class="footer">
  6393. @@FOOTER@@
  6394. </div>
  6395. <script language="javascript">
  6396. function hsig(id) {
  6397. var divs = document.getElementsByTagName("tr");
  6398. for(var i = 0; i < divs.length; i++){
  6399. if (divs[i].getAttribute('o') == id) {
  6400. divs[i].innerHTML = '';
  6401. }
  6402. }
  6403. return false;
  6404. }
  6405. $(document).ready(function(){
  6406. $('#table_crit').dataTable({
  6407. "aLengthMenu": [[100 , 500, -1], [100, 500, "All"]],
  6408. "aoColumns": [
  6409. {"iDataSort": 7, "width":"70%"},
  6410. {"iDataSort": 5},
  6411. {"iDataSort": 6},
  6412. {"bSortable": true},
  6413. {"bVisible": false},
  6414. {"bVisible": false},
  6415. {"bVisible": false},
  6416. {"bVisible": false}
  6417. ],
  6418. "paging": true,
  6419. "iDisplayLength": 500,
  6420. "oLanguage": {
  6421. "sLengthMenu": "@@msg1@@",
  6422. "sZeroRecords": "@@msg2@@",
  6423. "sInfo": "@@msg3@@",
  6424. "sInfoEmpty": "@@msg4@@",
  6425. "sInfoFiltered": "@@msg5@@",
  6426. "sSearch": "@@msg6@@",
  6427. "sUrl": "",
  6428. "oPaginate": {
  6429. "sFirst": "@@msg7@@",
  6430. "sPrevious": "@@msg8@@",
  6431. "sNext": "@@msg9@@",
  6432. "sLast": "@@msg10@@"
  6433. },
  6434. "oAria": {
  6435. "sSortAscending": "@@msg11@@",
  6436. "sSortDescending": "@@msg12@@"
  6437. }
  6438. }
  6439. } );
  6440. });
  6441. $(document).ready(function(){
  6442. $('#table_vir').dataTable({
  6443. "aLengthMenu": [[100 , 500, -1], [100, 500, "All"]],
  6444. "paging": true,
  6445. "aoColumns": [
  6446. {"iDataSort": 7, "width":"70%"},
  6447. {"iDataSort": 5},
  6448. {"iDataSort": 6},
  6449. {"bSortable": true},
  6450. {"bVisible": false},
  6451. {"bVisible": false},
  6452. {"bVisible": false},
  6453. {"bVisible": false}
  6454. ],
  6455. "iDisplayLength": 500,
  6456. "oLanguage": {
  6457. "sLengthMenu": "@@msg1@@",
  6458. "sZeroRecords": "@@msg2@@",
  6459. "sInfo": "@@msg3@@",
  6460. "sInfoEmpty": "@@msg4@@",
  6461. "sInfoFiltered": "@@msg5@@",
  6462. "sSearch": "@@msg6@@",
  6463. "sUrl": "",
  6464. "oPaginate": {
  6465. "sFirst": "@@msg7@@",
  6466. "sPrevious": "@@msg8@@",
  6467. "sNext": "@@msg9@@",
  6468. "sLast": "@@msg10@@"
  6469. },
  6470. "oAria": {
  6471. "sSortAscending": "@@msg11@@",
  6472. "sSortDescending": "@@msg12@@"
  6473. }
  6474. },
  6475. } );
  6476. });
  6477. if ($('#table_warn0')) {
  6478. $('#table_warn0').dataTable({
  6479. "aLengthMenu": [[100 , 500, -1], [100, 500, "All"]],
  6480. "paging": true,
  6481. "aoColumns": [
  6482. {"iDataSort": 7, "width":"70%"},
  6483. {"iDataSort": 5},
  6484. {"iDataSort": 6},
  6485. {"bSortable": true},
  6486. {"bVisible": false},
  6487. {"bVisible": false},
  6488. {"bVisible": false},
  6489. {"bVisible": false}
  6490. ],
  6491. "iDisplayLength": 500,
  6492. "oLanguage": {
  6493. "sLengthMenu": "@@msg1@@",
  6494. "sZeroRecords": "@@msg2@@",
  6495. "sInfo": "@@msg3@@",
  6496. "sInfoEmpty": "@@msg4@@",
  6497. "sInfoFiltered": "@@msg5@@",
  6498. "sSearch": "@@msg6@@",
  6499. "sUrl": "",
  6500. "oPaginate": {
  6501. "sFirst": "@@msg7@@",
  6502. "sPrevious": "@@msg8@@",
  6503. "sNext": "@@msg9@@",
  6504. "sLast": "@@msg10@@"
  6505. },
  6506. "oAria": {
  6507. "sSortAscending": "@@msg11@@",
  6508. "sSortDescending": "@@msg12@@"
  6509. }
  6510. }
  6511. } );
  6512. }
  6513. if ($('#table_warn1')) {
  6514. $('#table_warn1').dataTable({
  6515. "aLengthMenu": [[100 , 500, -1], [100, 500, "All"]],
  6516. "paging": true,
  6517. "aoColumns": [
  6518. {"iDataSort": 7, "width":"70%"},
  6519. {"iDataSort": 5},
  6520. {"iDataSort": 6},
  6521. {"bSortable": true},
  6522. {"bVisible": false},
  6523. {"bVisible": false},
  6524. {"bVisible": false},
  6525. {"bVisible": false}
  6526. ],
  6527. "iDisplayLength": 500,
  6528. "oLanguage": {
  6529. "sLengthMenu": "@@msg1@@",
  6530. "sZeroRecords": "@@msg2@@",
  6531. "sInfo": "@@msg3@@",
  6532. "sInfoEmpty": "@@msg4@@",
  6533. "sInfoFiltered": "@@msg5@@",
  6534. "sSearch": "@@msg6@@",
  6535. "sUrl": "",
  6536. "oPaginate": {
  6537. "sFirst": "@@msg7@@",
  6538. "sPrevious": "@@msg8@@",
  6539. "sNext": "@@msg9@@",
  6540. "sLast": "@@msg10@@"
  6541. },
  6542. "oAria": {
  6543. "sSortAscending": "@@msg11@@",
  6544. "sSortDescending": "@@msg12@@"
  6545. }
  6546. }
  6547. } );
  6548. }
  6549. </script>
  6550. <!-- @@SERVICE_INFO@@ -->
  6551. </body>
  6552. </html>
  6553. MAIN_PAGE;
  6554. #region templates ru
  6555. /**
  6556. * #############
  6557. * # FOOTER_RU #
  6558. * #############
  6559. */
  6560. const FOOTER_RU = <<<FOOTER
  6561. <div class="disclaimer"><span class="vir">[!]</span> Отказ от гарантий: невозможно гарантировать обнаружение всех вредоносных скриптов. Поэтому разработчик сканера не несет ответственности за возможные последствия работы сканера AI-Bolit или неоправданные ожидания пользователей относительно функциональности и возможностей.
  6562. </div>
  6563. <div class="thanx">
  6564. Мы будем чрезвычайно благодарны за любые упоминания сканера AI-Bolit на вашем сайте, в блоге, среди друзей, знакомых и клиентов. <br/>Ссылку можно поставить на страницу <a href="https://revisium.com/ai/">https://revisium.com/ai/</a>.<br/>
  6565. </div>
  6566. FOOTER;
  6567. /**
  6568. * ###########################
  6569. * # OFFER_RU #
  6570. * ###########################
  6571. */
  6572. const OFFER_RU = <<<OFFER_ON_VIRUS_FOUND
  6573. <div>
  6574. <div class="crit" style="font-size: 17px; margin-bottom: 20px"><b>Внимание! Наш сканер обнаружил подозрительный или вредоносный код</b>.</div>
  6575. <p>Возможно, ваш сайт был взломан. Рекомендуем срочно <a href="https://revisium.com/ru/order/#fform" target=_blank>проконсультироваться со специалистами</a> по данному отчету.</p>
  6576. <p><hr size=1></p>
  6577. <p>Рекомендуем также проверить сайт бесплатным <b><a href="https://rescan.pro/?utm=aibolit" target=_blank>онлайн-сканером ReScan.Pro</a></b>.</p>
  6578. <p><hr size=1></p>
  6579. <div class="caution">@@CAUTION@@</div>
  6580. </div>
  6581. OFFER_ON_VIRUS_FOUND;
  6582. /**
  6583. * #########################
  6584. * # OFFER_OUR_PRODUCTS_RU #
  6585. * #########################
  6586. */
  6587. const OFFER_OUR_PRODUCTS_RU = <<<OFFER_OUR_PRODUCTS
  6588. <b>Наши продукты:</b><br/>
  6589. <ul>
  6590. <li style="margin-top: 10px"><font color=red><sup>[new]</sup></font><b><a href="https://revisium.com/ru/products/antivirus_for_ispmanager/" target=_blank>Антивирус для ISPmanager Lite</a></b> &mdash; сканирование и лечение сайтов прямо в панели хостинга</li>
  6591. <li style="margin-top: 10px"><b><a href="https://revisium.com/ru/blog/revisium-antivirus-for-plesk.html" target=_blank>Антивирус для Plesk</a> Onyx 17.x</b> &mdash; сканирование и лечение сайтов прямо в панели хостинга</li>
  6592. <li style="margin-top: 10px"><b><a href="https://cloudscan.pro/ru/" target=_blank>Облачный антивирус CloudScan.Pro</a> для веб-специалистов</b> &mdash; лечение сайтов в один клик</li>
  6593. <li style="margin-top: 10px"><b><a href="https://revisium.com/ru/antivirus-server/" target=_blank>Антивирус для сервера</a></b> &mdash; для хостинг-компаний, веб-студий и агентств.</li>
  6594. </ul>
  6595. </div>
  6596. OFFER_OUR_PRODUCTS;
  6597. #endregion
  6598. #region templates eng
  6599. /**
  6600. * #############
  6601. * # FOOTER_EN #
  6602. * #############
  6603. */
  6604. const FOOTER_EN = <<<FOOTER
  6605. <div class="disclaimer"><span class="vir">[!]</span> Disclaimer: We're not liable to you for any damages, including general, special, incidental or consequential damages arising out of the use or inability to use the script (including but not limited to loss of data or report being rendered inaccurate or failure of the script). There's no warranty for the program. Use at your own risk.
  6606. </div>
  6607. <div class="thanx">
  6608. We're greatly appreciate for any references in the social medias, forums or blogs to our scanner AI-BOLIT <a href="https://revisium.com/aibo/">https://revisium.com/aibo/</a>.<br/>
  6609. </div>
  6610. FOOTER;
  6611. /**
  6612. * ###########################
  6613. * # OFFER_ON_VIRUS_FOUND_EN #
  6614. * ###########################
  6615. */
  6616. const OFFER_EN = <<<OFFER_ON_VIRUS_FOUND
  6617. <div>
  6618. <div class="crit" style="font-size: 17px;"><b>Attention! The scanner has detected suspicious or malicious files.</b></div>
  6619. <br/>Most likely the website has been compromised. Please, <a href="https://revisium.com/en/contacts/" target=_blank>contact web security experts</a> from Revisium to check the report or clean the malware.
  6620. <p><hr size=1></p>
  6621. Also check your website for viruses with our free <b><a href="http://rescan.pro/?en&utm=aibo" target=_blank>online scanner ReScan.Pro</a></b>.
  6622. </div>
  6623. <br/>
  6624. <div>
  6625. Revisium contacts: <a href="https://revisium.com/en/contacts/">https://revisium.com/en/home/</a>
  6626. </div>
  6627. <div class="caution">@@CAUTION@@</div>
  6628. OFFER_ON_VIRUS_FOUND;
  6629. /**
  6630. * #########################
  6631. * # OFFER_OUR_PRODUCTS_EN #
  6632. * #########################
  6633. */
  6634. const OFFER_OUR_PRODUCTS_EN = <<<OFFER_OUR_PRODUCTS
  6635. <b>Special Offers:</b><br/>
  6636. <ul>
  6637. <li style="margin-top: 10px"><font color=red><sup>[new]</sup></font><b><a href="http://ext.plesk.com/packages/b71916cf-614e-4b11-9644-a5fe82060aaf-revisium-antivirus">Antivirus for Plesk Onyx</a></b> hosting panel with one-click malware cleanup and scheduled website scanning.</li>
  6638. <li style="margin-top: 10px"><font color=red></font><b><a href="https://www.ispsystem.com/addons-modules/revisium">Antivirus for ISPmanager Lite</a></b> hosting panel with one-click malware cleanup and scheduled website scanning.</li>
  6639. <li style="margin-top: 10px">Professional malware cleanup and web-protection service with 6 month guarantee for only $99 (one-time payment): <a href="https://revisium.com/en/home/#order_form">https://revisium.com/en/home/</a>.</li>
  6640. </ul>
  6641. </div>
  6642. OFFER_OUR_PRODUCTS;
  6643. #endregion
  6644. }
  6645. class TranslateList
  6646. {
  6647. const RU = [
  6648. //Переменные для javascript
  6649. 'data_table.length_menu' => 'Отображать по _MENU_ записей',
  6650. 'data_table.zero_records' => 'Ничего не найдено',
  6651. 'data_table.info' => 'Отображается c _START_ по _END_ из _TOTAL_ файлов',
  6652. 'data_table.info_empty' => 'Нет файлов',
  6653. 'data_table.info_filtered' => '(всего записей _MAX_)',
  6654. 'data_table.search' => 'Поиск:',
  6655. 'data_table.paginate.first' => 'Первая',
  6656. 'data_table.paginate.previous' => 'Предыдущая',
  6657. 'data_table.paginate.next' => 'Следующая',
  6658. 'data_table.paginate.last' => 'Последняя',
  6659. 'data_table.aria.sort_ascending' => ': активировать для сортировки столбца по возрастанию',
  6660. 'data_table.aria.sort_descending' => ': активировать для сортировки столбцов по убыванию',
  6661. 'header.scan_report_title' => 'Отчет сканера <a href="https://revisium.com/ai/">AI-Bolit</a> v@@VERSION@@:',
  6662. 'offer.when_no_critical' => 'Обращаем внимание на то, что большинство CMS <b>без дополнительной защиты</b> рано или поздно <b>взламывают</b>.<p> Компания <a href="https://revisium.com/">"Ревизиум"</a> предлагает услугу превентивной защиты сайта от взлома с использованием уникальной <b>процедуры "цементирования сайта"</b>. Подробно на <a href="https://revisium.com/ru/client_protect/">странице услуги</a>. <p>Лучшее лечение &mdash; это профилактика.',
  6663. 'offer_our_products' => TemplateList::OFFER_OUR_PRODUCTS_RU,
  6664. 'offer.when_has_critical' => TemplateList::OFFER_RU,
  6665. 'сaution.aibolit_file' => 'Не оставляйте файл отчета на сервере, и не давайте на него прямых ссылок с других сайтов. Информация из отчета может быть использована злоумышленниками для взлома сайта, так как содержит информацию о настройках сервера, файлах и каталогах.',
  6666. 'сaution.scanner_set_password' => "Сканер AI-Bolit запускается с паролем. Если это первый запуск сканера, вам нужно придумать сложный пароль и вписать его в файле ai-bolit.php в строке №34. <p>Например, <b>'PASS', =>'%s',</b><p>
  6667. После этого откройте сканер в браузере, указав пароль в параметре \"p\". <p>Например, так <b>http://mysite.ru/ai-bolit.php?p=%s</b>. ",
  6668. 'сaution.quick_scanned' => '<div class="rep" style="color: #0000A0">Внимание, скрипт выполнил быструю проверку сайта. Проверяются только наиболее критические файлы, но часть вредоносных скриптов может быть не обнаружена. Пожалуйста, запустите скрипт из командной строки для выполнения полного тестирования. Подробнее смотрите в <a href="https://revisium.com/ai/faq.php">FAQ вопрос №10</a>.</div>',
  6669. 'warning.weak_password' => "Вы установили слабый пароль на скрипт AI-BOLIT. Укажите пароль не менее 8 символов, содержащий латинские буквы в верхнем и нижнем регистре, а также цифры. Например, такой <b>%s</b>",
  6670. 'warning.folder_read_permission' => 'Текущая директория не доступна для чтения скрипту. Пожалуйста, укажите права на доступ <b>rwxr-xr-x</b> или с помощью командной строки <b>chmod +r имя_директории</b>',
  6671. 'warnings' => 'Предупреждения',
  6672. 'warning.reading_error' => 'Непроверенные файлы - ошибка чтения',
  6673. 'info.time_elapsed' => "Затрачено времени: <b>%s</b>. Сканирование начато %s, сканирование завершено %s",
  6674. 'info.files_checked' => 'Всего проверено %s директорий и %s файлов.',
  6675. 'info.non_commercial_use' => 'Сканер бесплатный только для личного некоммерческого использования. Информация по <a href="https://revisium.com/ai/faq.php#faq11" target=_blank>коммерческой лицензии</a> (пункт №11). <a href="https://revisium.com/images/mini_aibolit.jpg">Авторское свидетельство</a> о гос. регистрации в РосПатенте №2012619254 от 12 октября 2012 г.',
  6676. 'critical.title' => '<div class="title">Критические замечания</div>',
  6677. 'not_detected.shell_scripts' => 'Вирусы и вредоносные скрипты не обнаружены.',
  6678. 'detected.shell_scripts' => 'Эти файлы могут быть вредоносными или хакерскими скриптами',
  6679. 'detected.javascript' => 'Эти файлы могут быть javascript вирусами',
  6680. 'detected.executables' => 'Обнаружены сигнатуры исполняемых файлов unix и нехарактерных скриптов. Они могут быть вредоносными файлами',
  6681. 'detected.bad_links' => 'Дорвеи, реклама, спам-ссылки, редиректы',
  6682. 'detected.phishing_pages' => 'Обнаружены фишинговые страницы',
  6683. 'file.not_found.more_than' => 'Не найдено файлов больше чем %s',
  6684. 'file.recommend_to_remove' => 'Временные файлы или файлы(каталоги) - кандидаты на удаление по ряду причин',
  6685. 'file.scanned_manual' => 'Просканированы только файлы, перечисленные в %s. Для полного сканирования удалите файл %s и запустите сканер повторно.',
  6686. 'file.suspicion.heuristic_analyze' => 'Эвристический анализ обнаружил подозрительные файлы. Проверьте их на наличие вредоносного кода.',
  6687. 'file.encrypted' => 'Зашифрованных файлов',
  6688. 'file.hidden' => 'Скрытых файлов',
  6689. 'file.added' => "Добавленные файлы",
  6690. 'file.updated' => "Измененные файлы",
  6691. 'file.deleted' => "Удаленные файлы",
  6692. 'file_structure.updates' => "Изменения в файловой структуре",
  6693. 'hidden_files' => 'Скрытые файлы',
  6694. 'doorway.might' => 'Возможно, каталог с дорвеем',
  6695. 'doorway.not_found' => 'Не найдено директорий c дорвеями',
  6696. 'suspicion.multiple' => 'Двойное расширение, зашифрованный контент или подозрение на вредоносный скрипт. Требуется дополнительный анализ',
  6697. 'suspicion.malicious' => 'Подозрение на вредоносный скрипт',
  6698. 'suspicion.htaccess' => 'Подозрение на мобильный редирект, подмену расширений или автовнедрение кода',
  6699. 'suspicion.non_php' => 'В не .php файле содержится стартовая сигнатура PHP кода. Возможно, там вредоносный код',
  6700. 'suspicion.hidden_link' => 'Невидимые ссылки. Подозрение на ссылочный спам',
  6701. 'suspicion.doorway' => 'Подозрение на дорвей',
  6702. 'suspicion.code' => 'Скрипт использует код, который часто встречается во вредоносных скриптах',
  6703. 'suspicion.obfuscated_variables' => 'Подозрение на обфусцированные переменные',
  6704. 'suspicion.global_array' => 'Подозрительное использование массива глобальных переменных',
  6705. 'suspicion.file_time' => "Подозрительные параметры времени изменения файла",
  6706. 'suspicion.file_attributes' => "Подозрительные атрибуты файла",
  6707. 'suspicion.file_location' => "Подозрительное местоположение файла",
  6708. 'symlinks' => 'Символические ссылки (symlinks)',
  6709. 'hidden_links' => 'Невидимые ссылки',
  6710. 'link.symbolic' => 'Символических ссылок',
  6711. 'links.adware_spam' => 'Рекламных ссылок и кодов',
  6712. 'links.empty' => 'Пустых ссылок',
  6713. 'display_only_first' => 'Отображены только первые ',
  6714. 'skipped.adirignore' => 'Директории из файла .adirignore были пропущены при сканировании',
  6715. 'founded_CMS' => 'Версии найденных CMS',
  6716. 'folder.unsafe_writable' => 'Потенциально небезопасно! Директории, доступные скрипту на запись',
  6717. 'folder.unsafe_writable_not_found' => 'Не найдено директорий, доступных на запись скриптом',
  6718. 'folder.added' => "Добавленные каталоги",
  6719. 'folder.deleted' => "Удаленные каталоги",
  6720. 'memory_used' => 'Использовано памяти при сканировании: ',
  6721. 'notice.scan_express' => '<div class="rep">Внимание! Выполнена экспресс-проверка сайта. Просканированы только файлы с расширением .php, .js, .html, .htaccess. В этом режиме могут быть пропущены вирусы и хакерские скрипты в файлах с другими расширениями. Чтобы выполнить более тщательное сканирование, поменяйте значение настройки на <b>\'scan_all_files\' => 1</b> в строке 50 или откройте сканер в браузере с параметром full: <b><a href="ai-bolit.php?p=&full">ai-bolit.php?p=&full</a></b>. <p>Не забудьте перед повторным запуском удалить файл %s</div>',
  6722. 'feedback_for_script' => 'Мы будем чрезвычайно благодарны за любые упоминания скрипта AI-Bolit на вашем сайте, в блоге, среди друзей, знакомых и клиентов. Ссылочку можно поставить на <a href="https://revisium.com/ai/">https://revisium.com/ai/</a>.',
  6723. 'report_for' => 'Отчет по ',
  6724. 'function.many_reference' => 'Много косвенных вызовов функции',
  6725. 'str.abnormal_split' => 'Дробление строки на символы',
  6726. 'scan.offer_modes_after_express' => 'Сканирование выполнено в экспресс-режиме. Многие вредоносные скрипты могут быть не обнаружены.<br> Рекомендуем проверить сайт в режиме "Эксперт" или "Параноидальный". Подробно описано в <a href="https://revisium.com/ai/faq.php">FAQ</a> и инструкции к скрипту.',
  6727. 'mobile_redirects' => 'Мобильных редиректов',
  6728. 'skipped.large_file' => 'Большие файлы (больше чем %s). Пропущено',
  6729. 'malware' => 'Вредоносных скриптов',
  6730. 'js_virused' => 'JS Вирусов',
  6731. 'phishing_pages' => 'Фишинговых страниц',
  6732. 'executable_files' => 'Исполняемых файлов',
  6733. 'iframe_injections' => 'IFRAME вставок',
  6734. 'skipped_large_file' => 'Пропущенных больших файлов',
  6735. 'error.read_file' => 'Ошибок чтения файлов',
  6736. 'suspicious' => 'Подозрительных',
  6737. 'report.summary' => 'Сводный отчет',
  6738. 'footer' => TemplateList::FOOTER_RU,
  6739. 'notice.files_may_not_malicious' => "Обращаем внимание, что обнаруженные файлы не всегда являются вирусами и хакерскими скриптами. Сканер минимизирует число ложных обнаружений, но это не всегда возможно, так как найденный фрагмент может встречаться как во вредоносных скриптах, так и в обычных.<p>Для диагностического сканирования без ложных срабатываний мы разработали специальную версию <u><a href=\"https://revisium.com/ru/blog/ai-bolit-4-ISP.html\" target=_blank style=\"background: none; color: #303030\">сканера для хостинг-компаний</a></u>.",
  6740. 'script.vulnerable' => "Уязвимости в скриптах",
  6741. 'path' => 'Путь',
  6742. 'property_change' => 'Изменение свойств',
  6743. 'content_change' => 'Изменение содержимого',
  6744. 'size' => 'Размер',
  6745. 'php_config' => 'Конфигурация PHP',
  6746. ];
  6747. const EN = [
  6748. //variables for javascript
  6749. 'data_table.length_menu' => 'Display _MENU_ records',
  6750. 'data_table.zero_records' => 'Not found',
  6751. 'data_table.info' => 'Display from _START_ to _END_ of _TOTAL_ files',
  6752. 'data_table.info_empty' => 'No files',
  6753. 'data_table.info_filtered' => '(total _MAX_)',
  6754. 'data_table.search' => 'Filter/Search:',
  6755. 'data_table.paginate.first' => 'First',
  6756. 'data_table.paginate.previous' => 'Previous',
  6757. 'data_table.paginate.next' => 'Next',
  6758. 'data_table.paginate.last' => 'Last',
  6759. 'data_table.aria.sort_ascending' => ': activate to sort row ascending order',
  6760. 'data_table.aria.sort_descending' => ': activate to sort row descending order',
  6761. 'header.scan_report_title' => 'AI-Bolit v@@VERSION@@ Scan Report:',
  6762. 'offer.when_no_critical' => '',
  6763. 'offer_our_products' => TemplateList::OFFER_OUR_PRODUCTS_EN,
  6764. 'offer.when_has_critical' => TemplateList::OFFER_EN,
  6765. 'сaution.aibolit_file' => 'Caution! Do not leave either ai-bolit.php or report file on server and do not provide direct links to the report file. Report file contains sensitive information about your website which could be used by hackers. So keep it in safe place and don\'t leave on website!',
  6766. 'сaution.scanner_set_password' => "Open AI-BOLIT with password specified in the beggining of file in PASS variable. <br/>E.g. http://you_website.com/ai-bolit.php?p=<b>%s</b>",
  6767. 'сaution.quick_scanned' => '<div class="rep" style="color: #0000A0">Attention! Script has performed quick scan. It scans only .html/.js/.php files in quick scan mode so some of malicious scripts might not be detected. <br>Please launch script from a command line thru SSH to perform full scan.',
  6768. 'warning.weak_password' => "Your password for AI-BOLIT is too weak. Password must be more than 8 character length, contain both latin letters in upper and lower case, and digits. E.g. <b>%s</b>",
  6769. 'warning.folder_read_permission' => 'Current folder is not readable. Please change permission for <b>rwxr-xr-x</b> or using command line <b>chmod +r folder_name</b>',
  6770. 'warnings' => 'Warnings',
  6771. 'warning.reading_error' => 'Reading error. Skipped.',
  6772. 'info.time_elapsed' => "<div class=\"rep\">%s malicious signatures known, %s virus signatures and other malicious code. Elapsed: <b>%s</b
  6773. >.<br/>Started: %s. Stopped: %s</div> ",
  6774. 'info.files_checked' => 'Scanned %s folders and %s files.',
  6775. 'info.non_commercial_use' => 'For non-commercial use only.',
  6776. 'critical.title' => '<div class="title">Critical</div>',
  6777. 'detected.shell_scripts' => 'Shell script signatures detected. Might be a malicious or hacker\'s scripts',
  6778. 'not_detected.shell_scripts' => 'Shell scripts signatures not detected.',
  6779. 'detected.javascript' => 'Javascript virus signatures detected:',
  6780. 'detected.executables' => 'Unix executables signatures and odd scripts detected. They might be a malicious binaries or rootkits:',
  6781. 'detected.bad_links' => 'This script has black-SEO links or linkfarm. Check if it was installed by yourself:',
  6782. 'detected.phishing_pages' => 'Phishing pages detected:',
  6783. 'file.not_found.more_than' => 'Files greater than %s not found',
  6784. 'file.recommend_to_remove' => 'Files recommended to be remove due to security reason:',
  6785. 'file.scanned_manual' => 'Quick scan through the files from %s. For full scan remove %s and launch scanner once again.',
  6786. 'file.suspicion.heuristic_analyze' => 'Heuristic Analyzer has detected suspicious files. Check if they are malware.',
  6787. 'file.encrypted' => 'Encrypted files',
  6788. 'file.hidden' => 'Hidden files',
  6789. 'files_may_not_malicious' => "Notice! Some of detected files may not contain malicious code. Scanner tries to minimize a number of false positives, but sometimes it's impossible, because same piece of code may be used either in malware or in normal scripts.",
  6790. 'file.added' => "Added files",
  6791. 'file.updated' => "Modified files",
  6792. 'file.deleted' => "Deleted files",
  6793. 'file_structure.updates' => "Integrity Check Report",
  6794. 'hidden_files' => 'Hidden files:',
  6795. 'doorway.might' => 'Files might be a part of doorway:',
  6796. 'doorway.not_found' => 'Doorway folders not detected',
  6797. 'suspicion.multiple' => 'Suspicious encoded strings, extra .php extention or external includes detected in PHP files. Might be a malicious or hacker\'s script:',
  6798. 'suspicion.malicious' => 'Might be a malicious or hacker\'s script:',
  6799. 'suspicion.htaccess' => 'Malicious code in .htaccess (redirect to external server, extention handler replacement or malicious code auto-append):',
  6800. 'suspicion.non_php' => 'Non-PHP file has PHP signature. Check for malicious code:',
  6801. 'suspicion.hidden_link' => 'These files have invisible links, might be black-seo stuff:',
  6802. 'suspicion.doorway' => 'Folders contained too many .php or .html files. Might be a doorway:',
  6803. 'suspicion.code' => 'Suspicious code detected. It\'s usually used in malicious scrips:',
  6804. 'suspicion.obfuscated_variables' => 'Suspected for obfuscated variables',
  6805. 'suspicion.global_array' => 'Suspected for $GLOBAL array usage',
  6806. 'suspicion.file_time' => "Suspicious file mtime and ctime",
  6807. 'suspicion.file_attributes' => "Suspicious file permissions",
  6808. 'suspicion.file_location' => "Suspicious file location",
  6809. 'symlinks' => 'Symlinks:',
  6810. 'hidden_links' => 'List of invisible links:',
  6811. 'link.symbolic' => 'Symbolic links',
  6812. 'links.adware_spam' => 'Adware and spam links',
  6813. 'links.empty' => 'Empty links',
  6814. 'display_only_first' => 'Displayed first ',
  6815. 'skipped.adirignore' => 'The following list of files specified in .adirignore has been skipped:',
  6816. 'founded_CMS' => 'CMS found:',
  6817. 'folder.unsafe_writable' => 'Potentially unsafe! Folders which are writable for scripts:',
  6818. 'folder.unsafe_writable_not_found' => 'Writable folders not found',
  6819. 'folder.added' => "Added directories",
  6820. 'folder.deleted' => "Deleted directories",
  6821. 'memory_used' => 'Memory used: ',
  6822. 'notice.scan_express' => '<div class="notice"><span class="vir">[!]</span> Ai-BOLIT is working in quick scan mode, only .php, .html, .htaccess files will be checked. Change the following setting \'scan_all_files\' => 1 to perform full scanning.</b>. </div>',
  6823. 'feedback_for_script' => "I'm sincerely appreciate reports for any bugs you may found in the script. Please email me: <a href=\"mailto:audit@revisium.com\">audit@revisium.com</a>.<p> Also I appriciate any reference to the script in your blog or forum posts. Thank you for the link to download page: <a href=\"https://revisium.com/aibo/\">https://revisium.com/aibo/</a>",
  6824. 'report_for' => 'Report for ',
  6825. 'function.many_reference' => 'Function called by reference',
  6826. 'str.abnormal_split' => 'Abnormal split of string',
  6827. 'scan.offer_modes_after_express' => 'Scanning has been done in simple mode. It is strongly recommended to perform scanning in "Expert" mode. See readme.txt for details.',
  6828. 'mobile_redirects' => 'Mobile redirects',
  6829. 'skipped.large_file' => 'Large files (greater than %s! Skipped:',
  6830. 'malware' => 'Malware',
  6831. 'js_virused' => 'JS viruses',
  6832. 'phishing_pages' => 'Phishing pages',
  6833. 'executable_files' => 'Unix executables',
  6834. 'iframe_injections' => 'IFRAME injections',
  6835. 'skipped_large_file' => 'Skipped big files',
  6836. 'critical.error_read_file' => 'Reading errors',
  6837. 'suspicious' => 'Suspicious',
  6838. 'report.summary' => 'Summary',
  6839. 'footer' => TemplateList::FOOTER_EN,
  6840. 'script.vulnerable' => "Vulnerable Scripts",
  6841. 'path' => 'Path',
  6842. 'property_change' => 'iNode Changed',
  6843. 'content_change' => 'Modified',
  6844. 'size' => 'Size',
  6845. 'php_config' => 'PHP Info',
  6846. ];
  6847. }
  6848. class OsReleaseInfo
  6849. {
  6850. private $prefix = '';
  6851. private $release_file = '';
  6852. const DEBIAN = ['debian'];
  6853. const RHEL_FEDORA_CENTOS = ['rhel', 'fedora', 'centos'];
  6854. const UNKNOWN = ['unknown'];
  6855. private $_supported_dists = [
  6856. 'SuSE', 'debian', 'fedora', 'redhat', 'centos',
  6857. 'mandrake', 'mandriva', 'rocks', 'slackware', 'yellowdog', 'gentoo',
  6858. 'UnitedLinux', 'turbolinux'];
  6859. private $_release_filename = '(\w+)[-_](release|version)';
  6860. private $_lsb_release_version = '(.+)'
  6861. . ' release '
  6862. . '([\d.]+)'
  6863. . '[^(]*(?:\((.+)\))?';
  6864. private $_release_version = '([^0-9]+)'
  6865. . '(?: release )?'
  6866. . '([\d.]+)'
  6867. . '[^(]*(?:\((.+)\))?';
  6868. private $release = [];
  6869. public function __construct($prefix = '', $release_file = '/etc/os-release')
  6870. {
  6871. $this->prefix = $prefix;
  6872. $this->release_file = $this->prefix . $release_file;
  6873. $this->getRelease($this->release_file);
  6874. }
  6875. private function getOsReleaseAndVersion()
  6876. {
  6877. $ver = rtrim(@file_get_contents($this->prefix . '/etc/system-release'));
  6878. return $ver ?: $this->release['VERSION'];
  6879. }
  6880. public function getOsVersion($release_and_version = false)
  6881. {
  6882. $rv = $release_and_version ? $release_and_version : $this->getOsReleaseAndVersion();
  6883. if ($rv) {
  6884. if (preg_match('~\s*(\d+\.\d+\S*)(\s|$)~', $rv, $m)) {
  6885. return $m[1];
  6886. }
  6887. }
  6888. return $this->release['VERSION_ID'] ? $this->release['VERSION_ID'] : false;
  6889. }
  6890. private function linuxDistribution($distname = '', $version = '', $id = '')
  6891. {
  6892. $dists = array_flip($this->_supported_dists);
  6893. if (!file_exists($this->prefix . '/etc')) {
  6894. return [$distname, $version, $id];
  6895. }
  6896. $file = '';
  6897. $etc = scandir($this->prefix . '/etc');
  6898. foreach ($etc as $file) {
  6899. if (preg_match('~' . $this->_release_filename . '~', $file, $m)) {
  6900. if (isset($dists[$m[1]])) {
  6901. $_distname = $m[1];
  6902. $distname = $m[1];
  6903. break;
  6904. }
  6905. }
  6906. }
  6907. $f = fopen($this->prefix . '/etc/' . $file, 'r');
  6908. $firstline = fgets($f);
  6909. fclose($f);
  6910. list($_distname, $_version, $_id) = $this->_parseReleaseFile($firstline);
  6911. if ($_distname) {
  6912. $distname = $_distname;
  6913. }
  6914. if ($_version) {
  6915. $version = $_version;
  6916. }
  6917. if ($_id) {
  6918. $id = $_id;
  6919. }
  6920. return [$distname, $version, $id];
  6921. }
  6922. private function _parseReleaseFile($firstline)
  6923. {
  6924. $version = '';
  6925. $id = '';
  6926. if (preg_match('~' . $this->_lsb_release_version . '~', $firstline, $m)) {
  6927. return [$m[1], $m[2], $m[3]];
  6928. }
  6929. if (preg_match('~' . $this->_release_version . '~', $firstline, $m)) {
  6930. return [$m[1], $m[2], $m[3]];
  6931. }
  6932. $l = preg_split("~\s+~", trim($firstline), -1, PREG_SPLIT_NO_EMPTY);
  6933. if (!empty($l)) {
  6934. $version = $l[0];
  6935. if (count($l) > 1) {
  6936. $id = $l[1];
  6937. }
  6938. }
  6939. return ['', $version, $id];
  6940. }
  6941. private function getReleaseFromFile($release_file)
  6942. {
  6943. $lines = file($release_file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
  6944. foreach ($lines as $line) {
  6945. list($k, $v) = explode('=', rtrim($line), 2);
  6946. $this->release[$k] = trim($v, '"');
  6947. }
  6948. if (isset($this->release['ID_LIKE'])) {
  6949. $this->release['ID_LIKE'] = preg_split('~\s+~', $this->release['ID_LIKE'], -1, PREG_SPLIT_NO_EMPTY);
  6950. } else {
  6951. $this->release['ID_LIKE'] = [$this->release['ID']];
  6952. }
  6953. }
  6954. private function getRelease($release_file = '')
  6955. {
  6956. if (count($this->release) != 0) {
  6957. return $this->release;
  6958. }
  6959. if ($this->release_file) {
  6960. $release_file = $this->release_file;
  6961. }
  6962. $osid = '';
  6963. if (file_exists($release_file)) {
  6964. $this->getReleaseFromFile($release_file);
  6965. } else {
  6966. $d = $this->linuxDistribution();
  6967. if ($d && isset($d[0])) {
  6968. $osid = current(preg_split('~\s+~', strtolower($d[0]), -1, PREG_SPLIT_NO_EMPTY));
  6969. if ($osid == 'red' && strpos($d[0], 'Red Hat Enterprise Linux')) {
  6970. $osid = 'rhel';
  6971. }
  6972. $this->release['ID'] = $osid;
  6973. $this->release['PRETTY_NAME'] = "{$d[0]} {$d[1]} ({$d[2]})";
  6974. if (in_array($osid, ['cloudlinux', 'centos', 'rhel'])) {
  6975. $this->release['ID_LIKE'] = self::RHEL_FEDORA_CENTOS;
  6976. } else if (in_array($osid, ['ubuntu', 'debian'])) {
  6977. $this->release['ID_LIKE'] = self::DEBIAN;
  6978. } else {
  6979. $this->release['ID_LIKE'] = self::UNKNOWN;
  6980. }
  6981. } else {
  6982. $this->release['ID'] = 'unknown';
  6983. $this->release['ID_LIKE'] = self::UNKNOWN;
  6984. $this->release['PRETTY_NAME'] = 'unknown';
  6985. }
  6986. }
  6987. return $this->release;
  6988. }
  6989. public function getIdLike()
  6990. {
  6991. $rel = $this->getRelease();
  6992. return $rel['ID_LIKE'];
  6993. }
  6994. public function isIdLikeCentos()
  6995. {
  6996. $rel = $this->getRelease();
  6997. foreach (self::RHEL_FEDORA_CENTOS as $os) {
  6998. if (in_array($os, $rel['ID_LIKE'])) {
  6999. return true;
  7000. }
  7001. }
  7002. return false;
  7003. }
  7004. public function getPrettyName()
  7005. {
  7006. $rel = $this->getRelease();
  7007. return $rel['PRETTY_NAME'];
  7008. }
  7009. public function getOs()
  7010. {
  7011. $rel = $this->getRelease();
  7012. return $rel['ID'];
  7013. }
  7014. public function isRhel()
  7015. {
  7016. return $this->getOs() == 'rhel';
  7017. }
  7018. public function isCentos()
  7019. {
  7020. return $this->getOs() == 'centos';
  7021. }
  7022. public function isUbuntu()
  7023. {
  7024. return $this->getOs() == 'ubuntu';
  7025. }
  7026. public function isCloudlinux()
  7027. {
  7028. return $this->getOs() == 'cloudlinux';
  7029. }
  7030. public function isDebian()
  7031. {
  7032. return $this->getOs() == 'debian';
  7033. }
  7034. }
  7035. /**
  7036. * Class FileHashMemoryDb.
  7037. *
  7038. * Implements operations to load the file hash database into memory and work with it.
  7039. */
  7040. class FileHashMemoryDb
  7041. {
  7042. const HEADER_SIZE = 1024;
  7043. const ROW_SIZE = 20;
  7044. /**
  7045. * @var int
  7046. */
  7047. private $count;
  7048. /**
  7049. * @var array
  7050. */
  7051. private $header;
  7052. /**
  7053. * @var resource
  7054. */
  7055. private $fp;
  7056. /**
  7057. * @var array
  7058. */
  7059. private $data;
  7060. /**
  7061. * Creates a new DB file and open it.
  7062. *
  7063. * @param $filepath
  7064. * @return FileHashMemoryDb
  7065. * @throws Exception
  7066. */
  7067. public static function create($filepath)
  7068. {
  7069. if (file_exists($filepath)) {
  7070. throw new Exception('File \'' . $filepath . '\' already exists.');
  7071. }
  7072. $value = pack('V', 0);
  7073. $header = array_fill(0, 256, $value);
  7074. file_put_contents($filepath, implode($header));
  7075. return new self($filepath);
  7076. }
  7077. /**
  7078. * Opens a particular DB file.
  7079. *
  7080. * @param $filepath
  7081. * @return FileHashMemoryDb
  7082. * @throws Exception
  7083. */
  7084. public static function open($filepath)
  7085. {
  7086. if (!file_exists($filepath)) {
  7087. throw new Exception('File \'' . $filepath . '\' does not exist.');
  7088. }
  7089. return new self($filepath);
  7090. }
  7091. /**
  7092. * FileHashMemoryDb constructor.
  7093. *
  7094. * @param mixed $filepath
  7095. * @throws Exception
  7096. */
  7097. private function __construct($filepath)
  7098. {
  7099. $this->fp = fopen($filepath, 'rb');
  7100. if (false === $this->fp) {
  7101. throw new Exception('File \'' . $filepath . '\' can not be opened.');
  7102. }
  7103. try {
  7104. $this->header = unpack('V256', fread($this->fp, self::HEADER_SIZE));
  7105. $this->count = (int) (max(0, filesize($filepath) - self::HEADER_SIZE) / self::ROW_SIZE);
  7106. foreach ($this->header as $chunk_id => $chunk_size) {
  7107. if ($chunk_size > 0) {
  7108. $str = fread($this->fp, $chunk_size);
  7109. } else {
  7110. $str = '';
  7111. }
  7112. $this->data[$chunk_id] = $str;
  7113. }
  7114. } catch (Exception $e) {
  7115. throw new Exception('File \'' . $filepath . '\' is not a valid DB file. An original error: \'' . $e->getMessage() . '\'');
  7116. }
  7117. }
  7118. /**
  7119. * Calculates and returns number of hashes stored in a loaded database.
  7120. *
  7121. * @return int number of hashes stored in a DB
  7122. */
  7123. public function count()
  7124. {
  7125. return $this->count;
  7126. }
  7127. /**
  7128. * Find hashes in a DB.
  7129. *
  7130. * @param array $list of hashes to find in a DB
  7131. * @return array list of hashes from the $list parameter that are found in a DB
  7132. */
  7133. public function find($list)
  7134. {
  7135. sort($list);
  7136. $hash = reset($list);
  7137. $found = array();
  7138. foreach ($this->header as $chunk_id => $chunk_size) {
  7139. if ($chunk_size > 0) {
  7140. $str = $this->data[$chunk_id];
  7141. do {
  7142. $raw = pack("H*", $hash);
  7143. $id = ord($raw[0]) + 1;
  7144. if ($chunk_id == $id AND $this->binarySearch($str, $raw)) {
  7145. $found[] = (string)$hash;
  7146. }
  7147. } while ($chunk_id >= $id AND $hash = next($list));
  7148. if ($hash === false) {
  7149. break;
  7150. }
  7151. }
  7152. }
  7153. return $found;
  7154. }
  7155. /**
  7156. * Searches $item in the $str using an implementation of the binary search algorithm.
  7157. *
  7158. * @param $str
  7159. * @param $item
  7160. * @return bool
  7161. */
  7162. private function binarySearch($str, $item) {
  7163. $item_size = strlen($item);
  7164. if ($item_size == 0) {
  7165. return false;
  7166. }
  7167. $first = 0;
  7168. $last = floor(strlen($str) / $item_size);
  7169. while ($first < $last) {
  7170. $mid = $first + (($last - $first) >> 1);
  7171. $b = substr($str, $mid * $item_size, $item_size);
  7172. if (strcmp($item, $b) <= 0) {
  7173. $last = $mid;
  7174. } else {
  7175. $first = $mid + 1;
  7176. }
  7177. }
  7178. $b = substr($str, $last * $item_size, $item_size);
  7179. if ($b == $item) {
  7180. return true;
  7181. } else {
  7182. return false;
  7183. }
  7184. }
  7185. /**
  7186. * FileHashDB destructor.
  7187. */
  7188. public function __destruct()
  7189. {
  7190. fclose($this->fp);
  7191. }
  7192. }
  7193. class FilepathEscaper
  7194. {
  7195. public static function encodeFilepath($filepath)
  7196. {
  7197. return str_replace(array('\\', "\n", "\r"), array('\\\\', '\\n', '\\r'), $filepath);
  7198. }
  7199. public static function decodeFilepath($filepath)
  7200. {
  7201. return preg_replace_callback('~(\\\\+)(.)~', function ($matches) {
  7202. $count = strlen($matches[1]);
  7203. if ($count % 2 === 0) {
  7204. return str_repeat('\\', $count/2) . $matches[2];
  7205. }
  7206. return str_repeat('\\', floor($count/2)) . stripcslashes('\\' . $matches[2]);
  7207. }, $filepath);
  7208. }
  7209. public static function encodeFilepathByBase64($filepath)
  7210. {
  7211. return base64_encode($filepath);
  7212. }
  7213. public static function decodeFilepathByBase64($filepath_base64)
  7214. {
  7215. return base64_decode($filepath_base64);
  7216. }
  7217. }
  7218. class StringToStreamWrapper {
  7219. const WRAPPER_NAME = 'var';
  7220. private static $_content;
  7221. private $_position;
  7222. /**
  7223. * Prepare a new memory stream with the specified content
  7224. * @return string
  7225. */
  7226. public static function prepare($content)
  7227. {
  7228. if (!in_array(self::WRAPPER_NAME, stream_get_wrappers())) {
  7229. stream_wrapper_register(self::WRAPPER_NAME, get_class());
  7230. }
  7231. self::$_content = $content;
  7232. }
  7233. public function stream_open($path, $mode, $options, &$opened_path)
  7234. {
  7235. $this->_position = 0;
  7236. return true;
  7237. }
  7238. public function stream_read($count)
  7239. {
  7240. $ret = substr(self::$_content, $this->_position, $count);
  7241. $this->_position += strlen($ret);
  7242. return $ret;
  7243. }
  7244. public function stream_stat()
  7245. {
  7246. return array();
  7247. }
  7248. public function stream_eof()
  7249. {
  7250. return $this->_position >= strlen(self::$_content);
  7251. }
  7252. public function stream_set_option($option , $arg1, $arg2 )
  7253. {
  7254. return true;
  7255. }
  7256. }
  7257. class Normalization
  7258. {
  7259. private static $confusables = "YToxNTYxOntzOjM6IuKAqCI7czoxOiIgIjtzOjM6IuKAqSI7czoxOiIgIjtzOjM6IuGagCI7czoxOiIgIjtzOjM6IuKAgCI7czoxOiIgIjtzOjM6IuKAgSI7czoxOiIgIjtzOjM6IuKAgiI7czoxOiIgIjtzOjM6IuKAgyI7czoxOiIgIjtzOjM6IuKAhCI7czoxOiIgIjtzOjM6IuKAhSI7czoxOiIgIjtzOjM6IuKAhiI7czoxOiIgIjtzOjM6IuKAiCI7czoxOiIgIjtzOjM6IuKAiSI7czoxOiIgIjtzOjM6IuKAiiI7czoxOiIgIjtzOjM6IuKBnyI7czoxOiIgIjtzOjI6IsKgIjtzOjE6IiAiO3M6Mzoi4oCHIjtzOjE6IiAiO3M6Mzoi4oCvIjtzOjE6IiAiO3M6Mjoi37oiO3M6MToiXyI7czozOiLvuY0iO3M6MToiXyI7czozOiLvuY4iO3M6MToiXyI7czozOiLvuY8iO3M6MToiXyI7czozOiLigJAiO3M6MToiLSI7czozOiLigJEiO3M6MToiLSI7czozOiLigJIiO3M6MToiLSI7czozOiLigJMiO3M6MToiLSI7czozOiLvuZgiO3M6MToiLSI7czoyOiLblCI7czoxOiItIjtzOjM6IuKBgyI7czoxOiItIjtzOjI6IsuXIjtzOjE6Ii0iO3M6Mzoi4oiSIjtzOjE6Ii0iO3M6Mzoi4p6WIjtzOjE6Ii0iO3M6Mzoi4rK6IjtzOjE6Ii0iO3M6Mjoi2I0iO3M6MToiLCI7czoyOiLZqyI7czoxOiIsIjtzOjM6IuKAmiI7czoxOiIsIjtzOjI6IsK4IjtzOjE6IiwiO3M6Mzoi6pO5IjtzOjE6IiwiO3M6Mjoizb4iO3M6MToiOyI7czozOiLgpIMiO3M6MToiOiI7czozOiLgqoMiO3M6MToiOiI7czozOiLvvJoiO3M6MToiOiI7czoyOiLWiSI7czoxOiI6IjtzOjI6ItyDIjtzOjE6IjoiO3M6Mjoi3IQiO3M6MToiOiI7czozOiLhm6wiO3M6MToiOiI7czozOiLvuLAiO3M6MToiOiI7czozOiLhoIMiO3M6MToiOiI7czozOiLhoIkiO3M6MToiOiI7czozOiLigZoiO3M6MToiOiI7czoyOiLXgyI7czoxOiI6IjtzOjI6Isu4IjtzOjE6IjoiO3M6Mzoi6p6JIjtzOjE6IjoiO3M6Mzoi4oi2IjtzOjE6IjoiO3M6Mjoiy5AiO3M6MToiOiI7czozOiLqk70iO3M6MToiOiI7czozOiLvvIEiO3M6MToiISI7czoyOiLHgyI7czoxOiIhIjtzOjM6IuK1kSI7czoxOiIhIjtzOjI6IsqUIjtzOjE6Ij8iO3M6MjoiyYEiO3M6MToiPyI7czozOiLgpb0iO3M6MToiPyI7czozOiLhjq4iO3M6MToiPyI7czozOiLqm6siO3M6MToiPyI7czo0OiLwnYWtIjtzOjE6Ii4iO3M6Mzoi4oCkIjtzOjE6Ii4iO3M6Mjoi3IEiO3M6MToiLiI7czoyOiLcgiI7czoxOiIuIjtzOjM6IuqYjiI7czoxOiIuIjtzOjQ6IvCQqZAiO3M6MToiLiI7czoyOiLZoCI7czoxOiIuIjtzOjI6ItuwIjtzOjE6Ii4iO3M6Mzoi6pO4IjtzOjE6Ii4iO3M6Mzoi44O7IjtzOjE6IrciO3M6Mzoi772lIjtzOjE6IrciO3M6Mzoi4ZurIjtzOjE6IrciO3M6MjoizociO3M6MToityI7czozOiLiuLEiO3M6MToityI7czo0OiLwkISBIjtzOjE6IrciO3M6Mzoi4oCiIjtzOjE6IrciO3M6Mzoi4oCnIjtzOjE6IrciO3M6Mzoi4oiZIjtzOjE6IrciO3M6Mzoi4ouFIjtzOjE6IrciO3M6Mzoi6p6PIjtzOjE6IrciO3M6Mzoi4ZCnIjtzOjE6IrciO3M6Mjoi1Z0iO3M6MToiJyI7czozOiLvvIciO3M6MToiJyI7czozOiLigJgiO3M6MToiJyI7czozOiLigJkiO3M6MToiJyI7czozOiLigJsiO3M6MToiJyI7czozOiLigLIiO3M6MToiJyI7czozOiLigLUiO3M6MToiJyI7czoyOiLVmiI7czoxOiInIjtzOjI6ItezIjtzOjE6IiciO3M6MToiYCI7czoxOiInIjtzOjM6IuG/ryI7czoxOiInIjtzOjM6Iu+9gCI7czoxOiInIjtzOjI6IsK0IjtzOjE6IiciO3M6MjoizoQiO3M6MToiJyI7czozOiLhv70iO3M6MToiJyI7czozOiLhvr0iO3M6MToiJyI7czozOiLhvr8iO3M6MToiJyI7czozOiLhv74iO3M6MToiJyI7czoyOiLKuSI7czoxOiInIjtzOjI6Is20IjtzOjE6IiciO3M6Mjoiy4giO3M6MToiJyI7czoyOiLLiiI7czoxOiInIjtzOjI6IsuLIjtzOjE6IiciO3M6Mjoiy7QiO3M6MToiJyI7czoyOiLKuyI7czoxOiInIjtzOjI6Isq9IjtzOjE6IiciO3M6MjoiyrwiO3M6MToiJyI7czoyOiLKviI7czoxOiInIjtzOjM6IuqejCI7czoxOiInIjtzOjI6IteZIjtzOjE6IiciO3M6Mjoi37QiO3M6MToiJyI7czoyOiLftSI7czoxOiInIjtzOjM6IuGRiiI7czoxOiInIjtzOjM6IuGbjCI7czoxOiInIjtzOjQ6IvCWvZEiO3M6MToiJyI7czo0OiLwlr2SIjtzOjE6IiciO3M6Mzoi77y7IjtzOjE6IigiO3M6Mzoi4p2oIjtzOjE6IigiO3M6Mzoi4p2yIjtzOjE6IigiO3M6Mzoi44CUIjtzOjE6IigiO3M6Mzoi77S+IjtzOjE6IigiO3M6Mzoi77y9IjtzOjE6IikiO3M6Mzoi4p2pIjtzOjE6IikiO3M6Mzoi4p2zIjtzOjE6IikiO3M6Mzoi44CVIjtzOjE6IikiO3M6Mzoi77S/IjtzOjE6IikiO3M6Mzoi4p20IjtzOjE6InsiO3M6NDoi8J2ElCI7czoxOiJ7IjtzOjM6IuKdtSI7czoxOiJ9IjtzOjM6IuK4vyI7czoxOiK2IjtzOjM6IuKBjiI7czoxOiIqIjtzOjI6ItmtIjtzOjE6IioiO3M6Mzoi4oiXIjtzOjE6IioiO3M6NDoi8JCMnyI7czoxOiIqIjtzOjM6IuGctSI7czoxOiIvIjtzOjM6IuKBgSI7czoxOiIvIjtzOjM6IuKIlSI7czoxOiIvIjtzOjM6IuKBhCI7czoxOiIvIjtzOjM6IuKVsSI7czoxOiIvIjtzOjM6IuKfiyI7czoxOiIvIjtzOjM6IuKnuCI7czoxOiIvIjtzOjQ6IvCdiLoiO3M6MToiLyI7czozOiLjh5MiO3M6MToiLyI7czozOiLjgLMiO3M6MToiLyI7czozOiLis4YiO3M6MToiLyI7czozOiLjg44iO3M6MToiLyI7czozOiLkuL8iO3M6MToiLyI7czozOiLivIMiO3M6MToiLyI7czozOiLvvLwiO3M6MToiXCI7czozOiLvuagiO3M6MToiXCI7czozOiLiiJYiO3M6MToiXCI7czozOiLin40iO3M6MToiXCI7czozOiLip7UiO3M6MToiXCI7czozOiLip7kiO3M6MToiXCI7czo0OiLwnYiPIjtzOjE6IlwiO3M6NDoi8J2IuyI7czoxOiJcIjtzOjM6IuOHlCI7czoxOiJcIjtzOjM6IuS4tiI7czoxOiJcIjtzOjM6IuK8giI7czoxOiJcIjtzOjM6IuqduCI7czoxOiImIjtzOjI6IsuEIjtzOjE6Il4iO3M6Mjoiy4YiO3M6MToiXiI7czozOiLiuLAiO3M6MToisCI7czoyOiLLmiI7czoxOiKwIjtzOjM6IuKImCI7czoxOiKwIjtzOjM6IuKXiyI7czoxOiKwIjtzOjM6IuKXpiI7czoxOiKwIjtzOjM6IuKSuCI7czoxOiKpIjtzOjM6IuKThyI7czoxOiKuIjtzOjM6IuGbrSI7czoxOiIrIjtzOjM6IuKelSI7czoxOiIrIjtzOjQ6IvCQipsiO3M6MToiKyI7czozOiLinpciO3M6MToi9yI7czozOiLigLkiO3M6MToiPCI7czozOiLina4iO3M6MToiPCI7czoyOiLLgiI7czoxOiI8IjtzOjQ6IvCdiLYiO3M6MToiPCI7czozOiLhkLgiO3M6MToiPCI7czozOiLhmrIiO3M6MToiPCI7czozOiLhkIAiO3M6MToiPSI7czozOiLiuYAiO3M6MToiPSI7czozOiLjgqAiO3M6MToiPSI7czozOiLqk78iO3M6MToiPSI7czozOiLigLoiO3M6MToiPiI7czozOiLina8iO3M6MToiPiI7czoyOiLLgyI7czoxOiI+IjtzOjQ6IvCdiLciO3M6MToiPiI7czozOiLhkLMiO3M6MToiPiI7czo0OiLwlry/IjtzOjE6Ij4iO3M6Mzoi4oGTIjtzOjE6In4iO3M6Mjoiy5wiO3M6MToifiI7czozOiLhv4AiO3M6MToifiI7czozOiLiiLwiO3M6MToifiI7czozOiLigqQiO3M6MToioyI7czo0OiLwnZ+QIjtzOjE6IjIiO3M6NDoi8J2fmiI7czoxOiIyIjtzOjQ6IvCdn6QiO3M6MToiMiI7czo0OiLwnZ+uIjtzOjE6IjIiO3M6NDoi8J2fuCI7czoxOiIyIjtzOjM6IuqdmiI7czoxOiIyIjtzOjI6IsanIjtzOjE6IjIiO3M6Mjoiz6giO3M6MToiMiI7czozOiLqmYQiO3M6MToiMiI7czozOiLhkr8iO3M6MToiMiI7czozOiLqm68iO3M6MToiMiI7czo0OiLwnYiGIjtzOjE6IjMiO3M6NDoi8J2fkSI7czoxOiIzIjtzOjQ6IvCdn5siO3M6MToiMyI7czo0OiLwnZ+lIjtzOjE6IjMiO3M6NDoi8J2fryI7czoxOiIzIjtzOjQ6IvCdn7kiO3M6MToiMyI7czozOiLqnqsiO3M6MToiMyI7czoyOiLInCI7czoxOiIzIjtzOjI6Isa3IjtzOjE6IjMiO3M6Mzoi6p2qIjtzOjE6IjMiO3M6Mzoi4rOMIjtzOjE6IjMiO3M6Mjoi0JciO3M6MToiMyI7czoyOiLToCI7czoxOiIzIjtzOjQ6IvCWvLsiO3M6MToiMyI7czo0OiLwkaOKIjtzOjE6IjMiO3M6NDoi8J2fkiI7czoxOiI0IjtzOjQ6IvCdn5wiO3M6MToiNCI7czo0OiLwnZ+mIjtzOjE6IjQiO3M6NDoi8J2fsCI7czoxOiI0IjtzOjQ6IvCdn7oiO3M6MToiNCI7czozOiLhj44iO3M6MToiNCI7czo0OiLwkaKvIjtzOjE6IjQiO3M6NDoi8J2fkyI7czoxOiI1IjtzOjQ6IvCdn50iO3M6MToiNSI7czo0OiLwnZ+nIjtzOjE6IjUiO3M6NDoi8J2fsSI7czoxOiI1IjtzOjQ6IvCdn7siO3M6MToiNSI7czoyOiLGvCI7czoxOiI1IjtzOjQ6IvCRorsiO3M6MToiNSI7czo0OiLwnZ+UIjtzOjE6IjYiO3M6NDoi8J2fniI7czoxOiI2IjtzOjQ6IvCdn6giO3M6MToiNiI7czo0OiLwnZ+yIjtzOjE6IjYiO3M6NDoi8J2fvCI7czoxOiI2IjtzOjM6IuKzkiI7czoxOiI2IjtzOjI6ItCxIjtzOjE6IjYiO3M6Mzoi4Y+uIjtzOjE6IjYiO3M6NDoi8JGjlSI7czoxOiI2IjtzOjQ6IvCdiJIiO3M6MToiNyI7czo0OiLwnZ+VIjtzOjE6IjciO3M6NDoi8J2fnyI7czoxOiI3IjtzOjQ6IvCdn6kiO3M6MToiNyI7czo0OiLwnZ+zIjtzOjE6IjciO3M6NDoi8J2fvSI7czoxOiI3IjtzOjQ6IvCQk5IiO3M6MToiNyI7czo0OiLwkaOGIjtzOjE6IjciO3M6Mzoi4KyDIjtzOjE6IjgiO3M6Mzoi4KeqIjtzOjE6IjgiO3M6Mzoi4KmqIjtzOjE6IjgiO3M6NDoi8J6jiyI7czoxOiI4IjtzOjQ6IvCdn5YiO3M6MToiOCI7czo0OiLwnZ+gIjtzOjE6IjgiO3M6NDoi8J2fqiI7czoxOiI4IjtzOjQ6IvCdn7QiO3M6MToiOCI7czo0OiLwnZ++IjtzOjE6IjgiO3M6MjoiyKMiO3M6MToiOCI7czoyOiLIoiI7czoxOiI4IjtzOjQ6IvCQjJoiO3M6MToiOCI7czozOiLgqaciO3M6MToiOSI7czozOiLgragiO3M6MToiOSI7czozOiLgp60iO3M6MToiOSI7czozOiLgta0iO3M6MToiOSI7czo0OiLwnZ+XIjtzOjE6IjkiO3M6NDoi8J2foSI7czoxOiI5IjtzOjQ6IvCdn6siO3M6MToiOSI7czo0OiLwnZ+1IjtzOjE6IjkiO3M6NDoi8J2fvyI7czoxOiI5IjtzOjM6IuqdriI7czoxOiI5IjtzOjM6IuKziiI7czoxOiI5IjtzOjQ6IvCRo4wiO3M6MToiOSI7czo0OiLwkaKsIjtzOjE6IjkiO3M6NDoi8JGjliI7czoxOiI5IjtzOjM6IuKNuiI7czoxOiJhIjtzOjM6Iu+9gSI7czoxOiJhIjtzOjQ6IvCdkJoiO3M6MToiYSI7czo0OiLwnZGOIjtzOjE6ImEiO3M6NDoi8J2SgiI7czoxOiJhIjtzOjQ6IvCdkrYiO3M6MToiYSI7czo0OiLwnZOqIjtzOjE6ImEiO3M6NDoi8J2UniI7czoxOiJhIjtzOjQ6IvCdlZIiO3M6MToiYSI7czo0OiLwnZaGIjtzOjE6ImEiO3M6NDoi8J2WuiI7czoxOiJhIjtzOjQ6IvCdl64iO3M6MToiYSI7czo0OiLwnZiiIjtzOjE6ImEiO3M6NDoi8J2ZliI7czoxOiJhIjtzOjQ6IvCdmooiO3M6MToiYSI7czoyOiLJkSI7czoxOiJhIjtzOjI6Is6xIjtzOjE6ImEiO3M6NDoi8J2bgiI7czoxOiJhIjtzOjQ6IvCdm7wiO3M6MToiYSI7czo0OiLwnZy2IjtzOjE6ImEiO3M6NDoi8J2dsCI7czoxOiJhIjtzOjQ6IvCdnqoiO3M6MToiYSI7czoyOiLQsCI7czoxOiJhIjtzOjM6Iu+8oSI7czoxOiJBIjtzOjQ6IvCdkIAiO3M6MToiQSI7czo0OiLwnZC0IjtzOjE6IkEiO3M6NDoi8J2RqCI7czoxOiJBIjtzOjQ6IvCdkpwiO3M6MToiQSI7czo0OiLwnZOQIjtzOjE6IkEiO3M6NDoi8J2UhCI7czoxOiJBIjtzOjQ6IvCdlLgiO3M6MToiQSI7czo0OiLwnZWsIjtzOjE6IkEiO3M6NDoi8J2WoCI7czoxOiJBIjtzOjQ6IvCdl5QiO3M6MToiQSI7czo0OiLwnZiIIjtzOjE6IkEiO3M6NDoi8J2YvCI7czoxOiJBIjtzOjQ6IvCdmbAiO3M6MToiQSI7czoyOiLOkSI7czoxOiJBIjtzOjQ6IvCdmqgiO3M6MToiQSI7czo0OiLwnZuiIjtzOjE6IkEiO3M6NDoi8J2cnCI7czoxOiJBIjtzOjQ6IvCdnZYiO3M6MToiQSI7czo0OiLwnZ6QIjtzOjE6IkEiO3M6Mjoi0JAiO3M6MToiQSI7czozOiLhjqoiO3M6MToiQSI7czozOiLhl4UiO3M6MToiQSI7czozOiLqk64iO3M6MToiQSI7czo0OiLwlr2AIjtzOjE6IkEiO3M6NDoi8JCKoCI7czoxOiJBIjtzOjI6IsinIjtzOjE6IuUiO3M6MjoiyKYiO3M6MToixSI7czo0OiLwnZCbIjtzOjE6ImIiO3M6NDoi8J2RjyI7czoxOiJiIjtzOjQ6IvCdkoMiO3M6MToiYiI7czo0OiLwnZK3IjtzOjE6ImIiO3M6NDoi8J2TqyI7czoxOiJiIjtzOjQ6IvCdlJ8iO3M6MToiYiI7czo0OiLwnZWTIjtzOjE6ImIiO3M6NDoi8J2WhyI7czoxOiJiIjtzOjQ6IvCdlrsiO3M6MToiYiI7czo0OiLwnZevIjtzOjE6ImIiO3M6NDoi8J2YoyI7czoxOiJiIjtzOjQ6IvCdmZciO3M6MToiYiI7czo0OiLwnZqLIjtzOjE6ImIiO3M6MjoixoQiO3M6MToiYiI7czoyOiLQrCI7czoxOiJiIjtzOjM6IuGPjyI7czoxOiJiIjtzOjM6IuGRsiI7czoxOiJiIjtzOjM6IuGWryI7czoxOiJiIjtzOjM6Iu+8oiI7czoxOiJCIjtzOjM6IuKErCI7czoxOiJCIjtzOjQ6IvCdkIEiO3M6MToiQiI7czo0OiLwnZC1IjtzOjE6IkIiO3M6NDoi8J2RqSI7czoxOiJCIjtzOjQ6IvCdk5EiO3M6MToiQiI7czo0OiLwnZSFIjtzOjE6IkIiO3M6NDoi8J2UuSI7czoxOiJCIjtzOjQ6IvCdla0iO3M6MToiQiI7czo0OiLwnZahIjtzOjE6IkIiO3M6NDoi8J2XlSI7czoxOiJCIjtzOjQ6IvCdmIkiO3M6MToiQiI7czo0OiLwnZi9IjtzOjE6IkIiO3M6NDoi8J2ZsSI7czoxOiJCIjtzOjM6IuqetCI7czoxOiJCIjtzOjI6Is6SIjtzOjE6IkIiO3M6NDoi8J2aqSI7czoxOiJCIjtzOjQ6IvCdm6MiO3M6MToiQiI7czo0OiLwnZydIjtzOjE6IkIiO3M6NDoi8J2dlyI7czoxOiJCIjtzOjQ6IvCdnpEiO3M6MToiQiI7czoyOiLQkiI7czoxOiJCIjtzOjM6IuGPtCI7czoxOiJCIjtzOjM6IuGXtyI7czoxOiJCIjtzOjM6IuqTkCI7czoxOiJCIjtzOjQ6IvCQioIiO3M6MToiQiI7czo0OiLwkIqhIjtzOjE6IkIiO3M6NDoi8JCMgSI7czoxOiJCIjtzOjM6Iu+9gyI7czoxOiJjIjtzOjM6IuKFvSI7czoxOiJjIjtzOjQ6IvCdkJwiO3M6MToiYyI7czo0OiLwnZGQIjtzOjE6ImMiO3M6NDoi8J2ShCI7czoxOiJjIjtzOjQ6IvCdkrgiO3M6MToiYyI7czo0OiLwnZOsIjtzOjE6ImMiO3M6NDoi8J2UoCI7czoxOiJjIjtzOjQ6IvCdlZQiO3M6MToiYyI7czo0OiLwnZaIIjtzOjE6ImMiO3M6NDoi8J2WvCI7czoxOiJjIjtzOjQ6IvCdl7AiO3M6MToiYyI7czo0OiLwnZikIjtzOjE6ImMiO3M6NDoi8J2ZmCI7czoxOiJjIjtzOjQ6IvCdmowiO3M6MToiYyI7czozOiLhtIQiO3M6MToiYyI7czoyOiLPsiI7czoxOiJjIjtzOjM6IuKypSI7czoxOiJjIjtzOjI6ItGBIjtzOjE6ImMiO3M6Mzoi6q6vIjtzOjE6ImMiO3M6NDoi8JCQvSI7czoxOiJjIjtzOjQ6IvCfnYwiO3M6MToiQyI7czo0OiLwkaOyIjtzOjE6IkMiO3M6NDoi8JGjqSI7czoxOiJDIjtzOjM6Iu+8oyI7czoxOiJDIjtzOjM6IuKFrSI7czoxOiJDIjtzOjM6IuKEgiI7czoxOiJDIjtzOjM6IuKErSI7czoxOiJDIjtzOjQ6IvCdkIIiO3M6MToiQyI7czo0OiLwnZC2IjtzOjE6IkMiO3M6NDoi8J2RqiI7czoxOiJDIjtzOjQ6IvCdkp4iO3M6MToiQyI7czo0OiLwnZOSIjtzOjE6IkMiO3M6NDoi8J2VriI7czoxOiJDIjtzOjQ6IvCdlqIiO3M6MToiQyI7czo0OiLwnZeWIjtzOjE6IkMiO3M6NDoi8J2YiiI7czoxOiJDIjtzOjQ6IvCdmL4iO3M6MToiQyI7czo0OiLwnZmyIjtzOjE6IkMiO3M6Mjoiz7kiO3M6MToiQyI7czozOiLisqQiO3M6MToiQyI7czoyOiLQoSI7czoxOiJDIjtzOjM6IuGPnyI7czoxOiJDIjtzOjM6IuqTmiI7czoxOiJDIjtzOjQ6IvCQiqIiO3M6MToiQyI7czo0OiLwkIyCIjtzOjE6IkMiO3M6NDoi8JCQlSI7czoxOiJDIjtzOjQ6IvCQlJwiO3M6MToiQyI7czozOiLihb4iO3M6MToiZCI7czozOiLihYYiO3M6MToiZCI7czo0OiLwnZCdIjtzOjE6ImQiO3M6NDoi8J2RkSI7czoxOiJkIjtzOjQ6IvCdkoUiO3M6MToiZCI7czo0OiLwnZK5IjtzOjE6ImQiO3M6NDoi8J2TrSI7czoxOiJkIjtzOjQ6IvCdlKEiO3M6MToiZCI7czo0OiLwnZWVIjtzOjE6ImQiO3M6NDoi8J2WiSI7czoxOiJkIjtzOjQ6IvCdlr0iO3M6MToiZCI7czo0OiLwnZexIjtzOjE6ImQiO3M6NDoi8J2YpSI7czoxOiJkIjtzOjQ6IvCdmZkiO3M6MToiZCI7czo0OiLwnZqNIjtzOjE6ImQiO3M6Mjoi1IEiO3M6MToiZCI7czozOiLhj6ciO3M6MToiZCI7czozOiLhka8iO3M6MToiZCI7czozOiLqk5IiO3M6MToiZCI7czozOiLiha4iO3M6MToiRCI7czozOiLihYUiO3M6MToiRCI7czo0OiLwnZCDIjtzOjE6IkQiO3M6NDoi8J2QtyI7czoxOiJEIjtzOjQ6IvCdkasiO3M6MToiRCI7czo0OiLwnZKfIjtzOjE6IkQiO3M6NDoi8J2TkyI7czoxOiJEIjtzOjQ6IvCdlIciO3M6MToiRCI7czo0OiLwnZS7IjtzOjE6IkQiO3M6NDoi8J2VryI7czoxOiJEIjtzOjQ6IvCdlqMiO3M6MToiRCI7czo0OiLwnZeXIjtzOjE6IkQiO3M6NDoi8J2YiyI7czoxOiJEIjtzOjQ6IvCdmL8iO3M6MToiRCI7czo0OiLwnZmzIjtzOjE6IkQiO3M6Mzoi4Y6gIjtzOjE6IkQiO3M6Mzoi4ZeeIjtzOjE6IkQiO3M6Mzoi4ZeqIjtzOjE6IkQiO3M6Mzoi6pOTIjtzOjE6IkQiO3M6Mzoi4oSuIjtzOjE6ImUiO3M6Mzoi772FIjtzOjE6ImUiO3M6Mzoi4oSvIjtzOjE6ImUiO3M6Mzoi4oWHIjtzOjE6ImUiO3M6NDoi8J2QniI7czoxOiJlIjtzOjQ6IvCdkZIiO3M6MToiZSI7czo0OiLwnZKGIjtzOjE6ImUiO3M6NDoi8J2TriI7czoxOiJlIjtzOjQ6IvCdlKIiO3M6MToiZSI7czo0OiLwnZWWIjtzOjE6ImUiO3M6NDoi8J2WiiI7czoxOiJlIjtzOjQ6IvCdlr4iO3M6MToiZSI7czo0OiLwnZeyIjtzOjE6ImUiO3M6NDoi8J2YpiI7czoxOiJlIjtzOjQ6IvCdmZoiO3M6MToiZSI7czo0OiLwnZqOIjtzOjE6ImUiO3M6Mzoi6qyyIjtzOjE6ImUiO3M6Mjoi0LUiO3M6MToiZSI7czoyOiLSvSI7czoxOiJlIjtzOjM6IuKLvyI7czoxOiJFIjtzOjM6Iu+8pSI7czoxOiJFIjtzOjM6IuKEsCI7czoxOiJFIjtzOjQ6IvCdkIQiO3M6MToiRSI7czo0OiLwnZC4IjtzOjE6IkUiO3M6NDoi8J2RrCI7czoxOiJFIjtzOjQ6IvCdk5QiO3M6MToiRSI7czo0OiLwnZSIIjtzOjE6IkUiO3M6NDoi8J2UvCI7czoxOiJFIjtzOjQ6IvCdlbAiO3M6MToiRSI7czo0OiLwnZakIjtzOjE6IkUiO3M6NDoi8J2XmCI7czoxOiJFIjtzOjQ6IvCdmIwiO3M6MToiRSI7czo0OiLwnZmAIjtzOjE6IkUiO3M6NDoi8J2ZtCI7czoxOiJFIjtzOjI6Is6VIjtzOjE6IkUiO3M6NDoi8J2arCI7czoxOiJFIjtzOjQ6IvCdm6YiO3M6MToiRSI7czo0OiLwnZygIjtzOjE6IkUiO3M6NDoi8J2dmiI7czoxOiJFIjtzOjQ6IvCdnpQiO3M6MToiRSI7czoyOiLQlSI7czoxOiJFIjtzOjM6IuK0uSI7czoxOiJFIjtzOjM6IuGOrCI7czoxOiJFIjtzOjM6IuqTsCI7czoxOiJFIjtzOjQ6IvCRoqYiO3M6MToiRSI7czo0OiLwkaKuIjtzOjE6IkUiO3M6NDoi8JCKhiI7czoxOiJFIjtzOjQ6IvCdkJ8iO3M6MToiZiI7czo0OiLwnZGTIjtzOjE6ImYiO3M6NDoi8J2ShyI7czoxOiJmIjtzOjQ6IvCdkrsiO3M6MToiZiI7czo0OiLwnZOvIjtzOjE6ImYiO3M6NDoi8J2UoyI7czoxOiJmIjtzOjQ6IvCdlZciO3M6MToiZiI7czo0OiLwnZaLIjtzOjE6ImYiO3M6NDoi8J2WvyI7czoxOiJmIjtzOjQ6IvCdl7MiO3M6MToiZiI7czo0OiLwnZinIjtzOjE6ImYiO3M6NDoi8J2ZmyI7czoxOiJmIjtzOjQ6IvCdmo8iO3M6MToiZiI7czozOiLqrLUiO3M6MToiZiI7czozOiLqnpkiO3M6MToiZiI7czoyOiLFvyI7czoxOiJmIjtzOjM6IuG6nSI7czoxOiJmIjtzOjI6ItaEIjtzOjE6ImYiO3M6NDoi8J2IkyI7czoxOiJGIjtzOjM6IuKEsSI7czoxOiJGIjtzOjQ6IvCdkIUiO3M6MToiRiI7czo0OiLwnZC5IjtzOjE6IkYiO3M6NDoi8J2RrSI7czoxOiJGIjtzOjQ6IvCdk5UiO3M6MToiRiI7czo0OiLwnZSJIjtzOjE6IkYiO3M6NDoi8J2UvSI7czoxOiJGIjtzOjQ6IvCdlbEiO3M6MToiRiI7czo0OiLwnZalIjtzOjE6IkYiO3M6NDoi8J2XmSI7czoxOiJGIjtzOjQ6IvCdmI0iO3M6MToiRiI7czo0OiLwnZmBIjtzOjE6IkYiO3M6NDoi8J2ZtSI7czoxOiJGIjtzOjM6IuqemCI7czoxOiJGIjtzOjI6Is+cIjtzOjE6IkYiO3M6NDoi8J2fiiI7czoxOiJGIjtzOjM6IuGWtCI7czoxOiJGIjtzOjM6IuqTnSI7czoxOiJGIjtzOjQ6IvCRo4IiO3M6MToiRiI7czo0OiLwkaKiIjtzOjE6IkYiO3M6NDoi8JCKhyI7czoxOiJGIjtzOjQ6IvCQiqUiO3M6MToiRiI7czo0OiLwkJSlIjtzOjE6IkYiO3M6Mzoi772HIjtzOjE6ImciO3M6Mzoi4oSKIjtzOjE6ImciO3M6NDoi8J2QoCI7czoxOiJnIjtzOjQ6IvCdkZQiO3M6MToiZyI7czo0OiLwnZKIIjtzOjE6ImciO3M6NDoi8J2TsCI7czoxOiJnIjtzOjQ6IvCdlKQiO3M6MToiZyI7czo0OiLwnZWYIjtzOjE6ImciO3M6NDoi8J2WjCI7czoxOiJnIjtzOjQ6IvCdl4AiO3M6MToiZyI7czo0OiLwnZe0IjtzOjE6ImciO3M6NDoi8J2YqCI7czoxOiJnIjtzOjQ6IvCdmZwiO3M6MToiZyI7czo0OiLwnZqQIjtzOjE6ImciO3M6MjoiyaEiO3M6MToiZyI7czozOiLhtoMiO3M6MToiZyI7czoyOiLGjSI7czoxOiJnIjtzOjI6ItaBIjtzOjE6ImciO3M6NDoi8J2QhiI7czoxOiJHIjtzOjQ6IvCdkLoiO3M6MToiRyI7czo0OiLwnZGuIjtzOjE6IkciO3M6NDoi8J2SoiI7czoxOiJHIjtzOjQ6IvCdk5YiO3M6MToiRyI7czo0OiLwnZSKIjtzOjE6IkciO3M6NDoi8J2UviI7czoxOiJHIjtzOjQ6IvCdlbIiO3M6MToiRyI7czo0OiLwnZamIjtzOjE6IkciO3M6NDoi8J2XmiI7czoxOiJHIjtzOjQ6IvCdmI4iO3M6MToiRyI7czo0OiLwnZmCIjtzOjE6IkciO3M6NDoi8J2ZtiI7czoxOiJHIjtzOjI6ItSMIjtzOjE6IkciO3M6Mzoi4Y+AIjtzOjE6IkciO3M6Mzoi4Y+zIjtzOjE6IkciO3M6Mzoi6pOWIjtzOjE6IkciO3M6Mzoi772IIjtzOjE6ImgiO3M6Mzoi4oSOIjtzOjE6ImgiO3M6NDoi8J2QoSI7czoxOiJoIjtzOjQ6IvCdkokiO3M6MToiaCI7czo0OiLwnZK9IjtzOjE6ImgiO3M6NDoi8J2TsSI7czoxOiJoIjtzOjQ6IvCdlKUiO3M6MToiaCI7czo0OiLwnZWZIjtzOjE6ImgiO3M6NDoi8J2WjSI7czoxOiJoIjtzOjQ6IvCdl4EiO3M6MToiaCI7czo0OiLwnZe1IjtzOjE6ImgiO3M6NDoi8J2YqSI7czoxOiJoIjtzOjQ6IvCdmZ0iO3M6MToiaCI7czo0OiLwnZqRIjtzOjE6ImgiO3M6Mjoi0rsiO3M6MToiaCI7czoyOiLVsCI7czoxOiJoIjtzOjM6IuGPgiI7czoxOiJoIjtzOjM6Iu+8qCI7czoxOiJIIjtzOjM6IuKEiyI7czoxOiJIIjtzOjM6IuKEjCI7czoxOiJIIjtzOjM6IuKEjSI7czoxOiJIIjtzOjQ6IvCdkIciO3M6MToiSCI7czo0OiLwnZC7IjtzOjE6IkgiO3M6NDoi8J2RryI7czoxOiJIIjtzOjQ6IvCdk5ciO3M6MToiSCI7czo0OiLwnZWzIjtzOjE6IkgiO3M6NDoi8J2WpyI7czoxOiJIIjtzOjQ6IvCdl5siO3M6MToiSCI7czo0OiLwnZiPIjtzOjE6IkgiO3M6NDoi8J2ZgyI7czoxOiJIIjtzOjQ6IvCdmbciO3M6MToiSCI7czoyOiLOlyI7czoxOiJIIjtzOjQ6IvCdmq4iO3M6MToiSCI7czo0OiLwnZuoIjtzOjE6IkgiO3M6NDoi8J2coiI7czoxOiJIIjtzOjQ6IvCdnZwiO3M6MToiSCI7czo0OiLwnZ6WIjtzOjE6IkgiO3M6Mzoi4rKOIjtzOjE6IkgiO3M6Mjoi0J0iO3M6MToiSCI7czozOiLhjrsiO3M6MToiSCI7czozOiLhlbwiO3M6MToiSCI7czozOiLqk6ciO3M6MToiSCI7czo0OiLwkIuPIjtzOjE6IkgiO3M6Mjoiy5siO3M6MToiaSI7czozOiLijbMiO3M6MToiaSI7czozOiLvvYkiO3M6MToiaSI7czozOiLihbAiO3M6MToiaSI7czozOiLihLkiO3M6MToiaSI7czozOiLihYgiO3M6MToiaSI7czo0OiLwnZCiIjtzOjE6ImkiO3M6NDoi8J2RliI7czoxOiJpIjtzOjQ6IvCdkooiO3M6MToiaSI7czo0OiLwnZK+IjtzOjE6ImkiO3M6NDoi8J2TsiI7czoxOiJpIjtzOjQ6IvCdlKYiO3M6MToiaSI7czo0OiLwnZWaIjtzOjE6ImkiO3M6NDoi8J2WjiI7czoxOiJpIjtzOjQ6IvCdl4IiO3M6MToiaSI7czo0OiLwnZe2IjtzOjE6ImkiO3M6NDoi8J2YqiI7czoxOiJpIjtzOjQ6IvCdmZ4iO3M6MToiaSI7czo0OiLwnZqSIjtzOjE6ImkiO3M6MjoixLEiO3M6MToiaSI7czo0OiLwnZqkIjtzOjE6ImkiO3M6MjoiyaoiO3M6MToiaSI7czoyOiLJqSI7czoxOiJpIjtzOjI6Is65IjtzOjE6ImkiO3M6Mzoi4b6+IjtzOjE6ImkiO3M6MjoizboiO3M6MToiaSI7czo0OiLwnZuKIjtzOjE6ImkiO3M6NDoi8J2chCI7czoxOiJpIjtzOjQ6IvCdnL4iO3M6MToiaSI7czo0OiLwnZ24IjtzOjE6ImkiO3M6NDoi8J2esiI7czoxOiJpIjtzOjI6ItGWIjtzOjE6ImkiO3M6Mzoi6pmHIjtzOjE6ImkiO3M6Mjoi048iO3M6MToiaSI7czozOiLqrbUiO3M6MToiaSI7czozOiLhjqUiO3M6MToiaSI7czo0OiLwkaODIjtzOjE6ImkiO3M6Mzoi772KIjtzOjE6ImoiO3M6Mzoi4oWJIjtzOjE6ImoiO3M6NDoi8J2QoyI7czoxOiJqIjtzOjQ6IvCdkZciO3M6MToiaiI7czo0OiLwnZKLIjtzOjE6ImoiO3M6NDoi8J2SvyI7czoxOiJqIjtzOjQ6IvCdk7MiO3M6MToiaiI7czo0OiLwnZSnIjtzOjE6ImoiO3M6NDoi8J2VmyI7czoxOiJqIjtzOjQ6IvCdlo8iO3M6MToiaiI7czo0OiLwnZeDIjtzOjE6ImoiO3M6NDoi8J2XtyI7czoxOiJqIjtzOjQ6IvCdmKsiO3M6MToiaiI7czo0OiLwnZmfIjtzOjE6ImoiO3M6NDoi8J2akyI7czoxOiJqIjtzOjI6Is+zIjtzOjE6ImoiO3M6Mjoi0ZgiO3M6MToiaiI7czozOiLvvKoiO3M6MToiSiI7czo0OiLwnZCJIjtzOjE6IkoiO3M6NDoi8J2QvSI7czoxOiJKIjtzOjQ6IvCdkbEiO3M6MToiSiI7czo0OiLwnZKlIjtzOjE6IkoiO3M6NDoi8J2TmSI7czoxOiJKIjtzOjQ6IvCdlI0iO3M6MToiSiI7czo0OiLwnZWBIjtzOjE6IkoiO3M6NDoi8J2VtSI7czoxOiJKIjtzOjQ6IvCdlqkiO3M6MToiSiI7czo0OiLwnZedIjtzOjE6IkoiO3M6NDoi8J2YkSI7czoxOiJKIjtzOjQ6IvCdmYUiO3M6MToiSiI7czo0OiLwnZm5IjtzOjE6IkoiO3M6Mzoi6p6yIjtzOjE6IkoiO3M6Mjoizb8iO3M6MToiSiI7czoyOiLQiCI7czoxOiJKIjtzOjM6IuGOqyI7czoxOiJKIjtzOjM6IuGSjSI7czoxOiJKIjtzOjM6IuqTmSI7czoxOiJKIjtzOjQ6IvCdkKQiO3M6MToiayI7czo0OiLwnZGYIjtzOjE6ImsiO3M6NDoi8J2SjCI7czoxOiJrIjtzOjQ6IvCdk4AiO3M6MToiayI7czo0OiLwnZO0IjtzOjE6ImsiO3M6NDoi8J2UqCI7czoxOiJrIjtzOjQ6IvCdlZwiO3M6MToiayI7czo0OiLwnZaQIjtzOjE6ImsiO3M6NDoi8J2XhCI7czoxOiJrIjtzOjQ6IvCdl7giO3M6MToiayI7czo0OiLwnZisIjtzOjE6ImsiO3M6NDoi8J2ZoCI7czoxOiJrIjtzOjQ6IvCdmpQiO3M6MToiayI7czozOiLihKoiO3M6MToiSyI7czozOiLvvKsiO3M6MToiSyI7czo0OiLwnZCKIjtzOjE6IksiO3M6NDoi8J2QviI7czoxOiJLIjtzOjQ6IvCdkbIiO3M6MToiSyI7czo0OiLwnZKmIjtzOjE6IksiO3M6NDoi8J2TmiI7czoxOiJLIjtzOjQ6IvCdlI4iO3M6MToiSyI7czo0OiLwnZWCIjtzOjE6IksiO3M6NDoi8J2VtiI7czoxOiJLIjtzOjQ6IvCdlqoiO3M6MToiSyI7czo0OiLwnZeeIjtzOjE6IksiO3M6NDoi8J2YkiI7czoxOiJLIjtzOjQ6IvCdmYYiO3M6MToiSyI7czo0OiLwnZm6IjtzOjE6IksiO3M6MjoizpoiO3M6MToiSyI7czo0OiLwnZqxIjtzOjE6IksiO3M6NDoi8J2bqyI7czoxOiJLIjtzOjQ6IvCdnKUiO3M6MToiSyI7czo0OiLwnZ2fIjtzOjE6IksiO3M6NDoi8J2emSI7czoxOiJLIjtzOjM6IuKylCI7czoxOiJLIjtzOjI6ItCaIjtzOjE6IksiO3M6Mzoi4Y+mIjtzOjE6IksiO3M6Mzoi4ZuVIjtzOjE6IksiO3M6Mzoi6pOXIjtzOjE6IksiO3M6NDoi8JCUmCI7czoxOiJLIjtzOjI6IteAIjtzOjE6ImwiO3M6MToifCI7czoxOiJsIjtzOjM6IuKIoyI7czoxOiJsIjtzOjM6IuKPvSI7czoxOiJsIjtzOjM6Iu+/qCI7czoxOiJsIjtpOjE7czoxOiJsIjtzOjI6ItmhIjtzOjE6ImwiO3M6Mjoi27EiO3M6MToibCI7czo0OiLwkIygIjtzOjE6ImwiO3M6NDoi8J6jhyI7czoxOiJsIjtzOjQ6IvCdn48iO3M6MToibCI7czo0OiLwnZ+ZIjtzOjE6ImwiO3M6NDoi8J2foyI7czoxOiJsIjtzOjQ6IvCdn60iO3M6MToibCI7czo0OiLwnZ+3IjtzOjE6ImwiO3M6MToiSSI7czoxOiJsIjtzOjM6Iu+8qSI7czoxOiJsIjtzOjM6IuKFoCI7czoxOiJsIjtzOjM6IuKEkCI7czoxOiJsIjtzOjM6IuKEkSI7czoxOiJsIjtzOjQ6IvCdkIgiO3M6MToibCI7czo0OiLwnZC8IjtzOjE6ImwiO3M6NDoi8J2RsCI7czoxOiJsIjtzOjQ6IvCdk5giO3M6MToibCI7czo0OiLwnZWAIjtzOjE6ImwiO3M6NDoi8J2VtCI7czoxOiJsIjtzOjQ6IvCdlqgiO3M6MToibCI7czo0OiLwnZecIjtzOjE6ImwiO3M6NDoi8J2YkCI7czoxOiJsIjtzOjQ6IvCdmYQiO3M6MToibCI7czo0OiLwnZm4IjtzOjE6ImwiO3M6MjoixpYiO3M6MToibCI7czozOiLvvYwiO3M6MToibCI7czozOiLihbwiO3M6MToibCI7czozOiLihJMiO3M6MToibCI7czo0OiLwnZClIjtzOjE6ImwiO3M6NDoi8J2RmSI7czoxOiJsIjtzOjQ6IvCdko0iO3M6MToibCI7czo0OiLwnZOBIjtzOjE6ImwiO3M6NDoi8J2TtSI7czoxOiJsIjtzOjQ6IvCdlKkiO3M6MToibCI7czo0OiLwnZWdIjtzOjE6ImwiO3M6NDoi8J2WkSI7czoxOiJsIjtzOjQ6IvCdl4UiO3M6MToibCI7czo0OiLwnZe5IjtzOjE6ImwiO3M6NDoi8J2YrSI7czoxOiJsIjtzOjQ6IvCdmaEiO3M6MToibCI7czo0OiLwnZqVIjtzOjE6ImwiO3M6Mjoix4AiO3M6MToibCI7czoyOiLOmSI7czoxOiJsIjtzOjQ6IvCdmrAiO3M6MToibCI7czo0OiLwnZuqIjtzOjE6ImwiO3M6NDoi8J2cpCI7czoxOiJsIjtzOjQ6IvCdnZ4iO3M6MToibCI7czo0OiLwnZ6YIjtzOjE6ImwiO3M6Mzoi4rKSIjtzOjE6ImwiO3M6Mjoi0IYiO3M6MToibCI7czoyOiLTgCI7czoxOiJsIjtzOjI6IteVIjtzOjE6ImwiO3M6Mjoi158iO3M6MToibCI7czoyOiLYpyI7czoxOiJsIjtzOjQ6IvCeuIAiO3M6MToibCI7czo0OiLwnrqAIjtzOjE6ImwiO3M6Mzoi77qOIjtzOjE6ImwiO3M6Mzoi77qNIjtzOjE6ImwiO3M6Mjoi34oiO3M6MToibCI7czozOiLitY8iO3M6MToibCI7czozOiLhm4EiO3M6MToibCI7czozOiLqk7IiO3M6MToibCI7czo0OiLwlryoIjtzOjE6ImwiO3M6NDoi8JCKiiI7czoxOiJsIjtzOjQ6IvCQjIkiO3M6MToibCI7czo0OiLwnYiqIjtzOjE6IkwiO3M6Mzoi4oWsIjtzOjE6IkwiO3M6Mzoi4oSSIjtzOjE6IkwiO3M6NDoi8J2QiyI7czoxOiJMIjtzOjQ6IvCdkL8iO3M6MToiTCI7czo0OiLwnZGzIjtzOjE6IkwiO3M6NDoi8J2TmyI7czoxOiJMIjtzOjQ6IvCdlI8iO3M6MToiTCI7czo0OiLwnZWDIjtzOjE6IkwiO3M6NDoi8J2VtyI7czoxOiJMIjtzOjQ6IvCdlqsiO3M6MToiTCI7czo0OiLwnZefIjtzOjE6IkwiO3M6NDoi8J2YkyI7czoxOiJMIjtzOjQ6IvCdmYciO3M6MToiTCI7czo0OiLwnZm7IjtzOjE6IkwiO3M6Mzoi4rOQIjtzOjE6IkwiO3M6Mzoi4Y+eIjtzOjE6IkwiO3M6Mzoi4ZKqIjtzOjE6IkwiO3M6Mzoi6pOhIjtzOjE6IkwiO3M6NDoi8Ja8liI7czoxOiJMIjtzOjQ6IvCRoqMiO3M6MToiTCI7czo0OiLwkaKyIjtzOjE6IkwiO3M6NDoi8JCQmyI7czoxOiJMIjtzOjQ6IvCQlKYiO3M6MToiTCI7czozOiLvvK0iO3M6MToiTSI7czozOiLiha8iO3M6MToiTSI7czozOiLihLMiO3M6MToiTSI7czo0OiLwnZCMIjtzOjE6Ik0iO3M6NDoi8J2RgCI7czoxOiJNIjtzOjQ6IvCdkbQiO3M6MToiTSI7czo0OiLwnZOcIjtzOjE6Ik0iO3M6NDoi8J2UkCI7czoxOiJNIjtzOjQ6IvCdlYQiO3M6MToiTSI7czo0OiLwnZW4IjtzOjE6Ik0iO3M6NDoi8J2WrCI7czoxOiJNIjtzOjQ6IvCdl6AiO3M6MToiTSI7czo0OiLwnZiUIjtzOjE6Ik0iO3M6NDoi8J2ZiCI7czoxOiJNIjtzOjQ6IvCdmbwiO3M6MToiTSI7czoyOiLOnCI7czoxOiJNIjtzOjQ6IvCdmrMiO3M6MToiTSI7czo0OiLwnZutIjtzOjE6Ik0iO3M6NDoi8J2cpyI7czoxOiJNIjtzOjQ6IvCdnaEiO3M6MToiTSI7czo0OiLwnZ6bIjtzOjE6Ik0iO3M6Mjoiz7oiO3M6MToiTSI7czozOiLispgiO3M6MToiTSI7czoyOiLQnCI7czoxOiJNIjtzOjM6IuGOtyI7czoxOiJNIjtzOjM6IuGXsCI7czoxOiJNIjtzOjM6IuGbliI7czoxOiJNIjtzOjM6IuqTnyI7czoxOiJNIjtzOjQ6IvCQirAiO3M6MToiTSI7czo0OiLwkIyRIjtzOjE6Ik0iO3M6NDoi8J2QpyI7czoxOiJuIjtzOjQ6IvCdkZsiO3M6MToibiI7czo0OiLwnZKPIjtzOjE6Im4iO3M6NDoi8J2TgyI7czoxOiJuIjtzOjQ6IvCdk7ciO3M6MToibiI7czo0OiLwnZSrIjtzOjE6Im4iO3M6NDoi8J2VnyI7czoxOiJuIjtzOjQ6IvCdlpMiO3M6MToibiI7czo0OiLwnZeHIjtzOjE6Im4iO3M6NDoi8J2XuyI7czoxOiJuIjtzOjQ6IvCdmK8iO3M6MToibiI7czo0OiLwnZmjIjtzOjE6Im4iO3M6NDoi8J2alyI7czoxOiJuIjtzOjI6ItW4IjtzOjE6Im4iO3M6Mjoi1bwiO3M6MToibiI7czozOiLvvK4iO3M6MToiTiI7czozOiLihJUiO3M6MToiTiI7czo0OiLwnZCNIjtzOjE6Ik4iO3M6NDoi8J2RgSI7czoxOiJOIjtzOjQ6IvCdkbUiO3M6MToiTiI7czo0OiLwnZKpIjtzOjE6Ik4iO3M6NDoi8J2TnSI7czoxOiJOIjtzOjQ6IvCdlJEiO3M6MToiTiI7czo0OiLwnZW5IjtzOjE6Ik4iO3M6NDoi8J2WrSI7czoxOiJOIjtzOjQ6IvCdl6EiO3M6MToiTiI7czo0OiLwnZiVIjtzOjE6Ik4iO3M6NDoi8J2ZiSI7czoxOiJOIjtzOjQ6IvCdmb0iO3M6MToiTiI7czoyOiLOnSI7czoxOiJOIjtzOjQ6IvCdmrQiO3M6MToiTiI7czo0OiLwnZuuIjtzOjE6Ik4iO3M6NDoi8J2cqCI7czoxOiJOIjtzOjQ6IvCdnaIiO3M6MToiTiI7czo0OiLwnZ6cIjtzOjE6Ik4iO3M6Mzoi4rKaIjtzOjE6Ik4iO3M6Mzoi6pOgIjtzOjE6Ik4iO3M6NDoi8JCUkyI7czoxOiJOIjtzOjM6IuCwgiI7czoxOiJvIjtzOjM6IuCygiI7czoxOiJvIjtzOjM6IuC0giI7czoxOiJvIjtzOjM6IuC2giI7czoxOiJvIjtzOjM6IuClpiI7czoxOiJvIjtzOjM6IuCppiI7czoxOiJvIjtzOjM6IuCrpiI7czoxOiJvIjtzOjM6IuCvpiI7czoxOiJvIjtzOjM6IuCxpiI7czoxOiJvIjtzOjM6IuCzpiI7czoxOiJvIjtzOjM6IuC1piI7czoxOiJvIjtzOjM6IuC5kCI7czoxOiJvIjtzOjM6IuC7kCI7czoxOiJvIjtzOjM6IuGBgCI7czoxOiJvIjtzOjI6ItmlIjtzOjE6Im8iO3M6Mjoi27UiO3M6MToibyI7czozOiLvvY8iO3M6MToibyI7czozOiLihLQiO3M6MToibyI7czo0OiLwnZCoIjtzOjE6Im8iO3M6NDoi8J2RnCI7czoxOiJvIjtzOjQ6IvCdkpAiO3M6MToibyI7czo0OiLwnZO4IjtzOjE6Im8iO3M6NDoi8J2UrCI7czoxOiJvIjtzOjQ6IvCdlaAiO3M6MToibyI7czo0OiLwnZaUIjtzOjE6Im8iO3M6NDoi8J2XiCI7czoxOiJvIjtzOjQ6IvCdl7wiO3M6MToibyI7czo0OiLwnZiwIjtzOjE6Im8iO3M6NDoi8J2ZpCI7czoxOiJvIjtzOjQ6IvCdmpgiO3M6MToibyI7czozOiLhtI8iO3M6MToibyI7czozOiLhtJEiO3M6MToibyI7czozOiLqrL0iO3M6MToibyI7czoyOiLOvyI7czoxOiJvIjtzOjQ6IvCdm5AiO3M6MToibyI7czo0OiLwnZyKIjtzOjE6Im8iO3M6NDoi8J2dhCI7czoxOiJvIjtzOjQ6IvCdnb4iO3M6MToibyI7czo0OiLwnZ64IjtzOjE6Im8iO3M6Mjoiz4MiO3M6MToibyI7czo0OiLwnZuUIjtzOjE6Im8iO3M6NDoi8J2cjiI7czoxOiJvIjtzOjQ6IvCdnYgiO3M6MToibyI7czo0OiLwnZ6CIjtzOjE6Im8iO3M6NDoi8J2evCI7czoxOiJvIjtzOjM6IuKynyI7czoxOiJvIjtzOjI6ItC+IjtzOjE6Im8iO3M6Mzoi4YO/IjtzOjE6Im8iO3M6Mjoi1oUiO3M6MToibyI7czoyOiLXoSI7czoxOiJvIjtzOjI6ItmHIjtzOjE6Im8iO3M6NDoi8J64pCI7czoxOiJvIjtzOjQ6IvCeuaQiO3M6MToibyI7czo0OiLwnrqEIjtzOjE6Im8iO3M6Mzoi77urIjtzOjE6Im8iO3M6Mzoi77usIjtzOjE6Im8iO3M6Mzoi77uqIjtzOjE6Im8iO3M6Mzoi77upIjtzOjE6Im8iO3M6Mjoi2r4iO3M6MToibyI7czozOiLvrqwiO3M6MToibyI7czozOiLvrq0iO3M6MToibyI7czozOiLvrqsiO3M6MToibyI7czozOiLvrqoiO3M6MToibyI7czoyOiLbgSI7czoxOiJvIjtzOjM6Iu+uqCI7czoxOiJvIjtzOjM6Iu+uqSI7czoxOiJvIjtzOjM6Iu+upyI7czoxOiJvIjtzOjM6Iu+upiI7czoxOiJvIjtzOjI6ItuVIjtzOjE6Im8iO3M6Mzoi4LSgIjtzOjE6Im8iO3M6Mzoi4YCdIjtzOjE6Im8iO3M6NDoi8JCTqiI7czoxOiJvIjtzOjQ6IvCRo4giO3M6MToibyI7czo0OiLwkaOXIjtzOjE6Im8iO3M6NDoi8JCQrCI7czoxOiJvIjtpOjA7czoxOiJPIjtzOjI6It+AIjtzOjE6Ik8iO3M6Mzoi4KemIjtzOjE6Ik8iO3M6Mzoi4K2mIjtzOjE6Ik8iO3M6Mzoi44CHIjtzOjE6Ik8iO3M6NDoi8JGTkCI7czoxOiJPIjtzOjQ6IvCRo6AiO3M6MToiTyI7czo0OiLwnZ+OIjtzOjE6Ik8iO3M6NDoi8J2fmCI7czoxOiJPIjtzOjQ6IvCdn6IiO3M6MToiTyI7czo0OiLwnZ+sIjtzOjE6Ik8iO3M6NDoi8J2ftiI7czoxOiJPIjtzOjM6Iu+8ryI7czoxOiJPIjtzOjQ6IvCdkI4iO3M6MToiTyI7czo0OiLwnZGCIjtzOjE6Ik8iO3M6NDoi8J2RtiI7czoxOiJPIjtzOjQ6IvCdkqoiO3M6MToiTyI7czo0OiLwnZOeIjtzOjE6Ik8iO3M6NDoi8J2UkiI7czoxOiJPIjtzOjQ6IvCdlYYiO3M6MToiTyI7czo0OiLwnZW6IjtzOjE6Ik8iO3M6NDoi8J2WriI7czoxOiJPIjtzOjQ6IvCdl6IiO3M6MToiTyI7czo0OiLwnZiWIjtzOjE6Ik8iO3M6NDoi8J2ZiiI7czoxOiJPIjtzOjQ6IvCdmb4iO3M6MToiTyI7czoyOiLOnyI7czoxOiJPIjtzOjQ6IvCdmrYiO3M6MToiTyI7czo0OiLwnZuwIjtzOjE6Ik8iO3M6NDoi8J2cqiI7czoxOiJPIjtzOjQ6IvCdnaQiO3M6MToiTyI7czo0OiLwnZ6eIjtzOjE6Ik8iO3M6Mzoi4rKeIjtzOjE6Ik8iO3M6Mjoi0J4iO3M6MToiTyI7czoyOiLVlSI7czoxOiJPIjtzOjM6IuK1lCI7czoxOiJPIjtzOjM6IuGLkCI7czoxOiJPIjtzOjM6IuCsoCI7czoxOiJPIjtzOjQ6IvCQk4IiO3M6MToiTyI7czozOiLqk7MiO3M6MToiTyI7czo0OiLwkaK1IjtzOjE6Ik8iO3M6NDoi8JCKkiI7czoxOiJPIjtzOjQ6IvCQiqsiO3M6MToiTyI7czo0OiLwkJCEIjtzOjE6Ik8iO3M6NDoi8JCUliI7czoxOiJPIjtzOjM6IuKBsCI7czoxOiK6IjtzOjM6IuG1kiI7czoxOiK6IjtzOjI6IsWQIjtzOjE6ItYiO3M6Mzoi4o20IjtzOjE6InAiO3M6Mzoi772QIjtzOjE6InAiO3M6NDoi8J2QqSI7czoxOiJwIjtzOjQ6IvCdkZ0iO3M6MToicCI7czo0OiLwnZKRIjtzOjE6InAiO3M6NDoi8J2ThSI7czoxOiJwIjtzOjQ6IvCdk7kiO3M6MToicCI7czo0OiLwnZStIjtzOjE6InAiO3M6NDoi8J2VoSI7czoxOiJwIjtzOjQ6IvCdlpUiO3M6MToicCI7czo0OiLwnZeJIjtzOjE6InAiO3M6NDoi8J2XvSI7czoxOiJwIjtzOjQ6IvCdmLEiO3M6MToicCI7czo0OiLwnZmlIjtzOjE6InAiO3M6NDoi8J2amSI7czoxOiJwIjtzOjI6Is+BIjtzOjE6InAiO3M6Mjoiz7EiO3M6MToicCI7czo0OiLwnZuSIjtzOjE6InAiO3M6NDoi8J2boCI7czoxOiJwIjtzOjQ6IvCdnIwiO3M6MToicCI7czo0OiLwnZyaIjtzOjE6InAiO3M6NDoi8J2dhiI7czoxOiJwIjtzOjQ6IvCdnZQiO3M6MToicCI7czo0OiLwnZ6AIjtzOjE6InAiO3M6NDoi8J2ejiI7czoxOiJwIjtzOjQ6IvCdnroiO3M6MToicCI7czo0OiLwnZ+IIjtzOjE6InAiO3M6Mzoi4rKjIjtzOjE6InAiO3M6Mjoi0YAiO3M6MToicCI7czozOiLvvLAiO3M6MToiUCI7czozOiLihJkiO3M6MToiUCI7czo0OiLwnZCPIjtzOjE6IlAiO3M6NDoi8J2RgyI7czoxOiJQIjtzOjQ6IvCdkbciO3M6MToiUCI7czo0OiLwnZKrIjtzOjE6IlAiO3M6NDoi8J2TnyI7czoxOiJQIjtzOjQ6IvCdlJMiO3M6MToiUCI7czo0OiLwnZW7IjtzOjE6IlAiO3M6NDoi8J2WryI7czoxOiJQIjtzOjQ6IvCdl6MiO3M6MToiUCI7czo0OiLwnZiXIjtzOjE6IlAiO3M6NDoi8J2ZiyI7czoxOiJQIjtzOjQ6IvCdmb8iO3M6MToiUCI7czoyOiLOoSI7czoxOiJQIjtzOjQ6IvCdmrgiO3M6MToiUCI7czo0OiLwnZuyIjtzOjE6IlAiO3M6NDoi8J2crCI7czoxOiJQIjtzOjQ6IvCdnaYiO3M6MToiUCI7czo0OiLwnZ6gIjtzOjE6IlAiO3M6Mzoi4rKiIjtzOjE6IlAiO3M6Mjoi0KAiO3M6MToiUCI7czozOiLhj6IiO3M6MToiUCI7czozOiLhka0iO3M6MToiUCI7czozOiLqk5EiO3M6MToiUCI7czo0OiLwkIqVIjtzOjE6IlAiO3M6NDoi8J2QqiI7czoxOiJxIjtzOjQ6IvCdkZ4iO3M6MToicSI7czo0OiLwnZKSIjtzOjE6InEiO3M6NDoi8J2ThiI7czoxOiJxIjtzOjQ6IvCdk7oiO3M6MToicSI7czo0OiLwnZSuIjtzOjE6InEiO3M6NDoi8J2VoiI7czoxOiJxIjtzOjQ6IvCdlpYiO3M6MToicSI7czo0OiLwnZeKIjtzOjE6InEiO3M6NDoi8J2XviI7czoxOiJxIjtzOjQ6IvCdmLIiO3M6MToicSI7czo0OiLwnZmmIjtzOjE6InEiO3M6NDoi8J2amiI7czoxOiJxIjtzOjI6ItSbIjtzOjE6InEiO3M6Mjoi1aMiO3M6MToicSI7czoyOiLVpiI7czoxOiJxIjtzOjM6IuKEmiI7czoxOiJRIjtzOjQ6IvCdkJAiO3M6MToiUSI7czo0OiLwnZGEIjtzOjE6IlEiO3M6NDoi8J2RuCI7czoxOiJRIjtzOjQ6IvCdkqwiO3M6MToiUSI7czo0OiLwnZOgIjtzOjE6IlEiO3M6NDoi8J2UlCI7czoxOiJRIjtzOjQ6IvCdlbwiO3M6MToiUSI7czo0OiLwnZawIjtzOjE6IlEiO3M6NDoi8J2XpCI7czoxOiJRIjtzOjQ6IvCdmJgiO3M6MToiUSI7czo0OiLwnZmMIjtzOjE6IlEiO3M6NDoi8J2agCI7czoxOiJRIjtzOjM6IuK1lSI7czoxOiJRIjtzOjQ6IvCdkKsiO3M6MToiciI7czo0OiLwnZGfIjtzOjE6InIiO3M6NDoi8J2SkyI7czoxOiJyIjtzOjQ6IvCdk4ciO3M6MToiciI7czo0OiLwnZO7IjtzOjE6InIiO3M6NDoi8J2UryI7czoxOiJyIjtzOjQ6IvCdlaMiO3M6MToiciI7czo0OiLwnZaXIjtzOjE6InIiO3M6NDoi8J2XiyI7czoxOiJyIjtzOjQ6IvCdl78iO3M6MToiciI7czo0OiLwnZizIjtzOjE6InIiO3M6NDoi8J2ZpyI7czoxOiJyIjtzOjQ6IvCdmpsiO3M6MToiciI7czozOiLqrYciO3M6MToiciI7czozOiLqrYgiO3M6MToiciI7czozOiLhtKYiO3M6MToiciI7czozOiLisoUiO3M6MToiciI7czoyOiLQsyI7czoxOiJyIjtzOjM6IuqugSI7czoxOiJyIjtzOjQ6IvCdiJYiO3M6MToiUiI7czozOiLihJsiO3M6MToiUiI7czozOiLihJwiO3M6MToiUiI7czozOiLihJ0iO3M6MToiUiI7czo0OiLwnZCRIjtzOjE6IlIiO3M6NDoi8J2RhSI7czoxOiJSIjtzOjQ6IvCdkbkiO3M6MToiUiI7czo0OiLwnZOhIjtzOjE6IlIiO3M6NDoi8J2VvSI7czoxOiJSIjtzOjQ6IvCdlrEiO3M6MToiUiI7czo0OiLwnZelIjtzOjE6IlIiO3M6NDoi8J2YmSI7czoxOiJSIjtzOjQ6IvCdmY0iO3M6MToiUiI7czo0OiLwnZqBIjtzOjE6IlIiO3M6MjoixqYiO3M6MToiUiI7czozOiLhjqEiO3M6MToiUiI7czozOiLhj5IiO3M6MToiUiI7czo0OiLwkJK0IjtzOjE6IlIiO3M6Mzoi4ZaHIjtzOjE6IlIiO3M6Mzoi6pOjIjtzOjE6IlIiO3M6NDoi8Ja8tSI7czoxOiJSIjtzOjM6Iu+9kyI7czoxOiJzIjtzOjQ6IvCdkKwiO3M6MToicyI7czo0OiLwnZGgIjtzOjE6InMiO3M6NDoi8J2SlCI7czoxOiJzIjtzOjQ6IvCdk4giO3M6MToicyI7czo0OiLwnZO8IjtzOjE6InMiO3M6NDoi8J2UsCI7czoxOiJzIjtzOjQ6IvCdlaQiO3M6MToicyI7czo0OiLwnZaYIjtzOjE6InMiO3M6NDoi8J2XjCI7czoxOiJzIjtzOjQ6IvCdmIAiO3M6MToicyI7czo0OiLwnZi0IjtzOjE6InMiO3M6NDoi8J2ZqCI7czoxOiJzIjtzOjQ6IvCdmpwiO3M6MToicyI7czozOiLqnLEiO3M6MToicyI7czoyOiLGvSI7czoxOiJzIjtzOjI6ItGVIjtzOjE6InMiO3M6Mzoi6q6qIjtzOjE6InMiO3M6NDoi8JGjgSI7czoxOiJzIjtzOjQ6IvCQkYgiO3M6MToicyI7czozOiLvvLMiO3M6MToiUyI7czo0OiLwnZCSIjtzOjE6IlMiO3M6NDoi8J2RhiI7czoxOiJTIjtzOjQ6IvCdkboiO3M6MToiUyI7czo0OiLwnZKuIjtzOjE6IlMiO3M6NDoi8J2ToiI7czoxOiJTIjtzOjQ6IvCdlJYiO3M6MToiUyI7czo0OiLwnZWKIjtzOjE6IlMiO3M6NDoi8J2VviI7czoxOiJTIjtzOjQ6IvCdlrIiO3M6MToiUyI7czo0OiLwnZemIjtzOjE6IlMiO3M6NDoi8J2YmiI7czoxOiJTIjtzOjQ6IvCdmY4iO3M6MToiUyI7czo0OiLwnZqCIjtzOjE6IlMiO3M6Mjoi0IUiO3M6MToiUyI7czoyOiLVjyI7czoxOiJTIjtzOjM6IuGPlSI7czoxOiJTIjtzOjM6IuGPmiI7czoxOiJTIjtzOjM6IuqToiI7czoxOiJTIjtzOjQ6IvCWvLoiO3M6MToiUyI7czo0OiLwkIqWIjtzOjE6IlMiO3M6NDoi8JCQoCI7czoxOiJTIjtzOjM6IuqetSI7czoxOiLfIjtzOjI6Is6yIjtzOjE6It8iO3M6Mjoiz5AiO3M6MToi3yI7czo0OiLwnZuDIjtzOjE6It8iO3M6NDoi8J2bvSI7czoxOiLfIjtzOjQ6IvCdnLciO3M6MToi3yI7czo0OiLwnZ2xIjtzOjE6It8iO3M6NDoi8J2eqyI7czoxOiLfIjtzOjM6IuGPsCI7czoxOiLfIjtzOjQ6IvCdkK0iO3M6MToidCI7czo0OiLwnZGhIjtzOjE6InQiO3M6NDoi8J2SlSI7czoxOiJ0IjtzOjQ6IvCdk4kiO3M6MToidCI7czo0OiLwnZO9IjtzOjE6InQiO3M6NDoi8J2UsSI7czoxOiJ0IjtzOjQ6IvCdlaUiO3M6MToidCI7czo0OiLwnZaZIjtzOjE6InQiO3M6NDoi8J2XjSI7czoxOiJ0IjtzOjQ6IvCdmIEiO3M6MToidCI7czo0OiLwnZi1IjtzOjE6InQiO3M6NDoi8J2ZqSI7czoxOiJ0IjtzOjQ6IvCdmp0iO3M6MToidCI7czozOiLiiqQiO3M6MToiVCI7czozOiLin5kiO3M6MToiVCI7czo0OiLwn52oIjtzOjE6IlQiO3M6Mzoi77y0IjtzOjE6IlQiO3M6NDoi8J2QkyI7czoxOiJUIjtzOjQ6IvCdkYciO3M6MToiVCI7czo0OiLwnZG7IjtzOjE6IlQiO3M6NDoi8J2SryI7czoxOiJUIjtzOjQ6IvCdk6MiO3M6MToiVCI7czo0OiLwnZSXIjtzOjE6IlQiO3M6NDoi8J2ViyI7czoxOiJUIjtzOjQ6IvCdlb8iO3M6MToiVCI7czo0OiLwnZazIjtzOjE6IlQiO3M6NDoi8J2XpyI7czoxOiJUIjtzOjQ6IvCdmJsiO3M6MToiVCI7czo0OiLwnZmPIjtzOjE6IlQiO3M6NDoi8J2agyI7czoxOiJUIjtzOjI6Is6kIjtzOjE6IlQiO3M6NDoi8J2auyI7czoxOiJUIjtzOjQ6IvCdm7UiO3M6MToiVCI7czo0OiLwnZyvIjtzOjE6IlQiO3M6NDoi8J2dqSI7czoxOiJUIjtzOjQ6IvCdnqMiO3M6MToiVCI7czozOiLisqYiO3M6MToiVCI7czoyOiLQoiI7czoxOiJUIjtzOjM6IuGOoiI7czoxOiJUIjtzOjM6IuqTlCI7czoxOiJUIjtzOjQ6IvCWvIoiO3M6MToiVCI7czo0OiLwkaK8IjtzOjE6IlQiO3M6NDoi8JCKlyI7czoxOiJUIjtzOjQ6IvCQirEiO3M6MToiVCI7czo0OiLwkIyVIjtzOjE6IlQiO3M6NDoi8J2QriI7czoxOiJ1IjtzOjQ6IvCdkaIiO3M6MToidSI7czo0OiLwnZKWIjtzOjE6InUiO3M6NDoi8J2TiiI7czoxOiJ1IjtzOjQ6IvCdk74iO3M6MToidSI7czo0OiLwnZSyIjtzOjE6InUiO3M6NDoi8J2VpiI7czoxOiJ1IjtzOjQ6IvCdlpoiO3M6MToidSI7czo0OiLwnZeOIjtzOjE6InUiO3M6NDoi8J2YgiI7czoxOiJ1IjtzOjQ6IvCdmLYiO3M6MToidSI7czo0OiLwnZmqIjtzOjE6InUiO3M6NDoi8J2aniI7czoxOiJ1IjtzOjM6IuqenyI7czoxOiJ1IjtzOjM6IuG0nCI7czoxOiJ1IjtzOjM6IuqtjiI7czoxOiJ1IjtzOjM6IuqtkiI7czoxOiJ1IjtzOjI6IsqLIjtzOjE6InUiO3M6Mjoiz4UiO3M6MToidSI7czo0OiLwnZuWIjtzOjE6InUiO3M6NDoi8J2ckCI7czoxOiJ1IjtzOjQ6IvCdnYoiO3M6MToidSI7czo0OiLwnZ6EIjtzOjE6InUiO3M6NDoi8J2eviI7czoxOiJ1IjtzOjI6ItW9IjtzOjE6InUiO3M6NDoi8JCTtiI7czoxOiJ1IjtzOjQ6IvCRo5giO3M6MToidSI7czozOiLiiKoiO3M6MToiVSI7czozOiLii4MiO3M6MToiVSI7czo0OiLwnZCUIjtzOjE6IlUiO3M6NDoi8J2RiCI7czoxOiJVIjtzOjQ6IvCdkbwiO3M6MToiVSI7czo0OiLwnZKwIjtzOjE6IlUiO3M6NDoi8J2TpCI7czoxOiJVIjtzOjQ6IvCdlJgiO3M6MToiVSI7czo0OiLwnZWMIjtzOjE6IlUiO3M6NDoi8J2WgCI7czoxOiJVIjtzOjQ6IvCdlrQiO3M6MToiVSI7czo0OiLwnZeoIjtzOjE6IlUiO3M6NDoi8J2YnCI7czoxOiJVIjtzOjQ6IvCdmZAiO3M6MToiVSI7czo0OiLwnZqEIjtzOjE6IlUiO3M6Mjoi1Y0iO3M6MToiVSI7czozOiLhiIAiO3M6MToiVSI7czo0OiLwkJOOIjtzOjE6IlUiO3M6Mzoi4ZGMIjtzOjE6IlUiO3M6Mzoi6pO0IjtzOjE6IlUiO3M6NDoi8Ja9giI7czoxOiJVIjtzOjQ6IvCRorgiO3M6MToiVSI7czozOiLiiKgiO3M6MToidiI7czozOiLii4EiO3M6MToidiI7czozOiLvvZYiO3M6MToidiI7czozOiLihbQiO3M6MToidiI7czo0OiLwnZCvIjtzOjE6InYiO3M6NDoi8J2RoyI7czoxOiJ2IjtzOjQ6IvCdkpciO3M6MToidiI7czo0OiLwnZOLIjtzOjE6InYiO3M6NDoi8J2TvyI7czoxOiJ2IjtzOjQ6IvCdlLMiO3M6MToidiI7czo0OiLwnZWnIjtzOjE6InYiO3M6NDoi8J2WmyI7czoxOiJ2IjtzOjQ6IvCdl48iO3M6MToidiI7czo0OiLwnZiDIjtzOjE6InYiO3M6NDoi8J2YtyI7czoxOiJ2IjtzOjQ6IvCdmasiO3M6MToidiI7czo0OiLwnZqfIjtzOjE6InYiO3M6Mzoi4bSgIjtzOjE6InYiO3M6Mjoizr0iO3M6MToidiI7czo0OiLwnZuOIjtzOjE6InYiO3M6NDoi8J2ciCI7czoxOiJ2IjtzOjQ6IvCdnYIiO3M6MToidiI7czo0OiLwnZ28IjtzOjE6InYiO3M6NDoi8J2etiI7czoxOiJ2IjtzOjI6ItG1IjtzOjE6InYiO3M6Mjoi15giO3M6MToidiI7czo0OiLwkZyGIjtzOjE6InYiO3M6Mzoi6q6pIjtzOjE6InYiO3M6NDoi8JGjgCI7czoxOiJ2IjtzOjQ6IvCdiI0iO3M6MToiViI7czoyOiLZpyI7czoxOiJWIjtzOjI6Itu3IjtzOjE6IlYiO3M6Mzoi4oWkIjtzOjE6IlYiO3M6NDoi8J2QlSI7czoxOiJWIjtzOjQ6IvCdkYkiO3M6MToiViI7czo0OiLwnZG9IjtzOjE6IlYiO3M6NDoi8J2SsSI7czoxOiJWIjtzOjQ6IvCdk6UiO3M6MToiViI7czo0OiLwnZSZIjtzOjE6IlYiO3M6NDoi8J2VjSI7czoxOiJWIjtzOjQ6IvCdloEiO3M6MToiViI7czo0OiLwnZa1IjtzOjE6IlYiO3M6NDoi8J2XqSI7czoxOiJWIjtzOjQ6IvCdmJ0iO3M6MToiViI7czo0OiLwnZmRIjtzOjE6IlYiO3M6NDoi8J2ahSI7czoxOiJWIjtzOjI6ItG0IjtzOjE6IlYiO3M6Mzoi4rS4IjtzOjE6IlYiO3M6Mzoi4Y+ZIjtzOjE6IlYiO3M6Mzoi4ZCvIjtzOjE6IlYiO3M6Mzoi6pufIjtzOjE6IlYiO3M6Mzoi6pOmIjtzOjE6IlYiO3M6NDoi8Ja8iCI7czoxOiJWIjtzOjQ6IvCRoqAiO3M6MToiViI7czo0OiLwkJSdIjtzOjE6IlYiO3M6Mjoiya8iO3M6MToidyI7czo0OiLwnZCwIjtzOjE6InciO3M6NDoi8J2RpCI7czoxOiJ3IjtzOjQ6IvCdkpgiO3M6MToidyI7czo0OiLwnZOMIjtzOjE6InciO3M6NDoi8J2UgCI7czoxOiJ3IjtzOjQ6IvCdlLQiO3M6MToidyI7czo0OiLwnZWoIjtzOjE6InciO3M6NDoi8J2WnCI7czoxOiJ3IjtzOjQ6IvCdl5AiO3M6MToidyI7czo0OiLwnZiEIjtzOjE6InciO3M6NDoi8J2YuCI7czoxOiJ3IjtzOjQ6IvCdmawiO3M6MToidyI7czo0OiLwnZqgIjtzOjE6InciO3M6Mzoi4bShIjtzOjE6InciO3M6Mjoi0aEiO3M6MToidyI7czoyOiLUnSI7czoxOiJ3IjtzOjI6ItWhIjtzOjE6InciO3M6NDoi8JGciiI7czoxOiJ3IjtzOjQ6IvCRnI4iO3M6MToidyI7czo0OiLwkZyPIjtzOjE6InciO3M6Mzoi6q6DIjtzOjE6InciO3M6NDoi8JGjryI7czoxOiJXIjtzOjQ6IvCRo6YiO3M6MToiVyI7czo0OiLwnZCWIjtzOjE6IlciO3M6NDoi8J2RiiI7czoxOiJXIjtzOjQ6IvCdkb4iO3M6MToiVyI7czo0OiLwnZKyIjtzOjE6IlciO3M6NDoi8J2TpiI7czoxOiJXIjtzOjQ6IvCdlJoiO3M6MToiVyI7czo0OiLwnZWOIjtzOjE6IlciO3M6NDoi8J2WgiI7czoxOiJXIjtzOjQ6IvCdlrYiO3M6MToiVyI7czo0OiLwnZeqIjtzOjE6IlciO3M6NDoi8J2YniI7czoxOiJXIjtzOjQ6IvCdmZIiO3M6MToiVyI7czo0OiLwnZqGIjtzOjE6IlciO3M6Mjoi1JwiO3M6MToiVyI7czozOiLhjrMiO3M6MToiVyI7czozOiLhj5QiO3M6MToiVyI7czozOiLqk6oiO3M6MToiVyI7czozOiLhma4iO3M6MToieCI7czoyOiLDlyI7czoxOiJ4IjtzOjM6IuKkqyI7czoxOiJ4IjtzOjM6IuKkrCI7czoxOiJ4IjtzOjM6IuKoryI7czoxOiJ4IjtzOjM6Iu+9mCI7czoxOiJ4IjtzOjM6IuKFuSI7czoxOiJ4IjtzOjQ6IvCdkLEiO3M6MToieCI7czo0OiLwnZGlIjtzOjE6IngiO3M6NDoi8J2SmSI7czoxOiJ4IjtzOjQ6IvCdk40iO3M6MToieCI7czo0OiLwnZSBIjtzOjE6IngiO3M6NDoi8J2UtSI7czoxOiJ4IjtzOjQ6IvCdlakiO3M6MToieCI7czo0OiLwnZadIjtzOjE6IngiO3M6NDoi8J2XkSI7czoxOiJ4IjtzOjQ6IvCdmIUiO3M6MToieCI7czo0OiLwnZi5IjtzOjE6IngiO3M6NDoi8J2ZrSI7czoxOiJ4IjtzOjQ6IvCdmqEiO3M6MToieCI7czoyOiLRhSI7czoxOiJ4IjtzOjM6IuGVgSI7czoxOiJ4IjtzOjM6IuGVvSI7czoxOiJ4IjtzOjM6IuGZrSI7czoxOiJYIjtzOjM6IuKVsyI7czoxOiJYIjtzOjQ6IvCQjKIiO3M6MToiWCI7czo0OiLwkaOsIjtzOjE6IlgiO3M6Mzoi77y4IjtzOjE6IlgiO3M6Mzoi4oWpIjtzOjE6IlgiO3M6NDoi8J2QlyI7czoxOiJYIjtzOjQ6IvCdkYsiO3M6MToiWCI7czo0OiLwnZG/IjtzOjE6IlgiO3M6NDoi8J2SsyI7czoxOiJYIjtzOjQ6IvCdk6ciO3M6MToiWCI7czo0OiLwnZSbIjtzOjE6IlgiO3M6NDoi8J2VjyI7czoxOiJYIjtzOjQ6IvCdloMiO3M6MToiWCI7czo0OiLwnZa3IjtzOjE6IlgiO3M6NDoi8J2XqyI7czoxOiJYIjtzOjQ6IvCdmJ8iO3M6MToiWCI7czo0OiLwnZmTIjtzOjE6IlgiO3M6NDoi8J2ahyI7czoxOiJYIjtzOjM6IuqesyI7czoxOiJYIjtzOjI6Is6nIjtzOjE6IlgiO3M6NDoi8J2aviI7czoxOiJYIjtzOjQ6IvCdm7giO3M6MToiWCI7czo0OiLwnZyyIjtzOjE6IlgiO3M6NDoi8J2drCI7czoxOiJYIjtzOjQ6IvCdnqYiO3M6MToiWCI7czozOiLisqwiO3M6MToiWCI7czoyOiLQpSI7czoxOiJYIjtzOjM6IuK1nSI7czoxOiJYIjtzOjM6IuGatyI7czoxOiJYIjtzOjM6IuqTqyI7czoxOiJYIjtzOjQ6IvCQipAiO3M6MToiWCI7czo0OiLwkIq0IjtzOjE6IlgiO3M6NDoi8JCMlyI7czoxOiJYIjtzOjQ6IvCQlKciO3M6MToiWCI7czoyOiLJoyI7czoxOiJ5IjtzOjM6IuG2jCI7czoxOiJ5IjtzOjM6Iu+9mSI7czoxOiJ5IjtzOjQ6IvCdkLIiO3M6MToieSI7czo0OiLwnZGmIjtzOjE6InkiO3M6NDoi8J2SmiI7czoxOiJ5IjtzOjQ6IvCdk44iO3M6MToieSI7czo0OiLwnZSCIjtzOjE6InkiO3M6NDoi8J2UtiI7czoxOiJ5IjtzOjQ6IvCdlaoiO3M6MToieSI7czo0OiLwnZaeIjtzOjE6InkiO3M6NDoi8J2XkiI7czoxOiJ5IjtzOjQ6IvCdmIYiO3M6MToieSI7czo0OiLwnZi6IjtzOjE6InkiO3M6NDoi8J2ZriI7czoxOiJ5IjtzOjQ6IvCdmqIiO3M6MToieSI7czoyOiLKjyI7czoxOiJ5IjtzOjM6IuG7vyI7czoxOiJ5IjtzOjM6IuqtmiI7czoxOiJ5IjtzOjI6Is6zIjtzOjE6InkiO3M6Mzoi4oS9IjtzOjE6InkiO3M6NDoi8J2bhCI7czoxOiJ5IjtzOjQ6IvCdm74iO3M6MToieSI7czo0OiLwnZy4IjtzOjE6InkiO3M6NDoi8J2dsiI7czoxOiJ5IjtzOjQ6IvCdnqwiO3M6MToieSI7czoyOiLRgyI7czoxOiJ5IjtzOjI6ItKvIjtzOjE6InkiO3M6Mzoi4YOnIjtzOjE6InkiO3M6NDoi8JGjnCI7czoxOiJ5IjtzOjM6Iu+8uSI7czoxOiJZIjtzOjQ6IvCdkJgiO3M6MToiWSI7czo0OiLwnZGMIjtzOjE6IlkiO3M6NDoi8J2SgCI7czoxOiJZIjtzOjQ6IvCdkrQiO3M6MToiWSI7czo0OiLwnZOoIjtzOjE6IlkiO3M6NDoi8J2UnCI7czoxOiJZIjtzOjQ6IvCdlZAiO3M6MToiWSI7czo0OiLwnZaEIjtzOjE6IlkiO3M6NDoi8J2WuCI7czoxOiJZIjtzOjQ6IvCdl6wiO3M6MToiWSI7czo0OiLwnZigIjtzOjE6IlkiO3M6NDoi8J2ZlCI7czoxOiJZIjtzOjQ6IvCdmogiO3M6MToiWSI7czoyOiLOpSI7czoxOiJZIjtzOjI6Is+SIjtzOjE6IlkiO3M6NDoi8J2avCI7czoxOiJZIjtzOjQ6IvCdm7YiO3M6MToiWSI7czo0OiLwnZywIjtzOjE6IlkiO3M6NDoi8J2dqiI7czoxOiJZIjtzOjQ6IvCdnqQiO3M6MToiWSI7czozOiLisqgiO3M6MToiWSI7czoyOiLQoyI7czoxOiJZIjtzOjI6ItKuIjtzOjE6IlkiO3M6Mzoi4Y6pIjtzOjE6IlkiO3M6Mzoi4Y69IjtzOjE6IlkiO3M6Mzoi6pOsIjtzOjE6IlkiO3M6NDoi8Ja9gyI7czoxOiJZIjtzOjQ6IvCRoqQiO3M6MToiWSI7czo0OiLwkIqyIjtzOjE6IlkiO3M6NDoi8J2QsyI7czoxOiJ6IjtzOjQ6IvCdkaciO3M6MToieiI7czo0OiLwnZKbIjtzOjE6InoiO3M6NDoi8J2TjyI7czoxOiJ6IjtzOjQ6IvCdlIMiO3M6MToieiI7czo0OiLwnZS3IjtzOjE6InoiO3M6NDoi8J2VqyI7czoxOiJ6IjtzOjQ6IvCdlp8iO3M6MToieiI7czo0OiLwnZeTIjtzOjE6InoiO3M6NDoi8J2YhyI7czoxOiJ6IjtzOjQ6IvCdmLsiO3M6MToieiI7czo0OiLwnZmvIjtzOjE6InoiO3M6NDoi8J2aoyI7czoxOiJ6IjtzOjM6IuG0oiI7czoxOiJ6IjtzOjM6IuqukyI7czoxOiJ6IjtzOjQ6IvCRo4QiO3M6MToieiI7czo0OiLwkIu1IjtzOjE6IloiO3M6NDoi8JGjpSI7czoxOiJaIjtzOjM6Iu+8uiI7czoxOiJaIjtzOjM6IuKEpCI7czoxOiJaIjtzOjM6IuKEqCI7czoxOiJaIjtzOjQ6IvCdkJkiO3M6MToiWiI7czo0OiLwnZGNIjtzOjE6IloiO3M6NDoi8J2SgSI7czoxOiJaIjtzOjQ6IvCdkrUiO3M6MToiWiI7czo0OiLwnZOpIjtzOjE6IloiO3M6NDoi8J2WhSI7czoxOiJaIjtzOjQ6IvCdlrkiO3M6MToiWiI7czo0OiLwnZetIjtzOjE6IloiO3M6NDoi8J2YoSI7czoxOiJaIjtzOjQ6IvCdmZUiO3M6MToiWiI7czo0OiLwnZqJIjtzOjE6IloiO3M6MjoizpYiO3M6MToiWiI7czo0OiLwnZqtIjtzOjE6IloiO3M6NDoi8J2bpyI7czoxOiJaIjtzOjQ6IvCdnKEiO3M6MToiWiI7czo0OiLwnZ2bIjtzOjE6IloiO3M6NDoi8J2elSI7czoxOiJaIjtzOjM6IuGPgyI7czoxOiJaIjtzOjM6IuqTnCI7czoxOiJaIjtzOjQ6IvCRoqkiO3M6MToiWiI7czoyOiLGvyI7czoxOiL+IjtzOjI6Is+4IjtzOjE6Iv4iO3M6Mjoiz7ciO3M6MToi3iI7czo0OiLwkJOEIjtzOjE6It4iO30=";
  7260. private static function need_skip($string, $i)
  7261. {
  7262. $chars = " @\r\n\t";
  7263. if (isset($string[$i]) && strpos($chars, $string[$i]) !== false) {
  7264. $i++;
  7265. return $i;
  7266. }
  7267. return false;
  7268. }
  7269. private static function match_shortopen_tag($string, $i, $needle, $j)
  7270. {
  7271. $pos_needle = false;
  7272. $pos_string = false;
  7273. if ((isset($needle[$j - 2]) && isset($string[$i - 2]))
  7274. && (($needle[$j - 2] == '<') && ($string[$i - 2] == '<'))
  7275. && (isset($needle[$j - 1]) && isset($string[$i - 1]))
  7276. && ($needle[$j - 1] == '?' && $string[$i - 1] == '?')
  7277. ) {
  7278. $pos_needle = $j;
  7279. $pos_string = $i;
  7280. }
  7281. if ($pos_needle && (isset($needle[$pos_needle]) && $needle[$pos_needle] == 'p')
  7282. && (isset($needle[$pos_needle + 1]) && $needle[$pos_needle + 1] == 'h')
  7283. && (isset($needle[$pos_needle + 2]) && $needle[$pos_needle + 2] == 'p')
  7284. ) {
  7285. $pos_needle = $pos_needle + 3;
  7286. }
  7287. if ($pos_string && (isset($string[$pos_string]) && $string[$pos_string] == 'p')
  7288. && (isset($string[$pos_string + 1]) && $string[$pos_string + 1] == 'h')
  7289. && (isset($string[$pos_string + 2]) && $string[$pos_string + 2] == 'p')
  7290. ) {
  7291. $pos_string = $pos_string + 3;
  7292. }
  7293. return [$pos_needle, $pos_string];
  7294. }
  7295. public static function strip_whitespace($string, $save_length = false)
  7296. {
  7297. if (!$save_length) {
  7298. StringToStreamWrapper::prepare($string);
  7299. return @php_strip_whitespace(StringToStreamWrapper::WRAPPER_NAME . '://');
  7300. } else {
  7301. $string = preg_replace_callback('~'
  7302. . '(\'(?:.*?[^\\\\])??(?:(?:\\\\\\\\)+)?+\')' //match all '' strings to exclude it from comments
  7303. . '|("(?:.*?[^\\\\])??(?:(?:\\\\\\\\)+)?+")' //match all "" strings to exclude it from comments
  7304. . '|(//.*?(?:[\n\r]|$))' //match // comments
  7305. . '|(/\*(?:.*?)\*/)' //match /**/ comments
  7306. . '|(#[^\n\r]*[\n\r])' //match # comments
  7307. . '~mis', function($m) {
  7308. if (isset($m[1]) && !empty($m[1])) {
  7309. return $m[1];
  7310. }
  7311. if (isset($m[2]) && !empty($m[2])) {
  7312. return $m[2];
  7313. }
  7314. if ((isset($m[3]) && !empty($m[3])) || (isset($m[4]) && !empty($m[4])) || (isset($m[5]) && !empty($m[5]))) {
  7315. if (isset($m[3]) && substr(trim($m[3]), -2, 2) == '?>') {
  7316. return (str_repeat(' ', strlen($m[0]) - 2) . '?>');
  7317. } else {
  7318. return str_repeat(' ', strlen($m[0]));
  7319. }
  7320. }
  7321. }, $string);
  7322. return $string;
  7323. }
  7324. }
  7325. public static function normalize($string, $save_length = false)
  7326. {
  7327. $search = array( ' ;', ' =', ' ,', ' .', ' (', ' )', ' {', ' }', '; ', '= ', ', ', '. '
  7328. , '( ', '( ', '{ ', '} ', ' !', ' >', ' <', ' _', '_ ', '< ', '> ', ' $', ' %', '% '
  7329. , '# ', ' #', '^ ', ' ^', ' &', '& ', ' ?', '? ');
  7330. $replace = array( ';', '=', ',', '.', '(', ')', '{', '}', ';', '=', ',', '.'
  7331. , '(', ')', '{', '}', '!', '>', '<', '_', '_', '<', '>', '$', '%', '%'
  7332. , '#', '#', '^', '^', '&', '&', '?', '?');
  7333. if (!$save_length) {
  7334. $string = str_replace('@', '', $string);
  7335. $string = preg_replace('~\s+~smi', ' ', $string);
  7336. $string = str_replace($search, $replace, $string);
  7337. }
  7338. $string = preg_replace_callback('~\bchr\(\s*([0-9a-fA-FxX]+)\s*\)~', function($m) use ($save_length) {
  7339. if ($save_length) {
  7340. return str_pad("'" . @chr(intval($m[1], 0)) . "'", strlen($m[0]), ' ');
  7341. } else {
  7342. return "'" . @chr(intval($m[1], 0)) . "'";
  7343. }
  7344. }, $string);
  7345. for ($i = 0; $i < 2; $i++) {
  7346. $string = preg_replace_callback('~%([0-9a-fA-F]{2})~', function($m) use ($save_length) {
  7347. if ($save_length) {
  7348. return str_pad(chr(@hexdec($m[1])), strlen($m[0]), ' ');
  7349. } else {
  7350. return @chr(hexdec($m[1]));
  7351. }
  7352. }, $string);
  7353. }
  7354. $string = preg_replace_callback('/\&[#\w]{2,20};/i', function($m) use ($save_length) {
  7355. if ($save_length) {
  7356. return str_pad(@html_entity_decode($m[0], ENT_QUOTES | ENT_HTML5), strlen($m[0]), ' ');
  7357. } else {
  7358. return @html_entity_decode($m[0], ENT_QUOTES | ENT_HTML5);
  7359. }
  7360. }, $string);
  7361. $string = preg_replace_callback('/\\\\x([a-fA-F0-9]{1,2})/i', function($m) use ($save_length) {
  7362. if ($save_length) {
  7363. return str_pad(chr(@hexdec($m[1])), strlen($m[0]), ' ');
  7364. } else {
  7365. return @chr(hexdec($m[1]));
  7366. }
  7367. }, $string);
  7368. $string = preg_replace_callback('/\\\\([0-9]{1,3})/i', function($m) use ($save_length) {
  7369. if ($save_length) {
  7370. return str_pad(@chr(octdec($m[1])), strlen($m[0]), ' ');
  7371. } else {
  7372. return @chr(octdec($m[1]));
  7373. }
  7374. }, $string);
  7375. $string = preg_replace_callback('/[\'"]\s*?\.+\s*?[\'"]/smi', function($m) use ($save_length) {
  7376. if ($save_length) {
  7377. return str_repeat(' ', strlen($m[0]));
  7378. } else {
  7379. return '';
  7380. }
  7381. }, $string);
  7382. $string = preg_replace_callback('/[\'"]\s*?\++\s*?[\'"]/smi', function($m) use ($save_length) {
  7383. if ($save_length) {
  7384. return str_repeat(' ', strlen($m[0]));
  7385. } else {
  7386. return '';
  7387. }
  7388. }, $string);
  7389. $string = preg_replace_callback('~<title[^>]{0,99}>\s*\K(.{0,300}?)(?=<\/title>)~mis', function($m) use ($save_length) {
  7390. if(preg_match('~(?:\w[^\x00-\x7F]{1,9}|[^\x00-\x7F]{1,9}\w)~', $m[1])) {
  7391. return self::HomoglyphNormalize($m[1]);
  7392. }
  7393. return $m[1];
  7394. }, $string);
  7395. if (!$save_length) {
  7396. $string = str_replace('<?php', '<?php ', $string);
  7397. $string = preg_replace('~\s+~', ' ', $string);
  7398. }
  7399. return $string;
  7400. }
  7401. public static function string_pos($string, $needle)
  7402. {
  7403. $j = 0;
  7404. $skip = false;
  7405. $start = false;
  7406. $end = 0;
  7407. $last_tag = [false, false];
  7408. $string = self::strip_whitespace($string, true);
  7409. $string = self::normalize($string, true);
  7410. $needle = self::normalize($needle, true);
  7411. for ($i = 0, $iMax = strlen($string); $i < $iMax; $i++) {
  7412. if(trim($string[$i]) === '' && trim($needle[$j]) === '') {
  7413. $string[$i] = $needle[$j] = ' ';
  7414. }
  7415. if ($string[$i] == $needle[$j]) {
  7416. if ($j == 0) {
  7417. $start = $i;
  7418. } elseif ($j == strlen($needle) - 1) {
  7419. $end = $i;
  7420. return [$start, $end];
  7421. }
  7422. $j++;
  7423. } else {
  7424. $match_php_tag = self::match_shortopen_tag($string, $i, $needle, $j);
  7425. if ($match_php_tag[0] !== false && ($last_tag[0] !== $match_php_tag[0])) {
  7426. $j = $match_php_tag[0];
  7427. }
  7428. if ($match_php_tag[1] !== false && ($last_tag[1] !== $match_php_tag[1])) {
  7429. $i = $match_php_tag[1] - 1;
  7430. }
  7431. $last_tag = $match_php_tag;
  7432. if ($match_php_tag[0] !== false || ($match_php_tag[1] !== false && (!empty($last_tag)))) {
  7433. continue;
  7434. }
  7435. $skip = self::need_skip($string, $i);
  7436. if ($skip !== false && $start !== false) {
  7437. $i = $skip - 1;
  7438. } else {
  7439. $j = 0;
  7440. }
  7441. }
  7442. }
  7443. return false;
  7444. }
  7445. private static function HomoglyphNormalize($str)
  7446. {
  7447. if (!is_array(self::$confusables)) {
  7448. self::$confusables = @unserialize(@base64_decode(self::$confusables));
  7449. }
  7450. return str_replace(array_keys(self::$confusables), array_values(self::$confusables), $str);
  7451. }
  7452. }
  7453. class Encoding
  7454. {
  7455. // Unicode BOM is U+FEFF, but after encoded, it will look like this.
  7456. const UTF32_BIG_ENDIAN_BOM = "\x00\x00\xFE\xFF";
  7457. const UTF32_LITTLE_ENDIAN_BOM = "\xFF\xFE\x00\x00";
  7458. const UTF16_BIG_ENDIAN_BOM = "\xFE\xFF";
  7459. const UTF16_LITTLE_ENDIAN_BOM = "\xFF\xFE";
  7460. const UTF8_BOM = "\xEF\xBB\xBF";
  7461. public static function detectUTFEncoding($text)
  7462. {
  7463. $first2 = substr($text, 0, 2);
  7464. $first3 = substr($text, 0, 3);
  7465. $first4 = substr($text, 0, 4);
  7466. if ($first3 == self::UTF8_BOM) {
  7467. return 'UTF-8';
  7468. } elseif ($first4 == self::UTF32_BIG_ENDIAN_BOM) {
  7469. return 'UTF-32BE';
  7470. } elseif ($first4 == self::UTF32_LITTLE_ENDIAN_BOM) {
  7471. return 'UTF-32LE';
  7472. } elseif ($first2 == self::UTF16_BIG_ENDIAN_BOM) {
  7473. return 'UTF-16BE';
  7474. } elseif ($first2 == self::UTF16_LITTLE_ENDIAN_BOM) {
  7475. return 'UTF-16LE';
  7476. }
  7477. return false;
  7478. }
  7479. public static function iconvSupported()
  7480. {
  7481. return (function_exists('iconv') && is_callable('iconv'));
  7482. }
  7483. public static function convertToCp1251($from, $str)
  7484. {
  7485. $ret = @iconv($from, 'CP1251//TRANSLIT', $str);
  7486. if ($ret === false) {
  7487. $ret = @iconv($from, 'CP1251//IGNORE', $str);
  7488. }
  7489. return $ret;
  7490. }
  7491. public static function convertToUTF8($from, $str)
  7492. {
  7493. return @iconv($from, 'UTF-8//IGNORE', $str);
  7494. }
  7495. }
  7496. /**
  7497. * Class RapidScanStorageRecord.
  7498. *
  7499. * Implements db record for RapidScan
  7500. */
  7501. class RapidScanStorageRecord
  7502. {
  7503. const WHITE = 1; // white listed file in cloud db
  7504. const BLACK = 6; // black listed file in cloud db
  7505. const DUAL_USE = 2; // dual used listed file in cloud db
  7506. const UNKNOWN = 3; // unknown file --> file not listed in cloud db
  7507. const HEURISTIC = 4; //detected as heuristic
  7508. const CONFLICT = 5; // we have filename hashing conflict for this file
  7509. const NEWFILE = 0; // this is a new file (or content changed)
  7510. const RX_MALWARE = 7; // detected as malware by rx scan
  7511. const RX_SUSPICIOUS = 8; // detected as suspicious by rx scan
  7512. const RX_GOOD = 9; // detected as good by rx scan
  7513. /**
  7514. * @var string;
  7515. */
  7516. private $filename;
  7517. /**
  7518. * @var int
  7519. */
  7520. private $key;
  7521. /**
  7522. * @var int
  7523. */
  7524. private $updated_ts;
  7525. /**
  7526. * @var int
  7527. */
  7528. private $verdict;
  7529. /**
  7530. * @var string
  7531. */
  7532. private $sha2;
  7533. /**
  7534. * @var string
  7535. */
  7536. private $signature = '';
  7537. /**
  7538. * @var string
  7539. */
  7540. private $snippet = '';
  7541. /**
  7542. * RapidScanStorageRecord constructor.
  7543. * @param $key
  7544. * @param $updated_ts
  7545. * @param int $verdict
  7546. * @param $sha2
  7547. * @param string $signature
  7548. */
  7549. private function __construct($key, $updated_ts, $verdict, $sha2, $signature, $filename, $snippet)
  7550. {
  7551. $this->filename = $filename;
  7552. $this->key = $key;
  7553. $this->updated_ts = $updated_ts;
  7554. $this->verdict = $verdict;
  7555. $this->sha2 = $sha2;
  7556. $this->snippet = $snippet;
  7557. if ($signature!=='') {
  7558. $this->signature = self::padTo10Bytes($signature);
  7559. }
  7560. }
  7561. /**
  7562. * Create db storage record from file
  7563. * @param $filename
  7564. * @param string $signature
  7565. * @param int $verdict
  7566. * @return RapidScanStorageRecord
  7567. * @throws Exception
  7568. */
  7569. public static function fromFile($file, $signature = '', $verdict = self::UNKNOWN, $snippet = '')
  7570. {
  7571. $filename = '';
  7572. $stat = [];
  7573. $inode = 0;
  7574. $ctime = 0;
  7575. $mtime = 0;
  7576. if (is_string($file) && file_exists($file)) {
  7577. $filename = $file;
  7578. $stat = stat($filename);
  7579. $inode = $stat['ino'];
  7580. $ctime = $stat['ctime'];
  7581. $mtime = $stat['mtime'];
  7582. } else if ($file instanceof FileInfo && file_exists($file->getFilename())){
  7583. $filename = $file->getFilename();
  7584. $inode = $file->getInode();
  7585. $ctime = $file->getCreated();
  7586. $mtime = $file->getModified();
  7587. }
  7588. if (!file_exists($filename)) {
  7589. throw new Exception('File \'' . $filename . '\' doesn\'t exists.');
  7590. }
  7591. $key = (int)((string)self::fileNameHash($filename) . (string)$inode);
  7592. $updated_ts = max($mtime, $ctime);
  7593. $sha2 = '';
  7594. if (!$verdict) {
  7595. $verdict = self::NEWFILE;
  7596. }
  7597. if ($signature!=='') {
  7598. $signature = self::padTo10Bytes($signature);
  7599. }
  7600. return new self($key, $updated_ts, $verdict, $sha2, $signature, $filename, $snippet);
  7601. }
  7602. /**
  7603. * @param $array
  7604. * @return RapidScanStorageRecord
  7605. */
  7606. public static function fromArray($array)
  7607. {
  7608. $key = $array['key'];
  7609. $updated_ts = $array['updated_ts'];
  7610. $sha2 = hex2bin($array['sha2']);
  7611. $verdict = $array['verdict'];
  7612. $signature = $array['signature'];
  7613. return new self($key, $updated_ts, $verdict, $sha2, $signature, '', '');
  7614. }
  7615. /**
  7616. * @return array
  7617. */
  7618. public function toArray()
  7619. {
  7620. $array['key'] = $this->key;
  7621. $array['updated_ts'] = $this->updated_ts;
  7622. $array['verdict'] = $this->verdict;
  7623. $array['sha2'] = bin2hex($this->sha2);
  7624. $array['signature'] = $this->signature;
  7625. return $array;
  7626. }
  7627. /**
  7628. * @return array
  7629. */
  7630. public function calcSha2()
  7631. {
  7632. $this->sha2 = hash('sha256', file_get_contents($this->filename), true);
  7633. }
  7634. /**
  7635. * @param $verdict
  7636. */
  7637. public function setVerdict($verdict)
  7638. {
  7639. $this->verdict = $verdict;
  7640. }
  7641. /**
  7642. * @return int
  7643. */
  7644. public function getKey()
  7645. {
  7646. return $this->key;
  7647. }
  7648. /**
  7649. * @param $signature
  7650. */
  7651. public function setSignature($signature)
  7652. {
  7653. if ($signature!=='') {
  7654. $this->signature = self::padTo10Bytes($signature);
  7655. }
  7656. }
  7657. /**
  7658. * Unpack bytestring $value to RapidScanStorageRecord
  7659. * @param $hash
  7660. * @param $value
  7661. * @return RapidScanStorageRecord
  7662. */
  7663. public static function unpack($hash, $value)
  7664. {
  7665. // pack format
  7666. // 8 bytes timestamp
  7667. // 1 byte verdict
  7668. // 32 bytes sha2
  7669. // 10 bytes signature (only for BLACK, DUAL_USE, RX_MALWARE, RX_SUSPICIOUS)
  7670. // note - we will hold bloomfilter for file later on for those that are WHITE
  7671. // it will be used to detect installed apps
  7672. $signature = '';
  7673. $timestamp = unpack("l", substr($value, 0, 8));
  7674. $updated_ts = array_pop($timestamp);
  7675. $verdict = $value[8];
  7676. $verdict = (int)bin2hex($verdict);
  7677. $sha2 = substr($value, 9, 32);
  7678. if (in_array($verdict, array(self::BLACK, self::DUAL_USE, self::RX_MALWARE, self::RX_SUSPICIOUS))) {
  7679. $signature = substr($value, 41, 10); # 10 bytes signature string
  7680. }
  7681. if (strlen($value) > 51) {
  7682. $snippet = substr($value, 51);
  7683. } else {
  7684. $snippet = '';
  7685. }
  7686. return new self($hash, $updated_ts, $verdict, $sha2, $signature, '', $snippet);
  7687. }
  7688. /**
  7689. * Pack RapidScanStorageRecord to bytestring to save in db
  7690. * @return string
  7691. */
  7692. public function pack()
  7693. {
  7694. $signature = '';
  7695. if (strlen($this->signature) > 0) {
  7696. $signature = $this->signature;
  7697. }
  7698. return (($this->updated_ts < 0) ? str_pad(pack("l", $this->updated_ts), 8, "\xff") : str_pad(pack("l", $this->updated_ts), 8, "\x00")) . pack("c", $this->verdict) . $this->sha2 . $signature . $this->snippet;
  7699. }
  7700. /**
  7701. * Hash function for create hash of full filename to store in db as key
  7702. * @param $str
  7703. * @return int
  7704. */
  7705. private static function fileNameHash($str)
  7706. {
  7707. for ($i = 0, $h = 5381, $len = strlen($str); $i < $len; $i++) {
  7708. $h = (($h << 5) + $h + ord($str[$i])) & 0x7FFFFFFF;
  7709. }
  7710. return $h;
  7711. }
  7712. /**
  7713. * Convert string to utf-8 and fitting/padding it to 10 bytes
  7714. * @param $str
  7715. * @return string
  7716. */
  7717. private static function padTo10Bytes($str)
  7718. {
  7719. # convert string to bytes in UTF8, and add 0 bytes to pad it to 10
  7720. # cut to 10 bytes of necessary
  7721. $str = utf8_encode($str);
  7722. $len = strlen($str);
  7723. if ($len < 10) {
  7724. $str = str_pad($str, 10, "\x00");
  7725. } elseif ($len > 10) {
  7726. $str = substr($str, 0, 10);
  7727. }
  7728. return $str;
  7729. }
  7730. /**
  7731. * @return int
  7732. */
  7733. public function getUpdatedTs()
  7734. {
  7735. return $this->updated_ts;
  7736. }
  7737. /**
  7738. * @return int
  7739. */
  7740. public function getVerdict()
  7741. {
  7742. return $this->verdict;
  7743. }
  7744. /**
  7745. * @return string
  7746. */
  7747. public function getSha2()
  7748. {
  7749. return $this->sha2;
  7750. }
  7751. /**
  7752. * @return string
  7753. */
  7754. public function getSignature()
  7755. {
  7756. return $this->signature;
  7757. }
  7758. /**
  7759. * @return string
  7760. */
  7761. public function getFilename()
  7762. {
  7763. return $this->filename;
  7764. }
  7765. /**
  7766. * @param $filename
  7767. */
  7768. public function setFilename($filename)
  7769. {
  7770. $this->filename = $filename;
  7771. }
  7772. /**
  7773. * @return string
  7774. */
  7775. public function getSnippet()
  7776. {
  7777. return $this->snippet;
  7778. }
  7779. /**
  7780. * @param $filename
  7781. */
  7782. public function setSnippet($snippet)
  7783. {
  7784. $this->snippet = $snippet;
  7785. }
  7786. }
  7787. /**
  7788. * Interface RapidScanStorage implements class to work with RapidScan db
  7789. * @package Aibolit\Lib\Scantrack
  7790. */
  7791. class RapidScanStorage
  7792. {
  7793. /**
  7794. * @var string
  7795. */
  7796. protected $old_dir;
  7797. /**
  7798. * @var string
  7799. */
  7800. protected $new_dir;
  7801. /**
  7802. * @var resource
  7803. */
  7804. protected $new_db;
  7805. /**
  7806. * @var resource
  7807. */
  7808. protected $old_db;
  7809. /**
  7810. * @var resource
  7811. */
  7812. private $wb;
  7813. /**
  7814. * @var int
  7815. */
  7816. public $batch_count;
  7817. /**
  7818. * RapidScanStorage constructor.
  7819. * @param $base - folder where db located
  7820. */
  7821. public function __construct($base)
  7822. {
  7823. if(!is_dir($base) && !mkdir($base) && !is_dir($base)) {
  7824. throw new Exception(sprintf('Directory "%s" was not created', $base));
  7825. }
  7826. $this->old_dir = $base . '/current';
  7827. $this->new_dir = $base . '/new';
  7828. $options = array('create_if_missing' => true, 'compression'=> LEVELDB_NO_COMPRESSION);
  7829. $this->new_db = new LevelDB($this->new_dir, $options);
  7830. $this->old_db = new LevelDB($this->old_dir, $options);
  7831. $this->wb = NULL; // will be use to track writing to batch
  7832. $this->batch_count = 0;
  7833. }
  7834. /**
  7835. * @param RapidScanStorageRecord $record
  7836. * @return bool
  7837. */
  7838. public function put(RapidScanStorageRecord $record)
  7839. {
  7840. $this->startBatch();
  7841. $this->batch_count++;
  7842. $value = $this->wb->put($record->getKey(), $record->pack());
  7843. return $value;
  7844. }
  7845. /**
  7846. * @param $hash
  7847. * @return bool|RapidScanStorageRecord
  7848. */
  7849. public function getNew($hash)
  7850. {
  7851. $value = $this->new_db->get($hash);
  7852. if($value) {
  7853. $return = RapidScanStorageRecord::unpack($hash, $value);
  7854. return $return;
  7855. }
  7856. return false;
  7857. }
  7858. /**
  7859. * @param $hash
  7860. * @return bool|RapidScanStorageRecord
  7861. */
  7862. public function getOld($hash)
  7863. {
  7864. $value = $this->old_db->get($hash);
  7865. if($value) {
  7866. $return = RapidScanStorageRecord::unpack($hash, $value);
  7867. return $return;
  7868. }
  7869. return false;
  7870. }
  7871. /**
  7872. * @param $hash
  7873. * @return bool
  7874. */
  7875. public function delete($hash)
  7876. {
  7877. $return = $this->new_db->delete($hash);
  7878. return $return;
  7879. }
  7880. /**
  7881. * Close db, remove old db, move new to a new space
  7882. */
  7883. public function finish()
  7884. {
  7885. $this->old_db->close();
  7886. $this->flushBatch();
  7887. $this->new_db->close();
  7888. self::rmtree($this->old_dir);
  7889. rename($this->new_dir, $this->old_dir);
  7890. }
  7891. /**
  7892. * Start batch operations
  7893. */
  7894. private function startBatch()
  7895. {
  7896. if(!$this->wb) {
  7897. $this->wb = new LevelDBWriteBatch();
  7898. $this->batch_count = 0;
  7899. }
  7900. }
  7901. /**
  7902. * write all data in a batch, reset batch
  7903. */
  7904. public function flushBatch()
  7905. {
  7906. if ($this->wb) {
  7907. $this->new_db->write($this->wb);
  7908. $this->batch_count = 0;
  7909. $this->wb = NULL;
  7910. }
  7911. }
  7912. /**
  7913. * Helper function to remove folder tree
  7914. * @param $path
  7915. */
  7916. public static function rmTree($path)
  7917. {
  7918. if (is_dir($path)) {
  7919. foreach (scandir($path) as $name) {
  7920. if (in_array($name, array('.', '..'))) {
  7921. continue;
  7922. }
  7923. $subpath = $path.DIRECTORY_SEPARATOR . $name;
  7924. self::rmTree($subpath);
  7925. }
  7926. rmdir($path);
  7927. } else {
  7928. unlink($path);
  7929. }
  7930. }
  7931. }
  7932. /**
  7933. * For work with Cloud Assisted Storage
  7934. * @package Aibolit\Lib\Scantrack
  7935. */
  7936. class CloudAssistedStorage
  7937. {
  7938. private $db_filepath = '';
  7939. public function __construct($folder)
  7940. {
  7941. if(!is_dir($folder) && !mkdir($folder) && !is_dir($folder)) {
  7942. throw new Exception(sprintf('Directory "%s" was not created', $folder));
  7943. }
  7944. $this->db_filepath = $folder . DIRECTORY_SEPARATOR . 'cloud_assisted_verdicts.json';
  7945. }
  7946. public function getList()
  7947. {
  7948. if (!file_exists($this->db_filepath)) {
  7949. return [];
  7950. }
  7951. $content = file_get_contents($this->db_filepath);
  7952. if (!$content) {
  7953. return [];
  7954. }
  7955. $list = json_decode($content, true);
  7956. if (!$list || !is_array($list)) {
  7957. return [];
  7958. }
  7959. return $list;
  7960. }
  7961. public function putList($list)
  7962. {
  7963. file_put_contents($this->db_filepath, json_encode($list));
  7964. }
  7965. public function delete()
  7966. {
  7967. if (!file_exists($this->db_filepath)) {
  7968. return;
  7969. }
  7970. unlink($this->db_filepath);
  7971. }
  7972. }
  7973. /**
  7974. * This is actual class that does account level scan
  7975. * and remembers the state of scan
  7976. * Class RapidAccountScan
  7977. * @package Aibolit\Lib\Scantrack
  7978. */
  7979. class RapidAccountScan
  7980. {
  7981. const RESCAN_ALL = 0; // mode of operation --> rescan all files that are not white/black/dual_use using cloud scanner & regex scanner
  7982. const RESCAN_NONE = 1; // don't re-scan any files that we already scanned
  7983. const RESCAN_SUSPICIOUS = 2; // only re-scan suspicious files using only regex scanner
  7984. const MAX_BATCH = 1000; // max files to write in a db batch write
  7985. const MAX_TO_SCAN = 1000; // max files to scan using cloud/rx scanner at a time
  7986. private $db;
  7987. private $cas_db;
  7988. private $cas_list = [];
  7989. private $vars = null;
  7990. private $scanlist;
  7991. private $collisions;
  7992. private $processedFiles;
  7993. private $rescan_count = 0;
  7994. private $counter = 0;
  7995. private $str_error = false;
  7996. private $scanner = null;
  7997. /**
  7998. * RapidAccountScan constructor.
  7999. * @param RapidScanStorage $rapidScanStorage
  8000. */
  8001. public function __construct($scanner, $rapidScanStorage, $cloudAssistedStorage, &$vars, $counter = 0)
  8002. {
  8003. $this->db = $rapidScanStorage;
  8004. $this->cas_db = $cloudAssistedStorage;
  8005. $this->vars = $vars;
  8006. $this->scanlist = array();
  8007. $this->collisions = array();
  8008. $this->processedFiles = 0;
  8009. $this->counter = $counter;
  8010. $this->scanner = $scanner;
  8011. }
  8012. /**
  8013. * Get str error
  8014. */
  8015. public function getStrError()
  8016. {
  8017. return $this->str_error;
  8018. }
  8019. /**
  8020. * Get count of rescan(regexp) files
  8021. */
  8022. public function getRescanCount()
  8023. {
  8024. return $this->rescan_count;
  8025. }
  8026. /**
  8027. * placeholder for actual regex scan
  8028. * return RX_GOOD, RX_MALWARE, RX_SUSPICIOUS and signature from regex scaner
  8029. * if we got one
  8030. */
  8031. private function regexScan($filename, $i, $vars)
  8032. {
  8033. $this->rescan_count++;
  8034. printProgress(++$this->processedFiles, $filename, $vars);
  8035. $return = $this->scanner->QCR_ScanFile($filename, $vars, null, $i, false);
  8036. return $return;
  8037. }
  8038. /**
  8039. * we will have batch of new files that we will scan
  8040. * here we will write them into db once we scanned them
  8041. * we need to check that there is no conflicts/collisions
  8042. * in names, for that we check for data in db if such filename_hash
  8043. * already exists, but we also keep set of filename_hashes of given
  8044. * batch, to rule out conflicts in current batch as well
  8045. */
  8046. private function writeNew()
  8047. {
  8048. $this->collisions = array();
  8049. foreach ($this->scanlist as $fileinfo) {
  8050. if (in_array($fileinfo->getKey(), $this->collisions) || $this->db->getNew($fileinfo->getKey())) {
  8051. $fileinfo->setVerdict(RapidScanStorageRecord::CONFLICT);
  8052. }
  8053. $this->collisions [] = $fileinfo->getKey();
  8054. $this->db->put($fileinfo);
  8055. }
  8056. }
  8057. /**
  8058. * given a batch do cloudscan
  8059. * @throws \Exception
  8060. */
  8061. private function doCloudScan()
  8062. {
  8063. if (count($this->scanlist) <= 0) {
  8064. return;
  8065. }
  8066. $index_table = [];
  8067. $blackfiles = [];
  8068. $sha_list = [];
  8069. foreach ($this->scanlist as $i => $fileinfo) {
  8070. $sha_list[] = bin2hex($fileinfo->getSha2());
  8071. $index_table[] = $i;
  8072. $fileinfo->setVerdict(RapidScanStorageRecord::UNKNOWN);
  8073. }
  8074. $ca = Factory::instance()->create(CloudAssistedRequest::class, [CLOUD_ASSIST_TOKEN]);
  8075. $white_raw = [];
  8076. $black_raw = [];
  8077. $verdicts_black_raw = [];
  8078. try {
  8079. list($white_raw, $black_raw, $verdicts_black_raw) = $ca->checkFilesByHash($sha_list);
  8080. } catch (\Exception $e) {
  8081. $this->str_error = $e->getMessage();
  8082. }
  8083. $dual = array_intersect($white_raw, $black_raw);
  8084. $black_raw = array_diff($black_raw, $white_raw);
  8085. foreach ($white_raw as $index) {
  8086. $this->scanlist[$index_table[$index]]->setVerdict(RapidScanStorageRecord::WHITE);
  8087. }
  8088. $signatures_db = [];
  8089. foreach ($black_raw as $i => $index) {
  8090. $this->scanlist[$index_table[$index]]->setVerdict(RapidScanStorageRecord::BLACK);
  8091. $signature = isset($verdicts_black_raw[$i]) ? $verdicts_black_raw[$i] : '';
  8092. $signature_id = 'c_' . hash('crc32', $signature);
  8093. $signatures_db[$signature_id] = $signature;
  8094. $this->scanlist[$index_table[$index]]->setSignature($signature_id);
  8095. $blackfiles[$this->scanlist[$index_table[$index]]->getFilename()] = [
  8096. 'h' => $sha_list[$index],
  8097. 'ts' => time(),
  8098. 'sn' => $signature,
  8099. 'ras_sigid' => $signature_id,
  8100. ];
  8101. }
  8102. $signatures_list = $this->cas_db->getList();
  8103. foreach ($signatures_db as $hash => $sig) {
  8104. $this->cas_list[$hash] = $sig;
  8105. if (isset($signatures_list[$hash])) {
  8106. continue;
  8107. }
  8108. $signatures_list[$hash] = $sig;
  8109. }
  8110. $this->cas_db->putList($signatures_list);
  8111. foreach ($dual as $index) {
  8112. $this->scanlist[$index_table[$index]]->setVerdict(RapidScanStorageRecord::DUAL_USE);
  8113. $this->scanlist[$index_table[$index]]->setSignature('DUAL'); //later on we will get sig info from cloud
  8114. }
  8115. // we can now update verdicts in batch for those that we know
  8116. //add entries to report, when needed
  8117. $this->vars->blackFiles = array_merge($this->vars->blackFiles, $blackfiles);
  8118. unset($white_raw, $black_raw, $dual, $sha_list, $index_table);
  8119. }
  8120. /**
  8121. * regex scan a single file, add entry to report if needed
  8122. * @param $fileInfo
  8123. * @param $i
  8124. */
  8125. private function _regexScan($fileInfo, $i, $vars)
  8126. {
  8127. $regex_res = $this->regexScan($fileInfo->getFilename(), $i, $vars);
  8128. if (!is_array($regex_res)) {
  8129. return;
  8130. }
  8131. list($result, $sigId, $snippet) = $regex_res;
  8132. $fileInfo->setVerdict($result);
  8133. if ($result !== RapidScanStorageRecord::RX_GOOD) {
  8134. $fileInfo->setSignature($sigId);
  8135. $fileInfo->setSnippet($snippet);
  8136. }
  8137. }
  8138. /**
  8139. * regex scan batch of files.
  8140. */
  8141. private function doRegexScan($vars)
  8142. {
  8143. foreach ($this->scanlist as $i => $fileinfo) {
  8144. if (!in_array($fileinfo->getVerdict(), array(
  8145. RapidScanStorageRecord::WHITE,
  8146. RapidScanStorageRecord::BLACK,
  8147. RapidScanStorageRecord::DUAL_USE
  8148. ))
  8149. ) {
  8150. $this->_regexScan($fileinfo, $i, $vars);
  8151. }
  8152. }
  8153. }
  8154. private function processScanList($vars)
  8155. {
  8156. $this->doCloudScan();
  8157. $this->doRegexScan($vars);
  8158. $this->writeNew();
  8159. $this->scanlist = [];
  8160. }
  8161. private function scanFile($filename, $rescan, $i, $vars)
  8162. {
  8163. if ($vars->fileinfo !== null) {
  8164. if($filename !== $vars->fileinfo->getFilename()) {
  8165. unset($file);
  8166. $vars->fileinfo = null;
  8167. }
  8168. }
  8169. if ($vars->fileinfo == null) {
  8170. $file = new FileInfo($filename, $i);
  8171. $vars->fileinfo = $file;
  8172. }
  8173. $file = $vars->fileinfo;
  8174. if (!file_exists($filename)) {
  8175. return false;
  8176. }
  8177. $file = RapidScanStorageRecord::fromFile($file);
  8178. $old_value = $this->db->getOld($file->getKey());
  8179. $old_mtime = 0;
  8180. if ($old_value) {
  8181. $old_mtime = $old_value->getUpdatedTs();
  8182. if ($file->getUpdatedTs() == $old_mtime) {
  8183. $file = $old_value;
  8184. $file->setFilename($filename);
  8185. }
  8186. }
  8187. if ($file->getVerdict() == RapidScanStorageRecord::UNKNOWN
  8188. || $file->getVerdict() == RapidScanStorageRecord::CONFLICT
  8189. || $file->getUpdatedTs() !== $old_mtime
  8190. ) {
  8191. // these files has changed or we know nothing about them, lets re-calculate sha2
  8192. // and do full scan
  8193. $file->calcSha2();
  8194. $file->setVerdict(RapidScanStorageRecord::NEWFILE);
  8195. $this->scanlist[$i] = $file;
  8196. } elseif ($file->getVerdict() == RapidScanStorageRecord::BLACK) {
  8197. //these files hasn't changed, but need to be reported as they are on one of the lists
  8198. $signature_id = $file->getSignature();
  8199. $signature = isset($this->cas_list[$signature_id]) ? $this->cas_list[$signature_id] : '';
  8200. $this->vars->blackFiles[$filename] = [
  8201. 'h' => bin2hex($file->getSha2()),
  8202. 'ts' => time(),
  8203. 'sn' => $signature,
  8204. 'ras_sigid' => $signature_id,
  8205. ];
  8206. $this->db->put($file);
  8207. } elseif ($file->getVerdict() == RapidScanStorageRecord::DUAL_USE) {
  8208. $this->db->put($file);
  8209. } elseif (($rescan == self::RESCAN_SUSPICIOUS || $rescan == self::RESCAN_NONE)
  8210. && $file->getVerdict() == RapidScanStorageRecord::RX_MALWARE
  8211. ) {
  8212. //this files were detected as rx malware before, let's report them
  8213. $sigId = trim($file->getSignature(), "\0");
  8214. if (isset($sigId) && isset($vars->signs->_Mnemo[$sigId])) {
  8215. $sigName = $vars->signs->_Mnemo[$sigId];
  8216. $snippet = $file->getSnippet();
  8217. if (strpos($sigName, 'SUS') !== false && AI_EXTRA_WARN) {
  8218. $vars->warningPHP[] = $i;
  8219. $vars->warningPHPFragment[] = $snippet;
  8220. $vars->warningPHPSig[] = $sigId;
  8221. } elseif (strtolower(pathinfo($filename, PATHINFO_EXTENSION)) == 'js') {
  8222. $vars->criticalJS[] = $i;
  8223. $vars->criticalJSFragment[] = $snippet;
  8224. $vars->criticalJSSig[] = $sigId;
  8225. } else {
  8226. $vars->criticalPHP[] = $i;
  8227. $vars->criticalPHPFragment[] = $snippet;
  8228. $vars->criticalPHPSig[] = $sigId;
  8229. }
  8230. $this->scanner->AddResult($vars->fileinfo, $i, $vars);
  8231. $this->db->put($file);
  8232. } else {
  8233. $this->scanlist[$i] = $file;
  8234. }
  8235. } elseif ((
  8236. $rescan == self::RESCAN_ALL
  8237. && in_array($file->getVerdict(), array(
  8238. RapidScanStorageRecord::RX_SUSPICIOUS,
  8239. RapidScanStorageRecord::RX_GOOD,
  8240. RapidScanStorageRecord::RX_MALWARE
  8241. ))
  8242. )
  8243. || (
  8244. $rescan == self::RESCAN_SUSPICIOUS
  8245. && $file->getVerdict() == RapidScanStorageRecord::RX_SUSPICIOUS
  8246. )
  8247. ) {
  8248. //rescan all mode, all none white/black/dual listed files need to be re-scanned fully
  8249. $this->scanlist[$i] = $file;
  8250. } else {
  8251. //in theory -- we should have only white files here...
  8252. $this->db->put($file);
  8253. }
  8254. if (count($this->scanlist) >= self::MAX_TO_SCAN) {
  8255. // our scan list is big enough
  8256. // let's flush db, and scan the list
  8257. $this->db->flushBatch();
  8258. $this->processScanList($vars);
  8259. }
  8260. if ($this->db->batch_count >= self::MAX_BATCH) {
  8261. //we have added many entries to db, time to flush it
  8262. $this->db->flushBatch();
  8263. $this->processScanList($vars);
  8264. }
  8265. unset($file);
  8266. $vars->fileinfo = null;
  8267. }
  8268. public function scan($files, $vars, $rescan = self::RESCAN_SUSPICIOUS)
  8269. {
  8270. $i = 0;
  8271. $this->cas_list = $this->cas_db->getList();
  8272. foreach ($files as $filepath) {
  8273. $counter = $this->counter + $i;
  8274. $vars->totalFiles++;
  8275. $this->processedFiles = $counter - $vars->totalFolder - count($this->scanlist);
  8276. printProgress($this->processedFiles, $filepath, $vars);
  8277. $this->scanFile($filepath, $rescan, $counter, $vars);
  8278. $i++;
  8279. }
  8280. if ($rescan == self::RESCAN_ALL) {
  8281. $this->cas_db->delete();
  8282. $this->cas_list = [];
  8283. foreach ($this->vars->blackFiles as $blackfile) {
  8284. $this->cas_list[$blackfile['ras_sigid']] = $blackfile['sn'];
  8285. }
  8286. $this->cas_db->putList($this->cas_list);
  8287. }
  8288. //let's flush db again
  8289. $this->db->flushBatch();
  8290. //process whatever is left in our scan list
  8291. if (count($this->scanlist) > 0) {
  8292. $this->processScanList($vars);
  8293. }
  8294. // whitelist
  8295. $snum = 0;
  8296. $list = $this->scanner->check_whitelist($vars->structure['crc'], $snum);
  8297. $keys = array(
  8298. 'criticalPHP',
  8299. 'criticalJS',
  8300. 'g_Iframer',
  8301. 'g_Base64',
  8302. 'phishing',
  8303. 'adwareList',
  8304. 'g_Redirect',
  8305. 'warningPHP'
  8306. );
  8307. foreach ($keys as $p) {
  8308. if (empty($vars->{$p})) {
  8309. continue;
  8310. }
  8311. $p_Fragment = $p . 'Fragment';
  8312. $p_Sig = $p . 'Sig';
  8313. if ($p == 'g_Redirect') {
  8314. $p_Fragment = $p . 'PHPFragment';
  8315. }
  8316. if ($p == 'g_Phishing') {
  8317. $p_Sig = $p . 'SigFragment';
  8318. }
  8319. $count = count($vars->{$p});
  8320. for ($i = 0; $i < $count; $i++) {
  8321. $id = $vars->{$p}[$i];
  8322. if ($vars->structure['crc'][$id] !== 0 && in_array($vars->structure['crc'][$id], $list)) {
  8323. $rec = RapidScanStorageRecord::fromFile($vars->structure['n'][$id]);
  8324. $rec->calcSha2();
  8325. $rec->setVerdict(RapidScanStorageRecord::RX_GOOD);
  8326. $this->db->put($rec);
  8327. unset($vars->{$p}[$i], $vars->{$p_Sig}[$i], $vars->{$p_Fragment}[$i]);
  8328. }
  8329. }
  8330. $vars->{$p} = array_values($vars->{$p});
  8331. $vars->{$p_Fragment} = array_values($vars->{$p_Fragment});
  8332. if (!empty($vars->{$p_Sig})) {
  8333. $vars->{$p_Sig} = array_values($vars->{$p_Sig});
  8334. }
  8335. }
  8336. //close databases and rename new into 'current'
  8337. $this->db->finish();
  8338. }
  8339. }
  8340. /**
  8341. * DbFolderSpecification class file.
  8342. */
  8343. /**
  8344. * Class DbFolderSpecification.
  8345. *
  8346. * It can be use for checking requirements for a folder that is used for storing a RapidScan DB.
  8347. */
  8348. class DbFolderSpecification
  8349. {
  8350. /**
  8351. * Check whether a particular folder satisfies requirements.
  8352. *
  8353. * @param string $folder
  8354. * @return bool
  8355. */
  8356. public function satisfiedBy($folder)
  8357. {
  8358. if (!file_exists($folder) || !is_dir($folder)) {
  8359. return false;
  8360. }
  8361. $owner_id = (int)fileowner($folder);
  8362. if (function_exists('posix_getpwuid')) {
  8363. $owner = posix_getpwuid($owner_id);
  8364. if (!isset($owner['name']) || $owner['name'] !== 'root') {
  8365. return false;
  8366. }
  8367. }
  8368. elseif ($owner_id != 0) {
  8369. return false;
  8370. }
  8371. $perms = fileperms($folder);
  8372. if (($perms & 0x0100) // owner r
  8373. && ($perms & 0x0080) // owner w
  8374. && ($perms & 0x0040) && !($perms & 0x0800) // owner x
  8375. && !($perms & 0x0020) // group without r
  8376. && !($perms & 0x0010) // group without w
  8377. && (!($perms & 0x0008) || ($perms & 0x0400))// group without x
  8378. && !($perms & 0x0004) // other without r
  8379. && !($perms & 0x0002) // other without w
  8380. && (!($perms & 0x0001) || ($perms & 0x0200))// other without x
  8381. ) {
  8382. return true;
  8383. }
  8384. return false;
  8385. }
  8386. }
  8387. /**
  8388. * CriticalFileSpecification class file.
  8389. */
  8390. /**
  8391. * Class CriticalFileSpecification.
  8392. */
  8393. class CriticalFileSpecification
  8394. {
  8395. /**
  8396. * @var array list of extension
  8397. */
  8398. private $extensions = [
  8399. 'php',
  8400. 'htaccess',
  8401. 'cgi',
  8402. 'pl',
  8403. 'o',
  8404. 'so',
  8405. 'py',
  8406. 'sh',
  8407. 'phtml',
  8408. 'php3',
  8409. 'php4',
  8410. 'php5',
  8411. 'php6',
  8412. 'php7',
  8413. 'pht',
  8414. 'shtml',
  8415. 'susp',
  8416. 'suspected',
  8417. 'infected',
  8418. 'vir',
  8419. 'ico',
  8420. 'js',
  8421. 'json',
  8422. 'com',
  8423. ''
  8424. ];
  8425. private $js_extensions = [
  8426. 'js',
  8427. 'json',
  8428. 'html',
  8429. 'htm',
  8430. 'suspicious'
  8431. ];
  8432. private $phish_extensions = [
  8433. 'js',
  8434. 'html',
  8435. 'htm',
  8436. 'suspected',
  8437. 'php',
  8438. 'phtml',
  8439. 'pht',
  8440. 'php7'
  8441. ];
  8442. private static $critical_content = '^\s*<\?php'
  8443. . '|^\s*<\?='
  8444. . '|^#!/usr'
  8445. . '|^#!/bin'
  8446. . '|\beval'
  8447. . '|assert'
  8448. . '|base64_decode'
  8449. . '|\bsystem'
  8450. . '|create_function'
  8451. . '|\bexec'
  8452. . '|\bpopen'
  8453. . '|\bfwrite'
  8454. . '|\bfputs'
  8455. . '|file_get_'
  8456. . '|call_user_func'
  8457. . '|file_put_'
  8458. . '|\$_REQUEST'
  8459. . '|ob_start'
  8460. . '|\$_GET'
  8461. . '|\$_POST'
  8462. . '|\$_SERVER'
  8463. . '|\$_FILES'
  8464. . '|\bmove'
  8465. . '|\bcopy'
  8466. . '|\barray_'
  8467. . '|reg_replace'
  8468. . '|\bmysql_'
  8469. . '|\bchr'
  8470. . '|fsockopen'
  8471. . '|\$GLOBALS'
  8472. . '|sqliteCreateFunction'
  8473. . '|EICAR-STANDARD-ANTIVIRUS-TEST-FILE';
  8474. private static $critical_js_content = '<script'
  8475. . '|<iframe'
  8476. . '|<object'
  8477. . '|<embed'
  8478. . '|fromCharCode'
  8479. . '|setTimeout'
  8480. . '|setInterval'
  8481. . '|location\.'
  8482. . '|document\.'
  8483. . '|window\.'
  8484. . '|navigator\.'
  8485. . '|\$(this)\.'; /**$g_VirusEntries**/
  8486. private static $critical_phish_content = '<\s*title'
  8487. . '|<\s*html'
  8488. . '|<\s*form'
  8489. . '|<\s*body'
  8490. . '|bank'
  8491. . '|account'; /**$g_PhishEntries*/
  8492. public function __construct()
  8493. {
  8494. $this->extensions = array_flip($this->extensions);
  8495. $this->js_extensions = array_flip($this->js_extensions);
  8496. $this->phish_extensions = array_flip($this->phish_extensions);
  8497. }
  8498. /**
  8499. * Check whether a particular file with specified extension is critical.
  8500. *
  8501. * @param string $ext
  8502. * @param string $type
  8503. * @return bool
  8504. */
  8505. public function satisfiedBy($ext, $type)
  8506. {
  8507. return isset($this->{$type}[$ext]);
  8508. }
  8509. /**
  8510. * Check whether a particular content is critical.
  8511. *
  8512. * @param string $content
  8513. * @param string $type
  8514. * @return bool
  8515. */
  8516. public function satisfiedByContent($content, $type)
  8517. {
  8518. return preg_match('~' . $this->{$type} . '~smiS', $content, $l_Found) ? true : false;
  8519. }
  8520. }
  8521. class Helpers
  8522. {
  8523. public static function normalize($string, $save_length = false)
  8524. {
  8525. $search = array( ' ;', ' =', ' ,', ' .', ' (', ' )', ' {', ' }', '; ', '= ', ', ', '. '
  8526. , '( ', '( ', '{ ', '} ', ' !', ' >', ' <', ' _', '_ ', '< ', '> ', ' $', ' %', '% '
  8527. , '# ', ' #', '^ ', ' ^', ' &', '& ', ' ?', '? ');
  8528. $replace = array( ';', '=', ',', '.', '(', ')', '{', '}', ';', '=', ',', '.'
  8529. , '(', ')', '{', '}', '!', '>', '<', '_', '_', '<', '>', '$', '%', '%'
  8530. , '#', '#', '^', '^', '&', '&', '?', '?');
  8531. if (!$save_length) {
  8532. $string = str_replace('@', '', $string);
  8533. $string = preg_replace('~\s+~smi', ' ', $string);
  8534. $string = str_replace($search, $replace, $string);
  8535. }
  8536. $string = preg_replace_callback('~\bchr\(\s*([0-9a-fA-FxX]+)\s*\)~', function($m) use ($save_length) {
  8537. if ($save_length) {
  8538. return str_pad("'" . @chr(intval($m[1], 0)) . "'", strlen($m[0]), ' ');
  8539. } else {
  8540. return "'" . @chr(intval($m[1], 0)) . "'";
  8541. }
  8542. }, $string);
  8543. $string = preg_replace_callback('/\&\#([0-9]{1,3});/i', function($m) use ($save_length) {
  8544. if ($save_length) {
  8545. return str_pad(@chr((int)$m[1]), strlen($m[0]), ' ');
  8546. } else {
  8547. return @chr((int)$m[1]);
  8548. }
  8549. }, $string);
  8550. $string = preg_replace_callback('/\\\\x([a-fA-F0-9]{1,2})/i', function($m) use ($save_length) {
  8551. if ($save_length) {
  8552. return str_pad(chr(@hexdec($m[1])), strlen($m[0]), ' ');
  8553. } else {
  8554. return @chr(hexdec($m[1]));
  8555. }
  8556. }, $string);
  8557. $string = preg_replace_callback('/\\\\([0-9]{1,3})/i', function($m) use ($save_length) {
  8558. if ($save_length) {
  8559. return str_pad(@chr(octdec($m[1])), strlen($m[0]), ' ');
  8560. } else {
  8561. return @chr(octdec($m[1]));
  8562. }
  8563. }, $string);
  8564. $string = preg_replace_callback('/[\'"]\s*?\.+\s*?[\'"]/smi', function($m) use ($save_length) {
  8565. if ($save_length) {
  8566. return str_repeat(' ', strlen($m[0]));
  8567. } else {
  8568. return '';
  8569. }
  8570. }, $string);
  8571. $string = preg_replace_callback('/[\'"]\s*?\++\s*?[\'"]/smi', function($m) use ($save_length) {
  8572. if ($save_length) {
  8573. return str_repeat(' ', strlen($m[0]));
  8574. } else {
  8575. return '';
  8576. }
  8577. }, $string);
  8578. if (!$save_length) {
  8579. $string = str_replace('<?php', '<?php ', $string);
  8580. $string = preg_replace('~\s+~', ' ', $string);
  8581. }
  8582. return $string;
  8583. }
  8584. public static function format($source)
  8585. {
  8586. $t_count = 0;
  8587. $in_object = false;
  8588. $in_at = false;
  8589. $in_php = false;
  8590. $in_for = false;
  8591. $in_comp = false;
  8592. $in_quote = false;
  8593. $in_var = false;
  8594. if (!defined('T_ML_COMMENT')) {
  8595. define('T_ML_COMMENT', T_COMMENT);
  8596. }
  8597. $result = '';
  8598. @$tokens = token_get_all($source);
  8599. foreach ($tokens as $token) {
  8600. if (is_string($token)) {
  8601. $token = trim($token);
  8602. if ($token == '{') {
  8603. if ($in_for) {
  8604. $in_for = false;
  8605. }
  8606. if (!$in_quote && !$in_var) {
  8607. $t_count++;
  8608. $result = rtrim($result) . ' ' . $token . "\n" . str_repeat(' ', $t_count);
  8609. } else {
  8610. $result = rtrim($result) . $token;
  8611. }
  8612. } elseif ($token == '$') {
  8613. $in_var = true;
  8614. $result .= $token;
  8615. } elseif ($token == '}') {
  8616. if (!$in_quote && !$in_var) {
  8617. $new_line = true;
  8618. $t_count--;
  8619. if ($t_count < 0) {
  8620. $t_count = 0;
  8621. }
  8622. $result = rtrim($result) . "\n" . str_repeat(' ', $t_count) .
  8623. $token . "\n" . @str_repeat(' ', $t_count);
  8624. } else {
  8625. $result = rtrim($result) . $token;
  8626. }
  8627. if ($in_var) {
  8628. $in_var = false;
  8629. }
  8630. } elseif ($token == ';') {
  8631. if ($in_comp) {
  8632. $in_comp = false;
  8633. }
  8634. if ($in_for) {
  8635. $result .= $token . ' ';
  8636. } else {
  8637. $result .= $token . "\n" . str_repeat(' ', $t_count);
  8638. }
  8639. } elseif ($token == ':') {
  8640. if ($in_comp) {
  8641. $result .= ' ' . $token . ' ';
  8642. } else {
  8643. $result .= $token . "\n" . str_repeat(' ', $t_count);
  8644. }
  8645. } elseif ($token == '(') {
  8646. $result .= ' ' . $token;
  8647. } elseif ($token == ')') {
  8648. $result .= $token;
  8649. } elseif ($token == '@') {
  8650. $in_at = true;
  8651. $result .= $token;
  8652. } elseif ($token == '.') {
  8653. $result .= ' ' . $token . ' ';
  8654. } elseif ($token == '=') {
  8655. $result .= ' ' . $token . ' ';
  8656. } elseif ($token == '?') {
  8657. $in_comp = true;
  8658. $result .= ' ' . $token . ' ';
  8659. } elseif ($token == '"') {
  8660. if ($in_quote) {
  8661. $in_quote = false;
  8662. } else {
  8663. $in_quote = true;
  8664. }
  8665. $result .= $token;
  8666. } else {
  8667. $result .= $token;
  8668. }
  8669. } else {
  8670. list($id, $text) = $token;
  8671. switch ($id) {
  8672. case T_OPEN_TAG:
  8673. case T_OPEN_TAG_WITH_ECHO:
  8674. $in_php = true;
  8675. $result .= trim($text) . "\n";
  8676. break;
  8677. case T_CLOSE_TAG:
  8678. $in_php = false;
  8679. $result .= trim($text);
  8680. break;
  8681. case T_FOR:
  8682. $in_for = true;
  8683. $result .= trim($text);
  8684. break;
  8685. case T_OBJECT_OPERATOR:
  8686. $result .= trim($text);
  8687. $in_object = true;
  8688. break;
  8689. case T_ENCAPSED_AND_WHITESPACE:
  8690. case T_WHITESPACE:
  8691. $result .= trim($text);
  8692. break;
  8693. case T_RETURN:
  8694. $result = rtrim($result) . "\n" . str_repeat(' ', $t_count) . trim($text) . ' ';
  8695. break;
  8696. case T_ELSE:
  8697. case T_ELSEIF:
  8698. $result = rtrim($result) . ' ' . trim($text) . ' ';
  8699. break;
  8700. case T_CASE:
  8701. case T_DEFAULT:
  8702. $result = rtrim($result) . "\n" . str_repeat(' ', $t_count - 1) . trim($text) . ' ';
  8703. break;
  8704. case T_FUNCTION:
  8705. case T_CLASS:
  8706. $result .= "\n" . str_repeat(' ', $t_count) . trim($text) . ' ';
  8707. break;
  8708. case T_AND_EQUAL:
  8709. case T_AS:
  8710. case T_BOOLEAN_AND:
  8711. case T_BOOLEAN_OR:
  8712. case T_CONCAT_EQUAL:
  8713. case T_DIV_EQUAL:
  8714. case T_DOUBLE_ARROW:
  8715. case T_IS_EQUAL:
  8716. case T_IS_GREATER_OR_EQUAL:
  8717. case T_IS_IDENTICAL:
  8718. case T_IS_NOT_EQUAL:
  8719. case T_IS_NOT_IDENTICAL:
  8720. case T_LOGICAL_AND:
  8721. case T_LOGICAL_OR:
  8722. case T_LOGICAL_XOR:
  8723. case T_MINUS_EQUAL:
  8724. case T_MOD_EQUAL:
  8725. case T_MUL_EQUAL:
  8726. case T_OR_EQUAL:
  8727. case T_PLUS_EQUAL:
  8728. case T_SL:
  8729. case T_SL_EQUAL:
  8730. case T_SR:
  8731. case T_SR_EQUAL:
  8732. case T_START_HEREDOC:
  8733. case T_XOR_EQUAL:
  8734. $result = rtrim($result) . ' ' . trim($text) . ' ';
  8735. break;
  8736. case T_COMMENT:
  8737. $result = rtrim($result) . "\n" . str_repeat(' ', $t_count) . trim($text) . ' ';
  8738. break;
  8739. case T_ML_COMMENT:
  8740. $result = rtrim($result) . "\n";
  8741. $lines = explode("\n", $text);
  8742. foreach ($lines as $line) {
  8743. $result .= str_repeat(' ', $t_count) . trim($line);
  8744. }
  8745. $result .= "\n";
  8746. break;
  8747. case T_INLINE_HTML:
  8748. $result .= $text;
  8749. break;
  8750. default:
  8751. $result .= trim($text);
  8752. break;
  8753. }
  8754. }
  8755. }
  8756. return $result;
  8757. }
  8758. public static function replaceCreateFunction($str)
  8759. {
  8760. $hangs = 20;
  8761. while (strpos($str, 'create_function') !== false && $hangs--) {
  8762. $start_pos = strpos($str, 'create_function');
  8763. $end_pos = 0;
  8764. $brackets = 0;
  8765. $started = false;
  8766. $opened = 0;
  8767. $closed = 0;
  8768. for ($i = $start_pos, $iMax = strlen($str); $i < $iMax; $i++) {
  8769. if ($str[$i] == '(') {
  8770. $started = true;
  8771. $brackets++;
  8772. $opened++;
  8773. } else if ($str[$i] == ')') {
  8774. $closed++;
  8775. $brackets--;
  8776. }
  8777. if ($brackets == 0 && $started) {
  8778. $end_pos = $i + 1;
  8779. break;
  8780. }
  8781. }
  8782. $cr_func = substr($str, $start_pos, $end_pos - $start_pos);
  8783. $func = implode('function(', explode('create_function(\'', $cr_func, 2));
  8784. //$func = substr_replace('create_function(\'', 'function(', $cr_func);
  8785. //$func = str_replace('\',\'', ') {', $func);
  8786. $func = implode(') {', explode('\',\'', $func, 2));
  8787. $func = substr($func, 0, -2) . '}';
  8788. $str = str_replace($cr_func, $func, $str);
  8789. }
  8790. return $str;
  8791. }
  8792. public static function calc($expr)
  8793. {
  8794. if (is_array($expr)) {
  8795. $expr = $expr[0];
  8796. }
  8797. preg_match('~(chr|min|max|round)?\(([^\)]+)\)~msi', $expr, $expr_arr);
  8798. if (@$expr_arr[1] == 'min' || @$expr_arr[1] == 'max') {
  8799. return $expr_arr[1](explode(',', $expr_arr[2]));
  8800. } elseif (@$expr_arr[1] == 'chr') {
  8801. if ($expr_arr[2][0] === '(') {
  8802. $expr_arr[2] = substr($expr_arr[2], 1);
  8803. }
  8804. $expr_arr[2] = self::calc($expr_arr[2]);
  8805. return $expr_arr[1](intval($expr_arr[2]));
  8806. } elseif (@$expr_arr[1] == 'round') {
  8807. $expr_arr[2] = self::calc($expr_arr[2]);
  8808. return $expr_arr[1]($expr_arr[2]);
  8809. } else {
  8810. preg_match_all('~([\d\.a-fx]+)([\*\/\-\+\^\|\&])?~', $expr, $expr_arr);
  8811. foreach ($expr_arr[1] as &$expr_arg) {
  8812. if (strpos($expr_arg, "0x")!==false) {
  8813. $expr = str_replace($expr_arg, hexdec($expr_arg), $expr);
  8814. $expr_arg = hexdec($expr_arg);
  8815. }
  8816. }
  8817. if (in_array('*', $expr_arr[2]) !== false) {
  8818. $pos = array_search('*', $expr_arr[2]);
  8819. $res = $expr_arr[1][$pos] * $expr_arr[1][$pos + 1];
  8820. $pos_subst = strpos($expr, $expr_arr[1][$pos] . '*' . $expr_arr[1][$pos + 1]);
  8821. $expr = substr_replace($expr, $res, $pos_subst, strlen($expr_arr[1][$pos] . '*' . $expr_arr[1][$pos + 1]));
  8822. $expr = self::calc($expr);
  8823. } elseif (in_array('/', $expr_arr[2]) !== false) {
  8824. $pos = array_search('/', $expr_arr[2]);
  8825. $res = $expr_arr[1][$pos] / $expr_arr[1][$pos + 1];
  8826. $pos_subst = strpos($expr, $expr_arr[1][$pos] . '/' . $expr_arr[1][$pos + 1]);
  8827. $expr = substr_replace($expr, $res, $pos_subst, strlen($expr_arr[1][$pos] . '/' . $expr_arr[1][$pos + 1]));
  8828. $expr = self::calc($expr);
  8829. } elseif (in_array('-', $expr_arr[2]) !== false) {
  8830. $pos = array_search('-', $expr_arr[2]);
  8831. $res = $expr_arr[1][$pos] - $expr_arr[1][$pos + 1];
  8832. $pos_subst = strpos($expr, $expr_arr[1][$pos] . '-' . $expr_arr[1][$pos + 1]);
  8833. $expr = substr_replace($expr, $res, $pos_subst, strlen($expr_arr[1][$pos] . '-' . $expr_arr[1][$pos + 1]));
  8834. $expr = self::calc($expr);
  8835. } elseif (in_array('+', $expr_arr[2]) !== false) {
  8836. $pos = array_search('+', $expr_arr[2]);
  8837. $res = $expr_arr[1][$pos] + $expr_arr[1][$pos + 1];
  8838. $pos_subst = strpos($expr, $expr_arr[1][$pos] . '+' . $expr_arr[1][$pos + 1]);
  8839. $expr = substr_replace($expr, $res, $pos_subst, strlen($expr_arr[1][$pos] . '+' . $expr_arr[1][$pos + 1]));
  8840. $expr = self::calc($expr);
  8841. } elseif (in_array('^', $expr_arr[2]) !== false) {
  8842. $pos = array_search('^', $expr_arr[2]);
  8843. $res = $expr_arr[1][$pos] ^ $expr_arr[1][$pos + 1];
  8844. $pos_subst = strpos($expr, $expr_arr[1][$pos] . '^' . $expr_arr[1][$pos + 1]);
  8845. $expr = substr_replace($expr, $res, $pos_subst, strlen($expr_arr[1][$pos] . '^' . $expr_arr[1][$pos + 1]));
  8846. $expr = self::calc($expr);
  8847. } elseif (in_array('|', $expr_arr[2]) !== false) {
  8848. $pos = array_search('|', $expr_arr[2]);
  8849. $res = $expr_arr[1][$pos] | $expr_arr[1][$pos + 1];
  8850. $pos_subst = strpos($expr, $expr_arr[1][$pos] . '|' . $expr_arr[1][$pos + 1]);
  8851. $expr = substr_replace($expr, $res, $pos_subst, strlen($expr_arr[1][$pos] . '|' . $expr_arr[1][$pos + 1]));
  8852. $expr = self::calc($expr);
  8853. } elseif (in_array('&', $expr_arr[2]) !== false) {
  8854. $pos = array_search('&', $expr_arr[2]);
  8855. $res = $expr_arr[1][$pos] & $expr_arr[1][$pos + 1];
  8856. $pos_subst = strpos($expr, $expr_arr[1][$pos] . '&' . $expr_arr[1][$pos + 1]);
  8857. $expr = substr_replace($expr, $res, $pos_subst, strlen($expr_arr[1][$pos] . '&' . $expr_arr[1][$pos + 1]));
  8858. $expr = self::calc($expr);
  8859. } else {
  8860. return $expr;
  8861. }
  8862. return $expr;
  8863. }
  8864. }
  8865. public static function getEvalCode($string)
  8866. {
  8867. preg_match("/eval\(([^\)]+)\)/msi", $string, $matches);
  8868. return (empty($matches)) ? '' : end($matches);
  8869. }
  8870. public static function getTextInsideQuotes($string)
  8871. {
  8872. if (preg_match_all('/("(.*)")/msi', $string, $matches)) {
  8873. return @end(end($matches));
  8874. } elseif (preg_match_all('/\((\'(.*)\')/msi', $string, $matches)) {
  8875. return @end(end($matches));
  8876. } else {
  8877. return '';
  8878. }
  8879. }
  8880. public static function getNeedles($string)
  8881. {
  8882. preg_match_all("/'(.*?)'/msi", $string, $matches);
  8883. return (empty($matches)) ? array() : $matches[1];
  8884. }
  8885. public static function getHexValues($string)
  8886. {
  8887. preg_match_all('/0x[a-fA-F0-9]{1,8}/msi', $string, $matches);
  8888. return (empty($matches)) ? array() : $matches[0];
  8889. }
  8890. public static function formatPHP($string)
  8891. {
  8892. $string = str_replace('<?php', '', $string);
  8893. $string = str_replace('?>', '', $string);
  8894. $string = str_replace(PHP_EOL, "", $string);
  8895. $string = str_replace(";", ";\n", $string);
  8896. $string = str_replace("}", "}\n", $string);
  8897. return $string;
  8898. }
  8899. public static function detect_utf_encoding($text)
  8900. {
  8901. $first2 = substr($text, 0, 2);
  8902. $first3 = substr($text, 0, 3);
  8903. $first4 = substr($text, 0, 4);
  8904. if ($first4 == chr(0x00) . chr(0x00) . chr(0xFE) . chr(0xFF)) {
  8905. return 'UTF-32BE';
  8906. } elseif ($first4 == chr(0xFF) . chr(0xFE) . chr(0x00) . chr(0x00)) {
  8907. return 'UTF-32LE';
  8908. } elseif ($first2 == chr(0xFE) . chr(0xFF)) {
  8909. return 'UTF-16BE';
  8910. } elseif ($first2 == chr(0xFF) . chr(0xFE)) {
  8911. return 'UTF-16LE';
  8912. }
  8913. return false;
  8914. }
  8915. //from sample_16
  8916. public static function someDecoder($str)
  8917. {
  8918. $str = base64_decode($str);
  8919. $TC9A16C47DA8EEE87 = 0;
  8920. $TA7FB8B0A1C0E2E9E = 0;
  8921. $T17D35BB9DF7A47E4 = 0;
  8922. $T65CE9F6823D588A7 = (ord($str[1]) << 8) + ord($str[2]);
  8923. $i = 3;
  8924. $T77605D5F26DD5248 = 0;
  8925. $block = 16;
  8926. $T7C7E72B89B83E235 = "";
  8927. $T43D5686285035C13 = "";
  8928. $len = strlen($str);
  8929. $T6BBC58A3B5B11DC4 = 0;
  8930. for (; $i < $len;) {
  8931. if ($block == 0) {
  8932. $T65CE9F6823D588A7 = (ord($str[$i++]) << 8);
  8933. $T65CE9F6823D588A7 += ord($str[$i++]);
  8934. $block = 16;
  8935. }
  8936. if ($T65CE9F6823D588A7 & 0x8000) {
  8937. $TC9A16C47DA8EEE87 = (ord($str[$i++]) << 4);
  8938. $TC9A16C47DA8EEE87 += (ord($str[$i]) >> 4);
  8939. if ($TC9A16C47DA8EEE87) {
  8940. $TA7FB8B0A1C0E2E9E = (ord($str[$i++]) & 0x0F) + 3;
  8941. for ($T17D35BB9DF7A47E4 = 0; $T17D35BB9DF7A47E4 < $TA7FB8B0A1C0E2E9E; $T17D35BB9DF7A47E4++) {
  8942. $T7C7E72B89B83E235[$T77605D5F26DD5248 + $T17D35BB9DF7A47E4] =
  8943. $T7C7E72B89B83E235[$T77605D5F26DD5248 - $TC9A16C47DA8EEE87 + $T17D35BB9DF7A47E4];
  8944. }
  8945. $T77605D5F26DD5248 += $TA7FB8B0A1C0E2E9E;
  8946. } else {
  8947. $TA7FB8B0A1C0E2E9E = (ord($str[$i++]) << 8);
  8948. $TA7FB8B0A1C0E2E9E += ord($str[$i++]) + 16;
  8949. for ($T17D35BB9DF7A47E4 = 0; $T17D35BB9DF7A47E4 < $TA7FB8B0A1C0E2E9E;
  8950. $T7C7E72B89B83E235[$T77605D5F26DD5248 + $T17D35BB9DF7A47E4++] = $str[$i]) {
  8951. }
  8952. $i++;
  8953. $T77605D5F26DD5248 += $TA7FB8B0A1C0E2E9E;
  8954. }
  8955. } else {
  8956. $T7C7E72B89B83E235[$T77605D5F26DD5248++] = $str[$i++];
  8957. }
  8958. $T65CE9F6823D588A7 <<= 1;
  8959. $block--;
  8960. if ($i == $len) {
  8961. $T43D5686285035C13 = $T7C7E72B89B83E235;
  8962. if (is_array($T43D5686285035C13)) {
  8963. $T43D5686285035C13 = implode($T43D5686285035C13);
  8964. }
  8965. $T43D5686285035C13 = "?" . ">" . $T43D5686285035C13;
  8966. return $T43D5686285035C13;
  8967. }
  8968. }
  8969. }
  8970. //
  8971. public static function someDecoder2($WWAcmoxRAZq, $sBtUiFZaz) //sample_05
  8972. {
  8973. $JYekrRTYM = str_rot13(gzinflate(str_rot13(base64_decode('y8svKCwqLiktK6+orFdZV0FWWljPyMzKzsmNNzQyNjE1M7ewNAAA'))));
  8974. if ($WWAcmoxRAZq == 'asedferg456789034689gd') {
  8975. $cEerbvwKPI = $JYekrRTYM[18] . $JYekrRTYM[19] . $JYekrRTYM[17] . $JYekrRTYM[17] . $JYekrRTYM[4] . $JYekrRTYM[21];
  8976. return $cEerbvwKPI($sBtUiFZaz);
  8977. } elseif ($WWAcmoxRAZq == 'zfcxdrtgyu678954ftyuip') {
  8978. $JWTDeUKphI = $JYekrRTYM[1] . $JYekrRTYM[0] . $JYekrRTYM[18] . $JYekrRTYM[4] . $JYekrRTYM[32] .
  8979. $JYekrRTYM[30] . $JYekrRTYM[26] . $JYekrRTYM[3] . $JYekrRTYM[4] . $JYekrRTYM[2] . $JYekrRTYM[14] .
  8980. $JYekrRTYM[3] . $JYekrRTYM[4];
  8981. return $JWTDeUKphI($sBtUiFZaz);
  8982. } elseif ($WWAcmoxRAZq == 'gyurt456cdfewqzswexcd7890df') {
  8983. $rezmMBMev = $JYekrRTYM[6] . $JYekrRTYM[25] . $JYekrRTYM[8] . $JYekrRTYM[13] . $JYekrRTYM[5] . $JYekrRTYM[11] . $JYekrRTYM[0] . $JYekrRTYM[19] . $JYekrRTYM[4];
  8984. return $rezmMBMev($sBtUiFZaz);
  8985. } elseif ($WWAcmoxRAZq == 'zcdfer45dferrttuihvs4321890mj') {
  8986. $WbbQXOQbH = $JYekrRTYM[18] . $JYekrRTYM[19] . $JYekrRTYM[17] . $JYekrRTYM[26] . $JYekrRTYM[17] . $JYekrRTYM[14] . $JYekrRTYM[19] . $JYekrRTYM[27] . $JYekrRTYM[29];
  8987. return $WbbQXOQbH($sBtUiFZaz);
  8988. } elseif ($WWAcmoxRAZq == 'zsedrtre4565fbghgrtyrssdxv456') {
  8989. $jPnPLPZcMHgH = $JYekrRTYM[2] . $JYekrRTYM[14] . $JYekrRTYM[13] . $JYekrRTYM[21] . $JYekrRTYM[4] . $JYekrRTYM[17] . $JYekrRTYM[19] . $JYekrRTYM[26] . $JYekrRTYM[20] . $JYekrRTYM[20] . $JYekrRTYM[3] . $JYekrRTYM[4] . $JYekrRTYM[2] . $JYekrRTYM[14] . $JYekrRTYM[3] . $JYekrRTYM[4];
  8990. return $jPnPLPZcMHgH($sBtUiFZaz);
  8991. }
  8992. }
  8993. public static function someDecoder3($str)
  8994. {
  8995. $l = base64_decode($str);
  8996. $lllllll = 0;
  8997. $lllll = 3;
  8998. $llllll = (ord($l[1]) << 8) + ord($l[2]);
  8999. $lllllllll = 16;
  9000. $llllllll = [];
  9001. for ($lllllMax = strlen($l); $lllll < $lllllMax;) {
  9002. if ($lllllllll == 0) {
  9003. $llllll = (ord($l[$lllll++]) << 8);
  9004. $llllll+= ord($l[$lllll++]);
  9005. $lllllllll = 16;
  9006. }
  9007. if ($llllll & 0x8000) {
  9008. $lll = (ord($l[$lllll++]) << 4);
  9009. $lll+= (ord($l[$lllll]) >> 4);
  9010. if ($lll) {
  9011. $ll = (ord($l[$lllll++]) & 0x0f) + 3;
  9012. for ($llll = 0;$llll < $ll;$llll++) $llllllll[$lllllll + $llll] = $llllllll[$lllllll - $lll + $llll];
  9013. $lllllll+= $ll;
  9014. } else {
  9015. $ll = (ord($l[$lllll++]) << 8);
  9016. $ll+= ord($l[$lllll++]) + 16;
  9017. for ($llll = 0;$llll < $ll;$llllllll[$lllllll + $llll++] = ord($l[$lllll]));
  9018. $lllll++;
  9019. $lllllll+= $ll;
  9020. }
  9021. } else {
  9022. $llllllll[$lllllll++] = ord($l[$lllll++]);
  9023. }
  9024. $llllll <<= 1;
  9025. $lllllllll--;
  9026. }
  9027. $lllll = 0;
  9028. $lllllllll="?".chr(62);
  9029. $llllllllll = "";
  9030. for (;$lllll < $lllllll;) {
  9031. $llllllllll.= chr($llllllll[$lllll++] ^ 0x07);
  9032. }
  9033. $lllllllll.=$llllllllll.chr(60)."?";
  9034. return $lllllllll;
  9035. }
  9036. public static function PHPJiaMi_decoder($str, $md5, $rand, $lower_range = '')
  9037. {
  9038. $md5_xor = md5($md5);
  9039. $lower_range = !$lower_range ? ord($rand) : $lower_range;
  9040. $layer1 = '';
  9041. for ($i=0, $iMax = strlen($str); $i < $iMax; $i++) {
  9042. $layer1 .= ord($str[$i]) < 245 ? ((ord($str[$i]) > $lower_range && ord($str[$i]) < 245) ? chr(ord($str[$i]) / 2) : $str[$i]) : '';
  9043. }
  9044. $layer1 = base64_decode($layer1);
  9045. $result = '';
  9046. $j = $len_md5_xor = strlen($md5_xor);
  9047. for ($i=0, $iMax = strlen($layer1); $i < $iMax; $i++) {
  9048. $j = $j ? $j : $len_md5_xor;
  9049. $j--;
  9050. $result .= $layer1[$i] ^ $md5_xor[$j];
  9051. }
  9052. return $result;
  9053. }
  9054. public static function someDecoder4($ae, $key)
  9055. {
  9056. $at = array();
  9057. for ($i = 0, $iMax = strlen($key); $i < $iMax; $i++) {
  9058. if ((int)$key[$i] > 0) {
  9059. $at[$i] = $key[$i];
  9060. }
  9061. }
  9062. $at = array_values($at);
  9063. $str = "";
  9064. for ($i = 0, $iMax = count($ae); $i < $iMax; $i++) {
  9065. if ($i < count($ae) - 1) {
  9066. $str .= str_replace(md5($at[$i]), "", $ae[$i]);
  9067. } else {
  9068. $str .= $ae[$i];
  9069. }
  9070. }
  9071. return $str;
  9072. }
  9073. public static function OELoveDecoder($arg1, $arg2 = '')
  9074. {
  9075. if (empty($arg1)) {
  9076. return '';
  9077. }
  9078. $arg1 = base64_decode($arg1);
  9079. if ($arg2 == '') return ~$arg1;
  9080. //if ($arg2 == '-1') @271552362217();
  9081. $len = strlen($arg1);
  9082. $arg2 = str_pad($arg2, $len, $arg2);
  9083. return $arg2 ^ $arg1;
  9084. }
  9085. public static function stripsquoteslashes($str)
  9086. {
  9087. $res = '';
  9088. for ($i = 0, $iMax = strlen($str); $i < $iMax; $i++) {
  9089. if (isset($str[$i+1]) && ($str[$i] == '\\' && ($str[$i+1] == '\\' || $str[$i+1] == '\''))) {
  9090. continue;
  9091. } else {
  9092. $res .= $str[$i];
  9093. }
  9094. }
  9095. return $res;
  9096. }
  9097. public static function isSafeFunc($str)
  9098. {
  9099. $safeFuncs = [
  9100. 'base64_decode', 'gzinflate', 'gzuncompress', 'strrev',
  9101. 'str_rot13', 'urldecode', 'rawurldecode', 'stripslashes',
  9102. 'htmlspecialchars_decode', 'convert_uudecode','pack',
  9103. 'str_repeat', 'sprintf', 'str_replace', 'strtr'
  9104. ];
  9105. return in_array(strtolower($str), $safeFuncs);
  9106. }
  9107. public static function aanKFMDigitsDecode($digits)
  9108. {
  9109. $res = '';
  9110. $len = ceil(strlen($digits) / 3) * 3;
  9111. $cipher = str_pad($digits, $len, '0', STR_PAD_LEFT);
  9112. for ($i = 0; $i < (strlen($cipher) / 3);$i++) {
  9113. $res .= chr(substr(strval($cipher), $i * 3, 3));
  9114. }
  9115. return $res;
  9116. }
  9117. public static function obf20200414_1_decrypt($data, $key)
  9118. {
  9119. $key = md5($key);
  9120. $x = 0;
  9121. $data = base64_decode($data);
  9122. $len = strlen($data);
  9123. $l = strlen($key);
  9124. $char = '';
  9125. for ($i = 0; $i < $len; $i++) {
  9126. if ($x == $l) {
  9127. $x = 0;
  9128. }
  9129. $char .= substr($key, $x, 1);
  9130. $x++;
  9131. }
  9132. $str = '';
  9133. for ($i = 0; $i < $len; $i++) {
  9134. if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1))) {
  9135. $str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));
  9136. } else {
  9137. $str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));
  9138. }
  9139. }
  9140. return $str;
  9141. }
  9142. public static function Xtea_decrypt($text, $key)
  9143. {
  9144. $_key = '';
  9145. $cbc = 1;
  9146. if(is_array($key)) {
  9147. $_key = $key;
  9148. } else if(isset($key) && !empty($key)) {
  9149. $_key = self::_str2long(str_pad($key, 16, $key));
  9150. } else {
  9151. $_key = array(0,0,0,0);
  9152. }
  9153. $plain = array();
  9154. $cipher = self::_str2long(base64_decode($text));
  9155. if($cbc == 1) {
  9156. $i = 2;
  9157. } else {
  9158. $i = 0;
  9159. }
  9160. for ($i, $iMax = count($cipher); $i < $iMax; $i += 2) {
  9161. $return = self::block_decrypt($cipher[$i], $cipher[$i+1], $_key);
  9162. if($cbc == 1) {
  9163. $plain[] = array($return[0] ^ $cipher[$i-2], $return[1] ^ $cipher[$i-1]);
  9164. } else {
  9165. $plain[] = $return;
  9166. }
  9167. }
  9168. $output = "";
  9169. for($i = 0, $iMax = count($plain); $i < $iMax; $i++) {
  9170. $output .= self::_long2str($plain[$i][0]);
  9171. $output .= self::_long2str($plain[$i][1]);
  9172. }
  9173. return $output;
  9174. }
  9175. public static function calculateMathStr($task)
  9176. {
  9177. $res = $task;
  9178. while (preg_match('~\(?(\d+)([+\-*\/])(\d+)\)?~', $res, $subMatch)) {
  9179. if (count($subMatch) === 4) {
  9180. $subSearch = $subMatch[0];
  9181. $operator = $subMatch[2];
  9182. $number_1 = $subMatch[1];
  9183. $number_2 = $subMatch[3];
  9184. $res = str_replace($subSearch, self::calc("$number_1$operator$number_2"), $res);
  9185. } else {
  9186. return $res;
  9187. }
  9188. }
  9189. return $res;
  9190. }
  9191. public static function decrypt_T_func($l)
  9192. {
  9193. $x2 = 256;
  9194. $W2 = 8;
  9195. $cY = array();
  9196. $I3 = 0;
  9197. $C4 = 0;
  9198. for ($bs = 0; $bs < strlen($l); $bs++) {
  9199. $I3 = ($I3 << 8) + ord($l[$bs]);
  9200. $C4 += 8;
  9201. if ($C4 >= $W2) {
  9202. $C4 -= $W2;
  9203. $cY[] = $I3 >> $C4;
  9204. $I3 &= (1 << $C4) - 1;
  9205. $x2++;
  9206. if ($x2 >> $W2) {
  9207. $W2++;
  9208. }
  9209. }
  9210. }
  9211. $K5 = range("\x0", "\377");
  9212. $UH = '';
  9213. foreach ($cY as $bs => $xd) {
  9214. if (!isset($K5[$xd])) {
  9215. $iU = $Co . $Co[0];
  9216. } else {
  9217. $iU = $K5[$xd];
  9218. }
  9219. $UH .= $iU;
  9220. if ($bs) {
  9221. $K5[] = $Co . $iU[0];
  9222. }
  9223. $Co = $iU;
  9224. }
  9225. return $UH;
  9226. }
  9227. public static function getDecryptKeyForTinkleShell($size)
  9228. {
  9229. $bx = md5(base64_encode($size));
  9230. $len = strlen($bx);
  9231. $arr = [];
  9232. for ($i = 0; $i < $len; $i++) {
  9233. $arr[] = substr($bx, $i, 1);
  9234. }
  9235. $arr = array_unique($arr);
  9236. $newstr = "";
  9237. foreach ($arr as $k => $v) {
  9238. $newstr .= $v;
  9239. }
  9240. if (strlen($newstr) < 9) {
  9241. if (strpos($newstr, 'A') === false) {
  9242. $newstr .= 'A';
  9243. }
  9244. if (strpos($newstr, 'B') === false) {
  9245. $newstr .= 'B';
  9246. }
  9247. if (strpos($newstr, 'C') === false) {
  9248. $newstr .= 'C';
  9249. }
  9250. if (strpos($newstr, 'D') === false) {
  9251. $newstr .= 'D';
  9252. }
  9253. if (strpos($newstr, 'E') === false) {
  9254. $newstr .= 'E';
  9255. }
  9256. if (strpos($newstr, 'F') === false) {
  9257. $newstr .= 'F';
  9258. }
  9259. if (strpos($newstr, 'G') === false) {
  9260. $newstr .= 'G';
  9261. }
  9262. }
  9263. return strtoupper($newstr);
  9264. }
  9265. /**
  9266. * @param string $dictionary
  9267. * @param string $content
  9268. * @return array
  9269. */
  9270. public static function getVarsFromDictionary($dictionary, $content)
  9271. {
  9272. $vars = [];
  9273. preg_match_all('~(\$\w+=(\s?\.?\s?\$\w+[{\[]\d+[\]}];?)+)~ms', $content, $concatMatches);
  9274. for ($i = 0; $iMax = count($concatMatches), $i <= $iMax; $i++) {
  9275. preg_match_all('~(\$\w+(=))?(\s?(\.?)\s?\$\w+[{\[](\d+)[\]}])~msi', $concatMatches[0][$i], $varMatches);
  9276. for ($j = 0; $jMax = count($varMatches[0]), $j < $jMax; $j++) {
  9277. $varName = substr($varMatches[1][0], 0, -1);
  9278. $value = $dictionary[(int)$varMatches[5][$j]] ?? '';
  9279. if ($varMatches[2][$j] === '=') {
  9280. $vars[$varName] = $value;
  9281. } else {
  9282. $vars[$varName] .= $value;
  9283. }
  9284. }
  9285. }
  9286. return $vars;
  9287. }
  9288. /**
  9289. * @param string $str
  9290. * @return string
  9291. */
  9292. public static function concatVariableValues($str)
  9293. {
  9294. preg_match_all('/\$\w+\s?(\.?)=\s?"([\w]+)"/', $str, $concatVars);
  9295. $strVar = "";
  9296. foreach ($concatVars[2] as $index => $concatVar) {
  9297. if ($concatVars[1][$index] === '.') {
  9298. $strVar .= $concatVar;
  9299. } else {
  9300. $strVar = $concatVar;
  9301. }
  9302. }
  9303. return $strVar;
  9304. }
  9305. /**
  9306. * @param $dictionaryVar
  9307. * @param $dictionaryValue
  9308. * @param $str
  9309. *
  9310. * @return string
  9311. */
  9312. public static function replaceVarsFromDictionary($dictionaryVar, $dictionaryValue, $str)
  9313. {
  9314. $dictionaryName = $dictionaryVar;
  9315. $result = $str;
  9316. if (preg_match('~\$GLOBALS\[([\'"]\w+[\'"])\]~msi', $dictionaryVar, $match)) {
  9317. $dictionaryName = '\$GLOBALS\[' . $match[1] . '\]';
  9318. }
  9319. $result = preg_replace_callback(
  9320. '~(?:' . $dictionaryName . '\[(?:\d+)\]\s?\.?)+~msi',
  9321. function ($match) use ($dictionaryValue) {
  9322. preg_match_all('~\]\[(\d+)\]\.?~msi', $match[0], $varsMatch);
  9323. $result = "";
  9324. foreach ($varsMatch[1] as $index) {
  9325. $result .= $dictionaryValue[(int)$index];
  9326. }
  9327. return "'$result'";
  9328. },
  9329. $result
  9330. );
  9331. return $result;
  9332. }
  9333. /**
  9334. * Collects simple or concated vars from str
  9335. * @param string $str
  9336. * @param string $trimQuote
  9337. *
  9338. * @return array
  9339. */
  9340. public static function collectVars($str, string $trimQuote = '"') : array
  9341. {
  9342. $vars = [];
  9343. preg_match_all('~(\$\w+)\s?=\s?(["\'\w\.]+)~msi', $str, $matches);
  9344. foreach ($matches[1] as $index => $match) {
  9345. $vars[$match] = str_replace("$trimQuote.$trimQuote", '', $matches[2][$index]);
  9346. $vars[$match] = trim($vars[$match], $trimQuote);
  9347. }
  9348. return $vars;
  9349. }
  9350. /**
  9351. * @param array $vars
  9352. * @param string $str
  9353. *
  9354. * @return string
  9355. */
  9356. public static function replaceVarsFromArray(array $vars, string $str) : string
  9357. {
  9358. $result = $str;
  9359. foreach ($vars as $name => $value) {
  9360. $result = str_replace($name, $value, $result);
  9361. }
  9362. return $result;
  9363. }
  9364. private static function block_decrypt($y, $z, $key)
  9365. {
  9366. $delta = 0x9e3779b9;
  9367. $sum = 0xC6EF3720;
  9368. $n = 32;
  9369. for ($i = 0; $i < 32; $i++) {
  9370. $z = self::_add($z, -(self::_add($y << 4 ^ self::_rshift($y, 5), $y)
  9371. ^ self::_add($sum, $key[self::_rshift($sum, 11) & 3])));
  9372. $sum = self::_add($sum, -$delta);
  9373. $y = self::_add($y, -(self::_add($z << 4 ^ self::_rshift($z, 5), $z)
  9374. ^ self::_add($sum, $key[$sum & 3])));
  9375. }
  9376. return [$y, $z];
  9377. }
  9378. private static function _rshift($integer, $n)
  9379. {
  9380. if (0xffffffff < $integer || -0xffffffff > $integer) {
  9381. $integer = fmod($integer, 0xffffffff + 1);
  9382. }
  9383. if (0x7fffffff < $integer) {
  9384. $integer -= 0xffffffff + 1.0;
  9385. } else if (-0x80000000 > $integer) {
  9386. $integer += 0xffffffff + 1.0;
  9387. }
  9388. if (0 > $integer) {
  9389. $integer &= 0x7fffffff;
  9390. $integer >>= $n;
  9391. $integer |= 1 << (31 - $n);
  9392. } else {
  9393. $integer >>= $n;
  9394. }
  9395. return $integer;
  9396. }
  9397. private static function _add($i1, $i2)
  9398. {
  9399. $result = 0.0;
  9400. foreach (func_get_args() as $value) {
  9401. if (0.0 > $value) {
  9402. $value -= 1.0 + 0xffffffff;
  9403. }
  9404. $result += $value;
  9405. }
  9406. if (0xffffffff < $result || -0xffffffff > $result) {
  9407. $result = fmod($result, 0xffffffff + 1);
  9408. }
  9409. if (0x7fffffff < $result) {
  9410. $result -= 0xffffffff + 1.0;
  9411. } else if (-0x80000000 > $result) {
  9412. $result += 0xffffffff + 1.0;
  9413. }
  9414. return $result;
  9415. }
  9416. private static function _str2long($data)
  9417. {
  9418. $tmp = unpack('N*', $data);
  9419. $data_long = [];
  9420. $j = 0;
  9421. foreach ($tmp as $value) $data_long[$j++] = $value;
  9422. return $data_long;
  9423. }
  9424. private static function _long2str($l){
  9425. return pack('N', $l);
  9426. }
  9427. ///////////////////////////////////////////////////////////////////////////
  9428. }
  9429. ///////////////////////////////////////////////////////////////////////////
  9430. function parseArgs($argv)
  9431. {
  9432. array_shift($argv);
  9433. $o = array();
  9434. foreach ($argv as $a) {
  9435. if (substr($a, 0, 2) == '--') {
  9436. $eq = strpos($a, '=');
  9437. if ($eq !== false) {
  9438. $o[substr($a, 2, $eq - 2)] = substr($a, $eq + 1);
  9439. } else {
  9440. $k = substr($a, 2);
  9441. if (!isset($o[$k])) {
  9442. $o[$k] = true;
  9443. }
  9444. }
  9445. } else {
  9446. if (substr($a, 0, 1) == '-') {
  9447. if (substr($a, 2, 1) == '=') {
  9448. $o[substr($a, 1, 1)] = substr($a, 3);
  9449. } else {
  9450. foreach (str_split(substr($a, 1)) as $k) {
  9451. if (!isset($o[$k])) {
  9452. $o[$k] = true;
  9453. }
  9454. }
  9455. }
  9456. } else {
  9457. $o[] = $a;
  9458. }
  9459. }
  9460. }
  9461. return $o;
  9462. }
  9463. ////////////////////////////////////////////////////////////////////////////////////////////////////////
  9464. // cli handler
  9465. if (!defined('AIBOLIT_START_TIME') && !defined('PROCU_CLEAN_DB') && @strpos(__FILE__, @$argv[0])!==false) {
  9466. set_time_limit(0);
  9467. ini_set('max_execution_time', '900000');
  9468. ini_set('realpath_cache_size', '16M');
  9469. ini_set('realpath_cache_ttl', '1200');
  9470. ini_set('pcre.backtrack_limit', '1000000');
  9471. ini_set('pcre.recursion_limit', '12500');
  9472. ini_set('pcre.jit', '1');
  9473. $options = parseArgs($argv);
  9474. $str = php_strip_whitespace($options[0]);
  9475. $str2 = file_get_contents($options[0]);
  9476. $l_UnicodeContent = Helpers::detect_utf_encoding($str);
  9477. $l_UnicodeContent2 = Helpers::detect_utf_encoding($str2);
  9478. if ($l_UnicodeContent !== false) {
  9479. if (function_exists('iconv')) {
  9480. $str = iconv($l_UnicodeContent, "UTF-8", $str);
  9481. $str2 = iconv($l_UnicodeContent2, "UTF-8", $str2);
  9482. }
  9483. }
  9484. $d = new Deobfuscator($str, $str2);
  9485. $start = microtime(true);
  9486. $deobf_type = $d->getObfuscateType($str);
  9487. if ($deobf_type != '') {
  9488. $str = $d->deobfuscate();
  9489. }
  9490. $code = $str;
  9491. if (isset($options['prettyprint'])) {
  9492. $code = Helpers::normalize($code);
  9493. $code = Helpers::format($code);
  9494. }
  9495. if ($l_UnicodeContent !== false) {
  9496. if (function_exists('iconv')) {
  9497. $code = iconv('UTF-8', $l_UnicodeContent . '//IGNORE', $code);
  9498. }
  9499. }
  9500. echo $code;
  9501. echo "\n";
  9502. //echo 'Execution time: ' . round(microtime(true) - $start, 4) . ' sec.';
  9503. }
  9504. class Deobfuscator
  9505. {
  9506. private $signatures = array(
  9507. array(
  9508. 'full' => '~for\((\$\w{1,40})=\d+,(\$\w+)=\'([^\$]+)\',(\$\w+)=\'\';@?ord\(\2\[\1\]\);\1\+\+\)\{if\(\1<\d+\)\{(\$\w+)\[\2\[\1\]\]=\1;\}else\{\$\w+\.\=@?chr\(\(\5\[\2\[\1\]\]<<\d+\)\+\(\5\[\2\[\+\+\1\]\]\)\);\}\}\s*.{0,500}eval\(\4\);(if\(isset\(\$_(GET|REQUEST|POST|COOKIE)\[[\'"][^\'"]+[\'"]\]\)\)\{[^}]+;\})?~msi',
  9509. 'fast' => '~for\((\$\w{1,40})=\d+,(\$\w+)=\'([^\$]+)\',(\$\w+)=\'\';@?ord\(\2\[\1\]\);\1\+\+\)\{if\(\1<\d+\)\{(\$\w+)\[\2\[\1\]\]=\1;\}else\{\$\w+\.\=@?chr\(\(\5\[\2\[\1\]\]<<\d+\)\+\(\5\[\2\[\+\+\1\]\]\)\);\}\}\s*.{0,500}eval\(\4\);~msi',
  9510. 'id' => 'parenthesesString'),
  9511. array(
  9512. 'full' => '~(\$\w+)\s*=\s*basename\s*\(trim\s*\(preg_replace\s*\(rawurldecode\s*\([\'"][%0-9a-f\.]+["\']\),\s*\'\',\s*__FILE__\)\)\);\s*(\$\w+)\s*=\s*["\']([^\'"]+)["\'];\s*eval\s*\(rawurldecode\s*\(\2\)\s*\^\s*substr\s*\(str_repeat\s*\(\1,\s*\(strlen\s*\(\2\)/strlen\s*\(\1\)\)\s*\+\s*1\),\s*0,\s*strlen\s*\(\2\)\)\);~msi',
  9513. 'fast' => '~(\$\w+)\s*=\s*basename\s*\(trim\s*\(preg_replace\s*\(rawurldecode\s*\([\'"][%0-9a-f\.]+["\']\),\s*\'\',\s*__FILE__\)\)\);\s*(\$\w+)\s*=\s*["\']([^\'"]+)["\'];\s*eval\s*\(rawurldecode\s*\(\2\)\s*\^\s*substr\s*\(str_repeat\s*\(\1,\s*\(strlen\s*\(\2\)/strlen\s*\(\1\)\)\s*\+\s*1\),\s*0,\s*strlen\s*\(\2\)\)\);~msi',
  9514. 'id' => 'xorFName'),
  9515. array(
  9516. 'full' =>
  9517. '~(\$\w{1,40})=base64_decode\(\'[^\']+\'\);(\$\w+)=base64_decode\(\'[^\']+\'\);(\$\w+)=base64_decode\(\'([^\']+)\'\);eval\(\1\(gzuncompress\(\2\(\3\)\)\)\);~msi',
  9518. 'fast' => '~(\$\w{1,40})=base64_decode\(\'[^\']+\'\);(\$\w+)=base64_decode\(\'[^\']+\'\);(\$\w+)=base64_decode\(\'([^\']+)\'\);eval\(\1\(gzuncompress\(\2\(\3\)\)\)\);~msi',
  9519. 'id' => 'phpMess'),
  9520. array(
  9521. 'full' =>
  9522. '~(\$\w{1,40})\s*=\s*\"([^\"]+)\";\s*\$\w+\s*=\s*\$\w+\(\1,\"[^\"]+\",\"[^\"]+\"\);\s*\$\w+\(\"[^\"]+\",\"[^\"]+\",\"\.\"\);~msi',
  9523. 'fast' => '~(\$\w{1,40})\s*=\s*\"([^\"]+)\";\s*\$\w+\s*=\s*\$\w+\(\1,\"[^\"]+\",\"[^\"]+\"\);\s*\$\w+\(\"[^\"]+\",\"[^\"]+\",\"\.\"\);~msi',
  9524. 'id' => 'pregReplaceSample05'),
  9525. array(
  9526. 'full' => '~(\$\w{1,40})\s*=\s*\w+\(\'.+?\'\);\s*(\$\w+)\s*=\s*\w+\(\'.+?\'\);\s*(\$\w+)\s*=\s*\"([^\"]+)\";\s*(\$\w+)\s*=\s*.+?;\s*\2\(\5,\"[^\']+\'\3\'[^\"]+\",\"\.\"\);~msi',
  9527. 'fast' => '~(\$\w{1,40})\s*=\s*\w+\(\'.+?\'\);\s*(\$\w+)\s*=\s*\w+\(\'.+?\'\);\s*(\$\w+)\s*=\s*\"([^\"]+)\";\s*(\$\w+)\s*=\s*.+?;\s*\2\(\5,\"[^\']+\'\3\'[^\"]+\",\"\.\"\);~msi',
  9528. 'id' => 'pregReplaceB64'),
  9529. array(
  9530. 'full' => '~(\$\w{1,40})\s*=\s*\'([^\']+)\';\s*\1\s*=\s*gzinflate\s*\(base64_decode\s*\(\1\)\);\s*\1\s*=\s*str_replace\s*\(\"__FILE__\",\"\'\$\w+\'\",\1\);\s*eval\s*\(\1\);~msi',
  9531. 'fast' => '~(\$\w{1,40})\s*=\s*\'([^\']+)\';\s*\1\s*=\s*gzinflate\s*\(base64_decode\s*\(\1\)\);\s*\1\s*=\s*str_replace\s*\(\"__FILE__\",\"\'\$\w+\'\",\1\);\s*eval\s*\(\1\);~msi',
  9532. 'id' => 'GBE'),
  9533. array(
  9534. 'full' => '~(\$GLOBALS\[\s*[\'"]_+\w{1,60}[\'"]\s*\])\s*=\s*\s*array\s*\(\s*base64_decode\s*\(.+?((.+?\1\[\d+\]).+?)+[^;]+;(\s*include\(\$_\d+\);)?}?((.+?___\d+\(\d+\))+[^;]+;)?(.*?(\$[a-z]+).+\8_\d+;)?(echo\s*\$\w+;})?}?~msi',
  9535. 'fast' => '~\$GLOBALS\[\s*[\'"]_+\w{1,60}[\'"]\s*\]\s*=\s*\s*array\s*\(\s*base64_decode\s*\(~msi',
  9536. 'id' => 'Bitrix'),
  9537. array(
  9538. 'full' => '~\$\w{1,40}\s*=\s*(__FILE__|__LINE__);\s*\$\w{1,40}\s*=\s*(\d+);\s*eval(\s*\()+\$?\w+\s*\([\'"][^\'"]+[\'"](\s*\))+;\s*return\s*;\s*\?>(.+)~msi',
  9539. 'fast' => '~\$\w{1,40}\s*=\s*(__FILE__|__LINE__);\s*\$\w{1,40}\s*=\s*(\d+);\s*eval(\s*\()+\$?\w+\s*\([\'"][^\'"]+[\'"](\s*\))+;\s*return\s*;\s*\?>(.+)~msi',
  9540. 'id' => 'B64inHTML'),
  9541. array(
  9542. 'full' => '~(?:\$[O0]*=__FILE__;)?\$[O0]*=urldecode\(\'[%a-f0-9]+\'\);(\$(GLOBALS\[\')?[O0]*(\'\])?=(\d+);)?\s*(\$(GLOBALS\[\')?[O0]*(\'\])?\.?=(\$(GLOBALS\[\')?[O0]*(\'\])?([\{\[]\d+[\}\]])?\.?)+;)+[^\?]+\?\>[\s\w\~\=\/\+\\\\\^\{\`\%]+~msi',
  9543. 'fast' => '~(?:\$[O0]*=__FILE__;)?\$[O0]*=urldecode\(\'[%a-f0-9]+\'\);(?:\$(GLOBALS\[\')?[O0]*(?:\'\])?=\d+;)?\s*(?:\$(?:GLOBALS\[\')?[O0]*(?:\'\])?\.?=(?:\$(?:GLOBALS\[\')?[O0]*(?:\'\])?(?:[\{\[]\d+[\}\]])?\.?)+;)+[^\?]+\?\>[\s\w\~\=\/\+\\\\\^\{\`\%]+~msi',
  9544. 'id' => 'LockIt'),
  9545. array(
  9546. 'full' => '~(\$\w{1,40})\s*=\s*\"(\\\\142|\\\\x62)[0-9a-fx\\\\]+";\s*@?eval\s*\(\1\s*\([^\)]+\)+\s*;~msi',
  9547. 'fast' => '~(\$\w{1,40})\s*=\s*\"(\\\\142|\\\\x62)[0-9a-fx\\\\]+";\s*@?eval\s*\(\1\s*\(~msi',
  9548. 'id' => 'FOPO'),
  9549. array(
  9550. 'full' => '~\$_F=__FILE__;\$_X=\'([^\']+\');eval\([^\)]+\)+;~msi',
  9551. 'fast' => '~\$_F=__FILE__;\$_X=\'([^\']+\');eval\(~ms',
  9552. 'id' => 'ByteRun'),
  9553. array(
  9554. 'full' => '~(\$\w{1,40}=\'[^\']+\';\s*)+(\$[\w{1,40}]+)=(urldecode|base64_decode){0,1}\(?[\'"]([\w+%=-]+)[\'"]\)?;(\$[\w+]+=(\$(\w+\[\')?[O_0]*(\'\])?([\{\[]\d+[\}\]])?\.?)+;)+[^\?]+(\?\>[\w\~\=\/\+]+|.+\\\\x[^;]+;)~msi',
  9555. 'fast' => '~(\$\w{1,40}=\'[^\']+\';\s*)+(\$[\w{1,40}]+)=(urldecode|base64_decode){0,1}\(?[\'"]([\w+%=-]+)[\'"]\)?;(\$[\w+]+=(\$(\w+\[\')?[O_0]*(\'\])?([\{\[]\d+[\}\]])?\.?)+;)+[^\?]+(\?\>[\w\~\=\/\+]+|.+\\\\x[^;]+;)~msi',
  9556. 'id' => 'Urldecode'),
  9557. array(
  9558. 'full' => '~(\$[\w{1,40}]+)=(urldecode|base64_decode)\(?[\'"]([\w+%=-]+)[\'"]\);(\s*\$\w+\.?=(\$\w+\{\d+\}\s*[\.;]?\s*)+)+((\$\w+=["\']([^\'"]+)[\'"];\s*eval\(\'\?>\'\.[\$\w\(\)\*\d,\s]+);|(eval\(\$\w+\([\'"]([^\'"]+)[\'"]\)+;))~msi',
  9559. 'fast' => '~(\$[\w{1,40}]+)=(urldecode|base64_decode)\(?[\'"]([\w+%=-]+)[\'"]\);(\s*\$\w+\.?=(\$\w+\{\d+\}\s*[\.;]?\s*)+)+((\$\w+=["\']([^\'"]+)[\'"];\s*eval\(\'\?>\'\.[\$\w\(\)\*\d,\s]+);|(eval\(\$\w+\([\'"]([^\'"]+)[\'"]\)+;))~msi',
  9560. 'id' => 'UrlDecode2',
  9561. ),
  9562. array(
  9563. 'full' => '~explode\(\"\*\*\*\",\s*\$\w+\);\s*eval\(eval\(\"return strrev\(base64_decode\([^\)]+\)+;~msi',
  9564. 'fast' => '~explode\(\"\*\*\*\",\s*\$\w+\);\s*eval\(eval\(\"return strrev\(base64_decode\(~msi',
  9565. 'id' => 'cobra'),
  9566. array(
  9567. 'full' => '~\$[O0]+=\(base64_decode\(strtr\(fread\(\$[O0]+,(\d+)\),\'([^\']+)\',\'([^\']+)\'\)\)\);eval\([^\)]+\)+;~msi',
  9568. 'fast' => '~\$[O0]+=\(base64_decode\(strtr\(fread\(\$[O0]+,(\d+)\),\'([^\']+)\',\'([^\']+)\'\)\)\);eval\(~msi',
  9569. 'id' => 'strtrFread'),
  9570. array(
  9571. 'full' => '~if\s*\(\!extension_loaded\(\'IonCube_loader\'\)\).+pack\(\"H\*\",\s*\$__ln\(\"/\[A-Z,\\\\r,\\\\n\]/\",\s*\"\",\s*substr\(\$__lp,\s*([0-9a-fx]+\-[0-9a-fx]+)\)\)\)[^\?]+\?\>\s*[0-9a-z\r\n]+~msi',
  9572. 'fast' => '~IonCube_loader~ms',
  9573. 'id' => 'FakeIonCube'),
  9574. array(
  9575. 'full' => '~(\$\w{1,40})="([\w\]\[\<\&\*\_+=/]{300,})";\$\w+=\$\w+\(\1,"([\w\]\[\<\&\*\_+=/]+)","([\w\]\[\<\&\*\_+=/]+)"\);~msi',
  9576. 'fast' => '~(\$\w{1,40})="([\w\]\[\<\&\*\_+=/]{300,})";\$\w+=\$\w+\(\1,"([\w\]\[\<\&\*\_+=/]+)","([\w\]\[\<\&\*\_+=/]+)"\);~msi',
  9577. 'id' => 'strtrBase64'),
  9578. array(
  9579. 'full' => '~\$\w+\s*=\s*array\((\'[^\']+\',?)+\);\s*.+?(\$_\w{1,40}\[\w+\])\s*=\s*explode\(\'([^\']+)\',\s*\'([^\']+)\'\);.+?(\2\[[a-fx\d]+\])\(\);(.+?\2)+.+}~msi',
  9580. 'fast' => '~(\$_\w{1,40}\[\w+\])\s*=\s*explode\(\'([^\']+)\',\s*\'([^\']+)\'\);.+?(\1\[[a-fx\d]+\])\(\);~msi',
  9581. 'id' => 'explodeSubst'),
  9582. array(
  9583. 'full' => '~(\$[\w{1,40}]+)\s*=\s*\'([\w+%=\-\#\\\\\'\*]+)\';(\$[\w+]+)\s*=\s*Array\(\);(\3\[\]\s*=\s*(\1\[\d+\]\.?)+;+)+(.+\3)[^}]+}~msi',
  9584. 'fast' => '~(\$[\w{1,40}]+)\s*=\s*\'([\w+%=\-\#\\\\\'\*]+)\';(\$[\w+]+)\s*=\s*Array\(\);(\3\[\]\s*=\s*(\1\[\d+\]\.?)+;+)+~msi',
  9585. 'id' => 'subst'),
  9586. array(
  9587. 'full' => '~if\(!function_exists\(\"(\w+)\"\)\){function \1\(.+?eval\(\1\(\"[^\"]+\"\)\);~msi',
  9588. 'fast' => '~if\(!function_exists\(\"(\w+)\"\)\){function \1\(.+?eval\(\1\(\"[^\"]+\"\)\);~msi',
  9589. 'id' => 'decoder'),
  9590. array(
  9591. 'full' => '~(\$\w{1,40})\s*=\s*\"riny\(\"\.(\$\w+)\(\"base64_decode\"\);\s*(\$\w+)\s*=\s*\2\(\1\.\'\("([^"]+)"\)\);\'\);\s*\$\w+\(\3\);~msi',
  9592. 'fast' => '~(\$\w{1,40})\s*=\s*\"riny\(\"\.(\$\w+)\(\"base64_decode\"\);\s*(\$\w+)\s*=\s*\2\(\1\.\'\("([^"]+)"\)\);\'\);\s*\$\w+\(\3\);~msi',
  9593. 'id' => 'GBZ'),
  9594. array(
  9595. 'full' => '~\$\w+\s*=\s*\d+;\s*\$GLOBALS\[\'[^\']+\'\]\s*=\s*Array\(\);\s*global\s*\$\w+;(\$\w{1,40})\s*=\s*\$GLOBALS;\$\{"\\\\x[a-z0-9\\\\]+"\}\[(\'\w+\')\]\s*=\s*\"(([^\"\\\\]|\\\\.)*)\";\1\[(\1\[\2\]\[\d+\].?).+?exit\(\);\}+~msi',
  9596. 'fast' => '~(\$\w{1,40})\s*=\s*\$GLOBALS;\$\{"\\\\x[a-z0-9\\\\]+"\}\[(\'\w+\')\]\s*=\s*\"(([^\"\\\\]|\\\\.)*)\";\1\[(\1\[\2\]\[\d+\].?)~msi',
  9597. 'id' => 'globalsArray'),
  9598. array(
  9599. 'full' => '~(\${(["\w\\\\]+)}\[["\w\\\\]+\]=["\w\\\\]+;)+((\${\${(["\w\\\\]+)}\[["\w\\\\]+\]}).?=((urldecode\(["%\w]+\);)|(\${\${["\w\\\\]+}\[["\w\\\\]+\]}{\d+}.?)+;))+eval\(\${\${["\w\\\\]+}\[["\w\\\\]+\]}\(["\w+=]+\)\);~msi',
  9600. 'fast' => '~(\${(["\w\\\\]+)}\[["\w\\\\]+\]=["\w\\\\]+;)+((\${\${(["\w\\\\]+)}\[["\w\\\\]+\]}).?=((urldecode\(["%\w]+\);)|(\${\${["\w\\\\]+}\[["\w\\\\]+\]}{\d+}.?)+;))+eval\(\${\${["\w\\\\]+}\[["\w\\\\]+\]}\(["\w+=]+\)\);~msi',
  9601. 'id' => 'xbrangwolf'),
  9602. array(
  9603. 'full' => '~(\$\w{1,40})\s*=\s*\'(\\\\.|[^\']){0,100}\';\s*\$\w+\s*=\s*\'(\\\\.|[^\']){0,100}\'\^\1;[^)]+\)+;\s*\$\w+\(\);~msi',
  9604. 'fast' => '~(\$\w{1,40})\s*=\s*\'(\\\\.|[^\']){0,100}\';\s*\$\w+\s*=\s*\'(\\\\.|[^\']){0,100}\'\^\1;~msi',
  9605. 'id' => 'xoredVar'),
  9606. array(
  9607. 'full' => '~(\$\w{1,40})\s*=\s*\'([^\']*)\';\s*(\$\w{1,40})\s*=\s*explode\s*\((chr\s*\(\s*\(\d+\-\d+\)\)),substr\s*\(\1,\s*\((\d+\-\d+)\),\s*\(\s*(\d+\-\d+)\)\)\);\s*(\$\w{1,40})\s*=\s*\3\[\d+\]\s*\(\3\[\s*\(\d+\-\d+\)\]\);\s*(\$\w{1,40})\s*=\s*\3\[\d+\]\s*\(\3\[\s*\(\d+\-\d+\)\]\);\s*if\s*\(!function_exists\s*\(\'([^\']*)\'\)\)\s*\{\s*function\s*\9\s*\(.+\1\s*=\s*\$\w+[+\-\*]\d+;~msi',
  9608. 'fast' => '~(\$\w{1,40})\s=\s\'([^\']*)\';\s(\$\w{1,40})=explode\((chr\(\(\d+\-\d+\)\)),substr\(\1,\((\d+\-\d+)\),\((\d+\-\d+)\)\)\);\s(\$\w{1,40})\s=\s\3\[\d+\]\(\3\[\(\d+\-\d+\)\]\);\s(\$\w{1,40})\s=\s\3\[\d+\]\(\3\[\(\d+\-\d+\)\]\);\sif\s\(!function_exists\(\'([^\']*)\'\)\)\s\{\sfunction\s*\9\(~msi',
  9609. 'id' => 'arrayOffsets'),
  9610. array(
  9611. 'full' => '~(\$\w{1,50}\s*=\s*array\((\'\d+\',?)+\);)+\$\w{1,40}=\"([^\"]+)\";if\s*\(!function_exists\(\"\w{1,50}\"\)\)\s*\{\s*function\s*[^\}]+\}\s*return\s*\$\w+;\}[^}]+}~msi',
  9612. 'fast' => '~(\$\w{1,50}=\s*array\((\'\d+\',?)+\);)+\$\w{1,40}=\"[^\"]+\";if\s*\(!function_exists\(\"\w{1,50}\"\)\)\{\s*function ~msi',
  9613. 'id' => 'obfB64'),
  9614. array(
  9615. 'full' => '~if\(\!function_exists\(\'findsysfolder\'\)\){function findsysfolder\(\$fld\).+\$REXISTHEDOG4FBI=\'([^\']+)\';\$\w+=\'[^\']+\';\s*eval\(\w+\(\'([^\']+)\',\$REXISTHEDOG4FBI\)\);~msi',
  9616. 'fast' => '~if\(!function_exists\(\'findsysfolder\'\)\){function findsysfolder\(\$fld\)\{\$fld1=dirname\(\$fld\);\$fld=\$fld1\.\'/scopbin\';clearstatcache\(\);if\(!is_dir\(\$fld\)\)return findsysfolder\(\$fld1\);else return \$fld;\}\}require_once\(findsysfolder\(__FILE__\)\.\'/911006\.php\'\);~msi',
  9617. 'id' => 'sourceCop'),
  9618. array(
  9619. 'full' => '~function\s*(\w{1,40})\s*\(\s*(\$\w{1,40})\s*,\s*(\$\w{1,40})\s*\)\s*\{\s*(\$\w{1,40})\s*=\s*str_rot13\s*\(\s*gzinflate\s*\(\s*str_rot13\s*\(\s*base64_decode\s*\(\s*[\'"][^\'"]*[\'"]\s*\)\s*\)\s*\)\s*\)\s*;\s*(if\s*\(\s*\$\w+\s*==[\'"][^\'"]*[\'"]\s*\)\s*\{\s*(\$\w{1,40})\s*=(\$\w+[\{\[]\d+[\}\]]\.?)+;return\s*(\$\w+)\(\3\);\s*\}\s*else\s*)+\s*if\s*\(\s*\$\w+\s*==[\'"][^\'"]*[\'"]\s*\)\s*\{\s*return\s*eval\(\3\);\s*\}\s*\};\s*(\$\w{1,40})\s*=\s*[\'"][^\'"]*[\'"];(\s*\9\([\'"][^\'"]*[\'"],)+\s*[\'"][^\'"]*[\'"]\s*\)+;~msi',
  9620. 'fast' => '~function\s*(\w{1,40})\s*\(\s*(\$\w{1,40})\s*,\s*(\$\w{1,40})\s*\)\s*\{\s*(\$\w{1,40})\s*=\s*str_rot13\s*\(\s*gzinflate\s*\(\s*str_rot13\s*\(\s*base64_decode\s*\(\s*[\'"][^\'"]*[\'"]\s*\)\s*\)\s*\)\s*\)\s*;\s*(if\s*\(\s*\$\w+\s*==[\'"][^\'"]*[\'"]\s*\)\s*\{\s*(\$\w{1,40})\s*=(\$\w+[\{\[]\d+[\}\]]\.?)+;return\s*(\$\w+)\(\3\);\s*\}\s*else\s*)+\s*if\s*\(\s*\$\w+\s*==[\'"][^\'"]*[\'"]\s*\)\s*\{\s*return\s*eval\(\3\);\s*\}\s*\};\s*(\$\w{1,40})\s*=\s*[\'"][^\'"]*[\'"];(\s*\9\([\'"][^\'"]*[\'"],)+\s*[\'"][^\'"]*[\'"]\s*\)+;~msi',
  9621. 'id' => 'webshellObf',
  9622. ),
  9623. array(
  9624. 'full' => '~(\$\w{1,40})=\'([^\'\\\\]|.*?)\';\s*((\$\w{1,40})=(\1\[\d+].?)+;\s*)+(\$\w{1,40})=\'\';\s*(\$\w{1,40})\(\6,\$\w{1,40}\.\"([^\"]+)\"\.\$\w{1,40}\.\4\);~msi',
  9625. 'fast' => '~(\$\w{1,40})=\'([^\\\\\']|.*?)\';\s*((\$\w{1,40})=(\1\[\d+].?)+;\s*)+(\$\w{1,40})=\'\';~msi',
  9626. 'id' => 'substCreateFunc'
  9627. ),
  9628. array(
  9629. 'full' => '~(\$\w+)=[create_function".]+;\s*\1=\1\(\'(\$\w+)\',[\'.eval\("\?>".gzinflate\(base64_decode]+\2\)+;\'\);\s*\1\(\'([^\']+)\'\);~msi',
  9630. 'fast' => '~(\$\w+)=[create_function".]+;\s*\1=\1\(\'(\$\w+)\',[\'.eval\("\?>".gzinflate\(base64_decode]+\2\)+;\'\);\s*\1\(\'([^\']+)\'\);~msi',
  9631. 'id' => 'createFunc'
  9632. ),
  9633. array(
  9634. 'full' => '~(?(DEFINE)(?\'foreach\'(?:/\*\w+\*/)?\s*foreach\(\[[\d,]+\]\s*as\s*\$\w+\)\s*\{\s*\$\w+\s*\.=\s*\$\w+\[\$\w+\];\s*\}\s*(?:/\*\w+\*/)?\s*))(\$\w+)\s*=\s*"([^"]+)";\s*\$\w+\s*=\s*"";(?P>foreach)if\(isset\(\$_REQUEST\s*(?:/\*\w+\*/)?\["\$\w+"\]\)+\{\s*\$\w+\s*=\s*\$_REQUEST\s*(?:/\*\w+\*/)?\["\$\w+"\];(?:\s*\$\w+\s*=\s*"";\s*)+(?P>foreach)+\$\w+\s*=\s*\$\w+\([create_function\'\.]+\);\s*\$\w+\s*=\s*\$\w+\("",\s*\$\w+\(\$\w+\)\);\s*\$\w+\(\);\s*(?:exit\(\);)?\s*}~mis',
  9635. 'fast' => '~(?(DEFINE)(?\'foreach\'(?:/\*\w+\*/)?\s*foreach\(\[[\d,]+\]\s*as\s*\$\w+\)\s*\{\s*\$\w+\s*\.=\s*\$\w+\[\$\w+\];\s*\}\s*(?:/\*\w+\*/)?\s*))(\$\w+)\s*=\s*"([^"]+)";\s*\$\w+\s*=\s*"";(?P>foreach)if\(isset\(\$_REQUEST\s*(?:/\*\w+\*/)?\["\$\w+"\]\)+\{\s*\$\w+\s*=\s*\$_REQUEST\s*(?:/\*\w+\*/)?\["\$\w+"\];(?:\s*\$\w+\s*=\s*"";\s*)+(?P>foreach)+\$\w+\s*=\s*\$\w+\([create_function\'\.]+\);\s*\$\w+\s*=\s*\$\w+\("",\s*\$\w+\(\$\w+\)\);\s*\$\w+\(\);~mis',
  9636. 'id' => 'forEach'
  9637. ),
  9638. array(
  9639. 'full' => '~\$\w+\s*=\s*base64_decode\s*\([\'"][^\'"]+[\'"]\);\s*if\s*\(!function_exists\s*\("rotencode"\)\).{0,1000}eval\s*\(\$\w+\s*\(base64_decode\s*\([\'"][^"\']+[\'"]\)+;~msi',
  9640. 'fast' => '~\$\w+\s*=\s*base64_decode\s*\([\'"][^\'"]+[\'"]\);\s*if\s*\(!function_exists\s*\("rotencode"\)\).{0,1000}eval\s*\(\$\w+\s*\(base64_decode\s*\([\'"][^"\']+[\'"]\)+;~msi',
  9641. 'id' => 'PHPMyLicense',
  9642. ),
  9643. array(
  9644. 'full' => '~(\$\w{1,40})\s*=\s*file\(__FILE__\);\s*if\(!function_exists\(\"([^\"]*)\"\)\)\{function\s*\2\((\$\w{1,40}),(\$\w{1,40})=\d+\)\{(\$\w{1,40})=implode\(\"[^\"]*\",\3\);(\$\w{1,40})=array\((\d+),(\d+),(\d+)\);if\(\4==0\)\s*(\$\w{1,40})=substr\(\5,\6\[\d+\],\6\[\d+\]\);elseif\(\4==1\)\s*\10=substr\(\5,\6\[\d+\]\+\6\[\d+\],\6\[\d+\]\);else\s*\10=trim\(substr\(\5,\6\[\d+\]\+\6\[\d+\]\+\6\[\d+\]\)\);return\s*\(\10\);\}\}\s*eval\(\w{1,40}\(\2\(\1\s*,\s*2\)\s*,\s*\2\(\1\s*,\s*1\)\)\);\s*__halt_compiler\(\);\s*[\w\+\=/]+~msi',
  9645. 'fast' => '~(\$\w{1,40})\s*=\s*file\(__FILE__\);\s*if\(!function_exists\(\"([^\"]*)\"\)\)\{function\s*\2\((\$\w{1,40}),(\$\w{1,40})=\d+\)\{(\$\w{1,40})=implode\(\"[^\"]*\",\3\);(\$\w{1,40})=array\((\d+),(\d+),(\d+)\);if\(\4==0\)\s*(\$\w{1,40})=substr\(\5,\6\[\d+\],\6\[\d+\]\);elseif\(\4==1\)\s*\10=substr\(\5,\6\[\d+\]\+\6\[\d+\],\6\[\d+\]\);else\s*\10=trim\(substr\(\5,\6\[\d+\]\+\6\[\d+\]\+\6\[\d+\]\)\);return\s*\(\10\);\}\}\s*eval\(\w{1,40}\(\2\(\1\s*,\s*2\)\s*,\s*\2\(\1\s*,\s*1\)\)\);\s*__halt_compiler\(\);~msi',
  9646. 'id' => 'zeura'),
  9647. array(
  9648. 'full' => '~((\$\w+)\s*\.=\s*"[^"]+";\s*)+eval\((\$\w+\s*\.?\s*)+\)~msi',
  9649. 'fast' => '~((\$\w+)\s*\.=\s*"[^"]+";\s*)+eval\((\$\w+\s*\.?\s*)+\)~msi',
  9650. 'id' => 'evalVarConcat'),
  9651. array(
  9652. 'full' => '~((\$\w+)\s*=\s*[\'"]([^\'"]+)[\'"];\s*)+\s*.{0,10}?@?eval\s*\(\s*([\'"?>.\s]+)?\(?(base64_decode\s*\(|gzinflate\s*\(|strrev\s*\(|str_rot13\s*\(|gzuncompress\s*\(|urldecode\s*\(|rawurldecode\s*\(|htmlspecialchars_decode\s*\()+(\({0,1}[\s"\']?(\$\w+)?(?:str_replace\((?:.+?,){3}\2?)?[\s"\']?\){0,1})\)+;~msi',
  9653. 'fast' => '~((\$\w+)\s*=\s*[\'"]([^\'"]+)[\'"];\s*)+\s*.{0,10}?@?eval\s*\(\s*([\'"?>.\s]+)?\(?(base64_decode\s*\(|gzinflate\s*\(|strrev\s*\(|str_rot13\s*\(|gzuncompress\s*\(|urldecode\s*\(|rawurldecode\s*\(|htmlspecialchars_decode\s*\()+(\({0,1}[\s"\']?(\$\w+)?(?:str_replace\((?:.+?,){3}\2?)?[\s"\']?\){0,1})\)+;~msi',
  9654. 'id' => 'evalVar'),
  9655. array(
  9656. 'full' => '~function\s*(\w{1,40})\((\$\w{1,40})\)\{(\$\w{1,40})=\'base64_decode\';(\$\w{1,40})=\'gzinflate\';return\s*\4\(\3\(\2\)\);\}\$\w{1,40}=\'[^\']*\';\$\w{1,40}=\'[^\']*\';eval\(\1\(\'([^\']*)\'\)\);~msi',
  9657. 'fast' => '~function\s*(\w{1,40})\((\$\w{1,40})\)\{(\$\w{1,40})=\'base64_decode\';(\$\w{1,40})=\'gzinflate\';return\s*\4\(\3\(\2\)\);\}\$\w{1,40}=\'[^\']*\';\$\w{1,40}=\'[^\']*\';eval\(\1\(\'([^\']*)\'\)\);~msi',
  9658. 'id' => 'evalFunc'),
  9659. array(
  9660. 'full' => '~function\s*(\w{1,40})\s*\((\$\w{1,40})\)\s*\{\s*(\$\w{1,40})\s*=\s*"\\\\x62\\\\x61\\\\x73\\\\x65\\\\x36\\\\x34\\\\x5f\\\\x64\\\\x65\\\\x63\\\\x6f\\\\x64\\\\x65";\s*(\$\w{1,40})\s*=\s*"\\\\x67\\\\x7a\\\\x69\\\\x6e\\\\x66\\\\x6c\\\\x61\\\\x74\\\\x65";\s*return\s*\4\s*\(\3\s*\(\2\)\);\s*\}\s*\$\w{1,40}\s*=\s*\"[^\"]*\";\s*\$\w{1,40}\s*=\s*\"[^\"]*\";\s*eval\s*\(\1\s*\(\"([^\"]*)\"\)\);~msi',
  9661. 'fast' => '~function\s*(\w{1,40})\s*\((\$\w{1,40})\)\s*\{\s*(\$\w{1,40})\s*=\s*"\\\\x62\\\\x61\\\\x73\\\\x65\\\\x36\\\\x34\\\\x5f\\\\x64\\\\x65\\\\x63\\\\x6f\\\\x64\\\\x65";\s*(\$\w{1,40})\s*=\s*"\\\\x67\\\\x7a\\\\x69\\\\x6e\\\\x66\\\\x6c\\\\x61\\\\x74\\\\x65";\s*return\s*\4\s*\(\3\s*\(\2\)\);\s*\}\s*\$\w{1,40}\s*=\s*\"[^\"]*\";\s*\$\w{1,40}\s*=\s*\"[^\"]*\";\s*eval\s*\(\1\s*\(\"([^\"]*)\"\)\);~msi',
  9662. 'id' => 'evalFunc'),
  9663. array(
  9664. 'full' => '~(\$\w+)\s?=\s?[\'"]@?(([\w."]+\()+[\'"]([\w\/+]+)[\'"])\)+;[\'"]\s?;\s?(\$\w+)\s?=\s?([\w@."]+)\s?;\s?@?(\$\w+)\s?=\s\5\([\'"]+,\s?"\1;"\s?\);\7\([\'"]{2}\);~msi',
  9665. 'fast' => '~(\$\w+)\s?=\s?[\'"]@?(([\w."]+\()+[\'"]([\w\/+]+)[\'"])\)+;[\'"]\s?;\s?(\$\w+)\s?=\s?([\w@."]+)\s?;\s?@?(\$\w+)\s?=\s\5\([\'"]+,\s?"\1;"\s?\);\7\([\'"]{2}\);~msi',
  9666. 'id' => 'evalConcatFunc'),
  9667. array(
  9668. 'full' => '~function\sT_\((\$\w+)\)\s{\s(\$\w+)\s=\s256;\s(\$w2)\s=\s8;\s(\$\w+)\s=\sarray\(\);\s(\$\w+)\s=\s0;\s(\$\w+)\s=\s0;\sfor\s\((\$\w+)\s=\s0;\s\7\s<\sstrlen\(\1\);\s\7\+\+\)\s{\s\5\s=\s\(\5\s<<\s8\)\s\+\sord\(\1\[\7\]\);\s\6\s\+=\s8;\sif\s\(\6\s>=\s\3\)\s{\s\6\s-=\s\3;\s(\$\w+)\[\]\s=\s\5\s>>\s\6;\s\5\s&=\s\(1\s<<\s\6\)\s-\s1;\s\2\+\+;\sif\s\(\2\s>>\s\3\)\s{\s\3\+\+;\s}\s}\s}\s(\$\w+)\s=\srange\("\\\\x0",\s"\\\\377"\);\s(\$\w+)\s=\s\'\';\sforeach\s\(\4\sas\s\7\s=>\s(\$\w+)\)\s{\sif\s\(!isset\(\9\[\11\]\)\)\s{\s(\$\w+)\s=\s(\$\w+)\s\.\s\13\[0\];\s}\selse\s{\s\12\s=\s\9\[\11\];\s}\s\10\s\.=\s\12;\sif\s\(\7\)\s{\s\9\[\]\s=\s\13\s\.\s\12\[0\];\s}\s\13\s=\s\12;\s}\sreturn\s\10;\s}\s(\$_\w+)="[\w\\\\]+";eval\(T_\(\14\("(.*)"\)\)\);~mis',
  9669. 'fast' => '~function\sT_\((\$\w+)\)\s{\s(\$\w+)\s=\s256;\s(\$w2)\s=\s8;\s(\$\w+)\s=\sarray\(\);\s(\$\w+)\s=\s0;\s(\$\w+)\s=\s0;\sfor\s\((\$\w+)\s=\s0;\s\7\s<\sstrlen\(\1\);\s\7\+\+\)\s{\s\5\s=\s\(\5\s<<\s8\)\s\+\sord\(\1\[\7\]\);\s\6\s\+=\s8;\sif\s\(\6\s>=\s\3\)\s{\s\6\s-=\s\3;\s(\$\w+)\[\]\s=\s\5\s>>\s\6;\s\5\s&=\s\(1\s<<\s\6\)\s-\s1;\s\2\+\+;\sif\s\(\2\s>>\s\3\)\s{\s\3\+\+;\s}\s}\s}\s(\$\w+)\s=\srange\("\\\\x0",\s"\\\\377"\);\s(\$\w+)\s=\s\'\';\sforeach\s\(\4\sas\s\7\s=>\s(\$\w+)\)\s{\sif\s\(!isset\(\9\[\11\]\)\)\s{\s(\$\w+)\s=\s(\$\w+)\s\.\s\13\[0\];\s}\selse\s{\s\12\s=\s\9\[\11\];\s}\s\10\s\.=\s\12;\sif\s\(\7\)\s{\s\9\[\]\s=\s\13\s\.\s\12\[0\];\s}\s\13\s=\s\12;\s}\sreturn\s\10;\s}\s(\$_\w+)="[\w\\\\]+";eval\(T_\(\14\("(.*)"\)\)\);~mis',
  9670. 'id' => 'evalFuncFunc'
  9671. ),
  9672. array(
  9673. 'full' => '~(preg_replace\(["\']/\.\*?/[^"\']+["\']\s*,\s*)[^\),]+(?:[\)\\\\0-5]+;[\'"])?(,\s*["\'][^"\']*["\'])\)+;~msi',
  9674. 'fast' => '~(preg_replace\(["\']/\.\*?/[^"\']+["\']\s*,\s*)[^\),]+(?:[\)\\\\0-5]+;[\'"])?(,\s*["\'][^"\']*["\'])\)+;~msi',
  9675. 'id' => 'eval'),
  9676. array(
  9677. 'full' => '~(\$\w{1,40})\s*=\s*[\'"]([^\'"]*)[\'"]\s*;\s*(\$\w{1,40}\s*=\s*(strtolower|strtoupper)\s*\((\s*\1[\[\{]\s*\d+\s*[\]\}]\s*\.?\s*)+\);\s*)+\s*if\s*\(\s*isset\s*\(\s*\$\{\s*\$\w{1,40}\s*\}\s*\[\s*[\'"][^\'"]*[\'"]\s*\]\s*\)\s*\)\s*\{\s*eval\s*\(\s*\$\w{1,40}\s*\(\s*\$\s*\{\s*\$\w{1,40}\s*\}\s*\[\s*[\'"][^\'"]*[\'"]\s*\]\s*\)\s*\)\s*;\s*\}\s*~msi',
  9678. 'fast' => '~(\$\w{1,40})\s*=\s*[\'"]([^\'"]*)[\'"]\s*;\s*(\$\w{1,40}\s*=\s*(strtolower|strtoupper)\s*\((\s*\1[\[\{]\s*\d+\s*[\]\}]\s*\.?\s*)+\);\s*)+\s*if\s*\(\s*isset\s*\(\s*\$\{\s*\$\w{1,40}\s*\}\s*\[\s*[\'"][^\'"]*[\'"]\s*\]\s*\)\s*\)\s*\{\s*eval\s*\(\s*\$\w{1,40}\s*\(\s*\$\s*\{\s*\$\w{1,40}\s*\}\s*\[\s*[\'"][^\'"]*[\'"]\s*\]\s*\)\s*\)\s*;\s*\}\s*~msi',
  9679. 'id' => 'evalInject'
  9680. ),
  9681. array(
  9682. 'full' => '~((\$\w+)\s*=\s*(([base64_decode\'\.\s]+)|([eval\'\.\s]+)|([create_function\'\.\s]+)|([stripslashes\'\.\s]+)|([gzinflate\'\.\s]+)|([strrev\'\.\s]+)|([str_rot13\'\.\s]+)|([gzuncompress\'\.\s]+)|([urldecode\'\.\s]+)([rawurldecode\'\.\s]+));\s*)+\$\w+\s*=\s*\$\w+\(\'\',(\s*\$\w+\s*\(\s*)+\'[^\']+\'\)+;\s*\$\w+\(\);~msi',
  9683. 'fast' => '~((\$\w+)\s*=\s*(([base64_decode\'\.\s]+)|([eval\'\.\s]+)|([create_function\'\.\s]+)|([stripslashes\'\.\s]+)|([gzinflate\'\.\s]+)|([strrev\'\.\s]+)|([str_rot13\'\.\s]+)|([gzuncompress\'\.\s]+)|([urldecode\'\.\s]+)([rawurldecode\'\.\s]+));\s*)+\$\w+\s*=\s*\$\w+\(\'\',(\s*\$\w+\s*\(\s*)+\'[^\']+\'\)+;\s*\$\w+\(\);~msi',
  9684. 'id' => 'createFuncConcat'
  9685. ),
  9686. array(
  9687. 'full' => '~(\$\w+)\s*=\s*base64_decode\("([^"]+)"\);(\1\s*=\s*ereg_replace\("([^"]+)","([^"]+)",\1\);)+\1=base64_decode\(\1\);eval\(\1\);~msi',
  9688. 'fast' => '~(\$\w+)\s*=\s*base64_decode\("([^"]+)"\);(\1\s*=\s*ereg_replace\("([^"]+)","([^"]+)",\1\);)+\1=base64_decode\(\1\);eval\(\1\);~msi',
  9689. 'id' => 'evalEregReplace'
  9690. ),
  9691. array(
  9692. 'full' => '~((\$\w+)\s*=\s*(([base64_decode"\'\.\s]+)|([eval"\'\.\s]+)|([create_function"\'\.\s]+)|([stripslashes"\'\.\s]+)|([gzinflate"\'\.\s]+)|([strrev"\'\.\s]+)|([str_rot13"\'\.\s]+)|([gzuncompress"\'\.\s]+)|([urldecode"\'\.\s]+)([rawurldecode"\'\.\s]+));\s*)+\s*@?eval\(\$[^)]+\)+;~msi',
  9693. 'fast' => '~((\$\w+)\s*=\s*(([base64_decode"\'\.\s]+)|([eval"\'\.\s]+)|([create_function"\'\.\s]+)|([stripslashes"\'\.\s]+)|([gzinflate"\'\.\s]+)|([strrev"\'\.\s]+)|([str_rot13"\'\.\s]+)|([gzuncompress"\'\.\s]+)|([urldecode"\'\.\s]+)([rawurldecode"\'\.\s]+));\s*)+\s*@?eval\(\$[^)]+\)+;~msi',
  9694. 'id' => 'evalWrapVar'
  9695. ),
  9696. array(
  9697. 'full' => '~\$\{"(.{1,20}?(\\\\x[0-9a-f]{2})+)+.?";@?eval\s*\(\s*([\'"?>.]+)?@?\s*(base64_decode\s*\(|gzinflate\s*\(|strrev\s*\(|str_rot13\s*\(|gzuncompress\s*\(|urldecode\s*\(|rawurldecode\s*\(|eval\s*\()+\(?\$\{\$\{"[^\)]+\)+;~msi',
  9698. 'fast' => '~\$\{"(.{1,20}?(\\\\x[0-9a-f]{2})+)+.?";@?eval\s*\(\s*([\'"?>.]+)?@?\s*(base64_decode\s*\(|gzinflate\s*\(|strrev\s*\(|str_rot13\s*\(|gzuncompress\s*\(|urldecode\s*\(|rawurldecode\s*\(|eval\s*\()+\(?\$\{\$\{"[^\)]+\)+;~msi',
  9699. 'id' => 'escapes'
  9700. ),
  9701. array(
  9702. 'full' => '~(\$\w+)\s*=(?:\s*(?:(?:["\'][a-z0-9][\'"])|(?:chr\s*\(\d+\))|(?:[\'"]\\\\x[0-9a-f]+[\'"]))\s*?\.?)+;\s*(\$\w+)\s*=(?:\s*(?:(?:["\'][a-z0-9][\'"])|(?:chr\s*\(\d+\))|(?:[\'"]\\\\x[0-9a-f]+[\'"]))\s*?\.?)+;\s*@?\1\s*\(@?\2\s*\([\'"]([^\'"]+)[\'"]\)+;~msi',
  9703. 'fast' => '~(\$\w+)\s*=(?:\s*(?:(?:["\'][a-z0-9][\'"])|(?:chr\s*\(\d+\))|(?:[\'"]\\\\x[0-9a-f]+[\'"]))\s*?\.?)+;\s*(\$\w+)\s*=(?:\s*(?:(?:["\'][a-z0-9][\'"])|(?:chr\s*\(\d+\))|(?:[\'"]\\\\x[0-9a-f]+[\'"]))\s*?\.?)+;\s*@?\1\s*\(@?\2\s*\([\'"]([^\'"]+)[\'"]\)+;~msi',
  9704. 'id' => 'assert',
  9705. ),
  9706. array(
  9707. 'full' => '~eval\s*\(str_rot13\s*\([\'"]+\s*(?:.+(?=\\\\\')\\\\\'[^\'"]+)+[\'"]+\)+;~msi',
  9708. 'fast' => '~eval\s*\(str_rot13\s*\([\'"]+\s*(?:.+(?=\\\\\')\\\\\'[^\'"]+)+[\'"]+\)+;~msi',
  9709. 'id' => 'evalCodeFunc'
  9710. ),
  9711. array(
  9712. 'full' => '~\$\{"GLOBALS"\}\[[\'"](\w+)[\'"]\]=["\'](\w+)[\'"];\$\{"GLOBALS"\}\[[\'"](\w+)[\'"]\]=["\']\2[\'"];\${\$\{"GLOBALS"\}\[[\'"]\3[\'"]\]}=[\'"]([^\'"]+)[\'"];eval.{10,50}?\$\{\$\{"GLOBALS"\}\[[\'"]\1[\'"]\]\}\)+;~msi',
  9713. 'fast' => '~\$\{"GLOBALS"\}\[[\'"](\w+)[\'"]\]=["\'](\w+)[\'"];\$\{"GLOBALS"\}\[[\'"](\w+)[\'"]\]=["\']\2[\'"];\${\$\{"GLOBALS"\}\[[\'"]\3[\'"]\]}=[\'"]([^\'"]+)[\'"];eval.{10,50}?\$\{\$\{"GLOBALS"\}\[[\'"]\1[\'"]\]\}\)+;~msi',
  9714. 'id' => 'evalVarVar',
  9715. ),
  9716. array(
  9717. 'full' => '~(\$\w+)=[\'"][^"\']+[\'"];(\$\w+)=strrev\(\'edoced_46esab\'\);eval\(\2\([\'"][^\'"]+[\'"]\)+;~msi',
  9718. 'fast' => '~(\$\w+)=[\'"][^"\']+[\'"];(\$\w+)=strrev\(\'edoced_46esab\'\);eval\(\2\([\'"][^\'"]+[\'"]\)+;~msi',
  9719. 'id' => 'edoced_46esab',
  9720. ),
  9721. array(
  9722. 'full' => '~(\$\w+)=strrev\(\'edoced_46esab\'\);\s?(\$\w+)=strrev\(\'etalfnizg\'\);\s?eval\(\2\(\1\([\'"]([\w\/\+=]+)[\'"]\)\)\);~msi',
  9723. 'fast' => '~(\$\w+)=strrev\(\'edoced_46esab\'\);\s?(\$\w+)=strrev\(\'etalfnizg\'\);\s?eval\(\2\(\1\([\'"]([\w\/\+=]+)[\'"]\)\)\);~msi',
  9724. 'id' => 'edoced_46esab_etalfnizg',
  9725. ),
  9726. array(
  9727. 'full' => '~(\$\w+)\s*=\s*"((?:[^"]|(?<=\\\\)")*)";(\$\w+)\s*=\s*(\1\[\d+\]\.?)+;(\$\w+)\s*=\s*[^;]+;(\$\w+)\s*=\s*"[^"]+";\$\w+\s*=\s*\5\."[^"]+"\.\6;\3\((\1\[\d+\]\.?)+,\s*\$\w+\s*,"\d+"\);~smi',
  9728. 'fast' => '~(\$\w+)\s*=\s*"((?:[^"]|(?<=\\\\)"){0,1000})";(\$\w+)\s*=\s*(\1\[\d+\]\.?)+;(\$\w+)\s*=\s*[^;]+;(\$\w+)\s*=\s*"[^"]+";\$\w+\s*=\s*\5\."[^"]+"\.\6;\3\((\1\[\d+\]\.?)+,\s*\$\w+\s*,"\d+"\);~smi',
  9729. 'id' => 'eval2'
  9730. ),
  9731. array(
  9732. 'full' => '~@?(eval|echo|(\$\w+)\s*=\s*create_function)\s*\((\'\',)?\s*([\'"?>.\s]+)?\s*\(?\s*@?\s*(base64_decode\s*\(|pack\s*\(\'H\*\',|convert_uudecode\s*\(|htmlspecialchars_decode\s*\(|stripslashes\s*\(|gzinflate\s*\(|strrev\s*\(|str_rot13\s*\(|gzuncompress\s*\(|urldecode\s*\(|rawurldecode\s*\(|eval\s*\()+.*?[^\'")]+((\s*\.?[\'"]([^\'";]+[\'"]*\s*)+)?\s*[\'"\);]+)+(\s*\2\(\);)?~msi',
  9733. 'fast' => '~@?(eval|echo|(\$\w+)\s*=\s*create_function)\s*\((\'\',)?\s*([\'"?>.\s]+)?\s*\(?\s*@?\s*(base64_decode\s*\(|pack\s*\(\'H\*\',|convert_uudecode\s*\(|htmlspecialchars_decode\s*\(|stripslashes\s*\(|gzinflate\s*\(|strrev\s*\(|str_rot13\s*\(|gzuncompress\s*\(|urldecode\s*\(|rawurldecode\s*\(|eval\s*\()+.*?[^\'")]+((\s*\.?[\'"]([^\'";]+[\'"]*\s*)+)?\s*[\'"\);]+)+(\s*\2\(\);)?~msi',
  9734. 'id' => 'eval'
  9735. ),
  9736. array(
  9737. 'full' => '~eval\s*/\*[\w\s\.:,]+\*/\s*\([^\)]+\)+;~msi',
  9738. 'fast' => '~eval\s*/\*[\w\s\.:,]+\*/\s*\(~msi',
  9739. 'id' => 'eval'
  9740. ),
  9741. array(
  9742. 'full' => '~eval\("\\\\145\\\\166\\\\141\\\\154\\\\050\\\\142\\\\141\\\\163[^\)]+\)+;~msi',
  9743. 'fast' => '~eval\("\\\\145\\\\166\\\\141\\\\154\\\\050\\\\142\\\\141\\\\163~msi',
  9744. 'id' => 'evalHex'
  9745. ),
  9746. array(
  9747. 'full' => '~eval\s*\("\\\\x?\d+[^\)]+\)+;(?:[\'"]\)+;)?~msi',
  9748. 'fast' => '~eval\s*\("\\\\x?\d+~msi',
  9749. 'id' => 'evalHex'
  9750. ),
  9751. array(
  9752. 'full' => '~(\$\w+)\s=\s(["\']?[\w\/\+]+["\']?);\s(\$\w+)\s=\s((?:str_rot13\(|rawurldecode\(|convert_uudecode\(|gzinflate\(|str_rot13\(|base64_decode\(|rawurldecode\(|)+\1\)\)+);\secho\s(eval\(\3\);)~msi',
  9753. 'fast' => '~(\$\w+)\s=\s(["\']?[\w\/\+]+["\']?);\s(\$\w+)\s=\s((?:str_rot13\(|rawurldecode\(|convert_uudecode\(|gzinflate\(|str_rot13\(|base64_decode\(|rawurldecode\(|)+\1\)\)+);\secho\s(eval\(\3\);)~msi',
  9754. 'id' => 'echoEval'
  9755. ),
  9756. array(
  9757. 'full' => '~\$\w+=\'printf\';(\s*\$\w+\s*=\s*\'[^\']+\'\s*;)+\s*(\$\w+\s*=\s*\$\w+\([^\)]+\);\s*)+(\$\w+\s*=\s*\'[^\']+\';\s*)?(\s*(\$\w+\s*=\s*)?\$\w+\([^)]*\)+;\s*)+(echo\s*\$\w+;)?~msi',
  9758. 'fast' => '~\$\w+=\'printf\';(\s*\$\w+\s*=\s*\'[^\']+\'\s*;)+\s*(\$\w+\s*=\s*\$\w+\([^\)]+\);\s*)+(\$\w+\s*=\s*\'[^\']+\';\s*)?(\s*(\$\w+\s*=\s*)?\$\w+\([^)]*\)+;\s*)+(echo\s*\$\w+;)?~msi',
  9759. 'id' => 'seolyzer'
  9760. ),
  9761. array(
  9762. 'full' => '~(\$\w+)="((?:[^"]|(?<=\\\\)")*)";(\s*\$GLOBALS\[\'\w+\'\]\s*=\s*(?:\${)?(\1\[\d+\]}?\.?)+;\s*)+(.{0,400}\s*\1\[\d+\]\.?)+;\s*}~msi',
  9763. 'fast' => '~(\$\w+)="((?:[^"]|(?<=\\\\)"){0,1000})";(\s*\$GLOBALS\[\'\w+\'\]\s*=\s*(?:\${)?(\1\[\d+\]}?\.?)+;\s*)+(.{0,400}\s*\1\[\d+\]\.?)+;\s*}~msi',
  9764. 'id' => 'subst2',
  9765. ),
  9766. array(
  9767. 'full' => '~(\$\w+\s*=\s*"[^"]+";\s*)+(\$\w+\s*=\s*\$?\w+\("\w+"\s*,\s*""\s*,\s*"\w+"\);\s*)+\$\w+\s*=\s*\$\w+\("",\s*\$\w+\(\$\w+\("\w+",\s*"",(\s*\$\w+\.?)+\)+;\$\w+\(\);~msi',
  9768. 'fast' => '~(\$\w+\s*=\s*"[^"]+";\s*)+(\$\w+\s*=\s*\$?\w+\("\w+"\s*,\s*""\s*,\s*"\w+"\);\s*)+\$\w+\s*=\s*\$\w+\("",\s*\$\w+\(\$\w+\("\w+",\s*"",(\s*\$\w+\.?)+\)+;\$\w+\(\);~msi',
  9769. 'id' => 'strreplace',
  9770. ),
  9771. array(
  9772. 'full' => '~@?echo\s*([\'"?>.\s]+)?@?\s*(base64_decode\s*\(|stripslashes\s*\(|gzinflate\s*\(|strrev\s*\(|str_rot13\s*\(|gzuncompress\s*\(|urldecode\s*\(|rawurldecode\s*\(|eval\s*\()+.*?[^\'")]+((\s*\.?[\'"]([^\'";]+\s*)+)?\s*[\'"\);]+)+~msi',
  9773. 'fast' => '~@?echo\s*([\'"?>.\s]+)?@?\s*(base64_decode\s*\(|stripslashes\s*\(|gzinflate\s*\(|strrev\s*\(|str_rot13\s*\(|gzuncompress\s*\(|urldecode\s*\(|rawurldecode\s*\(|eval\s*\()+.*?[^\'")]+((\s*\.?[\'"]([^\'";]+\s*)+)?\s*[\'"\);]+)+~msi',
  9774. 'id' => 'echo',
  9775. ),
  9776. array(
  9777. 'full' => '~(\$\w+)="([^"]+)";\s*(\$\w+)=strtoupper\s*\((\1\[\d+\]\s*\.?\s*)+\)\s*;\s*if\(\s*isset\s*\(\${\s*\3\s*}\[\d*\s*\'\w+\'\s*\]\s*\)\s*\)\s*{eval\(\${\3\s*}\[\'\w+\']\s*\)\s*;}~smi',
  9778. 'fast' => '~(\$\w+)="([^"]+)";\s*(\$\w+)=strtoupper\s*\((\1\[\d+\]\s*\.?\s*)+\)\s*;\s*if\(\s*isset\s*\(\${\s*\3\s*}\[\d*\s*\'\w+\'\s*\]\s*\)\s*\)\s*{eval\(\${\3\s*}\[\'\w+\']\s*\)\s*;}~smi',
  9779. 'id' => 'strtoupper',
  9780. ),
  9781. array(
  9782. 'full' => '~(\$\w+)="[^"]+";\s*(\$\w+)=str_ireplace\("[^"]+","",\1\);(\$\w+)\s*=\s*"[^"]+";\s*function\s*(\w+)\((\$\w+,?)+\){\s*(\$\w+)=\s*create_function\(\'\',\$\w+\);\s*array_map\(\6,array\(\'\'\)+;\s*}\s*set_error_handler\(\'\4\'\);(\$\w+)=\2\(\3\);user_error\(\7,E_USER_ERROR\);\s*if\s*.+?}~msi',
  9783. 'fast' => '~(\$\w+)="[^"]+";\s*(\$\w+)=str_ireplace\("[^"]+","",\1\);(\$\w+)\s*=\s*"[^"]+";\s*function\s*(\w+)\((\$\w+,?)+\){\s*(\$\w+)=\s*create_function\(\'\',\$\w+\);\s*array_map\(\6,array\(\'\'\)+;\s*}\s*set_error_handler\(\'\4\'\);(\$\w+)=\2\(\3\);user_error\(\7,E_USER_ERROR\);\s*if\s*.+?}~msi',
  9784. 'id' => 'errorHandler',
  9785. ),
  9786. array(
  9787. 'full' => '~(\$\w+)=strrev\(str_ireplace\("[^"]+","","[^"]+"\)\);(\$\w+)="([^"]+)";eval\(\1\(\2\)+;}~msi',
  9788. 'fast' => '~(\$\w+)=strrev\(str_ireplace\("[^"]+","","[^"]+"\)\);(\$\w+)="([^"]+)";eval\(\1\(\2\)+;}~msi',
  9789. 'id' => 'evalIReplace',
  9790. ),
  9791. array(
  9792. 'full' => '~error_reporting\(0\);ini_set\("display_errors",\s*0\);if\(!defined\(\'(\w+)\'\)\){define\(\'\1\',__FILE__\);if\(!function_exists\("([^"]+)"\)\){function [^(]+\([^\)]+\).+?eval\(""\);.+?;eval\(\$[^\)]+\)\);[^\)]+\)+;return\s*\$[^;]+;\s*\?>([^;]+);~msi',
  9793. 'fast' => '~error_reporting\(0\);ini_set\("display_errors",\s*0\);if\(!defined\(\'(\w+)\'\)\){define\(\'\1\',__FILE__\);if\(!function_exists\("([^"]+)"\)\){function [^(]+\([^\)]+\).+?eval\(""\);.+?;eval\(\$[^\)]+\)\);[^\)]+\)+;return\s*\$[^;]+;\s*\?>([^;]+);~msi',
  9794. 'id' => 'PHPJiaMi',
  9795. ),
  9796. array(
  9797. 'full' => '~\$\w+=0;(\$GLOBALS\[\'\w+\'\])\s*=\s*\'([^\']+)\';\s*(\$\w+)=pack\(\'H\*\',substr\(\1,\s*([-\d]+)\)\);if\s*\(!function_exists\(\'(\w+)\'\)\){function\s*\5\(\$\w+,\s*\$\w+\){\$\w+=\1;\s*\$d=pack\(\'H\*\',substr\(\1,\s*\4\)\);\s*return\s*\$\w+\(substr\(\$\w+,\s*\$\w+,\s*\$\w+\)\);}};eval\(\3\(\'[^\']+\'\)\);~msi',
  9798. 'fast' => '~\$\w+=0;(\$GLOBALS\[\'\w+\'\])\s*=\s*\'([^\']+)\';\s*(\$\w+)=pack\(\'H\*\',substr\(\1,\s*([-\d]+)\)\);if\s*\(!function_exists\(\'(\w+)\'\)\){function\s*\5\(\$\w+,\s*\$\w+\){\$\w+=\1;\s*\$d=pack\(\'H\*\',substr\(\1,\s*\4\)\);\s*return\s*\$\w+\(substr\(\$\w+,\s*\$\w+,\s*\$\w+\)\);}};eval\(\3\(\'[^\']+\'\)\);~msi',
  9799. 'id' => 'substr',
  9800. ),
  9801. array(
  9802. 'full' => '~(function\s*(\w+)\((\$\w+)\){\s*return\s*(base64_decode|gzinflate|eval)\(\$\w+(,\d+)?\);}\s*)+(\$\w+)="([^"]+)";(\w+\()+\6\)+~msi',
  9803. 'fast' => '~(function\s*(\w+)\((\$\w+)\){\s*return\s*(base64_decode|gzinflate|eval)\(\$\w+(,\d+)?\);}\s*)+(\$\w+)="([^"]+)";(\w+\()+\6\)+~msi',
  9804. 'id' => 'funcs',
  9805. ),
  9806. array(
  9807. 'full' => '~\$_F=__FILE__;\$_X=["\']([^\'"]+)[\'"];\s*(?:\$[_\w]+\.=[\'"][\w\+\/=]+[\'"];){0,30}\$_\w+=base64_decode\(\$_X\);\$_X=strtr\(\$_X,\'([^\']+)\',\'([^\']+)\'\);\$_R=@?(?:(str_replace)|(ereg_replace)|(preg_replace))\(\'\~?__FILE__\~?\',"\'".\$_F."\'",\$_X\);eval\(\$_R\);\$_R=0;\$_X=0;~msi',
  9808. 'fast' => '~\$_F=__FILE__;\$_X=["\']([^\'"]+)[\'"];\s*(?:\$[_\w]+\.=[\'"][\w\+\/=]+[\'"];){0,30}\$_\w+=base64_decode\(\$_X\);\$_X=strtr\(\$_X,\'([^\']+)\',\'([^\']+)\'\);\$_R=@?(?:(str_replace)|(ereg_replace)|(preg_replace))\(\'\~?__FILE__\~?\',"\'".\$_F."\'",\$_X\);eval\(\$_R\);\$_R=0;\$_X=0;~msi',
  9809. 'id' => 'LockIt2',
  9810. ),
  9811. array(
  9812. 'full' => '~(?:@error_reporting\(\d+\);\s*@set_time_limit\(\d+\);)?\s*(\$\w+)=([\s\'\w\/+=]+);\s*(\$\w+)=(__FILE__);\s*\1=gzinflate\(str_rot13\(base64_decode\(\$tr\)\)\);\1=strtr\(\1,\'([^\']+)\'\s*,\'([^\']+)\'\);(\$_R)=@?ereg_replace\(\'\~?\4\~?\',"\'".\3."\'",\1\);eval\(\7\);\7=0;\1=0;~msi',
  9813. 'fast' => '~(\$\w+)=([\s\'\w\/+=]+);\s*(\$\w+)=(__FILE__);\s*\1=\w+\(\w+\(\w+\(\$tr\)\)\);\1=\w+\(\1,\'([^\']+)\'\s*,\'([^\']+)\'\);(\$_R)=@?\w+\(\'\~?\4\~?\',"\'".\3."\'",\1\);\w+\(\7\);\7=0;\1=0;~msi',
  9814. 'id' => 'anaski',
  9815. ),
  9816. array(
  9817. 'full' => '~\$\w+="[^"]+";\$l+=0;\$l+=\'base64_decode\';\$l+=0;eval\(.+?;eval\(\$l+\);return;~msi',
  9818. 'fast' => '~\$\w+="[^"]+";\$l+=0;\$l+=\'base64_decode\';\$l+=0;eval\(.+?;eval\(\$l+\);return;~msi',
  9819. 'id' => 'custom1',
  9820. ),
  9821. array(
  9822. 'full' => '~(\$\w+)\s*=\s*"(\w{32})";\s*(\$\w+)\s*=\s*array\s*\(\);\s*(\3\[\d+\]\s*=\s*"[^"]+";\s*)+\s*(\$\w+)\s*=\s*"base64_decode";\s*\$\w+\s*=\s*(\w+)\s*\(\3,\1\);function\s*\6\(\s*.{200,500}return\s*\$\w+;\s*}\s*eval\s*\(\5\s*\(\$\w+\)\);~msi',
  9823. 'fast' => '~(\$\w+)\s*=\s*"(\w{32})";\s*(\$\w+)\s*=\s*array\s*\(\);\s*(\3\[\d+\]\s*=\s*"[^"]+";\s*)+\s*(\$\w+)\s*=\s*"base64_decode";\s*\$\w+\s*=\s*(\w+)\s*\(\3,\1\);function\s*\6\(\s*.{200,500}return\s*\$\w+;\s*}\s*eval\s*\(\5\s*\(\$\w+\)\);~msi',
  9824. 'id' => 'custom2',
  9825. ),
  9826. array(
  9827. 'full' => '~\$\w+=\'=+\s*Obfuscation provided by Unknowndevice64 - Free Online PHP Obfuscator\s*(?:http://www\.ud64\.com/)?\s*=+\';\s*(\$ud64_c[o0]m="[\\\\0-9a-z\."]+;)+\$\w+=(\$ud64_c[o0]m\()+"([^"]+)"\)+;@eval\(\$ud64_c[o0]m\(\'[^\']+\'\)+;~msi',
  9828. 'fast' => '~\$\w+=\'=+\s*Obfuscation provided by Unknowndevice64 - Free Online PHP Obfuscator\s*(?:http://www\.ud64\.com/)?\s*=+\';\s*(\$ud64_c[o0]m="[\\\\0-9a-z\."]+;)+\$\w+=(\$ud64_c[o0]m\()+"([^"]+)"\)+;@eval\(\$ud64_c[o0]m\(\'[^\']+\'\)+;~msi',
  9829. 'id' => 'ud64',
  9830. ),
  9831. array(
  9832. 'full' => '~(\$[\w_]+=("[\\\\\\\\\w]+"\.?)+;)+\$\w+=(?:\$\w+\()+"([\w\/\+]+)"\)+;@eval\(\$\w+\(\'.*?\'\)+;~msi',
  9833. 'fast' => '~(\$[\w_]+=("[\\\\\\\\\w]+"\.?)+;)+\$\w+=(?:\$\w+\()+"([\w\/\+]+)"\)+;@eval\(\$\w+\(\'.*?\'\)+;~msi',
  9834. 'id' => 'ud64',
  9835. ),
  9836. array(
  9837. 'full' => '~\$\w+=__FILE__;\$\w+=fopen\(\$\w+,\'rb\'\);fread\(\$\w+,(\d+)\);\$\w+=explode\("\\\\t",base64_decode\(fread\(\$\w+,(\d+)\)+;\$\w+=\$\w+\[[\d+]\];[\$l1=\d{}\.;\(\)\[\]]+eval\(\$\w+\(\'[^\']+\'\)+;\s*return\s*;\?>[\w=\+]+~msi',
  9838. 'fast' => '~\$\w+=__FILE__;\$\w+=fopen\(\$\w+,\'rb\'\);fread\(\$\w+,(\d+)\);\$\w+=explode\("\\\\t",base64_decode\(fread\(\$\w+,(\d+)\)+;\$\w+=\$\w+\[[\d+]\];[\$l1=\d{}\.;\(\)\[\]]+eval\(\$\w+\(\'[^\']+\'\)+;\s*return\s*;\?>[\w=\+]+~msi',
  9839. 'id' => 'qibosoft',
  9840. ),
  9841. array(
  9842. 'full' => '~(\$\w+)=base64_decode\("([^"]+)"\);\s*eval\("return\s*eval\(\\\\"\1\\\\"\);"\)~msi',
  9843. 'fast' => '~(\$\w+)=base64_decode\("([^"]+)"\);\s*eval\("return\s*eval\(\\\\"\1\\\\"\);"\)~msi',
  9844. 'id' => 'evalReturn',
  9845. ),
  9846. array(
  9847. 'full' => '~(?:\$[0O]+\[[\'"](\w+)[\'"]\]\.?="[\\\\\w]+";)+(?:\$[0O]+\[[\'"]\w+[\'"]\]\.?=\$[0O]+\[[\'"]\w+[\'"]\]\([\'"][\d\(]+[\'"](,__FILE__)?\);)+@eval\((?:\$[0O]+\[[\'"]\w+[\'"]\]\()+"([^"]+)"\)+;~mis',
  9848. 'fast' => '~(?:\$[0O]+\[[\'"](\w+)[\'"]\]\.?="[\\\\\w]+";)+(?:\$[0O]+\[[\'"]\w+[\'"]\]\.?=\$[0O]+\[[\'"]\w+[\'"]\]\([\'"][\d\(]+[\'"](,__FILE__)?\);)+@eval\((?:\$[0O]+\[[\'"]\w+[\'"]\]\()+"([^"]+)"\)+;~mis',
  9849. 'id' => 'evalChars',
  9850. ),
  9851. array(
  9852. 'full' => '~<\?php\s+((\$GLOBALS\[\s*[\'"]\w+[\'"]\s*\])\s*=\s*base64_decode\("([^"]*)"\);)+\s*\?><\?php\s.+\2.+exit;\s}\sfunction\s\w+\(\)\s{\sreturn\sarray\(\s\'favicon\'\s=>\s\'[^\']+\',\s+\'sprites\'\s=>\s\'[^\']+\',\s\);\s}~msi',
  9853. 'fast' => '~<\?php\s+((\$GLOBALS\[\s*[\'"]\w+[\'"]\s*\])\s*=\s*base64_decode\("([^"]*)"\);)+\s*\?><\?php\s.+\2.+exit;\s}\sfunction\s\w+\(\)\s{\sreturn\sarray\(\s\'favicon\'\s=>\s\'[^\']+\',\s+\'sprites\'\s=>\s\'[^\']+\',\s\);\s}~msi',
  9854. 'id' => 'globalsBase64',
  9855. ),
  9856. array(
  9857. 'full' => '~(\$\w+=(\w+)\(\'\d+\'\);\s*)+\$\w+=new\s\$\w+\(\2\(\'(\d+)\'\)+;error_reporting\(0\);eval\(\$\w+\(\$\w+->\$\w+\("[^"]+"\)+;.+?function \2.+?return\s\$\w+;\s}~msi',
  9858. 'fast' => '~(\$\w+=(\w+)\(\'\d+\'\);\s*)+\$\w+=new\s\$\w+\(\2\(\'(\d+)\'\)+;error_reporting\(0\);eval\(\$\w+\(\$\w+->\$\w+\("[^"]+"\)+;.+?function \2.+?return\s\$\w+;\s}~msi',
  9859. 'id' => 'aanKFM',
  9860. ),
  9861. array(
  9862. 'full' => '~(\$\w+=strrev\("[^"]+"\);)+eval\((\$\w+\()+"[^"]+"\)+;~mis',
  9863. 'fast' => '~(\$\w+=strrev\("[^"]+"\);)+eval\((\$\w+\()+"[^"]+"\)+;~mis',
  9864. 'id' => 'strrevVarEval',
  9865. ),
  9866. array(
  9867. 'full' => '~\$\w+=basename/\*\w+\*/\(/\*\w+\*/trim/\*\w+\*/\(.+?(\$\w+)=.+\1.+?;~msi',
  9868. 'fast' => '~\$\w+=basename/\*\w+\*/\(/\*\w+\*/trim/\*\w+\*/\(.+?(\$\w+)=.+\1.+?;~msi',
  9869. 'id' => 'comments',
  9870. ),
  9871. array(
  9872. 'full' => '~(\$\w+)\s*=\s*(base64_decode\s*\(+|gzinflate\s*\(+|strrev\s*\(+|str_rot13\s*\(+|gzuncompress\s*\(+|convert_uudecode\s*\(+|urldecode\s*\(+|rawurldecode\s*\(+|htmlspecialchars_decode\s*\(+)+"([^"]+)"\)+;\s*@?eval\(([\'"?>.\s]+)?\1\);~',
  9873. 'fast' => '~(\$\w+)\s*=\s*(base64_decode\s*\(+|gzinflate\s*\(+|strrev\s*\(+|str_rot13\s*\(+|gzuncompress\s*\(+|convert_uudecode\s*\(+|urldecode\s*\(+|rawurldecode\s*\(+|htmlspecialchars_decode\s*\(+)+"([^"]+)"\)+;\s*@?eval\(([\'"?>.\s]+)?\1\);~',
  9874. 'id' => 'varFuncsEval',
  9875. ),
  9876. array(
  9877. 'full' => '~((\$\w+)="";\$\w+\s*\.=\s*"[^;]+;\s*)+(?:="";)?eval\((\s*\$\w+\s*\.)+\s*"[^"]+(?:"\);)+~msi',
  9878. 'fast' => '~((\$\w+)="";\$\w+\s*\.=\s*"[^;]+;\s*)+(?:="";)?eval\((\s*\$\w+\s*\.)+\s*"[^"]+(?:"\);)+~msi',
  9879. 'id' => 'evalConcatVars',
  9880. ),
  9881. array(
  9882. 'full' => '~<\?php\s*defined\(\'[^\']+\'\)\s*\|\|\s*define\(\'[^\']+\',__FILE__\);(global\s*\$[^;]+;)+\s*(if\(!function_exists\(\'([^\']+)\'\)\){\s*function\s*[^\)]+\(\$[^,]+,\$[^=]+=\'\'\){\s*if\(empty\(\$[^\)]+\)\)\s*return\s*\'\';\s*\$[^=]+=base64_decode\(\$[^\)]+\);\s*if\(\$[^=]+==\'\'\)\s*return\s*\~\$[^;]+;\s*if\(\$[^=]+==\'-1\'\)\s*@[^\(]+\(\);\s*\$[^=]+=\$GLOBALS\[\'[^\']+\'\]\[\'[^\']+\'\]\(\$[^\)]+\);\s*\$[^=]+=\$GLOBALS\[\'[^\']+\'\]\[\'[^\']+\'\]\(\$[^,]+,\$[^,]+,\$[^\)]+\);\s*return\s*\$[^^]+\^\$[^;]+;\s*}}\s*)+(\$[^\[]+\["[^"]+"]=[^\(]+\(\'[^\']+\',\'[^\']*\'\);\s*)+(\$[^\[]+\[\'[^\']+\'\]=\$GLOBALS\[\'[^\']+\'\]\[\'[^\']+\'\]\([^\)]*\)+;\s*)+return\(eval\(\$[^\[]+\[\'[^\']+\'\]\)+;\s*\?>\s*#!/usr/bin/php\s*-q\s*(\s*[^\s]+)+~msi',
  9883. 'fast' => '~<\?php\s*defined\(\'[^\']{10,30}\'\)\s*\|\|\s*define\(\'[^\']{10,30}\',__FILE__\);(global\s*\$[^;]{10,30};)+\s*if\(!function_exists\(\'([^\']+)\'\)\){\s*function\s*[^\)]+\(\$[^,]{10,30},\$[^=]{10,30}=\'\'\){\s*if\(empty\(\$[^\)]+\)\)\s*return\s*\'\';\s*\$[^=]{10,30}=base64_decode~msi',
  9884. 'id' => 'OELove',
  9885. ),
  9886. array(
  9887. 'full' => '~\$\w+\s*=(\s*(\d+)\+)+\d+;(\$\w+="[^"]+";)+(\$\w+)\s*=\s*\w+\(\'[^\']+\',\s*\$\w+,\s*\'[^\']+\'\);.+\4\("[^"]+"\);\$\w+\s*=\s*\4;(\$\w+="[^"]+";)+.+\$\w+\(\$\w+,\$\w+\("",\s*\$\w+\(\$\w+\(\$\w+\(\$\w+\(\$\w+,\s*"(\d+)"\)+,\$\w+\);.+function \w+\((\$\w+),\s*\$\w+,\s(\$\w+)\)\s{\8\s=\s\8\s\.\s\8;.+return \7;}~msi',
  9888. 'fast' => '~\$\w+\s*=(\s*(\d+)\+)+\d+;(\$\w+="[^"]+";)+(\$\w+)\s*=\s*\w+\(\'[^\']+\',\s*\$\w+,\s*\'[^\']+\'\);.+\4\("[^"]+"\);\$\w+\s*=\s*\4;(\$\w+="[^"]+";)+~msi',
  9889. 'id' => 'Obf_20200402_1',
  9890. ),
  9891. array(
  9892. 'full' => '~(?:\$\w+\s*=\s*"[^"]+";\s*)?function\s(\w+)\((\$\w+),\s*(\$\w+),\s*(\$\w+)\){\s*return\s*([\'\.]*(\2|\3|\4)[\'\.]*)+;\s*}\s*(?:\$\w+\s*=\s*"[^"]+";)?(\s*\$\w+\s*=\s*\1\((((\'\')|(\$\w+)|(\$\w+[\[\{]\d+[\]\}](\.\'\')?)|(\$\w+[\[\{]\d+[\]\}]\.\$\w+[\[\{]\d+[\]\}]))\s*,?\s*)+\);\s*)+\s*\$\w+\s*=\s*\1[^"]+"\'([^\']+)\'".+?array\(\'\',\'}\'.\$\w+\.\'//\'\)\);~msi',
  9893. 'fast' => '~function\s(\w+)\((\$\w+),\s*(\$\w+),\s*(\$\w+)\){\s*return\s*([\'\.]*(\2|\3|\4)[\'\.]*)+;\s*}\s*(?:\$\w+\s*=\s*"[^"]+";)?(\s*\$\w+\s*=\s*\1\((((\'\')|(\$\w+)|(\$\w+[\[\{]\d+[\]\}](\.\'\')?)|(\$\w+[\[\{]\d+[\]\}]\.\$\w+[\[\{]\d+[\]\}]))\s*,?\s*)+\);\s*)+\s*\$\w+\s*=\s*\1[^"]+"\'([^\']+)\'".+?array\(\'\',\'}\'.\$\w+\.\'//\'\)\);~msi',
  9894. 'id' => 'Obf_20200402_2',
  9895. ),
  9896. array(
  9897. 'full' => '~function\s*(\w+)\((\$\w+),\s*(\$\w+)\)\s*\{\s*\3\s*=\s*md5\(\3\);\s*\$\w+\s*=\s*\d+;\s*\2\s*=\s*base64_decode\(\2\);\s*\$\w+\s*=\s*strlen\(\2\);\s*\$\w+\s*=\s*strlen\(\3\);\s*\$\w+\s*=\s*\'\';\s*for\s*\(\$\w+\s*=\s\d+;\s*\$\w+\s*<\s*\$len;\s*\$\w+\+\+\)\s*\{\s*if\s*\(\$\w+\s*==\s*\$\w+\)\s*\{\s*\$\w+\s*=\s*\d+;\s*}\s*\$\w+\s*\.=\s*substr\(\3,\s*\$\w+,\s*\d+\);\s*\$\w+\+\+;\s*\}\s*\$\w+\s*=\s*\'\';\s*for\s*\(\$\w+\s*=\s*\d+;\s*\$\w+\s*<\s*\$\w+;\s*\$\w+\+\+\)\s*{\s*if\s*\(ord\(substr\(\2,\s*\$\w+,\s*\d+\)\)\s*<\s*ord\(substr\(\$\w+,\s*\$\w+,\s*\d+\)\)\)\s*\{\s*\$\w+\s*\.=\s*chr\(\(ord\(substr\(\2,\s*\$\w+,\s*\d+\)\)\s*\+\s*\d+\)\s*-\s*ord\(substr\(\$\w+,\s*\$\w+,\s*\d+\)\)\);\s*}\s*else\s*{\s*\$\w+\s*\.=\s*chr\(ord\(substr\(\2,\s*\$\w+,\s*\d+\)\)\s*-\s*ord\(substr\(\$\w+,\s*\$\w+,\s*\d+\)\)\);\s*}\s*}\s*return\s*\$\w+;\s*\}\s*\2\s*=\s*"[^"]+";\s*\3\s*=\s*"[^"]+";\s*(\$\w+)\s*=\s*\1\(\2,\s*\3\);\s*eval\(\4\);~msi',
  9898. 'fast' => '~function\s*(\w+)\((\$\w+),\s*(\$\w+)\)\s*\{\s*\3\s*=\s*md5\(\3\);\s*\$\w+\s*=\s*\d+;\s*\2\s*=\s*base64_decode\(\2\);\s*\$\w+\s*=\s*strlen\(\2\);\s*\$\w+\s*=\s*strlen\(\3\);\s*\$\w+\s*=\s*\'\';\s*for\s*\(\$\w+\s*=\s\d+;\s*\$\w+\s*<\s*\$len;\s*\$\w+\+\+\)\s*\{\s*if\s*\(\$\w+\s*==\s*\$\w+\)\s*\{\s*\$\w+\s*=\s*\d+;\s*}\s*\$\w+\s*\.=\s*substr\(\3,\s*\$\w+,\s*\d+\);\s*\$\w+\+\+;\s*\}\s*\$\w+\s*=\s*\'\';\s*for\s*\(\$\w+\s*=\s*\d+;\s*\$\w+\s*<\s*\$\w+;\s*\$\w+\+\+\)\s*{\s*if\s*\(ord\(substr\(\2,\s*\$\w+,\s*\d+\)\)\s*<\s*ord\(substr\(\$\w+,\s*\$\w+,\s*\d+\)\)\)\s*\{\s*\$\w+\s*\.=\s*chr\(\(ord\(substr\(\2,\s*\$\w+,\s*\d+\)\)\s*\+\s*\d+\)\s*-\s*ord\(substr\(\$\w+,\s*\$\w+,\s*\d+\)\)\);\s*}\s*else\s*{\s*\$\w+\s*\.=\s*chr\(ord\(substr\(\2,\s*\$\w+,\s*\d+\)\)\s*-\s*ord\(substr\(\$\w+,\s*\$\w+,\s*\d+\)\)\);\s*}\s*}\s*return\s*\$\w+;\s*\}\s*\2\s*=\s*"[^"]+";\s*\3\s*=\s*"[^"]+";\s*(\$\w+)\s*=\s*\1\(\2,\s*\3\);\s*eval\(\4\);~msi',
  9899. 'id' => 'Obf_20200414_1',
  9900. ),
  9901. array(
  9902. 'full' => '~(?:\$\w+\s*=\s*\'\w+\';)?\s*(\$\w+)\s*=\s*urldecode\(\'[%0-9a-f]+\'\);(\s*(\$\w+)\s*=(\s*\1\{\d+\}\.?)+;)+\s*(\$\w+)\s*=\s*"[^"]+"\.\3\("[^"]+"\);\s*eval\(\5\);~msi',
  9903. 'fast' => '~(\$\w+)\s*=\s*urldecode\(\'[%0-9a-f]+\'\);(\s*(\$\w+)\s*=(\s*\1\{\d+\}\.?)+;)+\s*(\$\w+)\s*=\s*"[^"]+"\.\3\("[^"]+"\);\s*eval\(\5\);~msi',
  9904. 'id' => 'Obf_20200421_1',
  9905. ),
  9906. array(
  9907. 'full' => '~(\$\w+)=\'([^\']+)\';(\$\w+)=str_rot13\(gzinflate\(str_rot13\(base64_decode\(\1\)\)\)\);eval\(\3\);~msi',
  9908. 'fast' => '~(\$\w+)=\'([^\']+)\';(\$\w+)=str_rot13\(gzinflate\(str_rot13\(base64_decode\(\1\)\)\)\);eval\(\3\);~msi',
  9909. 'id' => 'SmartToolsShop',
  9910. ),
  9911. array(
  9912. 'full' => '~(\$\w+)\s*=\s*\("\?>"\.gzuncompress\(base64_decode\("[^"]+"\)\)\);\s*@?eval\(\1\);~msi',
  9913. 'fast' => '~(\$\w+)\s*=\s*\("\?>"\.gzuncompress\(base64_decode\("[^"]+"\)\)\);\s*@?eval\(\1\);~msi',
  9914. 'id' => 'Obf_20200504_1',
  9915. ),
  9916. array(
  9917. 'full' => '~(\$\w+)=base64_decode\(\'[^\']+\'\);\s*eval\(\1\);~mis',
  9918. 'fast' => '~(\$\w+)=base64_decode\(\'[^\']+\'\);\s*eval\(\1\);~mis',
  9919. 'id' => 'Obf_20200507_1',
  9920. ),
  9921. array(
  9922. 'full' => '~@error_reporting\(0\);\s*@ini_set\(\'error_log\',NULL\);\s*@ini_set\(\'log_errors\',0\);\s*@ini_set\(\'display_errors\',\s*0\);\s*@(\$\w+)="[create_function"\.]+;\s*(\$\w+)=\1\("([^"]+)","[eval\."]+\(\'\?>\'\.[base64_decode"\.]+\(\3\)\);"\);\s*\2\("([^"]+)"\);exit;~msi',
  9923. 'fast' => '~@error_reporting\(0\);\s*@ini_set\(\'error_log\',NULL\);\s*@ini_set\(\'log_errors\',0\);\s*@ini_set\(\'display_errors\',\s*0\);\s*@(\$\w+)="[create_function"\.]+;\s*(\$\w+)=\1\("([^"]+)","[eval\."]+\(\'\?>\'\.[base64_decode"\.]+\(\3\)\);"\);\s*\2\("([^"]+)"\);exit;~msi',
  9924. 'id' => 'Obf_20200507_2',
  9925. ),
  9926. array(
  9927. 'full' => '~@error_reporting\(0\);\s*@ini_set\(\'error_log\',NULL\);\s*@ini_set\(\'log_errors\',0\);\s*@ini_set\(\'output_buffering\',\s*0\);\s*@ini_set\(\'display_errors\',\s*0\);\s*\$\w+="(An0n_3xPloiTeR)";\$UeXploiT="([^"]+)";\$\1="([^"]+)";exit;~msi',
  9928. 'fast' => '~@error_reporting\(0\);\s*@ini_set\(\'error_log\',NULL\);\s*@ini_set\(\'log_errors\',0\);\s*@ini_set\(\'output_buffering\',\s*0\);\s*@ini_set\(\'display_errors\',\s*0\);\s*\$\w+="(An0n_3xPloiTeR)";\$UeXploiT="([^"]+)";\$\1="([^"]+)";exit;~msi',
  9929. 'id' => 'Obf_20200507_3',
  9930. ),
  9931. array(
  9932. 'full' => '~(?:error_reporting\(0\);\s*ini_set\("max_execution_time",0\);\s*(?:/\*.*?\*/)?\s*)?(\$\w+)=\s*\[(("."=>".",?\s*)+)];\s*(\$\w+)=str_split\("([^"]+)"\);\s*(?:\$\w+="";)?\s*foreach\(\4\s*as\s*(\$\w+)\)\s*{\s*foreach\(\s*\1\s*as\s*(\$\w+)=>(\$\w+)\)\s*{\s*if\(\6==\(string\)\8\)\s*\{\s*\$\w+\.=\7;\s*break;\s*}\s*}\s*}~msi',
  9933. 'fast' => '~(\$\w+)=\s*\[(("."=>".",?\s*)+)];\s*(\$\w+)=str_split\("([^"]+)"\);\s*(?:\$\w+="";)?\s*foreach\(\4\s*as\s*(\$\w+)\)\s*{\s*foreach\(\s*\1\s*as\s*(\$\w+)=>(\$\w+)\)\s*{\s*if\(\6==\(string\)\8\)\s*\{\s*\$\w+\.=\7;\s*break;\s*}\s*}\s*}~msi',
  9934. 'id' => 'Obf_20200507_4',
  9935. ),
  9936. array(
  9937. 'full' => '~assert\("[eval"\.]+\([base64_decode\."]+\(\'([^\']+)\'\)\)"\);~msi',
  9938. 'fast' => '~assert\("[eval"\.]+\([base64_decode\."]+\(\'([^\']+)\'\)\)"\);~msi',
  9939. 'id' => 'Obf_20200507_5',
  9940. ),
  9941. array(
  9942. 'full' => '~parse_str\(\'([^\']+)\',(\$\w+)\);(\2\[\d+\]\()+\'[^\']+\'\),array\(\),array\(\'[^\']+\'\.(\2\[\d+\]\()+\'([^\']+)\'\)+\.\'//\'\)+;~msi',
  9943. 'fast' => '~parse_str\(\'([^\']+)\',(\$\w+)\);(\2\[\d+\]\()+\'[^\']+\'\),array\(\),array\(\'[^\']+\'\.(\2\[\d+\]\()+\'([^\']+)\'\)+\.\'//\'\)+;~msi',
  9944. 'id' => 'Obf_20200513_1',
  9945. ),
  9946. array(
  9947. 'full' => '~function\s*(\w+)\((\$\w+)\)\{\2=substr\(\2,\(int\)\(hex2bin\(\'([0-9a-f]+)\'\)\)\);\2=substr\(\2,\(int\)\(hex2bin\(\'([0-9a-f]+)\'\)\),\(int\)\(hex2bin\(\'([0-9a-f]+)\'\)\)\);return\s*\2;\}(\$\w+)=\'[^\']+\';(\$\w+)=\'base64_decode\';function\s*\w+\((\$\w+)\)\{global\s*\6;global\s*\7;return\s*strrev\(gzinflate\(\7\(\1\(\8\)\)\)\);\}([^\']+)\'\)+~msi',
  9948. 'fast' => '~function\s*(\w+)\((\$\w+)\)\{\2=substr\(\2,\(int\)\(hex2bin\(\'([0-9a-f]+)\'\)\)\);\2=substr\(\2,\(int\)\(hex2bin\(\'([0-9a-f]+)\'\)\),\(int\)\(hex2bin\(\'([0-9a-f]+)\'\)\)\);return\s*\2;\}(\$\w+)=\'[^\']+\';(\$\w+)=\'base64_decode\';function\s*\w+\((\$\w+)\)\{global\s*\6;global\s*\7;return\s*strrev\(gzinflate\(\7\(\1\(\8\)\)\)\);\}([^\']+)\'\)+~msi',
  9949. 'id' => 'Obf_20200522_1',
  9950. ),
  9951. array(
  9952. 'full' => '~(\$\w+)=strrev\("[base64_decode"\.]+\);eval\(\1\(\'([^\']+)\'\)\);~msi',
  9953. 'fast' => '~(\$\w+)=strrev\("[base64_decode"\.]+\);eval\(\1\(\'([^\']+)\'\)\);~msi',
  9954. 'id' => 'Obf_20200526_1',
  9955. ),
  9956. array(
  9957. 'full' => '~error_reporting\(0\);define\(\'\w+\',\s*__FILE__\);define\(\'\w+\',\s*fopen\(__FILE__,\s*\'r\'\)\);fseek\(\w+,\s*__COMPILER_HALT_OFFSET__\);((\$\w+="\\\\x[0-9a-f]+";)+(\$\w+="[^"]+";)+eval\("\?>"\.(\$\w+\()+"([^"]+)"\)+;)+(?:/\*\w+\*/)?__halt_compiler\(\);[\w#|>^%\[\.\]\\\\/=]+~msi',
  9958. 'fast' => '~error_reporting\(0\);define\(\'\w+\',\s*__FILE__\);define\(\'\w+\',\s*fopen\(__FILE__,\s*\'r\'\)\);fseek\(\w+,\s*__COMPILER_HALT_OFFSET__\);((\$\w+="\\\\x[0-9a-f]+";)+(\$\w+="[^"]+";)+eval\("\?>"\.(\$\w+\()+"([^"]+)"\)+;)+(?:/\*\w+\*/)?__halt_compiler\(\);[\w#|>^%\[\.\]\\\\/=]+~msi',
  9959. 'id' => 'Obf_20200527_1',
  9960. ),
  9961. array(
  9962. 'full' => '~(\$\w+)=strrev\("[base64_decode]+"\)\.str_replace\(\'(\w+)\',\'\',\'\w+\'\);\s*eval\(\1\(\$\w+\)\);~msi',
  9963. 'fast' => '~(\$\w+)=strrev\("[base64_decode]+"\)\.str_replace\(\'(\w+)\',\'\',\'\w+\'\);\s*eval\(\1\(\$\w+\)\);~msi',
  9964. 'id' => 'Obf_20200602_1',
  9965. ),
  9966. array(
  9967. 'full' => '~(\$\w+)\s*=\s*"([^"]+)";\s*(\$\w+)\s*=\s*base64_decode\(\1\);\s*eval\(\3\);~msi',
  9968. 'fast' => '~(\$\w+)\s*=\s*"([^"]+)";\s*(\$\w+)\s*=\s*base64_decode\(\1\);\s*eval\(\3\);~msi',
  9969. 'id' => 'Obf_20200720_1',
  9970. ),
  9971. array(
  9972. 'full' => '~[\'".]+(\$\w+\s*=\s*[\'"]\w+[\'"];)+(\$\w+=\$\w+[\'.]+\$\w+;)+(\$\w+=(str_rot13|base64_decode|gzinflate)\(\$\w+\);)+eval\(\$\w+\);~msi',
  9973. 'fast' => '~[\'".]+(\$\w+\s*=\s*[\'"]\w+[\'"];)+(\$\w+=\$\w+[\'.]+\$\w+;)+(\$\w+=(str_rot13|base64_decode|gzinflate)\(\$\w+\);)+eval\(\$\w+\);~msi',
  9974. 'id' => 'flamux',
  9975. ),
  9976. array(
  9977. 'full' => '~function\s*(\w+)\(\)\{\s*return\s*"([^"]+)";\s*\}\s*eval\("([^"]+)"\.\1\(\)\."([^"]+)"\);~msi',
  9978. 'fast' => '~function\s*(\w+)\(\)\{\s*return\s*"([^"]+)";\s*\}\s*eval\("([^"]+)"\.\1\(\)\."([^"]+)"\);~msi',
  9979. 'id' => 'bypass',
  9980. ),
  9981. array(
  9982. 'full' => '~(\$\{"[\\\\x47c2153fGLOBALS]+"\}\["[\w\\\\]+"\]="[\w\\\\]+";(\$\w+="\w+";)?){5,}.+\$\{"[\\\\x47c2153fGLOBALS]+"\}\["[\w\\\\]+"\].+}+~msi',
  9983. 'fast' => '~(\$\{"[\\\\x47c2153fGLOBALS]+"\}\["[\w\\\\]+"\]="[\w\\\\]+";(\$\w+="\w+";)?){5,}.+\$\{"[\\\\x47c2153fGLOBALS]+"\}\["[\w\\\\]+"\].+}+~msi',
  9984. 'id' => 'Obf_20200618_1',
  9985. ),
  9986. array(
  9987. 'full' => '~(?:\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";)+(echo)\s*"(?:[<\w\\\\>\/\s={:}#]+);(?:[\\\\\w\-:]+;)+(?:[\\\\\w}:{\s#]+;)+(?:[\\\\\w}:{#\-\s]+;)+[\\\\\w}<\/]+";\$\w+=["\\\\\w]+;(?:\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";)+\$\w+=["\\\\\w]+;\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";error_reporting\(\d\);\$\w+=["\\\\\w]+;\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\$\w+=["\\\\\w]+;set_time_limit\(\d\);\$\w+=["\\\\\w]+;(?:\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";)+(if\(empty\()[\$_\w\["\\\\\]]+\)\){\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=[\w()]+;(}else{)\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=[\$_\w\["\\\\\]]+;}chdir\(\${\$\w+}\);\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=htmlentities\(\$[_\w\["\\\\\].?]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\);\1[<\\\\\w>\/"]+;\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";(?:\$\w+=["\w\\\\]+;)+(?:\1["\\\\\w:\s.\$\[\]>()_\'<\/%]+;)+\$\w+=["\w\\\\]+;\1["\\\\\w:\s.\$\[\]>()_\'<\/%]+;\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\1["\\\\\w<>=\s\'.]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."\\\\\w=\s\/<>]+;(?:\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";)+\1["<\\\\\w\s\'.\${}>\/]+;\1["<\\\\\w>\s\'.]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."&\w\\\\\'<\/]+;\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\$\w+=["\\\\\w]+;\1["<\\\\\w>\s=\'.\${}&\/]+;(?:\1["<\\\\\w>\/]+;)+\$\w+=["\\\\\w]+;\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=[\$_\w\["\\\\\]]+;\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";switch\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\){case"[\w\\\\\s]+":(?:\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=[\$_\w\["\\\\\]]+;)+\2\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)\){(?:\$\w+=["\\\\\w]+;)+(?:\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";)+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=fopen\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]},"\w"\);\$\w+=["\\\\\w]+;\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=(?:(?|fread|filesize)\(\${\$\w+},?)+\)\);\${\$\w+}=str_replace\("[\w\\\\\s]+",[<\w\\\\>"]+,\${\$\w+}\);\1["\\\\\w<>=\s\'.]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."\\\\\w=\s\/<>&\${}\']+;\1["\\\\\w\s.:]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\."[\w\\\\\s]+";\1["\\\\\w\s\'=]+\.\${\$\w+}\.["<\w\\\\>]+;\1["<\\\\\w>\s=\'\/;]+\3\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";(?:\$\w+=["\w\\\\]+;)+\${\$\w+}=fopen\(\${\$\w+},"\w"\);if\(fwrite\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]},\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)\){\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\1\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."\s\\\\\w]+;\3\1["\\\\\w\s.]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."<\\\\\w]+;}}fclose\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\);(break;case")[\w\\\\\s]+":\${\$\w+}=[\$_\w\["\]\\\\]+;if\(unlink\([\${}\w]+\)\){\1\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\.["\s\w\\\\.>]+;\3\$\w+=["\w\\\\]+;\1["\\\\\w\s.${}<]+;}\4[\w\\\\\s]+":(?:\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=[\$_\w\["\\\\\]]+;)+\2\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)\){\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\1["<\w\\\\\s=.]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}.["\\\\\w&.]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."\\\\\w\s=]+;(?:\1["\w\\\\:\s\'><=\/]+;)+\3(?:\$\w+=["\w\\\\]+;)+if\(copy\(\${\$\w+},\${\$\w+}\)\){\1"[\w\\\\\s]+";\3\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\1"[\w\\\\\s]+"\.\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."<\w>\\\\=&]+;}}\4[\w\\\\\s]+":(?:\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=[\$_\w\["\\\\\]]+;)+\2\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)\){\1"[\w\\\\\s]+"\.\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."<\w>\\\\=&]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."\'\\\\\w\s=>]+;\1["\\\\\w:\s.\$\[\]>()_\'<\/%]+;\1["\\\\\w\s\'=>\/;]+\3if\(rename\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]},\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)\){\1["\\\\\w:\s.\$\[\]>()_\'<\/%]+;\3\$\w+=["\w\\\\]+;\1"[\w\\\\\s]+"\.\${\$\w+}[."\\\\\w>;]+}}\4[\w\\\\\s]+":\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=[\$_\w\["\\\\\]]+;\${\$\w+}=[\$_\w\["\]\\\\]+;\2\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)\){\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\1["\\\\\w\s\'.]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\.["\\\\\w=.]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\.["\\\\\w\s>]+;(?:\1["\\\\\w:\s.\$\[\]>()_\'<\/%]+;)+\1["\\\\\w\s=\'<\/;]+\3if\(rename\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]},\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)\){\1["\\\\\w:\s.\$\[\]>()_\'<\/%]+;\3\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\1"[\w\\\\\s]+"\.\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."<\w>\\\\=&]+;}}\4[\w\\\\\s]+":\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=[\$_\w\["\\\\\]]+;if\(rmdir\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)\){\1["\\\\\w:\s.\$\[\]>()_\'<\/%]+;\3\$\w+=["\\\\\w]+;\1"[\w\\\\\s]+"\.\${\$\w+}[."\\\\\w]+;}\4[\w\\\\\s]+":\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=[\$_\w\["\\\\\]]+;\2\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)\){(?:\1["\\\\\w\s=.\${}\[\]&\':\/<>]+;)+\3\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";system\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\);}\4[\w\\\\\s]+":\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=[\$_\w\["\\\\\]]+;\2\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)\){\$\w+=["\w\\\\]+;(?:\1["\\\\\w\s=.\${}\[\]&\':\/<>]+;)+\3\$\w+=["\w\\\\]+;if\(\${\$\w+}=fopen\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]},"\w"\)\){\1["\\\\\w\s=.\${}\[\]&\':\/<>]+;\3\$\w+=["\w\\\\]+;\1["\\\\\w\s=.\${}\[\]&\':\/<>]+;}\$\w+=["\w\\\\]+;fclose\(\${\$\w+}\);}\4[\w\\\\\s]+":\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=[\$_\w\["\\\\\]]+;\${\$\w+}=basename\([\$_\w\["\\\\\]]+\);\2\${\$\w+}\)\){\1["<\\\\\w\s=\'.]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\.["&\w\\\\\s=\/\-\'>]+;(?:\1["\\\\\w\s=.\${}\[\]&\':\/<>]+;)+\3\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";if\(move_uploaded_file\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]},\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)\){\1["\\\\\w:\s.\$\[\]>()_\'<\/%]+;unlink\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\);\3\1"[\w\\\\\s]+"\.\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."<\w>\\\\=&]+;}}\4[\w\\\\\s]+":\${\$\w+}=[\$_\w\["\]\\\\]+;\2\${\$\w+}\)\){(?:\1["\\\\\w\s=.\${}\[\]&\':\/<>]+;)+\1["\\\\\w:\s.\$\[\]>()_\'<\/%]+;\1["\\\\\w\s=.\${}\[\]&\':\/<>]+;\3\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\$\w+=["\\\\\w]+;\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=explode\(":",\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\);if\(\(!is_numeric\(\${\$\w+}\[\d\]\)\)or\(!is_numeric\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\[\d\]\)\)\){\1["\\\\\w:\s.\$\[\]>()_\'<\/%]+;\3(?:\$\w+=["\w\\\\]+;)+\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\$\w+=["\w\\\\]+;(?:\${\$\w+}=\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\[\d\];)+\1["\\\\\w:\s.\$\[\]>()_\'<\/%]+;while\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}<=\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\){\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\$\w+=["\\\\\w]+;\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=\d;\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=fsockopen\(\$\w+,\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)or\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=\d;if\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}==\d\){\$\w+=["\\\\\w]+;echo\${\$\w+}\.["\\\\\w>]+;}\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\+\+;fclose\(\${\$\w+}\);}}}break;}clearstatcache\(\);(?:\1["\\\\\w:\s.\$\[\]>()_\'<\/%]+;){2}\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=scandir\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\);foreach\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\s\w+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\){if\(is_file\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)\){(?:\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";)+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=round\(filesize\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)\/\d+,\d\);\$\w+=["\w\\\\]+;\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\1["<\\\\\w>.\s=]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."<\/\w\\\\>;]+\$\w+=["\\\\\w]+;\1["<\\\\\w>.\s=]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."\\\\\w\s<\/>]+;\1["<\\\\\w>.\s=]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."\\\\\w=&]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."\\\\\w\/<>;]+\$\w+=["\\\\\w]+;\1"[\w\\\\\s]+"\.\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."<\w>\\\\=&]+\${\$\w+}[.">\w\\\\\/<]+;(?:\1["\\\\\w\s=.\${}\[\]&\':\/<>]+;)+\3(?:\$\w+=["\\\\\w]+;){2}\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=scandir\(\${\$\w+}\);(?:\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";){2}\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=count\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)\-\d;\1"[\w\\\\\s]+"\.\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."<\w>\\\\=&]+\/\w+>";\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\1["<\\\\\w>.\s=]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."\\\\\w\s=<\/]+;(?:\1["\\\\\w\s=.\${}\[\]&\':\/<>]+;){3}}}\1["\\\\\w:\s.\$\[\]>()_\'<\/%]+;~msi',
  9988. 'fast' => '~(?:\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";)+(echo)\s*"(?:[<\w\\\\>\/\s={:}#]+);(?:[\\\\\w\-:]+;)+(?:[\\\\\w}:{\s#]+;)+(?:[\\\\\w}:{#\-\s]+;)+[\\\\\w}<\/]+";\$\w+=["\\\\\w]+;(?:\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";)+\$\w+=["\\\\\w]+;\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";error_reporting\(\d\);\$\w+=["\\\\\w]+;\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\$\w+=["\\\\\w]+;set_time_limit\(\d\);\$\w+=["\\\\\w]+;(?:\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";)+(if\(empty\()[\$_\w\["\\\\\]]+\)\){\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=[\w()]+;(}else{)\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=[\$_\w\["\\\\\]]+;}chdir\(\${\$\w+}\);\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=htmlentities\(\$[_\w\["\\\\\].?]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\);\1[<\\\\\w>\/"]+;\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";(?:\$\w+=["\w\\\\]+;)+(?:\1["\\\\\w:\s.\$\[\]>()_\'<\/%]+;)+\$\w+=["\w\\\\]+;\1["\\\\\w:\s.\$\[\]>()_\'<\/%]+;\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\1["\\\\\w<>=\s\'.]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."\\\\\w=\s\/<>]+;(?:\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";)+\1["<\\\\\w\s\'.\${}>\/]+;\1["<\\\\\w>\s\'.]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."&\w\\\\\'<\/]+;\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\$\w+=["\\\\\w]+;\1["<\\\\\w>\s=\'.\${}&\/]+;(?:\1["<\\\\\w>\/]+;)+\$\w+=["\\\\\w]+;\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=[\$_\w\["\\\\\]]+;\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";switch\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\){case"[\w\\\\\s]+":(?:\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=[\$_\w\["\\\\\]]+;)+\2\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)\){(?:\$\w+=["\\\\\w]+;)+(?:\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";)+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=fopen\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]},"\w"\);\$\w+=["\\\\\w]+;\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=(?:(?|fread|filesize)\(\${\$\w+},?)+\)\);\${\$\w+}=str_replace\("[\w\\\\\s]+",[<\w\\\\>"]+,\${\$\w+}\);\1["\\\\\w<>=\s\'.]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."\\\\\w=\s\/<>&\${}\']+;\1["\\\\\w\s.:]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\."[\w\\\\\s]+";\1["\\\\\w\s\'=]+\.\${\$\w+}\.["<\w\\\\>]+;\1["<\\\\\w>\s=\'\/;]+\3\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";(?:\$\w+=["\w\\\\]+;)+\${\$\w+}=fopen\(\${\$\w+},"\w"\);if\(fwrite\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]},\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)\){\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\1\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."\s\\\\\w]+;\3\1["\\\\\w\s.]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."<\\\\\w]+;}}fclose\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\);(break;case")[\w\\\\\s]+":\${\$\w+}=[\$_\w\["\]\\\\]+;if\(unlink\([\${}\w]+\)\){\1\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\.["\s\w\\\\.>]+;\3\$\w+=["\w\\\\]+;\1["\\\\\w\s.${}<]+;}\4[\w\\\\\s]+":(?:\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=[\$_\w\["\\\\\]]+;)+\2\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)\){\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\1["<\w\\\\\s=.]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}.["\\\\\w&.]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."\\\\\w\s=]+;(?:\1["\w\\\\:\s\'><=\/]+;)+\3(?:\$\w+=["\w\\\\]+;)+if\(copy\(\${\$\w+},\${\$\w+}\)\){\1"[\w\\\\\s]+";\3\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\1"[\w\\\\\s]+"\.\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."<\w>\\\\=&]+;}}\4[\w\\\\\s]+":(?:\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=[\$_\w\["\\\\\]]+;)+\2\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)\){\1"[\w\\\\\s]+"\.\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."<\w>\\\\=&]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."\'\\\\\w\s=>]+;\1["\\\\\w:\s.\$\[\]>()_\'<\/%]+;\1["\\\\\w\s\'=>\/;]+\3if\(rename\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]},\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)\){\1["\\\\\w:\s.\$\[\]>()_\'<\/%]+;\3\$\w+=["\w\\\\]+;\1"[\w\\\\\s]+"\.\${\$\w+}[."\\\\\w>;]+}}\4[\w\\\\\s]+":\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=[\$_\w\["\\\\\]]+;\${\$\w+}=[\$_\w\["\]\\\\]+;\2\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)\){\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\1["\\\\\w\s\'.]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\.["\\\\\w=.]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\.["\\\\\w\s>]+;(?:\1["\\\\\w:\s.\$\[\]>()_\'<\/%]+;)+\1["\\\\\w\s=\'<\/;]+\3if\(rename\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]},\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)\){\1["\\\\\w:\s.\$\[\]>()_\'<\/%]+;\3\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\1"[\w\\\\\s]+"\.\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."<\w>\\\\=&]+;}}\4[\w\\\\\s]+":\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=[\$_\w\["\\\\\]]+;if\(rmdir\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)\){\1["\\\\\w:\s.\$\[\]>()_\'<\/%]+;\3\$\w+=["\\\\\w]+;\1"[\w\\\\\s]+"\.\${\$\w+}[."\\\\\w]+;}\4[\w\\\\\s]+":\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=[\$_\w\["\\\\\]]+;\2\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)\){(?:\1["\\\\\w\s=.\${}\[\]&\':\/<>]+;)+\3\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";system\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\);}\4[\w\\\\\s]+":\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=[\$_\w\["\\\\\]]+;\2\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)\){\$\w+=["\w\\\\]+;(?:\1["\\\\\w\s=.\${}\[\]&\':\/<>]+;)+\3\$\w+=["\w\\\\]+;if\(\${\$\w+}=fopen\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]},"\w"\)\){\1["\\\\\w\s=.\${}\[\]&\':\/<>]+;\3\$\w+=["\w\\\\]+;\1["\\\\\w\s=.\${}\[\]&\':\/<>]+;}\$\w+=["\w\\\\]+;fclose\(\${\$\w+}\);}\4[\w\\\\\s]+":\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=[\$_\w\["\\\\\]]+;\${\$\w+}=basename\([\$_\w\["\\\\\]]+\);\2\${\$\w+}\)\){\1["<\\\\\w\s=\'.]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\.["&\w\\\\\s=\/\-\'>]+;(?:\1["\\\\\w\s=.\${}\[\]&\':\/<>]+;)+\3\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";if\(move_uploaded_file\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]},\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)\){\1["\\\\\w:\s.\$\[\]>()_\'<\/%]+;unlink\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\);\3\1"[\w\\\\\s]+"\.\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."<\w>\\\\=&]+;}}\4[\w\\\\\s]+":\${\$\w+}=[\$_\w\["\]\\\\]+;\2\${\$\w+}\)\){(?:\1["\\\\\w\s=.\${}\[\]&\':\/<>]+;)+\1["\\\\\w:\s.\$\[\]>()_\'<\/%]+;\1["\\\\\w\s=.\${}\[\]&\':\/<>]+;\3\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\$\w+=["\\\\\w]+;\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=explode\(":",\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\);if\(\(!is_numeric\(\${\$\w+}\[\d\]\)\)or\(!is_numeric\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\[\d\]\)\)\){\1["\\\\\w:\s.\$\[\]>()_\'<\/%]+;\3(?:\$\w+=["\w\\\\]+;)+\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\$\w+=["\w\\\\]+;(?:\${\$\w+}=\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\[\d\];)+\1["\\\\\w:\s.\$\[\]>()_\'<\/%]+;while\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}<=\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\){\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\$\w+=["\\\\\w]+;\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=\d;\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=fsockopen\(\$\w+,\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)or\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=\d;if\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}==\d\){\$\w+=["\\\\\w]+;echo\${\$\w+}\.["\\\\\w>]+;}\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\+\+;fclose\(\${\$\w+}\);}}}break;}clearstatcache\(\);(?:\1["\\\\\w:\s.\$\[\]>()_\'<\/%]+;){2}\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=scandir\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\);foreach\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\s\w+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\){if\(is_file\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)\){(?:\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";)+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=round\(filesize\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)\/\d+,\d\);\$\w+=["\w\\\\]+;\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\1["<\\\\\w>.\s=]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."<\/\w\\\\>;]+\$\w+=["\\\\\w]+;\1["<\\\\\w>.\s=]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."\\\\\w\s<\/>]+;\1["<\\\\\w>.\s=]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."\\\\\w=&]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."\\\\\w\/<>;]+\$\w+=["\\\\\w]+;\1"[\w\\\\\s]+"\.\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."<\w>\\\\=&]+\${\$\w+}[.">\w\\\\\/<]+;(?:\1["\\\\\w\s=.\${}\[\]&\':\/<>]+;)+\3(?:\$\w+=["\\\\\w]+;){2}\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=scandir\(\${\$\w+}\);(?:\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";){2}\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}=count\(\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}\)\-\d;\1"[\w\\\\\s]+"\.\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."<\w>\\\\=&]+\/\w+>";\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]="[\w\\\\\s]+";\1["<\\\\\w>.\s=]+\${\${"[\w\\\\\s]+"}\["[\w\\\\\s]+"\]}[."\\\\\w\s=<\/]+;(?:\1["\\\\\w\s=.\${}\[\]&\':\/<>]+;){3}}}\1["\\\\\w:\s.\$\[\]>()_\'<\/%]+;~msi',
  9989. 'id' => 'darkShell',
  9990. ),
  9991. array(
  9992. 'full' => '~(\$\w+)=\'([\w\(;\$\)=\s\[\/\]."*]+)\';(\$\w+)=(?:\1\[[-+\(\d*\/\)]+\]\.?)+;(\$\w+)=(?:\1\[[-+\(\d*\/\)]+\]\.?)+;(\$\w+)=(?:\1\[[-+\(\d*\/\)]+\]\.?)+;(\$\w+)=\s+"([\'\w\/+]+)";(\$\w+)\.=\4;\8\.=\6;\8\.=\5;@(\$\w+)=\3\(\(\'+\),\s+\(\8\)\);@\9\(\);~msi',
  9993. 'fast' => '~(\$\w+)=\'([\w\(;\$\)=\s\[\/\]."*]+)\';(\$\w+)=(?:\1\[[-+\(\d*\/\)]+\]\.?)+;(\$\w+)=(?:\1\[[-+\(\d*\/\)]+\]\.?)+;(\$\w+)=(?:\1\[[-+\(\d*\/\)]+\]\.?)+;(\$\w+)=\s+"([\'\w\/+]+)";(\$\w+)\.=\4;\8\.=\6;\8\.=\5;@(\$\w+)=\3\(\(\'+\),\s+\(\8\)\);@\9\(\);~msi',
  9994. 'id' => 'wso'
  9995. ),
  9996. array(
  9997. 'full' => '~error_reporting\(\d+\);\s*function\s*class_uc_key\((\$\w+)\){\s*(\$\w+)\s*=\s*strlen\s*\(trim\(\1\)\);\s*(\$\w+)\s*=\s*\'\';\s*for\((\$\w+)\s*=\s*0;\4\s*<\s*\2;\4\+=2\)\s*{\s*\3\s*\.=\s*pack\s*\("C",hexdec\s*\(substr\s\(\1,\4,2\)\)\);\s*}\s*return\s*\3;\s*}\s*header\("\w+-\w+:\s\w+\/\w+;\s*charset=(\w+)"\);\s*(\$\w+)=class_uc_key\("(6576616C28677A756E636F6D7072657373286261736536345F6465636F64652827)"\)\.\'([\w\/\+=\\\\]+\'\)\)\);)\';\s*(\$\w+)=create_function\(\'\',\6\);\9\(\);~msi',
  9998. 'fast' => '~\w+\(\d+\);\s*function\s*class_uc_key\((\$\w+)\){\s*(\$\w+)\s*=\s*strlen\s*\(trim\(\1\)\);\s*(\$\w+)\s*=\s*\'\';\s*for\((\$\w+)\s*=\s*0;\4\s*<\s*\2;\4\+=2\)\s*{\s*\3\s*\.=\s*pack\s*\("C",hexdec\s*\(substr\s\(\1,\4,2\)\)\);\s*}\s*return\s*\3;\s*}\s*header\("\w+-\w+:\s\w+\/\w+;\s*charset=(\w+)"\);\s*(\$\w+)=class_uc_key\("(6576616C28677A756E636F6D7072657373286261736536345F6465636F64652827)"\)\.\'([\w\/\+=\\\\]+\'\)\)\);)\';\s*(\$\w+)=\w+\(\'\',\6\);\9\(\);~msi',
  9999. 'id' => 'anonymousFox'
  10000. ),
  10001. array(
  10002. 'full' => '~<\?php\s\$\w+=urldecode\(\'[%\w]+\'\);(?:\$\w+\.?=(?:\$\w+\{\d+\}\.?)+;)+\?><\?php\s(eval\(\$GLOBALS\[\'\w+\'\]\(\'(\w+)\'\)\);)\s\?><\?php\s\/\*\sBizden\soncekiler\sdemo\s\*\/(?:\$\w+\.?=(?:\$\w+\{?\d+\}?\.?)+;)+\$\w+=__FILE__;\$\w+=\w+;(eval\(\$\w+\(\'(\w+=)\'\)\);)return;\?[>\w|@[`\~=\+\/]+~msi',
  10003. 'fast' => '~<\?php\s\$\w+=urldecode\(\'[%\w]+\'\);(?:\$\w+\.?=(?:\$\w+\{\d+\}\.?)+;)+\?><\?php\s(eval\(\$GLOBALS\[\'\w+\'\]\(\'(\w+)\'\)\);)\s\?><\?php\s(?:\/\*\sBizden\soncekiler\sdemo\s\*\/)?(?:\$\w+\.?=(?:\$\w+\{?\d+\}?\.?)+;)+\$\w+=__FILE__;\$\w+=\w+;(eval\(\$\w+\(\'(\w+=)\'\)\);)return;\?[>\w|@[`\~=\+\/]+~msi',
  10004. 'id' => 'bizden'
  10005. ),
  10006. array(
  10007. 'full' => '~(\$my_sucuri_encoding)\s{0,10}=\s{0,10}[\'"]([^\'"]+)[\'"];\s{0,10}(\$tempb64)\s{0,10}=\s{0,10}base64_decode\(\s{0,10}\1\);\s{0,10}eval\(\s{0,10}\3\s{0,10}\);~msi',
  10008. 'fast' => '~(\$my_sucuri_encoding)\s{0,10}=\s{0,10}[\'"]([^\'"]+)[\'"];\s{0,10}(\$tempb64)\s{0,10}=\s{0,10}base64_decode\(\s{0,10}\1\);\s{0,10}eval\(\s{0,10}\3\s{0,10}\);~msi',
  10009. 'id' => 'wsoEval'
  10010. ),
  10011. array(
  10012. 'full' => '~\$fun\s=\s\'ass\';\$fun\s\.=\s\'ert\';@\$fun\(str_rot13\(\'(.*;)\'\)\);~msi',
  10013. 'fast' => '~\$fun\s=\s\'ass\';\$fun\s\.=\s\'ert\';@\$fun\(str_rot13\(\'(.*;)\'\)\);~msi',
  10014. 'id' => 'assertStr'
  10015. ),
  10016. array(
  10017. 'full' => '~(function\s\w+\(\$\w+,\$\w+,\$\w+\){return\sstr_replace\(\$\w+,\$\w+,\$\w+\);}\s?){3}(\$\w+)\s=\s\'(\w+)\';\s\2\s=\s(\w+)\(\'(\w+)\',\'\',\2\);\s(\$\w+)\s=\s\'(\w+)\';\s\6\s=\s\4\(\'(\w+)\',\'\',\6\);\s(\$\w+)\s=\s\'(\w+)\';\s\9\s=\s\4\(\'(\w+)\',\'\',\9\);\s(\$\w+)\s=\s\'(\$\w+)\';\s(\$\w+)\s=\s\6\(\12,\9\.\'\(\'\.\2\.\'\(\'\.\12\.\'\)\);\'\);\s\14\(\'(\w+)\'\);~msi',
  10018. 'fast' => '~(function\s\w+\(\$\w+,\$\w+,\$\w+\){return\sstr_replace\(\$\w+,\$\w+,\$\w+\);}\s?){3}(\$\w+)\s=\s\'(\w+)\';\s\2\s=\s(\w+)\(\'(\w+)\',\'\',\2\);\s(\$\w+)\s=\s\'(\w+)\';\s\6\s=\s\4\(\'(\w+)\',\'\',\6\);\s(\$\w+)\s=\s\'(\w+)\';\s\9\s=\s\4\(\'(\w+)\',\'\',\9\);\s(\$\w+)\s=\s\'(\$\w+)\';\s(\$\w+)\s=\s\6\(\12,\9\.\'\(\'\.\2\.\'\(\'\.\12\.\'\)\);\'\);\s\14\(\'(\w+)\'\);~msi',
  10019. 'id' => 'funcVar'
  10020. ),
  10021. array(
  10022. 'full' => '~(\$\w+)=[\'"](\w+)[\'"];(\$\w+=(?:\s?\1\[\d+\](?:\s?\.?))+;)+((?:\$\w+\(\d+\);)?(\$\w+=(\$\w+)\(["\']{2},(\$\w+\(\$\w+\(["\'][=\w\+\/]+[\'"]\)\))\);\$\w+\(\);))~msi',
  10023. 'fast' => '~(\$\w+)=[\'"](\w+)[\'"];(\$\w+=(?:\s?\1\[\d+\](?:\s?\.?))+;)+((?:\$\w+\(\d+\);)?(\$\w+=(\$\w+)\(["\']{2},(\$\w+\(\$\w+\(["\'][=\w\+\/]+[\'"]\)\))\);\$\w+\(\);))~msi',
  10024. 'id' => 'dictionaryVars'
  10025. ),
  10026. array(
  10027. 'full' => '~(?:(?<concatVar>\$\w+)\s?=\s?""\s?;((?:\s?(?P=concatVar)\s?\.=\s?"[\w]+"\s?;\s?)+))?(\$\w+)\s?=\s?(?:(?P=concatVar)|"(?<strVal>[\w]+)")\s?;\s?if\s?\(\s?!function_exists\s?\(\s?"(\w+)"\)\){function\s\5\(\s?(\$\w+)\){\s?(?:\$\w+=\s?""\s?;)?\s?(\$\w+)\s?=\s?strlen\s?\(\s?\6\s?\)\s?\/\s?2\s?;\s?for\s?\(\s?(\$\w+)\s?=0\s?;\s?\8\s?<\s?\7\s?;\s?\8\+\+\s?\)\s?{\s?\$\w+\s?\.=\s?chr\s?\(\s?base_convert\s?\(\s?substr\s?\(\s?\6\s?,\s?\8\s?\*\s?2\s?,\s?2\s?\)\s?,\s?16\s?,\s?10\s?\)\s?\)\s?;\s?}\s?return\s?\$\w+;\s?}\s?}\s?\$\w+\s?=\s?create_function\s?\(\s?null\s?,\s?\5\(\s?\3\)\)\s?;\s?\3\(\)\s?;~msi',
  10028. 'fast' => '~(?:(?<concatVar>\$\w+)\s?=\s?""\s?;((?:\s?(?P=concatVar)\s?\.=\s?"[\w]+"\s?;\s?)+))?(\$\w+)\s?=\s?(?:(?P=concatVar)|"(?<strVal>[\w]+)")\s?;\s?if\s?\(\s?!function_exists\s?\(\s?"(\w+)"\)\){function\s\5\(\s?(\$\w+)\){\s?(?:\$\w+=\s?""\s?;)?\s?(\$\w+)\s?=\s?strlen\s?\(\s?\6\s?\)\s?\/\s?2\s?;\s?for\s?\(\s?(\$\w+)\s?=0\s?;\s?\8\s?<\s?\7\s?;\s?\8\+\+\s?\)\s?{\s?\$\w+\s?\.=\s?chr\s?\(\s?base_convert\s?\(\s?substr\s?\(\s?\6\s?,\s?\8\s?\*\s?2\s?,\s?2\s?\)\s?,\s?16\s?,\s?10\s?\)\s?\)\s?;\s?}\s?return\s?\$\w+;\s?}\s?}\s?\$\w+\s?=\s?create_function\s?\(\s?null\s?,\s?\5\(\s?\3\)\)\s?;\s?\3\(\)\s?;~msi',
  10029. 'id' => 'concatVarFunc'
  10030. ),
  10031. array(
  10032. 'full' => '~function\s?(\w+)\(\){(((\$\w+)\.?="\w+";)+)return\seval\(\4\(\w+\(\)\)\);}function\s(\w+)\((\$\w+)\){((?:(\$\w+)\.?="\w+";)+)return\s\8\(\6\);}function\s?(\w+)\(\){((\$\w+)\.?="([\w\/+=]+)";)return\s(\w+)\(\11\);}function\s\13\((\$\w+)\){(\$\w+)=(\w+)\((\w+)\((\w+)\(\14\)\)\);return\s\15;}function\s\17\(\14\){(((\$\w+)\.?="\w+";)+)return\s\21\(\14\);}\1\(\);function\s\16\(\14\){(((\$\w+)\.?="\w+";)+)return\s\24\(\14\);}~msi',
  10033. 'fast' => '~function\s?(\w+)\(\){(((\$\w+)\.?="\w+";)+)return\seval\(\4\(\w+\(\)\)\);}function\s(\w+)\((\$\w+)\){((?:(\$\w+)\.?="\w+";)+)return\s\8\(\6\);}function\s?(\w+)\(\){((\$\w+)\.?="([\w\/+=]+)";)return\s(\w+)\(\11\);}function\s\13\((\$\w+)\){(\$\w+)=(\w+)\((\w+)\((\w+)\(\14\)\)\);return\s\15;}function\s\17\(\14\){(((\$\w+)\.?="\w+";)+)return\s\21\(\14\);}\1\(\);function\s\16\(\14\){(((\$\w+)\.?="\w+";)+)return\s\24\(\14\);}~msi',
  10034. 'id' => 'concatVarFuncFunc'
  10035. ),
  10036. array(
  10037. 'full' => '~(?:(?:\s?\$\w+\s?=\s?strrev\("\w+"\);\s?)|(?:\s?\$\w+\s?=\s?strrev\("\w+"\);\s?)|(?:\s?eval\((?:\$\w+)?\([\'"][\w=]+[\'"]\)\);\s?)|(?:\s?eval\(\$\w+\(\$\w+\(\'[\w\/+=]+\'\)\)\);\s?)){3,4}~msi',
  10038. 'fast' => '~(?:(?:\s?\$\w+\s?=\s?strrev\("\w+"\);\s?)|(?:\s?\$\w+\s?=\s?strrev\("\w+"\);\s?)|(?:\s?eval\((?:\$\w+)?\([\'"][\w=]+[\'"]\)\);\s?)|(?:\s?eval\(\$\w+\(\$\w+\(\'[\w\/+=]+\'\)\)\);\s?)){3,4}~msi',
  10039. 'id' => 'evalVarDoubled'
  10040. ),
  10041. array(
  10042. 'full' => '~(\$\w+)\s?=\s?(\w+)\("([\w+\/=]+)"\);\s?echo\s?\1;~msi',
  10043. 'fast' => '~(\$\w+)\s?=\s?(\w+)\("([\w+\/=]+)"\);\s?echo\s?\1;~msi',
  10044. 'id' => 'varFuncsEcho'
  10045. ),
  10046. array(
  10047. 'full' => '~(\$\w+)="";\s?(\$\w+)=(\d+);\s?(\$\w+)=((?:\'[\w%]+\'\.?)+);\s(\$\w+)=((?:\4\[\d+\]\.?)+);\s?function\s\w+\(\){(?:.*?);\s}\s?\1=\w+\(\1,"\w+"\);\s?\$\w+=array\((?:\'\w+\',?)+\);\s\1=\w+\(\1,\sjoin\(\'\',\s\$\w+\)\s?\);\s?\$\w+\+=\d+;\s?\1=\w+\(\1,\w+\(\)\);\sfunction\s\w+\(\){(?:.*?);\s}\s\$\w+=\w+\(\);\s\$\w+=\w+\(\);\s\1\s?\.=\s?\$\w+\(\s?\$\w+\(\$\w+{\d+}\.\$\w+{\d+},\s?\d+\),\s?(?:\d+\,?\s?)+\);(?:.*?)if\(\$\w+==\d+\)(?:.*?)while\s\(\d+>\d\);(?:.*?)\s?if\s?\(216<230\)(?:.*?)while\s\(4>10\);\s\$\w+\s=\s\$\w+\("",\s\$\w+\(\$\w+\)\s\);\s\$\w+\(\);\s(?:(?:\s?function\s\w+\(\)(?:.*?);\s})|(?:\s?class\s\w+\s?{(?:.*?);(?:\s}){1,2}))+~msi',
  10048. 'fast' => '~(\$\w+)="";\s?(\$\w+)=(\d+);\s?(\$\w+)=((?:\'[\w%]+\'\.?)+);\s(\$\w+)=((?:\4\[\d+\]\.?)+);\s?function\s\w+\(\){(?:.*?);\s}\s?\1=\w+\(\1,"\w+"\);\s?\$\w+=array\((?:\'\w+\',?)+\);\s\1=\w+\(\1,\sjoin\(\'\',\s\$\w+\)\s?\);\s?\$\w+\+=\d+;\s?\1=\w+\(\1,\w+\(\)\);\sfunction\s\w+\(\){(?:.*?);\s}\s\$\w+=\w+\(\);\s\$\w+=\w+\(\);\s\1\s?\.=\s?\$\w+\(\s?\$\w+\(\$\w+{\d+}\.\$\w+{\d+},\s?\d+\),\s?(?:\d+\,?\s?)+\);(?:.*?)if\(\$\w+==\d+\)(?:.*?)while\s\(\d+>\d\);(?:.*?)\s?if\s?\(216<230\)(?:.*?)while\s\(4>10\);\s\$\w+\s=\s\$\w+\("",\s\$\w+\(\$\w+\)\s\);\s\$\w+\(\);\s(?:(?:\s?function\s\w+\(\)(?:.*?);\s})|(?:\s?class\s\w+\s?{(?:.*?);(?:\s}){1,2}))+~msi',
  10049. 'id' => 'varFuncsMany'
  10050. ),
  10051. array(
  10052. 'full' => '~((\$(?:GLOBALS|{"[\\\\\w]+"})\[[\'"]\w+["\']\])\s?=\s?[\'"]+([\\\\\w]+)["\'];)\s?(?:(\$GLOBALS\[?(\s?(?:\2|\$GLOBALS\[\'\w+\'\])\[\d+\]\.?)+\])\s?=\s?\g<5>+;\s?)+(?:\g<4>\s?=\s[\$_\w]+;\s)+(?:@\g<4>\(\g<5>+\s?,\s?\w+\s?\);\s?)+@\g<4>\(\d+\);\s{0,50}(?:if\s?\(!\g<4>\s?\(\g<5>+\)\)\s{\s{0,50}\g<4>\(\g<5>+,\s\g<5>*\d*\);\s{0,50}}?\s{0,50})*(?:\$\w+\s?=\s?\w+;\s?)*\g<4>\s?=\s\g<5>+;\s?global\s?\$\w+;\s?function\s\w+\(\$\w+,\s\$\w+\)\s{\s?\$\w+\s?=\s?["\']{2};\s?for\s?\(\$\w+\s?=\d+;\s?\$\w+\s?<\s?\g<4>\(\$\w+\)\s?;\s?\)\s?{\s?for\s?\(\s?\$\w+=\d+;\s?\$\w+\s?<\s?\g<4>\(\$\w+\)\s?&&\s?\$\w+\s?<\g<4>\(\$\w+\);\s?\$\w+\+{2},\s?\$\w+\+{2}\)\s?{\s?\$\w+\s?\.=\s?\g<4>\(\g<4>\(\$\w+\[\$\w+\]\)\s?\^\s?\g<4>\(\$\w+\[\$\w+\]\)\);\s?}\s?}\s?return\s\$\w+;\s?}\s?function\s?\w+\(\$\w+,\s?\$\w+\)\s?{\s?global\s?\$\w+;\s?return\s\g<4>\(\g<4>\(\$\w+,\s?\$\w+\),\s?\$\w+\)\s?;\s?}\s?foreach\s?\(\g<4>\sas\s\$\w+=>\$\w+\)\s?{\s?\$\w+\s?=\s?\$\w+;\s?\$\w+\s?=\s?\$\w+;\s?}\s?if\s?\(!\$\w+\)\s?{\s?foreach\s?\(\g<4>\sas\s\$\w+\s?=>\s?\$\w+\)\s?{\s?\$\w+\s?=\s?\$\w+;\s?\$\w+\s?=\s?\$\w+;\s?}\s?}\s?\$\w+\s?=\s?@\g<4>\(\g<4>\(@?\g<4>\(\$\w+\),\s?\$\w+\)\);\s?if\s?\(isset\(\$\w+\[\g<5>+\]\)\s?&&\s?\$\w+==\$\w+\[\g<5>+\]\)\s?{\s?if\s?\(\$\w+\[\g<5>\]\s?==\s?\g<5>\)\s?{\s?\$\w+\s?=\s?array\(\s?\g<5>+\s?=>\s?@\g<4>\(\),\s?\g<5>+\s?=>\s?\g<5>+,\s?\);\s?echo\s?@\g<4>\(\$\w+\);\s?}\s?elseif\s?\(\$\w+\[\g<5>\]\s?==\s?\g<5>\)\s?{\s?eval\(\$\w+\[\g<5>\]\);\s?}\s?(?:exit\(\);)?\s?}\s?}?~msi',
  10053. 'fast' => '~((\$(?:GLOBALS|{"[\\\\\w]+"})\[[\'"]\w+["\']\])\s?=\s?[\'"]+([\\\\\w]+)["\'];)\s?(?:(\$GLOBALS\[?(\s?(?:\2|\$GLOBALS\[\'\w+\'\])\[\d+\]\.?)+\])\s?=\s?\g<5>+;\s?)+(?:\g<4>\s?=\s[\$_\w]+;\s)+(?:@\g<4>\(\g<5>+\s?,\s?\w+\s?\);\s?)+@\g<4>\(\d+\);\s{0,50}(?:if\s?\(!\g<4>\s?\(\g<5>+\)\)\s{\s{0,50}\g<4>\(\g<5>+,\s\g<5>*\d*\);\s{0,50}}?\s{0,50})*(?:\$\w+\s?=\s?\w+;\s?)*\g<4>\s?=\s\g<5>+;\s?global\s?\$\w+;\s?function\s\w+\(\$\w+,\s\$\w+\)\s{\s?\$\w+\s?=\s?["\']{2};\s?for\s?\(\$\w+\s?=\d+;\s?\$\w+\s?<\s?\g<4>\(\$\w+\)\s?;\s?\)\s?{\s?for\s?\(\s?\$\w+=\d+;\s?\$\w+\s?<\s?\g<4>\(\$\w+\)\s?&&\s?\$\w+\s?<\g<4>\(\$\w+\);\s?\$\w+\+{2},\s?\$\w+\+{2}\)\s?{\s?\$\w+\s?\.=\s?\g<4>\(\g<4>\(\$\w+\[\$\w+\]\)\s?\^\s?\g<4>\(\$\w+\[\$\w+\]\)\);\s?}\s?}\s?return\s\$\w+;\s?}\s?function\s?\w+\(\$\w+,\s?\$\w+\)\s?{\s?global\s?\$\w+;\s?return\s\g<4>\(\g<4>\(\$\w+,\s?\$\w+\),\s?\$\w+\)\s?;\s?}\s?foreach\s?\(\g<4>\sas\s\$\w+=>\$\w+\)\s?{\s?\$\w+\s?=\s?\$\w+;\s?\$\w+\s?=\s?\$\w+;\s?}\s?if\s?\(!\$\w+\)\s?{\s?foreach\s?\(\g<4>\sas\s\$\w+\s?=>\s?\$\w+\)\s?{\s?\$\w+\s?=\s?\$\w+;\s?\$\w+\s?=\s?\$\w+;\s?}\s?}\s?\$\w+\s?=\s?@\g<4>\(\g<4>\(@?\g<4>\(\$\w+\),\s?\$\w+\)\);\s?if\s?\(isset\(\$\w+\[\g<5>+\]\)\s?&&\s?\$\w+==\$\w+\[\g<5>+\]\)\s?{\s?if\s?\(\$\w+\[\g<5>\]\s?==\s?\g<5>\)\s?{\s?\$\w+\s?=\s?array\(\s?\g<5>+\s?=>\s?@\g<4>\(\),\s?\g<5>+\s?=>\s?\g<5>+,\s?\);\s?echo\s?@\g<4>\(\$\w+\);\s?}\s?elseif\s?\(\$\w+\[\g<5>\]\s?==\s?\g<5>\)\s?{\s?eval\(\$\w+\[\g<5>\]\);\s?}\s?(?:exit\(\);)?\s?}\s?}?~msi',
  10054. 'id' => 'globalArrayEval'
  10055. ),
  10056. array(
  10057. 'full' => '~<\?php\s{0,30}(\$\w+)\s{0,30}=\s{0,30}"(.+?)";\s{0,30}((?:\$\w+\s{0,30}=\s{0,30}(?:\1\[\'\w\s{0,30}\'\s{0,30}\+\s{0,30}\d+\s{0,30}\+\s{0,30}\'\s{0,30}\w\'\]\s{0,30}\.?\s{0,30})+;\s{0,30})+)(\$\w+)\s{0,30}=\s{0,30}"(\d+)";\s{0,30}(?:\$\w+\s{0,30}=\s{0,30}\$\w+\(\s{0,30}\$\w+\s{0,30},\s{0,30}\$\w+\(\s{0,30}"\s{0,30}"\)\s{0,30},\s{0,30}"[\w\+]+"\)\s{0,30};\s{0,30})+(?:\$\w+\s{0,30}=\s{0,30}\$\w+\(\s{0,30}\$\w+\(\s{0,30}\$\w+\)\s{0,30},\s{0,30}\$\w+\(\s{0,30}?\$\w+\)\s{0,30}\)\s{0,30};\s{0,30})+\$\w+\((?:\s{0,30}\$\w+\(\s{0,30}"\s{0,20}\w\s{0,20}"\)\s{0,30}\.?\s{0,30})+"\(\\\\"\w+\\\\"\s{0,30},\s{0,30}"\s{0,30}\.\s{0,30}\$\w+\(\s{0,30}\$\w+\(\s{0,30}"\d+"\s{0,30},\s{0,30}\$\w+\(\s{0,30}"\s{0,20}"\)\s{0,30},\s{0,30}"[\d\w=]+"\)\s{0,30}\)\s{0,30}\.\s{0,30}"\s{0,30}\)\s{0,30};"\)\s{0,30};\s{0,30}\$\w+\s{0,30}=\s{0,30}\$\w+\(\w+\)\s{0,30};\s{0,30}\$\w+\(\s{0,30}(?:\$\w+\(\s{0,30}"\s{0,30}[?>]\s{0,30}"\)\s{0,30}\.\s{0,30})+(\$\w+)\(\s{0,30}(\$\w+)\(\s{0,30}(\$\w+),\s{0,30}(\$\w+)\(\s{0,30}"\s{0,30}"\)\s{0,30},\s{0,30}(\$\w+)\(\s{0,30}"([()\w@|*#\[\]&\/\+=]+)"\s{0,30},\s{0,30}(\$\w+),\s{0,30}(\$\w+)\)\s{0,30}\)\)\s{0,30}\)\s{0,30};\s{0,30}\$\w+\s?=\s?\d+\s?;\s{0,30}\?>~msi',
  10058. 'fast' => '~<\?php\s{0,30}(\$\w+)\s{0,30}=\s{0,30}"(.+?)";\s{0,30}((?:\$\w+\s{0,30}=\s{0,30}(?:\1\[\'\w\s{0,30}\'\s{0,30}\+\s{0,30}\d+\s{0,30}\+\s{0,30}\'\s{0,30}\w\'\]\s{0,30}\.?\s{0,30})+;\s{0,30})+)(\$\w+)\s{0,30}=\s{0,30}"(\d+)";\s{0,30}(?:\$\w+\s{0,30}=\s{0,30}\$\w+\(\s{0,30}\$\w+\s{0,30},\s{0,30}\$\w+\(\s{0,30}"\s{0,30}"\)\s{0,30},\s{0,30}"[\w\+]+"\)\s{0,30};\s{0,30})+(?:\$\w+\s{0,30}=\s{0,30}\$\w+\(\s{0,30}\$\w+\(\s{0,30}\$\w+\)\s{0,30},\s{0,30}\$\w+\(\s{0,30}?\$\w+\)\s{0,30}\)\s{0,30};\s{0,30})+\$\w+\((?:\s{0,30}\$\w+\(\s{0,30}"\s{0,20}\w\s{0,20}"\)\s{0,30}\.?\s{0,30})+"\(\\\\"\w+\\\\"\s{0,30},\s{0,30}"\s{0,30}\.\s{0,30}\$\w+\(\s{0,30}\$\w+\(\s{0,30}"\d+"\s{0,30},\s{0,30}\$\w+\(\s{0,30}"\s{0,20}"\)\s{0,30},\s{0,30}"[\d\w=]+"\)\s{0,30}\)\s{0,30}\.\s{0,30}"\s{0,30}\)\s{0,30};"\)\s{0,30};\s{0,30}\$\w+\s{0,30}=\s{0,30}\$\w+\(\w+\)\s{0,30};\s{0,30}\$\w+\(\s{0,30}(?:\$\w+\(\s{0,30}"\s{0,30}[?>]\s{0,30}"\)\s{0,30}\.\s{0,30})+(\$\w+)\(\s{0,30}(\$\w+)\(\s{0,30}(\$\w+),\s{0,30}(\$\w+)\(\s{0,30}"\s{0,30}"\)\s{0,30},\s{0,30}(\$\w+)\(\s{0,30}"([()\w@|*#\[\]&\/\+=]+)"\s{0,30},\s{0,30}(\$\w+),\s{0,30}(\$\w+)\)\s{0,30}\)\)\s{0,30}\)\s{0,30};\s{0,30}\$\w+\s?=\s?\d+\s?;\s{0,30}\?>~msi',
  10059. 'id' => 'tinkleShell'
  10060. ),
  10061. array(
  10062. 'full' => '~(?:\$\w+="\w+";)+(\$\w+)="([\w_)(;\/\.*]+)";\$\w+="\w+";function\s(\w+)\((?:\$\w+,?){3}\){return\s?""(?:\.\$\w+\.""){3};}(?:\$\w+=(?:(?:"\w+")|(?:\3\((?:\1\[\d+\],?\.?)+\))|(?:(?:\3\()+(?:\$\w+\,?(?:\)\,)?)+)(?:(?:(?:\3\()+)*(?:(?:\$\w+,?)+)*(?:\),)*(?:\)*))+);)+\$\w+=\3\((?:\1\[\d+\]\.?)+(?:,"")+\);(?:\$\w+=\3\(\3\(\$\w+,\$\w+,\$\w+\),\3\((?:\$\w+,?)+\),\3\(\$\w+,\3\(\$\w+,\$\w+,""\),\$\w+\)\)\."\'(?<str>[\w\/\+]+)\'")\.\3\((?:\1\[\d+\],?\.?)+\);\$\w+\(\$\w+,array\("","}"\.\$\w+\."\/+"\)\);~msi',
  10063. 'fast' => '~(?:\$\w+="\w+";)+(\$\w+)="([\w_)(;\/\.*]+)";\$\w+="\w+";function\s(\w+)\((?:\$\w+,?){3}\){return\s?""(?:\.\$\w+\.""){3};}(?:\$\w+=(?:(?:"\w+")|(?:\3\((?:\1\[\d+\],?\.?)+\))|(?:(?:\3\()+(?:\$\w+\,?(?:\)\,)?)+)(?:(?:(?:\3\()+)*(?:(?:\$\w+,?)+)*(?:\),)*(?:\)*))+);)+\$\w+=\3\((?:\1\[\d+\]\.?)+(?:,"")+\);(?:\$\w+=\3\(\3\(\$\w+,\$\w+,\$\w+\),\3\((?:\$\w+,?)+\),\3\(\$\w+,\3\(\$\w+,\$\w+,""\),\$\w+\)\)\."\'(?<str>[\w\/\+]+)\'")\.\3\((?:\1\[\d+\],?\.?)+\);\$\w+\(\$\w+,array\("","}"\.\$\w+\."\/+"\)\);~msi',
  10064. 'id' => 'wsoFunc'
  10065. ),
  10066. array(
  10067. 'full' => '~\$\w+\[\'\w+\'\]\s?=\s?"[\w;\/\.*)(]+";\s?\$\w+\[\'\w+\'\]\s?=\s?(?:\$\w+\[\'\w+\'\]\[\d+\]\.?)+;\s?\$\w+\s?=\s?(?:"[\w()]*"\.chr\([\d-]+\)\.?)+"\(";\s?\$\w+\s?=\s?"[)\\\\\w;]+";\s?\$\w+\s?=\s?\$\w+\."\'(?<str>[\w\/\+]+)\'"\.\$\w+;\s?\$\w+\[\'\w+\'\]\((?:\$\w+\[\'\w+\'\]\[\d+\]\.?)+,\s?\$\w+\s?,"\d+"\);~msi',
  10068. 'fast' => '~\$\w+\[\'\w+\'\]\s?=\s?"[\w;\/\.*)(]+";\s?\$\w+\[\'\w+\'\]\s?=\s?(?:\$\w+\[\'\w+\'\]\[\d+\]\.?)+;\s?\$\w+\s?=\s?(?:"[\w()]*"\.chr\([\d-]+\)\.?)+"\(";\s?\$\w+\s?=\s?"[)\\\\\w;]+";\s?\$\w+\s?=\s?\$\w+\."\'(?<str>[\w\/\+]+)\'"\.\$\w+;\s?\$\w+\[\'\w+\'\]\((?:\$\w+\[\'\w+\'\]\[\d+\]\.?)+,\s?\$\w+\s?,"\d+"\);~msi',
  10069. 'id' => 'wsoFunc'
  10070. ),
  10071. array(
  10072. 'full' => '~function\s(\w+)\((\$\w+)\)\s?{\s?\2=gzinflate\(base64_decode\(\2\)\);\s?for\((\$\w+)=\d+;\3<strlen\(\2\);\3\+\+\)\s?{\s?\2\[\3\]\s?=\s?chr\(ord\(\2\[\3\]\)-\d+\);\s?}\s?return\s\2;\s?}eval\(\1\("([\w\+\/=]+)"\)\);~msi',
  10073. 'fast' => '~function\s(\w+)\((\$\w+)\)\s?{\s?\2=gzinflate\(base64_decode\(\2\)\);\s?for\((\$\w+)=\d+;\3<strlen\(\2\);\3\+\+\)\s?{\s?\2\[\3\]\s?=\s?chr\(ord\(\2\[\3\]\)-\d+\);\s?}\s?return\s\2;\s?}eval\(\1\("([\w\+\/=]+)"\)\);~msi',
  10074. 'id' => 'evalWanFunc',
  10075. ),
  10076. array(
  10077. 'full' => '~if\s\(file_exists\("(\w+)"\)\){\s?}\s?else\s?{\s?(\$\w+)\s?=\s?fopen\(\'\1\.php\',\s?\'w\'\);\s?(\$\w+)\s?=\s?base64_decode\("([\w\+\/=]+)"\);\s?fwrite\(\2\s?,\3\);\s?fclose\(\2\);\s?}~msi',
  10078. 'fast' => '~if\s\(file_exists\("(\w+)"\)\){\s?}\s?else\s?{\s?(\$\w+)\s?=\s?fopen\(\'\1\.php\',\s?\'w\'\);\s?(\$\w+)\s?=\s?base64_decode\("([\w\+\/=]+)"\);\s?fwrite\(\2\s?,\3\);\s?fclose\(\2\);\s?}~msi',
  10079. 'id' => 'funcFile',
  10080. ),
  10081. array(
  10082. 'full' => '~(\$GLOBALS\[\'\w+\'\]\s=\sarray\((?:\s\'\w+\'\s=>\s\'?\w+\'?,)+\s\);\s((?:\$\w+=(?:\'\w+\'\.?)+;)+)(?:if\(!\$\w+\((?:\'\w*\'\.?)+\)\){function\s\w+\(\$\w+\){.*?else{function\s\w+\(\$\w+\){.*?return\s\$\w+\(\$\w+\);}}){2})\$\w+=(?:\'\w*\'\.?)+;(\$\w+)\s?=\s?\$\w+\(\'\$\w+\',\$\w+\.\'\(.\.\$\w+\.(?:\'[\w(\$);]*\'\.?)+\);\3\("([\w\/\+=]+)"\);~msi',
  10083. 'fast' => '~(\$GLOBALS\[\'\w+\'\]\s=\sarray\((?:\s\'\w+\'\s=>\s\'?\w+\'?,)+\s\);\s((?:\$\w+=(?:\'\w+\'\.?)+;)+)(?:if\(!\$\w+\((?:\'\w*\'\.?)+\)\){function\s\w+\(\$\w+\){.*?else{function\s\w+\(\$\w+\){.*?return\s\$\w+\(\$\w+\);}}){2})\$\w+=(?:\'\w*\'\.?)+;(\$\w+)\s?=\s?\$\w+\(\'\$\w+\',\$\w+\.\'\(.\.\$\w+\.(?:\'[\w(\$);]*\'\.?)+\);\3\("([\w\/\+=]+)"\);~msi',
  10084. 'id' => 'gulf',
  10085. ),
  10086. array(
  10087. 'full' => '~(\$\w+)=(\w+);(\$\w+)="(.+?)";(\$\w+)=\3;(\$\w+)=strlen\(\5\);(\$\w+)=\'\';for\((\$\w+)=\d+;\8<\6;\8\+\+\)\7\s?\.=\s?chr\(ord\(\5\[\8\]\)\s?\^\s?\1\);eval\("\?>"\.\7\."<\?"\);~msi',
  10088. 'fast' => '~(\$\w+)=(\w+);(\$\w+)="(.+?)";(\$\w+)=\3;(\$\w+)=strlen\(\5\);(\$\w+)=\'\';for\((\$\w+)=\d+;\8<\6;\8\+\+\)\7\s?\.=\s?chr\(ord\(\5\[\8\]\)\s?\^\s?\1\);eval\("\?>"\.\7\."<\?"\);~msi',
  10089. 'id' => 'evalConcatAsciiChars',
  10090. ),
  10091. /*array(
  10092. 'full' => '~goto \w+;\s*(\w+:\s*(\w+:\s*)?.*?goto\s*\w+;\s*(}\s*goto\s*\w+;)?(goto\s*\w+;)?\s*)+\w+:\s*[^;]+;(\s*goto\s*\w+;\s*\w+:\s*\w+:)?~msi',
  10093. 'fast' => '~goto \w+;\s*(\w+:\s*(\w+:\s*)?.*?goto\s*\w+;\s*(}\s*goto\s*\w+;)?(goto\s*\w+;)?\s*)+\w+:\s*[^;]+;(\s*goto\s*\w+;\s*\w+:\s*\w+:)?~msi',
  10094. 'id' => 'goto',
  10095. ),*/
  10096. /*array(
  10097. 'full' => '~if\(isset\(\$_POST\[\'\w+\'\]\)\){echo[\s\'\w]+;\s*exit\(\);}\s*if\(isset\(\$_COOKIE\)\){(\$\w+)=\$_COOKIE;\(count\(\1\)==\d+&&in_array\(gettype\(\1\)\.count\(\1\),\1\)\)\?\(\(\1\[\d+\]=\1\[\d+\]\.\1\[\d+\]\)&&\(\1\[\d+\]=\1\[\d+\]\(\1\[\d+\]\)\)&&\(\1=\1\[\d+\]\(\1\[\d+\],\1\[\d+\]\(\1\[\d+\]\)\)\)&&\1\(\)\):\1;}\s*if\(!isset\(\$_POST\[\'\w+\'\]\)&&!isset\(\$_GET\[\'\w+\'\]\)\){exit\(\);}\s*(?:(\$\w+)\[\d+\]=\'\w+\';)+\s*if\(isset\(\$_POST\[\'\w+\'\]\)\){\$\w+=\$_POST\[\'\w+\'\];}else{\$\w+=\$_GET\[\'\w+\'\];}\s*\$\w+\s*=\s*array_flip\(str_split\(\'(\w+)\'\)\);\$\w+\s*=\s*str_split\(md5\(\$\w+\)\.md5\(\$\w+\)\);\$\w+\s*=\s*array\(\);\$\w+\s*=\s*\'\';\s*foreach\s*\(\$\w+\s*as\s*\$\w+\s*=>\s*\$\w+\)\s*{while\s*\(1\)\s*{if\(isset\(\$\w+\[\$\w+\[\$\w+\]\]\)\){\$\w+\[\$\w+\]\+\+;}else\{\$\w+\[\$\w+\[\$\w+\]\]=\'\';break;}}}\s*foreach\s*\(\$\w+\s*as\s*\$\w+\s*=>\s*\$\w+\)\s*{\$\w+\s*\.=\s*\$\w+\[\$\w+\];}\s*eval\(trim\(base64_decode\(base64_decode\(\$\w+\)\)\)\);~mis',
  10098. 'fast' => '~if\(isset\(\$_POST\[\'\w+\'\]\)\){echo[\s\'\w]+;\s*exit\(\);}\s*if\(isset\(\$_COOKIE\)\){(\$\w+)=\$_COOKIE;\(count\(\1\)==\d+&&in_array\(gettype\(\1\)\.count\(\1\),\1\)\)\?\(\(\1\[\d+\]=\1\[\d+\]\.\1\[\d+\]\)&&\(\1\[\d+\]=\1\[\d+\]\(\1\[\d+\]\)\)&&\(\1=\1\[\d+\]\(\1\[\d+\],\1\[\d+\]\(\1\[\d+\]\)\)\)&&\1\(\)\):\1;}\s*if\(!isset\(\$_POST\[\'\w+\'\]\)&&!isset\(\$_GET\[\'\w+\'\]\)\){exit\(\);}\s*(?:(\$\w+)\[\d+\]=\'\w+\';)+\s*if\(isset\(\$_POST\[\'\w+\'\]\)\){\$\w+=\$_POST\[\'\w+\'\];}else{\$\w+=\$_GET\[\'\w+\'\];}\s*\$\w+\s*=\s*array_flip\(str_split\(\'(\w+)\'\)\);\$\w+\s*=\s*str_split\(md5\(\$\w+\)\.md5\(\$\w+\)\);\$\w+\s*=\s*array\(\);\$\w+\s*=\s*\'\';\s*foreach\s*\(\$\w+\s*as\s*\$\w+\s*=>\s*\$\w+\)\s*{while\s*\(1\)\s*{if\(isset\(\$\w+\[\$\w+\[\$\w+\]\]\)\){\$\w+\[\$\w+\]\+\+;}else\{\$\w+\[\$\w+\[\$\w+\]\]=\'\';break;}}}\s*foreach\s*\(\$\w+\s*as\s*\$\w+\s*=>\s*\$\w+\)\s*{\$\w+\s*\.=\s*\$\w+\[\$\w+\];}\s*eval\(trim\(base64_decode\(base64_decode\(\$\w+\)\)\)\);~mis',
  10099. 'id' => 'scriptWithPass',
  10100. ),*/
  10101. );
  10102. private $full_source;
  10103. private $prev_step;
  10104. private $cur;
  10105. private $obfuscated;
  10106. private $max_level;
  10107. private $max_time;
  10108. private $run_time;
  10109. private $fragments;
  10110. private $grabed_signature_ids;
  10111. public function __construct($text, $text2 = '', $max_level = 30, $max_time = 5)
  10112. {
  10113. $temp = str_replace(' ', '', $text);
  10114. if (
  10115. (strpos($temp, '=file(__FILE__);eval(base64_decode(') //zeura hack
  10116. && strpos($temp, '1)));__halt_compiler();'))
  10117. || (strpos($temp, 'define(\'__LOCALFILE__\',__FILE__);') //obf_20200527_1
  10118. && strpos($temp, '__halt_compiler();'))
  10119. || (strpos($text2, '* Bizden oncekiler demo *')) //bizden
  10120. || (strpos($temp, '");$cvsu=$gg')) //TinkleShell
  10121. ) {
  10122. $this->text = $text2;
  10123. $this->full_source = $text2;
  10124. } else {
  10125. $this->text = $text;
  10126. $this->full_source = $text;
  10127. }
  10128. $this->max_level = $max_level;
  10129. $this->max_time = $max_time;
  10130. $this->fragments = [];
  10131. $this->grabed_signature_ids = [];
  10132. }
  10133. public function getObfuscateType($str)
  10134. {
  10135. $str = preg_replace('~\s+~', ' ', $str);
  10136. $l_UnicodeContent = Helpers::detect_utf_encoding($str);
  10137. if ($l_UnicodeContent !== false) {
  10138. if (function_exists('iconv')) {
  10139. $str = iconv($l_UnicodeContent, "CP1251//IGNORE", $str);
  10140. }
  10141. }
  10142. if(strpos($str, '# Malware list detected by AI-Bolit (http') !== false) {
  10143. return '';
  10144. }
  10145. if(strpos($str, '#Malware list detected by AI-Bolit(http') !== false) {
  10146. return '';
  10147. }
  10148. if(strpos($str, '<div class="header">Отчет сканера AI-Bolit</div>') !== false) {
  10149. return '';
  10150. }
  10151. if (strpos($str, '$default_action="FilesMan"') !== false) {
  10152. return '';
  10153. }
  10154. foreach ($this->signatures as $signature) {
  10155. if (preg_match($signature['fast'], $str, $matches)) {
  10156. if ($signature['id'] === 'echo') {
  10157. if (preg_match('~\$_(POST|GET|REQUEST|COOKIE)~ms', $matches[0])) {
  10158. return '';
  10159. }
  10160. if (!isset($matches[5]) || $matches[5] === '') {
  10161. return '';
  10162. }
  10163. }
  10164. if ($signature['id'] === 'eval') {
  10165. if (strpos($matches[0], 'file_get_contents') !== false) {
  10166. return '';
  10167. }
  10168. if (preg_match('~\$_(POST|GET|REQUEST|COOKIE)~ms', $matches[0])) {
  10169. return '';
  10170. }
  10171. if (strpos($matches[0], '=> array(\'eval(base64_decode(\')') !== false) {
  10172. return '';
  10173. }
  10174. if (@$matches[6] == '\'";') {
  10175. return '';
  10176. }
  10177. }
  10178. return $signature['id'];
  10179. }
  10180. }
  10181. return '';
  10182. }
  10183. private function getObfuscateFragment($str)
  10184. {
  10185. foreach ($this->signatures as $signature) {
  10186. if (preg_match($signature['full'], $str, $matches)) {
  10187. return $matches;
  10188. }
  10189. }
  10190. return '';
  10191. }
  10192. public function getFragments()
  10193. {
  10194. if (count($this->fragments) > 0) {
  10195. return $this->fragments;
  10196. }
  10197. return false;
  10198. }
  10199. public function getGrabedSignatureIDs()
  10200. {
  10201. return array_keys($this->grabed_signature_ids);
  10202. }
  10203. private function grabFragments()
  10204. {
  10205. if ($this->cur == null) {
  10206. $this->cur = $this->text;
  10207. }
  10208. $str = $this->cur;
  10209. reset($this->signatures);
  10210. while ($sign = current($this->signatures)) {
  10211. $regex = $sign['full'];
  10212. if (preg_match($regex, $str, $matches)) {
  10213. $this->grabed_signature_ids[$sign['id']] = 1;
  10214. $this->fragments[$matches[0]] = $matches[0];
  10215. $str = str_replace($matches[0], '', $str);
  10216. } else {
  10217. next($this->signatures);
  10218. }
  10219. }
  10220. }
  10221. private function deobfuscateFragments()
  10222. {
  10223. $prev_step = '';
  10224. if (count($this->fragments) > 0) {
  10225. $i = 0;
  10226. foreach ($this->fragments as $frag => $value) {
  10227. if ($frag !== $value) {
  10228. continue;
  10229. }
  10230. $type = $this->getObfuscateType($value);
  10231. while ($type !== '' && $i < 50) {
  10232. $match = $this->getObfuscateFragment($value);
  10233. $find = $match[0] ?? '';
  10234. $func = 'deobfuscate' . ucfirst($type);
  10235. $temp = @$this->$func($find, $match);
  10236. $value = str_replace($find, $temp, $value);
  10237. $this->fragments[$frag] = $value;
  10238. $type = $this->getObfuscateType($value);
  10239. if ($prev_step == hash('sha256', $value)) {
  10240. break;
  10241. } else {
  10242. $prev_step = hash('sha256', $value);
  10243. }
  10244. $i++;
  10245. }
  10246. }
  10247. }
  10248. }
  10249. public function deobfuscate($hangs = 0, $prev_step = '')
  10250. {
  10251. $deobfuscated = '';
  10252. $this->run_time = microtime(true);
  10253. $this->cur = $this->text;
  10254. $this->grabFragments();
  10255. $this->deobfuscateFragments();
  10256. $deobfuscated = $this->cur;
  10257. if (count($this->fragments) > 0 ) {
  10258. foreach ($this->fragments as $fragment => $text) {
  10259. $deobfuscated = str_replace($fragment, $text, $deobfuscated);
  10260. }
  10261. }
  10262. $deobfuscated = preg_replace_callback('~"[\w\\\\\s=;_<>&/\.-]+"~msi', function ($matches) {
  10263. return preg_match('~\\\\x[2-7][0-9a-f]|\\\\1[0-2][0-9]|\\\\[3-9][0-9]|\\\\0[0-4][0-9]|\\\\1[0-7][0-9]~msi', $matches[0]) ? stripcslashes($matches[0]) : $matches[0];
  10264. }, $deobfuscated);
  10265. $deobfuscated = preg_replace_callback('~echo\s*"((.*?[^\\\\])??((\\\\\\\\)+)?+)"~msi', function ($matches) {
  10266. return preg_match('~\\\\x[2-7][0-9a-f]|\\\\1[0-2][0-9]|\\\\[3-9][0-9]|\\\\0[0-4][0-9]|\\\\1[0-7][0-9]~msi', $matches[0]) ? stripcslashes($matches[0]) : $matches[0];
  10267. }, $deobfuscated);
  10268. preg_match_all('~(global\s*(\$[\w_]+);)\2\s*=\s*"[^"]+";~msi', $deobfuscated, $matches, PREG_SET_ORDER);
  10269. foreach ($matches as $match) {
  10270. $deobfuscated = str_replace($match[0], '', $deobfuscated);
  10271. $deobfuscated = str_replace($match[1], '', $deobfuscated);
  10272. }
  10273. preg_match_all('~\$\{"GLOBALS"\}\[[\'"](\w+)[\'"]\]=["\'](\w+)[\'"];~msi', $deobfuscated, $matches, PREG_SET_ORDER);
  10274. foreach ($matches as $match) {
  10275. $deobfuscated = preg_replace_callback('~\$\{\$\{"GLOBALS"\}\[[\'"]' . $match[1] . '[\'"]\]\}~msi', function ($matches) use ($match) {
  10276. return '$' . $match[2];
  10277. }, $deobfuscated);
  10278. $deobfuscated = str_replace($match[0], '', $deobfuscated);
  10279. }
  10280. $deobfuscated = preg_replace_callback('~\$\{(\$\w+)\}~msi', function ($matches) use ($deobfuscated) {
  10281. if (isset($matches[1])) {
  10282. preg_match('~\\' . $matches[1] . '\s*=\s*["\'](\w+)[\'"];~msi', $deobfuscated, $matches2);
  10283. if (isset($matches2[1])) {
  10284. return '$' . $matches2[1];
  10285. }
  10286. return $matches[0];
  10287. }
  10288. }, $deobfuscated);
  10289. if (strpos($deobfuscated, 'chr(')) {
  10290. $deobfuscated = preg_replace_callback('~chr\((\d+)\)~msi', function ($matches) {
  10291. return "'" . chr($matches[1]) . "'";
  10292. }, $deobfuscated);
  10293. }
  10294. if (substr_count(substr($deobfuscated, 0, 200), 'base64_decode(\'') > 3) {
  10295. $deobfuscated = preg_replace_callback('~base64_decode\(\'([^\']+)\'\)~msi', function ($matches) {
  10296. return "'" . base64_decode($matches[1]) . "'";
  10297. }, $deobfuscated);
  10298. }
  10299. if ($this->getObfuscateType($deobfuscated) !== '' && $hangs < 5) {
  10300. $this->text = $deobfuscated;
  10301. if ($prev_step == hash('sha256', $deobfuscated)) {
  10302. return $deobfuscated;
  10303. }
  10304. $deobfuscated = $this->deobfuscate(++$hangs, hash('sha256', $deobfuscated));
  10305. }
  10306. return $deobfuscated;
  10307. }
  10308. private function deobfuscateObf_20200618_1($str)
  10309. {
  10310. preg_match('~(\$\{"[\\\\x47c2153fGLOBALS]+"\}\["[\w\\\\]+"\]="[\w\\\\]+";(\$\w+="\w+";)?)+.+\$\{"[\\\\x47c2153fGLOBALS]+"\}\["[\w\\\\]+"\].+}+~msi', $str, $matches);
  10311. $find = $matches[0];
  10312. $res = stripcslashes($str);
  10313. $res = str_replace($find, $res, $str);
  10314. return $res;
  10315. }
  10316. private function deobfuscateBypass($str, $matches)
  10317. {
  10318. $find = $matches[0];
  10319. $bypass = stripcslashes($matches[2]);
  10320. $eval = $matches[3] . $bypass . $matches[4];
  10321. $res = str_replace($find, $eval, $str);
  10322. return $res;
  10323. }
  10324. private function deobfuscateObf_20200720_1($str, $matches)
  10325. {
  10326. $find = $matches[0];
  10327. $res = base64_decode($matches[2]);
  10328. $res = str_replace($find, $res, $str);
  10329. return $res;
  10330. }
  10331. private function deobfuscateGoto($str)
  10332. {
  10333. preg_match('~goto \w+;\s*(\w+:\s*(\w+:\s*)?.*?goto\s*\w+;\s*(}\s*goto\s*\w+;)?(goto\s*\w+;)?\s*)+\w+:\s*[^;]+;(\s*goto\s*\w+;\s*\w+:\s*\w+:)?~msi', $str, $matches);
  10334. $find = $matches[0];
  10335. $res = $str;
  10336. $labels = [];
  10337. preg_match_all('~((\w+):\s*((\w+):\s*)?(.*?goto\s*\w+;))(\s*goto\s*\w+;)?~msi', $str, $matches, PREG_SET_ORDER);
  10338. foreach($matches as $item) {
  10339. if (isset($item[4]) && $item[4] != '') {
  10340. $labels[$item[4]] = $item[5];
  10341. }
  10342. $labels[$item[2]] = $item[5];
  10343. $res = str_replace($item[1], '', $res);
  10344. }
  10345. while(preg_match('~goto\s*(\w+);~msi', $res, $matches) && isset($labels[$matches[1]])) {
  10346. $res = str_replace($matches[0], PHP_EOL . $labels[$matches[1]] . PHP_EOL, $res);
  10347. }
  10348. $res = str_replace($find, $res, $str);
  10349. return $res;
  10350. }
  10351. private function deobfuscateObf_20200527_1($str)
  10352. {
  10353. preg_match('~error_reporting\(0\);define\(\'\w+\',\s*__FILE__\);define\(\'\w+\',\s*fopen\(__FILE__,\s*\'r\'\)\);fseek\(\w+,\s*__COMPILER_HALT_OFFSET__\);((\$\w+="\\\\x[0-9a-f]+";)+(\$\w+="[^"]+";)+eval\("\?>"\.(\$\w+\()+"([^"]+)"\)+;)+(?:/\*\w+\*/)?__halt_compiler\(\);([\w#|>^%\[\.\]\\\\/=]+)~msi', $str, $matches);
  10354. $find = $matches[0];
  10355. $res = $str;
  10356. $encoded = $matches[6];
  10357. $res = preg_replace_callback('~(\$\w+="\\\\x[0-9a-f]+";)+(\$\w+="[^"]+";)+eval\("\?>"\.(\$\w+\()+"([^"]+)"\)+;~msi', function ($m) use ($str) {
  10358. $layer1 = hex2bin(str_rot13(gzinflate(str_rot13(base64_decode($m[4])))));
  10359. if (preg_match('~(\$\w+="[^"]+";)+eval\(\$\w\.(\$\w+\()+"([^"]+)"\)+;~msi', $layer1, $matches)) {
  10360. $temp = "?>" . hex2bin(str_rot13(gzinflate(str_rot13(base64_decode($matches[3])))));
  10361. while (preg_match('~(\$\w+)=strrev\(\1\);(\1=\s*str_replace\([\'"]([^"\']+)[\'"],"[^"]+",\1\);)+@?eval\("\?\>"\.\$\w+\(\1\)+;~msi', $temp, $matches)) {
  10362. if (preg_match('~\\' . $matches[1] . '="([^"]+)";~msi', $layer1, $matches1)) {
  10363. $code = $matches1[1];
  10364. $code = strrev($code);
  10365. if (preg_match_all('~str_replace\([\'"]([^"\']+)[\'"],"([^"]+)"~msi', $temp, $m, PREG_SET_ORDER)) {
  10366. foreach($m as $item) {
  10367. $code = str_replace($item[1], $item[2], $code);
  10368. }
  10369. $temp = base64_decode($code);
  10370. }
  10371. }
  10372. }
  10373. return $temp;
  10374. }
  10375. }, $res);
  10376. if (preg_match_all('~str_replace\([\'"]([^"\']+)[\'"],[\'"]([^"\']+)[\'"]~msi', $res, $m, PREG_SET_ORDER)) {
  10377. foreach($m as $item) {
  10378. $encoded = str_replace($item[1], $item[2], $encoded);
  10379. }
  10380. $res = base64_decode($encoded);
  10381. }
  10382. $res = str_replace($find, $res, $str);
  10383. return $res;
  10384. }
  10385. private function deobfuscateObf_20200602_1($str)
  10386. {
  10387. preg_match('~(\$\w+)=strrev\("[base64_decode]+"\)\.str_replace\(\'(\w+)\',\'\',\'\w+\'\);\s*eval\(\1\((\$\w+)\)\);~msi', $str, $matches);
  10388. $find = $matches[0];
  10389. $res = 'eval(base64_decode(' . $matches[3] . '));';
  10390. $res = str_replace($find, $res, $str);
  10391. return $res;
  10392. }
  10393. private function deobfuscateObf_20200526_1($str, $matches)
  10394. {
  10395. $find = $matches[0];
  10396. $res = base64_decode($matches[2]);
  10397. $res = str_replace($find, $res, $str);
  10398. return $res;
  10399. }
  10400. private function deobfuscateObf_20200522_1($str, $matches)
  10401. {
  10402. $find = $matches[0];
  10403. $res = strrev(gzinflate(base64_decode(substr($matches[9], (int)hex2bin($matches[3]), (int)hex2bin($matches[5])))));
  10404. $res = str_replace($find, $res, $str);
  10405. return $res;
  10406. }
  10407. private function deobfuscateObf_20200507_5($str, $matches)
  10408. {
  10409. $find = $matches[0];
  10410. $res = base64_decode($matches[1]);
  10411. $res = str_replace($find, $res, $str);
  10412. return $res;
  10413. }
  10414. private function deobfuscateObf_20200507_4($str, $matches)
  10415. {
  10416. $find = $matches[0];
  10417. $ar = $matches[2];
  10418. $ar = explode(",\n", $ar);
  10419. $array = [];
  10420. foreach ($ar as $v) {
  10421. $array[substr(trim($v),1,1)] = substr(trim($v), -2, 1);
  10422. }
  10423. unset($ar);
  10424. $res = '';
  10425. $split = str_split($matches[5]);
  10426. foreach ($split as $x) {
  10427. foreach ($array as $main => $val) {
  10428. if ($x == (string)$val) {
  10429. $res .= $main;
  10430. break;
  10431. }
  10432. }
  10433. }
  10434. $res = gzinflate(base64_decode($res));
  10435. $res = str_replace($find, $res, $str);
  10436. return $res;
  10437. }
  10438. private function deobfuscateObf_20200513_1($str, $matches)
  10439. {
  10440. $find = $matches[0];
  10441. $res = gzuncompress(base64_decode(strrev($matches[5])));
  10442. $res = str_replace($find, $res, $str);
  10443. return $res;
  10444. }
  10445. private function deobfuscateObf_20200507_3($str, $matches)
  10446. {
  10447. $find = $matches[0];
  10448. $decode = htmlspecialchars_decode(gzinflate(base64_decode($matches[2])));
  10449. $res = str_replace('$An0n_3xPloiTeR', "'" . $matches[3] . "'", $decode);
  10450. $res = str_replace($find, $res, $str);
  10451. return $res;
  10452. }
  10453. private function deobfuscateObf_20200507_2($str, $matches)
  10454. {
  10455. $find = $matches[0];
  10456. $res = base64_decode($matches[4]);
  10457. $res = str_replace($find, $res, $str);
  10458. return $res;
  10459. }
  10460. private function deobfuscateObf_20200507_1($str)
  10461. {
  10462. preg_match('~(\$\w+)=base64_decode\(\'([^\']+)\'\);\s*eval\(\1\);~mis', $str, $matches);
  10463. $find = $matches[0];
  10464. $res = base64_decode($matches[2]);
  10465. $res = str_replace($find, $res, $str);
  10466. return $res;
  10467. }
  10468. private function deobfuscateObf_20200504_1($str)
  10469. {
  10470. preg_match('~(\$\w+)\s*=\s*\("\?>"\.gzuncompress\(base64_decode\("([^"]+)"\)\)\);\s*@?eval\(\1\);~msi', $str, $matches);
  10471. $find = $matches[0];
  10472. $res = ' ?>' . gzuncompress(base64_decode($matches[2]));
  10473. $res = str_replace($find, $res, $str);
  10474. return $res;
  10475. }
  10476. private function deobfuscateSmartToolsShop($str, $matches)
  10477. {
  10478. $find = $matches[0];
  10479. $res = str_rot13(gzinflate(str_rot13(base64_decode($matches[2]))));
  10480. $res = str_replace($find, $res, $str);
  10481. return $res;
  10482. }
  10483. private function deobfuscateObf_20200421_1($str)
  10484. {
  10485. preg_match('~(?:\$\w+\s*=\s*\'\w+\';)?\s*(\$\w+)\s*=\s*urldecode\(\'[%0-9a-f]+\'\);(\s*(\$\w+)\s*=(\s*\1\{\d+\}\.?)+;)+\s*(\$\w+)\s*=\s*"[^"]+"\.\3\("([^"]+)"\);\s*eval\(\5\);~msi', $str, $matches);
  10486. $find = $matches[0];
  10487. $res = ' ?>' . base64_decode($matches[6]);
  10488. $res = str_replace($find, $res, $str);
  10489. return $res;
  10490. }
  10491. private function deobfuscateObf_20200414_1($str)
  10492. {
  10493. preg_match('~function\s*(\w+)\((\$\w+),\s*(\$\w+)\)\s*\{\s*\3\s*=\s*md5\(\3\);\s*\$\w+\s*=\s*\d+;\s*\2\s*=\s*base64_decode\(\2\);\s*\$\w+\s*=\s*strlen\(\2\);\s*\$\w+\s*=\s*strlen\(\3\);\s*\$\w+\s*=\s*\'\';\s*for\s*\(\$\w+\s*=\s\d+;\s*\$\w+\s*<\s*\$len;\s*\$\w+\+\+\)\s*\{\s*if\s*\(\$\w+\s*==\s*\$\w+\)\s*\{\s*\$\w+\s*=\s*\d+;\s*}\s*\$\w+\s*\.=\s*substr\(\3,\s*\$\w+,\s*\d+\);\s*\$\w+\+\+;\s*\}\s*\$\w+\s*=\s*\'\';\s*for\s*\(\$\w+\s*=\s*\d+;\s*\$\w+\s*<\s*\$\w+;\s*\$\w+\+\+\)\s*{\s*if\s*\(ord\(substr\(\2,\s*\$\w+,\s*\d+\)\)\s*<\s*ord\(substr\(\$\w+,\s*\$\w+,\s*\d+\)\)\)\s*\{\s*\$\w+\s*\.=\s*chr\(\(ord\(substr\(\2,\s*\$\w+,\s*\d+\)\)\s*\+\s*\d+\)\s*-\s*ord\(substr\(\$\w+,\s*\$\w+,\s*\d+\)\)\);\s*}\s*else\s*{\s*\$\w+\s*\.=\s*chr\(ord\(substr\(\2,\s*\$\w+,\s*\d+\)\)\s*-\s*ord\(substr\(\$\w+,\s*\$\w+,\s*\d+\)\)\);\s*}\s*}\s*return\s*\$\w+;\s*\}\s*\2\s*=\s*"([^"]+)";\s*\3\s*=\s*"([^"]+)";\s*(\$\w+)\s*=\s*\1\(\2,\s*\3\);\s*eval\(\6\);~msi', $str, $matches);
  10494. $find = $matches[0];
  10495. $data = $matches[4];
  10496. $key = $matches[5];
  10497. $res = Helpers::obf20200414_1_decrypt($data, $key);
  10498. $res = str_replace($find, $res, $str);
  10499. return $res;
  10500. }
  10501. private function deobfuscateObf_20200402_2($str, $matches)
  10502. {
  10503. $find = $matches[0];
  10504. $code = $matches[15];
  10505. $code = preg_replace_callback('~\s*"\s*\.((?:min|max|round)?\(\s*\d+[\.\,\|\s\|+\|\-\|\*\|\/]([\d\s\.\,\+\-\*\/]+)?\))\s*\.\s*"~msi', function($m) {
  10506. return substr(Helpers::calc($m[1]), 1, -1);
  10507. }, $code);
  10508. $res = gzinflate(base64_decode($code)) ?:base64_decode($code);
  10509. $res = str_replace($find, $res, $str);
  10510. return $res;
  10511. }
  10512. private function deobfuscateObf_20200402_1($str, $matches)
  10513. {
  10514. $find = $matches[0];
  10515. $res = gzinflate(hex2bin(pack('H*',$matches[6])));
  10516. $res = preg_replace('~//.+$~m', '', $res);
  10517. preg_match('~\$\w+\(\$\w+,\$\w+\("",\s*\$\w+\(\$\w+\(\$\w+\(\$\w+\(\$\w+,\s*"(\d+)"\)+,\$\w+\);.+function \w+\((\$\w+),\s*\$\w+,\s(\$\w+)\)\s{\3\s=\s\3\s\.\s\3;.+return \2;}~msi', $res, $matches);
  10518. $res = gzinflate(hex2bin(pack('H*',$matches[1])));
  10519. $res = str_replace($find, $res, $str);
  10520. return $res;
  10521. }
  10522. private function deobfuscateOELove($str)
  10523. {
  10524. preg_match('~<\?php\s*defined\(\'[^\']+\'\)\s*\|\|\s*define\(\'[^\']+\',__FILE__\);(global\s*\$[^;]+;)+\s*(if\(!function_exists\(\'([^\']+)\'\)\){\s*function\s*[^\)]+\(\$[^,]+,\$[^=]+=\'\'\){\s*if\(empty\(\$[^\)]+\)\)\s*return\s*\'\';\s*\$[^=]+=base64_decode\(\$[^\)]+\);\s*if\(\$[^=]+==\'\'\)\s*return\s*\~\$[^;]+;\s*if\(\$[^=]+==\'-1\'\)\s*@[^\(]+\(\);\s*\$[^=]+=\$GLOBALS\[\'[^\']+\'\]\[\'[^\']+\'\]\(\$[^\)]+\);\s*\$[^=]+=\$GLOBALS\[\'[^\']+\'\]\[\'[^\']+\'\]\(\$[^,]+,\$[^,]+,\$[^\)]+\);\s*return\s*\$[^^]+\^\$[^;]+;\s*}}\s*)+(\$[^\[]+\["[^"]+"]=[^\(]+\(\'[^\']+\',\'[^\']*\'\);\s*)+(\$[^\[]+\[\'[^\']+\'\]=\$GLOBALS\[\'[^\']+\'\]\[\'[^\']+\'\]\([^\)]*\)+;\s*)+return\(eval\(\$[^\[]+\[\'[^\']+\'\]\)+;\s*\?>\s*#!/usr/bin/php\s*-q\s*((\s*[^\s]+)+)~msi', $str, $matches);
  10525. $find = $matches[0];
  10526. $res = $str;
  10527. $code = $matches[6];
  10528. $res = iconv('UTF-8', 'ASCII//IGNORE', $res);
  10529. preg_match('~\$GLOBALS\[\'[^\']+\'\]\[\'[^\']+\'\]\(\'([\da-f]{32})\'\);~msi', $res, $hash);
  10530. $hash = strrev($hash[1]);
  10531. preg_match_all('~\$GLOBALS\[\'[^\']+\'\]\[\'[^\']+\'\]\(\'([\d]{10})\'\)~msi', $res, $substr_offsets);
  10532. $substr_offsets = $substr_offsets[1];
  10533. $substr_offsets = array_map('strrev', $substr_offsets);
  10534. $substr_offsets = array_map('intval', $substr_offsets);
  10535. preg_match_all('~if\s*\(\!function_exists\(\'([^\']+)\'\)~msi', $res, $decoders);
  10536. $decoders = $decoders[1];
  10537. $var_array = [];
  10538. preg_match_all('~\$([^\[]{3,20})\["([^"]+)"\]=(?:' . $decoders[0] . '|' . $decoders[1] . ')\(\'([^\']*)\',\'([^\']*)\'\);~msi', $res, $vars, PREG_SET_ORDER);
  10539. $var_name = $vars[0][1];
  10540. foreach ($vars as $var) {
  10541. $var_array[$var[2]] = Helpers::OELoveDecoder($var[3], $var[4]);
  10542. $res = str_replace($var[0], '', $res);
  10543. }
  10544. $layer1 = substr($code, 0, $substr_offsets[3] + 96);
  10545. $layer1_dec = iconv('UTF-8', 'ASCII//IGNORE', gzuncompress(base64_decode($layer1)));
  10546. $code = str_replace($layer1, $layer1_dec, $code);
  10547. preg_match_all('~\$([^\[]{3,20})\["([^"]+)"\]=(?:' . $decoders[0] . '|' . $decoders[1] . ')\(\'([^\']*)\',\'([^\']*)\'\);~msi', $code, $vars, PREG_SET_ORDER);
  10548. foreach ($vars as $var) {
  10549. $var_array[$var[2]] = Helpers::OELoveDecoder($var[3], $var[4]);
  10550. $code = str_replace($var[0], '', $code);
  10551. }
  10552. $layer2_start = strpos($code, '?>') + 2;
  10553. $layer2 = substr($code, $layer2_start + $substr_offsets[2]);
  10554. $layer2_dec = iconv('UTF-8', 'ASCII//IGNORE', gzuncompress(base64_decode(str_rot13($layer2))));
  10555. $res = $layer2_dec;
  10556. foreach($var_array as $k => $v) {
  10557. $res = str_replace('$GLOBALS[\'' . $var_name . '\'][\'' . $k . '\'](', $v . '(', $res);
  10558. $res = str_replace('$GLOBALS[\'' . $var_name . '\'][\'' . $k . '\']', '\'' . $v . '\'', $res);
  10559. }
  10560. $res = preg_replace_callback('~(?:' . $decoders[0] . '|' . $decoders[1] . ')\(\'([^\']*)\',\'([^\']*)\'\)~msi', function ($m) {
  10561. return '\'' . Helpers::OELoveDecoder($m[1], $m[2]) . '\'';
  10562. }, $res);
  10563. $res = str_replace($find, $res, $str);
  10564. return $res;
  10565. }
  10566. private function deobfuscateEvalConcatVars($str)
  10567. {
  10568. preg_match('~((\$\w+="";\$\w+\s*\.=\s*"[^;]+;\s*)+)(?:="";)?(eval\((\s*(\$\w+)\s*\.)+\s*"([^"]+)(?:"\);)+)~msi', $str, $matches);
  10569. $find = $matches[0];
  10570. $res = $str;
  10571. $parts = [];
  10572. preg_match_all('~(\$\w+)="";\1\s*\.=\s*"([^"]+)"~msi', $matches[1], $matches1, PREG_SET_ORDER);
  10573. foreach($matches1 as $match) {
  10574. $parts[$match[1]] = stripcslashes(stripcslashes($match[2]));
  10575. }
  10576. $res = stripcslashes(stripcslashes($matches[3]));
  10577. foreach($parts as $k => $v) {
  10578. $res = str_replace($k, "'" . $v . "'", $res);
  10579. }
  10580. $res = preg_replace_callback('/[\'"]\s*?\.+\s*?[\'"]/smi', function($m) {
  10581. return '';
  10582. }, $res);
  10583. $res = str_replace($find, $res, $str);
  10584. return $res;
  10585. }
  10586. private function deobfuscateVarFuncsEval($str)
  10587. {
  10588. preg_match('~((\$\w+)\s*=\s*)(base64_decode\s*\(+|gzinflate\s*\(+|strrev\s*\(+|str_rot13\s*\(+|gzuncompress\s*\(+|convert_uudecode\s*\(+|urldecode\s*\(+|rawurldecode\s*\(+|htmlspecialchars_decode\s*\(+)+"([^"]+)"\)+(;\s*@?eval\(([\'"?>.\s]+)?\2\);)~', $str, $matches);
  10589. $find = $matches[0];
  10590. $res = $str;
  10591. $res = str_replace($matches[5], ');', $res);
  10592. $res = str_replace($matches[1], 'eval(', $res);
  10593. $res = str_replace($find, $res, $str);
  10594. return $res;
  10595. }
  10596. private function deobfuscateComments($str, $matches)
  10597. {
  10598. $find = $matches[0];
  10599. $res = preg_replace('~/\*\w+\*/~msi', '', $str);
  10600. $res = str_replace($find, $res, $str);
  10601. return $res;
  10602. }
  10603. private function deobfuscateStrrevVarEval($str)
  10604. {
  10605. preg_match('~(\$\w+=strrev\("[^"]+"\);)+eval\((\$\w+\()+"([^"]+)"\)+;~mis', $str, $matches);
  10606. $find = $matches[0];
  10607. $res = gzinflate(base64_decode($matches[3]));
  10608. $res = str_replace($find, $res, $str);
  10609. return $res;
  10610. }
  10611. private function deobfuscateAanKFM($str)
  10612. {
  10613. preg_match('~(\$\w+=(\w+)\(\'\d+\'\);\s*)+\$\w+=new\s\$\w+\(\2\(\'(\d+)\'\)+;error_reporting\(0\);eval\(\$\w+\(\$\w+->\$\w+\("([^"]+)"\)+;.+?function \2.+?return\s\$\w+;\s}~msi', $str, $matches);
  10614. $find = $matches[0];
  10615. $res = $str;
  10616. $key = Helpers::aanKFMDigitsDecode($matches[3]);
  10617. $res = Helpers::Xtea_decrypt($matches[4], $key);
  10618. $res = str_replace($find, $res, $str);
  10619. return $res;
  10620. }
  10621. private function deobfuscateEvalChars($str, $matches)
  10622. {
  10623. $find = $matches[0];
  10624. $res = $str;
  10625. while(preg_match_all('~(?:@eval((?:\(\$[0O]+\[[\'"]\w+[\'"]\])+)\("([^"]+)"\)+;)|("\)\?\$[O0]+)~msi', $res, $matches, PREG_SET_ORDER)) {
  10626. $match = $matches[0];
  10627. if (isset($matches[1])) $match = $matches[1];
  10628. $count = ($match[1] !== '') ? substr_count($match[1], '(') : 0;
  10629. if ($count == 2) {
  10630. $res = gzinflate(base64_decode($match[2]));
  10631. } else if ($count == 3) {
  10632. $res = gzinflate(base64_decode(str_rot13($match[2])));
  10633. }
  10634. if (isset($match[3]) && ($match[3] !== '')) {
  10635. $res = preg_replace_callback('~(\$[0O]+\["\w+"\]\()+"([^"]+)"\)+;?~msi', function($m) {
  10636. return gzinflate(base64_decode(str_rot13($m[2])));
  10637. }, $res);
  10638. }
  10639. }
  10640. $res = str_replace($find, $res, $str);
  10641. return $res;
  10642. }
  10643. private function deobfuscateGlobalsBase64($str)
  10644. {
  10645. preg_match('~<\?php\s+((\$GLOBALS\[\s*[\'"]\w+[\'"]\s*\])\s*=\s*base64_decode\("([^"]*)"\);)+\s*\?>(<\?php\s.+\2.+exit;\s}\sfunction\s\w+\(\)\s{\sreturn\sarray\(\s\'favicon\'\s=>\s\'[^\']+\',\s+\'sprites\'\s=>\s\'[^\']+\',\s\);\s})~msi', $str, $matches);
  10646. $find = $matches[0];
  10647. $vars = [];
  10648. preg_match_all('~(\$GLOBALS\[\s*[\'"]\w+[\'"]\s*\])\s*=\s*base64_decode\("([^"]*)"\);~msi', $matches[0], $matches1, PREG_SET_ORDER);
  10649. foreach($matches1 as $match) {
  10650. $vars[$match[1]] = base64_decode($match[2]);
  10651. }
  10652. $code = $matches[4];
  10653. foreach ($vars as $var => $value) {
  10654. $code = str_replace($var . '(', $value . '(', $code);
  10655. $code = str_replace($var, "'" . $value . "'", $code);
  10656. }
  10657. $res = $code;
  10658. $res = str_replace($find, $res, $str);
  10659. return $res;
  10660. }
  10661. private function deobfuscateEvalReturn($str, $matches)
  10662. {
  10663. $find = $matches[0];
  10664. $res = stripcslashes(base64_decode($matches[2]));
  10665. $res = str_replace($find, $res, $str);
  10666. return $res;
  10667. }
  10668. private function deobfuscateQibosoft($str)
  10669. {
  10670. preg_match('~\$\w+=__FILE__;\$\w+=fopen\(\$\w+,\'rb\'\);fread\(\$\w+,(\d+)\);\$\w+=explode\("\\\\t",base64_decode\(fread\(\$\w+,(\d+)\)+;\$\w+=\$\w+\[[\d+]\];[\$l1=\d{}\.;\(\)\[\]]+eval\(\$\w+\(\'([^\']+)\'\)+;\s*return\s*;\?>[\w=\+]+~msi', $str, $matches);
  10671. $find = $matches[0];
  10672. $res = $str;
  10673. $hangs = 15;
  10674. $obfPHP = explode('?>', $str);
  10675. $obfPHP = $obfPHP[1];
  10676. preg_match('~eval\(\$\w+\(\'([^\']+)\'\)+;~msi', $res, $temp);
  10677. $res = str_replace($temp[0], base64_decode($temp[1]), $res);
  10678. $offset = $matches[2];
  10679. while (preg_match('~\$\w+\(\$\w+,(\d+)\);\s*eval\(\$\w+\(\$\w+\(\$\w+,(\d+)\)+;~msi', $res, $temp2) && $hangs--) {
  10680. $offset += $temp2[1];
  10681. $decode_loop = base64_decode(substr($obfPHP, $offset, $temp2[2]));
  10682. $offset += $temp2[2];
  10683. if (preg_match('~eval\(\$\w+\(\'([^\']+)\'\)+;~msi', $decode_loop, $temp)) {
  10684. $res = str_replace($temp2[0], base64_decode($temp[1]), $res);
  10685. } else {
  10686. $res = $decode_loop;
  10687. }
  10688. }
  10689. $res = str_replace($find, $res, $str);
  10690. return $res;
  10691. }
  10692. private function deobfuscateUd64($str)
  10693. {
  10694. preg_match('~(\$ud64_c[o0]m="[\\\\0-9a-z\."]+;)+\$\w+=(\$ud64_c[o0]m\()+"([^"]+)"\)+;@eval\(\$ud64_c[o0]m\(\'[^\']+\'\)+;~msi', $str, $matches);
  10695. $find = $matches[0];
  10696. $res = gzinflate(convert_uudecode(base64_decode(gzinflate(base64_decode(str_rot13($matches[3]))))));
  10697. $res = str_replace($find, $res, $str);
  10698. return $res;
  10699. }
  10700. private function deobfuscateCustom1($str)
  10701. {
  10702. preg_match('~\$\w+="([^"]+)";\$l+=0;\$l+=\'base64_decode\';\$l+=0;eval\(.+?;eval\(\$l+\);return;~msi', $str, $matches);
  10703. $find = $matches[0];
  10704. $res = Helpers::someDecoder3($matches[1]);
  10705. $res = str_replace($find, $res, $str);
  10706. return $res;
  10707. }
  10708. private function deobfuscateCustom2($str, $matches)
  10709. {
  10710. $find = $matches[0];
  10711. $key = $matches[2];
  10712. $var = $matches[3];
  10713. preg_match_all('~\\' . $var . '\[\d+\]\s*=\s*"([^"]+)";~msi', $str, $matches);
  10714. $res = base64_decode(Helpers::someDecoder4($matches[1], $key));
  10715. $res = str_replace($find, $res, $str);
  10716. return $res;
  10717. }
  10718. private function deobfuscateLockIt2($str, $matches)
  10719. {
  10720. $find = $matches[0];
  10721. $res = $matches[1];
  10722. if(strpos($str, '$_X="') !== false && strpos($res, '\\x') !== false) {
  10723. $res = stripcslashes($res);
  10724. }
  10725. if (preg_match_all('~\$[_\w]+\.=[\'"]([\w\+\/=]+)[\'"];~', $matches[0], $concatVars)) {
  10726. foreach ($concatVars[1] as $concatVar) {
  10727. $res .= $concatVar;
  10728. }
  10729. }
  10730. $res = base64_decode($res);
  10731. $res = strtr($res, $matches[2], $matches[3]);
  10732. $res = str_replace($find, $res, $str);
  10733. return $res;
  10734. }
  10735. private function deobfuscateAnaski($str, $matches)
  10736. {
  10737. $find = $matches[0];
  10738. $res = gzinflate(str_rot13(base64_decode($matches[2])));
  10739. $res = strtr($res, $matches[5], $matches[6]);
  10740. return $res;
  10741. }
  10742. private function deobfuscateFuncs($str, $matches)
  10743. {
  10744. $find = $matches[0];
  10745. $funcs = [];
  10746. $payload = $matches[7];
  10747. $var = $matches[6];
  10748. $res = $str;
  10749. $res = preg_replace_callback('~function\s*(\w+)\((\$\w+)\){\s*return\s*(\w+)\(\2(,\d+)?\);}\s*~msi', function($matches2) use (&$funcs){
  10750. $funcs[$matches2[1]] = $matches2[3];
  10751. return '';
  10752. }, $res);
  10753. foreach ($funcs as $k => $v) {
  10754. $res = str_replace($k . '(', $v . '(', $res);
  10755. }
  10756. $res = str_replace($var . '="' . $payload . '";', '', $res);
  10757. $res = str_replace($var, '"' . $payload . '"', $res);
  10758. $res = str_replace($find, $res, $str);
  10759. return $res;
  10760. }
  10761. private function deobfuscateSubstr($str)
  10762. {
  10763. preg_match('~\$\w+=0;(\$GLOBALS\[\'\w+\'\])\s*=\s*\'([^\']+)\';\s*(\$\w+)=pack\(\'H\*\',substr\(\1,\s*([-\d]+)\)\);if\s*\(!function_exists\(\'(\w+)\'\)\){function\s*\5\(\$\w+,\s*\$\w+\){\$\w+=\1;\s*\$d=pack\(\'H\*\',substr\(\1,\s*\4\)\);\s*return\s*\$\w+\(substr\(\$\w+,\s*\$\w+,\s*\$\w+\)\);}};eval\(\3\(\'([^\']+)\'\)\);~msi', $str, $matches);
  10764. $find = $matches[0];
  10765. $substr_array = $matches[2];
  10766. $offset = intval($matches[4]);
  10767. $func = $matches[5];
  10768. $eval = pack('H*',substr($substr_array, $offset));
  10769. $res = Helpers::isSafeFunc($eval) ? @$eval($matches[6]) : $matches[6];
  10770. $res = preg_replace_callback('~' . $func . '\(([-\d]+),\s*([-\d]+)\)~mis', function ($matches) use ($eval, $substr_array) {
  10771. $res = Helpers::isSafeFunc($eval) ? @$eval(substr($substr_array, $matches[1], $matches[2])) : $matches[0];
  10772. return '\'' . $res . '\'';
  10773. }, $res);
  10774. $res = str_replace($find, $res, $str);
  10775. return $res;
  10776. }
  10777. private function deobfuscatePHPJiaMi($str, $matches)
  10778. {
  10779. $find = $matches[0];
  10780. $bin = bin2hex($str);
  10781. preg_match('~6257513127293b24[a-z0-9]{2,30}3d24[a-z0-9]{2,30}2827([a-z0-9]{2,30})27293b~', $bin, $hash);
  10782. preg_match('~2827([a-z0-9]{2})27293a24~', $bin, $rand);
  10783. $hash = hex2bin($hash[1]);
  10784. $rand = hex2bin($rand[1]);
  10785. $res = Helpers::PHPJiaMi_decoder(substr($matches[3], 0, -46), $hash, $rand);
  10786. $res = str_rot13(@gzuncompress($res) ? @gzuncompress($res) : $res);
  10787. $res = str_replace($find, $res, $str);
  10788. return $res;
  10789. }
  10790. private function deobfuscateEvalIReplace($str, $matches)
  10791. {
  10792. $find = $matches[0];
  10793. $res = $str;
  10794. $res = base64_decode($matches[3]);
  10795. $res = str_replace($find, $res, $str);
  10796. return $res;
  10797. }
  10798. private function deobfuscateErrorHandler($str)
  10799. {
  10800. preg_match('~(\$\w+)="[^"]+";\s*(\$\w+)=str_ireplace\("[^"]+","",\1\);(\$\w+)\s*=\s*"([^"]+)";\s*function\s*(\w+)\((\$\w+,?)+\){\s*(\$\w+)=\s*create_function\(\'\',\$\w+\);\s*array_map\(\7,array\(\'\'\)+;\s*}\s*set_error_handler\(\'\5\'\);(\$\w+)=\2\(\3\);user_error\(\8,E_USER_ERROR\);\s*if\s*.+?}~msi', $str, $matches);
  10801. $find = $matches[0];
  10802. $res = $str;
  10803. $res = base64_decode($matches[4]);
  10804. $res = str_replace($find, $res, $str);
  10805. return $res;
  10806. }
  10807. private function deobfuscateStrtoupper($str, $matches)
  10808. {
  10809. $find = $matches[0];
  10810. $res = $str;
  10811. $alph = $matches[2];
  10812. $var = $matches[1];
  10813. $res = str_replace("{$var}=\"{$alph}\";", '', $res);
  10814. for ($i = 0, $iMax = strlen($alph); $i < $iMax; $i++) {
  10815. $res = str_replace($var . '[' . $i . '].', "'" . $alph[$i] . "'", $res);
  10816. $res = str_replace($var . '[' . $i . ']', "'" . $alph[$i] . "'", $res);
  10817. }
  10818. $res = str_replace("''", '', $res);
  10819. $res = str_replace("' . '", '', $res);
  10820. $res = str_replace("' '", '', $res);
  10821. preg_match('~(\$\w+)\s*=\s*strtoupper\s*\(\s*\'(\w+)\'\s*\)\s*;~msi', $res, $matches);
  10822. $matches[2] = strtoupper($matches[2]);
  10823. $res = str_replace($matches[0], '', $res);
  10824. $res = preg_replace_callback('~\${\s*\\'. $matches[1] .'\s*}~msi', function ($params) use ($matches) {
  10825. return '$' . $matches[2];
  10826. }, $res);
  10827. $res = str_replace($find, $res, $str);
  10828. return $res;
  10829. }
  10830. private function deobfuscateEval2($str)
  10831. {
  10832. preg_match('~(\$\w+)\s*=\s*"((?:[^"]|(?<=\\\\)")*)";(\$\w+)\s*=\s*(\1\[\d+\]\.?)+;(\$\w+)\s*=\s*[^;]+;(\$\w+)\s*=\s*"[^"]+";\$\w+\s*=\s*\5\."([^"]+)"\.\6;\3\((\1\[\d+\]\.?)+,\s*\$\w+\s*,"\d+"\);~smi', $str, $matches);
  10833. $res = $str;
  10834. $find = $matches[0];
  10835. $alph = $matches[2];
  10836. $var = $matches[1];
  10837. for ($i = 0, $iMax = strlen($alph); $i < $iMax; $i++) {
  10838. $res = str_replace($var . '[' . $i . '].', "'" . $alph[$i] . "'", $res);
  10839. $res = str_replace($var . '[' . $i . ']', "'" . $alph[$i] . "'", $res);
  10840. }
  10841. $res = str_replace("''", '', $res);
  10842. $res = gzinflate(base64_decode(substr($matches[7], 1, -1)));
  10843. $res = str_replace($find, $res, $str);
  10844. return $res;
  10845. }
  10846. private function deobfuscateEvalEregReplace($str, $matches)
  10847. {
  10848. $find = $matches[0];
  10849. $res = base64_decode($matches[2]);
  10850. preg_match_all('~(\$\w+)\s*=\s*ereg_replace\("([^"]+)","([^"]+)",\1\);~smi', $str, $matches, PREG_SET_ORDER);
  10851. foreach ($matches as $match) {
  10852. $res = preg_replace('/' . $match[2] . '/', $match[3], $res);
  10853. }
  10854. $res = base64_decode($res);
  10855. $res = str_replace($find, $res, $str);
  10856. return $res;
  10857. }
  10858. private function deobfuscateStrreplace($str, $matches)
  10859. {
  10860. $find = $matches[0];
  10861. $res = $str;
  10862. $str_replace = '';
  10863. $base64_decode = '';
  10864. $layer = '';
  10865. preg_match_all('~(\$\w+)\s*=\s*\"([^"]+)\"\s*;~msi', $str, $matches, PREG_SET_ORDER);
  10866. foreach ($matches as $i => $match) {
  10867. $vars[$match[1]] = $match[2];
  10868. }
  10869. $res = preg_replace_callback('~(\$\w+)\s*=\s*str_replace\("(\w+)",\s*"",\s*"(\w+)"\)~msi',
  10870. function ($matches) use (&$vars, &$str_replace) {
  10871. $vars[$matches[1]] = str_replace($matches[2], "", $matches[3]);
  10872. if ($vars[$matches[1]] == 'str_replace') {
  10873. $str_replace = $matches[1];
  10874. }
  10875. $tmp = $matches[1] . ' = "' . $vars[$matches[1]] . '"';
  10876. return $tmp;
  10877. }, $res);
  10878. $res = preg_replace_callback('~(\$\w+)\s*=\s*\\' . $str_replace . '\("(\w+)",\s*"",\s*"(\w+)"\)~msi',
  10879. function ($matches) use (&$vars, &$base64_decode) {
  10880. $vars[$matches[1]] = str_replace($matches[2], "", $matches[3]);
  10881. if ($vars[$matches[1]] == 'base64_decode') {
  10882. $base64_decode = $matches[1];
  10883. }
  10884. $tmp = $matches[1] . ' = "' . $vars[$matches[1]] . '"';
  10885. return $tmp;
  10886. }, $res);
  10887. $res = preg_replace_callback('~\\' . $base64_decode . '\(\\' . $str_replace . '\("(\w+)",\s*"",\s*([\$\w\.]+)\)~msi',
  10888. function ($matches) use (&$vars, &$layer) {
  10889. $tmp = explode('.', $matches[2]);
  10890. foreach ($tmp as &$item) {
  10891. $item = $vars[$item];
  10892. }
  10893. $tmp = implode('', $tmp);
  10894. $layer = base64_decode(str_replace($matches[1], "", $tmp));
  10895. return $matches[0];
  10896. }, $res);
  10897. $res = $layer;
  10898. $res = str_replace($find, $res, $str);
  10899. return $res;
  10900. }
  10901. private function deobfuscateSeolyzer($str, $matches)
  10902. {
  10903. $find = $matches[0];
  10904. $res = $str;
  10905. $vars = array();
  10906. $base64_decode = '';
  10907. $layer = '';
  10908. $gzuncompress = '';
  10909. preg_match_all('~(\$\w+)\s*=\s*\'([^\']+)\'\s*;~msi', $str, $matches, PREG_SET_ORDER);
  10910. foreach ($matches as $i => $match) {
  10911. $vars[$match[1]] = $match[2];
  10912. if ($match[2] == 'base64_decode') {
  10913. $base64_decode = $match[1];
  10914. }
  10915. }
  10916. $res = preg_replace_callback('~\s*=\s*\\' . $base64_decode . '\((\$\w+)\)~msi', function ($matches) use (&$vars, &$gzuncompress, &$layer) {
  10917. if (isset($vars[$matches[1]])) {
  10918. $tmp = base64_decode($vars[$matches[1]]);
  10919. if ($tmp == 'gzuncompress') {
  10920. $gzuncompress = $matches[1];
  10921. }
  10922. $vars[$matches[1]] = $tmp;
  10923. $tmp = " = '{$tmp}'";
  10924. } else {
  10925. $tmp = $matches[1];
  10926. }
  10927. return $tmp;
  10928. }, $res);
  10929. if ($gzuncompress !== '') {
  10930. $res = preg_replace_callback('~\\' . $gzuncompress . '\(\s*\\' . $base64_decode . '\((\$\w+)\)~msi',
  10931. function ($matches) use (&$vars, $gzuncompress, &$layer) {
  10932. if (isset($vars[$matches[1]])) {
  10933. $tmp = gzuncompress(base64_decode($vars[$matches[1]]));
  10934. $layer = $matches[1];
  10935. $vars[$matches[1]] = $tmp;
  10936. $tmp = "'{$tmp}'";
  10937. } else {
  10938. $tmp = $matches[1];
  10939. }
  10940. return $tmp;
  10941. }, $res);
  10942. $res = $vars[$layer];
  10943. } else if (preg_match('~\$\w+\(\s*\\' . $base64_decode . '\((\$\w+)\)~msi', $res)) {
  10944. $res = preg_replace_callback('~\$\w+\(\s*\\' . $base64_decode . '\((\$\w+)\)~msi',
  10945. function ($matches) use (&$vars, &$layer) {
  10946. if (isset($vars[$matches[1]])) {
  10947. $tmp = base64_decode($vars[$matches[1]]);
  10948. $layer = $matches[1];
  10949. $vars[$matches[1]] = $tmp;
  10950. $tmp = "'{$tmp}'";
  10951. } else {
  10952. $tmp = $matches[1];
  10953. }
  10954. return $tmp;
  10955. }, $res);
  10956. $res = $vars[$layer];
  10957. }
  10958. $res = str_replace($find, $res, $str);
  10959. return $res;
  10960. }
  10961. private function deobfuscateCreateFunc($str, $matches)
  10962. {
  10963. $find = $matches[0];
  10964. $res = ' ?>' . gzinflate(base64_decode($matches[3]));
  10965. $res = str_replace($find, $res, $str);
  10966. return $res;
  10967. }
  10968. private function deobfuscateCreateFuncConcat($str, $matches)
  10969. {
  10970. $find = $matches[0];
  10971. $res = $str;
  10972. $vars = array();
  10973. $res = preg_replace_callback('~(?|(\$\w+)\s*=\s*(([base64_decode\'\.\s]+)|([eval\'\.\s]+)|([create_function\'\.\s]+)|([stripslashes\'\.\s]+)|([gzinflate\'\.\s]+)|([strrev\'\.\s]+)|([str_rot13\'\.\s]+)|([gzuncompress\'\.\s]+)|([urldecode\'\.\s]+)([rawurldecode\'\.\s]+));)~', function($matches) use (&$vars) {
  10974. $tmp = str_replace("' . '", '', $matches[0]);
  10975. $tmp = str_replace("'.'", '', $tmp);
  10976. $value = str_replace("' . '", '', $matches[2]);
  10977. $value = str_replace("'.'", '', $value);
  10978. $vars[$matches[1]] = substr($value, 1, -1);
  10979. return $tmp;
  10980. }, $res);
  10981. foreach($vars as $key => $var) {
  10982. $res = str_replace($key, $var, $res);
  10983. $res = str_replace($var . " = '" . $var . "';", '', $res);
  10984. $res = str_replace($var . ' = "";', '', $res);
  10985. }
  10986. $res = str_replace($find, $res, $str);
  10987. return $res;
  10988. }
  10989. private function deobfuscateEvalWrapVar($str, $matches)
  10990. {
  10991. $find = $matches[0];
  10992. $res = $str;
  10993. $vars = array();
  10994. $res = preg_replace_callback('~(?|(\$\w+)\s*=\s*(([base64_decode"\'\.\s]+)|([eval"\'\.\s]+)|([create_function"\'\.\s]+)|([stripslashes"\'\.\s]+)|([gzinflate"\'\.\s]+)|([strrev"\'\.\s]+)|([str_rot13"\'\.\s]+)|([gzuncompress"\'\.\s]+)|([urldecode"\'\.\s]+)([rawurldecode"\'\.\s]+));)~msi', function($matches) use (&$vars) {
  10995. $tmp = str_replace("' . '", '', $matches[0]);
  10996. $tmp = str_replace("'.'", '', $tmp);
  10997. $value = str_replace("' . '", '', $matches[2]);
  10998. $value = str_replace("'.'", '', $value);
  10999. $vars[$matches[1]] = substr($value, 1, -1);
  11000. return $tmp;
  11001. }, $res);
  11002. $temp = substr($res, strpos($res, '@eval'));
  11003. $temp1 = $temp;
  11004. foreach($vars as $key => $var) {
  11005. $temp = str_replace($key, $var, $temp);
  11006. }
  11007. $res = str_replace($temp1, $temp, $res);
  11008. $res = str_replace($find, $res, $str);
  11009. return $res;
  11010. }
  11011. private function deobfuscateForEach($str, $matches)
  11012. {
  11013. $find = $matches[0];
  11014. $alph = $matches[3];
  11015. $vars = array();
  11016. $res = $str;
  11017. preg_replace('~\s*/\*\w+\*/\s*~msi', '', $res);
  11018. $res = preg_replace_callback('~foreach\(\[([\d,]+)\]\s*as\s*\$\w+\)\s*\{\s*(\$\w+)\s*\.=\s*\$\w+\[\$\w+\];\s*\}~mis', function($matches) use ($alph, &$vars) {
  11019. $chars = explode(',', $matches[1]);
  11020. $value = '';
  11021. foreach ($chars as $char) {
  11022. $value .= $alph[$char];
  11023. }
  11024. $vars[$matches[2]] = $value;
  11025. return "{$matches[2]} = '{$value}';";
  11026. }, $res);
  11027. foreach($vars as $key => $var) {
  11028. $res = str_replace($key, $var, $res);
  11029. $res = str_replace($var . " = '" . $var . "';", '', $res);
  11030. $res = str_replace($var . ' = "";', '', $res);
  11031. }
  11032. preg_match('~(\$\w+)\s*=\s*strrev\([create_function\.\']+\);~ms', $res, $matches);
  11033. $res = str_replace($matches[0], '', $res);
  11034. $res = str_replace($matches[1], 'create_function', $res);
  11035. $res = str_replace($find, $res, $str);
  11036. return $res;
  11037. }
  11038. private function deobfuscateSubst2($str)
  11039. {
  11040. preg_match('~(\$\w+)="([^"])+(.{0,70}\1.{0,400})+;\s*}~msi', $str, $matches);
  11041. $find = $matches[0];
  11042. $res = $str;
  11043. preg_match('~(\$\w+)="(.+?)";~msi', $str, $matches);
  11044. $alph = stripcslashes($matches[2]);
  11045. $var = $matches[1];
  11046. for ($i = 0, $iMax = strlen($alph); $i < $iMax; $i++) {
  11047. $res = str_replace($var . '[' . $i . '].', "'" . $alph[$i] . "'", $res);
  11048. $res = str_replace($var . '[' . $i . ']', "'" . $alph[$i] . "'", $res);
  11049. }
  11050. $res = str_replace("''", '', $res);
  11051. preg_match_all('~(\$GLOBALS\[\'\w{1,40}\'\])\s*=\s*\'(([^\'\\\\]++|\\\\.)*)\';~msi', $res, $matches, PREG_SET_ORDER);
  11052. foreach ($matches as $index => $var) {
  11053. $res = str_replace($var[1], $var[2], $res);
  11054. $res = str_replace($var[2] . " = '" . $var[2] . "';", '', $res);
  11055. }
  11056. $res = str_replace($find, $res, $str);
  11057. return $res;
  11058. }
  11059. private function deobfuscateAssert($str, $matches)
  11060. {
  11061. $find = $matches[0];
  11062. $res = base64_decode($matches[3]);
  11063. $res = str_replace($find, $res, $str);
  11064. return $res;
  11065. }
  11066. private function deobfuscateUrlDecode2($str)
  11067. {
  11068. preg_match('~(\$[\w{1,40}]+)=(urldecode|base64_decode)\(?[\'"]([\w+%=-]+)[\'"]\);(\s*\$\w+\.?=(\$\w+\{\d+\}\s*[\.;]?\s*)+)+((\$\w+=["\']([^\'"]+)[\'"];\s*eval\(\'\?>\'\.[\$\w\(\)\*,\s]+);|(eval\(\$\w+\([\'"]([^\'"]+)[\'"]\)+;))~msi', $str, $matches);
  11069. $find = $matches[0];
  11070. $res = $str;
  11071. if (isset($matches[10])) {
  11072. $res = base64_decode($matches[10]);
  11073. }
  11074. if (preg_match('~\$\w+=["\']([^\'"]+)[\'"];\s*eval\(\'\?>\'\.[\$\w\(\)\*,\s]+;~msi', $res, $matches)) {
  11075. $res = base64_decode(strtr(substr($matches[1], 52*2), substr($matches[1], 52, 52), substr($matches[1], 0, 52)));
  11076. }
  11077. if (preg_match('~function\s*(\w+)\(\$\w+\)[\w{\$=\s*();<+\[\]\-]+\}\s+return[\$\s\w;]+}eval\(\1\("([\w\/+=]+)?"\)\);~', $res, $match)) {
  11078. $res = gzinflate(base64_decode($match[2]));
  11079. for ($i=0; $i < strlen($res); $i++)
  11080. {
  11081. $res[$i] = chr(ord($res[$i])-1);
  11082. }
  11083. $res = str_replace($find, $res, $str);
  11084. return $res;
  11085. }
  11086. $res = str_replace($find, ' ?>' . $res, $str);
  11087. return $res;
  11088. }
  11089. private function deobfuscatePHPMyLicense($str)
  11090. {
  11091. preg_match('~\$\w+\s*=\s*base64_decode\s*\([\'"][^\'"]+[\'"]\);\s*if\s*\(!function_exists\s*\("rotencode"\)\).{0,1000}eval\s*\(\$\w+\s*\(base64_decode\s*\([\'"]([^"\']+)[\'"]\)+;~msi', $str, $matches);
  11092. $find = $matches[0];
  11093. $res = $str;
  11094. $hang = 10;
  11095. while(preg_match('~eval\s*\(\$\w+\s*\(base64_decode\s*\([\'"]([^"\']+)[\'"]\)+;~msi', $res, $matches) && $hang--) {
  11096. $res = gzinflate(base64_decode($matches[1]));
  11097. }
  11098. $res = str_replace($find, $res, $str);
  11099. return $res;
  11100. }
  11101. private function deobfuscateEdoced_46esab($str)
  11102. {
  11103. preg_match('~(\$\w+)=[\'"]([^"\']+)[\'"];(\$\w+)=strrev\(\'edoced_46esab\'\);eval\(\3\([\'"]([^\'"]+)[\'"]\)+;~msi', $str, $matches);
  11104. $find = $matches[0];
  11105. $res = '';
  11106. $decoder = base64_decode($matches[4]);
  11107. preg_match('~(\$\w+)=base64_decode\(\$\w+\);\1=strtr\(\1,[\'"]([^\'"]+)[\'"],[\'"]([^\'"]+)[\'"]\);~msi', $decoder, $matches2);
  11108. $res = base64_decode($matches[2]);
  11109. $res = strtr($res, $matches2[2], $matches2[3]);
  11110. $res = str_replace($find, $res, $str);
  11111. return $res;
  11112. }
  11113. private function deobfuscateEdoced_46esab_etalfnizg($str, $matches)
  11114. {
  11115. return gzinflate(base64_decode($matches[3]));
  11116. }
  11117. private function deobfuscateEvalVarVar($str)
  11118. {
  11119. preg_match('~\$\{"GLOBALS"\}\[[\'"](\w+)[\'"]\]=["\'](\w+)[\'"];\$\{"GLOBALS"\}\[[\'"](\w+)[\'"]\]=["\']\2[\'"];(\${\$\{"GLOBALS"\}\[[\'"]\3[\'"]\]})=[\'"]([^\'"]+)[\'"];eval.{10,50}?(\$\{\$\{"GLOBALS"\}\[[\'"]\1[\'"]\]\})\)+;~msi', $str, $matches);
  11120. $find = $matches[0];
  11121. $res = str_replace($matches[4], '$' . $matches[2], $str);
  11122. $res = str_replace($matches[6], '$' . $matches[2], $res);
  11123. $res = str_replace($find, $res, $str);
  11124. return $res;
  11125. }
  11126. private function deobfuscateEscapes($str, $matches)
  11127. {
  11128. $find = $matches[0];
  11129. $res = stripcslashes($str);
  11130. $res = str_replace($find, $res, $str);
  11131. return $res;
  11132. }
  11133. private function deobfuscateparenthesesString($str)
  11134. {
  11135. $hangs = 5;
  11136. $res = $str;
  11137. $find = '';
  11138. while (preg_match('~for\((\$\w+)=\d+,(\$\w+)=\'([^\$]+)\',(\$\w+)=\'\';@?ord\(\2\[\1\]\);\1\+\+\)\{if\(\1<\d+\)\{(\$\w+)\[\2\[\1\]\]=\1;\}else\{\$\w+\.\=@?chr\(\(\5\[\2\[\1\]\]<<\d+\)\+\(\5\[\2\[\+\+\1\]\]\)\);\}\}\s*.{0,500}eval\(\4\);(if\(isset\(\$_(GET|REQUEST|POST|COOKIE)\[[\'"][^\'"]+[\'"]\]\)\)\{[^}]+;\})?~msi', $res, $matches) && $hangs--) {
  11139. if($hangs == 4) {
  11140. $find = $matches[0];
  11141. }
  11142. $res = '';
  11143. $temp = array();
  11144. $matches[3] = stripcslashes($matches[3]);
  11145. for($i=0, $iMax = strlen($matches[3]); $i < $iMax; $i++)
  11146. {
  11147. if($i < 16) $temp[$matches[3][$i]] = $i;
  11148. else $res .= @chr(($temp[$matches[3][$i]]<<4) + ($temp[$matches[3][++$i]]));
  11149. }
  11150. }
  11151. if(!isset($matches[6])) {
  11152. //$xor_key = 'SjJVkE6rkRYj';
  11153. $xor_key = $res^"\n//adjust sy"; //\n//adjust system variables";
  11154. $res = $res ^ substr(str_repeat($xor_key, (strlen($res) / strlen($xor_key)) + 1), 0, strlen($res));
  11155. }
  11156. if(substr($res,0,12)=="\n//adjust sy") {
  11157. $res = str_replace($find, $res, $str);
  11158. return $res;
  11159. } else return $str;
  11160. }
  11161. private function deobfuscateEvalInject($str, $matches)
  11162. {
  11163. $res = $str;
  11164. $find = $matches[0];
  11165. $alph = $matches[2];
  11166. for ($i = 0, $iMax = strlen($alph); $i < $iMax; $i++) {
  11167. $res = str_replace($matches[1] . '[' . $i . '].', "'" . $alph[$i] . "'", $res);
  11168. $res = str_replace($matches[1] . '[' . $i . ']', "'" . $alph[$i] . "'", $res);
  11169. }
  11170. $res = str_replace("''", '', $res);
  11171. $res = str_replace("' '", '', $res);
  11172. $res = str_replace($find, $res, $str);
  11173. return $res;
  11174. }
  11175. private function deobfuscateWebshellObf($str)
  11176. {
  11177. $res = $str;
  11178. preg_match('~function\s*(\w{1,40})\s*\(\s*(\$\w{1,40})\s*,\s*(\$\w{1,40})\s*\)\s*\{\s*(\$\w{1,40})\s*=\s*str_rot13\s*\(\s*gzinflate\s*\(\s*str_rot13\s*\(\s*base64_decode\s*\(\s*[\'"]([^\'"]*)[\'"]\s*\)\s*\)\s*\)\s*\)\s*;\s*(if\s*\(\s*\$\w+\s*==[\'"][^\'"]*[\'"]\s*\)\s*\{\s*(\$\w{1,40})\s*=(\$\w+[\{\[]\d+[\}\]]\.?)+;return\s*(\$\w+)\(\3\);\s*\}\s*else\s*)+\s*if\s*\(\s*\$\w+\s*==[\'"][^\'"]*[\'"]\s*\)\s*\{\s*return\s*eval\(\3\);\s*\}\s*\};\s*(\$\w{1,40})\s*=\s*[\'"][^\'"]*[\'"];(\s*\10\([\'"][^\'"]*[\'"],)+\s*[\'"]([^\'"]*)[\'"]\s*\)+;~msi',$str, $matches);
  11179. $find = $matches[0];
  11180. $alph = str_rot13(gzinflate(str_rot13(base64_decode($matches[5]))));
  11181. for ($i = 0, $iMax = strlen($alph); $i < $iMax; $i++) {
  11182. $res = str_replace($matches[4] . '{' . $i . '}.', "'" . $alph[$i] . "'", $res);
  11183. $res = str_replace($matches[4] . '{' . $i . '}', "'" . $alph[$i] . "'", $res);
  11184. }
  11185. $res = str_replace("''", '', $res);
  11186. $res = base64_decode(gzinflate(str_rot13(convert_uudecode(gzinflate(base64_decode(strrev($matches[12])))))));
  11187. $res = str_replace($find, $res, $str);
  11188. return $res;
  11189. }
  11190. private function deobfuscateXorFName($str, $matches)
  11191. {
  11192. $find = $matches[0];
  11193. $xored = rawurldecode($matches[3]);
  11194. $xor_key = $xored ^ 'if (!defined(';
  11195. $php = $xored ^ substr(str_repeat($xor_key, (strlen($matches[3]) / strlen($xor_key)) + 1), 0, strlen($matches[3]));
  11196. preg_match('~\$\w{1,40}\s*=\s*((\'[^\']+\'\s*\.?\s*)+);\s*\$\w+\s*=\s*Array\(((\'\w\'=>\'\w\',?\s*)+)\);~msi', $php, $matches);
  11197. $matches[1] = str_replace(array(" ", "\r", "\n", "\t", "'.'"), '', $matches[1]);
  11198. $matches[3] = str_replace(array(" ", "'", ">"), '', $matches[3]);
  11199. $temp = explode(',', $matches[3]);
  11200. $array = array();
  11201. foreach ($temp as $value) {
  11202. $temp = explode("=", $value);
  11203. $array[$temp[0]] = $temp[1];
  11204. }
  11205. $res = '';
  11206. for ($i=0, $iMax = strlen($matches[1]); $i < $iMax; $i++) {
  11207. $res .= isset($array[$matches[1][$i]]) ? $array[$matches[1][$i]] : $matches[1][$i];
  11208. }
  11209. $res = substr(rawurldecode($res), 1, -2);
  11210. $res = str_replace($find, $res, $str);
  11211. return $res;
  11212. }
  11213. private function deobfuscateSubstCreateFunc($str)
  11214. {
  11215. preg_match('~(\$\w{1,40})=\'(([^\'\\\\]|\\\\.)*)\';\s*((\$\w{1,40})=(\1\[\d+].?)+;\s*)+(\$\w{1,40})=\'\';\s*(\$\w{1,40})\(\7,\$\w{1,40}\.\"([^\"]+)\"\.\$\w{1,40}\.\5\);~msi', $str, $matches);
  11216. $find = $matches[0];
  11217. $php = base64_decode($matches[9]);
  11218. preg_match('~(\$\w{1,40})=(\$\w{1,40})\("([^\']+)"\)~msi', $php, $matches);
  11219. $matches[3] = base64_decode($matches[3]);
  11220. $php = '';
  11221. for ($i = 1, $iMax = strlen($matches[3]); $i < $iMax; $i++) {
  11222. if ($i % 2) {
  11223. $php .= substr($matches[3], $i, 1);
  11224. }
  11225. }
  11226. $php = str_replace($find, $php, $str);
  11227. return $php;
  11228. }
  11229. private function deobfuscateZeura($str, $matches)
  11230. {
  11231. $offset = intval($matches[8]) + intval($matches[9]);
  11232. $obfPHP = explode('__halt_compiler();', $str);
  11233. $obfPHP = end($obfPHP);
  11234. $php = gzinflate(base64_decode(substr(trim($obfPHP), $offset)));
  11235. $php = stripcslashes($php);
  11236. $php = str_replace($matches[0], $php, $str);
  11237. return $php;
  11238. }
  11239. private function deobfuscateSourceCop($str, $matches)
  11240. {
  11241. $key = $matches[2];
  11242. $obfPHP = $matches[1];
  11243. $res = '';
  11244. $index = 0;
  11245. $len = strlen($key);
  11246. $temp = hexdec('&H' . substr($obfPHP, 0, 2));
  11247. for ($i = 2, $iMax = strlen($obfPHP); $i < $iMax; $i += 2) {
  11248. $bytes = hexdec(trim(substr($obfPHP, $i, 2)));
  11249. $index = (($index < $len) ? $index + 1 : 1);
  11250. $decoded = $bytes ^ ord(substr($key, $index - 1, 1));
  11251. if ($decoded <= $temp) {
  11252. $decoded = 255 + $decoded - $temp;
  11253. } else {
  11254. $decoded = $decoded - $temp;
  11255. }
  11256. $res = $res . chr($decoded);
  11257. $temp = $bytes;
  11258. }
  11259. $res = str_replace($matches[0], $res, $str);
  11260. return $res;
  11261. }
  11262. private function deobfuscateGlobalsArray($str, $matches)
  11263. {
  11264. $res = $str;
  11265. $alph = stripcslashes($matches[3]);
  11266. $res = preg_replace('~\${"[\\\\x0-9a-f]+"}\[\'\w+\'\]\s*=\s*"[\\\\x0-9a-f]+";~msi', '', $res);
  11267. for ($i = 0, $iMax = strlen($alph); $i < $iMax; $i++) {
  11268. $res = str_replace($matches[1] .'[' . $matches[2] . ']' . '[' . $i . '].', "'" . $alph[$i] . "'", $res);
  11269. $res = str_replace($matches[1] .'[' . $matches[2] . ']' . '[' . $i . ']', "'" . $alph[$i] . "'", $res);
  11270. }
  11271. $res = str_replace("''", '', $res);
  11272. preg_match_all('~\\' . $matches[1] . '\[(\'\w+\')]\s*=\s*\'(\w+)\';~msi', $res, $funcs);
  11273. $vars = $funcs[1];
  11274. $func = $funcs[2];
  11275. foreach ($vars as $index => $var) {
  11276. $res = str_replace($matches[1] . '[' . $var . ']', $func[$index], $res);
  11277. }
  11278. foreach ($func as $remove) {
  11279. $res = str_replace($remove . " = '" . $remove . "';", '', $res);
  11280. $res = str_replace($remove . "='" . $remove . "';", '', $res);
  11281. }
  11282. $res = str_replace($matches[0], $res, $str);
  11283. return $res;
  11284. }
  11285. private function deobfuscateXbrangwolf($str, $match)
  11286. {
  11287. return $match[0];
  11288. }
  11289. private function deobfuscateObfB64($str, $matches)
  11290. {
  11291. $res = base64_decode($matches[3]);
  11292. $res = str_replace($matches[0], $res, $str);
  11293. return $res;
  11294. }
  11295. private function deobfuscateArrayOffsets($str)
  11296. {
  11297. $vars = array();
  11298. preg_match('~(\$\w{1,40})\s*=\s*\'([^\']*)\';\s*(\$\w{1,40})\s*=\s*explode\s*\((chr\s*\(\s*\(\d+\-\d+\)\)),substr\s*\(\1,\s*\((\d+\-\d+)\),\s*\(\s*(\d+\-\d+)\)\)\);.+\1\s*=\s*\$\w+[+\-\*]\d+;~msi', $str, $matches);
  11299. $find = $matches[0];
  11300. $obfPHP = $matches[2];
  11301. $matches[4] = Helpers::calc($matches[4]);
  11302. $matches[5] = intval(Helpers::calc($matches[5]));
  11303. $matches[6] = intval(Helpers::calc($matches[6]));
  11304. $func = explode($matches[4], strtolower(substr($obfPHP, $matches[5], $matches[6])));
  11305. $func[1] = strrev($func[1]);
  11306. $func[2] = strrev($func[2]);
  11307. preg_match('~\$\w{1,40}\s=\sexplode\((chr\(\(\d+\-\d+\)\)),\'([^\']+)\'\);~msi', $str, $matches);
  11308. $matches[1] = Helpers::calc($matches[1]);
  11309. $offsets = explode($matches[1], $matches[2]);
  11310. $res = '';
  11311. for ($i = 0; $i < (sizeof($offsets) / 2); $i++) {
  11312. $res .= substr($obfPHP, $offsets[$i * 2], $offsets[($i * 2) + 1]);
  11313. }
  11314. preg_match('~return\s*\$\w{1,40}\((chr\(\(\d+\-\d+\)\)),(chr\(\(\d+\-\d+\)\)),\$\w{1,40}\);~msi', $str, $matches);
  11315. $matches[1] = Helpers::calc($matches[1]);
  11316. $matches[2] = Helpers::calc($matches[2]);
  11317. $res = Helpers::stripsquoteslashes(str_replace($matches[1], $matches[2], $res));
  11318. $res = "<?php\n" . $res . "?>";
  11319. preg_match('~(\$\w{1,40})\s=\simplode\(array_map\(\"[^\"]+\",str_split\(\"(([^\"\\\\]++|\\\\.)*)\"\)\)\);(\$\w{1,40})\s=\s\$\w{1,40}\(\"\",\s\1\);\s\4\(\);~msi', $res, $matches);
  11320. $matches[2] = stripcslashes($matches[2]);
  11321. for ($i=0, $iMax = strlen($matches[2]); $i < $iMax; $i++) {
  11322. $matches[2][$i] = chr(ord($matches[2][$i])-1);
  11323. }
  11324. $res = str_replace($matches[0], $matches[2], $res);
  11325. preg_match_all('~(\$\w{1,40})\s*=\s*\"(([^\"\\\\]++|\\\\.)*)\";~msi', $res, $matches, PREG_SET_ORDER);
  11326. foreach ($matches as $match) {
  11327. $vars[$match[1]] = stripcslashes($match[2]);
  11328. }
  11329. preg_match_all('~(\$\w{1,40})\s*=\s*\'(([^\'\\\\]++|\\\\.)*)\';~msi', $res, $matches, PREG_SET_ORDER);
  11330. foreach ($matches as $match) {
  11331. $vars[$match[1]] = Helpers::stripsquoteslashes($match[2]);
  11332. }
  11333. preg_match('~(\$\w{1,40})\s*=\s*\"\\\\x73\\\\164\\\\x72\\\\137\\\\x72\\\\145\\\\x70\\\\154\\\\x61\\\\143\\\\x65";\s(\$\w{1,40})\s=\s\'(([^\'\\\\]++|\\\\.)*)\';\seval\(\1\(\"(([^\"\\\\]++|\\\\.)*)\",\s\"(([^\"\\\\]++|\\\\.)*)\",\s\2\)\);~msi', $res, $matches);
  11334. $matches[7] = stripcslashes($matches[7]);
  11335. $matches[3] = Helpers::stripsquoteslashes(str_replace($matches[5], $matches[7], $matches[3]));
  11336. $res = str_replace($matches[0], $matches[3], $res);
  11337. preg_match_all('~(\$\w{1,40})\s*=\s*\"(([^\"\\\\]++|\\\\.)*)\";~msi', $res, $matches, PREG_SET_ORDER);
  11338. foreach ($matches as $match) {
  11339. $vars[$match[1]] = stripcslashes($match[2]);
  11340. }
  11341. preg_match_all('~(\$\w{1,40})\s*=\s*\'(([^\'\\\\]++|\\\\.)*)\';~msi', $res, $matches, PREG_SET_ORDER);
  11342. foreach ($matches as $match) {
  11343. $vars[$match[1]] = Helpers::stripsquoteslashes($match[2]);
  11344. }
  11345. preg_match('~\$\w{1,40}\s=\sarray\(((\'(([^\'\\\\]++|\\\\.)*)\',?(\.(\$\w{1,40})\.)?)+)\);~msi', $res, $matches);
  11346. foreach ($vars as $var => $value) {
  11347. $matches[1] = str_replace("'." . $var . ".'", $value, $matches[1]);
  11348. }
  11349. $array2 = explode("','", substr($matches[1], 1, -1));
  11350. preg_match('~eval\(\$\w{1,40}\(array\((((\"[^\"]\"+),?+)+)\),\s(\$\w{1,40}),\s(\$\w{1,40})\)\);~msi', $res, $matches);
  11351. $array1 = explode('","', substr($matches[1], 1, -1));
  11352. $temp = array_keys($vars);
  11353. $temp = $temp[9];
  11354. $arr = explode('|', $vars[$temp]);
  11355. $off=0;
  11356. $funcs=array();
  11357. for ($i = 0, $iMax = sizeof($arr); $i < $iMax; $i++) {
  11358. if ($i == 0) {
  11359. $off = 0;
  11360. } else {
  11361. $off = $arr[$i - 1] + $off;
  11362. }
  11363. $len = $arr[$i];
  11364. $temp = array_keys($vars);
  11365. $temp = $temp[7];
  11366. $funcs[]= substr($vars[$temp], $off, $len);
  11367. }
  11368. for ($i = 0; $i < 5; $i++) {
  11369. if ($i % 2 == 0) {
  11370. $funcs[$i] = strrev($funcs[$i]);
  11371. $g = substr($funcs[$i], strpos($funcs[$i], "9") + 1);
  11372. $g = stripcslashes($g);
  11373. $v = explode(":", substr($funcs[$i], 0, strpos($funcs[$i], "9")));
  11374. for ($j = 0, $jMax = sizeof($v); $j < $jMax; $j++) {
  11375. $q = explode("|", $v[$j]);
  11376. $g = str_replace($q[0], $q[1], $g);
  11377. }
  11378. $funcs[$i] = $g;
  11379. } else {
  11380. $h = explode("|", strrev($funcs[$i]));
  11381. $d = explode("*", $h[0]);
  11382. $b = $h[1];
  11383. for ($j = 0, $jMax = sizeof($d); $j < $jMax; $j++) {
  11384. $b = str_replace($j, $d[$j], $b);
  11385. }
  11386. $funcs[$i] = $b;
  11387. }
  11388. }
  11389. $temp = array_keys($vars);
  11390. $temp = $temp[8];
  11391. $funcs[] = str_replace('9', ' ', strrev($vars[$temp]));
  11392. $funcs = implode("\n", $funcs);
  11393. preg_match('~\$\w{1,40}\s=\s\'.+?eval\([^;]+;~msi', $res, $matches);
  11394. $res = str_replace($matches[0], $funcs, $res);
  11395. $res = stripcslashes($res);
  11396. $res = str_replace('}//}}', '}}', $res);
  11397. $res = str_replace($find, $res, $str);
  11398. return $res;
  11399. }
  11400. private function deobfuscateXoredVar($str, $matches)
  11401. {
  11402. $res = $str;
  11403. $find = $matches[0];
  11404. preg_match_all('~(\$\w{1,40})\s*=\s*\'((\\\\.|[^\'])*)\';~msi', $str, $matches, PREG_SET_ORDER);
  11405. $vars = array();
  11406. foreach ($matches as $match) {
  11407. $vars[$match[1]]=$match[2];
  11408. }
  11409. preg_match_all('~(\$\w{1,40})\s*=\s*\'((\\\\.|[^\'])*)\'\^(\$\w+);~msi', $str, $matches, PREG_SET_ORDER);
  11410. foreach ($matches as $match) {
  11411. if (isset($vars[$match[4]])) {
  11412. $vars[$match[1]]=$match[2]^$vars[$match[4]];
  11413. $res = str_replace($match[0], $match[1] . "='" . $vars[$match[1]] . "';", $res);
  11414. }
  11415. }
  11416. preg_match_all('~(\$\w{1,40})\s*=\s*(\$\w+)\^\'((\\\\.|[^\'])*)\';~msi', $res, $matches, PREG_SET_ORDER);
  11417. foreach ($matches as $match) {
  11418. if (isset($vars[$match[2]])) {
  11419. $vars[$match[1]]=$match[4]^$vars[$match[2]];
  11420. $res = str_replace($match[0], $match[1] . "='" . $vars[$match[1]] . "';", $res);
  11421. }
  11422. }
  11423. preg_match_all('~\'((\\\\.|[^\'])*)\'\^(\$\w+)~msi', $res, $matches, PREG_SET_ORDER);
  11424. foreach ($matches as $match) {
  11425. if (isset($vars[$match[3]])) {
  11426. $res = str_replace($match[0], "'" . addcslashes($match[1]^$vars[$match[3]], '\\\'') . "'", $res);
  11427. }
  11428. }
  11429. foreach ($vars as $var => $value) {
  11430. $res = str_replace($var, $value, $res);
  11431. $res = str_replace($value . "='" . $value . "';", '', $res);
  11432. }
  11433. $res = str_replace($find, $res, $str);
  11434. return $res;
  11435. }
  11436. private function deobfuscatePhpMess($str, $matches)
  11437. {
  11438. $res = base64_decode(gzuncompress(base64_decode(base64_decode($matches[4]))));
  11439. $res = str_replace($matches[0], $res, $str);
  11440. return $res;
  11441. }
  11442. private function deobfuscatePregReplaceSample05($str)
  11443. {
  11444. $res = '';
  11445. preg_match('~(\$\w{1,40})\s*=\s*\"([^\"]+)\";\s*\$\w+\s*=\s*\$\w+\(\1,\"([^\"]+)\",\"([^\"]+)\"\);\s*\$\w+\(\"[^\"]+\",\"[^\"]+\",\"\.\"\);~msi', $str, $matches);
  11446. $res = strtr($matches[2], $matches[3], $matches[4]);
  11447. $res = base64_decode($res);
  11448. $res = str_replace($matches[0], $res, $str);
  11449. return $res;
  11450. }
  11451. private function deobfuscatePregReplaceB64($str, $matches)
  11452. {
  11453. $find = $matches[0];
  11454. $res = str_replace($find, base64_decode($matches[4]), $str);
  11455. $res = stripcslashes($res);
  11456. preg_match('~eval\(\${\$\{"GLOBALS"\}\[\"\w+\"\]}\(\${\$\{"GLOBALS"\}\[\"\w+\"]}\(\"([^\"]+)\"\)\)\);~msi', $res, $matches);
  11457. $res = gzuncompress(base64_decode($matches[1]));
  11458. preg_match('~eval\(\$\w+\(\$\w+\("([^"]+)"\)\)\);~msi', $res, $matches);
  11459. $res = gzuncompress(base64_decode($matches[1]));
  11460. preg_match('~eval\(\$\w+\(\$\w+\("([^"]+)"\)\)\);~msi', $res, $matches);
  11461. $res = gzuncompress(base64_decode($matches[1]));
  11462. preg_match_all('~\$(\w+)\s*(\.)?=\s*("[^"]*"|\$\w+);~msi', $res, $matches, PREG_SET_ORDER);
  11463. $var = $matches[0][1];
  11464. $vars = array();
  11465. foreach ($matches as $match) {
  11466. if($match[2]!=='.') {
  11467. $vars[$match[1]] = substr($match[3], 1, -1);
  11468. }
  11469. else {
  11470. $vars[$match[1]] .= $vars[substr($match[3], 1)];
  11471. }
  11472. }
  11473. $res = str_replace("srrKePJUwrMZ", "=", $vars[$var]);
  11474. $res = gzuncompress(base64_decode($res));
  11475. preg_match_all('~function\s*(\w+)\(\$\w+,\$\w+\)\{.+?}\s*};\s*eval\(((\1\(\'(\w+)\',)+)\s*"([\w/\+]+)"\)\)\)\)\)\)\)\);~msi', $res, $matches);
  11476. $decode = array_reverse(explode("',", str_replace($matches[1][0] . "('", '', $matches[2][0])));
  11477. array_shift($decode);
  11478. $arg = $matches[5][0];
  11479. foreach ($decode as $val) {
  11480. $arg = Helpers::someDecoder2($val, $arg);
  11481. }
  11482. $res = $arg;
  11483. $res = str_replace($find, $res, $str);
  11484. return $res;
  11485. }
  11486. private function deobfuscateDecoder($str)
  11487. {
  11488. preg_match('~if\(!function_exists\(\"(\w+)\"\)\){function \1\(.+eval\(\1\(\"([^\"]+)\"\)\);~msi', $str, $matches);
  11489. $res = Helpers::someDecoder($matches[2]);
  11490. $res = str_replace($matches[0], $res, $str);
  11491. return $res;
  11492. }
  11493. private function deobfuscateGBE($str)
  11494. {
  11495. preg_match('~(\$\w{1,40})=\'([^\']+)\';\1=gzinflate\(base64_decode\(\1\)\);\1=str_replace\(\"__FILE__\",\"\'\$\w+\'\",\1\);eval\(\1\);~msi', $str, $matches);
  11496. $res = str_replace($matches[0], gzinflate(base64_decode($matches[2])), $str);
  11497. return $res;
  11498. }
  11499. private function deobfuscateGBZ($str, $matches)
  11500. {
  11501. $res = str_replace($matches[0], base64_decode(str_rot13($matches[4])), $str);
  11502. return $res;
  11503. }
  11504. private function deobfuscateBitrix($str, $matches)
  11505. {
  11506. $find = $matches[0];
  11507. $res = $str;
  11508. $funclist = array();
  11509. $strlist = array();
  11510. $res = preg_replace("|[\"']\s*\.\s*['\"]|smi", '', $res);
  11511. $hangs = 0;
  11512. while (preg_match('~(?:min|max|round)?\(\s*\d+[\.\,\|\s\|+\|\-\|\*\|\/]([\d\s\.\,\+\-\*\/]+)?\)~msi', $res) && $hangs < 15) {
  11513. $res = preg_replace_callback('~(?:min|max|round)?\(\s*\d+[\.\,\|\s\|+\|\-\|\*\|\/]([\d\s\.\,\+\-\*\/]+)?\)~msi', array("Helpers","calc"), $res);
  11514. $hangs++;
  11515. }
  11516. $res = preg_replace_callback(
  11517. '|base64_decode\(["\'](.*?)["\']\)|smi',
  11518. function ($matches) {
  11519. return '"' . base64_decode($matches[1]) . '"';
  11520. },
  11521. $res
  11522. );
  11523. if (preg_match_all('|\$GLOBALS\[[\'"](.+?)[\'"]\]\s*=\s*Array\((.+?)\);|smi', $res, $founds, PREG_SET_ORDER)) {
  11524. foreach ($founds as $found) {
  11525. $varname = $found[1];
  11526. $funclist[$varname] = explode(',', $found[2]);
  11527. $funclist[$varname] = array_map(function ($value) {
  11528. return trim($value, "'\"");
  11529. }, $funclist[$varname]);
  11530. $res = preg_replace_callback(
  11531. '|\$GLOBALS\[[\'"]' . $varname . '[\'"]\]\[(\d+)\]|smi',
  11532. function ($matches) use ($varname, $funclist) {
  11533. return str_replace(array('"',"'"), '', $funclist[$varname][$matches[1]]);
  11534. },
  11535. $res
  11536. );
  11537. $res = str_replace($found[0], '', $res);
  11538. }
  11539. }
  11540. $array_temp = [];
  11541. if (preg_match_all('~function\s*(\w{1,60})\(\$\w+\){\$\w{1,60}\s*=\s*Array\((.{1,30000}?)\);\s*return\s*base64_decode[^}]+}~msi', $res, $founds, PREG_SET_ORDER)) {
  11542. foreach ($founds as $found) {
  11543. $strlist = explode(',', $found[2]);
  11544. $array_temp[$found[1]] = array_map('base64_decode', $strlist);
  11545. $res = preg_replace_callback(
  11546. '|' . $found[1] . '\((\d+)\)|smi',
  11547. function ($matches) use ($strlist) {
  11548. return "'" . base64_decode($strlist[$matches[1]]) . "'";
  11549. },
  11550. $res
  11551. );
  11552. $res = str_replace($found[0], '', $res);
  11553. }
  11554. }
  11555. $res = preg_replace('~\'\s*\.\s*\'~', '', $res);
  11556. if (preg_match_all('~\s*function\s*(_+(.{1,60}?))\(\$[_0-9]+\)\s*\{\s*static\s*\$([_0-9]+)\s*=\s*(true|false);.{1,30000}?\$\3\s*=\s*array\((.*?)\);\s*return\s*base64_decode\(\$\3~smi', $res, $founds, PREG_SET_ORDER)) {
  11557. foreach ($founds as $found) {
  11558. $strlist = explode('",', $found[5]);
  11559. $strlist = implode("',", $strlist);
  11560. $strlist = explode("',", $strlist);
  11561. $res = preg_replace_callback(
  11562. '|' . $found[1] . '\((\d+(\.\d+)?)\)|sm',
  11563. function ($matches) use ($strlist) {
  11564. $ret = base64_decode($strlist[$matches[1]]);
  11565. if (!$ret) {
  11566. $ret = $strlist[$matches[1]];
  11567. }
  11568. return '\'' . $ret . '\'';
  11569. },
  11570. $res
  11571. );
  11572. }
  11573. }
  11574. $res = str_replace($find, $res, $str);
  11575. return $res;
  11576. }
  11577. private function deobfuscateLockIt($str)
  11578. {
  11579. preg_match('~(\$[O0]*=__FILE__;)?\$[O0]*=urldecode\(\'[%a-f0-9]+\'\);(\$(GLOBALS\[\')?[O0]*(\'\])?=(\d+);)?\s*(\$(GLOBALS\[\')?[O0]*(\'\])?\.?=(\$(GLOBALS\[\')?[O0]*(\'\])?([\{\[]\d+[\}\]])?\.?)+;)+[^\?]+\?\>[\s\w\~\=\/\+\\\\\^\{\`\%]+~msi', $str, $matches);
  11580. $find = $matches[0];
  11581. $prefix = $matches[1];
  11582. $obfPHP = $str;
  11583. $phpcode = base64_decode(Helpers::getTextInsideQuotes(Helpers::getEvalCode($obfPHP)));
  11584. $hexvalues = Helpers::getHexValues($phpcode);
  11585. $tmp_point = Helpers::getHexValues($obfPHP);
  11586. if (isset($tmp_point[0]) && $tmp_point[0]!=='') {
  11587. $pointer1 = hexdec($tmp_point[0]);
  11588. }
  11589. if (isset($matches[5]) && $matches[5]!=='') {
  11590. $pointer1 = $matches[5];
  11591. }
  11592. $needles = Helpers::getNeedles($phpcode);
  11593. if ($needles[2]=='__FILE__') {
  11594. $needle = $needles[0];
  11595. $before_needle = $needles[1];
  11596. preg_match('~\$_F=__FILE__;\$_X=\'([^\']+)\';\s*eval\s*\(\s*\$?\w{1,60}\s*\(\s*[\'"][^\'"]+[\'"]\s*\)\s*\)\s*;~msi', $str, $matches);
  11597. $res = base64_decode($matches[1]);
  11598. $phpcode = strtr($res, $needle, $before_needle);
  11599. } else {
  11600. $needle = $needles[count($needles) - 2];
  11601. $before_needle = end($needles);
  11602. if (preg_match('~\$\w{1,40}\s*=\s*__FILE__;\s*\$\w{1,40}\s*=\s*([\da-fx]+);\s*eval\s*\(\$?\w+\s*\([\'"][^\'"]+[\'"]\)\);\s*return\s*;\s*\?>(.+)~msi', $str, $matches)) {
  11603. $pointer1 = $matches[1];
  11604. if (strpos($pointer1, '0x')!==false) {
  11605. $pointer1 = hexdec($pointer1);
  11606. }
  11607. }
  11608. $temp = strtr($obfPHP, $needle, $before_needle);
  11609. $end = 8;
  11610. for ($i = strlen($temp) - 1; $i > strlen($temp) - 15; $i--) {
  11611. if ($temp[$i] == '=') {
  11612. $end = strlen($temp) - 1 - $i;
  11613. }
  11614. }
  11615. $phpcode = base64_decode(substr($temp, strlen($temp) - $pointer1 - $end, $pointer1));
  11616. }
  11617. $phpcode = str_replace($find, $prefix . $phpcode, $str);
  11618. return $phpcode;
  11619. }
  11620. private function deobfuscateB64inHTML($str, $matches)
  11621. {
  11622. $obfPHP = $str;
  11623. $phpcode = base64_decode(Helpers::getTextInsideQuotes(Helpers::getEvalCode($obfPHP)));
  11624. $needles = Helpers::getNeedles($phpcode);
  11625. $needle = $needles[count($needles) - 2];
  11626. $before_needle = end($needles);
  11627. $pointer1 = $matches[2];
  11628. $temp = strtr($obfPHP, $needle, $before_needle);
  11629. $end = 8;
  11630. for ($i = strlen($temp) - 1; $i > strlen($temp) - 15; $i--) {
  11631. if ($temp[$i] == '=') {
  11632. $end = strlen($temp) - 1 - $i;
  11633. }
  11634. }
  11635. $phpcode = base64_decode(substr($temp, strlen($temp) - $pointer1 - ($end-1), $pointer1));
  11636. $phpcode = str_replace($matches[0], $phpcode, $str);
  11637. return $phpcode;
  11638. }
  11639. private function deobfuscateStrtrFread($str, $layer2)
  11640. {
  11641. $str = explode('?>', $str);
  11642. $str = end($str);
  11643. $res = substr($str, $layer2[1], strlen($str));
  11644. $res = base64_decode(strtr($res, $layer2[2], $layer2[3]));
  11645. $res = str_replace($layer2[0], $res, $str);
  11646. return $res;
  11647. }
  11648. private function deobfuscateStrtrBase64($str, $matches)
  11649. {
  11650. $str = strtr($matches[2], $matches[3], $matches[4]);
  11651. $res = base64_decode($str);
  11652. $res = str_replace($matches[0], $res, $str);
  11653. return $res;
  11654. }
  11655. private function deobfuscateByteRun($str)
  11656. {
  11657. preg_match('~\$_F=__FILE__;\$_X=\'([^\']+)\';\s*eval\s*\(\s*\$?\w{1,60}\s*\(\s*[\'"][^\'"]+[\'"]\s*\)\s*\)\s*;~msi', $str, $matches);
  11658. $res = base64_decode($matches[1]);
  11659. $res = strtr($res, '123456aouie', 'aouie123456');
  11660. $res = str_replace($matches[0], $res, $str);
  11661. return $res;
  11662. }
  11663. private function deobfuscateExplodeSubst($str, $matches)
  11664. {
  11665. $find = $matches[0];
  11666. $res = $str;
  11667. preg_match_all('~function ([\w_]+)\(~msi', $res, $funcs);
  11668. preg_match('~(\$_\w+\[\w+\])\s*=\s*explode\(\'([^\']+)\',\s*\'([^\']+)\'\);.+?(\1\[[a-fx\d]+\])\(\);~msi', $res, $matches);
  11669. $subst_array = explode($matches[2], $matches[3]);
  11670. $subst_var = $matches[1];
  11671. $res = preg_replace_callback('~((\$_GET\[[O0]+\])|(\$[O0]+))\[([a-fx\d]+)\]~msi', function ($matches) use ($subst_array, $funcs) {
  11672. if (function_exists($subst_array[hexdec($matches[4])]) || in_array($subst_array[hexdec($matches[4])], $funcs[1])) {
  11673. return $subst_array[hexdec($matches[4])];
  11674. } else {
  11675. return "'" . $subst_array[hexdec($matches[4])] . "'";
  11676. }
  11677. }, $res);
  11678. $res = str_replace($find, $res, $str);
  11679. return $res;
  11680. }
  11681. private function deobfuscateSubst($str, $matches)
  11682. {
  11683. $find = $matches[0];
  11684. $res = $str;
  11685. $alph = stripcslashes($matches[2]);
  11686. $funcs = $matches[4];
  11687. for ($i = 0, $iMax = strlen($alph); $i < $iMax; $i++) {
  11688. $res = str_replace($matches[1] . '[' . $i . '].', "'" . $alph[$i] . "'", $res);
  11689. $res = str_replace($matches[1] . '[' . $i . ']', "'" . $alph[$i] . "'", $res);
  11690. }
  11691. $res = str_replace("''", '', $res);
  11692. $var = $matches[3];
  11693. preg_match_all('~\\' . $var . '\[\]\s*=\s*\'([\w\*\-\#]+)\'~msi', $res, $matches);
  11694. for ($i = 0, $iMax = count($matches[1]); $i <= $iMax; $i++) {
  11695. if (@function_exists($matches[1][$i])) {
  11696. $res = str_replace($var . '[' . $i . ']', $matches[1][$i], $res);
  11697. } else {
  11698. $res = @str_replace($var . '[' . $i . ']', "'" . $matches[1][$i] . "'", $res);
  11699. }
  11700. }
  11701. $res = str_replace($find, $res, $str);
  11702. return $res;
  11703. }
  11704. private function deobfuscateUrldecode($str)
  11705. {
  11706. preg_match('~(\$\w+=\'[^\']+\';\s*)+(\$[\w{1,40}]+)=(urldecode|base64_decode){0,1}\(?[\'"]([\w+%=-]+)[\'"]\)?;(\$[\w+]+=(\$(\w+\[\')?[O_0]*(\'\])?([\{\[]\d+[\}\]])?\.?)+;)+[^\?]+(\?\>[\w\~\=\/\+]+|.+\\\\x[^;]+;)~msi', $str, $matches);
  11707. $find = $matches[0];
  11708. $res = $str;
  11709. $res = stripcslashes($res);
  11710. if ($matches[3] == "urldecode") {
  11711. $alph = urldecode($matches[4]);
  11712. $res = str_replace('urldecode(\'' . $matches[4] . '\')', "'" . $alph . "'", $res);
  11713. } elseif ($matches[3] == 'base64_decode') {
  11714. $alph = base64_decode($matches[4]);
  11715. $res = str_replace('base64_decode(\'' . $matches[4] . '\')', "'" . $alph . "'", $res);
  11716. } else {
  11717. $alph = $matches[4];
  11718. }
  11719. for ($i = 0, $iMax = strlen($alph); $i < $iMax; $i++) {
  11720. $res = str_replace($matches[2] . '[' . $i . '].', "'" . $alph[$i] . "'", $res);
  11721. $res = str_replace($matches[2] . '[' . $i . ']', "'" . $alph[$i] . "'", $res);
  11722. $res = str_replace($matches[2] . '{' . $i . '}.', "'" . $alph[$i] . "'", $res);
  11723. $res = str_replace($matches[2] . '{' . $i . '}', "'" . $alph[$i] . "'", $res);
  11724. }
  11725. $res = str_replace("''", '', $res);
  11726. preg_match_all('~\$(\w+)\s*=\s*\'([\w\*\-\#]+)\'~msi', $res, $matches, PREG_SET_ORDER);
  11727. for ($i = 0, $iMax = count($matches); $i < $iMax; $i++) {
  11728. if (@function_exists($matches[$i][2])) {
  11729. $res = str_replace('$' . $matches[$i][1], $matches[$i][2], $res);
  11730. $res = str_replace('${"GLOBALS"}["' . $matches[$i][1] . '"]', $matches[$i][2], $res);
  11731. } else {
  11732. $res = str_replace('$' . $matches[$i][1], "'" . $matches[$i][2] . "'", $res);
  11733. $res = str_replace('${"GLOBALS"}["' . $matches[$i][1] . '"]', "'" . $matches[$i][2] . "'", $res);
  11734. }
  11735. $res = str_replace("'" . $matches[$i][2] . "'='" . $matches[$i][2] . "';", '', $res);
  11736. $res = str_replace($matches[$i][2] . "='" . $matches[$i][2] . "';", '', $res);
  11737. $res = str_replace($matches[$i][2] . "=" . $matches[$i][2] . ';', '', $res);
  11738. }
  11739. $res = Helpers::replaceCreateFunction($res);
  11740. preg_match('~\$([0_O]+)\s*=\s*function\s*\((\$\w+)\)\s*\{\s*\$[O_0]+\s*=\s*substr\s*\(\2,(\d+),(\d+)\);\s*\$[O_0]+\s*=\s*substr\s*\(\2,([\d-]+)\);\s*\$[O_0]+\s*=\s*substr\s*\(\2,(\d+),strlen\s*\(\2\)-(\d+)\);\s*return\s*gzinflate\s*\(base64_decode\s*\(\$[O_0]+\s*\.\s*\$[O_0]+\s*\.\s*\$[O_0]+\)+;~msi', $res, $matches);
  11741. $res = preg_replace_callback('~\$\{"GLOBALS"}\["' . $matches[1] . '"\]\s*\(\'([^\']+)\'\)~msi', function ($calls) use ($matches) {
  11742. $temp1 = substr($calls[1], $matches[3], $matches[4]);
  11743. $temp2 = substr($calls[1], $matches[5]);
  11744. $temp3 = substr($calls[1], $matches[6],strlen($calls[1]) - $matches[7]);
  11745. return "'" . gzinflate(base64_decode($temp1 . $temp3 . $temp2)) . "'";
  11746. }, $res);
  11747. $res = str_replace($find, $res, $str);
  11748. return $res;
  11749. }
  11750. public function unwrapFuncs($string, $level = 0)
  11751. {
  11752. $close_tag = false;
  11753. $res = '';
  11754. if (trim($string) == '') {
  11755. return '';
  11756. }
  11757. if ($level > 100) {
  11758. return '';
  11759. }
  11760. if ((($string[0] == '\'') || ($string[0] == '"')) && (substr($string, 1, 2) != '?>')) {
  11761. if($string[0] == '"' && preg_match('~\\\\x\d+~', $string)) {
  11762. return stripcslashes($string);
  11763. } else {
  11764. return substr($string, 1, -2);
  11765. }
  11766. } elseif ($string[0] == '$') {
  11767. preg_match('~\$\w{1,40}~', $string, $string);
  11768. $string = $string[0];
  11769. $matches = array();
  11770. if (!@preg_match_all('~\\' . $string . '\s*=\s*("((.*?[^\\\\])??((\\\\\\\\)+)?+)");~msi', $this->full_source, $matches)) {
  11771. @preg_match_all('~\\' . $string . '\s*=\s*(\'((.*?[^\\\\])??((\\\\\\\\)+)?+)\');~msi', $this->full_source, $matches);
  11772. $str = @$matches[1][0];
  11773. } else {
  11774. $str = $matches[1][0];
  11775. }
  11776. $this->cur = str_replace($matches[0][0], '', $this->cur);
  11777. $this->text = str_replace($matches[0][0], '', $this->text);
  11778. return substr($str, 1, -1);
  11779. } else {
  11780. $pos = strpos($string, '(');
  11781. $function = substr($string, 0, $pos);
  11782. $arg = $this->unwrapFuncs(substr($string, $pos + 1), $level + 1);
  11783. if (strpos($function, '?>') !== false) {
  11784. $function = str_replace("'?>'.", "", $function);
  11785. $function = str_replace('"?>".', "", $function);
  11786. $function = str_replace("'?>' .", "", $function);
  11787. $function = str_replace('"?>" .', "", $function);
  11788. $close_tag = true;
  11789. }
  11790. $function = str_replace(array('@',' '), '', $function);
  11791. $safe = Helpers::isSafeFunc($function);
  11792. if ($safe) {
  11793. if ($function == 'pack') {
  11794. $args = explode(',', $arg);
  11795. $args[0] = substr(trim($args[0]), 0, -1 );
  11796. $args[1] = substr(trim($args[1]), 1);
  11797. $res = @$function($args[0], $args[1]);
  11798. } else {
  11799. $res = @$function($arg);
  11800. }
  11801. } else {
  11802. $res = $arg;
  11803. }
  11804. if ($close_tag) {
  11805. $res = "?> " . $res;
  11806. $close_tag = false;
  11807. }
  11808. return $res;
  11809. }
  11810. }
  11811. private function deobfuscateEvalFunc($str)
  11812. {
  11813. $res = $str;
  11814. $res = stripcslashes($res);
  11815. preg_match('~function\s*(\w{1,40})\((\$\w{1,40})\)\s*\{\s*(\$\w{1,40})\s*=\s*\"base64_decode\";\s*(\$\w{1,40})\s*=\s*\"gzinflate\";\s*return\s*\4\(\3\(\2\)\);\s*\}\s*\$\w{1,40}\s*=\s*\"[^\"]*\";\s*\$\w{1,40}\s*=\s*\"[^\"]*\";\s*eval\(\1\(\"([^\"]*)\"\)\);~msi', $res, $matches);
  11816. $res = gzinflate(base64_decode($matches[5]));
  11817. $res = str_replace($str, $res, $str);
  11818. return $res;
  11819. }
  11820. private function deobfuscateEvalConcatFunc($str, $matches)
  11821. {
  11822. $res = $matches[2];
  11823. if (str_replace('"."', '', $matches[6]) === '"create_function"') {
  11824. $brackets = '';
  11825. $res = preg_replace_callback('~[\w."]+\(~', function ($match) use (&$brackets) {
  11826. $replace = strtolower(str_replace('"."', '', $match[0]));
  11827. if (strpos($replace, 'eval') === false) {
  11828. $brackets .= ')';
  11829. return $replace;
  11830. }
  11831. return "";
  11832. }, $res);
  11833. $res .= "'$matches[4]'" . $brackets . ';';
  11834. $res = $this->unwrapFuncs($res);
  11835. }
  11836. return $res;
  11837. }
  11838. private function deobfuscateEvalHex($str)
  11839. {
  11840. preg_match('~eval\s*\("(\\\\x?\d+[^"]+)"\);~msi', $str, $matches);
  11841. $res = stripcslashes($matches[1]);
  11842. $res = str_replace($matches[1], $res, $res);
  11843. $res = str_replace($matches[0], $res, $str);
  11844. return $res;
  11845. }
  11846. private function deobfuscateEvalVarConcat($str, $matches)
  11847. {
  11848. $find = $matches[0];
  11849. $res = $str;
  11850. preg_match_all('~(\$\w+)\s*\.=\s*"([^"]+)";~msi', $str, $matches, PREG_SET_ORDER);
  11851. $vars = [];
  11852. foreach ($matches as $match) {
  11853. $res = str_replace($match[0], '', $res);
  11854. $res = str_replace($match[1], '"' . $match[2] . '"', $res);
  11855. }
  11856. $res = preg_replace('/[\'"]\s*?\.+\s*?[\'"]/smi', '', $res);
  11857. $res = str_replace($find, $res, $str);
  11858. return $res;
  11859. }
  11860. private function deobfuscateEvalVar($str, $matches)
  11861. {
  11862. $find = $matches[0];
  11863. $evalVar = $matches[7];
  11864. if (!$evalVar) {
  11865. $evalVar = $matches[6];
  11866. $pregVal = '\$\w+';
  11867. $pregStr = '[\'"]?([\/\w\+=]+)[\'"]?';
  11868. $pregFunc = '(?:base64_decode\s*\(|gzinflate\s*\(|strrev\s*\(|str_rot13\s*\(|gzuncompress\s*\(|urldecode\s*\(|rawurldecode\s*\(|htmlspecialchars_decode\s*\()+(?:["\']([\/\w\+=]+)["\'])';
  11869. while (preg_match('~str_replace\(["\']([\/\w]+)["\'],\s?["\']([\/\w\+=]+)["\'],\s?(?|(' . $pregVal . ')|(?:' . $pregStr . ')|(' . $pregFunc . '))\)~msi', $evalVar, $match)) {
  11870. $result = $match[0];
  11871. if (preg_match('~' . $pregVal . '~', $match[3], $arg)) {
  11872. $result = str_replace($match[1], $match[2], $matches[3]);
  11873. } elseif (preg_match('~' . $pregFunc . '~', $match[3], $arg)) {
  11874. $unwrappedVar = $this->unwrapFuncs($arg[0]);
  11875. $result = str_replace($match[1], $match[2], $unwrappedVar);
  11876. } elseif (preg_match('~' . $pregStr . '~', $match[3], $arg)) {
  11877. $result = str_replace($match[1], $match[2], $match[3]);
  11878. }
  11879. $evalVar = str_replace($match[0], "\"$result\"" . ')', $evalVar);
  11880. }
  11881. return $this->unwrapFuncs($matches[5] . $evalVar);
  11882. }
  11883. $val = '';
  11884. if (!@preg_match_all('~\\' . $evalVar . '\s*=\s*("((.*?[^\\\\])??((\\\\\\\\)+)?+)");~msi', $str, $matches)) {
  11885. @preg_match_all('~\\' . $evalVar . '\s*=\s*(\'((.*?[^\\\\])??((\\\\\\\\)+)?+)\');~msi', $str, $matches);
  11886. $val = @$matches[1][0];
  11887. } else {
  11888. $val = $matches[1][0];
  11889. }
  11890. $res = str_replace($matches[0][0], '', $str);
  11891. $val = substr($val, 1, -1);
  11892. $text = "'" . addcslashes(stripcslashes($val), "\\'") . "'";
  11893. $string = preg_replace('~\\' . $evalVar . '(?=[^a-zA-Z0-9])~ms', $text, $res);
  11894. $string = preg_replace('~\(\s*\\' . $evalVar . '~msi', '(' . $text, $string);
  11895. $res = str_replace($find, $string, $str);
  11896. return $res;
  11897. }
  11898. private function deobfuscateEval($str, $matches)
  11899. {
  11900. $res = $str;
  11901. if (preg_match('~(preg_replace\(["\']/\.\*?/[^"\']+["\']\s*,\s*)[^\),]+(?:[\)\\\\0-5]+;[\'"])?(,\s*["\'][^"\']*["\'])\)+;~msi', $res, $matches)) {
  11902. $res = str_replace($matches[1], 'eval(', $res);
  11903. $res = str_replace($matches[2], '', $res);
  11904. return $res;
  11905. }
  11906. if (strpos($res, 'e\x76al') !== false
  11907. || strpos($res, '\x29') !== false
  11908. || strpos($res, 'base64_decode("\\x') !== false
  11909. ) {
  11910. $res = stripcslashes($res);
  11911. }
  11912. if (strpos($res, '"."') !== false) {
  11913. $res = str_replace('"."', '', $res);
  11914. }
  11915. if (preg_match('~((\$\w+)\s*=\s*create_function\(\'\',\s*)[^\)]+\)+;\s*(\2\(\);)~msi', $res, $matches)) {
  11916. $res = str_replace($matches[1], 'eval(', $res);
  11917. $res = str_replace($matches[3], '', $res);
  11918. return $res;
  11919. }
  11920. if (preg_match('~eval\s*/\*[\w\s\.:,]+\*/\s*\(~msi', $res, $matches)) {
  11921. $res = str_replace($matches[0], 'eval(', $res);
  11922. return $res;
  11923. }
  11924. preg_match('~@?(eval|echo)\s*\(\s*([\'"?>.\s]+)?@?\s*\(?\s*(base64_decode\s*\(|pack\s*\(\'H\*\',|convert_uudecode\s*\(|htmlspecialchars_decode\s*\(|stripslashes\s*\(|gzinflate\s*\(|strrev\s*\(|str_rot13\s*\(|gzuncompress\s*\(|urldecode\s*\(|rawurldecode\s*\(|eval\s*\()+.*?[^\'")]+((\s*\.?[\'"]([^\'";]+[\'"]*\s*)+)?\s*[\'"\);]+)+~msi', $res, $matches);
  11925. $string = $matches[0];
  11926. if (preg_match('~\$_(POST|GET|REQUEST|COOKIE)~ms', $res)) {
  11927. return $res;
  11928. }
  11929. $string = substr($string, 5, strlen($string) - 7);
  11930. $res = $this->unwrapFuncs($string);
  11931. $res = str_replace($str, $res, $str);
  11932. return $res;
  11933. }
  11934. private function deobfuscateEvalCodeFunc($str, $matches)
  11935. {
  11936. $res = substr($str, 5, strlen($str) - 7);
  11937. $res = $this->unwrapFuncs($res);
  11938. $res = stripcslashes($res);
  11939. $res = str_replace($str, $res, $str);
  11940. return $res;
  11941. }
  11942. private function deobfuscateEcho($str, $matches)
  11943. {
  11944. $res = $str;
  11945. $string = $matches[0];
  11946. if (preg_match('~\$_(POST|GET|REQUEST|COOKIE)~ms', $res)) {
  11947. return $res;
  11948. }
  11949. $string = substr($string, 5, strlen($string) - 7);
  11950. $res = $this->unwrapFuncs($string);
  11951. $res = str_replace($str, $res, $str);
  11952. return $res;
  11953. }
  11954. private function deobfuscateFOPO($str, $matches)
  11955. {
  11956. $phpcode = Helpers::formatPHP($str);
  11957. $phpcode = base64_decode(Helpers::getTextInsideQuotes(Helpers::getEvalCode($phpcode)));
  11958. if (preg_match('~eval\s*\(\s*\$[\w|]+\s*\(\s*\$[\w|]+\s*\(~msi', $phpcode)) {
  11959. preg_match_all('~\$\w+\(\$\w+\(\$\w+\("[^"]+"\)+~msi', $phpcode, $matches2);
  11960. @$phpcode = gzinflate(base64_decode(str_rot13(Helpers::getTextInsideQuotes(end(end($matches2))))));
  11961. $old = '';
  11962. $hangs = 0;
  11963. while (($old != $phpcode) && (strlen(strstr($phpcode, 'eval($')) > 0) && $hangs < 30) {
  11964. $old = $phpcode;
  11965. $funcs = explode(';', $phpcode);
  11966. if (count($funcs) == 5) {
  11967. $phpcode = gzinflate(base64_decode(str_rot13(Helpers::getTextInsideQuotes(Helpers::getEvalCode($phpcode)))));
  11968. } elseif (count($funcs) == 4) {
  11969. $phpcode = gzinflate(base64_decode(Helpers::getTextInsideQuotes(Helpers::getEvalCode($phpcode))));
  11970. }
  11971. $hangs++;
  11972. }
  11973. $res = str_replace($matches[0], substr($phpcode, 2), $str);
  11974. } else {
  11975. $res = str_replace($matches[0], $phpcode, $str);
  11976. }
  11977. return $res;
  11978. }
  11979. private function deobfuscateFakeIonCube($str, $matches)
  11980. {
  11981. $subst_value = 0;
  11982. $matches[1] = Helpers::calc($matches[1]);
  11983. $subst_value = intval($matches[1])-21;
  11984. $code = @pack("H*", preg_replace("/[A-Z,\r,\n]/", "", substr($str, $subst_value)));
  11985. $res = str_replace($matches[0], $code, $str);
  11986. return $res;
  11987. }
  11988. private function deobfuscateCobra($str, $matches)
  11989. {
  11990. $find = $matches[0];
  11991. $res = $str;
  11992. $res = preg_replace_callback(
  11993. '~eval\(\"return strrev\(base64_decode\(\'([^\']+)\'\)\);\"\)~msi',
  11994. function ($matches) {
  11995. return strrev(base64_decode($matches[1]));
  11996. },
  11997. $res
  11998. );
  11999. $res = preg_replace_callback(
  12000. '~eval\(gzinflate\(base64_decode\(\.\"\'([^\']+)\'\)\)\)\;~msi',
  12001. function ($matches) {
  12002. return gzinflate(base64_decode($matches[1]));
  12003. },
  12004. $res
  12005. );
  12006. preg_match('~(\$\w{1,40})\s*=\s*\"([^\"]+)\"\;\s*\1\s*=\s*explode\(\"([^\"]+)\",\s*\s*\1\);~msi', $res, $matches);
  12007. $var = $matches[1];
  12008. $decrypt = base64_decode(current(explode($matches[3], $matches[2])));
  12009. $decrypt = preg_replace_callback(
  12010. '~eval\(\"return strrev\(base64_decode\(\'([^\']+)\'\)\);\"\)~msi',
  12011. function ($matches) {
  12012. return strrev(base64_decode($matches[1]));
  12013. },
  12014. $decrypt
  12015. );
  12016. $decrypt = preg_replace_callback(
  12017. '~eval\(gzinflate\(base64_decode\(\.\"\'([^\']+)\'\)\)\)\;~msi',
  12018. function ($matches) {
  12019. return gzinflate(base64_decode($matches[1]));
  12020. },
  12021. $decrypt
  12022. );
  12023. preg_match('~if\(\!function_exists\(\"(\w+)\"\)\)\s*\{\s*function\s*\1\(\$string\)\s*\{\s*\$string\s*=\s*base64_decode\(\$string\)\;\s*\$key\s*=\s*\"(\w+)\"\;~msi', $decrypt, $matches);
  12024. $decrypt_func = $matches[1];
  12025. $xor_key = $matches[2];
  12026. $res = preg_replace_callback(
  12027. '~\\' . $var . '\s*=\s*.*?eval\(' . $decrypt_func . '\(\"([^\"]+)\"\)\)\;\"\)\;~msi',
  12028. function ($matches) use ($xor_key) {
  12029. $string = base64_decode($matches[1]);
  12030. $key = $xor_key;
  12031. $xor = "";
  12032. for ($i = 0, $iMax = strlen($string); $i < $iMax;) {
  12033. for ($j = 0, $jMax = strlen($key); $j < $jMax; $j++,$i++) {
  12034. if (isset($string[$i])) {
  12035. $xor .= $string[$i] ^ $key[$j];
  12036. }
  12037. }
  12038. }
  12039. return $xor;
  12040. },
  12041. $res
  12042. );
  12043. $res = str_replace($find, $res, $str);
  12044. return $res;
  12045. }
  12046. private function deobfuscateFlamux($str, $matches)
  12047. {
  12048. $str = $matches[0];
  12049. $vars = [];
  12050. preg_match_all('~(\$\w+=[\'"]\w+[\'"];)~', $str, $match);
  12051. foreach ($match[0] as $var) {
  12052. $split = explode('=', str_replace(';', '', $var));
  12053. $vars[$split[0]] = $split[1];
  12054. }
  12055. $res = '';
  12056. preg_match_all('~(\$\w+=\$\w+[\'.]+\$\w+;)~', $str, $match);
  12057. for ($i = 0, $iMax = count($match[0]); $i < $iMax; $i++) {
  12058. $split = explode('=', str_replace(';', '', $match[0][$i]));
  12059. $concats = explode('.', $split[1]);
  12060. $str_to_concat = '';
  12061. foreach ($concats as $concat) {
  12062. $str_to_concat .= $vars[$concat] ?? '';
  12063. }
  12064. $vars[$split[0]] = $str_to_concat;
  12065. if ($i === ($iMax - 1)) {
  12066. $res = gzinflate(base64_decode(base64_decode(str_rot13($str_to_concat))));
  12067. }
  12068. }
  12069. return $res;
  12070. }
  12071. private function deobfuscateDarkShell($str, $matches)
  12072. {
  12073. $str = stripcslashes($matches[0]);
  12074. return $str;
  12075. }
  12076. private function deobfuscateWso($str, $matches)
  12077. {
  12078. $result = $matches[0];
  12079. $contentVar = $matches[8];
  12080. $variables = [];
  12081. preg_match_all('~(\[([-+\(\d*\/\)]+)\])+~', $result, $mathMatches);
  12082. foreach ($mathMatches[0] as $index => $match) {
  12083. $search = $mathMatches[2][$index];
  12084. $mathResult = Helpers::calculateMathStr($search);
  12085. $result = str_replace("[$search]", "[$mathResult]", $result);
  12086. }
  12087. $dictionary = $matches[2];
  12088. $variables = Helpers::getVarsFromDictionary($dictionary, $result);
  12089. $variables[$matches[6]] = $matches[7];
  12090. preg_match_all('~(\$\w+)\.=(\$\w+)~', $result, $matches);
  12091. foreach ($matches as $index => $match) {
  12092. $var = $matches[1][$index];
  12093. $value = $matches[2][$index];
  12094. if (!isset($variables[$var])) {
  12095. $variables[$var] = (string)$variables[$value] ?? '';
  12096. } else {
  12097. $variables[$var] .= (string)$variables[$value] ?? '';
  12098. }
  12099. }
  12100. if (isset($variables[$contentVar])) {
  12101. $result = $variables[$contentVar];
  12102. }
  12103. if (preg_match('~(\$\w+)\s+=\s+(["\'\w\/+]+);(\$\w+)=base64_decode\(\1\);(\$\w+)=gzinflate\(\3\);eval\(\4\);~msi', $result, $match)) {
  12104. $result = gzinflate(base64_decode($match[2]));
  12105. }
  12106. $result = str_replace('<?php', '', $result);
  12107. return $result;
  12108. }
  12109. private function deobfuscateAnonymousFox($str, $matches)
  12110. {
  12111. $result = $matches[0];
  12112. $string = $matches[7];
  12113. $array = strlen(trim($string));
  12114. $debuger = '';
  12115. for ($one = 0; $one < $array; $one += 2) {
  12116. $debuger .= pack("C", hexdec(substr($string, $one, 2)));
  12117. }
  12118. $string = $debuger;
  12119. $result = $string . $matches[8] . "';";
  12120. return $result;
  12121. }
  12122. private function deobfuscateBizden($str, $matches)
  12123. {
  12124. $result = $matches[0];
  12125. $file_content = $matches[0];
  12126. $vars = [
  12127. '$OOO0000O0' => 'base64_decode',
  12128. '$OOO000O00' => 'fopen',
  12129. '$O0O000O00' => 'fget',
  12130. '$O0O000O0O' => 'fgetc',
  12131. '$O0O000O00' => 'fgets',
  12132. '$O0O00OO00' => 'fread',
  12133. '$OOO00000O' => 'strtr',
  12134. '$OOO0O0O00' => $file_content,
  12135. '$OO00O0000' => 498876,
  12136. ];
  12137. $eval_1 = base64_decode($matches[2]);
  12138. preg_match_all('~(\$\w+)=\'(\w+)\'~', $eval_1, $varMatches);
  12139. foreach ($varMatches[1] as $index => $varMatch) {
  12140. $vars[$varMatches[1][$index]] = $varMatches[2][$index];
  12141. }
  12142. $result = str_replace(
  12143. '__FILE__',
  12144. "'" . $file_content . "'",
  12145. base64_decode(
  12146. strtr(
  12147. substr($file_content,0xc39
  12148. + 0x17c, 498876),
  12149. 'EnteryouwkhRHYKNWOUTAaBbCcDdFfGgIiJjLlMmPpQqSsVvXxZz0123456789+/=',
  12150. 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
  12151. )
  12152. )
  12153. );
  12154. foreach ($vars as $name => $value) {
  12155. $result = str_replace($name, $value, $result);
  12156. $result = str_replace('$GLOBALS[\''. substr($name, 1) . '\']', $value, $result);
  12157. }
  12158. $result = preg_replace_callback(
  12159. '~(echo\s*)?base64_decode\(\'([\w=\+\/]+)\'\)~',
  12160. function ($match) {
  12161. if ($match[1] != "") {
  12162. return 'echo \'' . base64_decode($match[2]) . '\'';
  12163. }
  12164. return '\'' . str_replace('\'', '\\\'', base64_decode($match[2])) . '\'';
  12165. },
  12166. $result
  12167. );
  12168. foreach ($vars as $name => $value) {
  12169. $result = str_replace($name, $value, $result);
  12170. $result = str_replace('$GLOBALS[\''. substr($name, 1) . '\']', $value, $result);
  12171. }
  12172. $result = '<?php ' . $result;
  12173. return $result;
  12174. }
  12175. private function deobfuscateWsoEval($str, $matches)
  12176. {
  12177. $result = base64_decode($matches[2]);
  12178. preg_match('~data:image/png;(.*)">~im', $result, $match);
  12179. $result = str_replace( array ('%', '#'), array ('/', '+'), $match[1]);
  12180. $result = gzinflate(base64_decode($result));
  12181. return $result;
  12182. }
  12183. private function deobfuscateAssertStr($str, $matches)
  12184. {
  12185. $result = $matches[1];
  12186. $result = str_rot13($result);
  12187. return $result;
  12188. }
  12189. private function deobfuscateEvalFuncFunc($str, $matches)
  12190. {
  12191. $result = $matches[15];
  12192. $result = base64_decode($result);
  12193. $result = Helpers::decrypt_T_func($result);
  12194. return $result;
  12195. }
  12196. private function deobfuscateFuncVar($str, $matches)
  12197. {
  12198. $arg1 = str_replace($matches[5], '', $matches[3]);
  12199. $funcName = str_replace($matches[8], '', $matches[7]);
  12200. $insidefuncName = str_replace($matches[11], '', $matches[10]);
  12201. if ($funcName === 'create_function') {
  12202. $result = sprintf('%s(%s(\'%s\');', $insidefuncName, $arg1, $matches[15]);
  12203. } else {
  12204. $result = sprintf(
  12205. '%s = %s(\'%s\',\'%s(%s(%s));\');%s(\'%s\');',
  12206. $matches[14],
  12207. $funcName,
  12208. $matches[13],
  12209. $insidefuncName,
  12210. $arg1,
  12211. $matches[13],
  12212. $matches[14],
  12213. $matches[15]
  12214. );
  12215. }
  12216. return $result;
  12217. }
  12218. private function deobfuscateEchoEval($str, $matches)
  12219. {
  12220. $content = $matches[4];
  12221. $content = str_replace($matches[1], $matches[2], $content);
  12222. $result = str_replace($matches[3], $content, $matches[5]);
  12223. return $result;
  12224. }
  12225. private function deobfuscateDictionaryVars($str, $matches)
  12226. {
  12227. $dictionary = $matches[2];
  12228. $content = $matches[4];
  12229. $vars = Helpers::getVarsFromDictionary($dictionary, $matches[0]);
  12230. if (isset($vars[$matches[6]]) && $vars[$matches[6]] === 'create_function') {
  12231. $content = str_replace($matches[5], 'eval(' . $matches[7] . ');', $content);
  12232. }
  12233. foreach ($vars as $key => $value) {
  12234. $content = str_replace($key, $value, $content);
  12235. }
  12236. return $content;
  12237. }
  12238. private function deobfuscateConcatVarFunc($str, $matches)
  12239. {
  12240. $strVar = "";
  12241. if ($matches['concatVar'] !== "") {
  12242. $strVar = Helpers::concatVariableValues($matches[2], false);
  12243. } else {
  12244. if ($matches['strVal'] !== "") {
  12245. $strVar = $matches['strVal'];
  12246. }
  12247. }
  12248. $result = "";
  12249. $iMax = strlen($strVar) / 2;
  12250. for ($i = 0; $i < $iMax; $i++) {
  12251. $result .= chr(base_convert(substr($strVar, $i * 2, 2), 16, 10));
  12252. }
  12253. return $result;
  12254. }
  12255. private function deobfuscateConcatVarFuncFunc($str, $matches)
  12256. {
  12257. $result = $matches[12];
  12258. $func1 = Helpers::concatVariableValues($matches[2]);
  12259. $func2 = Helpers::concatVariableValues($matches[22]);
  12260. $func3 = Helpers::concatVariableValues($matches[19]);
  12261. $func4 = Helpers::concatVariableValues($matches[7]);
  12262. $result = sprintf('eval(%s(%s(%s(%s("%s")))));', $func1, $func2, $func3, $func4, $result);
  12263. return $result;
  12264. }
  12265. private function deobfuscateEvalVarDoubled($str)
  12266. {
  12267. $result = $str;
  12268. preg_match_all('~(\$\w+)\s?=\s?(\w+)\("(\w+)"\);~', $str, $varMatches);
  12269. foreach ($varMatches[0] as $index => $varMatch) {
  12270. $var_name = $varMatches[1][$index];
  12271. $func_name = $varMatches[2][$index];
  12272. $str = $varMatches[3][$index];
  12273. if (Helpers::isSafeFunc($func_name)) {
  12274. $str = @$func_name($str);
  12275. }
  12276. $result = str_replace($varMatch, '', $result);
  12277. $result = str_replace($var_name, $str, $result);
  12278. }
  12279. return $result;
  12280. }
  12281. private function deobfuscateVarFuncsEcho($str, $matches)
  12282. {
  12283. $result = $str;
  12284. $func = $matches[2];
  12285. if (Helpers::isSafeFunc($matches[2])) {
  12286. $result = @$func($matches[3]);
  12287. $result = str_replace('<?php', '', $result);
  12288. }
  12289. return $result;
  12290. }
  12291. private function deobfuscateVarFuncsMany($str, $matches)
  12292. {
  12293. $result = $matches[0];
  12294. $strName = $matches[1];
  12295. $dictionaryName = $matches[4];
  12296. $dictionaryValue = 'bogp%l_zxtdqejysncm4kwuirf6vha';
  12297. $vars = Helpers::getVarsFromDictionary($dictionaryValue, "$matches[6]=$matches[7]");
  12298. $funcs = [];
  12299. $result = str_replace("$matches[6]=$matches[7];", "", $result);
  12300. $result = preg_replace_callback(
  12301. '~(\$\w+)\s?=\s?array\([\'"]([\w+\/]+)[\'"]\s?,\s?[\'"]([\w+\/]+)[\'"](?:\s?,[\'"]([\w+\/]+)[\'"]\s?)?\);\s?((?:(?:\$\w+=\s?\w+\(\$\w+,\s?)|(?:return\s?))(join\([\'"]{2},\s?\1\))\s?\)?\s?;)~msi',
  12302. function ($match) {
  12303. $joinedVars = join("", [$match[2], $match[3], $match[4]]);
  12304. $replace = str_replace($match[6], "'$joinedVars'", $match[5]);
  12305. return $replace;
  12306. },
  12307. $result
  12308. );
  12309. $result = preg_replace_callback(
  12310. '~global\s(\$\w+);\s?((\$\w+)\s?=\s?[\'"]([\w\/+]+)[\'"];\s?(\$\w+)\s?=\s?[\'"]([\w\/+]+)[\'"];\s?(\$\w+)\s?=\s?[\'"]([\w\/+]+)[\'"];\s?\1\s?\.=\s?"({\3}{\5}{\7})");~',
  12311. function ($match) {
  12312. $concatedVars = $match[4] . $match[6] . $match[8];
  12313. $replace = str_replace($match[2], sprintf('%s.="%s"', $match[1], $concatedVars), $match[0]);
  12314. return $replace;
  12315. },
  12316. $result
  12317. );
  12318. $result = preg_replace_callback(
  12319. '~((\$\w+)\s?=\s?[\'"]([\w\/+]+)[\'"];\s?(\$\w+)\s?=\s?[\'"]([\w\/+]+)[\'"];\s?return\s?"({\2}{\4})");~msi',
  12320. function ($match) {
  12321. $concatedVars = $match[3] . $match[5];
  12322. $replace = str_replace($match[1], sprintf('return "%s"', $concatedVars), $match[0]);
  12323. return $replace;
  12324. },
  12325. $result
  12326. );
  12327. $result = preg_replace_callback(
  12328. '~(?:class\s(?<className>\w+)\s?{\s?)?(?:public\s)?function\s(?<methodName>\w+\(\)){\s?(?<codeBlock>.*?;)\s}\s?(?:}\s?)?~msi',
  12329. function ($match) use (&$funcs, $strName, $dictionaryName, $dictionaryValue) {
  12330. $str = "";
  12331. $isConcat = false;
  12332. if (preg_match(
  12333. '~return\s[\'"]([\w+\/+]+)[\'"];~msi',
  12334. $match[0],
  12335. $returnCode
  12336. )) {
  12337. $str = $returnCode[1];
  12338. } else {
  12339. if (preg_match(
  12340. '~global\s(\$\w+);\s?\1\s?\.=\s?["\']([\w+\/+]+)["\'];?~msi',
  12341. $match[0],
  12342. $concatCode
  12343. )) {
  12344. $str = $concatCode[2];
  12345. $isConcat = true;
  12346. } else {
  12347. if (preg_match(
  12348. '~global\s(\$' . substr(
  12349. $dictionaryName,
  12350. 1
  12351. ) . ');\s*return\s*((?:\s?\1\[?{?\d+\]?}?\s?\.?\s?)+);?~msi',
  12352. $match[0],
  12353. $returnCode
  12354. )) {
  12355. $str = Helpers::getVarsFromDictionary(
  12356. $dictionaryValue,
  12357. sprintf('%s=%s', $dictionaryName, $returnCode[2])
  12358. );
  12359. $str = $str[$dictionaryName];
  12360. $isConcat = false;
  12361. }
  12362. }
  12363. }
  12364. $funcs[$match['methodName']]['str'] = $str;
  12365. $funcs[$match['methodName']]['concat'] = $isConcat;
  12366. return "";
  12367. },
  12368. $result
  12369. );
  12370. $result = preg_replace_callback(
  12371. '~(\$[^' . substr($strName, 1) . ']\w+)\s?=\s?(\w+\(\));~msi',
  12372. function ($match) use ($funcs, &$vars) {
  12373. if (isset($funcs[$match[2]]) && !$funcs[$match[2]]['concat']) {
  12374. $vars[$match[1]] = $funcs[$match[2]]['str'];
  12375. }
  12376. return "";
  12377. },
  12378. $result
  12379. );
  12380. foreach ($vars as $name => $var) {
  12381. $result = str_replace($name, $var, $result);
  12382. }
  12383. $result = preg_replace_callback(
  12384. '~([\w_]+)\s?\(\s?([\w_]+)\s?\(\s?((?:\$hf[{\[]\d+[\]}]\s?\.?)+)\s?,\s?(\d+)\s?\),\s?((?:\d+,?)+)\);~msi',
  12385. function ($match) use ($dictionaryValue, $dictionaryName) {
  12386. $str = Helpers::getVarsFromDictionary(
  12387. $dictionaryValue,
  12388. sprintf('%s=%s', $dictionaryName, $match[3])
  12389. );
  12390. $res = "";
  12391. if (Helpers::isSafeFunc($match[2])) {
  12392. $res = @$match[2]($str[$dictionaryName], $match[4]);
  12393. }
  12394. if (Helpers::isSafeFunc($match[1])) {
  12395. $args = [$res];
  12396. $digits = explode(',', $match[5]);
  12397. foreach ($digits as $digit) {
  12398. $args[] = (int)$digit;
  12399. }
  12400. $reflectionMethod = new ReflectionFunction($match[1]);
  12401. $res = $reflectionMethod->invokeArgs($args);
  12402. }
  12403. return "\"$res\";";
  12404. },
  12405. $result
  12406. );
  12407. $strToDecode = "";
  12408. preg_replace_callback(
  12409. '~(?:\$EZU\s?=\s?m9Lg\(\s?\$EZU\s*,\s?["\'](?<concat>[\w+\/]+)[\'"]\s?\)\s?;)|(?:\$EZU\s?=\s?m9Lg\(\s?\$EZU\s?,\s?(?<concatFunc>\w+\(\))\)\s?;)|(?:\$EZU\s?\.?=\s?(?:\$EZU\.)?\s?["\'](?<concatStr>[\w+\/=]+)[\'"]\s?;)|(?:\$EZU\s?\.?=\s?(?<concatFuncSingle>\w+\(\))\s?;)|(\$\w+\s?=\s?new\s\w+\(\)\s?;\s?\$EZU\s?\.?=\s?\$EZU\s?\.\s?\$\w+->(?<concatFuncClass>\w+\(\)\s?))|(?:(?<func>[^,\s]\w+\(\)))~msi',
  12410. function ($match) use (&$strToDecode, $funcs) {
  12411. if (isset($match['concat']) && $match['concat'] !== "") {
  12412. $strToDecode .= $match['concat'];
  12413. return;
  12414. }
  12415. if (isset($match['concatStr']) && $match['concatStr'] !== "") {
  12416. $strToDecode .= $match['concatStr'];
  12417. return;
  12418. }
  12419. if (isset($match['concatFunc']) && $match['concatFunc'] !== "") {
  12420. $strToDecode .= $funcs[$match['concatFunc']]['str'];
  12421. return;
  12422. }
  12423. if (isset($match['concatFuncSingle']) && $match['concatFuncSingle'] !== "") {
  12424. $strToDecode .= $funcs[$match['concatFuncSingle']]['str'];
  12425. return;
  12426. }
  12427. if (isset($match['concatFuncClass']) && $match['concatFuncClass'] !== "") {
  12428. $strToDecode .= $funcs[$match['concatFuncClass']]['str'];
  12429. return;
  12430. }
  12431. if (isset($match['func']) && $match['func'] !== "") {
  12432. $strToDecode .= $funcs[$match['func']]['str'];
  12433. return;
  12434. }
  12435. },
  12436. $result
  12437. );
  12438. $result = base64_decode($strToDecode);
  12439. return $result;
  12440. }
  12441. private function deobfuscateGlobalArrayEval($str, $matches)
  12442. {
  12443. $result = str_replace($matches[1], "", $str);
  12444. $dictionary = stripcslashes($matches[3]);
  12445. $dictionaryVar = stripcslashes($matches[2]);
  12446. $dictionaryVar = str_replace('{"GLOBALS"}', 'GLOBALS', $dictionaryVar);
  12447. $result = Helpers::replaceVarsFromDictionary($dictionaryVar, $dictionary, $result);
  12448. preg_match_all('~(\$GLOBALS\[[\'\w]+\])\s?=\s?[\'"]?([\w\-\_\$]+)["\']?;\s?~msi', $result, $varMatch);
  12449. foreach ($varMatch[1] as $index => $var) {
  12450. $result = str_replace($varMatch[0][$index], "", $result);
  12451. $result = str_replace($varMatch[1][$index], $varMatch[2][$index], $result);
  12452. }
  12453. return $result;
  12454. }
  12455. private function deobfuscateTinkleShell($str, $matches)
  12456. {
  12457. $result = $str;
  12458. $dictionaryStr = $matches[2];
  12459. $decodeKey = Helpers::getDecryptKeyForTinkleShell(strlen($str));
  12460. $vars = [
  12461. $matches[4] => $matches[5],
  12462. ];
  12463. $result = str_replace(' ', '', $result);
  12464. $matches[3] = str_replace(' ', '', $matches[3]);
  12465. preg_match_all('~(\$\w+)=(?:\$\w+\[\'\w\'\+\d+\+\'\w\'\]\.?)+;~msi', $matches[3], $matchVars);
  12466. foreach ($matchVars[0] as $index => $match) {
  12467. preg_match_all('~\$\w+\[\'\w\'\+(\d+)\+\'\w\'\]\.?~msi', $match, $values);
  12468. foreach ($values[1] as $value) {
  12469. if (!isset($vars[$matchVars[1][$index]])) {
  12470. $vars[$matchVars[1][$index]] = $dictionaryStr[$value] ?? $value;
  12471. } else {
  12472. $vars[$matchVars[1][$index]] .= $dictionaryStr[$value] ?? $value;
  12473. }
  12474. }
  12475. }
  12476. $result = str_replace($matches[3], "", $result);
  12477. preg_match_all('~(\$\w+)=(\$\w+)\((\$\w+),(\$\w+)\(""\),"([\w\+]+)"\);~msi', $result, $matchVars);
  12478. foreach ($matchVars[1] as $index => $varName) {
  12479. $func = $vars[$matchVars[2][$index]] ?? $matchVars[2][$index];
  12480. $arg1 = $vars[$matchVars[3][$index]] ?? $matchVars[3][$index];
  12481. $arg2 = $vars[$matchVars[4][$index]] ?? $matchVars[4][$index];
  12482. $argStr = $matchVars[5][$index];
  12483. if (Helpers::isSafeFunc($func)) {
  12484. $value = @$func($arg1, $arg2 === 'trim' ? "" : $arg2, $argStr);
  12485. $vars[$varName] = $value;
  12486. }
  12487. $result = str_replace($matchVars[0][$index], '', $result);
  12488. }
  12489. $func = $vars[$matches[10]] ?? '';
  12490. if (Helpers::isSafeFunc($func)) {
  12491. $result = @$func($matches[11], $vars[$matches[12]] ?? "", $decodeKey);
  12492. }
  12493. $func = $vars[$matches[7]] ?? '';
  12494. if (Helpers::isSafeFunc($func)) {
  12495. $result = @$func($vars[$matches[8]] ?? '', "", $result);
  12496. }
  12497. $func = $vars[$matches[6]] ?? '';
  12498. if (Helpers::isSafeFunc($func)) {
  12499. $result = @$func($result);
  12500. }
  12501. return $result;
  12502. }
  12503. private function deobfuscateWsoFunc($str, $matches)
  12504. {
  12505. if (isset($matches['str'])) {
  12506. return gzinflate(base64_decode($matches['str']));
  12507. }
  12508. return $matches[0];
  12509. }
  12510. private function deobfuscateEvalWanFunc($str, $matches)
  12511. {
  12512. $result = gzinflate(base64_decode($matches[4]));
  12513. for ($i = 0; $i < strlen($result); $i++) {
  12514. $result[$i] = chr(ord($result[$i]) - 1);
  12515. }
  12516. return $result;
  12517. }
  12518. private function deobfuscateFuncFile($str, $matches)
  12519. {
  12520. $result = base64_decode($matches[4]);
  12521. return $result;
  12522. }
  12523. private function deobfuscateGulf($str, $matches)
  12524. {
  12525. $result = str_replace("'.'", '', str_replace($matches[2], '', $matches[1]));
  12526. $vars = Helpers::collectVars($matches[2], "'");
  12527. $result = Helpers::replaceVarsFromArray($vars, $result);
  12528. $tempCode = gzinflate(base64_decode($matches[4]));
  12529. $result .= PHP_EOL . $tempCode;
  12530. return $result;
  12531. }
  12532. private function deobfuscateEvalConcatAsciiChars($str, $matches)
  12533. {
  12534. $result = '';
  12535. $num = (int)$matches[2];
  12536. $str = (string)$matches[4];
  12537. $len = strlen($str);
  12538. for ($i = 0; $i < $len; $i++) {
  12539. $result .= chr(ord($str[$i]) ^ $num);
  12540. }
  12541. $result = str_replace(['<?php', '?>', ''], '', $result);
  12542. return $result;
  12543. }
  12544. }
  12545. /**
  12546. * Class Factory.
  12547. */
  12548. class Factory
  12549. {
  12550. /**
  12551. * @var Factory
  12552. */
  12553. private static $instance;
  12554. /**
  12555. * @var array
  12556. */
  12557. private static $config;
  12558. /**
  12559. * Factory constructor.
  12560. *
  12561. * @throws Exception
  12562. */
  12563. private function __construct()
  12564. {
  12565. }
  12566. /**
  12567. * Instantiate and return a factory.
  12568. *
  12569. * @return Factory
  12570. * @throws Exception
  12571. */
  12572. public static function instance()
  12573. {
  12574. if (self::$instance === null) {
  12575. self::$instance = new self();
  12576. }
  12577. return self::$instance;
  12578. }
  12579. /**
  12580. * Configure a factory.
  12581. *
  12582. * This method can be called only once.
  12583. *
  12584. * @param array $config
  12585. * @throws Exception
  12586. */
  12587. public static function configure($config = [])
  12588. {
  12589. if (self::isConfigured()) {
  12590. throw new Exception('The Factory::configure() method can be called only once.');
  12591. }
  12592. self::$config = $config;
  12593. }
  12594. /**
  12595. * Return whether a factory is configured or not.
  12596. *
  12597. * @return bool
  12598. */
  12599. public static function isConfigured()
  12600. {
  12601. return self::$config !== null;
  12602. }
  12603. /**
  12604. * Creates and returns an instance of a particular class.
  12605. *
  12606. * @param string $class
  12607. *
  12608. * @param array $constructorArgs
  12609. * @return mixed
  12610. * @throws Exception
  12611. */
  12612. public function create($class, $constructorArgs = [])
  12613. {
  12614. if (!isset(self::$config[$class])) {
  12615. throw new Exception("The factory is not contains configuration for '{$class}'.");
  12616. }
  12617. if (is_callable(self::$config[$class])) {
  12618. return call_user_func(self::$config[$class], $constructorArgs);
  12619. } else {
  12620. return new self::$config[$class](...$constructorArgs);
  12621. }
  12622. }
  12623. }
  12624. class Template
  12625. {
  12626. protected $html;
  12627. protected $variables = [];
  12628. /**
  12629. * Template constructor.
  12630. *
  12631. * @param string $html
  12632. */
  12633. public function __construct($html)
  12634. {
  12635. $this->html = $html;
  12636. }
  12637. /**
  12638. * @param $html
  12639. *
  12640. * @return Template
  12641. */
  12642. public static function create($html)
  12643. {
  12644. return new static($html);
  12645. }
  12646. /**
  12647. * @param $key
  12648. * @param $value
  12649. */
  12650. public function set($key, $value)
  12651. {
  12652. $this->variables[$key] = $value;
  12653. }
  12654. /**
  12655. * @return string
  12656. */
  12657. public function render()
  12658. {
  12659. if (!empty($this->variables)) {
  12660. foreach ($this->variables as $key => $value) {
  12661. $this->html = str_replace("@@$key@@", $value, $this->html);
  12662. }
  12663. }
  12664. return $this->html;
  12665. }
  12666. }
  12667. class Translate
  12668. {
  12669. const LANG_EN = 'EN';
  12670. const LANG_RU = 'RU';
  12671. /**
  12672. * @var string
  12673. */
  12674. private static $lang = self::LANG_EN;
  12675. /**
  12676. * @param $lang
  12677. */
  12678. public static function setLang($lang)
  12679. {
  12680. self::$lang = $lang;
  12681. }
  12682. /**
  12683. * @param string $key
  12684. * @param null|array $params
  12685. *
  12686. * @param null|string $language
  12687. *
  12688. * @return string
  12689. */
  12690. public static function getStr($key, $params = null, $language = null)
  12691. {
  12692. if ($language && in_array($language, [self::LANG_RU, self::LANG_EN])) {
  12693. $lang = $language;
  12694. } else {
  12695. $lang = self::$lang;
  12696. }
  12697. $result = ($lang === self::LANG_RU) ? TranslateList::RU[$key] : TranslateList::EN[$key];
  12698. if ($params && is_array($params) && !empty($params)) {
  12699. return vsprintf($result, $params);
  12700. }
  12701. return $result;
  12702. }
  12703. }