Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Work in Progress tool to safely interact with data from TiVo hard drives.

NotificationsYou must be signed in to change notification settings

keplersj/ovit

Repository files navigation

The oViT project represents the center point for an attempt at reverse engineering 1st Generation TiVo storage, using modern techniques and technologies. oViT's end goal is to successfully extract recorded programs from an early-2000's era TiVo hard drive, and play the extracted files back.

Because this project is currently more research project and less polished software, this README will contain all of the discovered and known information about the 1st Generation TiVo hard drive.

The Hard Drive

oViT is being developed from the data from aSony SAT T-60 (Series 1) TiVo. An ISO created usingdd is being used for reverse engineering, for convenience and to avoid undue labor on the 20 year old mechanical drive.

Drive Structure and Content

The cloned ISO is 40 Gigabytes large (matching the original hard drive) and contains the following data from the TiVo.

Apple Partition Map

The hard drive was formatted with an Apple Partition Map in BigEndian format. Runningcargo run -p ovit-tools -- partitions tivo_hdd.iso shows the following about thepartition map at the start of the cloned TiVo drive:

Partition TotalStarting SectorSector SizeNameTypeStarting Data SectorData SectorsStatus
13163AppleApple_partition_map0630x000033
13430093494096Bootstrap 1Image040960x000033
13430134454096Kernel 1Image040960x000033
1343017541262144Root 1Ext202621440x000033
13432796854096Bootstrap 2Image040960x000033
13432837814096Kernel 2Image040960x000033
1343287877262144Root 2Ext202621440x000033
1343550021131072Linux swapSwap01310720x000033
1343681093262144/varExt202621440x000033
13439432371048576MFS application regionMFS010485760x000033
134604038932158361MFS media regionMFS0321583610x000133
13449918131048576MFS application region 2MFS010485760x000033
136443009285MFS media region 2MFS0430092850x000133

Media File System

At the time of writing oViT is able to serialize the following MFS data types:

  • MFS Volume Header
  • MFS Zones and Zone Maps
  • MFS INode
    • Directories

Volume Header

Runningcargo run -p ovit-tools -- header /run/media/kepler/External/tivo_hdd.iso shows the following information from the drive's volume header:

VariableValue
State0
Checksum2053975265
Root FSID1
First Partition Size1024
Partition List/dev/hda10 /dev/hda11 /dev/hda12 /dev/hda13
Total Sectors77263872
Zonemap Sector1121
Zonemap Backup Sector1048574
Zonemap Partition Size524288
Next FSID12697810

Zones

Runningcargo run -p ovit-tools -- zones tivo_hdd.iso shows the following about the different zones of the MFS partitions on the drive:

SectorBackup SectorZonemap SizeNext Zonemap PointerBackup Next Zonemap PointerNext Zonemap SizeNext Zonemap Partition SizeNext Zonemap Min. AllocationLogstampTypeChecksumFirst SectorLast SectorSizeMin. AllocationsFree SpaceBitmap Number
11211048574152541010485659321576962048101141407INode88133556211225254095242885242885242881
525410104856595254191048531345230728104363088Media2999402420104857633206271321576962048112230415
52541910485313433206272342548471524288524288104363743Application39073861565254531048524523072830476017

INodes

Runningcargo run -p ovit-tools -- inodes tivo_hdd.iso -c 10 shows the first 10 INodes on the disk, as follows:

FSIDReference CountBoot CyclesBoot SecondsINodeSizeBlock SizeBlocks UsedLast ModifiedTypeZoneChecksumFlagsNumber of Blocks
002019628419008002011-11-01 09:31:13 UTCDb287470171110737418240
1265495322019911142712624002011-11-03 08:58:51 UTCDb267175710001
001992881327328002011-08-10 12:52:35 UTCDb22443635310737418240
002003203960638002011-08-28 02:44:29 UTCDb2139053462010737418240
002003204396048002011-08-28 02:53:28 UTCDb2375129782110737418240
002015323367958002011-10-02 10:59:31 UTCDb2318616185810737418240
002016695176368002011-10-12 09:32:39 UTCDb2339171474410737418240
001956656230678002011-03-08 09:48:00 UTCDb2176081481710737418240
00196227346458212813107221282011-07-04 13:20:11 UTCStream1359852512800
00199588515698002011-07-23 00:31:46 UTCDb2328951078210737418240

Files

Below are examples of the first two files successfully viewed from the TiVo Media Filesystem using the oViT FUSE Driver:

/Server/A0003fc81:3:20:0:

PNG image at /Server/A0003fc81:3:20:0

/Server/AR0000a96b:4:0:0.:

PNG image at /Server/AR0000a96b:4:0:0


oViT Information

oViT is implemented using Rust, with the goal of creating robust and memory-safe utilities that'll last for years to come. TiVo became a cultural touchstone in the early 2000's. Due to its cultural significance alone it should be possible to archive content from TiVo hard drives and preserve them. The tapes of previous generations are easily accessible and preservable today, the recordings from the TiVo era should be too.

oViT is build using the following libraries:

  • nom - for parsing Apple Partition Map data and Media File System data
  • clap - for creating oViT's command line interfaces
  • chrono - for parsing time and date information present in the Media File System

See Also

License

Copyright 2019-2020Kepler Sticka-Jones. All Rights Reserved.

Note: Due to the current very unpolished state of the project, I am retaining all rights. In the future I hope to license the code under MIT, when the project becomes more polished and production ready.

About

Work in Progress tool to safely interact with data from TiVo hard drives.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages


[8]ページ先頭

©2009-2025 Movatter.jp