├── banner.txt
├── splitvba.py
├── README.md
├── CACTUSTORCH.cs
└── TestClass.cs
├── CACTUSTORCH.xsl
├── CACTUSTORCH.js
├── CACTUSTORCH.jse
├── CACTUSTORCH.sct
├── CACTUSTORCH.vbe
├── CACTUSTORCH.vbs
├── CACTUSTORCH.hta
└── CACTUSTORCH.vba
/banner.txt:
--------------------------------------------------------------------------------
1 | ███████╗██████╗ ██╗ ██╗████████╗██╗ ██╗██████╗ █████╗
2 | ██╔════╝██╔══██╗██║ ██║╚══██╔══╝██║ ██║██╔══██╗██╔══██╗
3 | ███████╗██████╔╝██║ ██║ ██║ ██║ ██║██████╔╝███████║
4 | ╚════██║██╔═══╝ ██║ ██║ ██║ ╚██╗ ██╔╝██╔══██╗██╔══██║
5 | ███████║██║ ███████╗██║ ██║ ╚████╔╝ ██████╔╝██║ ██║
6 | ╚══════╝╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝
7 |
--------------------------------------------------------------------------------
/splitvba.py:
--------------------------------------------------------------------------------
1 | import os;
2 | import random;
3 | import uuid;
4 | import string;
5 | import sys;
6 | import argparse;
7 |
8 | def banner():
9 | with open('banner.txt', 'r') as f:
10 | data = f.read()
11 |
12 | print "\033[1;31m%s\033[0;0m" % data
13 | print "\033[1;34mSplits base64 encoded payload into chunks for VBA"
14 | print "\033[1;32mAuthor: Vincent Yiu (@vysec, @vysecurity)\033[0;0m"
15 |
16 | def split_len(seq, length):
17 | return [seq[i:i+length] for i in range(0, len(seq), length)]
18 |
19 | if __name__ == '__main__':
20 | banner()
21 | if ((len(sys.argv) > 3) or len(sys.argv) < 3):
22 | # must be not 1
23 | print "Usage: " + sys.argv[0] + "