Function Media, L.L.C. v. Google, Inc. et al

Filing 82

CLAIM CONSTRUCTION BRIEF filed by Function Media, L.L.C.. (Attachments: # 1 Exhibit A, # 2 Exhibit B, # 3 Exhibit B (continued), # 4 Exhibit C, # 5 Exhibit C (continued), # 6 Exhibit D, # 7 Exhibit E, # 8 Exhibit E (continued), # 9 Exhibit F, # 10 Exhibit G, # 11 Exhibit G (continued), # 12 Exhibit H, # 13 Exhibit I, # 14 Exhibit J, # 15 Exhibit K, # 16 Exhibit L, # 17 Exhibit M, # 18 Exhibit N)(Tribble, Max)

Download PDF
EXHIBIT IU I L]t illlllll (10) (4s) ilt ilril lllll ¡llll lllll us00617329181 llll¡lllll lllll lllll lllil llll il ill (1r) United States Patent Jenevein Patent Date of No.: US 6,173,291 Bl Patent: Jan. 9,2001 (s4) METHOD AND APPARATUS FOR RECOVERING DATA FROM DAMÄGED OR CORRUI'.IED FILE STORAGE MEDIA Morge¡st9r!, Sleve, "Mako Your Compuler Fastgt, Såfer, Easier to RuD (Using Disk Utility Sof¡Ã'arÐ", Home Ofice Comprting, Sep,, 1991, p. 46. (7s) Inventor: Roy M. Jetreveb, Aùstiû, TX (US) Ayer, Rictç "W41's the Price Magazi¡e, Sep. 14, 1993, p. 108, of ¿ Free Luacb?", PC (73) A.ssigDee: PowerQuest Corporatiotr, Orem, UT (us) (.) Notico: Qr) Appl. No.: (22) (51) Shafz-Aki¡, Jim, "The Big Squeeze (Software Review)", Macuser, Jan., 1994, p. 129. "PC C¡asch? Call Rescue 911!", Newsbyles News Nelwork, Apr 21, 1997, page N/4. Under 35 U.S.C. 154(b), the te¡!û of this pafeúl shall be extended for 0 days. 08/939,085 Filed: Int. C¡.' * G06F 17130 707/2þs; 7071206 Sep,26,I997 .,.,.......,,............. 707/210; 707 /202: cited by examiûer (52) U,S. Cl. (s8) (56) Field of Search Referenccs Clted U.S. PATENT DOCUMENIS 707/200,m6, 707DOZ,205 Primary Exømíner-+aùl R. Linlz AssMant Exam¿ner-Iean Bolte Fleura¡lin (74) Attorney, Ageût, o¡ FriÌn--Ma¡c A. Hubbdd (s7) .4.BSTRACT 4,94L,059 1 lßm AD automafd method and apparatus lor idootifyiDg aûd copying losl Âles from a Dåss data sto¡age device of a compùter wheû ûle system inforúation (as oPposd to the actual data frles) stored oD tbe úass dat¿ storage device bâs beeD corrupted or destroyed. fte úass dâta slorage device is scå¡Ded on a seclor-by-sectol basis in order to åttempl to 5,Ce3,:264 111992 Plåtteler et al. ,.,,,,.......... 3951182.03 5,n6,&O + 11t994 Fortier et sl. ....,..,,,.............. 395 /575 + s,42r,û6 s,432,92ß + 5,32r,524 6/1994 5/1995 't/1995 5,469,573 1u1995 5,473,753 + 12Ã9 Burkc cl å1. ......,..,,.............. 111l¿2o Jablo¡ et al. .............,...,. 395/1$ 12 Mccifl, III t al. ...,,.,,.,,,... . 3951712 Welf s et ã1. .............,,.....,,.... 3951218 idenlify sectors contaiDing filo system data structÙres and ûle attributes. IdetrifcalioD is .oade usilg dâta sigDature and/or pattem matchiDg frlters. The locatiori of, and any 5,493,649 2 9 5,535,381 ',7t19 5,555,û5 * 5,561,7A6 + ß11996 Moß 9/\9 Slivkr el al,,................... 395/185.01 Kopper ........................--. 3951872 Grieslner et â1. ................... '7A7 205 '711/17O valid iûformation found in, sucb sectors is usd tben to derive informåtioD l¡seful iû tocating frles to be copied to åoother storage device. For exaúple, in a FAT, NTFS or other cluster-oriettod frle systeú, if iDforúnatioD on thc ¡ùmber of sectors per cluster (SPB) is ¡ol ¡vailable from a boot direcfo¡f it ând a cluster base (the stsrting seclor of cluster 0) al calculated usiDg the physic¿l location of the begiDDhg sectoß of tbg direcfories or folders. when a starti¡g cluster is k¡own f¡oo a dircctory eûtry, but ¡ot additioûal fle allocatjoD iDformatio¡, a clì¡ster chain may be ¡ecoústructed utiliziDg oDe o¡ more of several disclosed ûelhods. 50 Claimq 10 Drawtug Shets 5,594863 1/1997 5,6O3,0m Ußn 5,62i,651 4A9n 5J6t,4O4 5,a32,526 + I 395/ß2.13 Stiles Hashimoto et al. ..,..........,... 707nU) Jerûigån, IV .,,...,..,............., 7t1 nO6 6A998 MuråtÂrìi et al. ......,...... 3951ß2.13 Schuyler .............................. 7a7 1Ut9 nIs OTIIER PUBLICAÏTONS Merdelson, Edward, PC Tools Deluxe 5.5 (Soflware Review), PC Magåzine, Ma¡. 27,1990, p, L1.2 carofolo, Dedise A., "Take Cha¡go!: A Dive6e Packåge of Utillities", Idormatiotr Todat Jul-Aug. 1990, P. 13 U.S. Patent Jan. 9.2001 Sheet 1 of 1.0 us 6,173,291ßl Keyboard Main Memory (RAM) Disk Drive Controller Floppy Dlsk DrÍve BIOS (ROM) Disk Drive Controller Hard Disk Drive Graphics Adapter Eig.1" U.S. Patent Jan. 9,2001 Sheet 2 of 1.0 us 6,173,291 B1 f+l 40b |-_---_---lì DirectoriesandFiles RootDirectory + ((no Root Directory loc) I no longer fixed ï | I +---1* -lI I | in loc) | | I Ll_1_sï.:t_l L_ *t l3 . Ll FATl Boot F-_-------ll l &2 Secton þaditionz I I I + Ma 40a Root Diectory | (not (not used) used) I E-tP"ttionSt.L;lJ Ext. Partition Sector Dheclories and Files Root Directory (no longer in fixed loc) 44a 40a 46a 46a 46a arlition 1 FATl Boot Sector (not used) 46a 38a 38a 34a Partition Seclor (MBR) 34a Fig.2ø Eig.2b U.S. Patent Jan. 9,2001 Sheet 3 of 10 us 6,173,291 8L I o¡reaor¡es ano r¡us NTFS Meladata Files MFI Copy (Pañial) Master File Table artition 2 (volume) (MFr) ,b--l 58 Boot Sector Ext, Partition Sector 5ba 54a- 52a' 50a. 36a. arlition 1 (volume) 34a Fig.3 Read Sectors Where Boot Dhectory is Expected MatchThal 0f a Root MalchThat of a Sub' U.S. Patent Jan.9,2ffi1 Sheet 4 of 10 us 6.173.29181 Store Location and Content of Partition User Selects Destination Drive AnaM¿e lnform- atioñ and Con- strucl Directory Parlition and Boot Sector lnformalion ¡f Presenl, and Store (Folder) Tree and Group Extra Files in 'Losl -and- Fig.4 U.S. Patent Jan. 9,2001 Sheet 5 of 10 us 6.173.291 81 a Sector-by-Sector Basis Assuming Minimum Number of Sectors/Cluster Matchïhat of SubStore Sector Address of Subdireclorv Sub-directories Found Within Parlition Store Address of and lnformat¡on in Partition Sector Calculate Sectors Der Cluster Based on Found Subdirectories Look For All Sutsdirectories on Disk on a Sector-bv-Sector Basis Assumino Celculetéd Value for Sectos oei Cluster bv Data Pattem Match MatchThat of Sub- ifhal of Parlition Store Address of and ln- Store Partition lnformalion and Address U.S. Patent Jan. 9,2{Ð1 sheet 6 0f 10 us 6,173,291 Bl For Each Dirætory Found, Starting w¡th the F¡rst D¡rectory, Compute Sectors per Cluster (SPCI anóCluster Base (CB) Through Other of the Found Directories Directory Available q..rT*9 Choose Nexl Available of the Other Dirsctories for Comparison and Recompule Build Direclory and FileTables BY Match¡no Entrials in Direclories with Same sPC and CB and Slore in Working Memory Build Partition Record and Store in Woddng Memory For Each Dheclory and Each File in a D¡rectory and File Table Check Chain iri Fat Table Starting w¡th the First Directory 1 YES lndicate Directory or File Likely Recoverable lndicate Directory or File May be Recovered U.S. Patent Jan. 9,2001 Sheet 7 of 1.0 tJs 6,L73,29IBL 770 NO 182 NO Gopy to Destination Drive Sectors in File Accordinq lo Fat Table Entries añd Calculated or Known SPC Calculate Number of Clusters for Length of File ol Consecutive Clusters from File's Starting Cluster Address Fig.8 U.S. Patent Jan. 9,2001 Sheet I of 10 us 6,1.73,291 81 188 Begin With Smallest File 190 CalculateNumber of Clusters Required tor File and get Next Unaccounted for Cluster File of the Same as Unaccounted Get Next Unaccounted for Clusler Fig.9 U.S. Patent Jan.9,2ü)1 Sheet 9 of 10 us 6.173.291 81 Place Number of BeCluster in First oWindów - innino and Display End of First Cluster of Selected File in Second Window Update and Display in Fourth Window List of Clusters by Type for Compadson DisDlay End of Matched Clusierin Second Window Receive User's Selection of Comparison Cluster and Display Beginning of Clusler in Third Window Adiacent to Second Window Fig.10 U.S. Patent Jan. 9,2001 Sheet 10 of 10 us 6,173,291 B1 Cluster NavigaÈor Dísp1ay for öi6tä ti;E (-oi FILENAME ' ExT ) ËË'ëïüËËË;"öi: I us 6,173,29t B7 desigúated 30 io the frgure. Howeve¡, úost compu¡ers use communicatioo between the CPU,lhe main memory, and the va¡ious VO devices. TECHMCAT FIEIÐ OF II.IVENIIoN The¡c is also a sepårate, Don-volalilo, solid ståte read-oûly memory 32 for storing wbat is refened to as tbe "BIOS" or Tbe itrveutioD pertains geûerally to úetbods and ¿pp¿ra"Basic Input/OùÞùl Syslem," which is permanently rsiderìt tus for recoverhg data ûles from mass data storage devices softB,are, sepa¡ate from åD operatiûg system. The BIOS wher ûle syslem informatioD is corrupted or úissitrg. software routitres, wheD executed by fhe CPU, translate r ñ certaiû "calls" from aD executiúg program wåDtitg lo accss _BACKGROUND OF THE INVENTION METIIOD AIID APPARÄTUS FOR RECOVERING DATA FROM DAMAGED OR CORRUPTED FILE STORAGE MEDIA more complex types of bùs a¡langemenls for e¡abliflg s The mai¡ components of a general pùrpose, prcgraûmable, digilal compùler, as illustrated by a represe¡tative compì¡ler 10 showu of FlG. 1, a¡e a ceûtral processing unit (CPU) orprocossor12 for úaûipulating datê accordi¡g to a progra.E of i¡structioûs, and å maiD or worki¡g memory 14 for leúporarily storing dâta, iûcluding prograú inslructioos, (The term "data" will be used generically, uDless the conlext otherwise iDdicales, 10 mean any inforúatioo in digital form stored by å coDpìlter, includiDg, without limilalioo, program iDsln¡ctiots, [exl, busiDess dala aûd coÍûmaDds.) Most compùters also include one or more úass or blgh capacily data storage devices for lotg term slorage of data in tho form of files. There are ¡!ÀDy types of úass data storage devices available, i¡cluding, for example, Dagûetic åDd optical !ape, magnetic, ûagûoto-optical âûd oPticål disl.s, aDd solid state (o,g, flash úeúory). Most, but ûot all, of these devices ard media are non-volatile; i.e. they do ¡ot require power to úaifìlaio loDg-lerm úeúory' Many can be wrlten to one or more limes. ID ådditioD fo fhe basic, phÞical p¡opelies of thei! ¡espective storago tDedia, they difier in oanner (sequential versus râridom) of access, speed of access, cost pr ì¡nit of data stotagg and sto¡age capacitf amoûg othù cha¡acteristics. The type of device slected ofton depends on the rqùiremeûts fo¡ tbe partiqrla¡ coúputer. Unlike lhe main meúory, which stores data i¡ directly accessible srnall utrits, i.e. byles, úass data sto¡age dcvics are set up 10 receive aDd make data available 1o the CPU iD cor¡ìparalively large blocks. Mass dala storage devices a¡e treate.d as poripberal inpu/oùtpìrt (f/o) devices, meaning that thy aDd/or their coúlrollers are set uP (io hardware, softs¡are or both) transfer data in relalively large (e.g. 512 bytÐ blocks. Most modem computers ùtilize at least oDe or more magnetic disk media for high-capacity storage, as sùch to traDslate betweeD the LBA and a pbysical C,H,S address. media cuûently ofers a good combination of speed of As previoì¡sly meDtioned, dåta is o¡gaûizrd for sto¡age access, capacity aDd cosl. [n tbo representative coúputer of into frlas. Depending oo the size of th frle and the size of FIG. I the mass dâta storage devices are a floppy disk drive 16 and its coDtroller lE. aûd bard disk drive 20 aûd its 50 the scto¡s iú the storage devic& i¡ which it is stored, files coûtrollr 22. Conve¡fiooallf the floppy disk drive receives a removable floxible, magnefic disk 17. The hard disk drive may be slored over oûe or mo¡e seclors of lhe storage device an I/O device, whether it be aD operatiog syslem or ån application program, info a sqùetrce of commands that are provided, or stored in registers of, a particular VO device o¡ its contloller for execùtion by the coritroller. By segregating ,< haldware-dgpgndent VO device access roùtines ftoût othor prograEs rufrfri¡rg oD the computer, higher level Prograûs, such as operating systems aDd applicârions prograrls, Deed rot be \r,ritten for specific computer hardware, ållowing at lcast some level of compatibility åmong differorìt hårdwa¡e ,^ syslems. Tbe BIOS also includes soltware for handling certaio tvDes of errors wbjcb occur with the I/O devices, as weu as instructjons for testing varioùs comPonents of the coû¡pùter wheo it is powered up and loadiag aD oPraliDg system froû a disk drive. 25 Disk drives are physically addressed by the BIOS usiûg a cylindoç bead ånd secfo¡ number. A typical hard disk inchrdgs multiple platters rotatiog on a commoD axis. O¡ each side of each plâlte¡ are arraDged coocûtric tracl(s. Tracks having the same diameter or radiùs lie \¡¡ithin â 3s "cylinder." Each side of each Platler is read aûd writteD to by a sepårate a read/ETite head which moves across lhe tråcks. The head aad cylinder Dumbors udqùely identify a track, ard the sector ûuúbor ùniqrìely idettifres oDe of the sectors within a t¡act. Tbe cylindet heåd and secto¡ ('C,HS") 35 address 0,0,1 is always occupied by a pa¡litioD se.tor' Hard disks for may be used by â coúpùter to store more thaD oúe operâting system, which means thåt úo¡e thaD one t]!e of file system may be ùsod to store ñles o¡ a ha¡d disk. A hard disk is thercforo partitionablc i¡to mr¡ltiple "driveJ'or 40 "volumes." The pa.rtition sector stores a table specifyirig tho start and eDd ofeach p¿rtitioD, or a liok 10 the next partìtioD, ¿s well assome olher basic informatio¡ aboùl the disk. Most operâling systeEs address sctors ùsiûg a logical block address ratber tbäE the C, H, S address. A logical block as address (LBA) is a sque¡lial nùmberiûg of lbe sectors wilhin a partitioD or drive. It is ooe of the BIOS' fuoclions system, keep track of u,hat frles are stored, aDd .¡vbere tbey iûclùdes a stack of spatially.sepa¡åted, stif, úagnetic are stored, in the storage device. Generally, this ûle inforplatters, which are usually fixed, bul may also be made reÉovable. the coûtrollers for the respeclive disk d¡ives 55 úafior is also stored in the same devico as the frles. Som of the information is typically stored iû desigtated seclors or traúsla¡e basic coúúaûds received ftom fhc CPU iDto the areas set aside for that PìrrPose. approp¡iate actions for thal paficùIar disk drive, ald coûtrol the flow of data to aúd from the disk drives, Compùters ì¡ill Each operathg sysleú bas a different fllc system. The Filc often include other types of úass dal¿ storage deviccs, sllch AltocatioD T¿ble (F,{I) file system is t¡e Dative file systeE as CD-ROM drives and lape drives. 60 for lBM-staDdard personal coE¡putels rùoDiDg the MS-DOS@, WiûdowsrH 3.x a¡d WindowsrM 95 operating I¡ additioD 10 ûass dâtâ storåge devices, tbe comPì¡ter 10 sysfems of Miqosoft Corporation, aDd it is sùppoded by also iDcludes vånous otber pg¡ipberal compoúeûfs or I/o Mic¡osoft Corpo¡atìoD's Windows-Nl The FAT frle system devices ¡Ã,ith s¡hich the CPU commuDicates, including, for was originally developed for small capâcitt floPpy disks, example, a keyboard 24, â video monitor26 and its g¡aphics adâpler 28. ID tbe siúptest form of tbe comPì¡ter 10, the 65 bùt has beeú exteDded to be usd for today's very large capaciry disk drives. Thc FAT file systeú has severâl verCPU, úaiú úemory, the mass dala storåge devicqs a¡ìd the sions. The ones used by earlierversio¡s of the Ms-DoS ând I/O devices comúù¡icate over a single system bus, which is It is the job of an ope¡ating syslem, paficula¡ly its frle us 6,L73,29t 3 wiDdows 3.x opråtiDg systerûs are geDerålly referred to as the FAT-12 aDd F¡I-16 frle systems. Microsoft WINDOWS 95 supports FAT-12, FAT-16 and a 32 bit version c¿lled FAT-32. Microsoft Corporation's Wirdows NTÌM operafiûg systom ùtilizes a nalive ûle system koowú l',lTFS, or Nw 5 TechDology FiIe Syster¡, a¡d also sùppols the HPFS frle system developed by IBM for the OS/2@ operatiDg systeû. These systoEs share, lo varyiûg degree, a similar approach to maDagiúg ûls oD tbe disks. RGS. 2¿ a¡d 2ó illustrale, respctively, exaúples of bow 1ô B1 4 the FAT-16 aDd F.AI-32 frle systems oryaoize dala oD a b¡rd dÈk or otbgr mass data storage device. Each has a partitioD secto¡ 344 stafing ¿t C,H,S4,0,1. (A noppy disk is geûerally ûot partitio¡able, aDd tberefore hås Do Partitioû sctor.) Followiûg each påfitioD seclor, tbere is a bootsl¡åp seclor, 1r -- which starts al a Axed localioo (C,H,S=0,1,1) so thal the BIOS always kûows wbere 10 ûDd it. lú the FAf-1ó systeE, there is a siúgle boot seclor 36. In the FAT-32 system, the¡e arg two, ideotical boot records, oach labeled 38n, for redundaocy. The bool records slore basic inforÐatio! aboùt lbe ,0 -d¡sk needed by Lhe file system, as well ås a Program for loadiúg the operatitg sysleE¡ froú lhe disk The FAT file systems, like the ûle systems ùsod by maty operating systems, allocâte clusters of sectors, ratber thaD individual sectors, for ûle storage The trùmber of sclors per 25 cluster withit a partitiot is fixed duriúg formattiûg of the storagc device and stored iE the boot reco¡d The ûles a¡e grouped into directo¡ies. The directors ar organized bierarchically startiûg with a root ditectory 404 The root di¡eclory iû th FAT-16 syslem is in a ffxed locatioD i¡ the 30 slorasg dgvice so tha! it c¿n be fouDd. However, the FÀ432 frle ôlstem ûeod Dot slore lbe rool directory at a frxod location. The remaining direclo¡ies, which are set ùp by a usr, are srb-directoß of the root directory, caû be located timJ stamps for crealioo and modi6calio¡ dåles, its aDt'rvhere u/ithin the dara arca Ma, along with rhe 35 MS-DoS ãtributes and security descnptors There is a Êach ùser diectory iDclùdes at entry poioti¡g to ilself' "data" attribute for user flles, which û¡ay be used to slore staling clùsler; an eûl¡y for identiûed by 4 "." and listing its actu¿l Âle dal¿ for small user flles. A file may bavo addilional its parent diectory if a¡y, identiñed by a ". "' aûd listing its "úamed atlributes." Fo¡ a direclory the då14 areå is used to pa¡ent's starti.Dg cluster; aD entry for each fust-orde¡ sub_ store atüibutes for a sorted i¡dex poi¡tiDg to tbe frles that are di¡ectory, wbich includes its Daúe a¡d stårting clùster cre- 40 srouped in lhe direcþry. The index for a file inclùdes lhe atioD date/time (ønd a provision for loDg tiúe ûåmes iû ñbs ¡ame a¡d refereDce úumber, which is a Poiûter lo the that Wi¡dows 95); aDd aû e¡try for eacb frle sloÉd frl's onlry iD fhe MFL directory, wbich iocludes ils !ame, leûgtb aod staniog The MFT È a frxed size. lD the evetrt a frle attribÌrte caúûot clì¡ster, Each directory is allocated at least oûe clùster fo¡ ût withiû the eotry aJea ållocated to the frle, the attribute is storiDg tbis iDformatioú. Basically, each entry in â directory 45 stored oulside the MFf, iû which case it is c¿lled a ¡onacts as a pointer fo the stå¡ting cluster of å frle, sub_dfuectory reside¡t attribute. For å user ûlo (as opposed to a di¡ectory)' â group of cofìsecutive clùsters whero å DoDresidont attribute or pareDt di¡ectory If a ûle is allocated mùe thaû oDe cluster, the additionål clûsters must be chai¡od together by is stored is callod a data ruD aû att¡ibute's valùe is the operating system by looking uP a poùter to the rlext ûor-resident, its beader, which always remaios ¡esidenl, cluster in frle allocatioD table (FAÐ 464 for lhc pafitio¡. s0 indicates that is ûo!-¡esident, aDd it is followed by a pointer to the LCNS of the clùsters where tbe att¡ibut is actually The FAT 46a is stored be¡ eeû the bool records atrd the stored. This is accoúplished by recordiEg tbe slartiDg vi¡tual rool directory. Becâuse of ils importatce, tbere are lwo cluster number (which is å sequeûtiål nùmberiúg of cluslers copies slored. ft has o¡e enÍy for gach chìster in a Partitioo. within the filÐ for each ruD, with the LCN where the run Th; entry will hdicâle tbat the cluster is Àvailable, beiDg usd or is bâd. If il is oûe of the clusteß irì a chain of clusters ss begios, as well as tbe ûumber of clusters in the ruD In esseoce, data ruûs are tbo same as the files i¡ the FAI fi19 úa.ld¡g up a ñle, it will iúclude lhe clustet ¡umber for the systems, ånd fbe VCN to LCN mapping is simila¡ ¡o the next i¡ lhe chain or a special, predeÊDed charâcter or value stani¡g clùster i¡form¿tion for lhe file iû lhe direclory of å for iûdicati¡g that it is the last clùster in the chai¡. The FAT frle system. Howeyel, uúlike the FAI system, the nuEber of for the FAT-32 frle system also stores lbe slartiûg cluster for fhe root di¡eclory. Iû the FAT-16 table eåch eûtry is â 16 bil 60 clusters or ÌeDgth iû â run is available in NTFS in lbc same enlry ås the sta¡ti¡g clusler Dumber, as is ¿lso the staning cluster address aûd iû FAf-32 each entry is a 32 bit cluster clustors and letgth of othe¡ rutrs storing the frle Thus, iD address. NTFS, there is no Deed for a sePara¡e FAT to sto¡e cluster The slorage devices illustrated by FIGS 2a â¡d 2ó have allocåtioD infomation. A separate bitmap frle, which is one by second partition sectors 34b. The second been partitioned Dartitioús also ioclùde boot reco¡ds, 36å and 38ó' 65 of the NTFS metadata frles, itdicates whether a cluster is available for allocatioE ot is atready allocåted within the iespectivel¡ root directories 40b, data a¡cas 44ó aûd FAT tbe New Te-cboology FiIe ordisk forEalted for tbe NIFS inclùdes a måster partlion sector 344 aÍd a boot seclor 36d at fixed, predetermined addresses However, following the boot secto¡, thore is allocated sPaca for, iD order, a master Êle table (MFI) 50a, a pa¡tial copy 52d of the MFf, ard other NTFS metadata ûles 5¿l¿. Tbe reúaiûiDg uDallocaled alea of seclors 564, up to the exteûded partition secùor 58, is ùsd for sloring ùser ûles and index bufers, which car be thought of as a forú of a diectory. Following lhe extetrded partitioD sctor is a¡olher voluúe, o¡ partitioû, with it owr boot se.lor 36å, MFT 50å, partial MFT copy 520 and NFIS mtÂdata files54å for that volume, and ¿n area of us¡ ûles aDd directo¡ies 56b. The storage device may have, if desi¡ed, additioEal xtolded partitioûs, defltriDg additionat volunes. NTFS can be cotsidered aD exteûsioD of OS,2's HPFS aDd iochdes 6le secùrity features All data stored oû aD NTFS volume is slored in a file, includir-fllcs, NTSF data slnrclures used 10 locale and e the the bootst¡ap data Âle (which is sto¡e-d it tbe retrieve predefrned boot sctor) and a bitmaP flle wbich records the ;llocetion state of each clùster on the volume. NIFS data stn¡ctures âre refened to ås metadata frles, and also iDclude a log Âle, volume Âle, aftribute defrnition tåble, root directo¡y aod bad cluster flle, aúo¡g others. Like the FAT ûle systems, space in the volume is ållocaled i¡ clùsteß ofsectors. The Dumber of sectors in each cluster is frxed within a volume. The clusteÉ are nùmbered scqìrentially f¡oú the begiúûitg to lhe etd of the volume ftese numbers are called logical cluster ûumbers (LCl$. Each frle, inctuding tho MFI, boot tle aDd othet Eetådât¡ frles. has an entrv in the MFL Each is treåled as a "frIe," as are íhe user di¡eôto¡ies ¿nd files. Each "frle" iD the MFf is detnel bv a row ol åtlributes. Thesc atkibutes include rhi¡ss likó tbe names of tbe frle (more lhan o¡e is possible). Refeniog now lo FfG. 3d, i¡ Syslem C'NTFS"), a slorage device frles. i¡ If tåbles 46á. clì.¡ster. us 6,173,29181 J Fo¡ a directorf a group of cl¡Ìsters storing ooD-resideût ûl iDdex iûforúatioo is called an index bufer The i¡dex 6 tioD oD the tass data storage devjce. As eEbodied iIr â Eetbod and appa¡aius for recovori¡g 6les frorû a damaged o¡ corfupled Eass data storage device, there åre several altribute iD a directory's eûtry in the MFIincludes åD iDdex i.Dvenfive aspecls, a fe$' of which, aDd their advåDtages, are root segmút, åo iDdex allocatio¡ segmeEt aûd a VCN allocation bitmâp. Tbe root i¡dex coDtaiDs the ¡ext higher s su¡omarize-d below. order 6le number for eacb i¡dex buffo¡. Fo¡ exa¡¡ple, if frles According to one åspec! a compnfer reads â mass dåta 1,2 aûd 3 are stored iri a clusto¡ ru! coDstitutiûg a ûrst iDdex slorage device on a sector-by-stcto( basis iD order fo allemPt bufer for a directory, file 4 (or the oext bighest orde¡ed ñle to idc¡tify, snd thus locate, through tbe usô ofdala sigûature oùmber iû the directory) is slored ås the root. For eåch rool, åDd/or patlem målchiûg "ûltsrs," sclors coDtaining frle there is a VCN-LCN mapping in tbe i¡dex ållocalior¡ 10 system data slructùes atd frle åttnbutes, whelber or Dot the such sectors is v¿lid. These seclors úay informalio! segment, wbich includes the startiDg VCN aûd LCN of lhe index bufier and ihe ¡ùmbr of cluslers iú the buffer. The include, for example, partitions, wbicb logically divide the storage devica into separate ûle sp¿ces or volùmes a¡d ñle bitmap segmeDt tråcks which of tbe VCN'S iú tbe allocated clusler ruús are free for stori¡g additional indgx"s within the system data st¡uctures (for exaúple, the F¡[ tables, MFIS or dùectory enhy. The index buffers âre thùs, in maty resPecls 15 similar cluster allocalion data structures). Tbey also may the FAtr like a directory stored in the data user alea incft¡de ile attsibutos, includirg, for example, directories or systcûrs. fo1do6 iD the FlÀI atrd MAC OS ñle systems, Don-Éside¡t NTFS, ot otber frle attributes such as itdex bùffers Becar¡s datå for lbe fl19 system for a particuìar slo¡agg hicrarchical flle orgadzåtioD data structures (wbich are device is slored on the dovice itself, a comPì¡tI c¡ash, ha¡dware Éalfu¡ctioD or prograûrming glitch câ¡ desfoy 20 sometiúes geoerically referrod to hereiû ås directories), which may be stored iD user data a¡eas. crilical data ¡ecessary for ¡olrieving ûles Magnetic disk lD accordaoce with aûother aÐect, the locatioE of, aDd drives, io palicù.la¡, are suscplible to dala co¡rupt¡on, any valid information fot¡nd it, the sectors, is ustd to de¡ive thoùgh it can hÂppen to any mediå to which data is vritten, infoÍoation ùseful in locåtiDg ûles to be coPied to âDothe¡ or oD whicb it is stored. For exaúple, Âle system informatio¡ a FAT, NTFS or other ca¡ bc conupte-d by dâmåge to tho disk me-dia caused by 2s storage dovice. For example, clùster-oriented ûle systeúo, if infor¡oafiot on the nùúber of physical shock or, iD conventiooal bard disk drivos, a crash seÆtoß per clùster (sPB) is not âvâilable from a boot of a read¡¡v¡ite head sbould the disks $rddeDly sfop rotatiDg di¡ectory, it and a cluster base (tbe startiûg sector of cluster A bardwâ¡e úalfutrclion in tbg device's co¡troller, a bad 0) are câlculated ùsing tbc physical locatioD ofthe bogiDDiDg û¡emory chip orpoorly written software caD aìso corrupt flle system datt. A power oì¡lage can strike befo¡e caching 30 sectoE of the diroctories or fotders. software has w¡itteD all of its cached data !o a file on the According lo a furlher aspcct, iD the eventsector or cluster devic. IEproper po¡¡/eri¡g-dow¡ of a computgr cân leave allocåtion itformation is missing for a klown file or di¡ec_ crilical ñle system iofo¡úåtion stored in memory before it lory for example, wheD lhe slariog clÙsler is k¡ow¡ from a is written 10 lhe device. direclory eDlry, bur ool addirional flle allocalion rr iriformation-a clusler chain may be rgcoûstrucled uliliziDg The FAT ôle system is palicularly at risk Most frle one o¡ fnore of severål Eetbods. The melhods iDclude svstcm corruption occtus Dcår lhe bcgiooiDg of a disk pirtiLion, wbeie lhe mosl critical FAT flle sysæm i¡formarccovering cluslers in sequence from the stafing cluster whicb is larg nough to hold the ñle, assumi¡g recent disk iion ¡esides. Tbgre ar compùter virúses that sPecifrcally target a FAT parlilion lable or bool record, wbich cân wiPe ,^ defragmetrtation; automatic groupiDg oflost clusters by data type, dete¡úiDed throÌ¡gh aDalysis of the flle data, staltiûg oul critical ioformålioD oecessary to retrieve Ales There is with the smauest files, aDd assuming sequeûlial chrsler â "wråpped aroùnd" efrect which m¿y caùse dåla in the FAT alloc¿tio!; or matchitg by ¿ user throì.¡gh us of a visual Âle system to be overwrilten when å lârge caPacity disk is i¡torface displaiDg in closo, spatial ptoximity th oDd of a replaced in an older computer that dos ool have ao EIDE disk cootroller, and lbe LBA modc dùk âcccss or lhe largc .. låst kDown cluster i¡ file to ån available clustor. capaciry disk soft' are drivor is improperly ioslalle-d. lhese and olber aspecLs aDd adva¡tages will be apParenl from tbe following delailed doscriPtion of a Plefetred if inform¿tioû oû the Dumbets of sectoß per Furthermore, embodiment, iead in conjunctioD with lhe appende-d drawcluster (SPC) is los1, any fl systeû information storing rngÊ. locatio¡ of ûl's ¿.td directo¡s ùsing clì¡steIs be@úes usless. If ioformatioû oo wbere exteod pårlilioûs cxisl is lost, {n BRIEF DESCRIPTION OF THE DRAVr'INGS -all file system informatior¡ for ao entire Panilion is efec_ FIG. 1 is a scheúåtic diagraú of a represeDtative comtively lost, puter. Prior art utility progüûrs for recoveri¡g flles stored i¡ F'lG. 2o ß aD scheúatic rep¡esntaliorì of the use of FAT frle systems, such as Nolon Utilities, usuauy try to secfors iû a måss data s¡orage device storing ñles ùsing the "frt''corrupted flle systeú iúformatioú by w¡iliDg ûew ûle s5 FAT-16 file system. system data to the disk so thÂllhe operatiDg system can then FIG. 2b is a schemalic represeûla lion of the ùso of sectors the device. However, tbes frxes arg acass tbe files from in a úass dala storage device sloriog frles usiDg the FAT-32 offcû iDeffective, aDd úay csùse valuable data to be overfrle systero. fiitten in the process. FIG. 3 is a schematic lepresDtatioú of tbe sectors of the 60 SUMMARY OF THE use of sctors iû a måss data storage dcvice sloriûg fles using the NIFS Êle system. The iDvDlion pertai¡s geDerally lo aùtoroated methods FIG. 4 is a flowchart illùstrati¡g steps of a comPuter and apparatus for idendryhg aod copyiûg lost ûles froú ¿ process for recoveriDg lost flles from a m¿ss data slorage mass data storage device of a compùter whe¡ file system idorúatioû (as opposed to the actual data ûles) stored oo the 65 device of a coEputer, FIG. 5 is a flowchart of a compÌrter Process fo¡ locatitg mass dat¿ storage device has been comrptcd or destroyed, a rool directory----âs part of the process of FIC. 4 without writing or attempting to rpair file system informa- ir i! it it - I}TT'LNTON us 7 6,173,291 81 I FIG. 6 is a flow charl of a compùter process for identifyiDg pa¡ti¿iols, directories or other frle attibute's in a FAT systom oD as pa¡t of the process of FIG. 4. FIG, 7 js a flow chart of a procss fo¡ calcùlafiûg tbo nùfDbe¡ sectoñ pgr cluster âúd clùster base for 9âch dùectory, a¡d building tabls of directories and files for 5 sectors. For exaúple, i-u the FÂT ûle systeús, tbe last two byteß iD the partition sctor âûd the boot ûl¡,st have the values aa55h. Pattem matchi¡g involvos looking at pattems iD the placemeDt and value of tbe bytes iD the sectot or groì¡ps of sctors, thât teúd to ì¡niquely ideDtify that par- selectioû for recovery. FIG. I is a flow chart of a coEputer process for recoverifìg files haviDg valid clusler chaio i¡fomåtion, Paliculajly a -^ valid FAT table, or wbeD the dala sloråge device is receEtly i" defrâgmeDted. FIG. 9 is a flow chaf of an automatcd computer process for recovoug ûles with missitrg or iDvalid clusler cbai¡ iûfo¡matioû, particularly, úissiDg or iûvalid FAT table ticùlar type of tle atEibute. A dala Pattem match Íray hclùde checkiûg 10 see if the b}'te values in certain locatio¡s withiû the sctor or cluslr åssùúe oûe of certaiû permitted values, or are within a råEge of permitted value's. In NTFS, for exa¡ûplg, the "magic oumbel'' "FILE' can be ssarchel fo¡ in o¡de¡ to ideDtify the MFI aDd tbo magic nuebor "INDX" can be searched for i¡ orde¡ to ideDtify index bufers. gf the process begiDs a secto¡-by-secto¡ read, coDpar.. i¡gNtbe, coútenls of each sctor to a series of data fllte¡s to entries, iD frâgrûe¡ted dala slorage device look for other palitioús aDd fll att.ibutes (for example, FIc. 10 is a flo.À¡ cha¡t of a user-cont¡ollåble computer ol¡er root directories åDd directorias, includiog folders in lhe process for recovering flles wifh missing cluster chain FAT-32 aûd MAC OS flle systems, and, in NÏFS, i¡dex iûformatior¡. bùfiers, certåiD NTFS úetadatâ aúd/or other úot-resident FIG. 11 is a diagram of ¿ user screen interface for use in z0 frle åtlributes.) The ad<l¡ess åDd inforÍnåtion contaiûed iD tbo process of FIG. 10. found ûle åtlribufe sectoß are stored i¡ the dala slructure sl up iD lhe workitg merDory of the computer. DETAII-ËD DESCRIPÏON In a oreferred embodiment, tbe ioveDtion takes ltìe fofm of a prógram of instructio¡s stored in meúory of coúputer, vr'hich a¡o being exeÆuled by tho CPU of a con¡Puler, such as CPU 12 of lhe computer l0 io FIG. l. The prograo is Ioaded ioto the coúputer froÉ a floppy disk (such as Boppy 25 disk 17 in FIG, 1) or other romovable slorage media inserted i¡to a bootable storâge device. The oporating system is Dot 30 loaded. To access o¡ comûunicate with the disk drives and other I/o devicas, the program relies o¡ the cotopl¡ter's BIoS or other perúaDeDtly-residont, ha¡dwa¡c specific, I/O device access ¡oulircs. In lhe follo'¡¡ing descriPtion, like numbers refgr to like 35 cù¡r¿ût operating systems âllocate Ðac in a storagc device Rferrillg to FIG. 4, a coEPìrter ùnder the coûtrol of the in a cluster of sectors, the ûltering or ao alysis of a seclor úay progaam sta¡ls by testing each coDtroller for each disk drive also involvj¡g analyzing the coo¡eo ls of other ieåd secloÍs i¡ (or other mass datå storage devic used foa storiDg frles) iD coújù¡ctioD therewith, ¿ssuúiDg â Éiúiúum cltlster size, to step 60 to deterúine whether they are the computer al confiÍû thål the secûor ispart of a clùstr lhat contains a nlo fuDctioúi¡g prope¡ly. At decisiot sleP 62, if none of tho +o attribute or panitioú. As indicared by decisioD step E4, the controllers påss, the procss ends. Othenvise, fhe devices proces,s of repeals by getling lhe nexl seclor, unlil lhe ¿re tested åt steP 64. The dlive wiltì workitrg controllers pbysical e¡d of the storage device is reached must fùDctíoo electronically to recovga data. If ¡oûe pass at By the forgoing process, partitions, directories ând fragdecision step 66, the process c¡ds Otherwis, the user is workir¡g storage 45 meDld directoÍies, and other frle attribì¡les ca¡ be located, proúpted at step 68 to sglect one of the even whcû the maslor partitioû scctor is corrupted, thc root ãeviccs as a source, ånd to select ¿t step 70 another of the direclory is missi¡g, FAT tables or MF-IS are corruPted, or worki¡g slorago devices as a destinalio¡. The source storage sPC inforúatioD is roissiDg froû the bool sector destinatioo device coDtains the frles to be recovered, and the ODce lh scåDning aod Êlteriûg process is coEPlte, the storage device is the slo¡age device to which recove¡ed frles joformalion collecled 50 Drocss moves to slep 86, wherei¡ the will be ãuring the sca¡ is uód lo reconslrucl direclory trees of Êles step 72, the coúputer bogins a process of a sector-byfor diplay to tbe user Briefly, this may i¡clude delerEiDing ^t sector sca¡ of the source slorage device to ideDtif¡ aod thus lhe Dumber of sctors per clùster (SPC) ånd the cluster bas flle sys{m locate the physical address of, sectors coDtainilg (CB), for each partition or volume, if such iDformation is not inforBation. lfl pa¡tiqrlar, at steP 72, the comPuter reads the andPartilion seclors or other master palition sector âûd boot seclols, wbrcb are at pro- 55 availâble from the bootsectors, file system data slruc¡tres. Furthermore, the dircclories are each sector is determiDed sector addresses. The data iD checked to determiæ wbelher tbey are Part of tbe cuûeût checked to determiûe whether it úatches fhe sjgnatùres aûd directory o! folde¡ structù¡e (i.e tbat they aro tot deleted or paltems ûocessaly for valid sectors using data "flters " data lcft from prior device fo¡måts). The chaûces of recovering a data If, the iûformafioû appears valid, it is stored iD on whether cluster allocalio[ structurc set up itr fhe wo¡kiDg úeúory (sÌrch as maitr 60 each file is åssessed based ilformafion is available å¡rd aPPea¡s valid. All flles and 14 in FIG. 1) of the CPU, iD wbicb infolmatiot memory dùe¡lorios' hich can't be placed in tbe directory Fee åre collected by the scan will be stor-d for subsequetrf aúalysis [sted separately io a "lost aDd foùtd " A "fl1te/' is a predeûned sig¡atu¡e aod/o¡ alata pattem, At step 8E, the direclory tree ¿nd "1ost and fou¡d" åre which data in the sector is compÀ¡ed. Briefly, sigagainst ¡ature matching i¡volves lookiog for predefned byte valùes 65 disDlaved to the ùser in order to receive a user's selection of th;flÉs to bc rocovered. At $ep 90, the flles ale rccovered iD ccrtaio offsels or locatioús (eilher absolùte or relative to by identifying aúd copying the clusrers in which the Ab is withiD a seclo¡, or wifhiD a cluster of other byte values) pals. At step 74 the compùler gels lhe nexf sector' Ii as indicated by dcision step 76, tbo sector is ideDtifred, throùgh sigEature måtchiûg, to be an extended Paftitioû, ils coDtenls aDd physical address (logical block address or cyli¡der, head, sector address) ¿¡e stored, at steP 7E, it the data strucfures set up iD the workiÂg memory. If the sctor is Dot a Da¡titioD sector, its coDtenls aro mafched to dala ûlters to detofmiDe if it is a frle attribì¡te. As iDdicated by decisioû step 80, if the sector is part of a frle åttributc. the âddress åDd conteDt of lhe ñlo attribute are storod io the datå structùr io the working meúory of the compùtef at step 82. lt should be Doted that, since úost cnpied. us 9 6,773,291.81. 10 sl¡ucfure kept in workiog úemory at step 110. The process the! ¡etums 10 the steps of FIG. 5. Hos/ever, if âsked step 104 the dat¡ paltem ma¡ches that of a sef directory the address of the said directory is stored 5 If, at decisioD to step 114, two sub-directories have fìotbeeD foùDd witbin the ssme palitioû, a¡d other words, lhis is the ûrst sr¡b-directory found witbi¡ the partitio!, the process Ioops båck fo step l(N wbile it rcads tbe ûext sctor at step yoù 116. However, if two sub-directories have beo¡ found 1n -- \r¡ithin the same partition at decisíon step up 114, tbo oùmber of seclors per cluster is calcùlated ât step 118 based oú tbe stafting seclors of the two srb di¡ectories. Having this info¡oatiotr better e¡ablgs, and speeds ùp, rcognifiot of directo¡ie.s. 1< -- stored to l¡e destioåtroD drive in a maû¡er wbich preseÍes the directory hierarchy, o¡ as a coûìpressed or ùncoEpressed flat files. To the exlent cluster allocation informafion is tot avalable to cbaiú clusters of the selected flles together, the process caD assume tbat tbe clusters iD each flle are sequential if the disk has beeD recenlly defÍågmeDted, or, if tbe disk is fraguented, automatically group remaioing clì¡slers, which have Dof beet associated \'¡ith a frle, directory tlo system data stnrcture or other file att¡ibute, by dât¡ q?e coEmencing with lhe smallest Ales aDd assùEi¡g a sequential allocation of clusters. Altemately, or i¡ additioo therefo, the compute¡ process caD allow use¡ iûtervetrtioD by visually compâriûg i! adjaceDt wi¡dows o! a display the coûteDls of aD e¡d of the last kûou'o clùster iD a flle to the co eDts at tbe begi¡niûg of ore of the reEaini¡g utassociåted clùsters, been picked by a user from a listiDg of åvailable clusters iD aDotber whdow arraûged by locatioD aúd clusle¡ tt?e. Onco all flles âre c¡pie4 the process e¡ds. However, the scanning, aoalysis and fllc ¡ccovery sleps caú, if dosi¡ed, be repeated, or the eDlire procoss Tbe follo\Á¡i¡g descriptiotr of cerlaiû details of the forgoreference FAT frle iúg process ar¡d apparatus is oade systeñs $rbstantially as ùsed by tbe DOS, lvINDowS 3 x and MNDOWS 95 operatiDg systens, on a disk drivo. Rferriûg 1o FIG. 5, the portioD of fb scånDiDg process followillg ¡eading of the rEaster parlitioo sector åod boot sector of a storagc dovice, which portioo is geDe¡ally ideDfified by steps 74 to 82 ol FIG, 4, slarts by lookiDg, ås indicated by step 92, for the root directory of the ñrst partition or vohrme on the storage device based on when should be locatd. Furtherúore, eåch slot ol eotry in the rool dùeclory is mafched ågåinst a dalapartem frlter,which looks for perúittod byte values in certain, predoôned Positions or frelds wilhin lhe eDtry. For exanple, the root directory will have in the oame field of one of ils ettries a volume label FurthorEo¡e, the process cbecks gacb entry for permitted b''tg valùes iû the frle Dame and file extensio¡ ûelds, as well as io date and time stamp frelds for creatioû and låsl úodiñcatioo. If the root dùectory is foÌ¡Dd, as i¡dicatel by decisioû s¡ep 94, its address aDd contoûts åre stored iû woÍHDg r¡emory at step 96. However, if the datå in the sectoß do ûot Eatch that expected for a root directory it is matched agaiúst ûlters for ì¡ser directories, which åre also referred to horoi¡ as sub{irectories, at decision steP 9E These filte¡s are similar 1o the ones used for the root di¡ectory. However, iû lbc FAT frle systeú, the sig¡atuo bytes of "." and ".." a¡e chocked for it tbg Dames ûelds of tho 6rst two ertdes. If tbe sector is Dot pa't of a sùbdirectory, th Dext sector is fetched or read, and the process repeats looking fo! the root di¡eclory. If a sr¡b-directory is The followiug formulas may be ùsed to caìculate the sectoß per cluste¡ (SPC) ånd the clùster base (CB): reslarted i¡ zo yç¿Þ-Cd,,) cB-0.84-d+sectoße)-(2xsPc) 9PC>(LBA4Þ-LBAa (1) (2\ ?5 it "." eúfry iD the directory Doted in the subscriPl lf tbc directo¡igs are adjaceût to oûe aDofher aDd small, fhû tbo LBA of each directory could be simply subtracfed 10 frnd the SPC, siDce directo¡ics are allocated at besl oDe cluslor in the FAT ûle sysfem. In formÌ a (2), Soctors-, is fhe number of seclors iû the rool directory, aDd LBA-, the logical block 30 the root directotf If the root address of the ñrst sector directory is not found, then CB can be calcÌrlated using the iD lhe For forúulâ (1), the "LBA' refets lo the logical block address of tbe begi iing sector of the particular dire.tory Doled i¡ subscript, aûd C is the staÍing cluster address foù¡d iÍ followi¡g forûuta: ¡s cB-(ca,/LB{ú,2-c¿¡axtB^aàl(ca^-caà (3) At decision step 120, the Procss determines whether the calculated SPC isvalid.Iú order for the SPC 1o be valid, the ¡ì.Imber resultirg from the câlcì¡lation must be a power of 2. 40 If üe calculated SPC is ûo! valid at step 120, the process of loops back to sþp 116, where the úext sector is read aDd the process is repeated for that seclor beginning with step 104. Ät step 122, the procoss continues, if the calculalod SPC is valid, to sea¡ch, sector by sector, for othe¡ sub-directorigs 45 aDd partitions, using the câlculaled valìre for the SPC for data pattorn mâtchiûg, in a fûa!ûer simila¡ to tbat of steps 106 and 108. At step 124, if lbo data pattem does not rnatch that of ô direc¡ory if is coEpâred to tbo data pattem ûlter for a pafitiotr åt step 126. If a partition is found, the! it is stored 50 at step 128 stored in the process retums to that of FIG. 5 If tbe secto¡ does lol h¿ve a data paltem úâtching that of a found, however, it is assuúed lhat the root directory is pa¡titio¡ sec¡or, the processes reads tbe Dext sector at steP coÍupted or missiDg, as sectors iri the "data area" or ùse¡ 130, provided lbat the eDd of the disk has not beeD reached, area are beiog read. T'l¡e Procoss then ptoceeds to FlG. 6. the data as iDdicaled by decision step 132. Howover, Rferring to FIG. 6, âs indicatd by decisio! block 1(D, a process of looki¡g for additio¡al sub-direclories on the 55 pattem malches rhat of a directory at steP 124 lhe åddress and to i¡formatio! in the diroctory is slo¡ed itr the data srorage device is perforúed on sector-by-seclor basis. The slructure ofthe workiúg memory. If the sector is nol the l¿st search assrmes that tbe ûÌrmber of sectors Per clùster arg the on tbe dislq as iDdicâled bydecision step 132, the next scclor minimum allowed by fbc ôle system. As by dcision slep is a read ât step 130, aDd lhe process toops back to decision 104 the processed reads lhe data pallero aDd comparos il ag¿insl a data pattem expected for a direclory iD a rúaúúer 60 step 124. As iodicated by decision step 132, if the end oftbe desk hås beeû reached, lie process eods. such ås fhat discùssed in connection ¡À'ith FlG. 4. If the data Refeni-og now lo FIG. 7, as indicaled by block 136, a paltem does Dol match that of a dirgclory Process, il is valùe for the nuúber of sectors per clustor (SPC) aDd the ¿hecked agairsl that of å pa¡lilio¡ sector al step 104 If the clusler base (CB) a¡e calculated, using the formùlå (1) and dala pattem is r¡ot a match for that of the Partitl'on sector, process reads tbc oext seclor 108. However, if, at 65 either formula (2) or (3), sel forth above, with the LBA of theD the each directory fou¡d iD the sca¡ as LBA¿,.,r. The process decision step 106, the data Pattcrn matches fhat of the begins with the fißt dire4¡ory, âs indicated in step 136. The oalition sector the address of the sector is s¡ored in the dâtâ if us 11. 6,773,291. Bl t2 LBA of tìe æxt directory is ùsed i¡ a! iúitial calculatioD of SPC aod CB. At decision step 13E, if tho SPC aod CB resulti¡g from the calculation are valid as LBAd,.,2 ûurobers-{be SPC musl be a power of 2, for exaEple, aod the LBA of the clüster bas must be locåted sornewhero betwee¡ tbo gúd of bool direcfor aûd the end of tbe root dLeclory-the resùlt is stored at step 140 aDd, as itdicated directory at slep 144 for coropa¡ison at step Íì6 so lo¡g as thore are olher directories for which calculatioDs are to be made. However, if the SPC aúd CB are Dot valid, tbe process cbecks to see if fhere is åoother directory åvåilable for comparisoo at step 146. If ole is Dot av¿ilable, the iDvâlid result is stored at step 140. If there is one available, it is selected al step 148 and SPC and cB recornpùted The process theû loops back to step 138, for validatio¡. Oûce aD SPC aûd CB is calcùlated for cach directory the process builds diroctory ¡td AIe tables at step 150 and partitioû sectors at step 152, bolh of ¡À'hich are sfoted iD the workiog meoory of the computer. To robuild the hierarcbiby decision step 142, the process loops bâck to get ltì Dext 5 If tbe FAT is valid, as iûdic¿ted by decisioD step 170, the process begins with the ûrst selected flle, as indica¡ed by step 172. If the selected frle's cluster chÀiD in the FAtr table is valid, as indicated by decisioD step 174, the selected file È copied fo a pre^selected destiúâtio¡ drive at step 174. The p¡ocss theD returns to decisioD step 174 aûd rgpeals with lhe Dext selecled file, as i¡dicâted by step 178, uotil the lasl selecled frle is copied, as i¡dicated by decisio¡ steP 180. If the FAT table is iDvålid, as iúdicated by decisioD step 10 170, or if the sele-cfed ûle's clusler cbain is invalid, as iDdicated by decision step 174, theD the process P¡oceeds safe 10 åssume lbat all o[ the selected frle's clusters âre sequentially allocated, fhen fhe 15 process, at decision step 184, calcùlales fho number of chains recuired. based oû fhe size of the ñle fou¡d in the d eclory ¿¡ry for lh frle. Using tho stårting chster úì¡Eber from the directo¡y eûtry the calcùlated rmber of clùsters are tbeD copied to lho pre,selected destiülioD drive at stgp 20 186. Afte¡ copyiDg, the proc-css gels the next frl åt steP 178 if more flles remain, aûd loops back to decjsion steP 174. cal dùectory slructure, the directories are threaded toggtber Otberwise, the procss ends. usiDg tbe ert¡ies iD the directory. Each of tbe diroctories If the disk hås not be¿n receDtly defragúented, and the the structure must have the same SPC ar¡d CB. However, old FAT table cannol be used 1o chaiû toggthe¡ the clusters of a direclo¡ies left after a rforroattitg may have difereût SPC and CB valÌres. Thes SPC a¡d CB values are used to 25 frle, a¡otber aì¡tomated process illuslratod it FIG. 9 ûay be used. Refer¡ing tow to FIG. 9, illùstrated is âû automated ca.lculate the LBAS of the clusters makiûg up each of the process for groùpi¡g clusters based, it part, oo the type of files in tho di¡ectories. Di¡ectories which do Eot flt illto the data stored i¡ tbe clusters aDd aD assumptioD thât the cluslers structu¡e are placed iû å lost aDd found category. These are iD tbe súallest ûles will be seqùeûtial, eveD iD ¡elatively plâced in a "lost aDd foùnd" list. Begi¡niûg at step 19, a gåch of is performed for each found director¡ and e¡cb frle 30 fragme¡ted d¡ives. The process classifres the data in loop the clùsters ir one of a predeÂned nuúber of classes, for de¡ermiDe listed iD each found directory. Tbis loop checks l¡c exaúple: PCtexl, Unix texl,Don lext, or C/C++ source code, whether lbe clusler chain of lbe directory or Âle it th FAT and compressed da!a. These classifrcations cåD be úâde vatid, assuroiûg that the FAI or its copy is fouûd. is based on the distribution of symbols within th clusler, âÍd The FAI can be located using signÂhfe and data pÂttern matchiúg. The begiúflingofeach FAT always has tho u¡ique 35 theû compariúg the dislributio¡s to frgures of merit At step 188, the process coúpiles a list of clusters wbich have Dot sigDature bytes of FFF8, if it is for â haJd drive, or FFo, been accounted for âs, for exâmple, throì¡gh a valid FAI it is for a floppy. Fùrthemore, lhe FAI alwals begins at a table entry or part of a direclory, The smallest of the ùsr's specifrc pbysical address, depeDding on whelher it is a selected ûles is chosc! ¡¡ilially, at slop 190, and tho m¡mber FAT-16 (C¡,s=0,1,2) or FAT-32 (C,H,S=0,2,1) tl's size, however, is not ktowû, because iL depoûds iD pùl on the 40 of clùsteß requi¡od to hold lbe ôle, based oD its size as recorded i¡ its directory entry, is calcl¡lated. Ils sta¡tiDg or úuEber of clùsters on the disk. Howeve¡, the root di¡eclory, bas clusler data typ is compared sqùentially with each of if its locâlion is know¡, defrnes the upper bour¡dary of the the available clusters, slartiDg with the ûext highe¡ ote to tbe copy of the FAT. The FAI will also bavo nume¡ous file's stafi¡g cluster, If, ¿t step 194, there is a data type sequefices of $rccessive Dumbers, siúce most ûles afe stored in sequences of clus{rs. Data pattem matching techniqùes 45 malch, the add¡ess ofthe cluster is recorded ât step 196, The process the¡ gels the next Ìrnaccouûted fot cluster at stP 198 car be ùsd to assign a 6gure of merit to r"hat is believed to ¿nd loops back to step 194, ùnlil the låst âvailable clùster be the FAT in order to judge whethcr it is valid or c-orrupt. with the cor¡ect dåta type is found, as indicated by decisio! As indicated by decisiot step 156, if a valid SPC aDd CB step 200, or ùntil the end of the pafitioD is reacbed, as are not calculated for a flle's di¡ectory, it is indicated l,o the user, âs step 158, as not ükely to be recoverable. If, the 50 iodicated by step 202. O¡ce the lasl clùster of ûle is matched, the ûl is copie-d directory has valid SPC ald CB values, tbe¡ the FÂT is at step 204 to the presolected destination drive Oûc the file checked at decisiot stcp 160 to see if tbe fl1e's cluster chai¡ is either copied or the eûd of the partitioú is reached v¡ilhoù t or "eDtry' is mmplete. Tbis chaiD is stored iD the data finding eúoùgh clusters to make ùp the ûle, the process looPs struc¡re seh.rp itr the worki¡g memory. If it is complete, tbe 55 back ¡o step 192, provided tbere åre additio¡al, ùser-selected flle is itrdicâted at step 162 ¡o likely be recoverâble. If frles, as idic¿ted by decisioD step 206. ID the loop, the lext ûot, the frle is iDdicated at step 164 as possibly bei¡g biggesl flle witb missi¡g cluster iDforúalion is selected at recoverable. As iûdicâÎed by dcisioD steP 166, lbe Process step 208 for ¡oatchiDg. ThÈ process rePeals, eåch tiûìe loops back to step 154 until all of lhe 6les havc beeD getting the text bigger user-selected file, u¡til all have gooe cafegoiTþd. tbrough the recovery process FIGS.8, 9 and 10 illùstrate diffo.eDt techniques for The processes described in FIGS. 5-9 are described itr recovering frles. Recovering a ûle requires the knowledge of speciôc rcference !o the EAÍ ûlg systems However, thes its sta¡tiDg cluster, which can be found f¡om dirccfory enlry processes, or their tech¡iqùes or methods, ca¡ be applied to fo¡ lhe frle, the chain of lhe clusters making up the file, atd NTFS and other frle systems,lbe Primary differences involvthe SPC ¿nd CB to calculate the LBA of each clüster' iog the sigDahrre aúd data patter¡ ûlters that are applied Refenj¡g to FlC. 8. ar âulomatic frle rccovery Procss is during scaûni¡g of the slorage device. For ex¿mPle, duri¡g illustråled. Files fo¡ recovery arc selected by a ùser, at step scanning of a slorâge device storing N'ITS files, tbe MFT 16E, from list of frles displayed on lhe compute¡'s monilor defragmoDfod, such thal decisioD step 182. If the disk il is bâs been receûtly it if ilis us 13 6,773,291. B1 t4 available, the f.rst fle storage device being divided i¡r å pluraìity of itdividually addressabl seclors storitg blocks of data, the method coúprising the steps of reåding the first flle slorage device on a sector-by-soctor basisi stored by the frle systgú i¡ data skuctùres by coû¡paring dâta lhereiú to predeterúiûe.d dåtå pattems; reco¡structi¡g the directory structure, at least iD Pâ¡t, ftoro lhe ideûtiûed frle attribute iDformstion; a¡d copying a ûle io fbe recoDsl¡ucted direclory structure to a seco¡d ûle storåge devicc. 2. A Eelhod for recoveriDg files lbat are stored on a mass dala stor¿ge device of a computing system and that are organized inm a hiorarchic¿l file stotage system used by an caû be found by lookiûg for the Dìrmbe¡ correspooditrg to the word "FILE", which is always foùtd iD tho MFT. IDdex bùfrers a¡e located by lookiog for the word "INDX'. By usiûg LCN aûd actuålLBA, SPC atd CB can be deter!ûiûed usiûg t¡r,o idex buffeß i¡ the saúe way as the sctors per 5 cluster is determited usiúg directories or folders iû the FAT frle systeDs. A coûuptd or missing MFI aod Palial MFI is similår to baving a missiûg root directory iD tbe FAT ûle systems. Dùectories caû be tbaeaded, to the extett possible, usiDg the conte¡ts of the index buffors, and the tbreaded 10 directory struch.rres put iúlo the "lost aDd fouúd" category Naúes of tbe user ûles åre part of Ú¡e iûdexs in the index bufers. ReferriDg Dow to FIG. 10, as an âltematg to using aulo_ matic methods of chainiÍg together clùsters whgn clusler 15 allocatioû iDformalio¡ is missing from the FAT, the iùùstråted process of FIG. 10 aids tbe use¡ iû "rÂaúually" chainiDg togelher clùstels. Begi¡ni¡g witb tbe firsl ùserseleclod frle, âs iodicated by step 210, the Dumber of the stali¡g clusler is displayed io a frrsl window o¡ the screen 20 of a Dorifor or other usor iDtqrface of th computer, aEd the eúd of its co¡torts is displayed in a second wiúdow of the ùsr interface. This slep is indicated by block 212. At step 214 lhere is displayed in a fourtb window a list of available clùsters. ID the third wiDdow, as indicaled by steP 216, there 2s is displayed the begioaing of â¡ available clì¡ster selectd by the user for visìral coúparison. The second and third wi¡_ dows are iD close, spatial proxiroily to facililåle coúparisoD If the user decides ât de.isio! step 21E that the two clusfer's "match", that is belong together, the user so indicates aûd the 30 compùter ¡ecords the add¡ess of the matched cluster and displays il itr the fùsl wiDdow, as indicêted by step 222. At step 224, the coúpüter theD displays the eûd of the jì¡slûaûched cluster in the sec¡nd window. If user does not thitk that there is a visùal úatch, the user may select atother of 35 the available clùsters for cotparisoD at decisioû steP 220 If there a¡e no more cluste¡s available for comparison, the ùser caD either go back to review the ûles (which step is Dot hdicated or the drav¡iûgs), or the user úay Proceed at stgp ideDtifyi¡g sctors cotrtaiûiûg ûle åttribute inforEation operating systerû, the mass data slorage device beiDg divided into a plurality of iDdividually åddrssable blocks, called herein sectors, for storing blocks of data, eacb sector baviDg aû address, the metbod comprisiûgl reading from the úass data storâge device on a sectorby-sector bas¡s; idenfiryir¡g seclors contaiDiDg ûle systgm data slruclures by c¡ropa¡itg dala therei¡ to predelerúiûed dafa pattems and/or signåtures foutd in dåta slrucfures of the flle slctem; reådiEg tbe iûformatioû from the ideûtiôed soctors; aDd reco¡structiûg at least part of the hierarcbical û1e s¡orage system basod on information read f¡om the identifled sectors, 3. The method of claim 2 fu¡ther coEp¡isi¡g coPyiEg a filo listed wifbio the at least partly rec-onstructed hiera¡cbicålflIe sl¡ucfure lo a second mass data slorage device 4. The úethod of claiû 2 wherei! storage oú the mass data storage device is allocated for stori¡g frlos oD a clì¡slorby-clùsler basis, a cluste¡ bging coúprised of oûe or a plurality of sectors, 5. The method of claim 4 furlbor comPrising determiDitg a nÌrEtrer of sectors pe¡ clùster and a bas clùsler ôddress 226 lo wile the clusters which have boen malched to a 40 when this information is nof âvailable by reading the fil Dreselected destinalioD drive. If lhere are mo¡e selected frles system data structures. ãt sep 228, the compuler reÆeives the user's nexl selection 6, The method ofclsim 5wbcroin determiúitg the number a! stop 230 and loops back to step 212 to repoat the Process. of seclors pe¡ cluster iûcludes: Refer¡iDg now FIG. 11, a layout of a screeû interfåce for identifyiog by an address for a frsl soctor of each of the the process of FIG. 10 is illùstrated. A ûtst .¡/indow 232 a5 two frle s'ßtem dåta structures, each of tbo file syslem displays the cluster Dumber of reatotly selected clusteF in a data slruc!ùres iDcludiûg iEformatioû for determioing second '¡¡indow 234. The sccood wiDdow displåys tbe conls slarling cluster oumber; teûß ofthe end of a last clusle¡ that has bee¡ groupod as parl readirg the iDforúatioD for deterúiniDg the starting clusof a ûle preselected by a user, A foùrth ¡ indow ã8 disPlays ler nùmber foÌ each of lhe directo¡ies; and a map of available clustels by dâ1â type for selectioû by the 50 coúparing the starling clùste¡ ûumbers and thg address of user Tbe tbird wi¡dow 236 displays tho begiDning of lhe the ûrsl sectors of the flle system dat¿ s[¡uchrres to contenls a¡ available cluster chosen by the ùser for comdetermiDe the sectors per cluster. wiDdows displåy bolh tbe pa¡isoD. The second aûd tbùd 7. The motbod of clairo 5 wherein determining the tuûber values slored iD the Êle oo ooe side, aod the symbols or of secto¡s per clùsfer js calculated fo¡ each di¡ectory located characteÉ eûcoded by those valìres basd o¡ the data tyPe. 55 ir fle system, aDd recoEstructing the hie¡arcbical frle storage to ote o¡ The inve¡tion has be¿t dgscribed in refg¡ence sysleú inclùdes dete¡úi-ûitrg a hiorarchical ûle structure more exemplaty erDbodimeDts. ModficåtioDs, sùbstitùtio¡s usi¡g ôle altdbr¡te iDforúation froE those ûle system data rearrangemeDts of thes embodiúgols caD be rûade and slructures haviDg tåe saûe sectors pet clùster and âddress wilhout depafiûg f¡om the scope of the iûve¡tiot set fo¡th cluster sctor ir lh appe¡ded claims, The foregoitg detailed descriPtioú 60 for8úe fißt@othod of the base 5, whe¡eio determiniDg the of claim . The is not idended to liml the scope of the iDverltion ûo the Dùûber of sectors per clùster inclùdes: Då¡tiq¡lar mbodimeDls set forlh thereiû. identiffiog an address for a ârst sector stori¡g å ûrst wtat is claiEed is: direc¡ory aDd aD âddress for secood sctor storing a for recovering frles, whe¡ein the files a¡e 1. A method - orgaúized iû a hierarchical directory sΡucture of a¡ oPeratiDg systeú's frle systen, from a frrsl sforagc device of a 65 compùter when critical file system infomalion is nol. ecoDd directory; readiog from the frrst dirctory ao å sta¡tiûg clÙster nùûber for tbe first directory and from the second us 15 6,173,291 B1 t6 18. Tbe method of claiú 2 whereiD the ûle system dåta structurs iDclude a boot record. 19. The method of claiú 2 wherei¡, the frle systm data structures incftde a Palition sec¡or; the melhod includes ideúifyiDg each pa¡dtiot seclor; aDd reconslructiDg the hierarcbicâl frle storage systm iûcludes reconstructiûg a hiorarchical ûle st¡ucruro for each partitioú identifred by a pa¡tilion sector. directory a startiDg cluste¡ ¡ùmber for the secoDd directory; aDd calculati¡g the sectors per clusler by dividi¡g lhe differetrce of fhe addresss of lhe frrst aDd secood dirgctoúes by the differeoce of the sta.rling clustgr ûùmbers of the 5 deterûiûi¡g ttie clùsler båse addrcss is calculåted usitg lbc followhg fonoula, aDd second directory. 9. The method of claim 5 wherein first ca-GiBAd+sectosd>(2xsPc) whereiû CB is tho cluster base address, LBA-, is aû address of the flrst sec¡or of the ¡oot dùeÆtorf Sctors* is a nùúber of seclo¡s iû the root dircclory âúd 10 10. Tt¡e method of clairo 5 whreiE determiûiûg the SPC is the sectors pe¡ cluster. 15 20. The úothod of claim 2 wbo¡oi¡ ideDtiîfi¡g seÆtors coûtaiûirg 6le systerû data st¡uctures iûcludes identilying a frle systero data st¡ucture coûtaiûitg cluster allocatioú inforúafioû for files, aDd wherein the method further iDclùdes selecting a ûle to bo rcovered froú the at leâst parti¿lly recoDstructed hierarchical ñle structure, determiûhg from lhg clùs¡er allocatioû i¡forEation wha( clusters coDtâin datô for lhe sele.led ûle, and copyi¡g the selecte-d frle. 21. Th method ofclâim 20wherein fbe clìrster allocation fuformatioû is stored in a Filo Allocation Table cluster base add¡ess itrclùdes: ideûtifyiDg a ûrst aûd a secûnd direclory; determiniDg a staliúg cluster nuûber for the flrst ¿nd the 22. Tbe Eethod ofclai¡n 20 $¡herei¡ tbe clùster allocatioú 20 second dìreclory; information is stored in a Master File Table. calculatiDg the addross of the bas cluster wilh the folæ, A coúpuler readablg Eediùm storiûg inslructio¡s for lowiog formula, cåùsing a coúputer to pefform a process, wheD those iDslrùctions are read by fhe coEpùter, for rgcoveritrg []s ãnd cB-(c¿¡ÁxLB{¿¡a-cú¿xLa^ú.)l(c¿nfc¿¡à 25 wberein CB is lbg cluster base address, C¿,il is a clustet ûle slorage syslem usd by ao operatiûg system ar¡d tbe mass nümberof the frrsldirec¡ory, C/i,z is the cluster nùmber data siorage dovice is divided iDto a plurality ofindividualy of tbo secoDd directory, LBAai.r is aû address of the add¡essable blocks, câlled herein sectors, for storing blocks frrsl seclor of lhe frÉl dircctory aod LBA/,,a is aD ^^ of data, each sgctor baving a¡ address; the process coûrprisaddress for lbe ûrsl sector of lhe second diroctory' ing: 11. The Eethod of claim 4 furtber comPrisingl reading from the mass data storag dovice oD a se,clorreciviûg a selection of å ôle to be recovergd from the al by-scto¡ basis; least partially reconstructed hierarchical ûle st¡uctrùe; identifying sectors cont¿ining frle system datâ struclures displayi¡g in a ûrsl wi¡dow on a ùser i¡lerface lo.lbe Js by compadûg dåÎå therein to p¡edeterúioed data paF compuliog syslem an eûd porlioD of data from a las¡ fems aDd/or sigûatures fouod iû data structures of lhe cluster storitg datå of the selected frle; aûd flle system; displayiDg iD a second wiDdow oû the user iDterface to tbe readiûg the inforEatiot from the ideûtified secto¡s; atd computing system a beginnitg portioD ftom â next recoDstructing at least part of the hierârchicål flle storage availablg cluster ûot ye! associate.d witb â 40 system based or¡ itformalio! read ftom the ideDlifred dis?laying 12. Tbo Eethod of claiû 11 turlher comprÈiDg secloÃi. iû a third window a list of clusters whicb have trot bee! 24. The computer ¡eadable medium of claim 23, wherein associatod with a Êle a¡d diçlayiog in a fourth witdow a list the process furlher comprises copying a file listed s¡ithiD the of clusteß whicb have beet âssociated with the solected frle at leåst parlly rocoDstrucled hiorarchical frlo structùre to a 13. The Eelbod of claiÐ 4 fulber 4s secoûd mass data storage device. receiqi¡g a plu¡ålily of sclcclioDs for files to be recovered 25. The computer roadable Í¡ediìrm of clairû 23, whereitr froú the at leasl pafially reconslructed bierå¡chical frl storage oD the mass data sloråge devic¿ is alloc¿ted fo¡ structu¡ei a¡d storiûg ûles oD a cluster-by-clusler basis, a cluster being for each file, stali¡g with the súallest file âûd conlinuing comprised of a pluralily of sctoß. in order to the lãrgest flle, sequeotially slri¡gi¡g 50 26, The compùter ¡eådâble úediùm of claim 25, wherein together clusters sto¡ing colteDt of the sarDe t)?e as fhe process furtber comprisos determining a number of a koowo startiûg clùsler uDlil tbg that stored sectors per clùsler atd a cluster base adil¡ess. sequence of clusters store ån åmouf¡f of data equal to 27. The coúputer readable úediun of claim 26, wherein the knowo size of the file. determioiûg the number of sectors per clùsler includesl 14. Tbe metbod of claiE 2 wberoin the Ele system datâ 55 identiffing by an address fo¡ a frrst secfor of each of tbe strucfures inclùde at least olg sùb-directory tho subtwo frle system d¿la structures, each of the âle system dùectory havi¡g a ñ¡sl entry haviûg aû entry storing a ôrst data strùctùres hcludiûg i¡formation fo¡ determiniûg predete¡rÂi!9d data patterú and a stâfing cluster Dumber for its starting cluster oumber; a secoûd entry storiDg a secood the sub-djrectory, atrd readiDg the i¡formation for determiDiDg the startiDg cluspredetermi¡ed data palterD âod a stafli¡g cluster Dumber for ó0 ler nrmber for cacb of lh

Disclaimer: Justia Dockets & Filings provides public litigation records from the federal appellate and district courts. These filings and docket sheets should not be considered findings of fact or liability, nor do they necessarily reflect the view of Justia.


Why Is My Information Online?