moriarty-project 0.1.22__tar.gz → 0.1.24__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 (438) hide show
  1. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/PKG-INFO +3 -3
  2. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/README.md +2 -2
  3. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/__init__.py +1 -1
  4. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/cli/app.py +4 -3
  5. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/cli/domain_cmd.py +5 -1
  6. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/modules/directory_fuzzer.py +25 -5
  7. moriarty_project-0.1.24/moriarty/modules/web_crawler.py +520 -0
  8. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/pyproject.toml +1 -1
  9. moriarty_project-0.1.24/test_crawl.py +105 -0
  10. moriarty_project-0.1.22/moriarty/modules/web_crawler.py +0 -163
  11. moriarty_project-0.1.22/moriarty/modules/wifippler/__init__.py +0 -92
  12. moriarty_project-0.1.22/moriarty/modules/wifippler/cli/__init__.py +0 -8
  13. moriarty_project-0.1.22/moriarty/modules/wifippler/cli/commands.py +0 -123
  14. moriarty_project-0.1.22/moriarty/modules/wifippler/core/__init__.py +0 -94
  15. moriarty_project-0.1.22/moriarty/modules/wifippler/core/attacks/__init__.py +0 -146
  16. moriarty_project-0.1.22/moriarty/modules/wifippler/core/attacks/deauth.py +0 -262
  17. moriarty_project-0.1.22/moriarty/modules/wifippler/core/attacks/handshake.py +0 -402
  18. moriarty_project-0.1.22/moriarty/modules/wifippler/core/attacks/pmkid.py +0 -424
  19. moriarty_project-0.1.22/moriarty/modules/wifippler/core/attacks/wep.py +0 -467
  20. moriarty_project-0.1.22/moriarty/modules/wifippler/core/attacks/wpa.py +0 -446
  21. moriarty_project-0.1.22/moriarty/modules/wifippler/core/attacks/wps.py +0 -474
  22. moriarty_project-0.1.22/moriarty/modules/wifippler/core/models/__init__.py +0 -10
  23. moriarty_project-0.1.22/moriarty/modules/wifippler/core/models/network.py +0 -240
  24. moriarty_project-0.1.22/moriarty/modules/wifippler/core/scanner.py +0 -903
  25. moriarty_project-0.1.22/moriarty/modules/wifippler/core/utils/__init__.py +0 -624
  26. moriarty_project-0.1.22/moriarty/modules/wifippler/core/utils/exec.py +0 -182
  27. moriarty_project-0.1.22/moriarty/modules/wifippler/core/utils/network.py +0 -262
  28. moriarty_project-0.1.22/moriarty/modules/wifippler/core/utils/system.py +0 -153
  29. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/.gitignore +0 -0
  30. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/assets/img/moriarty-banner.png +0 -0
  31. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/adapters/__init__.py +0 -0
  32. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/agent/__init__.py +0 -0
  33. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/.gitkeep +0 -0
  34. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/asia/douban.yaml +0 -0
  35. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/asia/kakao.yaml +0 -0
  36. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/asia/line.yaml +0 -0
  37. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/asia/mixi.yaml +0 -0
  38. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/asia/naver.yaml +0 -0
  39. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/asia/qq.yaml +0 -0
  40. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/asia/vk.yaml +0 -0
  41. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/asia/wechat.yaml +0 -0
  42. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/asia/weibo.yaml +0 -0
  43. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/asia/xiaohongshu.yaml +0 -0
  44. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/behance.yaml +0 -0
  45. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/business/crunchbase.yaml +0 -0
  46. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/business/fiverr.yaml +0 -0
  47. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/business/freelancer.yaml +0 -0
  48. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/business/glassdoor.yaml +0 -0
  49. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/business/guru.yaml +0 -0
  50. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/business/indeed.yaml +0 -0
  51. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/business/monster.yaml +0 -0
  52. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/business/peopleperhour.yaml +0 -0
  53. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/business/toptal.yaml +0 -0
  54. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/business/upwork.yaml +0 -0
  55. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/business/ziprecruiter.yaml +0 -0
  56. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/content/buymeacoffee.yaml +0 -0
  57. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/content/gumroad.yaml +0 -0
  58. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/content/ko-fi.yaml +0 -0
  59. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/content/onlyfans.yaml +0 -0
  60. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/content/patreon.yaml +0 -0
  61. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/content/substack.yaml +0 -0
  62. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/creative/500px.yaml +0 -0
  63. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/creative/artstation.yaml +0 -0
  64. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/creative/deviantart.yaml +0 -0
  65. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/creative/flickr.yaml +0 -0
  66. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/creative/pexels.yaml +0 -0
  67. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/creative/unsplash.yaml +0 -0
  68. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/creative/vimeo.yaml +0 -0
  69. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/crypto/binance.yaml +0 -0
  70. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/crypto/bitcointalk.yaml +0 -0
  71. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/crypto/coinbase.yaml +0 -0
  72. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/crypto/etherscan.yaml +0 -0
  73. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/crypto/foundation.yaml +0 -0
  74. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/crypto/kraken.yaml +0 -0
  75. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/crypto/mirror.yaml +0 -0
  76. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/crypto/niftygateway.yaml +0 -0
  77. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/crypto/opensea.yaml +0 -0
  78. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/crypto/rarible.yaml +0 -0
  79. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/crypto/superrare.yaml +0 -0
  80. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/dating/bumble.yaml +0 -0
  81. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/dating/grindr.yaml +0 -0
  82. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/dating/happn.yaml +0 -0
  83. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/dating/her.yaml +0 -0
  84. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/dating/hinge.yaml +0 -0
  85. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/dating/match.yaml +0 -0
  86. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/dating/meetme.yaml +0 -0
  87. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/dating/okcupid.yaml +0 -0
  88. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/dating/pof.yaml +0 -0
  89. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/dating/tinder.yaml +0 -0
  90. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/dating-nsfw/adultfriendfinder.yaml +0 -0
  91. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/dating-nsfw/ashley-madison.yaml +0 -0
  92. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/design/adobe-portfolio.yaml +0 -0
  93. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/design/carbonmade.yaml +0 -0
  94. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/design/cgsociety.yaml +0 -0
  95. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/design/coroflot.yaml +0 -0
  96. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/design/figma.yaml +0 -0
  97. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/design/sketch.yaml +0 -0
  98. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/dev/bitbucket.yaml +0 -0
  99. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/dev/codeforces.yaml +0 -0
  100. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/dev/codepen.yaml +0 -0
  101. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/dev/hackerone.yaml +0 -0
  102. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/dev/hackthebox.yaml +0 -0
  103. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/dev/huggingface.yaml +0 -0
  104. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/dev/kaggle.yaml +0 -0
  105. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/dev/leetcode.yaml +0 -0
  106. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/dev/replit.yaml +0 -0
  107. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/dribbble.yaml +0 -0
  108. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/ecommerce/etsy.yaml +0 -0
  109. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/education/duolingo.yaml +0 -0
  110. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/education/edx.yaml +0 -0
  111. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/education/khanacademy.yaml +0 -0
  112. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/education/lynda.yaml +0 -0
  113. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/education/memrise.yaml +0 -0
  114. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/education/pluralsight.yaml +0 -0
  115. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/education/skillshare.yaml +0 -0
  116. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/education/udacity.yaml +0 -0
  117. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/email/github_email.yaml +0 -0
  118. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/email/gravatar.yaml +0 -0
  119. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/europe/badoo.yaml +0 -0
  120. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/europe/lovoo.yaml +0 -0
  121. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/europe/myspace.yaml +0 -0
  122. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/europe/netlog.yaml +0 -0
  123. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/europe/ok.yaml +0 -0
  124. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/europe/skyrock.yaml +0 -0
  125. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/europe/studivz.yaml +0 -0
  126. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/europe/tuenti.yaml +0 -0
  127. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/europe/viadeo.yaml +0 -0
  128. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/europe/xing.yaml +0 -0
  129. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/fitness/fitbit.yaml +0 -0
  130. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/fitness/garmin.yaml +0 -0
  131. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/fitness/myfitnesspal.yaml +0 -0
  132. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/fitness/strava.yaml +0 -0
  133. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/fitness/zwift.yaml +0 -0
  134. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/food/allrecipes.yaml +0 -0
  135. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/food/tasty.yaml +0 -0
  136. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/food/yelp.yaml +0 -0
  137. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/food/zomato.yaml +0 -0
  138. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/forums/4chan.yaml +0 -0
  139. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/forums/8kun.yaml +0 -0
  140. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/forums/9gag.yaml +0 -0
  141. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/forums/discourse.yaml +0 -0
  142. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/forums/disqus.yaml +0 -0
  143. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/forums/hackernews.yaml +0 -0
  144. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/forums/launchpad.yaml +0 -0
  145. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/forums/phpbb.yaml +0 -0
  146. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/forums/quora.yaml +0 -0
  147. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/forums/serverfault.yaml +0 -0
  148. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/forums/slashdot.yaml +0 -0
  149. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/forums/stackexchange.yaml +0 -0
  150. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/forums/superuser.yaml +0 -0
  151. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/forums/vbulletin.yaml +0 -0
  152. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/forums/xenforo.yaml +0 -0
  153. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/forums-nsfw/kiwifarms.yaml +0 -0
  154. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/forums-nsfw/lolcow.yaml +0 -0
  155. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/gaming/apextracker.yaml +0 -0
  156. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/gaming/battlenet.yaml +0 -0
  157. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/gaming/chess.yaml +0 -0
  158. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/gaming/discord-public.yaml +0 -0
  159. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/gaming/dotabuff.yaml +0 -0
  160. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/gaming/epicgames.yaml +0 -0
  161. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/gaming/faceit.yaml +0 -0
  162. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/gaming/fortnitetracker.yaml +0 -0
  163. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/gaming/gog.yaml +0 -0
  164. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/gaming/itch.yaml +0 -0
  165. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/gaming/kongregate.yaml +0 -0
  166. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/gaming/minecraft.yaml +0 -0
  167. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/gaming/opgg.yaml +0 -0
  168. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/gaming/origin.yaml +0 -0
  169. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/gaming/playstation.yaml +0 -0
  170. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/gaming/roblox.yaml +0 -0
  171. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/gaming/xbox.yaml +0 -0
  172. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/github.yaml +0 -0
  173. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/gitlab.yaml +0 -0
  174. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/instagram.yaml +0 -0
  175. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/latam/fotolog.yaml +0 -0
  176. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/latam/orkut.yaml +0 -0
  177. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/latam/taringa.yaml +0 -0
  178. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/learning/coursera.yaml +0 -0
  179. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/learning/udemy.yaml +0 -0
  180. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/linkedin.yaml +0 -0
  181. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/marketplaces/depop.yaml +0 -0
  182. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/marketplaces/ebay.yaml +0 -0
  183. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/marketplaces/grailed.yaml +0 -0
  184. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/marketplaces/mercari.yaml +0 -0
  185. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/marketplaces/poshmark.yaml +0 -0
  186. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/marketplaces/reverb.yaml +0 -0
  187. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/marketplaces/vinted.yaml +0 -0
  188. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/medium.yaml +0 -0
  189. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/music/audiomack.yaml +0 -0
  190. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/music/bandcamp.yaml +0 -0
  191. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/music/beatport.yaml +0 -0
  192. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/music/deezer.yaml +0 -0
  193. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/music/discogs.yaml +0 -0
  194. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/music/genius.yaml +0 -0
  195. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/music/lastfm.yaml +0 -0
  196. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/music/mixcloud.yaml +0 -0
  197. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/music/reverbnation.yaml +0 -0
  198. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/music/soundcloud.yaml +0 -0
  199. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/music/spotify.yaml +0 -0
  200. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/music/tidal.yaml +0 -0
  201. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/nsfw/adultwork.yaml +0 -0
  202. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/nsfw/bongacams.yaml +0 -0
  203. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/nsfw/cam4.yaml +0 -0
  204. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/nsfw/chaturbate.yaml +0 -0
  205. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/nsfw/clips4sale.yaml +0 -0
  206. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/nsfw/extralunchmoney.yaml +0 -0
  207. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/nsfw/fansly.yaml +0 -0
  208. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/nsfw/fetlife.yaml +0 -0
  209. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/nsfw/iw/n/nantclips.yaml" +0 -0
  210. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/nsfw/justforfans.yaml +0 -0
  211. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/nsfw/loyalfans.yaml +0 -0
  212. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/nsfw/manyvids.yaml +0 -0
  213. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/nsfw/myfreecams.yaml +0 -0
  214. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/nsfw/niteflirt.yaml +0 -0
  215. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/nsfw/pornhub.yaml +0 -0
  216. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/nsfw/redtube.yaml +0 -0
  217. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/nsfw/stripchat.yaml +0 -0
  218. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/nsfw/xhamster.yaml +0 -0
  219. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/nsfw/xvideos.yaml +0 -0
  220. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/nsfw/youporn.yaml +0 -0
  221. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/photography/eyeem.yaml +0 -0
  222. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/photography/fotki.yaml +0 -0
  223. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/photography/photobucket.yaml +0 -0
  224. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/photography/smugmug.yaml +0 -0
  225. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/photography/vsco.yaml +0 -0
  226. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/pinterest.yaml +0 -0
  227. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/podcasts/anchor.yaml +0 -0
  228. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/podcasts/castbox.yaml +0 -0
  229. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/podcasts/podbean.yaml +0 -0
  230. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/professional/about.yaml +0 -0
  231. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/professional/academia.yaml +0 -0
  232. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/professional/angellist.yaml +0 -0
  233. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/professional/calendly.yaml +0 -0
  234. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/professional/issuu.yaml +0 -0
  235. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/professional/mendeley.yaml +0 -0
  236. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/professional/notion.yaml +0 -0
  237. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/professional/orcid.yaml +0 -0
  238. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/professional/producthunt.yaml +0 -0
  239. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/professional/researchgate.yaml +0 -0
  240. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/professional/scribd.yaml +0 -0
  241. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/professional/slideshare.yaml +0 -0
  242. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/professional/trello.yaml +0 -0
  243. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/professional/typeform.yaml +0 -0
  244. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/reddit.yaml +0 -0
  245. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/regional/amino.yaml +0 -0
  246. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/regional/ask-fm.yaml +0 -0
  247. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/regional/babycenter.yaml +0 -0
  248. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/regional/cafemom.yaml +0 -0
  249. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/regional/care2.yaml +0 -0
  250. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/regional/diaspora.yaml +0 -0
  251. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/regional/ello.yaml +0 -0
  252. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/regional/gaia.yaml +0 -0
  253. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/regional/habbo.yaml +0 -0
  254. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/regional/imvu.yaml +0 -0
  255. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/regional/lemmy.yaml +0 -0
  256. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/regional/peertube.yaml +0 -0
  257. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/regional/pixelfed.yaml +0 -0
  258. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/regional/plurk.yaml +0 -0
  259. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/regional/recroom.yaml +0 -0
  260. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/regional/secondlife.yaml +0 -0
  261. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/regional/vine-archive.yaml +0 -0
  262. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/regional/vrchat.yaml +0 -0
  263. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/regional/weheartit.yaml +0 -0
  264. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/social/anilist.yaml +0 -0
  265. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/social/beacons.yaml +0 -0
  266. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/social/blogger.yaml +0 -0
  267. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/social/crunchyroll.yaml +0 -0
  268. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/social/discord.yaml +0 -0
  269. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/social/dreamwidth.yaml +0 -0
  270. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/social/facebook.yaml +0 -0
  271. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/social/goodreads.yaml +0 -0
  272. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/social/imdb.yaml +0 -0
  273. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/social/kitsu.yaml +0 -0
  274. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/social/letterboxd.yaml +0 -0
  275. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/social/linktree.yaml +0 -0
  276. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/social/livejournal.yaml +0 -0
  277. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/social/mastodon.yaml +0 -0
  278. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/social/minds.yaml +0 -0
  279. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/social/myanimelist.yaml +0 -0
  280. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/social/ravelry.yaml +0 -0
  281. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/social/snapchat.yaml +0 -0
  282. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/social/telegram.yaml +0 -0
  283. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/social/tiktok.yaml +0 -0
  284. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/social/trakt.yaml +0 -0
  285. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/social/wattpad.yaml +0 -0
  286. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/social/wordpress-com.yaml +0 -0
  287. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/sports/espn.yaml +0 -0
  288. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/sports/untappd.yaml +0 -0
  289. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/stackoverflow.yaml +0 -0
  290. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/steam.yaml +0 -0
  291. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/streaming/caffeine.yaml +0 -0
  292. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/streaming/dlive.yaml +0 -0
  293. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/streaming/trovo.yaml +0 -0
  294. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/travel/airbnb.yaml +0 -0
  295. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/travel/booking.yaml +0 -0
  296. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/travel/couchsurfing.yaml +0 -0
  297. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/travel/tripadvisor.yaml +0 -0
  298. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/tumblr.yaml +0 -0
  299. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/twitch.yaml +0 -0
  300. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/twitter.yaml +0 -0
  301. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/modules/youtube.yaml +0 -0
  302. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/cves/CVE-2017-5638.yaml +0 -0
  303. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/cves/CVE-2018-7600.yaml +0 -0
  304. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/cves/CVE-2019-11510.yaml +0 -0
  305. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/cves/CVE-2019-19781.yaml +0 -0
  306. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/cves/CVE-2020-14882.yaml +0 -0
  307. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/cves/CVE-2020-14883.yaml +0 -0
  308. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/cves/CVE-2020-3452.yaml +0 -0
  309. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/cves/CVE-2020-5902.yaml +0 -0
  310. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/cves/CVE-2021-21972.yaml +0 -0
  311. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/cves/CVE-2021-21985.yaml +0 -0
  312. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/cves/CVE-2021-26084.yaml +0 -0
  313. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/cves/CVE-2021-41773.yaml +0 -0
  314. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/cves/CVE-2021-42013.yaml +0 -0
  315. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/cves/CVE-2021-44228.yaml +0 -0
  316. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/cves/CVE-2022-0185.yaml +0 -0
  317. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/cves/CVE-2022-1388.yaml +0 -0
  318. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/cves/CVE-2022-22954.yaml +0 -0
  319. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/cves/CVE-2022-22965.yaml +0 -0
  320. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/cves/CVE-2022-26134.yaml +0 -0
  321. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/cves/CVE-2023-22515.yaml +0 -0
  322. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/cves/CVE-2023-22527.yaml +0 -0
  323. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/cves/CVE-2023-23752.yaml +0 -0
  324. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/cves/CVE-2023-27350.yaml +0 -0
  325. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/cves/CVE-2023-2868.yaml +0 -0
  326. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/cves/CVE-2023-34362.yaml +0 -0
  327. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/cves/CVE-2023-3519.yaml +0 -0
  328. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/cves/CVE-2023-4966.yaml +0 -0
  329. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/default-logins/admin-weak.yaml +0 -0
  330. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/default-logins/wordpress-default.yaml +0 -0
  331. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/exposures/aws-credentials.yaml +0 -0
  332. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/exposures/backup-files.yaml +0 -0
  333. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/exposures/database-files.yaml +0 -0
  334. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/exposures/docker-exposed.yaml +0 -0
  335. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/exposures/env-exposed.yaml +0 -0
  336. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/exposures/git-exposed.yaml +0 -0
  337. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/exposures/phpinfo.yaml +0 -0
  338. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/exposures/svn-exposed.yaml +0 -0
  339. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/fuzzing/api-endpoints.yaml +0 -0
  340. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/fuzzing/common-files.yaml +0 -0
  341. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/fuzzing/open-redirect-fuzz.yaml +0 -0
  342. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/fuzzing/xss-search-fuzz.yaml +0 -0
  343. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/git-config.yaml +0 -0
  344. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/misconfigurations/cors-misconfiguration.yaml +0 -0
  345. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/misconfigurations/debug-enabled.yaml +0 -0
  346. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/misconfigurations/directory-listing.yaml +0 -0
  347. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/misconfigurations/jwt-none-algo.yaml +0 -0
  348. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/misconfigurations/ssl-tls-weak.yaml +0 -0
  349. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/vulnerabilities/lfi-basic.yaml +0 -0
  350. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/vulnerabilities/open-redirect.yaml +0 -0
  351. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/vulnerabilities/rce-basic.yaml +0 -0
  352. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/vulnerabilities/sqli-error.yaml +0 -0
  353. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/vulnerabilities/ssrf-basic.yaml +0 -0
  354. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/vulnerabilities/xss-reflected.yaml +0 -0
  355. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/templates/vulnerabilities/xxe-basic.yaml +0 -0
  356. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/assets/wordlists/subdomains-1000.txt +0 -0
  357. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/cli/__init__.py +0 -0
  358. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/cli/async_utils.py +0 -0
  359. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/cli/dns.py +0 -0
  360. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/cli/email.py +0 -0
  361. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/cli/email_investigate.py +0 -0
  362. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/cli/intelligence.py +0 -0
  363. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/cli/output.py +0 -0
  364. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/cli/rdap.py +0 -0
  365. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/cli/state.py +0 -0
  366. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/cli/tls.py +0 -0
  367. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/cli/user.py +0 -0
  368. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/cli/wifippler.py +0 -0
  369. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/core/cache_backend.py +0 -0
  370. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/core/config_manager.py +0 -0
  371. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/correlator/__init__.py +0 -0
  372. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/data/__init__.py +0 -0
  373. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/data/ioc/__init__.py +0 -0
  374. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/data/ioc/matcher.py +0 -0
  375. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/data/ioc/types.py +0 -0
  376. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/data/local_intelligence.py +0 -0
  377. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/data/signature_loaders/__init__.py +0 -0
  378. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/data/signature_loaders/base.py +0 -0
  379. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/data/signature_loaders/ioc_feed.py +0 -0
  380. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/data/signature_loaders/wappalyzer.py +0 -0
  381. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/dsl/__init__.py +0 -0
  382. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/dsl/loader.py +0 -0
  383. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/dsl/schema.py +0 -0
  384. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/export/__init__.py +0 -0
  385. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/intelligence/__init__.py +0 -0
  386. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/intelligence/__main__.py +0 -0
  387. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/intelligence/config.py +0 -0
  388. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/intelligence/ioc.py +0 -0
  389. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/intelligence/signatures.py +0 -0
  390. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/intelligence/storage.py +0 -0
  391. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/interop/__init__.py +0 -0
  392. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/logging/__init__.py +0 -0
  393. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/logging/config.py +0 -0
  394. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/models/__init__.py +0 -0
  395. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/models/assertion.py +0 -0
  396. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/models/entity.py +0 -0
  397. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/models/evidence.py +0 -0
  398. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/models/relation.py +0 -0
  399. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/models/types.py +0 -0
  400. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/modules/__init__.py +0 -0
  401. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/modules/avatar_hash.py +0 -0
  402. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/modules/dns_scan.py +0 -0
  403. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/modules/domain_scanner.py +0 -0
  404. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/modules/email_check.py +0 -0
  405. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/modules/email_investigate.py +0 -0
  406. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/modules/email_security.py +0 -0
  407. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/modules/googlemaps_lookup.py +0 -0
  408. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/modules/headless_executor.py +0 -0
  409. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/modules/orchestrator.py +0 -0
  410. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/modules/passive_recon.py +0 -0
  411. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/modules/phone_extractor.py +0 -0
  412. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/modules/pipeline_orchestrator.py +0 -0
  413. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/modules/port_scanner.py +0 -0
  414. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/modules/rdap.py +0 -0
  415. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/modules/rdap_extended.py +0 -0
  416. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/modules/stealth_mode.py +0 -0
  417. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/modules/subdomain_discovery.py +0 -0
  418. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/modules/technology_profiler.py +0 -0
  419. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/modules/template_executor.py +0 -0
  420. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/modules/template_scanner.py +0 -0
  421. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/modules/tls_scan.py +0 -0
  422. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/modules/tls_validator.py +0 -0
  423. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/modules/vuln_scanner.py +0 -0
  424. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/modules/waf_detector.py +0 -0
  425. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/modules/wayback_discovery.py +0 -0
  426. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/net/__init__.py +0 -0
  427. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/net/dns_cache.py +0 -0
  428. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/net/dns_client.py +0 -0
  429. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/net/rdap_client.py +0 -0
  430. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/net/smtp_client.py +0 -0
  431. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/net/tls_client.py +0 -0
  432. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/parsers/__init__.py +0 -0
  433. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/parsers/html_parser.py +0 -0
  434. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/tests/__init__.py +0 -0
  435. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/tests/test_email_service.py +0 -0
  436. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/tests/test_models.py +0 -0
  437. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/tests/test_orchestrator.py +0 -0
  438. {moriarty_project-0.1.22 → moriarty_project-0.1.24}/moriarty/tests/test_tls_client.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: moriarty-project
3
- Version: 0.1.22
3
+ Version: 0.1.24
4
4
  Summary: Client-side OSINT toolkit with forensic-grade evidence handling.
5
5
  Project-URL: Homepage, https://github.com/DonatoReis/moriarty
6
6
  Project-URL: Documentation, https://github.com/DonatoReis/moriarty#readme
@@ -98,7 +98,7 @@ Description-Content-Type: text/markdown
98
98
  <!-- Badges -->
99
99
  <p align="center">
100
100
  <a href="https://pypi.org/project/moriarty-project/">
101
- <img src="https://img.shields.io/badge/version-0.1.22-blue" alt="Version 0.1.22">
101
+ <img src="https://img.shields.io/badge/version-0.1.24-blue" alt="Version 0.1.24">
102
102
  </a>
103
103
  <a href="https://www.python.org/downloads/">
104
104
  <img src="https://img.shields.io/pypi/pyversions/moriarty-project?color=blue" alt="Python Versions">
@@ -152,7 +152,7 @@ Description-Content-Type: text/markdown
152
152
  pipx install moriarty-project
153
153
 
154
154
  # OU para instalar uma versão específica
155
- # pipx install moriarty-project==0.1.11
155
+ # pipx install moriarty-project==0.1.24
156
156
 
157
157
  # Verificar a instalação
158
158
  moriarty --help
@@ -19,7 +19,7 @@
19
19
  <!-- Badges -->
20
20
  <p align="center">
21
21
  <a href="https://pypi.org/project/moriarty-project/">
22
- <img src="https://img.shields.io/badge/version-0.1.22-blue" alt="Version 0.1.22">
22
+ <img src="https://img.shields.io/badge/version-0.1.24-blue" alt="Version 0.1.24">
23
23
  </a>
24
24
  <a href="https://www.python.org/downloads/">
25
25
  <img src="https://img.shields.io/pypi/pyversions/moriarty-project?color=blue" alt="Python Versions">
@@ -73,7 +73,7 @@
73
73
  pipx install moriarty-project
74
74
 
75
75
  # OU para instalar uma versão específica
76
- # pipx install moriarty-project==0.1.11
76
+ # pipx install moriarty-project==0.1.24
77
77
 
78
78
  # Verificar a instalação
79
79
  moriarty --help
@@ -1,4 +1,4 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  __all__ = ["__version__"]
4
- __version__ = "0.1.22"
4
+ __version__ = "0.1.24"
@@ -8,7 +8,8 @@ from rich.console import Console
8
8
  from rich.theme import Theme
9
9
 
10
10
  from ..logging.config import LogStyle, configure_logging
11
- from . import dns, email, rdap, tls, user, domain_cmd, intelligence, wifippler
11
+ from . import dns, email, rdap, tls, user, domain_cmd, intelligence
12
+ # Temporariamente removido para testes: wifippler
12
13
  from .state import CLIState, GlobalOptions
13
14
 
14
15
  console = Console(theme=Theme({
@@ -117,7 +118,7 @@ app.add_typer(rdap.app, name="rdap", help="Consultas RDAP.")
117
118
  app.add_typer(tls.app, name="tls", help="Inspeções TLS.")
118
119
  app.add_typer(intelligence.app, name="intelligence", help="Inteligência de ameaças.")
119
120
  app.add_typer(domain_cmd.app, name="domain", help="Análise de domínios.")
120
- app.add_typer(wifippler.app, name="wifippler", help="Análise de redes WiFi.")
121
+ # Temporariamente removido: wifippler.app
121
122
  app.add_typer(user.app, name="user", help="User/IP reconnaissance and scanning.")
122
123
 
123
124
  # Registra os comandos de inteligência
@@ -129,7 +130,7 @@ if __name__ == "__main__":
129
130
 
130
131
 
131
132
  def main() -> None: # Console script compatibility
132
- main_entry()
133
+ app()
133
134
 
134
135
 
135
136
  def check_pipx_installed() -> bool:
@@ -1,9 +1,13 @@
1
1
  """Comandos de scanning de domínios/IPs."""
2
+
3
+ import asyncio
2
4
  import json
3
- from typing import Optional
5
+ from typing import Optional, Dict, List
4
6
 
5
7
  import typer
6
8
 
9
+ from moriarty.modules.web_crawler import WebCrawler
10
+
7
11
  from moriarty.modules.port_scanner import PortScanner, PROFILES
8
12
  from moriarty.modules.passive_recon import PassiveRecon
9
13
  from rich.console import Console
@@ -160,10 +160,18 @@ class DirectoryFuzzer:
160
160
  verify=False
161
161
  ) as client:
162
162
 
163
- with Progress() as progress:
163
+ with Progress(
164
+ "[progress.description]{task.description}",
165
+ "•",
166
+ "[progress.percentage]{task.percentage:>3.0f}%",
167
+ "[dim]{task.fields[status]}",
168
+ refresh_per_second=10,
169
+ console=console
170
+ ) as progress:
164
171
  task_id = progress.add_task(
165
172
  f"[cyan]Fuzzing {base_url.split('/')[-1] or 'root'}...",
166
- total=len(urls_to_test)
173
+ total=len(urls_to_test),
174
+ status=""
167
175
  )
168
176
 
169
177
  tasks = [
@@ -197,7 +205,8 @@ class DirectoryFuzzer:
197
205
  headers = self._get_headers()
198
206
  response = await client.get(url, headers=headers)
199
207
 
200
- progress.update(task_id, advance=1)
208
+ # Atualiza o progresso
209
+ progress.update(task_id, advance=1, refresh=True)
201
210
 
202
211
  # Filtra por status code
203
212
  if response.status_code not in self.status_filter:
@@ -231,14 +240,25 @@ class DirectoryFuzzer:
231
240
  elif url.endswith('/'):
232
241
  self.found_dirs.add(url.rstrip('/'))
233
242
 
234
- # Log descoberta
243
+ # Adiciona resultado à lista para exibição posterior
235
244
  color = self._get_status_color(response.status_code)
236
- console.print(
245
+ result_str = (
237
246
  f" [{color}]{response.status_code}[/{color}] "
238
247
  f"[cyan]{url.replace(self.base_url, '')}[/cyan] "
239
248
  f"[dim]({content_size} bytes)[/dim]"
240
249
  )
241
250
 
251
+ # Atualiza a descrição da tarefa com o último resultado
252
+ progress.update(task_id, description=f"[cyan]Fuzzing {base_url.split('/')[-1] or 'root'}... {result_str}")
253
+
254
+ # Adiciona ao log estruturado
255
+ logger.info(
256
+ "fuzzer.found",
257
+ url=url,
258
+ status=response.status_code,
259
+ size=content_size
260
+ )
261
+
242
262
  logger.info(
243
263
  "fuzzer.found",
244
264
  url=url,
@@ -0,0 +1,520 @@
1
+ """Crawler HTTP avançado para enumeração de rotas e formulários com suporte a redirecionamentos e evasão de bloqueios."""
2
+ from __future__ import annotations
3
+
4
+ import asyncio
5
+ import random
6
+ import time
7
+ import ssl
8
+ import certifi
9
+ from dataclasses import dataclass, field
10
+ from typing import Dict, List, Optional, Set, Tuple, Any, TYPE_CHECKING
11
+ from urllib.parse import urlparse, urljoin
12
+
13
+ import httpx
14
+ from selectolax.parser import HTMLParser
15
+ import structlog
16
+
17
+ if TYPE_CHECKING: # pragma: no cover - apenas para type hints
18
+ from moriarty.modules.stealth_mode import StealthMode
19
+
20
+ logger = structlog.get_logger(__name__)
21
+
22
+ # Headers realistas de navegador
23
+ DEFAULT_HEADERS = {
24
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
25
+ "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
26
+ "Accept-Language": "pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3",
27
+ "Accept-Encoding": "gzip, deflate, br",
28
+ "Connection": "keep-alive",
29
+ "Upgrade-Insecure-Requests": "1",
30
+ "Sec-Fetch-Dest": "document",
31
+ "Sec-Fetch-Mode": "navigate",
32
+ "Sec-Fetch-Site": "none",
33
+ "Sec-Fetch-User": "?1",
34
+ "Cache-Control": "max-age=0",
35
+ }
36
+
37
+ # Lista de user-agents para rotação
38
+ USER_AGENTS = [
39
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
40
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0",
41
+ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Safari/605.1.15",
42
+ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.59",
43
+ "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
44
+ ]
45
+
46
+ # Lista de referrers para rotação
47
+ REFERRERS = [
48
+ "https://www.google.com/",
49
+ "https://www.bing.com/",
50
+ "https://www.yahoo.com/",
51
+ "https://duckduckgo.com/",
52
+ ""
53
+ ]
54
+
55
+ @dataclass
56
+ class CrawlPage:
57
+ """Representa uma página web rastreada."""
58
+ url: str
59
+ status: int
60
+ title: Optional[str] = None
61
+ forms: List[Dict[str, Any]] = field(default_factory=list)
62
+ links: List[str] = field(default_factory=list)
63
+ redirect_chain: List[Tuple[str, int]] = field(default_factory=list)
64
+ error: Optional[str] = None
65
+
66
+
67
+ class WebCrawler:
68
+ """Crawler avançado com suporte a redirecionamentos e evasão de bloqueios."""
69
+
70
+ def __init__(
71
+ self,
72
+ base_url: str,
73
+ max_pages: int = 100,
74
+ max_depth: int = 2,
75
+ concurrency: int = 5, # Reduzido para evitar sobrecarga
76
+ follow_subdomains: bool = False,
77
+ user_agent: Optional[str] = None,
78
+ stealth: Optional["StealthMode"] = None,
79
+ request_delay: Tuple[float, float] = (1.0, 3.0), # Atraso aleatório entre requisições (min, max)
80
+ timeout: float = 30.0, # Timeout para requisições
81
+ verify_ssl: bool = True, # Verificar certificados SSL
82
+ max_redirects: int = 5, # Número máximo de redirecionamentos
83
+ respect_robots: bool = True, # Respeitar robots.txt
84
+ ):
85
+ self.base_url = base_url.rstrip("/")
86
+ self.max_pages = max_pages
87
+ self.max_depth = max_depth
88
+ self.concurrency = concurrency
89
+ self.follow_subdomains = follow_subdomains
90
+
91
+ # Configurações de requisição
92
+ self.request_delay = request_delay
93
+ self.timeout = timeout
94
+ self.max_redirects = max_redirects
95
+ self.verify_ssl = verify_ssl
96
+ self.respect_robots = respect_robots
97
+
98
+ # Configurações de stealth
99
+ self.stealth = stealth
100
+ self.user_agent = user_agent or random.choice(USER_AGENTS)
101
+ self.session_cookies: Dict[str, str] = {}
102
+ self.last_request_time: float = 0
103
+
104
+ # Configurações de domínio
105
+ self.parsed_base_url = self._parse_url(base_url)
106
+ self.base_domain = self._get_base_domain(self.parsed_base_url.hostname or '')
107
+ self.allowed_domains = {self.base_domain}
108
+ if follow_subdomains:
109
+ self.allowed_domains.add(f".{self.base_domain}")
110
+
111
+ # Estado do crawler
112
+ self.visited: Set[str] = set()
113
+ self.results: Dict[str, CrawlPage] = {}
114
+ self.robots_txt: Optional[Dict[str, Any]] = None
115
+
116
+ # Configuração do cliente HTTP
117
+ self.session: Optional[httpx.AsyncClient] = None
118
+ self.sem: Optional[asyncio.Semaphore] = None
119
+
120
+ async def _init_session(self) -> None:
121
+ """Inicializa a sessão HTTP com configurações de segurança e performance."""
122
+ # Configuração SSL
123
+ ssl_context = ssl.create_default_context(cafile=certifi.where())
124
+ if not self.verify_ssl:
125
+ ssl_context.check_hostname = False
126
+ ssl_context.verify_mode = ssl.CERT_NONE
127
+
128
+ # Configuração do transporte HTTP
129
+ limits = httpx.Limits(
130
+ max_keepalive_connections=10,
131
+ max_connections=20,
132
+ keepalive_expiry=60.0
133
+ )
134
+
135
+ # Configuração do cliente HTTP
136
+ self.session = httpx.AsyncClient(
137
+ timeout=self.timeout,
138
+ follow_redirects=True,
139
+ max_redirects=self.max_redirects,
140
+ http_versions=["HTTP/1.1", "HTTP/2"],
141
+ limits=limits,
142
+ verify=ssl_context if self.verify_ssl else False,
143
+ headers=DEFAULT_HEADERS.copy(),
144
+ cookies=self.session_cookies
145
+ )
146
+
147
+ # Atualiza o user-agent
148
+ if self.user_agent:
149
+ self.session.headers["User-Agent"] = self.user_agent
150
+
151
+ # Adiciona headers adicionais de stealth
152
+ self.session.headers.update({
153
+ "Accept-Language": "pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7",
154
+ "Accept-Encoding": "gzip, deflate, br",
155
+ "DNT": "1",
156
+ "Upgrade-Insecure-Requests": "1"
157
+ })
158
+
159
+ # Configura o semáforo para limitar concorrência
160
+ self.sem = asyncio.Semaphore(self.concurrency)
161
+
162
+ # Se necessário, verifica o robots.txt
163
+ if self.respect_robots:
164
+ await self._check_robots_txt()
165
+
166
+ async def _check_robots_txt(self) -> None:
167
+ """Verifica o arquivo robots.txt e atualiza as regras de acesso."""
168
+ if not self.session:
169
+ return
170
+
171
+ robots_url = f"{self.parsed_base_url.scheme}://{self.parsed_base_url.netloc}/robots.txt"
172
+ try:
173
+ response = await self.session.get(robots_url)
174
+ if response.status_code == 200:
175
+ # Aqui você pode implementar um parser de robots.txt mais sofisticado
176
+ self.robots_txt = {"content": response.text}
177
+ logger.info("robots_txt_found", url=robots_url)
178
+ except Exception as e:
179
+ logger.warning("robots_txt_error", url=robots_url, error=str(e))
180
+
181
+ async def _random_delay(self) -> None:
182
+ """Aguarda um tempo aleatório entre requisições para evitar bloqueios."""
183
+ if self.request_delay:
184
+ min_delay, max_delay = self.request_delay
185
+ delay = random.uniform(min_delay, max_delay)
186
+ elapsed = time.time() - self.last_request_time
187
+ if elapsed < delay:
188
+ await asyncio.sleep(delay - elapsed)
189
+ self.last_request_time = time.time()
190
+
191
+ async def crawl(self) -> Dict[str, CrawlPage]:
192
+ """Inicia o processo de rastreamento do site.
193
+
194
+ Returns:
195
+ Dict[str, CrawlPage]: Dicionário com as páginas encontradas, onde a chave é a URL.
196
+ """
197
+ # Inicializa a sessão HTTP
198
+ if not self.session:
199
+ await self._init_session()
200
+
201
+ # Inicializa a fila de URLs a serem processadas
202
+ queue: asyncio.Queue = asyncio.Queue()
203
+ initial_url = f"{self.parsed_base_url.scheme}://{self.parsed_base_url.netloc}"
204
+ await queue.put((initial_url, 0))
205
+
206
+ # Função worker para processar URLs em paralelo
207
+ async def worker() -> None:
208
+ while True:
209
+ try:
210
+ url, depth = queue.get_nowait()
211
+ except asyncio.QueueEmpty:
212
+ break
213
+
214
+ # Verifica os limites de páginas e profundidade
215
+ if len(self.results) >= self.max_pages or depth > self.max_depth:
216
+ continue
217
+
218
+ # Evita processar a mesma URL múltiplas vezes
219
+ if url in self.visited:
220
+ continue
221
+
222
+ # Aguarda um tempo aleatório entre requisições
223
+ await self._random_delay()
224
+
225
+ # Processa a URL
226
+ await self._fetch(url, depth, queue)
227
+
228
+ # Atualiza o contador de páginas processadas
229
+ queue.task_done()
230
+
231
+ # Inicia os workers
232
+ workers = [asyncio.create_task(worker()) for _ in range(self.concurrency)]
233
+ await asyncio.gather(*workers)
234
+ return self.results
235
+
236
+ def _parse_url(self, url: str) -> httpx.URL:
237
+ """Parseia uma URL e retorna um objeto URL do httpx."""
238
+ try:
239
+ return httpx.URL(url)
240
+ except Exception as e:
241
+ logger.error("url_parse_error", url=url, error=str(e))
242
+ raise ValueError(f"URL inválida: {url}") from e
243
+
244
+ def _get_base_domain(self, hostname: str) -> str:
245
+ """Extrai o domínio base de um hostname."""
246
+ if not hostname:
247
+ return ""
248
+ parts = hostname.split(".")
249
+ if len(parts) > 2:
250
+ return ".".join(parts[-2:])
251
+ return hostname
252
+
253
+ def _is_same_domain(self, url: str) -> bool:
254
+ """Verifica se uma URL pertence ao mesmo domínio do alvo."""
255
+ try:
256
+ parsed = self._parse_url(url)
257
+ if not parsed.host:
258
+ return False
259
+
260
+ # Verifica se o domínio é o mesmo ou um subdomínio
261
+ if self.follow_subdomains:
262
+ return parsed.host.endswith(self.base_domain) or f".{parsed.host}".endswith(f".{self.base_domain}")
263
+ return parsed.host == self.parsed_base_url.host
264
+ except Exception:
265
+ return False
266
+
267
+ def _normalize_url(self, url: str, base_url: Optional[str] = None) -> str:
268
+ """Normaliza uma URL, resolvendo URLs relativas e removendo fragmentos."""
269
+ try:
270
+ if not url:
271
+ return ""
272
+
273
+ # Remove fragmentos e espaços em branco
274
+ url = url.split("#")[0].strip()
275
+ if not url:
276
+ return ""
277
+
278
+ # Se for uma URL relativa, resolve em relação à base_url
279
+ if base_url and not url.startswith(('http://', 'https://')):
280
+ base = self._parse_url(base_url)
281
+ url = str(base.join(url))
282
+
283
+ # Parseia a URL para normalização
284
+ parsed = self._parse_url(url)
285
+
286
+ # Remove parâmetros de rastreamento comuns
287
+ if parsed.query:
288
+ query_params = []
289
+ for param in parsed.query.decode().split('&'):
290
+ if '=' in param and any(t in param.lower() for t in ['utm_', 'ref=', 'source=', 'fbclid=', 'gclid=']):
291
+ continue
292
+ query_params.append(param)
293
+
294
+ # Reconstrói a URL sem os parâmetros de rastreamento
295
+ if query_params:
296
+ parsed = parsed.copy_with(query='&'.join(query_params))
297
+ else:
298
+ parsed = parsed.copy_with(query=None)
299
+
300
+ # Remove barras finais desnecessárias
301
+ path = parsed.path.decode()
302
+ if path.endswith('/'):
303
+ path = path.rstrip('/') or '/'
304
+ parsed = parsed.copy_with(path=path)
305
+
306
+ return str(parsed)
307
+
308
+ except Exception as e:
309
+ logger.warning("url_normalize_error", url=url, error=str(e))
310
+ return url
311
+
312
+ def _build_headers(self, referer: Optional[str] = None) -> Dict[str, str]:
313
+ """Constrói os headers para a requisição HTTP."""
314
+ headers = DEFAULT_HEADERS.copy()
315
+
316
+ # Rotaciona o User-Agent
317
+ headers["User-Agent"] = random.choice(USER_AGENTS)
318
+
319
+ # Adiciona o referer se fornecido
320
+ if referer:
321
+ headers["Referer"] = referer
322
+ else:
323
+ headers["Referer"] = random.choice(REFERRERS)
324
+
325
+ return headers
326
+
327
+ async def _stealth_delay(self) -> None:
328
+ """Aplica um atraso aleatório para evitar detecção."""
329
+ if self.stealth and hasattr(self.stealth, 'get_delay'):
330
+ delay = self.stealth.get_delay()
331
+ if delay > 0:
332
+ await asyncio.sleep(delay)
333
+
334
+ async def _fetch(self, url: str, depth: int, queue: asyncio.Queue) -> None:
335
+ """
336
+ Faz o fetch de uma URL e processa os links encontrados.
337
+
338
+ Args:
339
+ url: URL a ser acessada
340
+ depth: Profundidade atual do rastreamento
341
+ queue: Fila de URLs para processamento
342
+ """
343
+ if not self.session:
344
+ logger.error("session_not_initialized")
345
+ return
346
+
347
+ # Marca a URL como visitada
348
+ self.visited.add(url)
349
+
350
+ try:
351
+ # Aplica atraso de stealth, se necessário
352
+ await self._stealth_delay()
353
+
354
+ # Prepara os headers para a requisição
355
+ headers = self._build_headers()
356
+
357
+ # Tenta fazer a requisição com tratamento de erros
358
+ try:
359
+ response = await self.session.get(
360
+ url,
361
+ headers=headers,
362
+ follow_redirects=True,
363
+ timeout=self.timeout
364
+ )
365
+
366
+ # Registra o tempo da última requisição
367
+ self.last_request_time = time.time()
368
+
369
+ except httpx.HTTPStatusError as e:
370
+ logger.warning("http_status_error", url=url, status_code=e.response.status_code)
371
+ self.results[url] = CrawlPage(
372
+ url=url,
373
+ status=e.response.status_code,
374
+ error=f"HTTP Error: {e.response.status_code}"
375
+ )
376
+ return
377
+
378
+ except httpx.RequestError as e:
379
+ logger.warning("request_error", url=url, error=str(e))
380
+ self.results[url] = CrawlPage(
381
+ url=url,
382
+ status=0,
383
+ error=f"Request Error: {str(e)}"
384
+ )
385
+ return
386
+
387
+ except Exception as e:
388
+ logger.error("unexpected_error", url=url, error=str(e))
389
+ self.results[url] = CrawlPage(
390
+ url=url,
391
+ status=0,
392
+ error=f"Unexpected Error: {str(e)}"
393
+ )
394
+ return
395
+
396
+ # Processa a resposta
397
+ await self._process_response(url, response, depth, queue)
398
+
399
+ except Exception as e:
400
+ logger.error("fetch_error", url=url, error=str(e))
401
+ self.results[url] = CrawlPage(
402
+ url=url,
403
+ status=0,
404
+ error=f"Processing Error: {str(e)}"
405
+ )
406
+
407
+ async def _process_response(self, url: str, response: httpx.Response, depth: int, queue: asyncio.Queue) -> None:
408
+ """
409
+ Processa a resposta HTTP e extrai links para continuar o rastreamento.
410
+
411
+ Args:
412
+ url: URL que foi acessada
413
+ response: Resposta HTTP
414
+ depth: Profundidade atual do rastreamento
415
+ queue: Fila de URLs para processamento
416
+ """
417
+ # Cria o objeto da página com os dados básicos
418
+ page = CrawlPage(
419
+ url=url,
420
+ status=response.status_code,
421
+ redirect_chain=[(str(r.url), r.status_code) for r in response.history]
422
+ )
423
+
424
+ # Se não for uma resposta de sucesso ou não for HTML, retorna
425
+ if response.status_code >= 400 or not response.headers.get("content-type", "").startswith("text"):
426
+ self.results[url] = page
427
+ return
428
+
429
+ try:
430
+ # Parseia o HTML
431
+ parser = HTMLParser(response.text)
432
+
433
+ # Extrai o título da página
434
+ title = parser.css_first("title")
435
+ if title and hasattr(title, 'text') and callable(title.text):
436
+ page.title = title.text(strip=True)
437
+
438
+ # Extrai os links da página
439
+ await self._extract_links(parser, url, depth, queue)
440
+
441
+ # Extrai os formulários da página
442
+ self._extract_forms(parser, page)
443
+
444
+ # Adiciona a página aos resultados
445
+ self.results[url] = page
446
+
447
+ except Exception as e:
448
+ logger.error("process_response_error", url=url, error=str(e))
449
+ page.error = f"Error processing response: {str(e)}"
450
+ self.results[url] = page
451
+
452
+ async def _extract_links(self, parser: HTMLParser, base_url: str, depth: int, queue: asyncio.Queue) -> None:
453
+ """Extrai links do HTML e os adiciona à fila de processamento."""
454
+ for link in parser.css("a[href]"):
455
+ try:
456
+ href = link.attributes.get("href", "").strip()
457
+ if not href or href.startswith("#") or href.startswith("javascript:"):
458
+ continue
459
+
460
+ # Normaliza a URL
461
+ url = self._normalize_url(href, base_url)
462
+ if not url:
463
+ continue
464
+
465
+ # Verifica se a URL pertence ao mesmo domínio
466
+ if not self._is_same_domain(url):
467
+ continue
468
+
469
+ # Adiciona à fila se ainda não foi visitada
470
+ if url not in self.visited and url not in self.results:
471
+ queue.put_nowait((url, depth + 1))
472
+
473
+ except Exception as e:
474
+ logger.warning("link_extraction_error", href=href, error=str(e))
475
+
476
+ def _extract_forms(self, parser: HTMLParser, page: CrawlPage) -> None:
477
+ """Extrai formulários do HTML."""
478
+ for form in parser.css("form"):
479
+ try:
480
+ form_data = {"method": form.attributes.get("method", "GET").upper()}
481
+
482
+ # Obtém a ação do formulário
483
+ action = form.attributes.get("action", "").strip()
484
+ if action:
485
+ form_data["action"] = self._normalize_url(action, page.url)
486
+ else:
487
+ form_data["action"] = page.url
488
+
489
+ # Extrai os campos do formulário
490
+ form_data["fields"] = []
491
+ for field in form.css("input, textarea, select"):
492
+ field_data = {
493
+ "name": field.attributes.get("name", ""),
494
+ "type": field.attributes.get("type", "text"),
495
+ "value": field.attributes.get("value", ""),
496
+ "required": "required" in field.attributes
497
+ }
498
+ form_data["fields"].append(field_data)
499
+
500
+ page.forms.append(form_data)
501
+
502
+ except Exception as e:
503
+ logger.warning("form_extraction_error", error=str(e))
504
+
505
+ async def close(self) -> None:
506
+ """Fecha a sessão HTTP."""
507
+ if self.session:
508
+ await self.session.aclose()
509
+ self.session = None
510
+
511
+ async def __aenter__(self):
512
+ await self._init_session()
513
+ return self
514
+
515
+ async def __aexit__(self, exc_type, exc_val, exc_tb):
516
+ await self.close()
517
+
518
+
519
+ # Para compatibilidade com código existente
520
+ __all__ = ["WebCrawler", "CrawlPage"]
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "moriarty-project"
7
- version = "0.1.22"
7
+ version = "0.1.24"
8
8
  description = "Client-side OSINT toolkit with forensic-grade evidence handling."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"