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.
Files changed (309) hide show
  1. webshell_analyzer-1.0.0/LICENSE +21 -0
  2. webshell_analyzer-1.0.0/PKG-INFO +105 -0
  3. webshell_analyzer-1.0.0/README.md +62 -0
  4. webshell_analyzer-1.0.0/pyproject.toml +56 -0
  5. webshell_analyzer-1.0.0/setup.cfg +4 -0
  6. webshell_analyzer-1.0.0/webshell_analyzer/__init__.py +0 -0
  7. webshell_analyzer-1.0.0/webshell_analyzer/cli/__init__.py +0 -0
  8. webshell_analyzer-1.0.0/webshell_analyzer/cli/cli.py +151 -0
  9. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/composer.json +5 -0
  10. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/composer.lock +77 -0
  11. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/src/NodeVisitor.php +85 -0
  12. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/src/astBuilder.php +50 -0
  13. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/src/astExtractor.php +50 -0
  14. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/src/featuresDeclare.php +36 -0
  15. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/autoload.php +25 -0
  16. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/composer/ClassLoader.php +579 -0
  17. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/composer/InstalledVersions.php +378 -0
  18. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/composer/autoload_classmap.php +10 -0
  19. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/composer/autoload_namespaces.php +9 -0
  20. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/composer/autoload_psr4.php +10 -0
  21. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/composer/autoload_real.php +38 -0
  22. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/composer/autoload_static.php +36 -0
  23. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/composer/installed.json +67 -0
  24. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/composer/installed.php +32 -0
  25. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/composer/platform_check.php +26 -0
  26. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php +150 -0
  27. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Class_.php +151 -0
  28. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Declaration.php +50 -0
  29. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php +86 -0
  30. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Enum_.php +116 -0
  31. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php +73 -0
  32. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Function_.php +67 -0
  33. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Interface_.php +94 -0
  34. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Method.php +147 -0
  35. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php +45 -0
  36. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php +171 -0
  37. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Property.php +223 -0
  38. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php +65 -0
  39. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php +145 -0
  40. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Trait_.php +83 -0
  41. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder/Use_.php +49 -0
  42. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Builder.php +12 -0
  43. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php +375 -0
  44. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php +338 -0
  45. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Comment/Doc.php +6 -0
  46. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Comment.php +209 -0
  47. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php +6 -0
  48. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php +237 -0
  49. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Error.php +173 -0
  50. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php +43 -0
  51. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php +17 -0
  52. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler.php +12 -0
  53. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php +31 -0
  54. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Internal/Differ.php +178 -0
  55. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php +71 -0
  56. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenPolyfill.php +237 -0
  57. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php +282 -0
  58. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/JsonDecoder.php +108 -0
  59. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php +230 -0
  60. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AsymmetricVisibilityTokenEmulator.php +93 -0
  61. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php +49 -0
  62. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php +26 -0
  63. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php +45 -0
  64. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php +60 -0
  65. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php +19 -0
  66. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php +60 -0
  67. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/PipeOperatorEmulator.php +45 -0
  68. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/PropertyTokenEmulator.php +19 -0
  69. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php +31 -0
  70. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php +31 -0
  71. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php +37 -0
  72. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php +30 -0
  73. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/VoidCastEmulator.php +98 -0
  74. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Lexer.php +116 -0
  75. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Modifiers.php +85 -0
  76. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NameContext.php +284 -0
  77. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php +44 -0
  78. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/ArrayItem.php +43 -0
  79. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Attribute.php +33 -0
  80. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php +27 -0
  81. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/ClosureUse.php +36 -0
  82. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/ComplexType.php +13 -0
  83. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Const_.php +36 -0
  84. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/DeclareItem.php +37 -0
  85. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php +33 -0
  86. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php +15 -0
  87. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php +34 -0
  88. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php +84 -0
  89. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php +33 -0
  90. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php +11 -0
  91. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php +11 -0
  92. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php +11 -0
  93. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php +11 -0
  94. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php +11 -0
  95. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php +11 -0
  96. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php +11 -0
  97. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php +11 -0
  98. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php +11 -0
  99. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php +11 -0
  100. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php +11 -0
  101. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php +11 -0
  102. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php +11 -0
  103. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php +29 -0
  104. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php +33 -0
  105. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php +15 -0
  106. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php +15 -0
  107. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php +15 -0
  108. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php +15 -0
  109. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php +15 -0
  110. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php +15 -0
  111. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php +15 -0
  112. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php +15 -0
  113. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php +15 -0
  114. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php +15 -0
  115. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php +15 -0
  116. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php +15 -0
  117. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php +15 -0
  118. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php +15 -0
  119. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php +15 -0
  120. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php +15 -0
  121. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php +15 -0
  122. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php +15 -0
  123. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php +15 -0
  124. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php +15 -0
  125. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pipe.php +15 -0
  126. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php +15 -0
  127. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php +15 -0
  128. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php +15 -0
  129. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php +15 -0
  130. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php +15 -0
  131. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php +15 -0
  132. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php +15 -0
  133. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php +37 -0
  134. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php +29 -0
  135. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php +29 -0
  136. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php +60 -0
  137. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php +11 -0
  138. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php +15 -0
  139. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php +16 -0
  140. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php +15 -0
  141. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php +11 -0
  142. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php +15 -0
  143. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php +11 -0
  144. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Void_.php +11 -0
  145. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php +25 -0
  146. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php +36 -0
  147. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php +29 -0
  148. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php +86 -0
  149. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php +15 -0
  150. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php +30 -0
  151. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php +29 -0
  152. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php +30 -0
  153. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php +29 -0
  154. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php +29 -0
  155. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php +33 -0
  156. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php +38 -0
  157. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php +38 -0
  158. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php +35 -0
  159. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php +29 -0
  160. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php +34 -0
  161. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php +32 -0
  162. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php +45 -0
  163. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php +40 -0
  164. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php +45 -0
  165. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php +35 -0
  166. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php +29 -0
  167. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php +29 -0
  168. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php +29 -0
  169. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php +29 -0
  170. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php +29 -0
  171. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php +35 -0
  172. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php +30 -0
  173. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php +45 -0
  174. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php +36 -0
  175. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php +37 -0
  176. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php +29 -0
  177. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php +29 -0
  178. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php +29 -0
  179. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php +29 -0
  180. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php +29 -0
  181. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php +33 -0
  182. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Expr.php +8 -0
  183. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php +40 -0
  184. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Identifier.php +85 -0
  185. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/InterpolatedStringPart.php +32 -0
  186. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php +27 -0
  187. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/MatchArm.php +29 -0
  188. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php +49 -0
  189. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php +49 -0
  190. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php +278 -0
  191. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/NullableType.php +29 -0
  192. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php +123 -0
  193. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/PropertyHook.php +105 -0
  194. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/PropertyItem.php +37 -0
  195. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php +15 -0
  196. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php +15 -0
  197. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php +17 -0
  198. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Float_.php +78 -0
  199. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Int_.php +82 -0
  200. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/InterpolatedString.php +34 -0
  201. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php +15 -0
  202. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php +15 -0
  203. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php +15 -0
  204. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php +15 -0
  205. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php +15 -0
  206. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php +15 -0
  207. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php +15 -0
  208. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php +15 -0
  209. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Property.php +15 -0
  210. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php +15 -0
  211. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php +27 -0
  212. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php +161 -0
  213. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar.php +6 -0
  214. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/StaticVar.php +39 -0
  215. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Block.php +29 -0
  216. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php +29 -0
  217. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php +33 -0
  218. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php +40 -0
  219. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php +77 -0
  220. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php +109 -0
  221. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php +154 -0
  222. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php +94 -0
  223. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php +37 -0
  224. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php +29 -0
  225. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php +17 -0
  226. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php +34 -0
  227. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php +33 -0
  228. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php +29 -0
  229. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php +33 -0
  230. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php +29 -0
  231. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php +36 -0
  232. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php +44 -0
  233. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php +32 -0
  234. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php +29 -0
  235. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php +47 -0
  236. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php +50 -0
  237. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php +81 -0
  238. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php +29 -0
  239. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php +30 -0
  240. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php +41 -0
  241. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php +29 -0
  242. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php +46 -0
  243. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php +29 -0
  244. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php +40 -0
  245. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php +30 -0
  246. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php +37 -0
  247. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php +16 -0
  248. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php +121 -0
  249. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php +17 -0
  250. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php +29 -0
  251. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php +15 -0
  252. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php +30 -0
  253. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php +33 -0
  254. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php +33 -0
  255. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php +37 -0
  256. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php +33 -0
  257. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php +12 -0
  258. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php +34 -0
  259. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php +37 -0
  260. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php +29 -0
  261. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php +17 -0
  262. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php +47 -0
  263. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php +33 -0
  264. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt.php +8 -0
  265. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/UnionType.php +27 -0
  266. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/UseItem.php +55 -0
  267. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php +16 -0
  268. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php +27 -0
  269. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Node.php +150 -0
  270. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php +181 -0
  271. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeDumper.php +299 -0
  272. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeFinder.php +90 -0
  273. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php +287 -0
  274. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php +26 -0
  275. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php +19 -0
  276. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/CommentAnnotatingVisitor.php +82 -0
  277. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php +47 -0
  278. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php +49 -0
  279. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php +269 -0
  280. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php +73 -0
  281. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php +51 -0
  282. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor.php +124 -0
  283. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php +24 -0
  284. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php +2919 -0
  285. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Parser/Php8.php +2917 -0
  286. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Parser.php +24 -0
  287. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php +1335 -0
  288. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php +42 -0
  289. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/PhpVersion.php +175 -0
  290. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php +1232 -0
  291. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter.php +51 -0
  292. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php +1706 -0
  293. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/Token.php +18 -0
  294. webshell_analyzer-1.0.0/webshell_analyzer/extractor/ast_extraction/vendor/nikic/php-parser/lib/PhpParser/compatibility_tokens.php +71 -0
  295. webshell_analyzer-1.0.0/webshell_analyzer/extractor/extractor.py +73 -0
  296. webshell_analyzer-1.0.0/webshell_analyzer/extractor/lexical_extraction/lexicalExtractor.py +31 -0
  297. webshell_analyzer-1.0.0/webshell_analyzer/extractor/statistical_extraction/statisticalExtractor.py +60 -0
  298. webshell_analyzer-1.0.0/webshell_analyzer/model/features_selected.json +1 -0
  299. webshell_analyzer-1.0.0/webshell_analyzer/model/model_loader.py +19 -0
  300. webshell_analyzer-1.0.0/webshell_analyzer/model/rf_webshell_model.joblib +0 -0
  301. webshell_analyzer-1.0.0/webshell_analyzer/modules/__init__.py +0 -0
  302. webshell_analyzer-1.0.0/webshell_analyzer/modules/detector.py +174 -0
  303. webshell_analyzer-1.0.0/webshell_analyzer/modules/scanner.py +68 -0
  304. webshell_analyzer-1.0.0/webshell_analyzer.egg-info/PKG-INFO +105 -0
  305. webshell_analyzer-1.0.0/webshell_analyzer.egg-info/SOURCES.txt +307 -0
  306. webshell_analyzer-1.0.0/webshell_analyzer.egg-info/dependency_links.txt +1 -0
  307. webshell_analyzer-1.0.0/webshell_analyzer.egg-info/entry_points.txt +2 -0
  308. webshell_analyzer-1.0.0/webshell_analyzer.egg-info/requires.txt +5 -0
  309. 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
+ ![Webshell Analyzer Home Screen](/assets/images/home-screen.png "Home Screen")
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
+ ![Webshell Analyzer Home Screen](/assets/images/home-screen.png "Home Screen")
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
+ ]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
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,5 @@
1
+ {
2
+ "require": {
3
+ "nikic/php-parser": "^5.7"
4
+ }
5
+ }
@@ -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
+ ?>