webshell-analyzer 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- webshell_analyzer-1.0.0/LICENSE +21 -0
- webshell_analyzer-1.0.0/PKG-INFO +105 -0
- webshell_analyzer-1.0.0/README.md +62 -0
- webshell_analyzer-1.0.0/pyproject.toml +56 -0
- webshell_analyzer-1.0.0/setup.cfg +4 -0
- webshell_analyzer-1.0.0/webshell_analyzer/__init__.py +0 -0
- webshell_analyzer-1.0.0/webshell_analyzer/cli/__init__.py +0 -0
- webshell_analyzer-1.0.0/webshell_analyzer/cli/cli.py +151 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/composer.json +5 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/composer.lock +77 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/src/NodeVisitor.php +85 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/src/astBuilder.php +50 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/src/astExtractor.php +50 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/src/featuresDeclare.php +36 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/autoload.php +25 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/composer/ClassLoader.php +579 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/composer/InstalledVersions.php +378 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/composer/autoload_classmap.php +10 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/composer/autoload_namespaces.php +9 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/composer/autoload_psr4.php +10 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/composer/autoload_real.php +38 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/composer/autoload_static.php +36 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/composer/installed.json +67 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/composer/installed.php +32 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/composer/platform_check.php +26 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php +150 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Class_.php +151 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Declaration.php +50 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php +86 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Enum_.php +116 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php +73 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Function_.php +67 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Interface_.php +94 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Method.php +147 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php +45 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php +171 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Property.php +223 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php +65 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php +145 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Trait_.php +83 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Use_.php +49 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder.php +12 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php +375 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php +338 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Comment/Doc.php +6 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Comment.php +209 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php +6 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php +237 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Error.php +173 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php +43 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php +17 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler.php +12 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php +31 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Internal/Differ.php +178 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php +71 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenPolyfill.php +237 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php +282 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/JsonDecoder.php +108 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php +230 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AsymmetricVisibilityTokenEmulator.php +93 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php +49 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php +26 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php +45 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php +60 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php +19 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php +60 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/PipeOperatorEmulator.php +45 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/PropertyTokenEmulator.php +19 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php +31 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php +31 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php +37 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php +30 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/VoidCastEmulator.php +98 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer.php +116 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Modifiers.php +85 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NameContext.php +284 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php +44 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/ArrayItem.php +43 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Attribute.php +33 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php +27 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/ClosureUse.php +36 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/ComplexType.php +13 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Const_.php +36 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/DeclareItem.php +37 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php +33 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php +34 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php +84 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php +33 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php +11 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php +11 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php +11 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php +11 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php +11 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php +11 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php +11 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php +11 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php +11 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php +11 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php +11 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php +11 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php +11 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php +33 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pipe.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php +37 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php +60 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php +11 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php +16 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php +11 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php +11 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Void_.php +11 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php +25 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php +36 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php +86 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php +30 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php +30 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php +33 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php +38 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php +38 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php +35 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php +34 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php +32 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php +45 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php +40 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php +45 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php +35 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php +35 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php +30 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php +45 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php +36 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php +37 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php +33 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr.php +8 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php +40 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Identifier.php +85 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/InterpolatedStringPart.php +32 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php +27 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/MatchArm.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php +49 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php +49 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php +278 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/NullableType.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php +123 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/PropertyHook.php +105 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/PropertyItem.php +37 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php +17 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Float_.php +78 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Int_.php +82 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/InterpolatedString.php +34 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Property.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php +27 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php +161 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar.php +6 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/StaticVar.php +39 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Block.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php +33 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php +40 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php +77 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php +109 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php +154 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php +94 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php +37 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php +17 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php +34 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php +33 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php +33 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php +36 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php +44 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php +32 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php +47 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php +50 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php +81 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php +30 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php +41 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php +46 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php +40 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php +30 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php +37 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php +16 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php +121 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php +17 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php +15 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php +30 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php +33 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php +33 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php +37 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php +33 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php +12 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php +34 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php +37 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php +29 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php +17 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php +47 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php +33 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt.php +8 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/UnionType.php +27 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/UseItem.php +55 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php +16 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php +27 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node.php +150 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php +181 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeDumper.php +299 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeFinder.php +90 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php +287 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php +26 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php +19 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/CommentAnnotatingVisitor.php +82 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php +47 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php +49 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php +269 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php +73 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php +51 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor.php +124 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php +24 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php +2919 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Parser/Php8.php +2917 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Parser.php +24 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php +1335 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php +42 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/PhpVersion.php +175 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php +1232 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter.php +51 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php +1706 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Token.php +18 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/compatibility_tokens.php +71 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/extractor.py +73 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/lexical_extraction/lexicalExtractor.py +31 -0
- webshell_analyzer-1.0.0/webshell_analyzer/extractor/statistical_extraction/statisticalExtractor.py +60 -0
- webshell_analyzer-1.0.0/webshell_analyzer/model/features_selected.json +1 -0
- webshell_analyzer-1.0.0/webshell_analyzer/model/model_loader.py +19 -0
- webshell_analyzer-1.0.0/webshell_analyzer/model/rf_webshell_model.joblib +0 -0
- webshell_analyzer-1.0.0/webshell_analyzer/modules/__init__.py +0 -0
- webshell_analyzer-1.0.0/webshell_analyzer/modules/detector.py +174 -0
- webshell_analyzer-1.0.0/webshell_analyzer/modules/scanner.py +68 -0
- webshell_analyzer-1.0.0/webshell_analyzer.egg-info/PKG-INFO +105 -0
- webshell_analyzer-1.0.0/webshell_analyzer.egg-info/SOURCES.txt +307 -0
- webshell_analyzer-1.0.0/webshell_analyzer.egg-info/dependency_links.txt +1 -0
- webshell_analyzer-1.0.0/webshell_analyzer.egg-info/entry_points.txt +2 -0
- webshell_analyzer-1.0.0/webshell_analyzer.egg-info/requires.txt +5 -0
- webshell_analyzer-1.0.0/webshell_analyzer.egg-info/top_level.txt +1 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Adelia saputri
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: webshell-analyzer
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Webshell Detection Tool integrating Machine Learning based on Static Feature Extraction
|
|
5
|
+
Author-email: Adelia Saputri <adelias.dev@gmail.com>
|
|
6
|
+
License: MIT License
|
|
7
|
+
|
|
8
|
+
Copyright (c) 2026 Adelia saputri
|
|
9
|
+
|
|
10
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
11
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
12
|
+
in the Software without restriction, including without limitation the rights
|
|
13
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
14
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
15
|
+
furnished to do so, subject to the following conditions:
|
|
16
|
+
|
|
17
|
+
The above copyright notice and this permission notice shall be included in all
|
|
18
|
+
copies or substantial portions of the Software.
|
|
19
|
+
|
|
20
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
21
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
22
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
23
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
24
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
25
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
26
|
+
SOFTWARE.
|
|
27
|
+
|
|
28
|
+
Keywords: webshell,detection,machine learning,security,php
|
|
29
|
+
Classifier: Programming Language :: Python :: 3
|
|
30
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
31
|
+
Classifier: Operating System :: OS Independent
|
|
32
|
+
Classifier: Topic :: Security
|
|
33
|
+
Classifier: Intended Audience :: System Administrators
|
|
34
|
+
Requires-Python: >=3.8
|
|
35
|
+
Description-Content-Type: text/markdown
|
|
36
|
+
License-File: LICENSE
|
|
37
|
+
Requires-Dist: pandas
|
|
38
|
+
Requires-Dist: scikit-learn
|
|
39
|
+
Requires-Dist: colorama
|
|
40
|
+
Requires-Dist: pyfiglet
|
|
41
|
+
Requires-Dist: joblib
|
|
42
|
+
Dynamic: license-file
|
|
43
|
+
|
|
44
|
+
# Webshell-Analyzer
|
|
45
|
+

|
|
46
|
+
webshell analyzer is command line based webshell detection tool that utillizes static feature extraction and using Random Forest classification to detect malicious PHP webshell.
|
|
47
|
+
|
|
48
|
+
# Table of Contens
|
|
49
|
+
- About
|
|
50
|
+
- Features
|
|
51
|
+
- Requirements
|
|
52
|
+
- Instalation
|
|
53
|
+
- Usage
|
|
54
|
+
- Commands
|
|
55
|
+
|
|
56
|
+
# About
|
|
57
|
+
webshell analyzer was developed to assist security analysts, researchers, and system administrators in identifying potentially malicious PHP files before they are executed on a web server. the tool helps to mitigate the risk of unauthorised access, web defacement attacks, and persistent backdoor attacks, which are commonly associated with webshells.
|
|
58
|
+
|
|
59
|
+
this system combines three static code analysis methods: lexical analysis, statistical analysis, and Abstract Syntax Tree (AST) analysis. this approach enables the detection process to identify suspicious functions, code structure patterns, and statistical characteristics that may indicate malicious behavior.
|
|
60
|
+
|
|
61
|
+
# Features
|
|
62
|
+
- Scan individual PHP files for webshell indicators
|
|
63
|
+
- Recursively scan entire directories
|
|
64
|
+
- Static feature extraction (no code execution required)
|
|
65
|
+
- Machine learning classification using Random Forest
|
|
66
|
+
- Export results to only JSON file
|
|
67
|
+
- Interactive CLI environment
|
|
68
|
+
|
|
69
|
+
# Requirements
|
|
70
|
+
before installing and running webshell analyzer, ensure that your system meets the following requirements :
|
|
71
|
+
|
|
72
|
+
- Python 3.10 or later
|
|
73
|
+
- Pip (oython package manager)
|
|
74
|
+
- Git
|
|
75
|
+
|
|
76
|
+
**Python Dependencies**
|
|
77
|
+
The required python packages are listed in the ```requirements.txt``` file and can be installed automatically using :
|
|
78
|
+
|
|
79
|
+
```pip install -r requirements.txt```
|
|
80
|
+
|
|
81
|
+
# Installation
|
|
82
|
+
to install webshell analyzer, clone this repository to your local machine using the following command :
|
|
83
|
+
|
|
84
|
+
```git clone https://github.com```
|
|
85
|
+
|
|
86
|
+
After the installation process is complete, the system is ready to use.
|
|
87
|
+
|
|
88
|
+
# Usage
|
|
89
|
+
To get started with Webshell Analyzer:
|
|
90
|
+
|
|
91
|
+
Start ```bash wsanalyzer```: this is the main command to enter the Webshell Analyzer interactive environment.
|
|
92
|
+
You will be greeted with the Webshell Analyzer prompt:
|
|
93
|
+
|
|
94
|
+
From here, you can run all available commands such as `scan`, `detect`, `--output`, `help`, `exit`.
|
|
95
|
+
|
|
96
|
+
# Command
|
|
97
|
+
1. ```scan <directory_path> [--output <output_file.json>]``` -> scan all PHP files in a directory for webshell detection
|
|
98
|
+
2. ```detect <file_path> [--output <output_file.json>]``` -> detect a specific file for webshell activity
|
|
99
|
+
3. ```help``` -> for show this help message
|
|
100
|
+
4. ```exit``` -> For Exit the Webshell Analyzer
|
|
101
|
+
5. ```--output <output_file.json>``` -> Save the detection results to a JSON file
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Webshell-Analyzer
|
|
2
|
+

|
|
3
|
+
webshell analyzer is command line based webshell detection tool that utillizes static feature extraction and using Random Forest classification to detect malicious PHP webshell.
|
|
4
|
+
|
|
5
|
+
# Table of Contens
|
|
6
|
+
- About
|
|
7
|
+
- Features
|
|
8
|
+
- Requirements
|
|
9
|
+
- Instalation
|
|
10
|
+
- Usage
|
|
11
|
+
- Commands
|
|
12
|
+
|
|
13
|
+
# About
|
|
14
|
+
webshell analyzer was developed to assist security analysts, researchers, and system administrators in identifying potentially malicious PHP files before they are executed on a web server. the tool helps to mitigate the risk of unauthorised access, web defacement attacks, and persistent backdoor attacks, which are commonly associated with webshells.
|
|
15
|
+
|
|
16
|
+
this system combines three static code analysis methods: lexical analysis, statistical analysis, and Abstract Syntax Tree (AST) analysis. this approach enables the detection process to identify suspicious functions, code structure patterns, and statistical characteristics that may indicate malicious behavior.
|
|
17
|
+
|
|
18
|
+
# Features
|
|
19
|
+
- Scan individual PHP files for webshell indicators
|
|
20
|
+
- Recursively scan entire directories
|
|
21
|
+
- Static feature extraction (no code execution required)
|
|
22
|
+
- Machine learning classification using Random Forest
|
|
23
|
+
- Export results to only JSON file
|
|
24
|
+
- Interactive CLI environment
|
|
25
|
+
|
|
26
|
+
# Requirements
|
|
27
|
+
before installing and running webshell analyzer, ensure that your system meets the following requirements :
|
|
28
|
+
|
|
29
|
+
- Python 3.10 or later
|
|
30
|
+
- Pip (oython package manager)
|
|
31
|
+
- Git
|
|
32
|
+
|
|
33
|
+
**Python Dependencies**
|
|
34
|
+
The required python packages are listed in the ```requirements.txt``` file and can be installed automatically using :
|
|
35
|
+
|
|
36
|
+
```pip install -r requirements.txt```
|
|
37
|
+
|
|
38
|
+
# Installation
|
|
39
|
+
to install webshell analyzer, clone this repository to your local machine using the following command :
|
|
40
|
+
|
|
41
|
+
```git clone https://github.com```
|
|
42
|
+
|
|
43
|
+
After the installation process is complete, the system is ready to use.
|
|
44
|
+
|
|
45
|
+
# Usage
|
|
46
|
+
To get started with Webshell Analyzer:
|
|
47
|
+
|
|
48
|
+
Start ```bash wsanalyzer```: this is the main command to enter the Webshell Analyzer interactive environment.
|
|
49
|
+
You will be greeted with the Webshell Analyzer prompt:
|
|
50
|
+
|
|
51
|
+
From here, you can run all available commands such as `scan`, `detect`, `--output`, `help`, `exit`.
|
|
52
|
+
|
|
53
|
+
# Command
|
|
54
|
+
1. ```scan <directory_path> [--output <output_file.json>]``` -> scan all PHP files in a directory for webshell detection
|
|
55
|
+
2. ```detect <file_path> [--output <output_file.json>]``` -> detect a specific file for webshell activity
|
|
56
|
+
3. ```help``` -> for show this help message
|
|
57
|
+
4. ```exit``` -> For Exit the Webshell Analyzer
|
|
58
|
+
5. ```--output <output_file.json>``` -> Save the detection results to a JSON file
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "webshell-analyzer"
|
|
7
|
+
version = "1.0.0"
|
|
8
|
+
authors = [
|
|
9
|
+
{name = "Adelia Saputri", email = "adelias.dev@gmail.com"}
|
|
10
|
+
]
|
|
11
|
+
description = "Webshell Detection Tool integrating Machine Learning based on Static Feature Extraction"
|
|
12
|
+
readme = "README.md"
|
|
13
|
+
license = {file = "LICENSE"}
|
|
14
|
+
requires-python = ">=3.8"
|
|
15
|
+
keywords = ["webshell", "detection", "machine learning", "security", "php"]
|
|
16
|
+
classifiers = [
|
|
17
|
+
"Programming Language :: Python :: 3",
|
|
18
|
+
"License :: OSI Approved :: MIT License",
|
|
19
|
+
"Operating System :: OS Independent",
|
|
20
|
+
"Topic :: Security",
|
|
21
|
+
"Intended Audience :: System Administrators",
|
|
22
|
+
]
|
|
23
|
+
dependencies = [
|
|
24
|
+
"pandas",
|
|
25
|
+
"scikit-learn",
|
|
26
|
+
"colorama",
|
|
27
|
+
"pyfiglet",
|
|
28
|
+
"joblib",
|
|
29
|
+
]
|
|
30
|
+
|
|
31
|
+
[project.scripts]
|
|
32
|
+
wsanalyzer = "webshell_analyzer.cli.cli:main"
|
|
33
|
+
|
|
34
|
+
[tool.setuptools.packages.find]
|
|
35
|
+
where = ["."]
|
|
36
|
+
include = ["webshell_analyzer*"]
|
|
37
|
+
|
|
38
|
+
[tool.setuptools.package-data]
|
|
39
|
+
webshell_analyzer = [
|
|
40
|
+
# File model
|
|
41
|
+
"model/*.joblib",
|
|
42
|
+
"model/*.json",
|
|
43
|
+
|
|
44
|
+
# File PHP AST extraction — src
|
|
45
|
+
"extractor/ast_extraction/src/*.php",
|
|
46
|
+
|
|
47
|
+
# File vendor nikic/PHP-Parser
|
|
48
|
+
"extractor/ast_extraction/vendor/autoload.php",
|
|
49
|
+
"extractor/ast_extraction/vendor/composer/*.php",
|
|
50
|
+
"extractor/ast_extraction/vendor/composer/*.json",
|
|
51
|
+
"extractor/ast_extraction/vendor/nikic/**/*.php",
|
|
52
|
+
|
|
53
|
+
# File composer
|
|
54
|
+
"extractor/ast_extraction/composer.json",
|
|
55
|
+
"extractor/ast_extraction/composer.lock",
|
|
56
|
+
]
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import pyfiglet
|
|
2
|
+
import cmd
|
|
3
|
+
import os
|
|
4
|
+
import shlex
|
|
5
|
+
import json
|
|
6
|
+
import sys
|
|
7
|
+
from colorama import Fore, Style, init
|
|
8
|
+
from webshell_analyzer.modules.detector import detect_file
|
|
9
|
+
from webshell_analyzer.modules.scanner import scan_directory
|
|
10
|
+
|
|
11
|
+
sys.stdout.reconfigure(encoding='utf-8')
|
|
12
|
+
init(autoreset=True)
|
|
13
|
+
|
|
14
|
+
def banner ():
|
|
15
|
+
f = pyfiglet.figlet_format("W3bshell-Analyzer", font="big_money-se")
|
|
16
|
+
print(Fore.MAGENTA + f)
|
|
17
|
+
print(Fore.MAGENTA + "Webshell Analyzer Tool Integrating Machine Learning".center(80))
|
|
18
|
+
print(Fore.MAGENTA + "Based on Extracting Features from PHP Source Code".center(80))
|
|
19
|
+
print(Fore.MAGENTA + "=" * 80)
|
|
20
|
+
print(Fore.MAGENTA + "Author : Adelia Saputri")
|
|
21
|
+
print(Fore.MAGENTA + "Github : https://github.com/adeliasaputri")
|
|
22
|
+
print(Fore.MAGENTA + "Email : adelias.dev@gmail.com")
|
|
23
|
+
print(Fore.MAGENTA + "Engine : AST + Lexical + Statistical Features")
|
|
24
|
+
print(Fore.MAGENTA + "=" * 80 + "\n")
|
|
25
|
+
|
|
26
|
+
def parse_args(args):
|
|
27
|
+
path = None
|
|
28
|
+
output = None
|
|
29
|
+
output_missing = False
|
|
30
|
+
|
|
31
|
+
i = 0
|
|
32
|
+
while i < len(args):
|
|
33
|
+
if args[i] == "--output":
|
|
34
|
+
if i + 1 < len(args) and not args[i + 1].startswith("--"):
|
|
35
|
+
output = args[i + 1]
|
|
36
|
+
i += 1
|
|
37
|
+
else:
|
|
38
|
+
output_missing = True
|
|
39
|
+
else:
|
|
40
|
+
path = args[i]
|
|
41
|
+
i += 1
|
|
42
|
+
return path, output, output_missing
|
|
43
|
+
|
|
44
|
+
class webshell_cmd(cmd.Cmd):
|
|
45
|
+
prompt = Fore.MAGENTA + "w3bshell-analyzer> "
|
|
46
|
+
|
|
47
|
+
def do_scan(self, arg):
|
|
48
|
+
"""Scan Directory: scan <directory_path>"""
|
|
49
|
+
try :
|
|
50
|
+
args = shlex.split(arg)
|
|
51
|
+
except :
|
|
52
|
+
print(Fore.RED + "Error: Invalid arguments. Usage: scan <path> [--output <output_file>]")
|
|
53
|
+
return
|
|
54
|
+
|
|
55
|
+
if len(args) == 0:
|
|
56
|
+
print(Fore.RED + "[ERROR] Path is required. Usage: scan <path> [--output <output_file>]")
|
|
57
|
+
return
|
|
58
|
+
|
|
59
|
+
directorypath, output, output_missing = parse_args(args)
|
|
60
|
+
|
|
61
|
+
if output_missing:
|
|
62
|
+
print(Fore.RED + "[ERROR] flag '--output' is requires a filename argument. Usage: detect <file_path> --output <output_file.json>")
|
|
63
|
+
return
|
|
64
|
+
|
|
65
|
+
if not os.path.isdir(directorypath):
|
|
66
|
+
print(Fore.RED + f"[ERROR] Path '{directorypath}' is not a valid directory.")
|
|
67
|
+
return
|
|
68
|
+
|
|
69
|
+
#Validasi output
|
|
70
|
+
if output is not None:
|
|
71
|
+
output_dir = os.path.dirname(output)
|
|
72
|
+
if output_dir != "" and not os.path.isdir(output_dir):
|
|
73
|
+
print(Fore.RED + f"[ERROR] Cannot save output to Directory \"{output_dir}\". Please ensure the destination folder exists before saving!")
|
|
74
|
+
return
|
|
75
|
+
if not output.endswith(".json"):
|
|
76
|
+
print(Fore.RED + f"[ERROR] Output file must have a .json extension")
|
|
77
|
+
return
|
|
78
|
+
|
|
79
|
+
print(Fore.GREEN + f"[SCANNING DIRECTORY..]: {directorypath}\n")
|
|
80
|
+
result = scan_directory(directorypath, output_file=output)
|
|
81
|
+
|
|
82
|
+
def do_detect(self, arg):
|
|
83
|
+
"""Detect File: detect <file_path>"""
|
|
84
|
+
try :
|
|
85
|
+
args = shlex.split(arg)
|
|
86
|
+
except :
|
|
87
|
+
print(Fore.RED + "[ERROR] Invalid arguments. Usage: detect <file_path> [--output <output_file>]")
|
|
88
|
+
return
|
|
89
|
+
|
|
90
|
+
if len(args) == 0:
|
|
91
|
+
print(Fore.RED + "[ERROR] Path is required. Usage: detect <path> [--output <output_file>]")
|
|
92
|
+
return
|
|
93
|
+
|
|
94
|
+
filepath, output, output_missing = parse_args(args)
|
|
95
|
+
|
|
96
|
+
if output_missing:
|
|
97
|
+
print(Fore.RED + "[ERROR] flag '--output' is requires a filename argument. Usage: detect <file_path> --output <output_file.json>")
|
|
98
|
+
return
|
|
99
|
+
|
|
100
|
+
if not os.path.isfile(filepath):
|
|
101
|
+
print(Fore.RED + f"[ERROR] File '{filepath}' does not exist.")
|
|
102
|
+
return
|
|
103
|
+
|
|
104
|
+
#Validasi output
|
|
105
|
+
if output is not None:
|
|
106
|
+
output_dir = os.path.dirname(output)
|
|
107
|
+
if output_dir != "" and not os.path.isdir(output_dir):
|
|
108
|
+
print(Fore.RED + f"[ERROR] Cannot save output to Directory {output_dir}")
|
|
109
|
+
print(Fore.RED + f"Please ensure the destination folder exists before saving")
|
|
110
|
+
return
|
|
111
|
+
if not output.endswith(".json"):
|
|
112
|
+
print(Fore.RED + f"[ERROR] Output file must have a .json extension")
|
|
113
|
+
return
|
|
114
|
+
|
|
115
|
+
print (Fore.GREEN + f"[ANALYZING..] {filepath}")
|
|
116
|
+
detect_file(filepath, output_file=output)
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def do_help(self, arg):
|
|
120
|
+
"""Show help message"""
|
|
121
|
+
print(Fore.CYAN + "=" * 50)
|
|
122
|
+
print(Fore.CYAN + "AVAILABLE COMMANDS: \n")
|
|
123
|
+
print(Fore.CYAN + "scan <directory_path> [--output <output_file.json>] -> scan all PHP files in a directory for webshell detection")
|
|
124
|
+
print(Fore.CYAN + "detect <file_path> [--output <output_file.json>] -> detect a specific file for webshell activity")
|
|
125
|
+
print(Fore.CYAN + "help -> for show this help message")
|
|
126
|
+
print(Fore.CYAN + "exit -> For Exit the Webshell Analyzer")
|
|
127
|
+
print(Fore.CYAN + "=" * 50)
|
|
128
|
+
print(Fore.CYAN + "OPTIONAL ARGUMENTS: \n")
|
|
129
|
+
print(Fore.CYAN + "--output <output_file.json> -> Save the detection results to a JSON file")
|
|
130
|
+
print(Fore.CYAN + "=" * 50 + "\n")
|
|
131
|
+
|
|
132
|
+
def do_exit(self, arg):
|
|
133
|
+
"""Exit the webshell analyzer"""
|
|
134
|
+
print(Fore.GREEN + "Exiting webshell analyzer, Goodbye!")
|
|
135
|
+
return True
|
|
136
|
+
|
|
137
|
+
def default(self, line):
|
|
138
|
+
"""Handle unknown commands"""
|
|
139
|
+
print(Fore.RED + "Unknown command: " + f'{line}')
|
|
140
|
+
print("Type 'help' for a list of available commands.\n")
|
|
141
|
+
|
|
142
|
+
def emptyline(self):
|
|
143
|
+
pass
|
|
144
|
+
|
|
145
|
+
def main() :
|
|
146
|
+
banner()
|
|
147
|
+
webshell_cmd().cmdloop()
|
|
148
|
+
|
|
149
|
+
if __name__ == "__main__":
|
|
150
|
+
main()
|
|
151
|
+
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_readme": [
|
|
3
|
+
"This file locks the dependencies of your project to a known state",
|
|
4
|
+
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
|
5
|
+
"This file is @generated automatically"
|
|
6
|
+
],
|
|
7
|
+
"content-hash": "efef34747d233325e6e1b13c0f9b9df0",
|
|
8
|
+
"packages": [
|
|
9
|
+
{
|
|
10
|
+
"name": "nikic/php-parser",
|
|
11
|
+
"version": "v5.7.0",
|
|
12
|
+
"source": {
|
|
13
|
+
"type": "git",
|
|
14
|
+
"url": "https://github.com/nikic/PHP-Parser.git",
|
|
15
|
+
"reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82"
|
|
16
|
+
},
|
|
17
|
+
"dist": {
|
|
18
|
+
"type": "zip",
|
|
19
|
+
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82",
|
|
20
|
+
"reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82",
|
|
21
|
+
"shasum": ""
|
|
22
|
+
},
|
|
23
|
+
"require": {
|
|
24
|
+
"ext-ctype": "*",
|
|
25
|
+
"ext-json": "*",
|
|
26
|
+
"ext-tokenizer": "*",
|
|
27
|
+
"php": ">=7.4"
|
|
28
|
+
},
|
|
29
|
+
"require-dev": {
|
|
30
|
+
"ircmaxell/php-yacc": "^0.0.7",
|
|
31
|
+
"phpunit/phpunit": "^9.0"
|
|
32
|
+
},
|
|
33
|
+
"bin": [
|
|
34
|
+
"bin/php-parse"
|
|
35
|
+
],
|
|
36
|
+
"type": "library",
|
|
37
|
+
"extra": {
|
|
38
|
+
"branch-alias": {
|
|
39
|
+
"dev-master": "5.x-dev"
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"autoload": {
|
|
43
|
+
"psr-4": {
|
|
44
|
+
"PhpParser\\": "lib/PhpParser"
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"notification-url": "https://packagist.org/downloads/",
|
|
48
|
+
"license": [
|
|
49
|
+
"BSD-3-Clause"
|
|
50
|
+
],
|
|
51
|
+
"authors": [
|
|
52
|
+
{
|
|
53
|
+
"name": "Nikita Popov"
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"description": "A PHP parser written in PHP",
|
|
57
|
+
"keywords": [
|
|
58
|
+
"parser",
|
|
59
|
+
"php"
|
|
60
|
+
],
|
|
61
|
+
"support": {
|
|
62
|
+
"issues": "https://github.com/nikic/PHP-Parser/issues",
|
|
63
|
+
"source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0"
|
|
64
|
+
},
|
|
65
|
+
"time": "2025-12-06T11:56:16+00:00"
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
"packages-dev": [],
|
|
69
|
+
"aliases": [],
|
|
70
|
+
"minimum-stability": "stable",
|
|
71
|
+
"stability-flags": {},
|
|
72
|
+
"prefer-stable": false,
|
|
73
|
+
"prefer-lowest": false,
|
|
74
|
+
"platform": {},
|
|
75
|
+
"platform-dev": {},
|
|
76
|
+
"plugin-api-version": "2.6.0"
|
|
77
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace NodeVisitor;
|
|
4
|
+
|
|
5
|
+
require_once __DIR__ . '/../vendor/autoload.php';
|
|
6
|
+
require_once __DIR__ . '/featuresDeclare.php';
|
|
7
|
+
|
|
8
|
+
use Features\featureWrapper;
|
|
9
|
+
use PhpParser\NodeVisitorAbstract;
|
|
10
|
+
use PhpParser\Node;
|
|
11
|
+
use PhpParser\Node\Name;
|
|
12
|
+
use PhpParser\Node\Expr;
|
|
13
|
+
use PhpParser\Node\Stmt;
|
|
14
|
+
|
|
15
|
+
class NodeVisitor extends NodeVisitorAbstract {
|
|
16
|
+
private featureWrapper $features;
|
|
17
|
+
private array $superglobal = ['_GET', '_POST', '_COOKIE', '_REQUEST', '_FILES', '_ENV', '_SERVER', '_SESSION', 'GLOBALS'];
|
|
18
|
+
|
|
19
|
+
public function __construct(featureWrapper $features){
|
|
20
|
+
$this->features = $features;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
public function enterNode(Node $node) {
|
|
24
|
+
$this->handleDynamicFeatures($node);
|
|
25
|
+
$this->handleStructuralFeatures($node);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
private function getFuncName(Node $node): ?string {
|
|
29
|
+
if($node instanceof Expr\FuncCall && $node->name instanceof Name){
|
|
30
|
+
return strtolower($node->name->toString());
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
private function isSuperglobal(Node $node): bool {
|
|
36
|
+
return $node instanceof Expr\ArrayDimFetch && $node->var instanceof Expr\Variable && is_string($node->var->name) && in_array($node->var->name, $this->superglobal);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
private function handleDynamicFeatures(Node $node){
|
|
40
|
+
#dynamic function call exists (dynamicFuncCallExists feature)
|
|
41
|
+
if($node instanceof Expr\FuncCall && $node->name instanceof Expr\Variable){
|
|
42
|
+
$this->features->dynamicFeatures->dynamicFuncCallExists = true;
|
|
43
|
+
}
|
|
44
|
+
#check for variable variables (varExists feature)
|
|
45
|
+
if($node instanceof Expr\Variable && $node->name instanceof Expr\Variable){
|
|
46
|
+
$this->features->dynamicFeatures->varExists = true;
|
|
47
|
+
}
|
|
48
|
+
#count variable usage (varUsageCount feature)
|
|
49
|
+
if($node instanceof Expr\Variable){
|
|
50
|
+
$this->features->dynamicFeatures->varUsageCount++;
|
|
51
|
+
}
|
|
52
|
+
#count assignments (assignmentCount feature)
|
|
53
|
+
if($node instanceof Expr\Assign){
|
|
54
|
+
$this->features->dynamicFeatures->assignmentCount++;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
private function handleStructuralFeatures(Node $node) {
|
|
59
|
+
|
|
60
|
+
#class definition exists (classDefExists feature)
|
|
61
|
+
if($node instanceof Stmt\Class_){
|
|
62
|
+
$this->features->structuralFeatures->classDefExists = true;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
#count function definitions (funcDefCount feature)
|
|
66
|
+
if($node instanceof Stmt\Function_ || $node instanceof Stmt\ClassMethod){
|
|
67
|
+
$this->features->structuralFeatures->funcDefCount++;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
#count superglobal used as function argument (superglobalAsFuncArg feature)
|
|
71
|
+
if($node instanceof Expr\FuncCall ){
|
|
72
|
+
foreach($node->args as $arg){
|
|
73
|
+
if($this->isSuperglobal($arg->value)){
|
|
74
|
+
$this->features->structuralFeatures->superglobalAsFuncArg++;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
#count suspicious concatenation (suspiciousConcat feature)
|
|
80
|
+
if($node instanceof Expr\BinaryOp\Concat){
|
|
81
|
+
$this->features->structuralFeatures->suspiciousConcat = ($this->features->structuralFeatures->suspiciousConcat ?? 0) + 1;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
?>
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
require_once __DIR__ . '/../vendor/autoload.php';
|
|
4
|
+
require_once __DIR__ . '/featuresDeclare.php';
|
|
5
|
+
require_once __DIR__ . '/NodeVisitor.php';
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
use PhpParser\ParserFactory;
|
|
9
|
+
use PhpParser\NodeTraverser;
|
|
10
|
+
use Features\featureWrapper;
|
|
11
|
+
use NodeVisitor\NodeVisitor;
|
|
12
|
+
use PhpParser\PhpVersion;
|
|
13
|
+
|
|
14
|
+
class astBuilder
|
|
15
|
+
{
|
|
16
|
+
public $parser;
|
|
17
|
+
|
|
18
|
+
public function __construct()
|
|
19
|
+
{
|
|
20
|
+
$factory = new ParserFactory();
|
|
21
|
+
$this->parser = $factory->createForVersion(PhpParser\PhpVersion::fromString('5.6'));
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
public function builder($code)
|
|
25
|
+
{
|
|
26
|
+
|
|
27
|
+
$feature = new featureWrapper();
|
|
28
|
+
#debug
|
|
29
|
+
$code = preg_replace('/\$(\w+)\{([^}]+)\}/', '$\1[\2]', $code);
|
|
30
|
+
$code = str_replace(["<?PHP", "<?Php"], "<?php", $code);
|
|
31
|
+
$code = str_replace('@', '', $code);
|
|
32
|
+
|
|
33
|
+
try {
|
|
34
|
+
$stmts = $this->parser->parse($code);
|
|
35
|
+
} catch (\Throwable $e) {
|
|
36
|
+
error_log("Parse error in code: " . $e->getMessage());
|
|
37
|
+
return $feature->toArray();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
$traverser = new NodeTraverser();
|
|
41
|
+
$visitor = new NodeVisitor($feature);
|
|
42
|
+
$traverser->addVisitor($visitor);
|
|
43
|
+
$traverser->traverse($stmts);
|
|
44
|
+
|
|
45
|
+
return $feature->toArray();
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
?>
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
error_reporting(0);
|
|
3
|
+
ini_set('display_errors', 0);
|
|
4
|
+
ini_set('log_errors', 0);
|
|
5
|
+
|
|
6
|
+
ob_start();
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
require_once __DIR__ . '/../vendor/autoload.php';
|
|
10
|
+
require_once __DIR__ . '/astBuilder.php';
|
|
11
|
+
|
|
12
|
+
if($argc < 2) {
|
|
13
|
+
echo json_encode("Error: No file path provided") . "\n";
|
|
14
|
+
exit(1);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
$filepath = $argv[1];
|
|
18
|
+
|
|
19
|
+
if(!file_exists($filepath)) {
|
|
20
|
+
echo json_encode("Error: File not found: $filepath") . "\n";
|
|
21
|
+
exit(1);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
$code = file_get_contents($filepath);
|
|
26
|
+
$code = trim($code);
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
if ($code === false || trim($code) === '') {
|
|
30
|
+
echo json_encode("Error Empty file");
|
|
31
|
+
exit(1);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
$builder = new astBuilder();
|
|
35
|
+
|
|
36
|
+
$result = $builder->builder($code);
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
if (!is_array($result)) {
|
|
40
|
+
echo json_encode(["error" => "Builder did not return array"]);
|
|
41
|
+
exit(1);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if(ob_get_length()){
|
|
45
|
+
ob_clean();
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Output valid
|
|
49
|
+
echo json_encode($result);
|
|
50
|
+
?>
|