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.
- package/LICENSE +13 -0
- package/_init/.monotomic.help.txt +624 -0
- package/_init/attachments.html +13 -0
- package/_init/attachments_msgs/info.md +3 -0
- package/_init/attachments_msgs/message-svg.html +10 -0
- package/_init/attachments_msgs/messages-doc.html +42 -0
- package/_init/attachments_msgs/messages-epub.html +34 -0
- package/_init/attachments_msgs/messages-ics.html +28 -0
- package/_init/attachments_msgs/messages-img.html +49 -0
- package/_init/attachments_msgs/messages-md.html +32 -0
- package/_init/attachments_msgs/messages-mov.html +87 -0
- package/_init/attachments_msgs/messages-odt.html +33 -0
- package/_init/attachments_msgs/messages-pdf.html +38 -0
- package/_init/attachments_msgs/messages-pdf.md +11 -0
- package/_init/attachments_msgs/messages-pptx.html +36 -0
- package/_init/attachments_msgs/messages-rtf.html +30 -0
- package/_init/attachments_msgs/messages-wav.html +21 -0
- package/_init/attachments_msgs/messages-xlsx.html +54 -0
- package/_init/bulk-from-mail.txt +6 -0
- package/_init/emails.txt +6 -0
- package/_init/froms.txt +2 -0
- package/_init/functions.txt +309 -0
- package/_init/generated/info.md +3 -0
- package/_init/help.txt +29 -0
- package/_init/icon-emojis.txt +167 -0
- package/_init/links.txt +4 -0
- package/_init/messages.html +97 -0
- package/_init/monotomic.json +859 -0
- package/_init/monotomic.key +1 -0
- package/_init/props/.extractor/alibaba/advanced.txt +74 -0
- package/_init/props/.extractor/alibaba/apikey.txt +10 -0
- package/_init/props/.extractor/alibaba/product.txt +657 -0
- package/_init/props/.extractor/alibaba/region.txt +27 -0
- package/_init/props/.extractor/alibaba/role.txt +1600 -0
- package/_init/props/.extractor/crunchbase/advanced.txt +68 -0
- package/_init/props/.extractor/crunchbase/apikey.txt +7 -0
- package/_init/props/.extractor/crunchbase/product.txt +579 -0
- package/_init/props/.extractor/crunchbase/region.txt +21 -0
- package/_init/props/.extractor/crunchbase/role.txt +1539 -0
- package/_init/props/.extractor/linkedin/advanced.txt +68 -0
- package/_init/props/.extractor/linkedin/apikey.txt +7 -0
- package/_init/props/.extractor/linkedin/product.txt +535 -0
- package/_init/props/.extractor/linkedin/region.txt +22 -0
- package/_init/props/.extractor/linkedin/role.txt +1508 -0
- package/_init/props/.extractor/madeinchina/advanced.txt +66 -0
- package/_init/props/.extractor/madeinchina/apikey.txt +8 -0
- package/_init/props/.extractor/madeinchina/product.txt +657 -0
- package/_init/props/.extractor/madeinchina/region.txt +22 -0
- package/_init/props/.extractor/madeinchina/role.txt +1600 -0
- package/_init/props/.extractor/pitchbook/advanced.txt +82 -0
- package/_init/props/.extractor/pitchbook/apikey.txt +10 -0
- package/_init/props/.extractor/pitchbook/product.txt +579 -0
- package/_init/props/.extractor/pitchbook/region.txt +23 -0
- package/_init/props/.extractor/pitchbook/role.txt +1566 -0
- package/_init/props/.extractor/readme.txt +185 -0
- package/_init/props/.extractor/zoominfo/advanced.txt +68 -0
- package/_init/props/.extractor/zoominfo/apikey.txt +10 -0
- package/_init/props/.extractor/zoominfo/product.txt +535 -0
- package/_init/props/.extractor/zoominfo/region.txt +30 -0
- package/_init/props/.extractor/zoominfo/role.txt +1508 -0
- package/_init/props/.judger/readme.txt +93 -0
- package/_init/props/eml/attachments_msgs/e_message-svg.html +10 -0
- package/_init/props/eml/attachments_msgs/e_messages-doc.html +14 -0
- package/_init/props/eml/attachments_msgs/e_messages-epub.html +14 -0
- package/_init/props/eml/attachments_msgs/e_messages-ics.html +34 -0
- package/_init/props/eml/attachments_msgs/e_messages-md.html +12 -0
- package/_init/props/eml/attachments_msgs/e_messages-mov.html +70 -0
- package/_init/props/eml/attachments_msgs/e_messages-odt.html +12 -0
- package/_init/props/eml/attachments_msgs/e_messages-pdf.html +16 -0
- package/_init/props/eml/attachments_msgs/e_messages-pptx.html +19 -0
- package/_init/props/eml/attachments_msgs/e_messages-rtf.html +14 -0
- package/_init/props/eml/attachments_msgs/e_messages-wav.html +13 -0
- package/_init/props/eml/attachments_msgs/e_messages-xlsx.html +25 -0
- package/_init/props/eml/e_attachments.html +13 -0
- package/_init/props/eml/e_messages.html +13 -0
- package/_init/props/info.md +3 -0
- package/_init/props/redirect/api_keys.txt +41 -0
- package/_init/props/redirect/domain.txt +7 -0
- package/_init/props/redirect/domains.txt +7 -0
- package/_init/props/redirect/readme.txt +121 -0
- package/_init/props/redirect/shodan-api.txt +30 -0
- package/_init/props/sorter/sorter-options.txt +188 -0
- package/_init/proxy_engine.txt +38 -0
- package/_init/readme.txt +4 -0
- package/_init/senders.txt +6 -0
- package/_init/smtps.txt +34 -0
- package/_init/socks.txt +27 -0
- package/_init/subjects.txt +2 -0
- package/commands/auth.js +1 -0
- package/commands/cleaner.js +1 -0
- package/commands/debounce.js +1 -0
- package/commands/email.js +1 -0
- package/commands/emop.js +1 -0
- package/commands/extract.js +1 -0
- package/commands/features.js +1 -0
- package/commands/functions.js +1 -0
- package/commands/index.js +1 -0
- package/commands/init.js +1 -0
- package/commands/jdop.js +1 -0
- package/commands/judger.js +1 -0
- package/commands/mthp.js +1 -0
- package/commands/mx.js +1 -0
- package/commands/proxy.js +1 -0
- package/commands/redirect.js +1 -0
- package/commands/renew.js +1 -0
- package/commands/send.js +1 -0
- package/commands/sort.js +1 -0
- package/commands/update.js +1 -0
- package/commands/user.js +1 -0
- package/commands/verify.js +1 -0
- package/denv.js +1 -0
- package/functions/advance.js +1 -0
- package/functions/auths.js +1 -0
- package/functions/cln/index.js +1 -0
- package/functions/cnvx.js +1 -0
- package/functions/deb/buckets.js +1 -0
- package/functions/deb/dmcd.js +1 -0
- package/functions/deb/dnsi.js +1 -0
- package/functions/deb/engine.js +1 -0
- package/functions/deb/index.js +1 -0
- package/functions/deb/rules.js +1 -0
- package/functions/deb/runState.js +1 -0
- package/functions/deb/spro.js +1 -0
- package/functions/deb/verdict.js +1 -0
- package/functions/deps.js +2 -0
- package/functions/emx/advanced-templates.js +1 -0
- package/functions/emx/advanced.js +1 -0
- package/functions/emx/alibaba.js +1 -0
- package/functions/emx/base-runner.js +1 -0
- package/functions/emx/checkpoint.js +1 -0
- package/functions/emx/config.js +1 -0
- package/functions/emx/crunchbase.js +1 -0
- package/functions/emx/http.js +1 -0
- package/functions/emx/index.js +1 -0
- package/functions/emx/limits.js +1 -0
- package/functions/emx/linkedin.js +1 -0
- package/functions/emx/madeinchina.js +1 -0
- package/functions/emx/pacing.js +1 -0
- package/functions/emx/paths.js +1 -0
- package/functions/emx/pitchbook.js +1 -0
- package/functions/emx/product.js +1 -0
- package/functions/emx/provider-profiles.js +1 -0
- package/functions/emx/proxy-pool.js +1 -0
- package/functions/emx/quality.js +1 -0
- package/functions/emx/rate-limit.js +1 -0
- package/functions/emx/region.js +1 -0
- package/functions/emx/registry.js +1 -0
- package/functions/emx/resilience.js +1 -0
- package/functions/emx/roles.js +1 -0
- package/functions/emx/scheduler.js +1 -0
- package/functions/emx/shield.js +1 -0
- package/functions/emx/targets.js +1 -0
- package/functions/emx/top-sign.js +1 -0
- package/functions/emx/writer-core.js +1 -0
- package/functions/emx/writer.js +1 -0
- package/functions/emx/zoominfo.js +1 -0
- package/functions/ewsm.js +1 -0
- package/functions/exhs.js +1 -0
- package/functions/ext/index.js +1 -0
- package/functions/extends.js +1 -0
- package/functions/fil.js +1 -0
- package/functions/glob.js +1 -0
- package/functions/gtp/cHtmlRtf.js +1 -0
- package/functions/gtp/cHtmlRtfWImage.js +1 -0
- package/functions/gtp/cHtmlXls.js +1 -0
- package/functions/gtp/clientsidejs/processingHtml.js +1 -0
- package/functions/gtp/encryptHtml.js +1 -0
- package/functions/hwmk.js +1 -0
- package/functions/inil.js +1 -0
- package/functions/ipr/agents.js +1 -0
- package/functions/ipr/health.js +1 -0
- package/functions/ipr/hnds.js +1 -0
- package/functions/ipr/index.js +1 -0
- package/functions/ipr/parser.js +1 -0
- package/functions/ipr/probe.js +1 -0
- package/functions/ipr/pxen.js +1 -0
- package/functions/ipr/reputation.js +1 -0
- package/functions/ipr/rotator.js +1 -0
- package/functions/ipr/runtime.js +1 -0
- package/functions/ipr/smtpports.js +1 -0
- package/functions/ipr/validate.js +1 -0
- package/functions/jdg/autodiscover.js +1 -0
- package/functions/jdg/dmcj.js +1 -0
- package/functions/jdg/dns-resolve.js +1 -0
- package/functions/jdg/http.js +1 -0
- package/functions/jdg/index.js +1 -0
- package/functions/jdg/platforms.js +1 -0
- package/functions/mcry.js +1 -0
- package/functions/mpry.js +1 -0
- package/functions/mxc/index.js +1 -0
- package/functions/obfs.js +1 -0
- package/functions/qrtest.js +1 -0
- package/functions/rdt/api-keys.js +1 -0
- package/functions/rdt/candidates.js +1 -0
- package/functions/rdt/cli-args.js +1 -0
- package/functions/rdt/crawl-shield.js +1 -0
- package/functions/rdt/dns-guard.js +1 -0
- package/functions/rdt/domain-budget.js +1 -0
- package/functions/rdt/http-client.js +1 -0
- package/functions/rdt/index.js +1 -0
- package/functions/rdt/output.js +1 -0
- package/functions/rdt/proxy.js +1 -0
- package/functions/rdt/rdt-check.js +1 -0
- package/functions/rdt/scanner.js +1 -0
- package/functions/rdt/shodan-api.js +1 -0
- package/functions/rdt/source-cache.js +1 -0
- package/functions/rdt/sources.js +1 -0
- package/functions/rdt/utils.js +1 -0
- package/functions/rdt/verify.js +1 -0
- package/functions/renew.js +1 -0
- package/functions/snd/index.js +1 -0
- package/functions/snd/mailers/dnsml.js +1 -0
- package/functions/snd/mailers/ewsml.js +1 -0
- package/functions/snd/mailers/freml.js +1 -0
- package/functions/snd/mailers/locml.js +1 -0
- package/functions/snd/mailers/mxdml.js +1 -0
- package/functions/snd/mailers/mxsml.js +1 -0
- package/functions/snd/mailers/prxml.js +1 -0
- package/functions/snd/mailers/zmbvf.js +2 -0
- package/functions/snd/mailers/zmrml.js +1 -0
- package/functions/sptc.js +1 -0
- package/functions/srt/index.js +1 -0
- package/functions/user.js +1 -0
- package/functions/vrf/dns-resolve.js +1 -0
- package/functions/vrf/http-client.js +1 -0
- package/functions/vrf/index.js +1 -0
- package/functions/vrf/providers.js +1 -0
- package/functions/zip.js +1 -0
- package/helpers.js +1 -0
- package/howto.txt +15 -0
- package/models/user.js +1 -0
- package/package.json +78 -0
- package/ultra.js +2 -0
- package/utils/atm.js +1 -0
- package/utils/checker.js +1 -0
- package/utils/cliBrand.js +1 -0
- package/utils/cliEmoji.js +1 -0
- package/utils/colors.js +1 -0
- package/utils/dnsMx.js +1 -0
- package/utils/exfr.js +1 -0
- package/utils/features.js +1 -0
- package/utils/gec.js +1 -0
- package/utils/hide.js +1 -0
- package/utils/jdfr.js +1 -0
- package/utils/liveFile.js +1 -0
- package/utils/loadEngine.js +1 -0
- package/utils/mthp.js +1 -0
- package/utils/phl.js +1 -0
- package/utils/rtm.js +1 -0
- package/utils/sag.js +1 -0
- package/utils/stm.js +1 -0
- package/utils/tok.js +1 -0
- package/utils/typ.js +1 -0
- package/utils/val.js +1 -0
- 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,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,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
|