obfuscated
teamster_jr
Hello monks,<br>
Here's my latest effort, it's pure perl, so should run anywhere.<p>
It is parametised so it will take the number of boxes in the output as an argument in the form:<Br>
<code> # perl blah.pl 19x20</code><br>
(19x20 is the default)<p>
This will produce a variable sized file (default is normally around 6Mb) called al.XXX (where XXX would reveal the surprise) in the directory from which it is run<p>
<code>
$_=q^($w,$h)=s
plit/x/,shift||"19x20";$q=10+10*$w;$r=20+10*$h;@m=((31,(15)x
($w-1))x$h,(31)x$w);$m[$c]|=16,!(@a=grep!($m[$c+$$_[0]]&16+$|*$$_[1]),[-
1,8],[1,1],[$w,4],[-$w,2])?$c=pop@p:${($i,$j)=@{$a[rand@a
]};$m[$c]&=~
(8/$j);push@p,$c;$m[$c+=$i]&=~$j;++$u-$h*$w+$h||map$_&=15,@m,splice(@p),
$c=$|=1}until$|&$c+2>$w*$h;$C=$q-4*int$q/4;$A=($q+$C)*$r;$u=pack"x"x(($q
+$C)*$r);subZd{my($f,$g,$h,$i,$e)=@_;@a=sort{"000$a"<=>"000$b"}$h,$i||$h
;for($a[0]..$a[1]){$s=($r-$_)*($q+$C)+$f;vec($u,$_,8)=$e||2 for$s..$s+$g
-1}};subZt{$a=shift;$x=10*($a%$w);$y=10*(2+int$a/$w)};dZ9,$q-20,10;dZ9,$
q-20,$r-10;dZ9,1,10,$r-10;dZ$q-11,1,10,$r-10;map{t$_;if($_%$w){$m[$_]&2?
d$x-1,11,$y:"";$m[$_]&8?d$x+9,1,$y-10,$y:"";}}0..-1+$w*$h;$F="LIST";open
(FH,">al.avi");binmodeZFH;selectZFH;printZpack"V*",/\d/?$_:unpack"V*",$_
Zfor"RIFF",(1256+($A+24)*($B=3+scalar@p)),"AVIZ$F",1216,"hdrlavih",56,50
0000,32,0,2064,$B,0,1,$A,$q,$r,(0)x4,$F,1140,"strlstrh",56,"vids",(0)x4,
1,10,0,$B,$A,-1,(0)x3,"strf",1064,40,$q,$r,pack("vv",1,8),0,$A,(0)x4,pac
k(("C"x1024),(0xff)x3,0,128),$F,(4+($A+8)*$B),"movi";map{printZSTDOUT"."
;t$z||1;$l=$x;$t=$y;t$_;$ri=$x;if($l>$x){$ri=$l;$l=$x}d$l+2,5+$ri-$l,($t
<$y?$t:$y)-7,($t<$y?$y:$t)-3,1;$z=$_;print"00db".pack("V",$A).$u}@p,(-1+
$w*$h)x3;print"idx1".pack"V",16*$B;$o=4;for(1..$B){print"00db".pack"VVV"
,16,$o,$A;$o+=$A+8}^;s#((?{$a.=$+})\s?(\S*)\s?)*#$a=~s/Z/ /g;$a#see
</code>
(that's supposed to be a clapboard btw!)<p>
<strike>If there is enough interest i'll write a deobfuscation/explanation of what went into it,</strike><br>
I've written a clean version [542789|here].<p>
In the meantime some of my references and some other notes are in the spoiler below:<br>
<spoiler>
I've tested the output in windows media player and mplayer (on windows and linux), however i couldn't get it working with winamp - i tried to fix it, but i'm not entirely sure it's not winamp.<p>
<ul>
<li>the data is generated by a hacked up version of [301203|this]
<li>[http://www.fortunecity.com/skyscraper/windows/364/bmpffrmt.html#bmih|BMP file format]
<li>I used [80749|tachyon's] post [315232|here] to remind me a bit about packing and to explore bmp file headers
<li>An excellent reference on the avi format can be found [http://198.170.116.198/avitech.html#AVIDIB|here]
</spoiler>
<p>
I hope you all enjoy it.<Br>
Alex
<Br><small><b>update:</b> Add link to [542789|explanation].<br>
Also use V not L (see [550028|this]) to force correct endianness - this should now work on mac's<br>
and fixed a bug where it didn't work for 5.8.8</small><br>