monoplutomars 1.0.1
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/attachments.html +13 -0
- package/_init/attachments.ics +19 -0
- package/_init/attachments_msgs/info.md +3 -0
- package/_init/attachments_msgs/message-svg.html +13 -0
- package/_init/attachments_msgs/messages-doc.html +26 -0
- package/_init/attachments_msgs/messages-epub.html +53 -0
- package/_init/attachments_msgs/messages-ics.html +43 -0
- package/_init/attachments_msgs/messages-img.html +27 -0
- package/_init/attachments_msgs/messages-mov.html +71 -0
- package/_init/attachments_msgs/messages-pdf.html +26 -0
- package/_init/attachments_msgs/messages-pptx.html +22 -0
- package/_init/attachments_msgs/messages-rtf.html +21 -0
- package/_init/attachments_msgs/messages-wav.html +16 -0
- package/_init/attachments_msgs/messages-xlsx.html +30 -0
- package/_init/bulk-from-mail.txt +6 -0
- package/_init/emails.txt +7 -0
- package/_init/froms.txt +2 -0
- package/_init/functions.txt +309 -0
- package/_init/generated/info.md +3 -0
- package/_init/help.txt +28 -0
- package/_init/icon-emojis.txt +48 -0
- package/_init/links.txt +3 -0
- package/_init/messages.html +1 -0
- package/_init/monotomic.help.txt +555 -0
- package/_init/monotomic.json +679 -0
- package/_init/monotomic.key +1 -0
- package/_init/props/eml/attachments.ics +2 -0
- package/_init/props/eml/attachments.mov +2 -0
- package/_init/props/eml/attachments.wav +2 -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-mov.html +70 -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_attachments.ics +19 -0
- package/_init/props/eml/e_messages.html +13 -0
- package/_init/props/info.md +3 -0
- package/_init/props/judger/readme.txt +85 -0
- package/_init/props/redirect/api_keys.txt +40 -0
- package/_init/props/redirect/domain.txt +7 -0
- package/_init/props/redirect/readme.txt +90 -0
- package/_init/props/sorter/sorter-options.txt +188 -0
- package/_init/proxy_engine.txt +27 -0
- package/_init/readme.txt +4 -0
- package/_init/senders.txt +6 -0
- package/_init/smtps.txt +25 -0
- package/_init/socks.txt +14 -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/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/judger.js +1 -0
- package/commands/mx.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/deb/buckets.js +1 -0
- package/functions/deb/dns-intel.js +1 -0
- package/functions/deb/domain-cache.js +1 -0
- package/functions/deb/index.js +1 -0
- package/functions/deb/rules.js +1 -0
- package/functions/deb/smtp-probe.js +1 -0
- package/functions/ext/index.js +1 -0
- package/functions/extends.js +1 -0
- package/functions/globals.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/encryptHtml.js +1 -0
- package/functions/ipr/agents.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/proxy-engine.js +1 -0
- package/functions/ipr/rotator.js +1 -0
- package/functions/ipr/runtime.js +1 -0
- package/functions/ipr/smtp-handshake.js +1 -0
- package/functions/ipr/validate.js +1 -0
- package/functions/jdg/autodiscover.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/mxc/index.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/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/scanner.js +1 -0
- package/functions/rdt/sources.js +1 -0
- package/functions/rdt/utils.js +1 -0
- package/functions/renew.js +1 -0
- package/functions/snd/index.js +1 -0
- package/functions/snd/mailers/mailer-dns.js +1 -0
- package/functions/snd/mailers/mailer-ews.js +1 -0
- package/functions/snd/mailers/mailer-free.js +1 -0
- package/functions/snd/mailers/mailer-local.js +1 -0
- package/functions/snd/mailers/mailer-mx-direct.js +1 -0
- package/functions/snd/mailers/mailer-mx.js +1 -0
- package/functions/snd/mailers/mailer-proxy.js +1 -0
- package/functions/snd/mailers/mailer-zimbra.js +1 -0
- package/functions/snd/mailers/verify-zimbra.js +2 -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/helpers.js +1 -0
- package/howto.txt +15 -0
- package/models/user.js +1 -0
- package/package.json +63 -0
- package/ultra.js +2 -0
- package/utils/checker.js +1 -0
- package/utils/colors.js +1 -0
- package/utils/features.js +1 -0
- package/utils/jwtVerify.js +1 -0
- package/utils/placeholders.js +1 -0
- package/utils/types.js +1 -0
- package/utils/validation.js +1 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<div style="font-family: Arial, sans-serif; color: #1f2937;">
|
|
2
|
+
<!-- monoplutomars 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
|
+
<!-- monoplutomars 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
|
+
<!-- monoplutomars 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
|
+
monoplutomars "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,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
|
+
<!-- monoplutomars 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,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
|
+
<!-- monoplutomars 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
|
+
<!-- monoplutomars 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
|
+
<!-- monoplutomars 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
|
+
<!-- monoplutomars 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
|
+
<!-- monoplutomars 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,19 @@
|
|
|
1
|
+
BEGIN:VCALENDAR
|
|
2
|
+
VERSION:2.0
|
|
3
|
+
PRODID:-//monoplutomars//monoplutomars Calendar (EML)//EN
|
|
4
|
+
CALSCALE:GREGORIAN
|
|
5
|
+
METHOD:PUBLISH
|
|
6
|
+
BEGIN:VEVENT
|
|
7
|
+
UID:eml-static-template-event@monoplutomars
|
|
8
|
+
DTSTAMP:20260101T090000Z
|
|
9
|
+
DTSTART:20260101T090000Z
|
|
10
|
+
DTEND:20260101T100000Z
|
|
11
|
+
SUMMARY:Static EML calendar invite
|
|
12
|
+
DESCRIPTION:Pre-built ICS attached inside the .eml bundle.\nEdit props/eml/e_attachments.ics to customize.
|
|
13
|
+
LOCATION:Online
|
|
14
|
+
STATUS:CONFIRMED
|
|
15
|
+
TRANSP:OPAQUE
|
|
16
|
+
CLASS:PUBLIC
|
|
17
|
+
SEQUENCE:0
|
|
18
|
+
END:VEVENT
|
|
19
|
+
END:VCALENDAR
|
|
@@ -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,85 @@
|
|
|
1
|
+
Judger — Webmail Host Detection
|
|
2
|
+
================================
|
|
3
|
+
|
|
4
|
+
Load emails into emails.txt, then run:
|
|
5
|
+
|
|
6
|
+
monoplutomars judger
|
|
7
|
+
|
|
8
|
+
Select one of:
|
|
9
|
+
- OWA
|
|
10
|
+
- Zimbra
|
|
11
|
+
- Roundcube
|
|
12
|
+
- SmarterMail
|
|
13
|
+
|
|
14
|
+
Or use flags:
|
|
15
|
+
monoplutomars judger --owa
|
|
16
|
+
monoplutomars judger --zimbra
|
|
17
|
+
monoplutomars judger --roundcube
|
|
18
|
+
monoplutomars judger --smartermail
|
|
19
|
+
|
|
20
|
+
Output format (all platforms)
|
|
21
|
+
-----------------------------
|
|
22
|
+
After selecting any platform you can choose:
|
|
23
|
+
- With login URL → email, https://login-page-url
|
|
24
|
+
- Email only → email@domain.com
|
|
25
|
+
|
|
26
|
+
Or pass flags directly:
|
|
27
|
+
monoplutomars judger --owa --with-url
|
|
28
|
+
monoplutomars judger --zimbra --no-url
|
|
29
|
+
monoplutomars judger --roundcube --with-url
|
|
30
|
+
monoplutomars judger --smartermail --no-url
|
|
31
|
+
|
|
32
|
+
Advanced backend
|
|
33
|
+
----------------
|
|
34
|
+
- Cached DNS intel (MX, TXT, SRV autodiscover, CNAME)
|
|
35
|
+
- Priority-tier HTTP probing with retry and header fingerprinting
|
|
36
|
+
- Exchange autodiscover XML for on-prem OWA URLs
|
|
37
|
+
- Zimbra health.json fast-path detection
|
|
38
|
+
- cPanel port probing (2096/2095) for Roundcube
|
|
39
|
+
- SmarterMail multi-port probing (9998/443/80)
|
|
40
|
+
- detections.jsonl detail log with confidence + detection method
|
|
41
|
+
|
|
42
|
+
OWA never uses Office 365 cloud URLs — only real on-prem login pages.
|
|
43
|
+
|
|
44
|
+
Results are saved under results/judged/<platform>/<timestamp>/
|
|
45
|
+
|
|
46
|
+
Output files
|
|
47
|
+
------------
|
|
48
|
+
OWA:
|
|
49
|
+
OWA_Email.txt
|
|
50
|
+
OWA_Email(blue).txt
|
|
51
|
+
OWA_Email(green).txt
|
|
52
|
+
OWA_Email(yellow).txt
|
|
53
|
+
OWA_Email(unknown_style).txt
|
|
54
|
+
Not_OWA.txt
|
|
55
|
+
|
|
56
|
+
Zimbra:
|
|
57
|
+
Zimbra_Email.txt
|
|
58
|
+
Zimbra_Email(modern).txt
|
|
59
|
+
Zimbra_Email(classic).txt
|
|
60
|
+
Zimbra_Email(unknown_style).txt
|
|
61
|
+
Not_Zimbra.txt
|
|
62
|
+
|
|
63
|
+
Roundcube:
|
|
64
|
+
Roundcube_Email.txt
|
|
65
|
+
Roundcube_Email(cpanel).txt
|
|
66
|
+
Roundcube_Email(elastic).txt
|
|
67
|
+
Roundcube_Email(classic).txt
|
|
68
|
+
Not_Roundcube.txt
|
|
69
|
+
|
|
70
|
+
SmarterMail:
|
|
71
|
+
SmarterMail_Email.txt
|
|
72
|
+
SmarterMail_Email(default).txt
|
|
73
|
+
SmarterMail_Email(dark).txt
|
|
74
|
+
SmarterMail_Email(blue).txt
|
|
75
|
+
SmarterMail_Email(light).txt
|
|
76
|
+
Not_SmarterMail.txt
|
|
77
|
+
|
|
78
|
+
Detail log:
|
|
79
|
+
detections.jsonl
|
|
80
|
+
|
|
81
|
+
Matched lines with URL:
|
|
82
|
+
user@domain.com, https://mail.domain.com/owa/auth/logon.aspx?replaceCurrent=1&url=...
|
|
83
|
+
|
|
84
|
+
Matched lines without URL:
|
|
85
|
+
user@domain.com
|
|
@@ -0,0 +1,40 @@
|
|
|
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.
|
|
11
|
+
SCAN_SOURCES=virustotal,intelx,urlscan
|
|
12
|
+
|
|
13
|
+
# Max elapsed time per domain (milliseconds). Default 300000 = 5 minutes.
|
|
14
|
+
DOMAIN_MAX_ELAPSED_MS=300000
|
|
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
|
+
SHODAN_API_KEY=
|
|
28
|
+
SECURITYTRAILS_API_KEY=
|
|
29
|
+
|
|
30
|
+
# ── Examples ──────────────────────────────────────────────────────────────
|
|
31
|
+
# USE_API_SCAN=true
|
|
32
|
+
# SCAN_SOURCES=virustotal,urlscan,shodan
|
|
33
|
+
# VIRUSTOTAL_API_KEY=your_virustotal_key
|
|
34
|
+
# URLSCAN_API_KEY=your_urlscan_key
|
|
35
|
+
# SHODAN_API_KEY=your_shodan_key
|
|
36
|
+
#
|
|
37
|
+
# Run:
|
|
38
|
+
# monoplutomars redirect --domain example.com --api-scan
|
|
39
|
+
# monoplutomars redirect --domain example.com
|
|
40
|
+
# (auto API scan when USE_API_SCAN=true in this file)
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
Open Redirect Scanner
|
|
2
|
+
|
|
3
|
+
Put domains in domain.txt, one domain per line.
|
|
4
|
+
|
|
5
|
+
Run (default — stop on first open redirect per domain):
|
|
6
|
+
monoplutomars redirect
|
|
7
|
+
monoplutomars redirect --domain.txt
|
|
8
|
+
|
|
9
|
+
Deep scan every domain in domain.txt (exhaustive — all URLs/params):
|
|
10
|
+
monoplutomars redirect --domain.txt deep-scan
|
|
11
|
+
monoplutomars redirect --domain.txt --deep-scan
|
|
12
|
+
monoplutomars redirect --domain-file props/redirect/domain.txt --deep-scan
|
|
13
|
+
|
|
14
|
+
Single domain:
|
|
15
|
+
monoplutomars redirect --domain example.com
|
|
16
|
+
monoplutomars redirect --domain example.com --deep-scan
|
|
17
|
+
|
|
18
|
+
Results are created automatically in:
|
|
19
|
+
props/redirect/results/<timestamp>/
|
|
20
|
+
|
|
21
|
+
Configuration files:
|
|
22
|
+
domain.txt — domains to scan (default input)
|
|
23
|
+
api_keys.txt — API keys, scan sources, and per-domain time budget
|
|
24
|
+
|
|
25
|
+
Generated files:
|
|
26
|
+
discovered_urls.txt — URLs collected from passive sources
|
|
27
|
+
sources_summary.jsonl — per-source discovery stats per domain
|
|
28
|
+
domain_results.jsonl — per-domain timing, params scanned, vulnerable count
|
|
29
|
+
open_redirects.jsonl — vulnerable findings with param + redirect result
|
|
30
|
+
open_redirects.csv — vulnerable findings (CSV)
|
|
31
|
+
scan_log.jsonl — detailed scan events
|
|
32
|
+
state.json — live progress (updated during scan + on each finding)
|
|
33
|
+
summary.json — run totals and timing
|
|
34
|
+
errors.txt — probe errors
|
|
35
|
+
|
|
36
|
+
API keys file (props/redirect/api_keys.txt):
|
|
37
|
+
USE_API_SCAN=true|false — enable API-key scan mode (or pass --api-scan)
|
|
38
|
+
SCAN_SOURCES=virustotal,intelx — choose which API sources to use
|
|
39
|
+
DOMAIN_MAX_ELAPSED_MS=300000 — 5 minute max per domain (default)
|
|
40
|
+
DOMAIN_DISCOVERY_RATIO=0.35 — discovery phase share of domain budget
|
|
41
|
+
|
|
42
|
+
Keys (KEY=value or source=value):
|
|
43
|
+
VIRUSTOTAL_API_KEY / virustotal=
|
|
44
|
+
INTELX_API_KEY / intelx=
|
|
45
|
+
INTELX_API_URL (optional)
|
|
46
|
+
URLSCAN_API_KEY / urlscan=
|
|
47
|
+
OTX_API_KEY / otx=
|
|
48
|
+
SHODAN_API_KEY / shodan=
|
|
49
|
+
SECURITYTRAILS_API_KEY / securitytrails=
|
|
50
|
+
|
|
51
|
+
Environment variables override file values.
|
|
52
|
+
|
|
53
|
+
Per-domain 5-minute budget:
|
|
54
|
+
Each domain is scanned within DOMAIN_MAX_ELAPSED_MS (default 5 min).
|
|
55
|
+
Discovery runs first (~35% of budget), then URLs are probed one at a time.
|
|
56
|
+
On the first confirmed open redirect the scanner extracts the redirect
|
|
57
|
+
pattern (param + template URL) and stops — no 500k candidate build.
|
|
58
|
+
|
|
59
|
+
Set REDIRECT_FULL_SCAN=1 or use --deep-scan to exhaust every URL/param.
|
|
60
|
+
|
|
61
|
+
Output also includes:
|
|
62
|
+
redirect_patterns.jsonl — extracted redirect template on first hit
|
|
63
|
+
|
|
64
|
+
Scan modes:
|
|
65
|
+
Standard:
|
|
66
|
+
monoplutomars redirect --domain example.com
|
|
67
|
+
All passive sources; keyed sources run when keys are configured.
|
|
68
|
+
|
|
69
|
+
API scan (from file or CLI):
|
|
70
|
+
USE_API_SCAN=true
|
|
71
|
+
SCAN_SOURCES=virustotal,urlscan,shodan
|
|
72
|
+
monoplutomars redirect --domain example.com --api-scan
|
|
73
|
+
Uses only SCAN_SOURCES that have keys in api_keys.txt.
|
|
74
|
+
|
|
75
|
+
Deep scan (domain.txt or single domain):
|
|
76
|
+
monoplutomars redirect --domain.txt deep-scan
|
|
77
|
+
monoplutomars redirect --domain example.com --deep-scan
|
|
78
|
+
Higher URL limits, all query params, expanded redirect candidates, no early stop.
|
|
79
|
+
|
|
80
|
+
Useful commands:
|
|
81
|
+
monoplutomars redirect --domain.txt deep-scan
|
|
82
|
+
monoplutomars redirect --domain example.com --api-scan
|
|
83
|
+
monoplutomars redirect --domain example.com --deep-scan
|
|
84
|
+
monoplutomars redirect --api-keys-file props/redirect/api_keys.txt
|
|
85
|
+
monoplutomars redirect --url "https://example.com/login?next=/home"
|
|
86
|
+
monoplutomars redirect --payload "https://bestbuy.com"
|
|
87
|
+
monoplutomars redirect --concurrency 50 --timeout 10000
|
|
88
|
+
|
|
89
|
+
The default vulnerable redirect destination is:
|
|
90
|
+
https://bestbuy.com
|