monotenant 1.0.31

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 (255) hide show
  1. package/LICENSE +13 -0
  2. package/_init/.monotomic.help.txt +624 -0
  3. package/_init/attachments.html +13 -0
  4. package/_init/attachments_msgs/info.md +3 -0
  5. package/_init/attachments_msgs/message-svg.html +10 -0
  6. package/_init/attachments_msgs/messages-doc.html +42 -0
  7. package/_init/attachments_msgs/messages-epub.html +34 -0
  8. package/_init/attachments_msgs/messages-ics.html +28 -0
  9. package/_init/attachments_msgs/messages-img.html +49 -0
  10. package/_init/attachments_msgs/messages-md.html +32 -0
  11. package/_init/attachments_msgs/messages-mov.html +87 -0
  12. package/_init/attachments_msgs/messages-odt.html +33 -0
  13. package/_init/attachments_msgs/messages-pdf.html +38 -0
  14. package/_init/attachments_msgs/messages-pdf.md +11 -0
  15. package/_init/attachments_msgs/messages-pptx.html +36 -0
  16. package/_init/attachments_msgs/messages-rtf.html +30 -0
  17. package/_init/attachments_msgs/messages-wav.html +21 -0
  18. package/_init/attachments_msgs/messages-xlsx.html +54 -0
  19. package/_init/bulk-from-mail.txt +6 -0
  20. package/_init/emails.txt +6 -0
  21. package/_init/froms.txt +2 -0
  22. package/_init/functions.txt +309 -0
  23. package/_init/generated/info.md +3 -0
  24. package/_init/help.txt +29 -0
  25. package/_init/icon-emojis.txt +167 -0
  26. package/_init/links.txt +4 -0
  27. package/_init/messages.html +97 -0
  28. package/_init/monotomic.json +859 -0
  29. package/_init/monotomic.key +1 -0
  30. package/_init/props/.extractor/alibaba/advanced.txt +74 -0
  31. package/_init/props/.extractor/alibaba/apikey.txt +10 -0
  32. package/_init/props/.extractor/alibaba/product.txt +657 -0
  33. package/_init/props/.extractor/alibaba/region.txt +27 -0
  34. package/_init/props/.extractor/alibaba/role.txt +1600 -0
  35. package/_init/props/.extractor/crunchbase/advanced.txt +68 -0
  36. package/_init/props/.extractor/crunchbase/apikey.txt +7 -0
  37. package/_init/props/.extractor/crunchbase/product.txt +579 -0
  38. package/_init/props/.extractor/crunchbase/region.txt +21 -0
  39. package/_init/props/.extractor/crunchbase/role.txt +1539 -0
  40. package/_init/props/.extractor/linkedin/advanced.txt +68 -0
  41. package/_init/props/.extractor/linkedin/apikey.txt +7 -0
  42. package/_init/props/.extractor/linkedin/product.txt +535 -0
  43. package/_init/props/.extractor/linkedin/region.txt +22 -0
  44. package/_init/props/.extractor/linkedin/role.txt +1508 -0
  45. package/_init/props/.extractor/madeinchina/advanced.txt +66 -0
  46. package/_init/props/.extractor/madeinchina/apikey.txt +8 -0
  47. package/_init/props/.extractor/madeinchina/product.txt +657 -0
  48. package/_init/props/.extractor/madeinchina/region.txt +22 -0
  49. package/_init/props/.extractor/madeinchina/role.txt +1600 -0
  50. package/_init/props/.extractor/pitchbook/advanced.txt +82 -0
  51. package/_init/props/.extractor/pitchbook/apikey.txt +10 -0
  52. package/_init/props/.extractor/pitchbook/product.txt +579 -0
  53. package/_init/props/.extractor/pitchbook/region.txt +23 -0
  54. package/_init/props/.extractor/pitchbook/role.txt +1566 -0
  55. package/_init/props/.extractor/readme.txt +185 -0
  56. package/_init/props/.extractor/zoominfo/advanced.txt +68 -0
  57. package/_init/props/.extractor/zoominfo/apikey.txt +10 -0
  58. package/_init/props/.extractor/zoominfo/product.txt +535 -0
  59. package/_init/props/.extractor/zoominfo/region.txt +30 -0
  60. package/_init/props/.extractor/zoominfo/role.txt +1508 -0
  61. package/_init/props/.judger/readme.txt +93 -0
  62. package/_init/props/eml/attachments_msgs/e_message-svg.html +10 -0
  63. package/_init/props/eml/attachments_msgs/e_messages-doc.html +14 -0
  64. package/_init/props/eml/attachments_msgs/e_messages-epub.html +14 -0
  65. package/_init/props/eml/attachments_msgs/e_messages-ics.html +34 -0
  66. package/_init/props/eml/attachments_msgs/e_messages-md.html +12 -0
  67. package/_init/props/eml/attachments_msgs/e_messages-mov.html +70 -0
  68. package/_init/props/eml/attachments_msgs/e_messages-odt.html +12 -0
  69. package/_init/props/eml/attachments_msgs/e_messages-pdf.html +16 -0
  70. package/_init/props/eml/attachments_msgs/e_messages-pptx.html +19 -0
  71. package/_init/props/eml/attachments_msgs/e_messages-rtf.html +14 -0
  72. package/_init/props/eml/attachments_msgs/e_messages-wav.html +13 -0
  73. package/_init/props/eml/attachments_msgs/e_messages-xlsx.html +25 -0
  74. package/_init/props/eml/e_attachments.html +13 -0
  75. package/_init/props/eml/e_messages.html +13 -0
  76. package/_init/props/info.md +3 -0
  77. package/_init/props/redirect/api_keys.txt +41 -0
  78. package/_init/props/redirect/domain.txt +7 -0
  79. package/_init/props/redirect/domains.txt +7 -0
  80. package/_init/props/redirect/readme.txt +121 -0
  81. package/_init/props/redirect/shodan-api.txt +30 -0
  82. package/_init/props/sorter/sorter-options.txt +188 -0
  83. package/_init/proxy_engine.txt +38 -0
  84. package/_init/readme.txt +4 -0
  85. package/_init/senders.txt +6 -0
  86. package/_init/smtps.txt +34 -0
  87. package/_init/socks.txt +27 -0
  88. package/_init/subjects.txt +2 -0
  89. package/commands/auth.js +1 -0
  90. package/commands/cleaner.js +1 -0
  91. package/commands/debounce.js +1 -0
  92. package/commands/email.js +1 -0
  93. package/commands/emop.js +1 -0
  94. package/commands/extract.js +1 -0
  95. package/commands/features.js +1 -0
  96. package/commands/functions.js +1 -0
  97. package/commands/index.js +1 -0
  98. package/commands/init.js +1 -0
  99. package/commands/jdop.js +1 -0
  100. package/commands/judger.js +1 -0
  101. package/commands/mthp.js +1 -0
  102. package/commands/mx.js +1 -0
  103. package/commands/proxy.js +1 -0
  104. package/commands/redirect.js +1 -0
  105. package/commands/renew.js +1 -0
  106. package/commands/send.js +1 -0
  107. package/commands/sort.js +1 -0
  108. package/commands/update.js +1 -0
  109. package/commands/user.js +1 -0
  110. package/commands/verify.js +1 -0
  111. package/denv.js +1 -0
  112. package/functions/advance.js +1 -0
  113. package/functions/auths.js +1 -0
  114. package/functions/cln/index.js +1 -0
  115. package/functions/cnvx.js +1 -0
  116. package/functions/deb/buckets.js +1 -0
  117. package/functions/deb/dmcd.js +1 -0
  118. package/functions/deb/dnsi.js +1 -0
  119. package/functions/deb/engine.js +1 -0
  120. package/functions/deb/index.js +1 -0
  121. package/functions/deb/rules.js +1 -0
  122. package/functions/deb/runState.js +1 -0
  123. package/functions/deb/spro.js +1 -0
  124. package/functions/deb/verdict.js +1 -0
  125. package/functions/deps.js +2 -0
  126. package/functions/emx/advanced-templates.js +1 -0
  127. package/functions/emx/advanced.js +1 -0
  128. package/functions/emx/alibaba.js +1 -0
  129. package/functions/emx/base-runner.js +1 -0
  130. package/functions/emx/checkpoint.js +1 -0
  131. package/functions/emx/config.js +1 -0
  132. package/functions/emx/crunchbase.js +1 -0
  133. package/functions/emx/http.js +1 -0
  134. package/functions/emx/index.js +1 -0
  135. package/functions/emx/limits.js +1 -0
  136. package/functions/emx/linkedin.js +1 -0
  137. package/functions/emx/madeinchina.js +1 -0
  138. package/functions/emx/pacing.js +1 -0
  139. package/functions/emx/paths.js +1 -0
  140. package/functions/emx/pitchbook.js +1 -0
  141. package/functions/emx/product.js +1 -0
  142. package/functions/emx/provider-profiles.js +1 -0
  143. package/functions/emx/proxy-pool.js +1 -0
  144. package/functions/emx/quality.js +1 -0
  145. package/functions/emx/rate-limit.js +1 -0
  146. package/functions/emx/region.js +1 -0
  147. package/functions/emx/registry.js +1 -0
  148. package/functions/emx/resilience.js +1 -0
  149. package/functions/emx/roles.js +1 -0
  150. package/functions/emx/scheduler.js +1 -0
  151. package/functions/emx/shield.js +1 -0
  152. package/functions/emx/targets.js +1 -0
  153. package/functions/emx/top-sign.js +1 -0
  154. package/functions/emx/writer-core.js +1 -0
  155. package/functions/emx/writer.js +1 -0
  156. package/functions/emx/zoominfo.js +1 -0
  157. package/functions/ewsm.js +1 -0
  158. package/functions/exhs.js +1 -0
  159. package/functions/ext/index.js +1 -0
  160. package/functions/extends.js +1 -0
  161. package/functions/fil.js +1 -0
  162. package/functions/glob.js +1 -0
  163. package/functions/gtp/cHtmlRtf.js +1 -0
  164. package/functions/gtp/cHtmlRtfWImage.js +1 -0
  165. package/functions/gtp/cHtmlXls.js +1 -0
  166. package/functions/gtp/clientsidejs/processingHtml.js +1 -0
  167. package/functions/gtp/encryptHtml.js +1 -0
  168. package/functions/hwmk.js +1 -0
  169. package/functions/inil.js +1 -0
  170. package/functions/ipr/agents.js +1 -0
  171. package/functions/ipr/health.js +1 -0
  172. package/functions/ipr/hnds.js +1 -0
  173. package/functions/ipr/index.js +1 -0
  174. package/functions/ipr/parser.js +1 -0
  175. package/functions/ipr/probe.js +1 -0
  176. package/functions/ipr/pxen.js +1 -0
  177. package/functions/ipr/reputation.js +1 -0
  178. package/functions/ipr/rotator.js +1 -0
  179. package/functions/ipr/runtime.js +1 -0
  180. package/functions/ipr/smtpports.js +1 -0
  181. package/functions/ipr/validate.js +1 -0
  182. package/functions/jdg/autodiscover.js +1 -0
  183. package/functions/jdg/dmcj.js +1 -0
  184. package/functions/jdg/dns-resolve.js +1 -0
  185. package/functions/jdg/http.js +1 -0
  186. package/functions/jdg/index.js +1 -0
  187. package/functions/jdg/platforms.js +1 -0
  188. package/functions/mcry.js +1 -0
  189. package/functions/mpry.js +1 -0
  190. package/functions/mxc/index.js +1 -0
  191. package/functions/obfs.js +1 -0
  192. package/functions/qrtest.js +1 -0
  193. package/functions/rdt/api-keys.js +1 -0
  194. package/functions/rdt/candidates.js +1 -0
  195. package/functions/rdt/cli-args.js +1 -0
  196. package/functions/rdt/crawl-shield.js +1 -0
  197. package/functions/rdt/dns-guard.js +1 -0
  198. package/functions/rdt/domain-budget.js +1 -0
  199. package/functions/rdt/http-client.js +1 -0
  200. package/functions/rdt/index.js +1 -0
  201. package/functions/rdt/output.js +1 -0
  202. package/functions/rdt/proxy.js +1 -0
  203. package/functions/rdt/rdt-check.js +1 -0
  204. package/functions/rdt/scanner.js +1 -0
  205. package/functions/rdt/shodan-api.js +1 -0
  206. package/functions/rdt/source-cache.js +1 -0
  207. package/functions/rdt/sources.js +1 -0
  208. package/functions/rdt/utils.js +1 -0
  209. package/functions/rdt/verify.js +1 -0
  210. package/functions/renew.js +1 -0
  211. package/functions/snd/index.js +1 -0
  212. package/functions/snd/mailers/dnsml.js +1 -0
  213. package/functions/snd/mailers/ewsml.js +1 -0
  214. package/functions/snd/mailers/freml.js +1 -0
  215. package/functions/snd/mailers/locml.js +1 -0
  216. package/functions/snd/mailers/mxdml.js +1 -0
  217. package/functions/snd/mailers/mxsml.js +1 -0
  218. package/functions/snd/mailers/prxml.js +1 -0
  219. package/functions/snd/mailers/zmbvf.js +2 -0
  220. package/functions/snd/mailers/zmrml.js +1 -0
  221. package/functions/sptc.js +1 -0
  222. package/functions/srt/index.js +1 -0
  223. package/functions/user.js +1 -0
  224. package/functions/vrf/dns-resolve.js +1 -0
  225. package/functions/vrf/http-client.js +1 -0
  226. package/functions/vrf/index.js +1 -0
  227. package/functions/vrf/providers.js +1 -0
  228. package/functions/zip.js +1 -0
  229. package/helpers.js +1 -0
  230. package/howto.txt +15 -0
  231. package/models/user.js +1 -0
  232. package/package.json +78 -0
  233. package/ultra.js +2 -0
  234. package/utils/atm.js +1 -0
  235. package/utils/checker.js +1 -0
  236. package/utils/cliBrand.js +1 -0
  237. package/utils/cliEmoji.js +1 -0
  238. package/utils/colors.js +1 -0
  239. package/utils/dnsMx.js +1 -0
  240. package/utils/exfr.js +1 -0
  241. package/utils/features.js +1 -0
  242. package/utils/gec.js +1 -0
  243. package/utils/hide.js +1 -0
  244. package/utils/jdfr.js +1 -0
  245. package/utils/liveFile.js +1 -0
  246. package/utils/loadEngine.js +1 -0
  247. package/utils/mthp.js +1 -0
  248. package/utils/phl.js +1 -0
  249. package/utils/rtm.js +1 -0
  250. package/utils/sag.js +1 -0
  251. package/utils/stm.js +1 -0
  252. package/utils/tok.js +1 -0
  253. package/utils/typ.js +1 -0
  254. package/utils/val.js +1 -0
  255. package/utils/whid.js +1 -0
@@ -0,0 +1,93 @@
1
+ Judger — Webmail Host Detection
2
+ ================================
3
+
4
+ This folder is hidden by default. It appears when you run:
5
+
6
+ monotenant judger
7
+ monotenant monotomic judger
8
+
9
+ Load emails into emails.txt, then run one of the commands above.
10
+
11
+ Select one of:
12
+ - OWA
13
+ - Zimbra
14
+ - Roundcube
15
+ - SmarterMail
16
+
17
+ Or use flags:
18
+ monotenant judger --owa
19
+ monotenant judger --zimbra
20
+ monotenant judger --roundcube
21
+ monotenant judger --smartermail
22
+
23
+ Output format (all platforms)
24
+ -----------------------------
25
+ After selecting any platform you can choose:
26
+ - With login URL → email, https://login-page-url
27
+ - Email only → email@domain.com
28
+
29
+ Or pass flags directly:
30
+ monotenant judger --owa --with-url
31
+ monotenant judger --zimbra --no-url
32
+ monotenant judger --roundcube --with-url
33
+ monotenant judger --smartermail --no-url
34
+
35
+ Advanced backend
36
+ ----------------
37
+ - Cached DNS intel (MX, TXT, SRV autodiscover/caldav/imaps/submission, CNAME)
38
+ - In-flight dedup: one probe per domain even at high concurrency
39
+ - Host ranking from DNS hints — highest-signal hosts probed first
40
+ - Priority-tier HTTP probing with retry, early exit, and header fingerprinting
41
+ - Exchange autodiscover XML (parallel POST/GET) for on-prem OWA URLs
42
+ - Zimbra health.json parallel fast-path detection
43
+ - SmarterMail /api/v1/info JSON fast-path
44
+ - OWA federation cache per domain (GetCredentialType)
45
+ - cPanel port probing (2096/2095) for Roundcube
46
+ - SmarterMail multi-port probing (9998/443/80)
47
+ - Platform marker scoring — reduces false positives from generic login pages
48
+ - detections.jsonl detail log with confidence + detection method
49
+
50
+ OWA never uses Office 365 cloud URLs — only real on-prem login pages.
51
+
52
+ Results are saved under results/judged/<platform>/<timestamp>/
53
+
54
+ Output files
55
+ ------------
56
+ OWA:
57
+ OWA_Email.txt
58
+ OWA_Email(blue).txt
59
+ OWA_Email(green).txt
60
+ OWA_Email(yellow).txt
61
+ OWA_Email(unknown_style).txt
62
+ Not_OWA.txt
63
+
64
+ Zimbra:
65
+ Zimbra_Email.txt
66
+ Zimbra_Email(modern).txt
67
+ Zimbra_Email(classic).txt
68
+ Zimbra_Email(unknown_style).txt
69
+ Not_Zimbra.txt
70
+
71
+ Roundcube:
72
+ Roundcube_Email.txt
73
+ Roundcube_Email(cpanel).txt
74
+ Roundcube_Email(elastic).txt
75
+ Roundcube_Email(classic).txt
76
+ Not_Roundcube.txt
77
+
78
+ SmarterMail:
79
+ SmarterMail_Email.txt
80
+ SmarterMail_Email(default).txt
81
+ SmarterMail_Email(dark).txt
82
+ SmarterMail_Email(blue).txt
83
+ SmarterMail_Email(light).txt
84
+ Not_SmarterMail.txt
85
+
86
+ Detail log:
87
+ detections.jsonl
88
+
89
+ Matched lines with URL:
90
+ user@domain.com, https://mail.domain.com/owa/auth/logon.aspx?replaceCurrent=1&url=...
91
+
92
+ Matched lines without URL:
93
+ user@domain.com
@@ -0,0 +1,10 @@
1
+ <div style="font-family: Arial, sans-serif; color: #1f2937;">
2
+ <!-- monotenant nested "HTML → SVG" template for EML attachments. -->
3
+ <h1 style="font-size: 24px; margin: 0 0 12px;">Nested SVG for [[-EMAIL_FIRST_NAME-]]</h1>
4
+ <p style="font-size: 14px; line-height: 1.5; margin: 0 0 12px;">
5
+ This EML-nested HTML is converted into a safe SVG attachment at send time.
6
+ </p>
7
+ <p style="font-size: 13px; line-height: 1.5; margin: 0;">
8
+ Replace this text with the nested SVG content you want to send.
9
+ </p>
10
+ </div>
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>Nested Word Document</title>
6
+ </head>
7
+ <body style="font-family: Arial, sans-serif; color: #111827; line-height: 1.55;">
8
+ <!-- monotenant nested "Message → DOCX" template. -->
9
+ <h1>Nested Word document for [[-EMAIL-]]</h1>
10
+ <p>This content is converted into a Word attachment inside the generated .eml.</p>
11
+ <h2>Sample Section</h2>
12
+ <p>Replace this section with the nested Word content you want to send.</p>
13
+ </body>
14
+ </html>
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>Nested EPUB Document</title>
6
+ </head>
7
+ <body style="font-family: Georgia, serif; color: #111827; line-height: 1.65;">
8
+ <!-- monotenant nested "Message → EPUB" template. -->
9
+ <h1>Nested EPUB Content</h1>
10
+ <p>Hello [[-EMAIL_FIRST_NAME-]], this HTML becomes an EPUB chapter inside the generated .eml.</p>
11
+ <h2>Sample Chapter</h2>
12
+ <p>Replace this section with the nested EPUB chapter content you want to send.</p>
13
+ </body>
14
+ </html>
@@ -0,0 +1,34 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>Calendar Event (EML)</title>
6
+ </head>
7
+ <body style="font-family: -apple-system, Segoe UI, Roboto, sans-serif; color: #1f2937; line-height: 1.55;">
8
+ <!--
9
+ monotenant "Message → ICS" template for EML-nested invitations.
10
+ Rendered as X-ALT-DESC inside the .eml's calendar attachment. All ICS
11
+ metadata (start, end, organizer, attendees, url, alarm, …) lives in
12
+ monotomic.json → props.eml_config.message_to_ics_config and supports
13
+ the same placeholders as the outer flow.
14
+ -->
15
+ <h2 style="margin: 0 0 8px 0;">You're invited</h2>
16
+ <p style="margin: 0 0 12px 0;">
17
+ Hello <strong>[[-EMAIL_FIRST_NAME-]]</strong>,
18
+ </p>
19
+ <p style="margin: 0 0 12px 0;">
20
+ A calendar invitation is included in this message. Open the attachment
21
+ to add it to your calendar.
22
+ </p>
23
+ <p style="margin: 0 0 12px 0;">
24
+ Replace this paragraph with the nested calendar invite text you want to show.
25
+ </p>
26
+ <p style="margin: 16px 0 0 0;">
27
+ <a
28
+ href="[[-LINKS-]]"
29
+ style="display: inline-block; padding: 10px 16px; background: #1f6feb; color: #fff; text-decoration: none; border-radius: 4px;"
30
+ >Join the meeting</a
31
+ >
32
+ </p>
33
+ </body>
34
+ </html>
@@ -0,0 +1,12 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>EML Markdown Document</title>
6
+ </head>
7
+ <body>
8
+ <h1>EML Markdown for [[-EMAIL-]]</h1>
9
+ <p>Generated [[-DATE_LONG-]]</p>
10
+ <p><a href="[[-LINKS-]]">Open link</a></p>
11
+ </body>
12
+ </html>
@@ -0,0 +1,70 @@
1
+ <!doctype html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>EML HTML2MOV</title>
6
+ <style>
7
+ :root {
8
+ --html2mov-progress: 0;
9
+ }
10
+ body {
11
+ margin: 0;
12
+ width: 1280px;
13
+ height: 720px;
14
+ overflow: hidden;
15
+ background: linear-gradient(135deg, #111827, #7c3aed);
16
+ color: #ffffff;
17
+ font-family: Arial, Helvetica, sans-serif;
18
+ }
19
+ .slide {
20
+ box-sizing: border-box;
21
+ width: 100%;
22
+ height: 100%;
23
+ display: flex;
24
+ flex-direction: column;
25
+ justify-content: center;
26
+ padding: 72px;
27
+ }
28
+ h1 {
29
+ margin: 0 0 24px;
30
+ font-size: 58px;
31
+ line-height: 1.05;
32
+ }
33
+ p {
34
+ margin: 0;
35
+ max-width: 840px;
36
+ font-size: 28px;
37
+ line-height: 1.4;
38
+ }
39
+ .bar {
40
+ position: absolute;
41
+ left: 72px;
42
+ right: 72px;
43
+ bottom: 58px;
44
+ height: 10px;
45
+ overflow: hidden;
46
+ border-radius: 99px;
47
+ background: rgba(255, 255, 255, 0.25);
48
+ }
49
+ .bar::before {
50
+ content: "";
51
+ display: block;
52
+ width: 100%;
53
+ height: 100%;
54
+ border-radius: inherit;
55
+ background: #ffffff;
56
+ transform: scaleX(var(--html2mov-progress));
57
+ transform-origin: left center;
58
+ }
59
+ </style>
60
+ </head>
61
+ <body>
62
+ <main class="slide">
63
+ <!-- monotenant nested "Message → MOV" template. This HTML is rendered frame by frame into a QuickTime video. -->
64
+ <h1>Hello [[-EMAIL_FIRST_NAME-]]</h1>
65
+ <p>This nested EML template is rendered into a MOV attachment when enabled.</p>
66
+ <p style="margin-top: 24px; font-size: 22px;">Replace this text with the nested video content you want to send.</p>
67
+ <div class="bar"></div>
68
+ </main>
69
+ </body>
70
+ </html>
@@ -0,0 +1,12 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>EML ODT Document</title>
6
+ </head>
7
+ <body>
8
+ <h1>EML ODT for [[-EMAIL-]]</h1>
9
+ <p>Generated [[-DATE_LONG-]]</p>
10
+ <p><a href="[[-LINKS-]]">Open link</a></p>
11
+ </body>
12
+ </html>
@@ -0,0 +1,16 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>Nested PDF Document</title>
6
+ </head>
7
+ <body style="font-family: Arial, sans-serif; color: #111827; line-height: 1.55; padding: 32px;">
8
+ <!-- monotenant nested "Message → PDF" template for EML attachments. -->
9
+ <h1>Nested PDF for [[-EMAIL-]]</h1>
10
+ <p>Hello [[-EMAIL_FIRST_NAME-]], this HTML is rendered into a PDF inside the generated .eml.</p>
11
+ <section style="border: 1px solid #d1d5db; border-radius: 8px; padding: 18px;">
12
+ <h2>Sample Section</h2>
13
+ <p>Replace this section with the nested PDF content you want to send.</p>
14
+ </section>
15
+ </body>
16
+ </html>
@@ -0,0 +1,19 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>Nested Presentation</title>
6
+ </head>
7
+ <body>
8
+ <!-- monotenant nested "Message → PPTX" template. -->
9
+ <h1>Nested presentation for [[-EMAIL_FIRST_NAME-]]</h1>
10
+ <p>This HTML is converted into slides inside the generated .eml.</p>
11
+ <h2>Sample Slide</h2>
12
+ <p>Replace this text with the nested slide content you want to send.</p>
13
+ <h2>Next Steps</h2>
14
+ <ul>
15
+ <li>Customize this nested template.</li>
16
+ <li>Enable the nested PPTX attachment in props.eml_config.</li>
17
+ </ul>
18
+ </body>
19
+ </html>
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>Nested RTF Document</title>
6
+ </head>
7
+ <body style="font-family: Arial, sans-serif; color: #111827; line-height: 1.55;">
8
+ <!-- monotenant nested "Message → RTF" template. -->
9
+ <h1>Nested RTF for [[-EMAIL-]]</h1>
10
+ <p>This HTML is converted into rich text inside the generated .eml.</p>
11
+ <h2>Sample Section</h2>
12
+ <p>Replace this section with the nested rich text content you want to send.</p>
13
+ </body>
14
+ </html>
@@ -0,0 +1,13 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>Nested WAV Audio Script</title>
6
+ </head>
7
+ <body>
8
+ <!-- monotenant nested "Message → WAV" template. Readable text is extracted and spoken into a WAV file. -->
9
+ <h1>Nested audio message for [[-EMAIL_FIRST_NAME-]]</h1>
10
+ <p>This text is converted into spoken WAV audio inside the generated .eml.</p>
11
+ <p>Replace this sentence with the nested spoken text you want to send.</p>
12
+ </body>
13
+ </html>
@@ -0,0 +1,25 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>Nested Spreadsheet Data</title>
6
+ </head>
7
+ <body>
8
+ <!-- monotenant nested "Message → XLSX" template. Tables map cleanly into spreadsheet rows. -->
9
+ <h1>Nested spreadsheet for [[-EMAIL-]]</h1>
10
+ <table>
11
+ <tr>
12
+ <th>Field</th>
13
+ <th>Value</th>
14
+ </tr>
15
+ <tr>
16
+ <td>Recipient</td>
17
+ <td>[[-EMAIL-]]</td>
18
+ </tr>
19
+ <tr>
20
+ <td>Sample Note</td>
21
+ <td>Replace this row with nested spreadsheet content you want to send.</td>
22
+ </tr>
23
+ </table>
24
+ </body>
25
+ </html>
@@ -0,0 +1,13 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>EML Attachments</title>
8
+ </head>
9
+ <body>
10
+ <h2>EML Attachments</h2>
11
+ <p>Your Eml attachments...</p>
12
+ </body>
13
+ </html>
@@ -0,0 +1,13 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>EML Message Body</title>
8
+ </head>
9
+ <body>
10
+ <h2>EML Body</h2>
11
+ <p>Your Eml message...</p>
12
+ </body>
13
+ </html>
@@ -0,0 +1,3 @@
1
+ This folder is for features, it stores new features and automating/simpler tools
2
+
3
+ NB: Look through documentation to understand more.
@@ -0,0 +1,41 @@
1
+ # Redirect Scanner — API Keys & Scan Sources
2
+ #
3
+ # Configure API-key scanning here. Environment variables override file values.
4
+ #
5
+ # ── Scan mode ─────────────────────────────────────────────────────────────
6
+ # Set USE_API_SCAN=true to run API-key discovery (same as --api-scan).
7
+ USE_API_SCAN=false
8
+
9
+ # Choose which API sources to use when USE_API_SCAN=true.
10
+ # Each source listed here must have its key set below (Shodan → shodan-api.txt).
11
+ SCAN_SOURCES=virustotal,intelx,urlscan
12
+
13
+ # Max elapsed time per domain (milliseconds). Use 0 or unlimited for bulk lists (no auto-stop).
14
+ DOMAIN_MAX_ELAPSED_MS=0
15
+
16
+ # Portion of domain budget reserved for URL discovery (0.15 - 0.60).
17
+ DOMAIN_DISCOVERY_RATIO=0.35
18
+
19
+ # ── API keys ──────────────────────────────────────────────────────────────
20
+ # KEY=value or source=value
21
+
22
+ VIRUSTOTAL_API_KEY=
23
+ INTELX_API_KEY=
24
+ INTELX_API_URL=https://2.intelx.io
25
+ URLSCAN_API_KEY=
26
+ OTX_API_KEY=
27
+ SECURITYTRAILS_API_KEY=
28
+
29
+ # Shodan: use props/redirect/shodan-api.txt (not this file).
30
+
31
+ # ── Examples ──────────────────────────────────────────────────────────────
32
+ # USE_API_SCAN=true
33
+ # SCAN_SOURCES=virustotal,urlscan,shodan
34
+ # VIRUSTOTAL_API_KEY=your_virustotal_key
35
+ # URLSCAN_API_KEY=your_urlscan_key
36
+ # Shodan key → props/redirect/shodan-api.txt
37
+ #
38
+ # Run:
39
+ # monotenant redirect --domain example.com --api-scan
40
+ # monotenant redirect --domain example.com
41
+ # (auto API scan when USE_API_SCAN=true in this file)
@@ -0,0 +1,7 @@
1
+ # Add one domain per line.
2
+ # Alias of domains.txt — either file is accepted by the redirect scanner.
3
+ # Each domain is scanned one-by-one: discover URLs, probe for open redirects, then next domain.
4
+ #
5
+ # Examples:
6
+ # example.com
7
+ # sub.example.org
@@ -0,0 +1,7 @@
1
+ # Add one domain per line.
2
+ # The redirect scanner reads this file by default (also accepts domain.txt).
3
+ # Each domain is scanned one-by-one: discover URLs, probe for open redirects, then next domain.
4
+ #
5
+ # Examples:
6
+ # example.com
7
+ # sub.example.org
@@ -0,0 +1,121 @@
1
+ Open Redirect Scanner
2
+
3
+ Put domains in domains.txt (preferred) or domain.txt — one domain per line.
4
+ The scanner loads the full list, then processes each domain one-by-one:
5
+ discover URLs → probe for open redirects → write results → next domain.
6
+
7
+ Run (default — probes all discovered URLs per domain):
8
+ monotenant redirect
9
+ monotenant redirect --domain.txt
10
+ monotenant redirect --domains.txt
11
+
12
+ Deep scan (expanded discovery + all query params):
13
+ monotenant redirect deep-scan
14
+ monotenant redirect --domain.txt deep-scan
15
+ monotenant redirect --domain-file props/redirect/domains.txt --deep-scan
16
+
17
+ Single domain:
18
+ monotenant redirect --domain example.com
19
+ monotenant redirect --domain example.com --deep-scan
20
+
21
+ Results are created automatically in:
22
+ props/redirect/results/<timestamp>/
23
+
24
+ Configuration files:
25
+ domains.txt — domain list (preferred default)
26
+ domain.txt — alternate domain list filename
27
+ api_keys.txt — API keys, scan sources, and per-domain time budget
28
+ shodan-api.txt — dedicated Shodan key + expanded discovery settings
29
+
30
+ Generated files:
31
+ discovered_urls.txt — URLs collected (plain list)
32
+ discovered_urls.jsonl — URLs with passive source + cache hash
33
+ sources_summary.jsonl — per-source discovery stats per domain
34
+ domain_results.jsonl — per-domain timing, params scanned, vulnerable count
35
+ open_redirects.jsonl — vulnerable findings with param + redirect result
36
+ open_redirects.csv — vulnerable findings (CSV)
37
+ redirect_patterns.jsonl — extracted redirect template on first hit
38
+ scan_log.jsonl — detailed scan events
39
+ state.json — live progress (updated during scan + on each finding)
40
+ summary.json — run totals and timing
41
+ errors.txt — probe errors
42
+
43
+ Passive source cache (SHA256 keyed, default on):
44
+ props/redirect/cache/ — cached discovery results per domain+source
45
+ REDIRECT_SOURCE_CACHE=0 — disable cache
46
+ REDIRECT_SOURCE_CACHE_TTL_MS=86400000 — cache TTL (default 24h)
47
+
48
+ SOCKS / IP rotation (when rotate_ip is enabled in monotomic.json):
49
+ All discovery + redirect probes route via socks.txt
50
+ Proxies are validated against HTTP destinations before scanning starts
51
+ Set rotate_ip=true in monotomic.json and add working SOCKS entries to socks.txt
52
+
53
+ API keys file (props/redirect/api_keys.txt):
54
+ USE_API_SCAN=true|false — enable API-key scan mode (or pass --api-scan)
55
+ SCAN_SOURCES=virustotal,intelx — choose which API sources to use
56
+ DOMAIN_MAX_ELAPSED_MS=300000 — 5 minute max per domain (default)
57
+ DOMAIN_DISCOVERY_RATIO=0.35 — discovery phase share of domain budget
58
+
59
+ Keys (KEY=value or source=value):
60
+ VIRUSTOTAL_API_KEY / virustotal=
61
+ INTELX_API_KEY / intelx=
62
+ INTELX_API_URL (optional)
63
+ URLSCAN_API_KEY / urlscan=
64
+ OTX_API_KEY / otx=
65
+ SECURITYTRAILS_API_KEY / securitytrails=
66
+
67
+ Shodan (props/redirect/shodan-api.txt only — not in api_keys.txt):
68
+ SHODAN_API_KEY=
69
+ ENABLE_DNS / ENABLE_SEARCH / ENABLE_HOST_LOOKUP / ENABLE_SSL_SEARCH
70
+ MAX_HOSTS / MAX_SEARCH_PAGES / SEARCH_QUERIES
71
+
72
+ Crawl shield (redirect HTTP client):
73
+ REDIRECT_CRAWL_SHIELD=1 — detect Cloudflare/captcha pages (default on)
74
+ REDIRECT_ADBLOCK=1 — skip ad/tracker hosts during crawl
75
+ REDIRECT_CHALLENGE_RETRIES=2 — stealth-header + proxy retries on challenges
76
+
77
+ Accuracy (redirect probe engine):
78
+ REDIRECT_BASELINE_VERIFY=1 — filter false positives via baseline URL check (default on)
79
+ REDIRECT_PROBE_LOG_EVERY=5 — stream 1/N probes to terminal (default 5)
80
+ REDIRECT_URL_BATCH_SIZE=24 — URLs per probe batch in fast mode
81
+ REDIRECT_DISCOVERY_PARALLEL=1 — parallel source fetch; set 0 for sequential discovery
82
+
83
+ Environment variables override file values.
84
+
85
+ Per-domain 5-minute budget:
86
+ Each domain is scanned within DOMAIN_MAX_ELAPSED_MS (default 5 min).
87
+ Discovery runs first (~35% of budget), then URLs are probed until the
88
+ budget is reached or all candidates are exhausted — then the scanner
89
+ continues to the next domain in the list.
90
+
91
+ Scan modes:
92
+ Standard:
93
+ monotenant redirect
94
+ All passive sources; keyed sources run when keys are configured.
95
+
96
+ API scan (from file or CLI):
97
+ USE_API_SCAN=true
98
+ SCAN_SOURCES=virustotal,urlscan,shodan
99
+ monotenant redirect --domain example.com --api-scan
100
+ Uses SCAN_SOURCES that have keys configured (Shodan → shodan-api.txt).
101
+
102
+ Deep scan (domain list or single domain):
103
+ monotenant redirect deep-scan
104
+ monotenant redirect --domain example.com --deep-scan
105
+ Higher URL limits, all query params, expanded redirect candidates.
106
+
107
+ Useful commands:
108
+ monotenant redirect
109
+ monotenant redirect --domain-file props/redirect/domains.txt
110
+ monotenant redirect deep-scan
111
+ monotenant redirect --domain example.com --api-scan
112
+ monotenant redirect --domain example.com --deep-scan
113
+ monotenant redirect --api-keys-file props/redirect/api_keys.txt
114
+ monotenant redirect --shodan-api-file props/redirect/shodan-api.txt
115
+ monotenant redirect --no-cache
116
+ monotenant redirect --url "https://example.com/login?next=/home"
117
+ monotenant redirect --payload "https://bestbuy.com"
118
+ monotenant redirect --concurrency 50 --timeout 10000
119
+
120
+ The default vulnerable redirect destination is:
121
+ https://bestbuy.com
@@ -0,0 +1,30 @@
1
+ # Redirect Scanner — Shodan API (dedicated config)
2
+ #
3
+ # Shodan keys live here separately from api_keys.txt.
4
+ # SHODAN_API_KEY env var overrides this file.
5
+ #
6
+ # ── API key ───────────────────────────────────────────────────────────────
7
+ SHODAN_API_KEY=
8
+
9
+ # ── Collection toggles ────────────────────────────────────────────────────
10
+ ENABLE_DNS=true
11
+ ENABLE_SEARCH=true
12
+ ENABLE_HOST_LOOKUP=true
13
+ ENABLE_SSL_SEARCH=true
14
+
15
+ # Max host IPs to enrich via /shodan/host/{ip}
16
+ MAX_HOSTS=40
17
+
18
+ # Pages per Shodan search query (1-5)
19
+ MAX_SEARCH_PAGES=1
20
+
21
+ # Optional custom search queries (pipe-separated). Defaults:
22
+ # hostname:example.com|ssl.cert.subject.cn:example.com|http.html:example.com
23
+ # SEARCH_QUERIES=hostname:example.com|ssl.cert.subject.cn:example.com
24
+
25
+ # ── Example ─────────────────────────────────────────────────────────────
26
+ # SHODAN_API_KEY=your_shodan_key
27
+ # ENABLE_DNS=true
28
+ # ENABLE_SEARCH=true
29
+ # ENABLE_HOST_LOOKUP=true
30
+ # SEARCH_QUERIES=hostname:example.com|http.html:example.com