throbber
000001
`
`Symantec 1032
`IPR of U.S. Pat. No. 7,757,298
`
`

`
`Warning concerning copyright
`restrictions
`
`The copyright law of the United States (Title
`17, United States Code) governs the
`making of photocopies or other
`reproductions of copyrighted material.
`
`Under certain conditions specified in the
`law, libraries and archives are authorized to
`furnish a photocopy or other reproduction.
`One of these specified conditions is that the
`photocopy or reproduction is not to be used
`for any purpose other than private study,
`scholarship, or research. if a user makes a
`request for, or later uses, a photocopy or
`reproduction for purposes in excess of fair
`use, that user may be liable for copyright
`infringement.
`
`This institution reserves the right to refuse
`to accept a copying order if, in its judgment,
`fulfillment of the order would involve
`
`violation of Copyrightoibaw.
`
`000002
`
`

`
`000003
`
`

`
` 9
`
`>'0£IiAtL
`S I_004_§_m_iiE:
`1‘ 0
`Pii'0Ff55/01%.’
`.
`JOURNAL
`
`FEATURES
`
`A CONVERSATION WITH EVA BOZOKI
`/1} '_/r Ida Wueb r
`i;‘(II1l'(.‘[)[ WIIOSC time C|c;IrIj.' has come, and. zirylzick finch‘. Out this
`.\‘ct\mi‘k Suctirity is '.l
`Iunnth. DSNT Chief .Ht'ik‘l1li.'-‘ul HI-it Bozoki is in the thick of things, Sectirity wise.
`
`THE RIPEMD-160 CRYPTOGRAPHIC HASH FUNCTION
`by .'lH!()Ui.' B().\‘.\‘(’/(i'L’.'_\‘. Hem: I)rJt'JlJerr:'II. and Bar? Pivizcael
`CI'_\'pt:IgI".Ip|IiL'
`lI;I.~h |1IIICtiuIIS are an eSSenti:Ii huilding block for ;ippl1't':IIionS [hflt rcquirc
`tl;It;I iztlcizrity. In this ;:itI'CIC. our autliurs propose that the RIPEMD~l()U hash function is :1
`Nct'tII‘L- I‘L*p|2IL'CtltL‘IIt fut‘ MD-‘i and TVIDS.
`
`REED-SOLOMON ERROR CORRECTION
`by ling!) L_1j)j)eI:,\'
`DUI’ :III_\‘ Iitiiiihcr Oi‘ I‘C;IStIn.S. RCCd—S0lOIIIon error Correction is Commonly intpleiuented in
`|]:II‘(i‘\\':1I‘L‘. Here. Hugo p|‘t'?»t.‘!1lS ‘.1 higlily optiiiiizetl software iiiipieiiiuntation Of Reed-
`Suicmitnii error C0l“1‘L‘L‘litII1, writteii in C++ and I1S:st:IIIl)ly langtizigu.
`
`THE ZLIB COMPRESSION LIBRARY
`b_ 1' .'lIan’.? A’. I-‘\'c»!.\'mI
`.\i;iI'k CN;iI1IIIIt-S zhli. ll iiliiury of C routines that can he usecl to t'OnIpr<:SS Or exp;Imi files
`Iireiitu thc szinie deflate :I1gnrithm popularized by PKZIP ZU.
`
`WINDOWS NT SYSTEM-CALL HOOKING
`by ‘'1 15111? RII5SI'nrI:'fcl7 mm’ Btjyce Cugswe/1'
`:1 tool that lists
`I\I;Irk and Bi'_VL'€ present the design and i1'I1ph:'[l]t'I‘II1l[iOI'i Of NTRL‘§.’,I11()n.
`hnu]-ting to Show dt-tailed iiifnritizition about <'.".lL'h and every registry ‘.lt‘C<.‘SS [hut tl(‘k'l|r€~
`On Q!
`\\"'i.'It|nt\'.~: .\'T S_\'NtcIII.
`
`STEGANOGRAPHY FOR DOS PROGRAMMERS
`J31‘ AlciII_]o.hiISmI
`5tcg;IIIc:gI;IplI§' is ;I hr;IIIClI OI‘ an-'pt0gmplI)' that deals with ctmCt';I|ing I:IcSs:IgcS.
`
`I6
`
`24
`
`30
`
`36
`
`42
`
`48
`
`E
`
`BEQDED SiYS_T_§iitS_
`
`I)eIIvCr :tt|'[)()I1 :ItItnItI;ttCd Iiziggzige fiasco. er. .. SINICIII.
`
`SIMULATION AND DEVICE-DRIVER DEVELOPMENT
`by Edrflr QHf(.‘»(15‘(I” mm’ Kw: Gfbsorr
`T0 C'.I.-C the pr<>CCSS of writiiig ticvice drivers for ncw lI:1r(l\\';Ire tic~igII.~.. our ;I1IthOI.~
`present :1 Sinitilzttinn L‘I1\-’il'(.)nmL'l'll. To i|lu.~:tr;ttC its Lise, they use the mznplu Adapter
`AHA-'l‘:=i() S(ZSI minipoit dI'i\‘t.'I' that writes with the \\7’iIIc|0w~; _\II' [)1 )i\'.
`
`SIMULATING THE DENVER AIRPORT AUTOMATED BAGGAGE SYSTEM
`b_1'_[ubn Swartz
`john llHL‘.‘a Xlisp to i[I1Plt‘n1(‘fll 1! Ctmiputer Siintihitinii OI‘ the essential Ctmiponcnts Of thr
`
`2
`
`000004
`
`Dr. [)r;bi'7'.\‘_[rI1.n'ImI’,_](mmI.vj' IOU
`
`_
`
`000004
`
`

`
`N I
`
`jAhflLARY'1997
`
`VOLUME22,ISSUE1
`
`NETWORKED SYSTEMS
`
`EXAMINING EXTENDED MAP1 1.0
`by Les Tbaler
`The Extended Messaging Application Programming Interface 1.0, not to be confused
`with the previous— generation “Simple MAPI," was created to standardize the interfaces
`between messaging applications and the underlying ntessaging systems.
`
`64
`
`PROGRllMMER’S i00L(HESi
`
`10
`
`.m'?..-A
`
`__~i”M"°*__'" ' Om"
`
`PUBLISHING DYNAMIC DATA ON THE INTERNET
`'
`_£-tr-_-_w'e=_eg--=-"~'-'0'-1-rt-'--fit-c
`by Lauren Higbtower
`Allaire‘s Cold Fusion is a development tool that provides access (via the Web) to any F,
`database the web server can access using ODBC. Cold Fusion runs as a multithreaded
`Windows i\'I' system service and works with any ODBC-compliant database.
`INSIDE ITERATED SYSTEMS’ FRACTAL DEVELOPMENT KIT
`lg; Dino 1‘-Lsposiro
`The Fractal Development Kit from Iterated Systems is a libntry that makes it possible for
`you to embed fr:tctal—irnaging capabilities into C/C++ Windows and Macintosh applications.
`
`8
`
`F 0 R U M
`74 L‘;
`EDITORIAL
`6
`”fV»’°”"”’“" M550"
`LETTERS
`bayou
` j Nawssvmws
`PROGRAMMING PARADIGMS
`88
`”-”""’”D’ ‘W
`by Michael Swame
`IN-I-E
`Michael looks at paradigms past, focusing this month on spreadsheets.
`gvFEuge”el:.§cS;1.m
`C PROGRAMMING
`SWAIN,” FWIES
`by Al 5“-"’5’"5
`by Michael‘ Stuame
`Users expect standard Windows Help for all applications, no matter how small or how
`intuitive the procedures. To that end, Al updates a property page dialog-based
`application to include context-sensitive help for the controls on the dialog pages.
`
`it
`
`"8
`m
`
`92
`
`C 0 D E
`S 0 U R E E
`AVAILABILITY
`
`JAVA Q&A
`by Cjyjfggy-g
`Cliff examines how you can use java to implement :1 CORBA application that is
`representative of the way CORBA is likely to be used. In doing so, he revisits the chat
`application introduced in a previous column.
`

`*
`Heaps are usually implemented via binary trees. with the property that for every subtree,
`the rootismthe minimum item. Here, John describes how to implement exceptionally fast
`F1b0nd“-ll h‘5lP5-
`
`UME
`‘i
`by Robert R. Comm‘
`Robert launches an examination of the Intel System Management Mode (SMM), cornpanng
`the SMM's RSM instruction to the ICE mode‘s undocumented LOADALL instruction.
`
`100
`
`I
`
`As a servioe to ottr readers, all source
`Cod‘: l-‘i =“’flil3bl€ 0“ 21 Single disk am‘
`°“l5”9’- T0 07d“ the ‘“5l‘- Wild 314-95
`(California resitlents add sales tax) to Dr.
`D0bb‘s_]o1tmaI, 411 Bore] Ave, San
`Mateo, CA 94402, call 415-655-4100 X5701.
`
`or use your Credit card to order by fax,
`(1
`415-559» 749. s
`-'
`'.
`dam C03‘: is a£::;f,l:li'l:::'l:
`ill;
`DD] Forum on Oompusem (type G0
`DDJ), via anonymous FTP front site
`Ftp.mv.com (192.80.84.3) in the /pub/ddj
`directory, on the World Wide Web at
`hrrp://www.ddj.con1. and through DD]
`Online. a free service accessible via direct
`dial ‘-11 415-5533357 04-4 W305. 3'N'1)~
`
`be
`
`PROGRAMMER’S BOOKSHELF
`by Ron van der Wat‘ and William Stallfngs
`Ron examines Stanley i.ippntan‘s Inside the C++ Ol;y‘ectModef, while Wflfiain looks at
`Peter \V:ty=ner's Disappearing Ct}ptograpby: Being and Nothingness on the Net.
`
`Dr. Dobb sfournal, January 1997
`
`000005
`
`I16
`
`N E X T
`
`M 3 N T H
`
`Soflwm. qu._,hW_ debugging‘ and [wing
`are in the sp(,.[igh, in our ;.~ebmm, i_..,.,ue_
`
`3
`
`000005
`
`

`
`
`
`Steganography for
`DOS Programmers
`
`Hiding a tree
`inside (I forest
`
`Alan Johnson
`
`;t brunch nl cryp-
`is‘
`It-;,>.ti1:a;_:_i';tpl1_\'
`tugrztplty that {le';ll5 with C()l1CL‘.'lll1‘1_L{
`tt1e,<.~.t5_r,e~'.
`It has unique [’>U§3.<il)ililiL'.\'.
`p.ll'llL'lllt1l'l}' \\‘hen _mL1 h;t\'e lel';1l7}'lL'>3
`ml" inlc II'l]1;lIiHn — mLlL'l1 of it rnundzme ur
`1I]l'l'L‘(ll|L'I1Il}' ;;eee~.~»e(l — that oll'et' hiding
`pltlees‘ l-()I' ilnpcntmrtt inlt>1‘111'.tlinn. The leth-
`niqtles I pI'e.~:en[ here will engtlwle you In
`ell‘eeli\el_\' hide CI'l'flC:ll iitltxrtltzilintt \\'itl1—
`in ;t
`l'.I]'f_1L* minute of data.
`
`Text Versus Binary Files
`The dil'let'enL‘e hL"t\\'een DOS text :1]1Ll hi—
`
`I1:tt3‘ l"ile.~. is :1[ [he l1e;u1 (ll. [l1i.- ;1pp[‘n:lCl]
`In .a[e_::.tt1r>_et';iplty. A l)< )5 text lile is gen-
`ei';tll_v euittpnsc-(l of text. euntri 1| e|1;I1';te—
`ters. and m:ty'he g_v,:';tpltie.~; L‘l1‘.lI".1L'lL'l'.H,
`II
`is
`:1 "l2l5[-J'et'nI'(l—el‘Jeel<" l_\-'pe of llle.
`Ine'.tn—
`ing that the last record i~ :1 ll;tg nr senliltel
`ll1:tt n1;n'|<.~ the end ml" the file.
`\V'hen
`
`opened for listittg or re;tdin_t_r,. the h'_\-'fileI11
`keeps reading r.l;1t:1 until
`it hits Ihe end—
`
`,vllrr1t_[olJ1Lmi: [ms .»‘.ftm’."ed at Ho1'1'mrr/ I lmle
`Cl‘Ji'?1[)f'('lJt’H.\'l£'(’ in Imzr/r»i:. I-.'ng.’rnrr/. and
`[ms been m’m‘a!e(4' 1'.-r erm2,'mIerprrgtgmtm
`tizfiig at Himrbulcli .S'!cr.fe {='trit'c'r5i'l_l' in
`.-’\'r,2r1.f.tertr (.'at'gf('»'tIr'(i. He liars rc>c'wti'.f1' w.ut—
`[).’t»1‘ed (I lnrirtile on j)rt’.r'rrt'e L!e_1'-c-m'i_‘1',I)Ifr:r.'
`p.v't;grmrrrr1t'rig.
`
`48
`
`lint‘ an ur-
`ml‘-lile (Ii()l"l ll;rL:_ then .N‘[(J])\.
`din:n'_\' IJUS le.\I Iile.
`this IZUI’ IlI;lI‘l-\L'I'
`in
`e:mlI'<>l—7. (.t\S(Il| _’(1l.
`A l3iI1;lI‘_\‘
`lile. on the other hnntl, um
`cnnlztin t'lt;u':teIeI'.~e in ;m_\' carder. ~‘inee
`lhere in" nu l§()l’ |l'.I\-.1 in Iain-.u'_\ nlude.
`I-lnd—c>l'-lile is t';Il(‘lll;ll(_‘(_l frmtl the d1'ret‘—
`
`
`
`|'L".lLl.‘~2 the lile spL'C.\ It)
`hill"). The a_\'.~:tent
`|1yle:~'
`:II'('
`in the lile
`See hem‘
`tn;m_\
`l1'e:‘t)I'LlL‘Ll;llllle l;L~'l \\'rilL'luEllL'l'ilL'i:II1d
`atups re;uiin}_{ \\ hen il ll;l\ rend ll1.ll nt.tn_\
`a‘l1;II‘;u[eI'.~.,
`l5i|1.Ir\
`lilea ;I1'e Iteeeaa;tr\'
`I} )1‘
`.(I('}.\]
`.‘illLl
`AETXIC
`|'ilL'.s. as
`tn;It'|tir1e—
`l:t1tglL;Igt' files |Il:l_\' end up lt;t\in_L{ illl
`.~\.\(Ill
`tlt:I|".teIe|' _’() fur :1n_\
`(tiller Lll.ll'-
`:teler> ;tn_\'\\ltere.
`:\ |'i|e U11 klllilx um he upeltetl l(lt' t'e;td—
`ing_=,
`:11‘
`\\'rilin§_r,
`in either lain-.1r.\ or text
`tnode.
`|'L'_L‘.ll'(ll\'P~,\' ml" \\'|telhe1'
`its inlern:t|
`l't)mI;tl
`is text
`in’ ltiIt'.t1'y. Yntl
`i':In I‘e;Id :1
`te.\I llle in l1lI‘I'.lt'_\'
`I]1IJLlL'. H1‘
`:1
`|>it1;II'}' file
`in lexl mnde.
`
`000006
`
`
`
`Enter DOS
`H'inL'L' l)()S u.-«tlzllly stores liles \\iiit.:t.
`;In li()l’ l11'.l|'l\'l.‘|'. Ilte ()pU|'illll1g eg\'~li'|:
`must: c:1|ett|;tle 1"-.01’ lmin the Clll'L‘t'lHE".
`lln\\'e\'eI'. I11;ttt\' IJOH L|llllllL'.H ;ll>i() alter-
`linr L‘tml:‘nl-Z.
`'l'l1e HUS 'I'Yl’T,.
`.\lHl\'l
`and l"ll\'l) I.'( lJl]Il]1lI1LlP~‘ open files lot‘ i‘t'.:t‘.—
`int,’ in text mode. (JUPY. X(?()l’Y,
`;m.
`.\'I()\'l-1. on the other lt;1nd_ open :1 file ll‘
`l1ll'l'.ll’_\' mode (they 111:1)’ he cnp_\'inj_'n=‘
`
`Int>\‘iI'Jg :l
`.(I().\l in‘ .I:..
`if file). The 0 W1
`L'tJI11l11:1nLl
`l1'.l.~€
`'.l A .\\\'ll('l1 It)!‘ L‘np\'1n'.
`:\.\(Zll (te.\lI l’ile.H. hut L|eI';tu|l.~5 to hinnr.
`
`lile is en‘:-.nt=t,
`nmde— except when :1
`t1~i11_£: the (Z( )|’\' ent11n1;tnd {mm [lie L-‘f'.'
`Milt t(I(_)I’\' (II J\ _filt-mirmil. This e:~;*.Lt~
`lrcnn [he ke_\lWtr.1rd (.\‘i'd1'Ji‘J to the file ur-
`til euntrnl-7.
`is typed.
`.S'.'rI1'H and sitlwni
`:tI'e lext l-iles.
`
`ii" _\'uu \\'et'(:* to open -.1 text llle r
`\‘\"lr.tt
`|w1n.tr}‘ nu ule. and appentl ;1nnt]1ert'ilt't
`the end ml‘ lhe first \\'hile e.\'pliCitl)'
`\\l']l-
`in_4 the l-If )1’ llilfi at Lite end till the ll|'.~l
`lilt-
`The 1'e-uh is lint [he ‘-1C('U[1Ll text is llitl
`clen l)L‘}'()[1Ll the EOF llzig, The only \‘..:i
`In }_',e[ In it
`is In rc-Ad [he lile ;l}_{;1in in l‘
`nun‘ mcrde. Remember. 'l'Yl’1-I I‘e‘.id\ in to.’
`Il]Il(lL’. The dam l)t’_\'(Ji1Ll
`l-i()F is ltiddn“
`in un '.lI'l_\'< me l 2: nking ;ll'tJllI1Ll in _\'()lll'
`ll.:!'.
`LlI'l\L'.
`II’ yutt LI,\'e this leeltttiqtle In .il.l\I
`.HII1‘.lll
`;ll11()LlI3[ nl'd;1['.l. .~:;t}‘
`] or 2 }{lS_1~.
`lill'_L£l.‘ lile (H;1_\'
`Int) KBI. the L‘.‘{[l".l
`len_;1
`\\ill likely not he t1()liL‘eLl
`if‘ [he file 1'
`'|'\'|’l'Ied In the sereen. For ex en l7-:[1e:‘ ~k
`
`
`-
`
`eurily. _\'t>tJ um ene:'_\'pt the hidden p.
`.
`and it will
`lr)Hl\' like ttmdntn f_’Ll['l7:I:_[L‘
`the end of the text file. .\']mt people \\'cut.lL
`umsider tltis just ‘.1 syalettt nr di,-l< eiwi
`men if they 1} mnd il.
`lile ll1.il r
`It
`in heat In eltnoeae 1| [ext
`tI.-ed only Iin‘ |'eJLlitt3_‘{. ll Jnnllter pr: i_qi.itt'
`
`1):‘. l)c:hi';'_s'_/r)1rr'H(:/. _/(HHi'(I.'_‘}'
`
`[WV
`
`000006
`
`

`
`“WE NEED A DEVICE
`
`THAT CAN FIND A NEEDLE
`
`IN A HAYSTACK, I‘:-rs IN Youn
`BACK POCKET, AND RETAILS
`DER $9.95. COULD WE SEE
`
`A PROTOTYPE NEXT WEEl{?”
`
`
`
`EMBEDDED
`
`SYSTEMS
`
`CONFERENCE EAST
`
`March 10-12, 1997
`
`Hynes Convention Center
`
`Boston, Massachusetts
`
`
`
`Come to the world's largest embedded systems conference
`and tradeshow— now on the east coast. Don't miss three
`
`days of in-depth technical courses taught by the industry
`Experts. More than 70 courses in all, including:
`- State Machines and State Charts
`
`
`
`
`I
`I am Interested ‘II'l:
`Attending
`Exhibiting
`I
`_ Receiving conference e-mail updates
`
`- Stepping Up to C++
`- Java in Embedded Systems
`- Hardware/Software Co-Design
`- Advanced Device Drivers
`
`Gain new skills. see new products, and most of al ,
`sympathy from programmers and engineers just li
`
`u!
`
`
`
`CALI. Us:
`ATFENDEE: 617-821-9222
`
`EXHIBITOR-EAST:415-278—5278
`
`exuranomwesn415-278-5213
`PA}! US: 617-828-8198
`
`E-Mun. lls: esce@exporeg.com
`EM 3 E D D ED sunr us: www'embedSy5c°n'c°m
`5 T E M 5
`-lI"‘|n]‘hII‘Ifl 31-*I":|*]1
`
`Neg
`ce
`'~I
`'-
`'»
`‘ We-I"
`E A
`T
`'J_1 Mm” yrremnan
`
`_ ___.-. _ — .
`N ’””’
`_ _
`
`_ _ _
`
`_ __
`
`_ _
`
`" "
`
`_— —_
`
`'
`
`rm
`
`.
`
`—
`
`—
`
`—
`
`—
`
`— — —
`
`"
`
`‘
`
`‘ 11,?-._f I " '
`
`.w..
`
`’
`
`I
`
`1
`I
`
`___
`3
`Please fax coupon to: 617-828-8198
`GM
`0r mail to: Embedd
`ysterns Conference East, ;
`I
`P..
`ox 431
`2
`E
`canton, MA 02021
`C
`‘®QQQO_7________________________ y //
`
`I
`
`IIIIIIIIIIIIIIIIIIIIIIIIII
`
`000007
`
`

`
`
`end of the host file. The reason is th};
`(Continuedfrom page 48)
`text file. If you read from a file opened
`opens the host file in text mode for up-
`as text, and write to a file opened as bi-
`if you are encrypting with pS€I.lClOl."aI1~
`dating, the hidden data will likely be lost.
`na1'y— as LWRITE does— you must man-
`dom numbers to generate a random c-.—
`Use reference files as the host files, and
`ually convert each newline to a CR-LF
`pher byte for each byte of cleartext
`combination.
`consider using ATTRIB to make them
`sooner or later an encrypted byte tvi|_
`read-only.
`fall on control-Z. If just one such cipher
`file is hidden beyond EOF, LSPLIT vril.
`find it, as an EOF precedes all the ci-
`pher. lf LSPLIT is used to try to separate
`appended cipher files, eventually it xvi.
`split a cipher file. If your encryptior.
`scheme disallows a value of integer 2+’:
`(control-Z), then hidden cipher files car.
`be directly stacked beyond EOF. Other-
`wise, LAPPEND all the files to be hidder.
`while they are still text. then encrypt [l’1EI‘l'.
`as one file—EOFs and all — then LAP-
`PEND that one cipher file to the host file.
`When using [SPLIT and decrypting, all the
`files will be cleartext and IAPPENDed to-
`gether. Subsequent files will still be bid-
`den beyond EOF, even though they are
`decrypted. If the actual data to be kept
`confidential is in one of the following
`hidden files, it may remain undiscovered.
`even if decrypted. You can leave the fol-
`lowing ones as hidden, or split them off
`with LSPLIT.
`
`The purpose of Listing Five, FIND]-I.C, is
`to find hidden data, in Case you forget which
`is the host file{s). FINDI-l.C looks for con-
`trol-Z in the file at a point before the phys-
`ical end of the file, and prints the filename
`to the screen. The wildcard characters
`and
`can be used, and all the files in a
`directory can be scanned for possible hid-
`
`The difference
`between a text and
`
`binary file is at the
`heart of this
`approach to
`steganography
`
`The Source Code
`Because XCOPY and COPY do not sup-
`port the kind of appending We just de-
`scribed, you must write special programs
`to implement this technique under DOS.
`Listing One (listings begin on page 51) is
`LLIST.C, a program that lists binary files
`to the screen. (LLIST stands for “l0ng—list,"
`implying a long listing beyond EOF.) LLIST
`will list a text file, then list the hidden data
`after EOF.
`
`Listing Two, LAPPENDC (short for “long-
`append") tacks a second file onto the first
`wim a control—Z between them to keep the
`second file hidden. Be aware, however, that
`the second file is not automatically delet-
`ed from the disk. You must manually delete
`it, or a copy of the hidden data will be left
`in the open. (Or, you can Lise the option-
`al removef) command supplied in a com-
`ment line in LAPPEND.)
`Listing Three, LSPLIT.C, copies the hid-
`den data to the temporary file TElV[P.1 This
`can be modified to place the data in a file
`supplied by the user as the second com-
`mand-line argument. Change the fopen
`statement for tbedata to use params[2}' as
`the filename, and change zf(n == 2) to
`yo: == 3 ). Remove the #define statement
`and Change the error-message printfs to
`show the new command format [split
`<sorrrce> <desn‘narz'on>.
`Hidden data can be removed from the
`host file by redirecting the output of TYPE.
`For example, tjpe host > drnnmy. To re-
`turn the data to the host, copy dummy
`host. Then delete dummy. The same re-
`sult can be obtained using the COPY com-
`mantl with the /A switch, except that the
`EOF flag is retained. Of course, you
`should do this after recovering the bid-
`den data with LSPLIT.
`
`Listing Four, LVI/RITE.C, allows the writ-
`ing of data from the keyboard to the far
`end of EOF of the target file, and requires
`21 bit of extra explanation. DOS uses two
`characters — a caniage return (ASCII 13,
`CR) and a line feed (ASCII 10, LF)— to
`separate the lines of a text file on disk.
`In contrast, when you type on a key-
`board, you obviously only press one key,
`the Enter key. To make things consistent,
`and to simplify the processing of text files,
`the C library getcO function converts all
`line separators to newline characters
`(ASCII 10, LF). This ensures that whether
`you read text from the keyboard or a disk
`file, you’ll see one newline character at
`the end of each line. This conversion is
`
`only performed if you open the file as a
`
`50
`
`den data. Each directory must be searched
`individually. If you use “*.*", any .COM or
`.E)CE file may show up as a false possibil-
`ity if it happens to contain a control-Z at
`some point.
`To read the directory, FINDH uses the
`ffna'firsI() and fr‘ndnext() functions.
`These are not completely standard, so
`you may have to rewrite them to work
`with alternate compilers.
`I am using
`PowerC 1.1.6 from MIX Software. Most
`compilers should support some equiva-
`lent of these two functions; Microsoft
`QuickC, for instance, has _d0.s_finafirSt()
`and _dos_fz‘ndnext(').
`LAPPEND and LSPLIT offer another in-
`teresting possibility. You are not limited
`to placing only one hidden file beyond
`EOF; they can be stacked tip behind each
`other. LAPPEND will keep adding new
`hidden files onto the end of the host file,
`and LSPLIT splits off everything behind
`the FIRST EOF to TEMP.1. You can have
`
`a hidden part, hidden on the end of an-
`other hidden part, which is hidden itself,
`and so on. To recover the next layer of
`hidden data, use LSPLIT on a renamed
`T'EMP.1.
`
`You cannot stack up hidden files if
`they are individually encrypted with
`pseudorandom numbers.
`I advise LAP-
`PENDing multiple files together, then en-
`crypting, then placing the cipher at the
`000008
`
`You also could super encipher mes-
`sages by using LAPPENI) to join a cipher
`file to a text, encrypting both, then LAP-
`PENDing the cipher to a host file. The
`first cipher file is now super enciphered.
`possibly with a different key the Second
`time. This could be used to give en-
`crypted instructions for using the first ci-
`pher file to an intermediary, without the
`intermediary necessarily knowing the key
`to the first cipher. Be careful, however.
`that your plans and protocols don't be-
`come too complicated.
`
`Conclusion
`Other steganography techniques hide
`data by altering one bit-per-pixel-record
`in a high-resolution graphic, or one-bit-
`per-sound record in digitized music or
`speech. You can hide data that‘s on your
`own system, sent over phone lines. or
`mailed on a disk. These methods can be
`
`used to distribute keys for more-rapic
`encrypted communication and are use-
`ful for couriers.
`Remember to encrypt the hidden Cl.:1t;l
`for me best security. and to erase the LAP-
`PENDed Files. or program LAPPEND to dc
`so automatically by including the remote! -
`statement supplied with LAPPEND. Don't
`forget that an erased file on disk still con-
`tains data until something new is written
`over that portion of disk, so creating an
`overwrite-erase utility is advisable. Or, just
`work on a Ramdisk, and keep the cipher
`on the hard drive.
`
`DDJ
`
`Dr Dobb’sjournal, January 1997 I
`
`000008
`
`

`
`
`
`1
`
`J: printf("\ncannnt open a Ei]e..\n"):
`fcloselthadatal:
`fclosetthefilelz
`
`print{(’'\nprnper format is:\n1split <datafi1e>\n"):
`prin:{["hidden data [if any) will he in :enp.l\n"):
`
`1
`(
`else
`
`J
`
`H
`
`.
`.
`‘
`hshng F00!‘
`3.’
`If lwritellc
`nnclude
`std1n.h
`m““["'W“”'3)
`1"‘ "5
`{ char *parsms[]-:
`me Hhefile:
`:_Lnt ch=B:
`1f(l “ Z 1 l
`purs§"rype cnnrro1—z to £innish")=
`Th“-‘h :.£°p?'_1( P“'m$“]'
`"Eh" }‘
`‘-f[': 3395119
`' NULL 3
`fseeklthefile. B. 2}:
`putc(26.thefi1eJ:
`."'<-add new EDI’. ..':'
`wh.[ile E {ch = 5etc(stdin))
`!= ED? 3
`if l
`‘H " 13 l
`puI:|:(l3.l:hefi1e): it explicitly add CR.*.’
`pucc(ch.thefi1e):
`
`}
`
`1
`91?“
`l
`
`printf(“\ru:ennor. open f:i.1e..\n"):
`.
`_
`fcloseithenlel.
`
`prinl:§l"\npr:Iper fannat
`
`is:\x1.lvrite (filenaIe)\n"l:
`
`]
`elee
`(
`}
`
`l
`
`listing Five
`Ir findh.c
`-I
`“include "stdia.h"
`Enclude :d""°F_'h"
`“"1‘"_iE d'f5'h
`read-f1¥e”11°“‘“'E)
`_
`téhat *f:.1ens.neH:
`_e'
`F_'I£-E_"‘:e:“1:l'1El'-l'|1l-5:31
`_
`_-
`_ u
`.
`-
`:
`
`'5;‘i’l1’e‘1’::&fl'I_m
`:“g1’[::n:'
`.,
`::::;?:::;:.,;t:::*:;£‘:%%"s:::2:23’gs uf
`‘I
`filelength = ftelliresdingthisl :."*<-find filelength
`fseek(readingtl1is.0l..U)z/'<-return to hegiuing: Ru-rind!‘-’
`.
`.
`.
`.
`u11?1e(
`(mbyte = getchendxngthasl
`cuu.nt++:
`if (inbyte == 26 554
`( “om-°opH__
`printf("\n:-‘s has possible hidden data ". filenemel:
`printffi"
`/1d bytes from the begining. ..".coum:):
`
`)
`
`!= E0!‘ 55 Estoploop )
`
`( ceum: < filelengtlrl )
`
`l
`
`1
`)
`fcluseuaadingthial:
`sin (mperamsl
`char tpezems H:
`int
`11:
`[
`struct ffblk fldnte:
`int (:1:
`if ( n }= 2 3*
`{
`
`}m
`
`I‘ ‘H
`
`fa:(c1=1:c1<n:cl+*)
`if (findfirstiparumn [c1].M'1c1s:e.[FA,NORHAL : FA_RDUN'LYll
`[
`resdsfilelfldets.Et',nuIe):
`I-d1i1e( findnexttéuflduul
`|= -ll
`(
`rear:l_t'l1e(fldue.ff,name):
`l
`
`l
`else
`[
`printf("\n..no matching file(sl for -'s\n".psrans[cl]):
`3
`J:'*endfpr‘:'
`
`findh filenuehl \n"):
`pn'm:t'("\npmper farm: is:
`pr:intE(" vildcsrds ‘I’ and '1'‘ may be ueed.\n"):
`
`J
`else
`[
`
`)
`
`1
`
`gm *\:hefile.*thed,a:a:
`?§‘(°H_’i J )
`1 [
`" "
`thefile = fupem’ pnran:u[ll. "ab" ):
`thedata = fopen( p.arnms[2], "rb" ):
`if ( thefile 2: NULL 55. rhedate l= NULL )
`fseektthehie.
`(3). 2):
`(
`
`putc(26.thefilP):
`[
`while (
`(cl: = getdthedetall
`,
`
`!= E0? )
`
`]
`else
`[
`l
`
`1'!
`Elie
`(
`
`Primf(..\r,_cMmm We" a fi1E__\n..):
`‘
`.
`§:l:::E$:gll:i§
`:enuve(paran:::[f']\;
`
`option to erase the source of the hidden data ‘I’
`
`ie:\n1append (file appended cc» ")1
`printf("\npr:oper tomat
`J pr1ntf( (fxle to .1ppcnci>\n ).
`
`1 l
`
`isting nu-ee
`In 1ep1it.c
`*1
`‘include "sl:diu.h"
`‘define TEHPFILE "ramp. 1''
`mein(n.parsms)
`int n:
`
`{ char fiperamsll;
`FILE U|:hefi1g_ttheda(a;
`in: ch=B.hiddendsza=D:
`if ( n == 2 )
`[
`
`thefile = fopenl psrsnelil. "rb" )2
`thedata = fopen: TE)1?FII.E. "uh" );
`if { Ehefile != NULL l
`I
`
`!= EDP’
`(ch = getchht-§i1e))
`uhile [
`I
`if (ch == 26 J hiddendets”:
`if (hiddendata)
`I
`
`(ch = gecctcm-£i1e))
`while (
`E
`putcI.'ch,thedeu):
`
`I
`
`l
`
`l
`
`I
`else
`
`)
`
`!= EDP )
`
`‘
`Dr. Dobb sjournal, jcmzumjy I997
`
`000009
`
`51
`
`....this pro ram lists a file in binar mode:
`ALL chergcters are shown.
`Y
`
`41'
`0:’
`
`!= E0?
`
`C" fl) l
`=
`’
`"° Em 1”
`comp-+;
`‘d d‘
`1
`f
`1-1. W 1
`'
`remove these comment marks to
`if ( byte |= 26 )
`§K§i1—z‘§5 Z{d§ut°?§fmin.:e§ §§2‘
`program on soue systems‘
`'1'
`]
`putc{byte.stdouI:):
`=la5E‘;‘:,_g”:
`
`1*
`
`'
`'
`Llshng one
`1"‘ 11ist.c
`*1’
`*
`sinfargmergvl
`.*-include "stdiu.h"f
`m
`It
`int
`azgc:
`char *ergv[]:
`L
`‘mt byte:
`:
`I
`1.1
`:
`gig :c_=uf(_I§=91:
`if ( arse == 2 )
`[
`infl = fopen(er3v[l] ."rb"l:
`if ( infl
`!= NULL 2»
`h'l
`C
`(
`31
`{
`" 1 °{
`
`)
`(
`else
`]
`
`print:‘~"\n‘.r
`'
`H "
`
`cannot open input file
`
`\n\n")'
`'
`
`V "
`
`1
`If
`else
`1
`n
`u
`llshng Two
`."* lappend.c M’
`finclude "s1:dio.h"
`main|.'n.peram5l
`int n:
`char *param5[I:
`
`p:intf("\n\n‘ ...must supply one file name. . .\n"):
`
`)
`
`{
`
`000009
`
`

`
`PERIODICAL
`THIS BOOK IS DUE ON THE LAST DATE
`STAMPED BELOW
`
`BOOKS REQUESTED BY ANOTHER BOFIFIOWEFI
`ARE SUBJECT TO IMMEDIATE RECALL
`
`
`
`um LIBRARY
`
`DUHJAN U8 .2‘
`
`'s.|*.:.-,
`
`LIBRARY, UNIVERSITY OF CALIFORNIA. DAVIS
`http:/.'Iibnte.ucdavis.edu.'PaIronFlenew.htm|
`Automated Phone Renewal (24-hour): (530) 752-1132
`D4611 (4.'99}M
`
`000010
`
`000010
`
`

`
`PERIODICAL
`
`ummmua1i:r\xwn»@@mnu1@@|g»an
`
`311750
`
`000011
`
`000011

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket