{"id":24333153,"url":"https://github.com/ringtailsoftware/obfusgator","last_synced_at":"2025-09-27T20:31:14.234Z","repository":{"id":272166439,"uuid":"913428669","full_name":"ringtailsoftware/obfusgator","owner":"ringtailsoftware","description":"obfusgator.zig","archived":false,"fork":false,"pushed_at":"2025-01-07T18:22:10.000Z","size":10,"stargazers_count":21,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-12T16:52:18.380Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Zig","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ringtailsoftware.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-07T17:02:05.000Z","updated_at":"2025-01-12T13:56:07.000Z","dependencies_parsed_at":"2025-01-12T17:02:30.156Z","dependency_job_id":null,"html_url":"https://github.com/ringtailsoftware/obfusgator","commit_stats":null,"previous_names":["ringtailsoftware/obfusgator"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ringtailsoftware%2Fobfusgator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ringtailsoftware%2Fobfusgator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ringtailsoftware%2Fobfusgator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ringtailsoftware%2Fobfusgator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ringtailsoftware","download_url":"https://codeload.github.com/ringtailsoftware/obfusgator/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234455954,"owners_count":18835667,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-18T03:13:27.426Z","updated_at":"2025-09-27T20:31:13.903Z","avatar_url":"https://github.com/ringtailsoftware.png","language":"Zig","readme":"# obfusgator.zig\n\nA zig program obfusgator\n\nTo self obfusgator:\n\n```bash\nzig run obfusgator.zig\n```\n\nTo obfusgator another program:\n\n```bash\nzig run obfusgator.zig -- myprog.zig\n```\n\n```zig\n// obfusgator.zig, Toby Jaffey 2025-01-07\n// zig run obfusgator.zig\n// zig run obfusgator.zig -- myprog.zig\n                                                                                \n                   const g = \u0026 [ _ ] u8 {                                       \n           31 , 139 , 8 , 8 , 45 , 79 ,                                         \n        125 , 103 , 0 , 3 , 102 ,                                               \n        111 , 111 , 46 , 112 , 112 ,                                            \n     109 , 0 , 237 , 211 ,                                                      \n     203 , 13 ,                                                                 \n   131 , 48 , 16 ,                                                              \n   69 , 209 , 172                                                               \n   , 93 , 69 ,                                                                  \n   74 , 64 , 40                                                                 \n   , 160 , 148                                                                  \n , 65 , 255 ,                                                                   \n 205 , 144 , 29                                                                 \n , 66 , 254                                                                     \n , 105 , 226                                                            , 121 , \n 248 , 243 ,                               60 , 119                  , 69 , 64  \n , 25 , 124                                , 12 , 28                 , 187 ,    \n 251 , 46 , 239 ,                       207 ,        226 , 214 , 109 ,      115 \n , 47 , 75 , 214 , 9 ,             170 , 181 ,       195 , 15 , 229 , 50 ,      \n 102 , 87 , 77 , 226 , 229 , 19 , 229 , 99 ,         117 , 133 , 113 ,          \n 63 , 199 , 48 , 243 , 82 , 50 , 175 , 204 , 203 , 234 , 21 , 74 , 205     ,    \n 59 , 104 , 147 , 48 , 175 , 40 , 189 , 25 , 72 , 91 , 47 , 246 ,               \n 190 , 18 , 136 , 121 , 43 , 236 , 128 , 112 , 172 , 102 ,                      \n 109 , 247 , 131 , 251 , 165 , 178 , 153 , 209 , 91 ,                           \n 104 , 118 , 62 , 58 , 7 , 178 , 54 , 111 , 44 , 106 ,                          \n 38 , 36 , 148 , 215 , 155 , 208 , 173 , 23 , 21 ,                              \n 189 , 215 , 179 , 232 , 191 , 172 , 174 , 10 , 23                              \n , 159 , 1 , 142 , 232 , 205 , 188 , 159 , 255 ,                                \n   214 , 22 , 34 , 140 , 222 , 171 , 17 , 153 , 119 , 56 ,                      \n   111 , 234 , 60 , 153 , 58 , 44 , 197 , 143 , 254 , 60 ,                      \n   211 , 251 , 83 , 123 , 221 , 165 , 205 , 230 , 85 , 102 , 94 , 202 , 102 ,   \n   123 , 159 , 139 , 191 , 226 , 212 , 31 , 171 , 13 , 196 , 134 , 218 , 183 ,  \n   231 , 6 , 62 , 212 , 108 , 112 , 243 , 114 , 120 , 127 , 82 , 105 , 15 ,     \n   254 , 141 , 37 , 0 , 0 } ; const z = @import ( \"std\" ) ; const Ti = z .      \n     zig .                      Tokenizer                                       \n     ; const T = z .            zig . Token ;                                   \n        const a = z .              heap .                                       \n        page_allocator             ; const io = z                               \n        . io ; const w             = io .                                       \n                                                                                \n                                     getStdOut ( ) . writer                     \n                                        ( ) ; const mem = z . mem ;             \n                                           const fmt = z . fmt ; const          \n                                           iobs = io .                          \n                                                     fixedBufferStream ;        \n                                                             const u =          \n                                                             undefined ; pub    \n                                                             const P =          \n                                                                struct { d :    \n                                                                [ 2 ] u32 ,     \n                                                                p : [ ] u1 ,    \n                                                                pub fn from (   \n                                                                ls : [ ] const  \n                                                                   u8 ) ! P {   \nvar f =                                                            iobs ( ls )  \n; var ln :                 u32 = 0 ;                               var p : P =  \nu ; var lb                 : [ 1024                                * 128 ] u8   \n= u      ; var b = io .                                      bufferedReader (   \n   f . reader ( ) ) ; var       r = b .                 reader ( ) ; while (    \n        true ) { if ( try       r . readUntilDelimiterOrEof ( \u0026 lb , '\\n' ) )   \n   |    l | { switch ( ln ) { 1 =\u003e { var it = mem . splitAny ( u8 , l , \" \" )   \n        ;    for ( 0 .. 2 ) | i | p . d [ i ] = try fmt . parseInt ( u32 , it   \n             .     next ( ) . ? , 10 ) ; } , 3 =\u003e { p . p = try a . alloc ( u1  \n                   ,    p . d [ 0 ] * p . d [ 1 ] ) ; for ( 0 .. p . d [ 0 ] *  \n                   p    . d [ 1 ] ) | i | { if ( l [ i * 3 ] \u003e 0 or l [ i * 3   \n                             + 1 ] \u003e 0 or l [ i * 3 + 2 ] \u003e 0 ) { p . p [ i ]   \n                             = 1 ; } } break ; } , else =\u003e { } , } ln += 1 ; }  \n                     }       return p ; } } ; fn pt ( src : [ ] const u8 , ts   \n     :     [    ]    const T , ti : * u32 , ncf : u32 , pws : * bool ) !        \n                     void { var nc = ncf ; while ( true ) { if ( ti .* \u003e= ts    \n. len ) { return ; } const tok = ts [ ti .* ] ; if ( mem . containsAtLeast (    \nu8 , @tagName ( tok . tag ) , 1 , \"comment\" ) ) { ti .* += 1 ; continue ; }     \n   var tl : u32 = @intCast ( ( tok . loc . end - tok . loc . start ) + 1 ) ;    \n   if ( ! pws .* ) tl += 1 ; if ( tl \u003c= nc ) { if ( ! pws .* ) _ = try w .      \n                                     write (                    \" \" ) ;         \n                                try w . print (            \"{s} \" , . {         \n                             src [ tok . loc            . start .. tok          \n                             . loc . end ] }            ) ; pws .* =            \n                             true ; nc -= tl            ; ti .* += 1 ;          \n                                                                                \n                   } else { for ( 0 .. nc                                       \n           ) | _ | _ = try w . write (                                          \n        \" \" ) ; return ; } } } pub                                              \n        fn main ( ) ! void { _ = try                                            \n     w . write ( \"// zig\"                                                       \n     ++ \" run\" ++                                                               \n   \" obfusg\" ++                                                                 \n   \"ator.zig\" ++                                                                \n   \"\\n// zig\"                                                                   \n   ++                                                                           \n   \" run obfus\"                                                                 \n ++ \"gator.zig\"                                                                 \n ++ \" -- m\" ++                                                                  \n \"yprog\" ++                                                                     \n \".zig\\n\" )                                                             ; const \n args = try                                z .                       process .  \n argsAlloc (                               a ) ; var                 src : [ :  \n 0 ] const u8 =                                      @embedFile (               \n \"obfusgator.zig\" ) ;              if ( args .       len \u003e 1 ) { const d =      \n try z . fs . cwd ( ) . readFileAlloc ( a ,          args [ 1 ] , 1024     *    \n 64 ) ; src = try a . dupeZ ( u8 , d ) ; } var in = iobs ( g ) ; var r     :    \n [ 32768 ] u8 = u ; var ot = iobs ( \u0026 r ) ; try z . compress .                  \n gzip . decompress ( in . reader ( ) , ot . writer ( ) ) ;                      \n const p = try P . from ( \u0026 r ) ; var e : bool = false     ;                    \n var elen : u32 = 0 ; var ts = z . ArrayList ( T ) .                            \n init ( a ) ; var tokenizer = Ti . init ( src ) ;                               \n while ( true ) { const token = tokenizer . next (                              \n ) ; try ts . append ( token ) ; if ( token . tag       ==                      \n   . eof ) break ; } var ti : u32 = 0 ; var pws = true ;                        \n   var n : u32 = 0 ; while ( ti \u003c ts . items . len ) { for   (     0    ..      \n   p . d [ 1 ] ) | y | { for ( 0 .. p . d [ 0 ] ) | x | { var nx = x ; if ( n % \n   2 \u003e 0 ) { nx = ( p . d [ 0 ] - 1 ) - x ; } if ( p . p [ y * p . d [ 0 ] + nx \n   ] \u003e 0 ) { if ( ! e ) { e = true ; elen = 1 ; } else { elen += 1 ; } }        \n   else { if ( e ) { e = false ; try pt ( src , ts . items , \u0026 ti , elen , \u0026    \n     pws ) ; }                  _ = try w                                       \n     . write ( \" \" )            ; } } if ( e )                                  \n        { e = false ;              try pt ( src ,                               \n        ts . items , \u0026             ti , elen , \u0026                                \n        pws ) ; } try w            . print ( \"\\n\"                               \n                                                                                \n                                     , . { } ) ; if ( ti \u003e=                     \n                                        ts . items . len ) break ; }            \n                                           n += 1 ; } }          \n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fringtailsoftware%2Fobfusgator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fringtailsoftware%2Fobfusgator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fringtailsoftware%2Fobfusgator/lists"}