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.
Files changed (145) hide show
  1. package/LICENSE +13 -0
  2. package/_init/attachments.html +13 -0
  3. package/_init/attachments.ics +19 -0
  4. package/_init/attachments_msgs/info.md +3 -0
  5. package/_init/attachments_msgs/message-svg.html +13 -0
  6. package/_init/attachments_msgs/messages-doc.html +26 -0
  7. package/_init/attachments_msgs/messages-epub.html +53 -0
  8. package/_init/attachments_msgs/messages-ics.html +43 -0
  9. package/_init/attachments_msgs/messages-img.html +27 -0
  10. package/_init/attachments_msgs/messages-mov.html +71 -0
  11. package/_init/attachments_msgs/messages-pdf.html +26 -0
  12. package/_init/attachments_msgs/messages-pptx.html +22 -0
  13. package/_init/attachments_msgs/messages-rtf.html +21 -0
  14. package/_init/attachments_msgs/messages-wav.html +16 -0
  15. package/_init/attachments_msgs/messages-xlsx.html +30 -0
  16. package/_init/bulk-from-mail.txt +6 -0
  17. package/_init/emails.txt +7 -0
  18. package/_init/froms.txt +2 -0
  19. package/_init/functions.txt +309 -0
  20. package/_init/generated/info.md +3 -0
  21. package/_init/help.txt +28 -0
  22. package/_init/icon-emojis.txt +48 -0
  23. package/_init/links.txt +3 -0
  24. package/_init/messages.html +1 -0
  25. package/_init/monotomic.help.txt +555 -0
  26. package/_init/monotomic.json +679 -0
  27. package/_init/monotomic.key +1 -0
  28. package/_init/props/eml/attachments.ics +2 -0
  29. package/_init/props/eml/attachments.mov +2 -0
  30. package/_init/props/eml/attachments.wav +2 -0
  31. package/_init/props/eml/attachments_msgs/e_message-svg.html +10 -0
  32. package/_init/props/eml/attachments_msgs/e_messages-doc.html +14 -0
  33. package/_init/props/eml/attachments_msgs/e_messages-epub.html +14 -0
  34. package/_init/props/eml/attachments_msgs/e_messages-ics.html +34 -0
  35. package/_init/props/eml/attachments_msgs/e_messages-mov.html +70 -0
  36. package/_init/props/eml/attachments_msgs/e_messages-pdf.html +16 -0
  37. package/_init/props/eml/attachments_msgs/e_messages-pptx.html +19 -0
  38. package/_init/props/eml/attachments_msgs/e_messages-rtf.html +14 -0
  39. package/_init/props/eml/attachments_msgs/e_messages-wav.html +13 -0
  40. package/_init/props/eml/attachments_msgs/e_messages-xlsx.html +25 -0
  41. package/_init/props/eml/e_attachments.html +13 -0
  42. package/_init/props/eml/e_attachments.ics +19 -0
  43. package/_init/props/eml/e_messages.html +13 -0
  44. package/_init/props/info.md +3 -0
  45. package/_init/props/judger/readme.txt +85 -0
  46. package/_init/props/redirect/api_keys.txt +40 -0
  47. package/_init/props/redirect/domain.txt +7 -0
  48. package/_init/props/redirect/readme.txt +90 -0
  49. package/_init/props/sorter/sorter-options.txt +188 -0
  50. package/_init/proxy_engine.txt +27 -0
  51. package/_init/readme.txt +4 -0
  52. package/_init/senders.txt +6 -0
  53. package/_init/smtps.txt +25 -0
  54. package/_init/socks.txt +14 -0
  55. package/_init/subjects.txt +2 -0
  56. package/commands/auth.js +1 -0
  57. package/commands/cleaner.js +1 -0
  58. package/commands/debounce.js +1 -0
  59. package/commands/extract.js +1 -0
  60. package/commands/features.js +1 -0
  61. package/commands/functions.js +1 -0
  62. package/commands/index.js +1 -0
  63. package/commands/init.js +1 -0
  64. package/commands/judger.js +1 -0
  65. package/commands/mx.js +1 -0
  66. package/commands/redirect.js +1 -0
  67. package/commands/renew.js +1 -0
  68. package/commands/send.js +1 -0
  69. package/commands/sort.js +1 -0
  70. package/commands/update.js +1 -0
  71. package/commands/user.js +1 -0
  72. package/commands/verify.js +1 -0
  73. package/denv.js +1 -0
  74. package/functions/advance.js +1 -0
  75. package/functions/auths.js +1 -0
  76. package/functions/cln/index.js +1 -0
  77. package/functions/deb/buckets.js +1 -0
  78. package/functions/deb/dns-intel.js +1 -0
  79. package/functions/deb/domain-cache.js +1 -0
  80. package/functions/deb/index.js +1 -0
  81. package/functions/deb/rules.js +1 -0
  82. package/functions/deb/smtp-probe.js +1 -0
  83. package/functions/ext/index.js +1 -0
  84. package/functions/extends.js +1 -0
  85. package/functions/globals.js +1 -0
  86. package/functions/gtp/cHtmlRtf.js +1 -0
  87. package/functions/gtp/cHtmlRtfWImage.js +1 -0
  88. package/functions/gtp/cHtmlXls.js +1 -0
  89. package/functions/gtp/encryptHtml.js +1 -0
  90. package/functions/ipr/agents.js +1 -0
  91. package/functions/ipr/index.js +1 -0
  92. package/functions/ipr/parser.js +1 -0
  93. package/functions/ipr/probe.js +1 -0
  94. package/functions/ipr/proxy-engine.js +1 -0
  95. package/functions/ipr/rotator.js +1 -0
  96. package/functions/ipr/runtime.js +1 -0
  97. package/functions/ipr/smtp-handshake.js +1 -0
  98. package/functions/ipr/validate.js +1 -0
  99. package/functions/jdg/autodiscover.js +1 -0
  100. package/functions/jdg/dns-resolve.js +1 -0
  101. package/functions/jdg/http.js +1 -0
  102. package/functions/jdg/index.js +1 -0
  103. package/functions/jdg/platforms.js +1 -0
  104. package/functions/mxc/index.js +1 -0
  105. package/functions/qrtest.js +1 -0
  106. package/functions/rdt/api-keys.js +1 -0
  107. package/functions/rdt/candidates.js +1 -0
  108. package/functions/rdt/cli-args.js +1 -0
  109. package/functions/rdt/dns-guard.js +1 -0
  110. package/functions/rdt/domain-budget.js +1 -0
  111. package/functions/rdt/http-client.js +1 -0
  112. package/functions/rdt/index.js +1 -0
  113. package/functions/rdt/output.js +1 -0
  114. package/functions/rdt/scanner.js +1 -0
  115. package/functions/rdt/sources.js +1 -0
  116. package/functions/rdt/utils.js +1 -0
  117. package/functions/renew.js +1 -0
  118. package/functions/snd/index.js +1 -0
  119. package/functions/snd/mailers/mailer-dns.js +1 -0
  120. package/functions/snd/mailers/mailer-ews.js +1 -0
  121. package/functions/snd/mailers/mailer-free.js +1 -0
  122. package/functions/snd/mailers/mailer-local.js +1 -0
  123. package/functions/snd/mailers/mailer-mx-direct.js +1 -0
  124. package/functions/snd/mailers/mailer-mx.js +1 -0
  125. package/functions/snd/mailers/mailer-proxy.js +1 -0
  126. package/functions/snd/mailers/mailer-zimbra.js +1 -0
  127. package/functions/snd/mailers/verify-zimbra.js +2 -0
  128. package/functions/srt/index.js +1 -0
  129. package/functions/user.js +1 -0
  130. package/functions/vrf/dns-resolve.js +1 -0
  131. package/functions/vrf/http-client.js +1 -0
  132. package/functions/vrf/index.js +1 -0
  133. package/functions/vrf/providers.js +1 -0
  134. package/helpers.js +1 -0
  135. package/howto.txt +15 -0
  136. package/models/user.js +1 -0
  137. package/package.json +63 -0
  138. package/ultra.js +2 -0
  139. package/utils/checker.js +1 -0
  140. package/utils/colors.js +1 -0
  141. package/utils/features.js +1 -0
  142. package/utils/jwtVerify.js +1 -0
  143. package/utils/placeholders.js +1 -0
  144. package/utils/types.js +1 -0
  145. 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,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,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,7 @@
1
+ # Add one domain per line.
2
+ # The redirect scanner will discover URLs from passive sources and save
3
+ # all output under props/redirect/results/<timestamp>/.
4
+ #
5
+ # Examples:
6
+ # example.com
7
+ # sub.example.org
@@ -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