filesystems 101 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689
  1. #------------------------------------------------------------------------------
  2. # $File: filesystems,v 1.150 2022/07/04 16:40:33 christos Exp $
  3. # filesystems: file(1) magic for different filesystems
  4. #
  5. 0 name partid
  6. >0 ubyte 0x00 Unused
  7. >0 ubyte 0x01 12-bit FAT
  8. >0 ubyte 0x02 XENIX /
  9. >0 ubyte 0x03 XENIX /usr
  10. >0 ubyte 0x04 16-bit FAT, less than 32M
  11. >0 ubyte 0x05 extended partition
  12. >0 ubyte 0x06 16-bit FAT, more than 32M
  13. >0 ubyte 0x07 OS/2 HPFS, NTFS, QNX2, Adv. UNIX
  14. >0 ubyte 0x08 AIX or os, or etc.
  15. >0 ubyte 0x09 AIX boot partition or Coherent
  16. >0 ubyte 0x0a O/2 boot manager or Coherent swap
  17. >0 ubyte 0x0b 32-bit FAT
  18. >0 ubyte 0x0c 32-bit FAT, LBA-mapped
  19. >0 ubyte 0x0d 7XXX, LBA-mapped
  20. >0 ubyte 0x0e 16-bit FAT, LBA-mapped
  21. >0 ubyte 0x0f extended partition, LBA-mapped
  22. >0 ubyte 0x10 OPUS
  23. >0 ubyte 0x11 OS/2 DOS 12-bit FAT
  24. >0 ubyte 0x12 Compaq diagnostics
  25. >0 ubyte 0x14 OS/2 DOS 16-bit FAT <32M
  26. >0 ubyte 0x16 OS/2 DOS 16-bit FAT >=32M
  27. >0 ubyte 0x17 OS/2 hidden IFS
  28. >0 ubyte 0x18 AST Windows swapfile
  29. >0 ubyte 0x19 Willowtech Photon coS
  30. >0 ubyte 0x1b hidden win95 fat 32
  31. >0 ubyte 0x1c hidden win95 fat 32 lba
  32. >0 ubyte 0x1d hidden win95 fat 16 lba
  33. >0 ubyte 0x20 Willowsoft OFS1
  34. >0 ubyte 0x21 reserved
  35. >0 ubyte 0x23 reserved
  36. >0 ubyte 0x24 NEC DOS
  37. >0 ubyte 0x26 reserved
  38. >0 ubyte 0x31 reserved
  39. >0 ubyte 0x32 Alien Internet Services NOS
  40. >0 ubyte 0x33 reserved
  41. >0 ubyte 0x34 reserved
  42. >0 ubyte 0x35 JFS on OS2
  43. >0 ubyte 0x36 reserved
  44. >0 ubyte 0x38 Theos
  45. >0 ubyte 0x39 Plan 9, or Theos spanned
  46. >0 ubyte 0x3a Theos ver 4 4gb partition
  47. >0 ubyte 0x3b Theos ve 4 extended partition
  48. >0 ubyte 0x3c PartitionMagic recovery
  49. >0 ubyte 0x3d Hidden Netware
  50. >0 ubyte 0x40 VENIX 286 or LynxOS
  51. >0 ubyte 0x41 PReP
  52. >0 ubyte 0x42 linux swap sharing DRDOS disk
  53. >0 ubyte 0x43 linux sharing DRDOS disk
  54. >0 ubyte 0x44 GoBack change utility
  55. >0 ubyte 0x45 Boot US Boot manager
  56. >0 ubyte 0x46 EUMEL/Elan or Ergos 3
  57. >0 ubyte 0x47 EUMEL/Elan or Ergos 3
  58. >0 ubyte 0x48 EUMEL/Elan or Ergos 3
  59. >0 ubyte 0x4a ALFX/THIN filesystem for DOS
  60. >0 ubyte 0x4c Oberon partition
  61. >0 ubyte 0x4d QNX4.x
  62. >0 ubyte 0x4e QNX4.x 2nd part
  63. >0 ubyte 0x4f QNX4.x 3rd part
  64. >0 ubyte 0x50 DM (disk manager)
  65. >0 ubyte 0x51 DM6 Aux1 (or Novell)
  66. >0 ubyte 0x52 CP/M or Microport SysV/AT
  67. >0 ubyte 0x53 DM6 Aux3
  68. >0 ubyte 0x54 DM6 DDO
  69. >0 ubyte 0x55 EZ-Drive (disk manager)
  70. >0 ubyte 0x56 Golden Bow (disk manager)
  71. >0 ubyte 0x57 Drive PRO
  72. >0 ubyte 0x5c Priam Edisk (disk manager)
  73. >0 ubyte 0x61 SpeedStor
  74. >0 ubyte 0x63 GNU HURD or Mach or Sys V/386
  75. >0 ubyte 0x64 Novell Netware 2.xx or Speedstore
  76. >0 ubyte 0x65 Novell Netware 3.xx
  77. >0 ubyte 0x66 Novell 386 Netware
  78. >0 ubyte 0x67 Novell
  79. >0 ubyte 0x68 Novell
  80. >0 ubyte 0x69 Novell
  81. >0 ubyte 0x70 DiskSecure Multi-Boot
  82. >0 ubyte 0x71 reserved
  83. >0 ubyte 0x73 reserved
  84. >0 ubyte 0x74 reserved
  85. >0 ubyte 0x75 PC/IX
  86. >0 ubyte 0x76 reserved
  87. >0 ubyte 0x77 M2FS/M2CS partition
  88. >0 ubyte 0x78 XOSL boot loader filesystem
  89. >0 ubyte 0x80 MINIX until 1.4a
  90. >0 ubyte 0x81 MINIX since 1.4b
  91. >0 ubyte 0x82 Linux swap or Solaris
  92. >0 ubyte 0x83 Linux native
  93. >0 ubyte 0x84 OS/2 hidden C: drive
  94. >0 ubyte 0x85 Linux extended partition
  95. >0 ubyte 0x86 NT FAT volume set
  96. >0 ubyte 0x87 NTFS volume set or HPFS mirrored
  97. >0 ubyte 0x8a Linux Kernel AiR-BOOT partition
  98. >0 ubyte 0x8b Legacy Fault tolerant FAT32
  99. >0 ubyte 0x8c Legacy Fault tolerant FAT32 ext
  100. >0 ubyte 0x8d Hidden free FDISK FAT12
  101. >0 ubyte 0x8e Linux Logical Volume Manager
  102. >0 ubyte 0x90 Hidden free FDISK FAT16
  103. >0 ubyte 0x91 Hidden free FDISK DOS EXT
  104. >0 ubyte 0x92 Hidden free FDISK FAT16 Big
  105. >0 ubyte 0x93 Amoeba filesystem
  106. >0 ubyte 0x94 Amoeba bad block table
  107. >0 ubyte 0x95 MIT EXOPC native partitions
  108. >0 ubyte 0x97 Hidden free FDISK FAT32
  109. >0 ubyte 0x98 Datalight ROM-DOS Super-Boot
  110. >0 ubyte 0x99 Mylex EISA SCSI
  111. >0 ubyte 0x9a Hidden free FDISK FAT16 LBA
  112. >0 ubyte 0x9b Hidden free FDISK EXT LBA
  113. >0 ubyte 0x9f BSDI?
  114. >0 ubyte 0xa0 IBM Thinkpad hibernation
  115. >0 ubyte 0xa1 HP Volume expansion (SpeedStor)
  116. >0 ubyte 0xa3 HP Volume expansion (SpeedStor)
  117. >0 ubyte 0xa4 HP Volume expansion (SpeedStor)
  118. >0 ubyte 0xa5 386BSD partition type
  119. >0 ubyte 0xa6 OpenBSD partition type
  120. >0 ubyte 0xa7 NeXTSTEP 486
  121. >0 ubyte 0xa8 Apple UFS
  122. >0 ubyte 0xa9 NetBSD partition type
  123. >0 ubyte 0xaa Olivetty Fat12 1.44MB Service part
  124. >0 ubyte 0xab Apple Boot
  125. >0 ubyte 0xae SHAG OS filesystem
  126. >0 ubyte 0xaf Apple HFS
  127. >0 ubyte 0xb0 BootStar Dummy
  128. >0 ubyte 0xb1 reserved
  129. >0 ubyte 0xb3 reserved
  130. >0 ubyte 0xb4 reserved
  131. >0 ubyte 0xb6 reserved
  132. >0 ubyte 0xb7 BSDI BSD/386 filesystem
  133. >0 ubyte 0xb8 BSDI BSD/386 swap
  134. >0 ubyte 0xbb Boot Wizard Hidden
  135. >0 ubyte 0xbe Solaris 8 partition type
  136. >0 ubyte 0xbf Solaris partition type
  137. >0 ubyte 0xc0 CTOS
  138. >0 ubyte 0xc1 DRDOS/sec (FAT-12)
  139. >0 ubyte 0xc2 Hidden Linux
  140. >0 ubyte 0xc3 Hidden Linux swap
  141. >0 ubyte 0xc4 DRDOS/sec (FAT-16, < 32M)
  142. >0 ubyte 0xc5 DRDOS/sec (EXT)
  143. >0 ubyte 0xc6 DRDOS/sec (FAT-16, >= 32M)
  144. >0 ubyte 0xc7 Syrinx (Cyrnix?) or HPFS disabled
  145. >0 ubyte 0xc8 Reserved for DR-DOS 8.0+
  146. >0 ubyte 0xc9 Reserved for DR-DOS 8.0+
  147. >0 ubyte 0xca Reserved for DR-DOS 8.0+
  148. >0 ubyte 0xcb DR-DOS 7.04+ Secured FAT32 CHS
  149. >0 ubyte 0xcc DR-DOS 7.04+ Secured FAT32 LBA
  150. >0 ubyte 0xcd CTOS Memdump
  151. >0 ubyte 0xce DR-DOS 7.04+ FAT16X LBA
  152. >0 ubyte 0xcf DR-DOS 7.04+ EXT LBA
  153. >0 ubyte 0xd0 REAL/32 secure big partition
  154. >0 ubyte 0xd1 Old Multiuser DOS FAT12
  155. >0 ubyte 0xd4 Old Multiuser DOS FAT16 Small
  156. >0 ubyte 0xd5 Old Multiuser DOS Extended
  157. >0 ubyte 0xd6 Old Multiuser DOS FAT16 Big
  158. >0 ubyte 0xd8 CP/M 86
  159. >0 ubyte 0xdb CP/M or Concurrent CP/M
  160. >0 ubyte 0xdd Hidden CTOS Memdump
  161. >0 ubyte 0xde Dell PowerEdge Server utilities
  162. >0 ubyte 0xdf DG/UX virtual disk manager
  163. >0 ubyte 0xe0 STMicroelectronics ST AVFS
  164. >0 ubyte 0xe1 DOS access or SpeedStor 12-bit
  165. >0 ubyte 0xe3 DOS R/O or Storage Dimensions
  166. >0 ubyte 0xe4 SpeedStor 16-bit FAT < 1024 cyl.
  167. >0 ubyte 0xe5 reserved
  168. >0 ubyte 0xe6 reserved
  169. >0 ubyte 0xeb BeOS
  170. >0 ubyte 0xee GPT Protective MBR
  171. >0 ubyte 0xef EFI system partition
  172. >0 ubyte 0xf0 Linux PA-RISC boot loader
  173. >0 ubyte 0xf1 SpeedStor or Storage Dimensions
  174. >0 ubyte 0xf2 DOS 3.3+ Secondary
  175. >0 ubyte 0xf3 reserved
  176. >0 ubyte 0xf4 SpeedStor large partition
  177. >0 ubyte 0xf5 Prologue multi-volumen partition
  178. >0 ubyte 0xf6 reserved
  179. >0 ubyte 0xf9 pCache: ext2/ext3 persistent cache
  180. >0 ubyte 0xfa Bochs x86 emulator
  181. >0 ubyte 0xfb VMware File System
  182. >0 ubyte 0xfc VMware Swap
  183. >0 ubyte 0xfd Linux RAID partition persistent sb
  184. >0 ubyte 0xfe LANstep or IBM PS/2 IML
  185. >0 ubyte 0xff Xenix Bad Block Table
  186. 0 string \366\366\366\366 PC formatted floppy with no filesystem
  187. # Sun disk labels
  188. # From /usr/include/sun/dklabel.h:
  189. 0774 beshort 0xdabe
  190. # modified by Joerg Jenderek, because original test
  191. # succeeds for Cabinet archive dao360.dl_ with negative blocks
  192. >0770 long >0 Sun disk label
  193. >>0 string x '%s
  194. >>>31 string >\0 \b%s
  195. >>>>63 string >\0 \b%s
  196. >>>>>95 string >\0 \b%s
  197. >>0 string x \b'
  198. >>0734 short >0 %d rpm,
  199. >>0736 short >0 %d phys cys,
  200. >>0740 short >0 %d alts/cyl,
  201. >>0746 short >0 %d interleave,
  202. >>0750 short >0 %d data cyls,
  203. >>0752 short >0 %d alt cyls,
  204. >>0754 short >0 %d heads/partition,
  205. >>0756 short >0 %d sectors/track,
  206. >>0764 long >0 start cyl %d,
  207. >>0770 long x %d blocks
  208. # Is there a boot block written 1 sector in?
  209. >512 belong&077777777 0600407 \b, boot block present
  210. # Joerg Jenderek: Smart Boot Manager backup file is 25 (MSDOS) or 41 (LINUX) byte header + first sectors of disk
  211. # (http://btmgr.sourceforge.net/docs/user-guide-3.html)
  212. 0 string SBMBAKUP_ Smart Boot Manager backup file
  213. >9 string x \b, version %-5.5s
  214. >>14 string =_
  215. >>>15 string x %-.1s
  216. >>>>16 string =_ \b.
  217. >>>>>17 string x \b%-.1s
  218. >>>>>>18 string =_ \b.
  219. >>>>>>>19 string x \b%-.1s
  220. >>>22 ubyte 0
  221. >>>>21 ubyte x \b, from drive %#x
  222. >>>22 ubyte >0
  223. >>>>21 string x \b, from drive %s
  224. >>>535 search/17 \x55\xAA
  225. >>>>&-512 indirect x \b; contains
  226. # updated by Joerg Jenderek at Nov 2012
  227. # DOS Emulator image is 128 byte, null right padded header + harddisc image
  228. 0 string DOSEMU\0
  229. >0x27E leshort 0xAA55
  230. #offset is 128
  231. >>19 ubyte 128
  232. >>>(19.b-1) ubyte 0x0 DOS Emulator image
  233. >>>>7 ulelong >0 \b, %u heads
  234. >>>>11 ulelong >0 \b, %d sectors/track
  235. >>>>15 ulelong >0 \b, %d cylinders
  236. >>>>128 indirect x \b; contains
  237. # added by Joerg Jenderek at Nov 2012
  238. # http://www.thenakedpc.com/articles/v04/08/0408-05.html
  239. # Symantec (Peter Norton) Image.dat file consists of variable header, bootrecord, part of FAT and root directory data
  240. 0 string PNCIHISK\0 Norton Utilities disc image data
  241. # real x86 boot sector with jump instruction
  242. >509 search/1026 \x55\xAA\xeb
  243. >>&-1 indirect x \b; contains
  244. # http://file-extension.net/seeker/file_extension_dat
  245. 0 string PNCIUNDO Norton Disk Doctor UnDo file
  246. #
  247. # DOS/MBR boot sector updated by Joerg Jenderek at Sep 2007,May 2011,2013
  248. # for any allowed sector sizes
  249. 30 search/481 \x55\xAA
  250. # to display DOS/MBR boot sector (40) before old one (strength=50+21),Syslinux bootloader (71),SYSLINUX MBR (37+36),NetBSD mbr (110),AdvanceMAME mbr (111)
  251. # DOS BPB information (70) and after DOS floppy (120) like in previous file version
  252. !:strength +65
  253. # for sector sizes < 512 Bytes
  254. >11 uleshort <512
  255. >>(11.s-2) uleshort 0xAA55 DOS/MBR boot sector
  256. # for sector sizes with 512 or more Bytes
  257. >0x1FE leshort 0xAA55 DOS/MBR boot sector
  258. # ExFAT
  259. 3 string/w =EXFAT
  260. >0x1FE leshort 0xAA55
  261. >>0x6E ubyte 1
  262. >>>0x6F ubyte 0x80
  263. >>>0 ubyte 0xEB DOS/MBR boot sector,
  264. >>>0x69 ubyte x ExFAT Filesystem version %d.
  265. >>>0x68 ubyte x \b%d
  266. >>>0x6d ubyte x \b, (1<<%d) sectors per cluster
  267. >>>0x48 ulequad x \b, sectors %lld
  268. >>>0x64 ulelong x \b, serial number %#x
  269. # keep old DOS/MBR boot sector as dummy for mbr and bootloader displaying
  270. # only for sector sizes with 512 or more Bytes
  271. 0x1FE leshort 0xAA55 DOS/MBR boot sector
  272. #
  273. # to display information (50) before DOS BPB (strength=70) and after DOS floppy (120) like in old file version
  274. !:strength +65
  275. >2 string OSBS OS/BS MBR
  276. # added by Joerg Jenderek at Feb 2013 according to https://thestarman.pcministry.com/asm/mbr/
  277. # and https://en.wikipedia.org/wiki/Master_Boot_Record
  278. # test for nearly all MS-DOS Master Boot Record initial program loader (IPL) is now done by
  279. # characteristic assembler instructions: xor ax,ax;mov ss,ax;mov sp,7c00
  280. >0 search/2 \x33\xc0\x8e\xd0\xbc\x00\x7c MS-MBR
  281. # Microsoft Windows 95A and early ( https://thestarman.pcministry.com/asm/mbr/STDMBR.htm )
  282. # assembler instructions: mov si,sp;push ax;pop es;push ax;pop ds;sti;cld
  283. >>8 ubequad 0x8bf45007501ffbfc
  284. # https://thestarman.pcministry.com/asm/mbr/200MBR.htm
  285. >>>0x16 ubyte 0xF3 \b,DOS 2
  286. >>>>219 regex Author\ -\ Author:
  287. # found "David Litton" , "A Pehrsson "
  288. >>>>>&0 string x "%s"
  289. >>>0x16 ubyte 0xF2
  290. # NEC MS-DOS 3.30 Rev. 3 . See https://thestarman.pcministry.com/asm/mbr/DOS33MBR.htm
  291. # assembler instructions: mov di,077c;cmp word ptrl[di],a55a;jnz
  292. >>>>0x22 ubequad 0xbf7c07813d5aa575 \b,NEC 3.3
  293. # version MS-DOS 3.30 til MS-Windows 95A (WinVer=4.00.1111)
  294. >>>>0x22 default x \b,D0S version 3.3-7.0
  295. # error messages are printed by assembler instructions: mov si,06nn;...;int 10 (0xBEnn06;...)
  296. # where nn is string offset varying for different languages
  297. # "Invalid partition table" nn=0x8b for english version
  298. >>>>>(0x49.b) string Invalid\ partition\ table english
  299. >>>>>(0x49.b) string Ung\201ltige\ Partitionstabelle german
  300. >>>>>(0x49.b) string Table\ de\ partition\ invalide french
  301. >>>>>(0x49.b) string Tabela\ de\ parti\207ao\ inv\240lida portuguese
  302. >>>>>(0x49.b) string Tabla\ de\ partici\242n\ no\ v\240lida spanish
  303. >>>>>(0x49.b) string Tavola\ delle\ partizioni\ non\ valida italian
  304. >>>>>0x49 ubyte >0 at offset %#x
  305. >>>>>>(0x49.b) string >\0 "%s"
  306. # "Error loading operating system" nn=0xa3 for english version
  307. # "Fehler beim Laden des Betriebssystems" nn=0xa7 for german version
  308. # "Erreur en chargeant syst\212me d'exploitation" nn=0xa7 for french version
  309. # "Erro na inicializa\207ao do sistema operacional" nn=0xa7 for portuguese Brazilian version
  310. # "Error al cargar sistema operativo" nn=0xa8 for spanish version
  311. # "Errore durante il caricamento del sistema operativo" nn=0xae for italian version
  312. >>>>>0x74 ubyte >0 at offset %#x
  313. >>>>>>(0x74.b) string >\0 "%s"
  314. # "Missing operating system" nn=0xc2 for english version
  315. # "Betriebssystem fehlt" nn=0xcd for german version
  316. # "Syst\212me d'exploitation absent" nn=0xd2 for french version
  317. # "Sistema operacional nao encontrado" nn=0xd4 for portuguese Brazilian version
  318. # "Falta sistema operativo" nn=0xca for spanish version
  319. # "Sistema operativo mancante" nn=0xe2 for italian version
  320. >>>>>0x79 ubyte >0 at offset %#x
  321. >>>>>>(0x79.b) string >\0 "%s"
  322. # Microsoft Windows 95B to XP (https://thestarman.pcministry.com/asm/mbr/95BMEMBR.htm)
  323. # assembler instructions: push ax;pop es;push ax;pop ds;cld;mov si,7c1b
  324. >>8 ubequad 0x5007501ffcbe1b7c
  325. # assembler instructions: rep;movsb;retf;mov si,07be;mov cl,04
  326. >>>24 ubequad 0xf3a4cbbebe07b104 9M
  327. # "Invalid partition table" nn=0x10F for english version
  328. # "Ung\201ltige Partitionstabelle" nn=0x10F for german version
  329. # "Table de partition erron\202e" nn=0x10F for french version
  330. # "\216\257\245\340\240\346\250\256\255\255\240\357 \341\250\341\342\245\254\240 \255\245 \255\240\251\244\245\255\240" nn=0x10F for russian version
  331. >>>>(0x3C.b+0x0FF) string Invalid\ partition\ table english
  332. >>>>(0x3C.b+0x0FF) string Ung\201ltige\ Partitionstabelle german
  333. >>>>(0x3C.b+0x0FF) string Table\ de\ partition\ erron\202e french
  334. >>>>(0x3C.b+0x0FF) string \215\245\257\340\240\242\250\253\354\255\240\357\ \342\240\241\253\250\346\240 russian
  335. >>>>0x3C ubyte x at offset %#x+0xFF
  336. >>>>(0x3C.b+0x0FF) string >\0 "%s"
  337. # "Error loading operating system" nn=0x127 for english version
  338. # "Fehler beim Laden des Betriebssystems" nn=0x12b for german version
  339. # "Erreur lors du chargement du syst\212me d'exploitation" nn=0x12a for french version
  340. # "\216\350\250\241\252\240 \257\340\250 \247\240\243\340\343\247\252\245 \256\257\245\340\240\346\250\256\255\255\256\251 \341\250\341\342\245\254\353" nn=0x12d for russian version
  341. >>>>0xBD ubyte x at offset 0x1%x
  342. >>>>(0xBD.b+0x100) string >\0 "%s"
  343. # "Missing operating system" nn=0x146 for english version
  344. # "Betriebssystem fehlt" nn=0x151 for german version
  345. # "Syst\212me d'exploitation manquant" nn=0x15e for french version
  346. # "\216\257\245\340\240\346\250\256\255\255\240\357 \341\250\341\342\245\254\240 \255\245 \255\240\251\244\245\255\240" nn=0x156 for russian version
  347. >>>>0xA9 ubyte x at offset 0x1%x
  348. >>>>(0xA9.b+0x100) string >\0 "%s"
  349. # https://thestarman.pcministry.com/asm/mbr/Win2kmbr.htm
  350. # assembler instructions: rep;movsb;retf;mov BP,07be;mov cl,04
  351. >>>24 ubequad 0xf3a4cbbdbe07b104 XP
  352. # where xxyyzz are lower bits from offsets of error messages varying for different languages
  353. >>>>0x1B4 ubelong&0x00FFFFFF 0x002c4463 english
  354. >>>>0x1B4 ubelong&0x00FFFFFF 0x002c486e german
  355. # "Invalid partition table" xx=0x12C for english version
  356. # "Ung\201ltige Partitionstabelle" xx=0x12C for german version
  357. >>>>0x1b5 ubyte >0 at offset 0x1%x
  358. >>>>(0x1b5.b+0x100) string >\0 "%s"
  359. # "Error loading operating system" yy=0x144 for english version
  360. # "Fehler beim Laden des Betriebssystems" yy=0x148 for german version
  361. >>>>0x1b6 ubyte >0 at offset 0x1%x
  362. >>>>(0x1b6.b+0x100) string >\0 "%s"
  363. # "Missing operating system" zz=0x163 for english version
  364. # "Betriebssystem nicht vorhanden" zz=0x16e for german version
  365. >>>>0x1b7 ubyte >0 at offset 0x1%x
  366. >>>>(0x1b7.b+0x100) string >\0 "%s"
  367. # Microsoft Windows Vista or 7
  368. # assembler instructions: ..;mov ds,ax;mov si,7c00;mov di,..00
  369. >>8 ubequad 0xc08ed8be007cbf00
  370. # Microsoft Windows Vista (https://thestarman.pcministry.com/asm/mbr/VistaMBR.htm)
  371. # assembler instructions: jnz 0729;cmp ebx,"TCPA"
  372. >>>0xEC ubequad 0x753b6681fb544350 Vista
  373. # where xxyyzz are lower bits from offsets of error messages varying for different languages
  374. >>>>0x1B4 ubelong&0x00FFFFFF 0x00627a99 english
  375. #>>>>0x1B4 ubelong&0x00FFFFFF ? german
  376. # "Invalid partition table" xx=0x162 for english version
  377. # "Ung\201ltige Partitionstabelle" xx=0x1?? for german version
  378. >>>>0x1b5 ubyte >0 at offset 0x1%x
  379. >>>>(0x1b5.b+0x100) string >\0 "%s"
  380. # "Error loading operating system" yy=0x17a for english version
  381. # "Fehler beim Laden des Betriebssystems" yy= 0x1?? for german version
  382. >>>>0x1b6 ubyte >0 at offset 0x1%x
  383. >>>>(0x1b6.b+0x100) string >\0 "%s"
  384. # "Missing operating system" zz=0x199 for english version
  385. # "Betriebssystem nicht vorhanden" zz=0x1?? for german version
  386. >>>>0x1b7 ubyte >0 at offset 0x1%x
  387. >>>>(0x1b7.b+0x100) string >\0 "%s"
  388. # Microsoft Windows 7 (https://thestarman.pcministry.com/asm/mbr/W7MBR.htm)
  389. # assembler instructions: cmp ebx,"TCPA";cmp
  390. >>>0xEC ubequad 0x6681fb5443504175 Windows 7
  391. # where xxyyzz are lower bits from offsets of error messages varying for different languages
  392. >>>>0x1B4 ubelong&0x00FFFFFF 0x00637b9a english
  393. #>>>>0x1B4 ubelong&0x00FFFFFF ? german
  394. # "Invalid partition table" xx=0x163 for english version
  395. # "Ung\201ltige Partitionstabelle" xx=0x1?? for german version
  396. >>>>0x1b5 ubyte >0 at offset 0x1%x
  397. >>>>(0x1b5.b+0x100) string >\0 "%s"
  398. # "Error loading operating system" yy=0x17b for english version
  399. # "Fehler beim Laden des Betriebssystems" yy=0x1?? for german version
  400. >>>>0x1b6 ubyte >0 at offset 0x1%x
  401. >>>>(0x1b6.b+0x100) string >\0 "%s"
  402. # "Missing operating system" zz=0x19a for english version
  403. # "Betriebssystem nicht vorhanden" zz=0x1?? for german version
  404. >>>>0x1b7 ubyte >0 at offset 0x1%x
  405. >>>>(0x1b7.b+0x100) string >\0 "%s"
  406. # https://thestarman.pcministry.com/asm/mbr/Win2kmbr.htm#DiskSigs
  407. # https://en.wikipedia.org/wiki/MBR_disk_signature#ID
  408. >>0x1b8 ulelong >0 \b, disk signature %#-.4x
  409. # driveID/timestamp for Win 95B,98,98SE and ME. See https://thestarman.pcministry.com/asm/mbr/mystery.htm
  410. >>0xDA uleshort 0
  411. >>>0xDC ulelong >0 \b, created
  412. # physical drive number (0x80-0xFF) when the Windows wrote that byte to the drive
  413. >>>>0xDC ubyte x with driveID %#x
  414. # hours, minutes and seconds
  415. >>>>0xDf ubyte x at %x
  416. >>>>0xDe ubyte x \b:%x
  417. >>>>0xDd ubyte x \b:%x
  418. # special case for Microsoft MS-DOS 3.21 spanish
  419. # assembler instructions: cli;mov $0x30,%ax;mov %ax,%ss;mov
  420. >0 ubequad 0xfab830008ed0bc00
  421. # assembler instructions: $0x1f00,%sp;mov $0x80cb,%di;add %cl,(%bx,%si);in (%dx),%ax;mov
  422. >>8 ubequad 0x1fbfcb800008ed8 MS-MBR,D0S version 3.21 spanish
  423. # Microsoft MBR IPL end
  424. # dr-dos with some upper-, lowercase variants
  425. >0x9D string Invalid\ partition\ table$
  426. >>181 string No\ Operating\ System$
  427. >>>201 string Operating\ System\ load\ error$ \b, DR-DOS MBR, Version 7.01 to 7.03
  428. >0x9D string Invalid\ partition\ table$
  429. >>181 string No\ operating\ system$
  430. >>>201 string Operating\ system\ load\ error$ \b, DR-DOS MBR, Version 7.01 to 7.03
  431. >342 string Invalid\ partition\ table$
  432. >>366 string No\ operating\ system$
  433. >>>386 string Operating\ system\ load\ error$ \b, DR-DOS MBR, version 7.01 to 7.03
  434. >295 string NEWLDR\0
  435. >>302 string Bad\ PT\ $
  436. >>>310 string No\ OS\ $
  437. >>>>317 string OS\ load\ err$
  438. >>>>>329 string Moved\ or\ missing\ IBMBIO.LDR\n\r
  439. >>>>>>358 string Press\ any\ key\ to\ continue.\n\r$
  440. >>>>>>>387 string Copyright\ (c)\ 1984,1998
  441. >>>>>>>>411 string Caldera\ Inc.\0 \b, DR-DOS MBR (IBMBIO.LDR)
  442. #
  443. # tests for different MS-DOS Master Boot Records (MBR) moved and merged
  444. #
  445. #>0x145 string Default:\ F \b, FREE-DOS MBR
  446. #>0x14B string Default:\ F \b, FREE-DOS 1.0 MBR
  447. >0x145 search/7 Default:\ F \b, FREE-DOS MBR
  448. #>>313 string F0\ .\ .\ .
  449. #>>>322 string disk\ 1
  450. #>>>>382 string FAT3
  451. >64 string no\ active\ partition\ found
  452. >>96 string read\ error\ while\ reading\ drive \b, FREE-DOS Beta 0.9 MBR
  453. # Ranish Partition Manager http://www.ranish.com/part/
  454. >387 search/4 \0\ Error!\r
  455. >>378 search/7 Virus!
  456. >>>397 search/4 Booting\040
  457. >>>>408 search/4 HD1/\0 \b, Ranish MBR (
  458. >>>>>416 string Writing\ changes... \b2.37
  459. >>>>>>438 ubyte x \b,%#x dots
  460. >>>>>>440 ubyte >0 \b,virus check
  461. >>>>>>441 ubyte >0 \b,partition %c
  462. #2.38,2.42,2.44
  463. >>>>>416 string !Writing\ changes... \b
  464. >>>>>>418 ubyte 1 \bvirus check,
  465. >>>>>>419 ubyte x \b%#x seconds
  466. >>>>>>420 ubyte&0x0F >0 \b,partition
  467. >>>>>>>420 ubyte&0x0F <5 \b %x
  468. >>>>>>>420 ubyte&0x0F 0Xf \b ask
  469. >>>>>420 ubyte x \b)
  470. #
  471. # SYSLINUX MBR moved
  472. # https://www.acronis.de/
  473. >362 string MBR\ Error\ \0\r
  474. >>376 string ress\ any\ key\ to\040
  475. >>>392 string boot\ from\ floppy...\0 \b, Acronis MBR
  476. # added by Joerg Jenderek
  477. # https://www.visopsys.org/
  478. # https://partitionlogic.org.uk/
  479. >309 string No\ bootable\ partition\ found\r
  480. >>339 string I/O\ Error\ reading\ boot\ sector\r \b, Visopsys MBR
  481. >349 string No\ bootable\ partition\ found\r
  482. >>379 string I/O\ Error\ reading\ boot\ sector\r \b, simple Visopsys MBR
  483. # bootloader, bootmanager
  484. >0x40 string SBML
  485. # label with 11 characters of FAT 12 bit filesystem
  486. >>43 string SMART\ BTMGR
  487. >>>430 string SBMK\ Bad!\r \b, Smart Boot Manager
  488. # OEM-ID not always "SBM"
  489. #>>>>3 strings SBM
  490. >>>>6 string >\0 \b, version %s
  491. >382 string XOSLLOADXCF \b, eXtended Operating System Loader
  492. >6 string LILO \b, LInux i386 boot LOader
  493. >>120 string LILO \b, version 22.3.4 SuSe
  494. >>172 string LILO \b, version 22.5.8 Debian
  495. # updated by Joerg Jenderek at Oct 2008
  496. # variables according to grub-0.97/stage1/stage1.S or
  497. # https://www.gnu.org/software/grub/manual/grub.html#Embedded-data
  498. # usual values are marked with comments to get only information of strange GRUB loaders
  499. >342 search/60 \0Geom\0
  500. #>0 ulelong x %x=0x009048EB , 0x2a9048EB 0
  501. >>0x41 ubyte <2
  502. >>>0x3E ubyte >2 \b; GRand Unified Bootloader
  503. # 0x3 for 0.5.95,0.93,0.94,0.96 0x4 for 1.90
  504. >>>>0x3E ubyte x \b, stage1 version %#x
  505. #If it is 0xFF, use a drive passed by BIOS
  506. >>>>0x40 ubyte <0xFF \b, boot drive %#x
  507. # in most case 0,1,0x2e for GRUB 0.5.95
  508. >>>>0x41 ubyte >0 \b, LBA flag %#x
  509. >>>>0x42 uleshort <0x8000 \b, stage2 address %#x
  510. #>>>>0x42 uleshort =0x8000 \b, stage2 address %#x (usual)
  511. >>>>0x42 uleshort >0x8000 \b, stage2 address %#x
  512. #>>>>0x44 ulelong =1 \b, 1st sector stage2 %#x (default)
  513. >>>>0x44 ulelong >1 \b, 1st sector stage2 %#x
  514. >>>>0x48 uleshort <0x800 \b, stage2 segment %#x
  515. #>>>>0x48 uleshort =0x800 \b, stage2 segment %#x (usual)
  516. >>>>0x48 uleshort >0x800 \b, stage2 segment %#x
  517. >>>>402 string Geom\0Hard\ Disk\0Read\0\ Error\0
  518. >>>>>394 string stage1 \b, GRUB version 0.5.95
  519. >>>>382 string Geom\0Hard\ Disk\0Read\0\ Error\0
  520. >>>>>376 string GRUB\ \0 \b, GRUB version 0.93 or 1.94
  521. >>>>383 string Geom\0Hard\ Disk\0Read\0\ Error\0
  522. >>>>>377 string GRUB\ \0 \b, GRUB version 0.94
  523. >>>>385 string Geom\0Hard\ Disk\0Read\0\ Error\0
  524. >>>>>379 string GRUB\ \0 \b, GRUB version 0.95 or 0.96
  525. >>>>391 string Geom\0Hard\ Disk\0Read\0\ Error\0
  526. >>>>>385 string GRUB\ \0 \b, GRUB version 0.97
  527. # unknown version
  528. >>>343 string Geom\0Read\0\ Error\0
  529. >>>>321 string Loading\ stage1.5 \b, GRUB version x.y
  530. >>>380 string Geom\0Hard\ Disk\0Read\0\ Error\0
  531. >>>>374 string GRUB\ \0 \b, GRUB version n.m
  532. # SYSLINUX bootloader moved
  533. >395 string chksum\0\ ERROR!\0 \b, Gujin bootloader
  534. # http://www.bcdwb.de/bcdw/index_e.htm
  535. >3 string BCDL
  536. >>498 string BCDL\ \ \ \ BIN \b, Bootable CD Loader (1.50Z)
  537. # mbr partition table entries updated by Joerg Jenderek at Sep 2013
  538. # skip Norton Utilities disc image data
  539. >3 string !IHISK
  540. # skip Linux style boot sector starting with assembler instructions mov 0x7c0,ax;
  541. >>0 belong !0xb8c0078e
  542. # not Linux kernel
  543. >>>514 string !HdrS
  544. # not BeOS
  545. >>>>422 string !Be\ Boot\ Loader
  546. # jump over BPB instruction implies DOS bootsector or AdvanceMAME mbr
  547. >>>>>0 ubelong&0xFD000000 =0xE9000000
  548. # AdvanceMAME mbr
  549. >>>>>>(1.b+2) ubequad 0xfa31c08ed88ec08e
  550. >>>>>>>446 use partition-table
  551. # mbr, Norton Utilities disc image data, or 2nd,etc. sector of x86 bootloader
  552. >>>>>0 ubelong&0xFD000000 !0xE9000000
  553. # skip FSInfosector
  554. >>>>>>0 string !RRaA
  555. # skip 3rd sector of MS x86 bootloader with assembler instructions cli;MOVZX EAX,BYTE PTR [BP+10];MOV ECX,
  556. # https://thestarman.pcministry.com/asm/mbr/MSWIN41.htm
  557. >>>>>>>0 ubequad !0xfa660fb64610668b
  558. # skip 13rd sector of MS x86 bootloader
  559. >>>>>>>>0 ubequad !0x660fb64610668b4e
  560. # skip sector starting with DOS new line
  561. >>>>>>>>>0 string !\r\n
  562. # allowed active flag 0,80h-FFh
  563. >>>>>>>>>>446 ubyte 0
  564. >>>>>>>>>>>446 use partition-table
  565. >>>>>>>>>>446 ubyte >0x7F
  566. >>>>>>>>>>>446 use partition-table
  567. # TODO: test for extended bootrecord (ebr) moved and merged with mbr partition table entries
  568. # mbr partition table entries end
  569. # https://www.acronis.de/
  570. #FAT label=ACRONIS\ SZ
  571. #OEM-ID=BOOTWIZ0
  572. >442 string Non-system\ disk,\040
  573. >>459 string press\ any\ key...\x7\0 \b, Acronis Startup Recovery Loader
  574. # updated by Joerg Jenderek at Nov 2012, Sep 2013
  575. # DOS names like F11.SYS or BOOTWIZ.SYS are 8 right space padded bytes+3 bytes
  576. # display 1 space
  577. >>>447 ubyte x \b
  578. >>>477 use DOS-filename
  579. #
  580. >185 string FDBOOT\ Version\040
  581. >>204 string \rNo\ Systemdisk.\040
  582. >>>220 string Booting\ from\ harddisk.\n\r
  583. >>>245 string Cannot\ load\ from\ harddisk.\n\r
  584. >>>>273 string Insert\ Systemdisk\040
  585. >>>>>291 string and\ press\ any\ key.\n\r \b, FDBOOT harddisk Bootloader
  586. >>>>>>200 string >\0 \b, version %-3s
  587. >242 string Bootsector\ from\ C.H.\ Hochst\204
  588. # http://freecode.com/projects/dosfstools dosfstools-n.m/src/mkdosfs.c
  589. # updated by Joerg Jenderek at Nov 2012. Use search directive with offset instead of string
  590. # skip name "C.H. Hochstaetter" partly because it is sometimes written without umlaut
  591. >242 search/127 Bootsector\ from\ C.H.\ Hochst
  592. >>278 search/127 No\ Systemdisk.\ Booting\ from\ harddisk
  593. # followed by variants with point,CR-NL or NL-CR
  594. >>>208 search/261 Cannot\ load\ from\ harddisk.
  595. # followed by variants CR-NL or NL-CR
  596. >>>>236 search/235 Insert\ Systemdisk\ and\ press\ any\ key.
  597. # followed by variants with point,CR-NL or NL-CR
  598. >>>>>180 search/96 Disk\ formatted\ with\ WinImage\ \b, WinImage harddisk Bootloader
  599. # followed by string like "6.50 (c) 1993-2004 Gilles Vollant"
  600. >>>>>>&0 string x \b, version %-4.4s
  601. >(1.b+2) ubyte 0xe
  602. >>(1.b+3) ubyte 0x1f
  603. >>>(1.b+4) ubyte 0xbe
  604. # message offset found at (1.b+5) is 0x77 for FAT32 or 0x5b for others
  605. >>>>(1.b+5) ubyte&0xd3 0x53
  606. >>>>>(1.b+6) ubyte 0x7c
  607. # assembler instructions: lodsb;and al,al;jz 0xb;push si;mov ah,
  608. >>>>>>(1.b+7) ubyte 0xac
  609. >>>>>>>(1.b+8) ubyte 0x22
  610. >>>>>>>>(1.b+9) ubyte 0xc0
  611. >>>>>>>>>(1.b+10) ubyte 0x74
  612. >>>>>>>>>>(1.b+11) ubyte 0x0b
  613. >>>>>>>>>>>(1.b+12) ubyte 0x56
  614. >>>>>>>>>>>>(1.b+13) ubyte 0xb4 \b, mkdosfs boot message display
  615. # FAT1X version
  616. >>>>>>>>>>>>>(1.b+5) ubyte 0x5b
  617. >>>>>>>>>>>>>>0x5b string >\0 "%-s"
  618. # FAT32 version
  619. >>>>>>>>>>>>>(1.b+5) ubyte 0x77
  620. >>>>>>>>>>>>>>0x77 string >\0 "%-s"
  621. >214 string Please\ try\ to\ install\ FreeDOS\ \b, DOS Emulator boot message display
  622. #>>244 string from\ dosemu-freedos-*-bin.tgz\r
  623. #>>>170 string Sorry,\ could\ not\ load\ an\040
  624. #>>>>195 string operating\ system.\r\n
  625. #
  626. >103 string This\ is\ not\ a\ bootable\ disk.\040
  627. >>132 string Please\ insert\ a\ bootable\040
  628. >>>157 string floppy\ and\r\n
  629. >>>>169 string press\ any\ key\ to\ try\ again...\r \b, FREE-DOS message display
  630. #
  631. >66 string Solaris\ Boot\ Sector
  632. >>99 string Incomplete\ MDBoot\ load.
  633. >>>89 string Version \b, Sun Solaris Bootloader
  634. >>>>97 byte x version %c
  635. #
  636. >408 string OS/2\ !!\ SYS01475\r\0
  637. >>429 string OS/2\ !!\ SYS02025\r\0
  638. >>>450 string OS/2\ !!\ SYS02027\r\0
  639. >>>469 string OS2BOOT\ \ \ \ \b, IBM OS/2 Warp bootloader
  640. #
  641. >409 string OS/2\ !!\ SYS01475\r\0
  642. >>430 string OS/2\ !!\ SYS02025\r\0
  643. >>>451 string OS/2\ !!\ SYS02027\r\0
  644. >>>470 string OS2BOOT\ \ \ \ \b, IBM OS/2 Warp Bootloader
  645. >112 string This\ disk\ is\ not\ bootable\r
  646. >>142 string If\ you\ wish\ to\ make\ it\ bootable
  647. >>>176 string run\ the\ DOS\ program\ SYS\040
  648. >>>200 string after\ the\r
  649. >>>>216 string system\ has\ been\ loaded\r\n
  650. >>>>>242 string Please\ insert\ a\ DOS\ diskette\040
  651. >>>>>271 string into\r\n\ the\ drive\ and\040
  652. >>>>>>292 string strike\ any\ key...\0 \b, IBM OS/2 Warp message display
  653. # XP
  654. >430 string NTLDR\ is\ missing\xFF\r\n
  655. >>449 string Disk\ error\xFF\r\n
  656. >>>462 string Press\ any\ key\ to\ restart\r \b, Microsoft Windows XP Bootloader
  657. # DOS names like NTLDR,CMLDR,$LDR$ are 8 right space padded bytes+3 bytes
  658. >>>>417 ubyte&0xDF >0
  659. >>>>>417 string x %-.5s
  660. >>>>>>422 ubyte&0xDF >0
  661. >>>>>>>422 string x \b%-.3s
  662. >>>>>425 ubyte&0xDF >0
  663. >>>>>>425 string >\ \b.%-.3s
  664. #
  665. >>>>371 ubyte >0x20
  666. >>>>>368 ubyte&0xDF >0
  667. >>>>>>368 string x %-.5s
  668. >>>>>>>373 ubyte&0xDF >0
  669. >>>>>>>>373 string x \b%-.3s
  670. >>>>>>376 ubyte&0xDF >0
  671. >>>>>>>376 string x \b.%-.3s
  672. #
  673. >430 string NTLDR\ nicht\ gefunden\xFF\r\n
  674. >>453 string Datentr\204gerfehler\xFF\r\n
  675. >>>473 string Neustart\ mit\ beliebiger\ Taste\r \b, Microsoft Windows XP Bootloader (german)
  676. >>>>417 ubyte&0xDF >0
  677. >>>>>417 string x %-.5s
  678. >>>>>>422 ubyte&0xDF >0
  679. >>>>>>>422 string x \b%-.3s
  680. >>>>>425 ubyte&0xDF >0
  681. >>>>>>425 string >\ \b.%-.3s
  682. # offset variant
  683. >>>>379 string \0
  684. >>>>>368 ubyte&0xDF >0
  685. >>>>>>368 string x %-.5s
  686. >>>>>>>373 ubyte&0xDF >0
  687. >>>>>>>>373 string x \b%-.3s
  688. #
  689. >430 string NTLDR\ fehlt\xFF\r\n
  690. >>444 string Datentr\204gerfehler\xFF\r\n
  691. >>>464 string Neustart\ mit\ beliebiger\ Taste\r \b, Microsoft Windows XP Bootloader (2.german)
  692. >>>>417 ubyte&0xDF >0
  693. >>>>>417 string x %-.5s
  694. >>>>>>422 ubyte&0xDF >0
  695. >>>>>>>422 string x \b%-.3s
  696. >>>>>425 ubyte&0xDF >0
  697. >>>>>>425 string >\ \b.%-.3s
  698. # variant
  699. >>>>371 ubyte >0x20
  700. >>>>>368 ubyte&0xDF >0
  701. >>>>>>368 string x %-.5s
  702. >>>>>>>373 ubyte&0xDF >0
  703. >>>>>>>>373 string x \b%-.3s
  704. >>>>>>376 ubyte&0xDF >0
  705. >>>>>>>376 string x \b.%-.3s
  706. #
  707. >430 string NTLDR\ fehlt\xFF\r\n
  708. >>444 string Medienfehler\xFF\r\n
  709. >>>459 string Neustart:\ Taste\ dr\201cken\r \b, Microsoft Windows XP Bootloader (3.german)
  710. >>>>371 ubyte >0x20
  711. >>>>>368 ubyte&0xDF >0
  712. >>>>>>368 string x %-.5s
  713. >>>>>>>373 ubyte&0xDF >0
  714. >>>>>>>>373 string x \b%-.3s
  715. >>>>>>376 ubyte&0xDF >0
  716. >>>>>>>376 string x \b.%-.3s
  717. # variant
  718. >>>>417 ubyte&0xDF >0
  719. >>>>>417 string x %-.5s
  720. >>>>>>422 ubyte&0xDF >0
  721. >>>>>>>422 string x \b%-.3s
  722. >>>>>425 ubyte&0xDF >0
  723. >>>>>>425 string >\ \b.%-.3s
  724. #
  725. >430 string Datentr\204ger\ entfernen\xFF\r\n
  726. >>454 string Medienfehler\xFF\r\n
  727. >>>469 string Neustart:\ Taste\ dr\201cken\r \b, Microsoft Windows XP Bootloader (4.german)
  728. >>>>379 string \0
  729. >>>>>368 ubyte&0xDF >0
  730. >>>>>>368 string x %-.5s
  731. >>>>>>>373 ubyte&0xDF >0
  732. >>>>>>>>373 string x \b%-.3s
  733. >>>>>>376 ubyte&0xDF >0
  734. >>>>>>>376 string x \b.%-.3s
  735. # variant
  736. >>>>417 ubyte&0xDF >0
  737. >>>>>417 string x %-.5s
  738. >>>>>>422 ubyte&0xDF >0
  739. >>>>>>>422 string x \b%-.3s
  740. >>>>>425 ubyte&0xDF >0
  741. >>>>>>425 string >\ \b.%-.3s
  742. #
  743. #>3 string NTFS\ \ \ \040
  744. >389 string Fehler\ beim\ Lesen\040
  745. >>407 string des\ Datentr\204gers
  746. >>>426 string NTLDR\ fehlt
  747. >>>>440 string NTLDR\ ist\ komprimiert
  748. >>>>>464 string Neustart\ mit\ Strg+Alt+Entf\r \b, Microsoft Windows XP Bootloader NTFS (german)
  749. #>3 string NTFS\ \ \ \040
  750. >313 string A\ disk\ read\ error\ occurred.\r
  751. >>345 string A\ kernel\ file\ is\ missing\040
  752. >>>370 string from\ the\ disk.\r
  753. >>>>484 string NTLDR\ is\ compressed
  754. >>>>>429 string Insert\ a\ system\ diskette\040
  755. >>>>>>454 string and\ restart\r\nthe\ system.\r \b, Microsoft Windows XP Bootloader NTFS
  756. # DOS loader variants different languages,offsets
  757. >472 ubyte&0xDF >0
  758. >>389 string Invalid\ system\ disk\xFF\r\n
  759. >>>411 string Disk\ I/O\ error
  760. >>>>428 string Replace\ the\ disk,\ and\040
  761. >>>>>455 string press\ any\ key \b, Microsoft Windows 98 Bootloader
  762. #IO.SYS
  763. >>>>>>472 ubyte&0xDF >0
  764. >>>>>>>472 string x \b %-.2s
  765. >>>>>>>>474 ubyte&0xDF >0
  766. >>>>>>>>>474 string x \b%-.5s
  767. >>>>>>>>>>479 ubyte&0xDF >0
  768. >>>>>>>>>>>479 string x \b%-.1s
  769. >>>>>>>480 ubyte&0xDF >0
  770. >>>>>>>>480 string x \b.%-.3s
  771. #MSDOS.SYS
  772. >>>>>>>483 ubyte&0xDF >0 \b+
  773. >>>>>>>>483 string x \b%-.5s
  774. >>>>>>>>>488 ubyte&0xDF >0
  775. >>>>>>>>>>488 string x \b%-.3s
  776. >>>>>>>>491 ubyte&0xDF >0
  777. >>>>>>>>>491 string x \b.%-.3s
  778. #
  779. >>390 string Invalid\ system\ disk\xFF\r\n
  780. >>>412 string Disk\ I/O\ error\xFF\r\n
  781. >>>>429 string Replace\ the\ disk,\ and\040
  782. >>>>>451 string then\ press\ any\ key\r \b, Microsoft Windows 98 Bootloader
  783. >>388 string Ungueltiges\ System\ \xFF\r\n
  784. >>>410 string E/A-Fehler\ \ \ \ \xFF\r\n
  785. >>>>427 string Datentraeger\ wechseln\ und\040
  786. >>>>>453 string Taste\ druecken\r \b, Microsoft Windows 95/98/ME Bootloader (german)
  787. #WINBOOT.SYS only not spaces (0xDF)
  788. >>>>>>497 ubyte&0xDF >0
  789. >>>>>>>497 string x %-.5s
  790. >>>>>>>>502 ubyte&0xDF >0
  791. >>>>>>>>>502 string x \b%-.1s
  792. >>>>>>>>>>503 ubyte&0xDF >0
  793. >>>>>>>>>>>503 string x \b%-.1s
  794. >>>>>>>>>>>>504 ubyte&0xDF >0
  795. >>>>>>>>>>>>>504 string x \b%-.1s
  796. >>>>>>505 ubyte&0xDF >0
  797. >>>>>>>505 string x \b.%-.3s
  798. #IO.SYS
  799. >>>>>>472 ubyte&0xDF >0 or
  800. >>>>>>>472 string x \b %-.2s
  801. >>>>>>>>474 ubyte&0xDF >0
  802. >>>>>>>>>474 string x \b%-.5s
  803. >>>>>>>>>>479 ubyte&0xDF >0
  804. >>>>>>>>>>>479 string x \b%-.1s
  805. >>>>>>>480 ubyte&0xDF >0
  806. >>>>>>>>480 string x \b.%-.3s
  807. #MSDOS.SYS
  808. >>>>>>>483 ubyte&0xDF >0 \b+
  809. >>>>>>>>483 string x \b%-.5s
  810. >>>>>>>>>488 ubyte&0xDF >0
  811. >>>>>>>>>>488 string x \b%-.3s
  812. >>>>>>>>491 ubyte&0xDF >0
  813. >>>>>>>>>491 string x \b.%-.3s
  814. #
  815. >>390 string Ungueltiges\ System\ \xFF\r\n
  816. >>>412 string E/A-Fehler\ \ \ \ \xFF\r\n
  817. >>>>429 string Datentraeger\ wechseln\ und\040
  818. >>>>>455 string Taste\ druecken\r \b, Microsoft Windows 95/98/ME Bootloader (German)
  819. #WINBOOT.SYS only not spaces (0xDF)
  820. >>>>>>497 ubyte&0xDF >0
  821. >>>>>>>497 string x %-.7s
  822. >>>>>>>>504 ubyte&0xDF >0
  823. >>>>>>>>>504 string x \b%-.1s
  824. >>>>>>505 ubyte&0xDF >0
  825. >>>>>>>505 string x \b.%-.3s
  826. #IO.SYS
  827. >>>>>>472 ubyte&0xDF >0 or
  828. >>>>>>>472 string x \b %-.2s
  829. >>>>>>>>474 ubyte&0xDF >0
  830. >>>>>>>>>474 string x \b%-.6s
  831. >>>>>>>480 ubyte&0xDF >0
  832. >>>>>>>>480 string x \b.%-.3s
  833. #MSDOS.SYS
  834. >>>>>>>483 ubyte&0xDF >0 \b+
  835. >>>>>>>>483 string x \b%-.5s
  836. >>>>>>>>>488 ubyte&0xDF >0
  837. >>>>>>>>>>488 string x \b%-.3s
  838. >>>>>>>>491 ubyte&0xDF >0
  839. >>>>>>>>>491 string x \b.%-.3s
  840. #
  841. >>389 string Ungueltiges\ System\ \xFF\r\n
  842. >>>411 string E/A-Fehler\ \ \ \ \xFF\r\n
  843. >>>>428 string Datentraeger\ wechseln\ und\040
  844. >>>>>454 string Taste\ druecken\r \b, Microsoft Windows 95/98/ME Bootloader (GERMAN)
  845. # DOS names like IO.SYS,WINBOOT.SYS,MSDOS.SYS,WINBOOT.INI are 8 right space padded bytes+3 bytes
  846. >>>>>>472 string x %-.2s
  847. >>>>>>>474 ubyte&0xDF >0
  848. >>>>>>>>474 string x \b%-.5s
  849. >>>>>>>>479 ubyte&0xDF >0
  850. >>>>>>>>>479 string x \b%-.1s
  851. >>>>>>480 ubyte&0xDF >0
  852. >>>>>>>480 string x \b.%-.3s
  853. >>>>>>483 ubyte&0xDF >0 \b+
  854. >>>>>>>483 string x \b%-.5s
  855. >>>>>>>488 ubyte&0xDF >0
  856. >>>>>>>>488 string x \b%-.2s
  857. >>>>>>>>490 ubyte&0xDF >0
  858. >>>>>>>>>490 string x \b%-.1s
  859. >>>>>>>491 ubyte&0xDF >0
  860. >>>>>>>>491 string x \b.%-.3s
  861. >479 ubyte&0xDF >0
  862. >>416 string Kein\ System\ oder\040
  863. >>>433 string Laufwerksfehler
  864. >>>>450 string Wechseln\ und\ Taste\ dr\201cken \b, Microsoft DOS Bootloader (german)
  865. #IO.SYS
  866. >>>>>479 string x \b %-.2s
  867. >>>>>>481 ubyte&0xDF >0
  868. >>>>>>>481 string x \b%-.6s
  869. >>>>>487 ubyte&0xDF >0
  870. >>>>>>487 string x \b.%-.3s
  871. #MSDOS.SYS
  872. >>>>>>490 ubyte&0xDF >0 \b+
  873. >>>>>>>490 string x \b%-.5s
  874. >>>>>>>>495 ubyte&0xDF >0
  875. >>>>>>>>>495 string x \b%-.3s
  876. >>>>>>>498 ubyte&0xDF >0
  877. >>>>>>>>498 string x \b.%-.3s
  878. #
  879. >376 search/41 Non-System\ disk\ or\040
  880. >>395 search/41 disk\ error\r
  881. >>>407 search/41 Replace\ and\040
  882. >>>>419 search/41 press\ \b,
  883. >>>>419 search/41 strike\ \b, old
  884. >>>>426 search/41 any\ key\ when\ ready\r MS or PC-DOS bootloader
  885. #449 Disk\ Boot\ failure\r MS 3.21
  886. #466 Boot\ Failure\r MS 3.30
  887. >>>>>468 search/18 \0
  888. #IO.SYS,IBMBIO.COM
  889. >>>>>>&0 string x \b %-.2s
  890. >>>>>>>&-20 ubyte&0xDF >0
  891. >>>>>>>>&-1 string x \b%-.4s
  892. >>>>>>>>>&-16 ubyte&0xDF >0
  893. >>>>>>>>>>&-1 string x \b%-.2s
  894. >>>>>>&8 ubyte&0xDF >0 \b.
  895. >>>>>>>&-1 string x \b%-.3s
  896. #MSDOS.SYS,IBMDOS.COM
  897. >>>>>>&11 ubyte&0xDF >0 \b+
  898. >>>>>>>&-1 string x \b%-.5s
  899. >>>>>>>>&-6 ubyte&0xDF >0
  900. >>>>>>>>>&-1 string x \b%-.1s
  901. >>>>>>>>>>&-5 ubyte&0xDF >0
  902. >>>>>>>>>>>&-1 string x \b%-.2s
  903. >>>>>>>&7 ubyte&0xDF >0 \b.
  904. >>>>>>>>&-1 string x \b%-.3s
  905. >441 string Cannot\ load\ from\ harddisk.\n\r
  906. >>469 string Insert\ Systemdisk\040
  907. >>>487 string and\ press\ any\ key.\n\r \b, MS (2.11) DOS bootloader
  908. #>43 string \224R-LOADER\ \ SYS =label
  909. >54 string SYS
  910. >>324 string VASKK
  911. >>>495 string NEWLDR\0 \b, DR-DOS Bootloader (LOADER.SYS)
  912. #
  913. >98 string Press\ a\ key\ to\ retry\0\r
  914. >>120 string Cannot\ find\ file\ \0\r
  915. >>>139 string Disk\ read\ error\0\r
  916. >>>>156 string Loading\ ...\0 \b, DR-DOS (3.41) Bootloader
  917. #DRBIOS.SYS
  918. >>>>>44 ubyte&0xDF >0
  919. >>>>>>44 string x \b %-.6s
  920. >>>>>>>50 ubyte&0xDF >0
  921. >>>>>>>>50 string x \b%-.2s
  922. >>>>>>52 ubyte&0xDF >0
  923. >>>>>>>52 string x \b.%-.3s
  924. #
  925. >70 string IBMBIO\ \ COM
  926. >>472 string Cannot\ load\ DOS!\040
  927. >>>489 string Any\ key\ to\ retry \b, DR-DOS Bootloader
  928. >>471 string Cannot\ load\ DOS\040
  929. >>487 string press\ key\ to\ retry \b, Open-DOS Bootloader
  930. #??
  931. >444 string KERNEL\ \ SYS
  932. >>314 string BOOT\ error! \b, FREE-DOS Bootloader
  933. >499 string KERNEL\ \ SYS
  934. >>305 string BOOT\ err!\0 \b, Free-DOS Bootloader
  935. >449 string KERNEL\ \ SYS
  936. >>319 string BOOT\ error! \b, FREE-DOS 0.5 Bootloader
  937. #
  938. >449 string Loading\ FreeDOS
  939. >>0x1AF ulelong >0 \b, FREE-DOS 0.95,1.0 Bootloader
  940. >>>497 ubyte&0xDF >0
  941. >>>>497 string x \b %-.6s
  942. >>>>>503 ubyte&0xDF >0
  943. >>>>>>503 string x \b%-.1s
  944. >>>>>>>504 ubyte&0xDF >0
  945. >>>>>>>>504 string x \b%-.1s
  946. >>>>505 ubyte&0xDF >0
  947. >>>>>505 string x \b.%-.3s
  948. #
  949. >331 string Error!.0 \b, FREE-DOS 1.0 bootloader
  950. #
  951. >125 string Loading\ FreeDOS...\r
  952. >>311 string BOOT\ error!\r \b, FREE-DOS bootloader
  953. >>>441 ubyte&0xDF >0
  954. >>>>441 string x \b %-.6s
  955. >>>>>447 ubyte&0xDF >0
  956. >>>>>>447 string x \b%-.1s
  957. >>>>>>>448 ubyte&0xDF >0
  958. >>>>>>>>448 string x \b%-.1s
  959. >>>>449 ubyte&0xDF >0
  960. >>>>>449 string x \b.%-.3s
  961. >124 string FreeDOS\0
  962. >>331 string \ err\0 \b, FREE-DOS BETa 0.9 Bootloader
  963. # DOS names like KERNEL.SYS,KERNEL16.SYS,KERNEL32.SYS,METAKERN.SYS are 8 right space padded bytes+3 bytes
  964. >>>497 ubyte&0xDF >0
  965. >>>>497 string x \b %-.6s
  966. >>>>>503 ubyte&0xDF >0
  967. >>>>>>503 string x \b%-.1s
  968. >>>>>>>504 ubyte&0xDF >0
  969. >>>>>>>>504 string x \b%-.1s
  970. >>>>505 ubyte&0xDF >0
  971. >>>>>505 string x \b.%-.3s
  972. >>333 string \ err\0 \b, FREE-DOS BEta 0.9 Bootloader
  973. >>>497 ubyte&0xDF >0
  974. >>>>497 string x \b %-.6s
  975. >>>>>503 ubyte&0xDF >0
  976. >>>>>>503 string x \b%-.1s
  977. >>>>>>>504 ubyte&0xDF >0
  978. >>>>>>>>504 string x \b%-.1s
  979. >>>>505 ubyte&0xDF >0
  980. >>>>>505 string x \b.%-.3s
  981. >>334 string \ err\0 \b, FREE-DOS Beta 0.9 Bootloader
  982. >>>497 ubyte&0xDF >0
  983. >>>>497 string x \b %-.6s
  984. >>>>>503 ubyte&0xDF >0
  985. >>>>>>503 string x \b%-.1s
  986. >>>>>>>504 ubyte&0xDF >0
  987. >>>>>>>>504 string x \b%-.1s
  988. >>>>505 ubyte&0xDF >0
  989. >>>>>505 string x \b.%-.3s
  990. >336 string Error!\040
  991. >>343 string Hit\ a\ key\ to\ reboot. \b, FREE-DOS Beta 0.9sr1 Bootloader
  992. >>>497 ubyte&0xDF >0
  993. >>>>497 string x \b %-.6s
  994. >>>>>503 ubyte&0xDF >0
  995. >>>>>>503 string x \b%-.1s
  996. >>>>>>>504 ubyte&0xDF >0
  997. >>>>>>>>504 string x \b%-.1s
  998. >>>>505 ubyte&0xDF >0
  999. >>>>>505 string x \b.%-.3s
  1000. # added by Joerg Jenderek
  1001. # https://www.visopsys.org/
  1002. # https://partitionlogic.org.uk/
  1003. # OEM-ID=Visopsys
  1004. >478 ulelong 0
  1005. >>(1.b+326) string I/O\ Error\ reading\040
  1006. >>>(1.b+344) string Visopsys\ loader\r
  1007. >>>>(1.b+361) string Press\ any\ key\ to\ continue.\r \b, Visopsys loader
  1008. # http://alexfru.chat.ru/epm.html#bootprog
  1009. >494 ubyte >0x4D
  1010. >>495 string >E
  1011. >>>495 string <S
  1012. #OEM-ID is not reliable
  1013. >>>>3 string BootProg
  1014. # It just looks for a program file name at the root directory
  1015. # and loads corresponding file with following execution.
  1016. # DOS names like STARTUP.BIN,STARTUPC.COM,STARTUPE.EXE are 8 right space padded bytes+3 bytes
  1017. >>>>499 ubyte&0xDF >0 \b, COM/EXE Bootloader
  1018. >>>>>499 use DOS-filename
  1019. #If the boot sector fails to read any other sector,
  1020. #it prints a very short message ("RE") to the screen and hangs the computer.
  1021. #If the boot sector fails to find needed program in the root directory,
  1022. #it also hangs with another message ("NF").
  1023. >>>>>492 string RENF \b, FAT (12 bit)
  1024. >>>>>495 string RENF \b, FAT (16 bit)
  1025. #If the boot sector fails to read any other sector,
  1026. #it prints a very short message ("RE") to the screen and hangs the computer.
  1027. # x86 bootloader end
  1028. # added by Joerg Jenderek at Feb 2013 according to https://thestarman.pcministry.com/asm/mbr/MSWIN41.htm#FSINFO
  1029. # and https://en.wikipedia.org/wiki/File_Allocation_Table#FS_Information_Sector
  1030. >0 string RRaA
  1031. >>0x1E4 string rrAa \b, FSInfosector
  1032. #>>0x1FC uleshort =0 SHOULD BE ZERO
  1033. >>>0x1E8 ulelong <0xffffffff \b, %u free clusters
  1034. >>>0x1EC ulelong <0xffffffff \b, last allocated cluster %u
  1035. # updated by Joerg Jenderek at Sep 2007
  1036. >3 ubyte 0
  1037. #no active flag
  1038. >>446 ubyte 0
  1039. # partition 1 not empty
  1040. >>>450 ubyte >0
  1041. # partitions 3,4 empty
  1042. >>>>482 ubyte 0
  1043. >>>>>498 ubyte 0
  1044. # partition 2 ID=0,5,15
  1045. >>>>>>466 ubyte <0x10
  1046. >>>>>>>466 ubyte 0x05 \b, extended partition table
  1047. >>>>>>>466 ubyte 0x0F \b, extended partition table (LBA)
  1048. >>>>>>>466 ubyte 0x0 \b, extended partition table (last)
  1049. # DOS x86 sector separated and moved from "DOS/MBR boot sector" by Joerg Jenderek at May 2011
  1050. >0x200 lelong 0x82564557 \b, BSD disklabel
  1051. # by Joerg Jenderek at Apr 2013
  1052. # Print the DOS filenames from directory entry form with 8 right space padded bytes + 3 bytes for extension
  1053. # like IO.SYS. MSDOS.SYS , KERNEL.SYS , DRBIO.SYS
  1054. 0 name DOS-filename
  1055. # space=0x20 (00100000b) means empty
  1056. >0 ubyte&0xDF >0
  1057. >>0 ubyte x \b%c
  1058. >>>1 ubyte&0xDF >0
  1059. >>>>1 ubyte x \b%c
  1060. >>>>>2 ubyte&0xDF >0
  1061. >>>>>>2 ubyte x \b%c
  1062. >>>>>>>3 ubyte&0xDF >0
  1063. >>>>>>>>3 ubyte x \b%c
  1064. >>>>>>>>>4 ubyte&0xDF >0
  1065. >>>>>>>>>>4 ubyte x \b%c
  1066. >>>>>>>>>>>5 ubyte&0xDF >0
  1067. >>>>>>>>>>>>5 ubyte x \b%c
  1068. >>>>>>>>>>>>>6 ubyte&0xDF >0
  1069. >>>>>>>>>>>>>>6 ubyte x \b%c
  1070. >>>>>>>>>>>>>>>7 ubyte&0xDF >0
  1071. >>>>>>>>>>>>>>>>7 ubyte x \b%c
  1072. # DOS filename extension
  1073. >>8 ubyte&0xDF >0 \b.
  1074. >>>8 ubyte x \b%c
  1075. >>>>9 ubyte&0xDF >0
  1076. >>>>>9 ubyte x \b%c
  1077. >>>>>>10 ubyte&0xDF >0
  1078. >>>>>>>10 ubyte x \b%c
  1079. # Print 2 following DOS filenames from directory entry form
  1080. # like IO.SYS+MSDOS.SYS or ibmbio.com+ibmdos.com
  1081. 0 name 2xDOS-filename
  1082. # display 1 space
  1083. >0 ubyte x \b
  1084. >0 use DOS-filename
  1085. >11 ubyte x \b+
  1086. >11 use DOS-filename
  1087. # https://en.wikipedia.org/wiki/Master_boot_record#PTE
  1088. # display standard partition table
  1089. 0 name partition-table
  1090. #>0 ubyte x PARTITION-TABLE
  1091. # test and display 1st til 4th partition table entry
  1092. >0 use partition-entry-test
  1093. >16 use partition-entry-test
  1094. >32 use partition-entry-test
  1095. >48 use partition-entry-test
  1096. # test for entry of partition table
  1097. 0 name partition-entry-test
  1098. # partition type ID > 0
  1099. >4 ubyte >0
  1100. # active flag 0
  1101. >>0 ubyte 0
  1102. >>>0 use partition-entry
  1103. # active flag 0x80, 0x81, ...
  1104. >>0 ubyte >0x7F
  1105. >>>0 use partition-entry
  1106. # Print entry of partition table
  1107. 0 name partition-entry
  1108. # partition type ID > 0
  1109. >4 ubyte >0 \b; partition
  1110. >>64 leshort 0xAA55 1
  1111. >>48 leshort 0xAA55 2
  1112. >>32 leshort 0xAA55 3
  1113. >>16 leshort 0xAA55 4
  1114. >>4 ubyte x : ID=%#x
  1115. >>0 ubyte&0x80 0x80 \b, active
  1116. >>0 ubyte >0x80 %#x
  1117. >>1 ubyte x \b, start-CHS (
  1118. >>1 use partition-chs
  1119. >>5 ubyte x \b), end-CHS (
  1120. >>5 use partition-chs
  1121. >>8 ulelong x \b), startsector %u
  1122. >>12 ulelong x \b, %u sectors
  1123. # Print cylinder,head,sector (CHS) of partition entry
  1124. 0 name partition-chs
  1125. # cylinder
  1126. >1 ubyte x \b0x
  1127. >1 ubyte&0xC0 0x40 \b1
  1128. >1 ubyte&0xC0 0x80 \b2
  1129. >1 ubyte&0xC0 0xC0 \b3
  1130. >2 ubyte x \b%x
  1131. # head
  1132. >0 ubyte x \b,%u
  1133. # sector
  1134. >1 ubyte&0x3F x \b,%u
  1135. # FATX
  1136. 0 string FATX FATX filesystem data
  1137. # romfs filesystems - Juan Cespedes <cespedes@debian.org>
  1138. 0 string -rom1fs- romfs filesystem, version 1
  1139. >8 belong x %d bytes,
  1140. >16 string x named %s.
  1141. # netboot image - Juan Cespedes <cespedes@debian.org>
  1142. 0 lelong 0x1b031336L Netboot image,
  1143. >4 lelong&0xFFFFFF00 0
  1144. >>4 lelong&0x100 0x000 mode 2
  1145. >>4 lelong&0x100 0x100 mode 3
  1146. >4 lelong&0xFFFFFF00 !0 unknown mode
  1147. 0x18b string OS/2 OS/2 Boot Manager
  1148. # updated by Joerg Jenderek at Oct 2008 and Sep 2012
  1149. # https://syslinux.zytor.com/iso.php
  1150. # tested with versions 1.47,1.48,1.49,1.50,1.62,1.76,2.00,2.10;3.00,3.11,3.31,;3.70,3.71,3.73,3.75,3.80,3.82,3.84,3.86,4.01,4.03 and 4.05
  1151. # assembler instructions: cli;jmp 0:7Cyy (yy=0x40,0x5e,0x6c,0x6e,0x77);nop;nop
  1152. 0 ulequad&0x909000007cc0eafa 0x909000007c40eafa
  1153. >631 search/689 ISOLINUX\ isolinux Loader
  1154. >>&0 string x (version %-4.4s)
  1155. # https://syslinux.zytor.com/pxe.php
  1156. # assembler instructions: jmp 7C05
  1157. 0 ulelong 0x007c05ea pxelinux loader (version 2.13 or older)
  1158. # assembler instructions: pushfd;pushad
  1159. 0 ulelong 0x60669c66 pxelinux loader
  1160. # assembler instructions: jmp 05
  1161. 0 ulelong 0xc00005ea pxelinux loader (version 3.70 or newer)
  1162. # https://syslinux.zytor.com/wiki/index.php/SYSLINUX
  1163. 0 string LDLINUX\ SYS\ SYSLINUX loader
  1164. >12 string x (older version %-4.4s)
  1165. 0 string \r\nSYSLINUX\ SYSLINUX loader
  1166. >11 string x (version %-4.4s)
  1167. # syslinux updated and separated from "DOS/MBR boot sector" by Joerg Jenderek at Sep 2012
  1168. # assembler instructions: jmp yy (yy=0x3c,0x58);nop;"SYSLINUX"
  1169. 0 ulelong&0x80909bEB 0x009018EB
  1170. # OEM-ID not always "SYSLINUX"
  1171. >434 search/47 Boot\ failed
  1172. # followed by \r\n\0 or :\
  1173. >>482 search/132 \0LDLINUX\ SYS Syslinux bootloader (version 2.13 or older)
  1174. >>1 ubyte 0x58 Syslinux bootloader (version 3.0-3.9)
  1175. >459 search/30 Boot\ error\r\n\0
  1176. >>1 ubyte 0x58 Syslinux bootloader (version 3.10 or newer)
  1177. # SYSLINUX MBR updated and separated from "DOS/MBR boot sector" by Joerg Jenderek at Sep 2012
  1178. # assembler instructions: mov di,0600h;mov cx,0100h
  1179. 16 search/4 \xbf\x00\x06\xb9\x00\x01
  1180. # to display SYSLINUX MBR (36) before old DOS/MBR boot sector one with partition table (strength=50+21)
  1181. !:strength +36
  1182. >94 search/249 Missing\ operating\ system
  1183. # followed by \r for versions older 3.35 , .\r for versions newer 3.52 and point for other
  1184. # skip Ranish MBR
  1185. >>408 search/4 HD1/\0
  1186. >>408 default x
  1187. >>>250 search/118 \0Operating\ system\ load SYSLINUX MBR
  1188. # followed by "ing " or space
  1189. >>>>292 search/98 error
  1190. >>>>>&0 string \r (version 3.35 or older)
  1191. >>>>>&0 string .\r (version 3.52 or newer)
  1192. >>>>>&0 default x (version 3.36-3.51 )
  1193. >368 search/106 \0Disk\ error\ on\ boot\r\n SYSLINUX GPT-MBR
  1194. >>156 search/10 \0Boot\ partition\ not\ found\r\n
  1195. >>>270 search/10 \0OS\ not\ bootable\r\n (version 3.86 or older)
  1196. >>174 search/10 \0Missing\ OS\r\n
  1197. >>>189 search/10 \0Multiple\ active\ partitions\r\n (version 4.00 or newer)
  1198. # SYSLINUX END
  1199. # NetBSD mbr variants (master-boot-code version 1.22) added by Joerg Jenderek at Nov 2012
  1200. # assembler instructions: xor ax,ax;mov ax,ss;mov sp,0x7c00;mov ax,
  1201. 0 ubequad 0x31c08ed0bc007c8e
  1202. # mbr_bootsel magic before partition table not reliable with small ipl fragments
  1203. #>444 uleshort 0xb5e1
  1204. >0004 uleshort x
  1205. # ERRorTeXT
  1206. >>181 search/166 Error\ \0\r\n NetBSD mbr
  1207. # NT Drive Serial Number https://thestarman.pcministry.com/asm/mbr/Win2kmbr.htm#DS
  1208. >>>0x1B8 ubelong >0 \b,Serial %#-.8x
  1209. # BOOTSEL definitions contains assembler instructions: int 0x13;pop dx;push dx;push dx
  1210. >>>0xbb search/71 \xcd\x13\x5a\x52\x52 \b,bootselector
  1211. # BOOT_EXTENDED definitions contains assembler instructions:
  1212. # xchg ecx,edx;addl ecx,edx;movw lba_info,si;movb 0x42,ah;pop dx;push dx;int 0x13
  1213. >>>0x96 search/1 \x66\x87\xca\x66\x01\xca\x66\x89\x16\x3a\x07\xbe\x32\x07\xb4\x42\x5a\x52\xcd\x13 \b,boot extended
  1214. # COM_PORT_VAL definitions contains assembler instructions: outb al,dx;add 5,dl;inb %dx;test 0x40,al
  1215. >>>0x130 search/55 \xee\x80\xc2\x05\xec\xa8\x40 \b,serial IO
  1216. # not TERSE_ERROR
  1217. >>>196 search/106 No\ active\ partition\0
  1218. >>>>&0 string Disk\ read\ error\0
  1219. >>>>>&0 string No\ operating\ system\0 \b,verbose
  1220. # not NO_CHS definitions contains assembler instructions: pop dx;push dx;movb $8,ah;int0x13
  1221. >>>0x7d search/7 \x5a\x52\xb4\x08\xcd\x13 \b,CHS
  1222. # not NO_LBA_CHECK definitions contains assembler instructions: movw 0x55aa,bx;movb 0x41,ah;pop dx;push dx;int 0x13
  1223. >>>0xa4 search/84 \xbb\xaa\x55\xb4\x41\x5a\x52\xcd\x13 \b,LBA-check
  1224. # assembler instructions: movw nametab,bx
  1225. >>>0x26 search/21 \xBB\x94\x07
  1226. # not NO_BANNER definitions contains assembler instructions: mov banner,si;call message_crlf
  1227. >>>>&-9 ubequad&0xBE00f0E800febb94 0xBE0000E80000bb94
  1228. >>>>>181 search/166 Error\ \0
  1229. # "a: disk" , "Fn: diskn" or "NetBSD MBR boot"
  1230. >>>>>>&3 string x \b,"%s"
  1231. >>>446 use partition-table
  1232. # Andrea Mazzoleni AdvanceCD mbr loader of http://advancemame.sourceforge.net/boot-readme.html
  1233. # added by Joerg Jenderek at Nov 2012 for versions 1.3 - 1.4
  1234. # assembler instructions: jmp short 0x58;nop;ASCII
  1235. 0 ubequad&0xeb58908000000000 0xeb58900000000000
  1236. # assembler instructions: cli;xor ax,ax;mov ds,ax;mov es,ax;mov ss,
  1237. >(1.b+2) ubequad 0xfa31c08ed88ec08e
  1238. # Error messages at end of code
  1239. >>376 string No\ operating\ system\r\n\0
  1240. >>>398 string Disk\ error\r\n\0FDD\0HDD\0
  1241. >>>>419 string \ EBIOS\r\n\0 AdvanceMAME mbr
  1242. # Neil Turton mbr loader variant of https://www.chiark.greenend.org.uk/~neilt/mbr/
  1243. # added by Joerg Jenderek at Mar 2011 for versions 1.0.0 - 1.1.11
  1244. # for 1st version assembler instructions: cld;xor ax,ax;mov DS,ax;MOV ES,AX;mov SI,
  1245. # or cld;xor ax,ax;mov SS,ax;XOR SP,SP;mov DS,
  1246. 0 ulequad&0xcE1b40D48EC031FC 0x8E0000D08EC031FC
  1247. # pointer to the data starting with Neil Turton signature string
  1248. >(0x1BC.s) string NDTmbr
  1249. >>&-14 string 1234F\0 Turton mbr (
  1250. # parameters also viewed by install-mbr --list
  1251. >>>(0x1BC.s+7) ubyte x \b%u<=
  1252. >>>(0x1BC.s+9) ubyte x \bVersion<=%u
  1253. #>>>(0x1BC.s+8) ubyte x asm_flag_%x
  1254. >>>(0x1BC.s+8) ubyte&1 1 \b,Y2K-Fix
  1255. # variant used by testdisk of https://www.cgsecurity.org/wiki/Menu_MBRCode
  1256. >>>(0x1BC.s+8) ubyte&2 2 \b,TestDisk
  1257. #0x1~1,..,0x8~4,0x10~F,0x80~A enabled
  1258. #>>>(0x1BC.s+10) ubyte x \b,flags %#x
  1259. #0x0~1,0x1~2,...,0x3~4,0x4~F,0x7~D default boot
  1260. #>>>(0x1BC.s+11) ubyte x \b,cfg_def %#x
  1261. # for older versions
  1262. >>>(0x1BC.s+9) ubyte <2
  1263. #>>>>(0x1BC.s+12) ubyte 18 \b,%hhu/18 seconds
  1264. >>>>(0x1BC.s+12) ubyte !18 \b,%u/18 seconds
  1265. # floppy A: or B:
  1266. >>>>(0x1BC.s+13) ubyte <2 \b,floppy %#x
  1267. >>>>(0x1BC.s+13) ubyte >1
  1268. # 1st hard disc
  1269. #>>>>>(0x1BC.s+13) ubyte 0x80 \b,drive %#x
  1270. # not 1st hard disc
  1271. >>>>>(0x1BC.s+13) ubyte !0x80 \b,drive %#x
  1272. # for version >= 2 maximal timeout can be 65534
  1273. >>>(0x1BC.s+9) ubyte >1
  1274. #>>>>(0x1BC.s+12) uleshort 18 \b,%u/18 seconds
  1275. >>>>(0x1BC.s+12) uleshort !18 \b,%u/18 seconds
  1276. # floppy A: or B:
  1277. >>>>(0x1BC.s+14) ubyte <2 \b,floppy %#x
  1278. >>>>(0x1BC.s+14) ubyte >1
  1279. # 1st hard disc
  1280. #>>>>>(0x1BC.s+14) ubyte 0x80 \b,drive %#x
  1281. # not 1st hard disc
  1282. >>>>>(0x1BC.s+14) ubyte !0x80 \b,drive %#x
  1283. >>>0 ubyte x \b)
  1284. # added by Joerg Jenderek
  1285. # In the second sector (+0x200) are variables according to grub-0.97/stage2/asm.S or
  1286. # grub-1.94/kern/i386/pc/startup.S
  1287. # https://www.gnu.org/software/grub/manual/grub.html#Embedded-data
  1288. # usual values are marked with comments to get only information of strange GRUB loaders
  1289. 0x200 uleshort 0x70EA
  1290. # found only version 3.{1,2}
  1291. >0x206 ubeshort >0x0300
  1292. # GRUB version (0.5.)95,0.93,0.94,0.96,0.97 > "00"
  1293. >>0x212 ubyte >0x29
  1294. >>>0x213 ubyte >0x29
  1295. # not iso9660_stage1_5
  1296. #>>>0 ulelong&0x00BE5652 0x00BE5652
  1297. >>>>0x213 ubyte >0x29 GRand Unified Bootloader
  1298. # config_file for stage1_5 is 0xffffffff + default "/boot/grub/stage2"
  1299. >>>>0x217 ubyte 0xFF stage1_5
  1300. >>>>0x217 ubyte <0xFF stage2
  1301. >>>>0x206 ubyte x \b version %u
  1302. >>>>0x207 ubyte x \b.%u
  1303. # module_size for 1.94
  1304. >>>>0x208 ulelong <0xffffff \b, installed partition %u
  1305. #>>>>0x208 ulelong =0xffffff \b, %lu (default)
  1306. >>>>0x208 ulelong >0xffffff \b, installed partition %u
  1307. # GRUB 0.5.95 unofficial
  1308. >>>>0x20C ulelong&0x2E300000 0x2E300000
  1309. # 0=stage2 1=ffs 2=e2fs 3=fat 4=minix 5=reiserfs
  1310. >>>>>0x20C ubyte x \b, identifier %#x
  1311. #>>>>>0x20D ubyte =0 \b, LBA flag %#x (default)
  1312. >>>>>0x20D ubyte >0 \b, LBA flag %#x
  1313. # GRUB version as string
  1314. >>>>>0x20E string >\0 \b, GRUB version %-s
  1315. # for stage1_5 is 0xffffffff + config_file "/boot/grub/stage2" default
  1316. >>>>>>0x215 ulong 0xffffffff
  1317. >>>>>>>0x219 string >\0 \b, configuration file %-s
  1318. >>>>>>0x215 ulong !0xffffffff
  1319. >>>>>>>0x215 string >\0 \b, configuration file %-s
  1320. # newer GRUB versions
  1321. >>>>0x20C ulelong&0x2E300000 !0x2E300000
  1322. ##>>>>>0x20C ulelong =0 \b, saved entry %d (usual)
  1323. >>>>>0x20C ulelong >0 \b, saved entry %d
  1324. # for 1.94 contains kernel image size
  1325. # for 0.93,0.94,0.96,0.97
  1326. # 0=stage2 1=ffs 2=e2fs 3=fat 4=minix 5=reiserfs 6=vstafs 7=jfs 8=xfs 9=iso9660 a=ufs2
  1327. >>>>>0x210 ubyte x \b, identifier %#x
  1328. # The flag for LBA forcing is in most cases 0
  1329. #>>>>>0x211 ubyte =0 \b, LBA flag %#x (default)
  1330. >>>>>0x211 ubyte >0 \b, LBA flag %#x
  1331. # GRUB version as string
  1332. >>>>>0x212 string >\0 \b, GRUB version %-s
  1333. # for stage1_5 is 0xffffffff + config_file "/boot/grub/stage2" default
  1334. >>>>>0x217 ulong 0xffffffff
  1335. >>>>>>0x21b string >\0 \b, configuration file %-s
  1336. >>>>>0x217 ulong !0xffffffff
  1337. >>>>>>0x217 string >\0 \b, configuration file %-s
  1338. # DOS x86 sector updated and separated from "DOS/MBR boot sector" by Joerg Jenderek at May 2011
  1339. # JuMP short bootcodeoffset NOP assembler instructions will usually be EB xx 90
  1340. # over BIOS parameter block (BPB)
  1341. # https://thestarman.pcministry.com/asm/2bytejumps.htm#FWD
  1342. # older drives may use Near JuMP instruction E9 xx xx
  1343. # minimal short forward jump found 0x29 for bootloaders or 0x0
  1344. # maximal short forward jump is 0x7f
  1345. # OEM-ID is empty or contain readable bytes
  1346. 0 ulelong&0x804000E9 0x000000E9
  1347. !:strength +60
  1348. # mtools-3.9.8/msdos.h
  1349. # usual values are marked with comments to get only information of strange FAT systems
  1350. # valid sectorsize must be a power of 2 from 32 to 32768
  1351. >11 uleshort&0x001f 0
  1352. >>11 uleshort <32769
  1353. >>>11 uleshort >31
  1354. >>>>21 ubyte&0xf0 0xF0
  1355. >>>>>0 ubyte 0xEB DOS/MBR boot sector
  1356. >>>>>>1 ubyte x \b, code offset %#x+2
  1357. >>>>>0 ubyte 0xE9
  1358. >>>>>>1 uleshort x \b, code offset %#x+3
  1359. >>>>>3 string >\0 \b, OEM-ID "%-.8s"
  1360. #http://mirror.href.com/thestarman/asm/debug/debug2.htm#IHC
  1361. >>>>>>8 string IHC \b cached by Windows 9M
  1362. >>>>>11 uleshort >512 \b, Bytes/sector %u
  1363. #>>>>>11 uleshort =512 \b, Bytes/sector %u=512 (usual)
  1364. >>>>>11 uleshort <512 \b, Bytes/sector %u
  1365. >>>>>13 ubyte >1 \b, sectors/cluster %u
  1366. #>>>>>13 ubyte =1 \b, sectors/cluster %u (usual on Floppies)
  1367. # for lazy FAT32 implementation like Transcend digital photo frame PF830
  1368. >>>>>82 string/c fat32
  1369. >>>>>>14 uleshort !32 \b, reserved sectors %u
  1370. #>>>>>>14 uleshort =32 \b, reserved sectors %u (usual Fat32)
  1371. >>>>>82 string/c !fat32
  1372. >>>>>>14 uleshort >1 \b, reserved sectors %u
  1373. #>>>>>>14 uleshort =1 \b, reserved sectors %u (usual FAT12,FAT16)
  1374. #>>>>>>14 uleshort 0 \b, reserved sectors %u (usual NTFS)
  1375. >>>>>16 ubyte >2 \b, FATs %u
  1376. #>>>>>16 ubyte =2 \b, FATs %u (usual)
  1377. >>>>>16 ubyte =1 \b, FAT %u
  1378. >>>>>16 ubyte >0
  1379. >>>>>17 uleshort >0 \b, root entries %u
  1380. #>>>>>17 uleshort =0 \b, root entries %hu=0 (usual Fat32)
  1381. >>>>>19 uleshort >0 \b, sectors %u (volumes <=32 MB)
  1382. #>>>>>19 uleshort =0 \b, sectors %hu=0 (usual Fat32)
  1383. >>>>>21 ubyte >0xF0 \b, Media descriptor %#x
  1384. #>>>>>21 ubyte =0xF0 \b, Media descriptor %#x (usual floppy)
  1385. >>>>>21 ubyte <0xF0 \b, Media descriptor %#x
  1386. >>>>>22 uleshort >0 \b, sectors/FAT %u
  1387. #>>>>>22 uleshort =0 \b, sectors/FAT %hu=0 (usual Fat32)
  1388. >>>>>24 uleshort x \b, sectors/track %u
  1389. >>>>>26 ubyte >2 \b, heads %u
  1390. #>>>>>26 ubyte =2 \b, heads %u (usual floppy)
  1391. >>>>>26 ubyte =1 \b, heads %u
  1392. # valid only for sector sizes with more then 32 Bytes
  1393. >>>>>11 uleshort >32
  1394. # https://en.wikipedia.org/wiki/Design_of_the_FAT_file_system#Extended_BIOS_Parameter_Block
  1395. # skip for values 2,2Ah,70h,73h,DFh
  1396. # and continue for extended boot signature values 0,28h,29h,80h
  1397. >>>>>>38 ubyte&0x56 =0
  1398. >>>>>>>28 ulelong >0 \b, hidden sectors %u
  1399. #>>>>>>>28 ulelong =0 \b, hidden sectors %u (usual floppy)
  1400. >>>>>>>32 ulelong >0 \b, sectors %u (volumes > 32 MB)
  1401. #>>>>>>>32 ulelong =0 \b, sectors %u (volumes > 32 MB)
  1402. # FAT<32 bit specific
  1403. >>>>>>>82 string/c !fat32
  1404. #>>>>>>>>36 ubyte 0x80 \b, physical drive %#x=0x80 (usual harddisk)
  1405. #>>>>>>>>36 ubyte 0 \b, physical drive %#x=0 (usual floppy)
  1406. >>>>>>>>36 ubyte !0x80
  1407. >>>>>>>>>36 ubyte !0 \b, physical drive %#x
  1408. # VGA-copy CRC or
  1409. # in Windows NT bit 0 is a dirty flag to request chkdsk at boot time. bit 1 requests surface scan too
  1410. >>>>>>>>37 ubyte >0 \b, reserved %#x
  1411. #>>>>>>>>37 ubyte =0 \b, reserved %#x
  1412. # extended boot signature value is 0x80 for NTFS, 0x28 or 0x29 for others
  1413. >>>>>>>>38 ubyte !0x29 \b, dos < 4.0 BootSector (%#x)
  1414. >>>>>>>>38 ubyte&0xFE =0x28
  1415. >>>>>>>>>39 ulelong x \b, serial number %#x
  1416. >>>>>>>>38 ubyte =0x29
  1417. >>>>>>>>>43 string <NO\ NAME \b, label: "%11.11s"
  1418. >>>>>>>>>43 string >NO\ NAME \b, label: "%11.11s"
  1419. >>>>>>>>>43 string =NO\ NAME \b, unlabeled
  1420. # there exist some old floppies without word FAT at offset 54
  1421. # a word like "FATnm " is only a hint for a FAT size on nm-bits
  1422. # Normally the number of clusters is calculated by the values of BPP.
  1423. # if it is small enough FAT is 12 bit, if it is too big enough FAT is 32 bit,
  1424. # otherwise FAT is 16 bit.
  1425. # http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/determining-fat-widths.html
  1426. >>>>>82 string/c !fat32
  1427. >>>>>>54 string FAT12 \b, FAT (12 bit)
  1428. >>>>>>54 string FAT16 \b, FAT (16 bit)
  1429. >>>>>>54 default x
  1430. # determinate FAT bit size by media descriptor
  1431. # small floppies implies FAT12
  1432. >>>>>>>21 ubyte <0xF0 \b, FAT (12 bit by descriptor)
  1433. # with media descriptor F0h floppy or maybe superfloppy with FAT16
  1434. >>>>>>>21 ubyte =0xF0
  1435. # superfloppy (many sectors) implies FAT16
  1436. >>>>>>>>32 ulelong >0xFFFF \b, FAT (16 bit by descriptor+sectors)
  1437. # no superfloppy with media descriptor F0h implies FAT12
  1438. >>>>>>>>32 default x \b, FAT (12 bit by descriptor+sectors)
  1439. # with media descriptor F8h floppy or hard disc with FAT12 or FAT16
  1440. >>>>>>>21 ubyte =0xF8
  1441. # 360 KiB with media descriptor F8h, 9 sectors per track ,single sided floppy implies FAT12
  1442. >>>>>>>>19 ubequad 0xd002f80300090001 \b, FAT (12 bit by descriptor+geometry)
  1443. # hard disc with FAT12 or FAT16
  1444. >>>>>>>>19 default x \b, FAT (1Y bit by descriptor)
  1445. # with media descriptor FAh floppy, RAM disc with FAT12 or FAT16 or Tandy hard disc
  1446. >>>>>>>21 ubyte =0xFA
  1447. # 320 KiB with media descriptor FAh, 8 sectors per track ,single sided floppy implies FAT12
  1448. >>>>>>>>19 ubequad 0x8002fa0200080001 \b, FAT (12 bit by descriptor+geometry)
  1449. # RAM disc with FAT12 or FAT16 or Tandy hard disc
  1450. >>>>>>>>19 default x \b, FAT (1Y bit by descriptor)
  1451. # others are floppy
  1452. >>>>>>>21 default x \b, FAT (12 bit by descriptor)
  1453. # FAT32 bit specific
  1454. >>>>>82 string/c fat32 \b, FAT (32 bit)
  1455. >>>>>>36 ulelong x \b, sectors/FAT %u
  1456. # https://technet.microsoft.com/en-us/library/cc977221.aspx
  1457. >>>>>>40 uleshort >0 \b, extension flags %#x
  1458. #>>>>>>40 uleshort =0 \b, extension flags %hu
  1459. >>>>>>42 uleshort >0 \b, fsVersion %u
  1460. #>>>>>>42 uleshort =0 \b, fsVersion %u (usual)
  1461. >>>>>>44 ulelong >2 \b, rootdir cluster %u
  1462. #>>>>>>44 ulelong =2 \b, rootdir cluster %u
  1463. #>>>>>>44 ulelong =1 \b, rootdir cluster %u
  1464. >>>>>>48 uleshort >1 \b, infoSector %u
  1465. #>>>>>>48 uleshort =1 \b, infoSector %u (usual)
  1466. >>>>>>48 uleshort <1 \b, infoSector %u
  1467. # 0 or 0xFFFF instead of usual 6 means no backup sector
  1468. >>>>>>50 uleshort =0xFFFF \b, no Backup boot sector
  1469. >>>>>>50 uleshort =0 \b, no Backup boot sector
  1470. #>>>>>>50 uleshort =6 \b, Backup boot sector %u (usual)
  1471. >>>>>>50 default x
  1472. >>>>>>>50 uleshort x \b, Backup boot sector %u
  1473. # corrected by Joerg Jenderek at Feb 2011 according to https://thestarman.pcministry.com/asm/mbr/MSWIN41.htm#FSINFO
  1474. >>>>>>52 ulelong >0 \b, reserved1 %#x
  1475. >>>>>>56 ulelong >0 \b, reserved2 %#x
  1476. >>>>>>60 ulelong >0 \b, reserved3 %#x
  1477. # same structure as FAT1X
  1478. #>>>>>>64 ubyte =0x80 \b, physical drive %#x=80 (usual harddisk)
  1479. #>>>>>>64 ubyte =0 \b, physical drive %#x=0 (usual floppy)
  1480. >>>>>>64 ubyte !0x80
  1481. >>>>>>>64 ubyte >0 \b, physical drive %#x
  1482. # in Windows NT bit 0 is a dirty flag to request chkdsk at boot time. bit 1 requests surface scan too
  1483. >>>>>>65 ubyte >0 \b, reserved %#x
  1484. >>>>>>66 ubyte !0x29 \b, dos < 4.0 BootSector (%#x)
  1485. >>>>>>66 ubyte =0x29
  1486. >>>>>>>67 ulelong x \b, serial number %#x
  1487. >>>>>>>71 string <NO\ NAME \b, label: "%11.11s"
  1488. >>>>>>>71 string >NO\ NAME \b, label: "%11.11s"
  1489. >>>>>>>71 string =NO\ NAME \b, unlabeled
  1490. # additional tests for floppy image added by Joerg Jenderek
  1491. # no fixed disk
  1492. >>>>>21 ubyte !0xF8
  1493. # floppy media with 12 bit FAT
  1494. >>>>>>54 string !FAT16
  1495. # test for FAT after bootsector
  1496. >>>>>>>(11.s) ulelong&0x00ffffF0 0x00ffffF0 \b, followed by FAT
  1497. # floppy image
  1498. !:mime application/x-ima
  1499. # NTFS specific added by Joerg Jenderek at Mar 2011 according to https://thestarman.pcministry.com/asm/mbr/NTFSBR.htm
  1500. # and http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/bios-parameter-block.html
  1501. # 0 FATs
  1502. >>>>>16 ubyte =0
  1503. # 0 root entries
  1504. >>>>>>17 uleshort =0
  1505. # 0 DOS sectors
  1506. >>>>>>>19 uleshort =0
  1507. # 0 sectors/FAT
  1508. # dos < 4.0 BootSector value found is 0x80
  1509. #38 ubyte =0x80 \b, dos < 4.0 BootSector (%#x)
  1510. >>>>>>>>22 uleshort =0 \b; NTFS
  1511. >>>>>>>>>24 uleshort >0 \b, sectors/track %u
  1512. >>>>>>>>>36 ulelong !0x800080 \b, physical drive %#x
  1513. >>>>>>>>>40 ulequad >0 \b, sectors %lld
  1514. >>>>>>>>>48 ulequad >0 \b, $MFT start cluster %lld
  1515. >>>>>>>>>56 ulequad >0 \b, $MFTMirror start cluster %lld
  1516. # Values 0 to 127 represent MFT record sizes of 0 to 127 clusters.
  1517. # Values 128 to 255 represent MFT record sizes of 2^(256-N) bytes.
  1518. >>>>>>>>>64 lelong <256
  1519. >>>>>>>>>>64 lelong <128 \b, clusters/RecordSegment %d
  1520. >>>>>>>>>>64 ubyte >127 \b, bytes/RecordSegment 2^(-1*%i)
  1521. # Values 0 to 127 represent index block sizes of 0 to 127 clusters.
  1522. # Values 128 to 255 represent index block sizes of 2^(256-N) byte
  1523. >>>>>>>>>68 ulelong <256
  1524. >>>>>>>>>>68 ulelong <128 \b, clusters/index block %d
  1525. #>>>>>>>>>>68 ulelong >127 \b, bytes/index block 2^(256-%d)
  1526. >>>>>>>>>>68 ubyte >127 \b, bytes/index block 2^(-1*%i)
  1527. >>>>>>>>>72 ulequad x \b, serial number 0%llx
  1528. >>>>>>>>>80 ulelong >0 \b, checksum %#x
  1529. #>>>>>>>>>80 ulelong =0 \b, checksum %#x=0 (usual)
  1530. # unicode loadername size jump
  1531. >>>>>>>>>(0x200.s*2) ubyte x
  1532. # in next sector loadername terminated by unicode CTRL-D and $
  1533. >>>>>>>>>>&0x1FF ulequad&0x0000FFffFFffFF00 0x0000002400040000 \b; contains
  1534. # if 2nd NTFS sectors is found then assume whole filesystem
  1535. #!:mime application/x-raw-disk-image
  1536. !:ext img/bin/ntfs
  1537. >>>>>>>>>>>0x200 use ntfs-sector2
  1538. # For 2nd NTFS sector added by Joerg Jenderek at Jan 2013, Mar 2019
  1539. # https://thestarman.pcministry.com/asm/mbr/NTFSbrHexEd.htm
  1540. # unused assembler instructions short JMP y2;NOP;NOP
  1541. 0x056 ulelong&0xFFFF0FFF 0x909002EB NTFS
  1542. #!:mime application/octet-stream
  1543. !:ext bin
  1544. >0 use ntfs-sector2
  1545. # https://memory.dataram.com/products-and-services/software/ramdisk
  1546. # assembler instructions JMP C000;NOP
  1547. 0x056 ulelong 0x9000c0e9 NTFS
  1548. #!:mime application/octet-stream
  1549. !:ext bin
  1550. >0 use ntfs-sector2
  1551. # check for characteristics of second NTFS sector and then display loader name
  1552. 0 name ntfs-sector2
  1553. # number of utf16 characters of loadername
  1554. >0 uleshort <8
  1555. # unused assembler instructions JMP y2;NOP;NOP or JMP C000;NOP
  1556. >>0x056 ulelong&0xFF0000FD 0x900000E9
  1557. # loadernames are NTLDR,CMLDR,PELDR,$LDR$ or BOOTMGR
  1558. >>>0x002 lestring16 x bootstrap %-5.5s
  1559. # check for 7 character length of loader name like BOOTMGR
  1560. >>>0 uleshort 7
  1561. >>>>0x0c lestring16 x \b%-2.2s
  1562. ### DOS,NTFS boot sectors end
  1563. # ntfsclone-image is a special save format for NTFS volumes,
  1564. # created and restored by the ntfsclone program
  1565. 0 string \0ntfsclone-image ntfsclone image,
  1566. >0x10 byte x version %d.
  1567. >0x11 byte x \b%d,
  1568. >0x12 lelong x cluster size %d,
  1569. >0x16 lequad x device size %lld,
  1570. >0x1e lequad x %lld total clusters,
  1571. >0x26 lequad x %lld clusters in use
  1572. 9564 lelong 0x00011954 Unix Fast File system [v1] (little-endian),
  1573. >8404 string x last mounted on %s,
  1574. #>9504 ledate x last checked at %s,
  1575. >8224 ledate x last written at %s,
  1576. >8401 byte x clean flag %d,
  1577. >8228 lelong x number of blocks %d,
  1578. >8232 lelong x number of data blocks %d,
  1579. >8236 lelong x number of cylinder groups %d,
  1580. >8240 lelong x block size %d,
  1581. >8244 lelong x fragment size %d,
  1582. >8252 lelong x minimum percentage of free blocks %d,
  1583. >8256 lelong x rotational delay %dms,
  1584. >8260 lelong x disk rotational speed %drps,
  1585. >8320 lelong 0 TIME optimization
  1586. >8320 lelong 1 SPACE optimization
  1587. 42332 lelong 0x19540119 Unix Fast File system [v2] (little-endian)
  1588. >&-1164 string x last mounted on %s,
  1589. >&-696 string >\0 volume name %s,
  1590. >&-304 leqldate x last written at %s,
  1591. >&-1167 byte x clean flag %d,
  1592. >&-1168 byte x readonly flag %d,
  1593. >&-296 lequad x number of blocks %lld,
  1594. >&-288 lequad x number of data blocks %lld,
  1595. >&-1332 lelong x number of cylinder groups %d,
  1596. >&-1328 lelong x block size %d,
  1597. >&-1324 lelong x fragment size %d,
  1598. >&-180 lelong x average file size %d,
  1599. >&-176 lelong x average number of files in dir %d,
  1600. >&-272 lequad x pending blocks to free %lld,
  1601. >&-264 lelong x pending inodes to free %d,
  1602. >&-664 lequad x system-wide uuid %0llx,
  1603. >&-1316 lelong x minimum percentage of free blocks %d,
  1604. >&-1248 lelong 0 TIME optimization
  1605. >&-1248 lelong 1 SPACE optimization
  1606. 66908 lelong 0x19540119 Unix Fast File system [v2] (little-endian)
  1607. >&-1164 string x last mounted on %s,
  1608. >&-696 string >\0 volume name %s,
  1609. >&-304 leqldate x last written at %s,
  1610. >&-1167 byte x clean flag %d,
  1611. >&-1168 byte x readonly flag %d,
  1612. >&-296 lequad x number of blocks %lld,
  1613. >&-288 lequad x number of data blocks %lld,
  1614. >&-1332 lelong x number of cylinder groups %d,
  1615. >&-1328 lelong x block size %d,
  1616. >&-1324 lelong x fragment size %d,
  1617. >&-180 lelong x average file size %d,
  1618. >&-176 lelong x average number of files in dir %d,
  1619. >&-272 lequad x pending blocks to free %lld,
  1620. >&-264 lelong x pending inodes to free %d,
  1621. >&-664 lequad x system-wide uuid %0llx,
  1622. >&-1316 lelong x minimum percentage of free blocks %d,
  1623. >&-1248 lelong 0 TIME optimization
  1624. >&-1248 lelong 1 SPACE optimization
  1625. 9564 belong 0x00011954 Unix Fast File system [v1] (big-endian),
  1626. >7168 belong 0x4c41424c Apple UFS Volume
  1627. >>7186 string x named %s,
  1628. >>7176 belong x volume label version %d,
  1629. >>7180 bedate x created on %s,
  1630. >8404 string x last mounted on %s,
  1631. #>9504 bedate x last checked at %s,
  1632. >8224 bedate x last written at %s,
  1633. >8401 byte x clean flag %d,
  1634. >8228 belong x number of blocks %d,
  1635. >8232 belong x number of data blocks %d,
  1636. >8236 belong x number of cylinder groups %d,
  1637. >8240 belong x block size %d,
  1638. >8244 belong x fragment size %d,
  1639. >8252 belong x minimum percentage of free blocks %d,
  1640. >8256 belong x rotational delay %dms,
  1641. >8260 belong x disk rotational speed %drps,
  1642. >8320 belong 0 TIME optimization
  1643. >8320 belong 1 SPACE optimization
  1644. 42332 belong 0x19540119 Unix Fast File system [v2] (big-endian)
  1645. >&-1164 string x last mounted on %s,
  1646. >&-696 string >\0 volume name %s,
  1647. >&-304 beqldate x last written at %s,
  1648. >&-1167 byte x clean flag %d,
  1649. >&-1168 byte x readonly flag %d,
  1650. >&-296 bequad x number of blocks %lld,
  1651. >&-288 bequad x number of data blocks %lld,
  1652. >&-1332 belong x number of cylinder groups %d,
  1653. >&-1328 belong x block size %d,
  1654. >&-1324 belong x fragment size %d,
  1655. >&-180 belong x average file size %d,
  1656. >&-176 belong x average number of files in dir %d,
  1657. >&-272 bequad x pending blocks to free %lld,
  1658. >&-264 belong x pending inodes to free %d,
  1659. >&-664 bequad x system-wide uuid %0llx,
  1660. >&-1316 belong x minimum percentage of free blocks %d,
  1661. >&-1248 belong 0 TIME optimization
  1662. >&-1248 belong 1 SPACE optimization
  1663. 66908 belong 0x19540119 Unix Fast File system [v2] (big-endian)
  1664. >&-1164 string x last mounted on %s,
  1665. >&-696 string >\0 volume name %s,
  1666. >&-304 beqldate x last written at %s,
  1667. >&-1167 byte x clean flag %d,
  1668. >&-1168 byte x readonly flag %d,
  1669. >&-296 bequad x number of blocks %lld,
  1670. >&-288 bequad x number of data blocks %lld,
  1671. >&-1332 belong x number of cylinder groups %d,
  1672. >&-1328 belong x block size %d,
  1673. >&-1324 belong x fragment size %d,
  1674. >&-180 belong x average file size %d,
  1675. >&-176 belong x average number of files in dir %d,
  1676. >&-272 bequad x pending blocks to free %lld,
  1677. >&-264 belong x pending inodes to free %d,
  1678. >&-664 bequad x system-wide uuid %0llx,
  1679. >&-1316 belong x minimum percentage of free blocks %d,
  1680. >&-1248 belong 0 TIME optimization
  1681. >&-1248 belong 1 SPACE optimization
  1682. 0 ulequad 0xc8414d4dc5523031 HAMMER filesystem (little-endian),
  1683. >0x90 lelong+1 x volume %d
  1684. >0x94 lelong x (of %d),
  1685. >0x50 string x name %s,
  1686. >0x98 ulelong x version %u,
  1687. >0xa0 ulelong x flags %#x
  1688. 0 ulequad 0x48414d3205172011 HAMMER2 filesystem (little-endian),
  1689. >0x3b byte x volume %d,
  1690. >0x28 ulequad/1073741824 x size %lluGB,
  1691. >0x30 ulelong x version %u,
  1692. >0x34 ulelong x flags %#x
  1693. # ext2/ext3 filesystems - Andreas Dilger <adilger@dilger.ca>
  1694. # ext4 filesystem - Eric Sandeen <sandeen@sandeen.net>
  1695. # volume label and UUID Russell Coker
  1696. # https://etbe.coker.com.au/2008/07/08/label-vs-uuid-vs-device/
  1697. 0x438 leshort 0xEF53 Linux
  1698. >0x44c lelong x rev %d
  1699. >0x43e leshort x \b.%d
  1700. # No journal? ext2
  1701. >0x45c lelong ^0x0000004 ext2 filesystem data
  1702. >>0x43a leshort ^0x0000001 (mounted or unclean)
  1703. # Has a journal? ext3 or ext4
  1704. >0x45c lelong &0x0000004
  1705. # and small INCOMPAT?
  1706. >>0x460 lelong <0x0000040
  1707. # and small RO_COMPAT?
  1708. >>>0x464 lelong <0x0000008 ext3 filesystem data
  1709. # else large RO_COMPAT?
  1710. >>>0x464 lelong >0x0000007 ext4 filesystem data
  1711. # else large INCOMPAT?
  1712. >>0x460 lelong >0x000003f ext4 filesystem data
  1713. >0x468 ubelong x \b, UUID=%08x
  1714. >0x46c ubeshort x \b-%04x
  1715. >0x46e ubeshort x \b-%04x
  1716. >0x470 ubeshort x \b-%04x
  1717. >0x472 ubelong x \b-%08x
  1718. >0x476 ubeshort x \b%04x
  1719. >0x478 string >0 \b, volume name "%s"
  1720. # General flags for any ext* fs
  1721. >0x460 lelong &0x0000004 (needs journal recovery)
  1722. >0x43a leshort &0x0000002 (errors)
  1723. # INCOMPAT flags
  1724. >0x460 lelong &0x0000001 (compressed)
  1725. #>0x460 lelong &0x0000002 (filetype)
  1726. #>0x460 lelong &0x0000010 (meta bg)
  1727. >0x460 lelong &0x0000040 (extents)
  1728. >0x460 lelong &0x0000080 (64bit)
  1729. #>0x460 lelong &0x0000100 (mmp)
  1730. #>0x460 lelong &0x0000200 (flex bg)
  1731. # RO_INCOMPAT flags
  1732. #>0x464 lelong &0x0000001 (sparse super)
  1733. >0x464 lelong &0x0000002 (large files)
  1734. >0x464 lelong &0x0000008 (huge files)
  1735. #>0x464 lelong &0x0000010 (gdt checksum)
  1736. #>0x464 lelong &0x0000020 (many subdirs)
  1737. #>0x463 lelong &0x0000040 (extra isize)
  1738. # f2fs filesystem - Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi>
  1739. 0x400 lelong 0xF2F52010 F2FS filesystem
  1740. >0x46c ubelong x \b, UUID=%08x
  1741. >0x470 ubeshort x \b-%04x
  1742. >0x472 ubeshort x \b-%04x
  1743. >0x474 ubeshort x \b-%04x
  1744. >0x476 ubelong x \b-%08x
  1745. >0x47a ubeshort x \b%04x
  1746. >0x147c lestring16 x \b, volume name "%s"
  1747. # Minix filesystems - Juan Cespedes <cespedes@debian.org>
  1748. 0x410 leshort 0x137f
  1749. !:strength / 2
  1750. >0x402 beshort < 100
  1751. >0x402 beshort > -1 Minix filesystem, V1, 14 char names, %d zones
  1752. >0x1e string minix \b, bootable
  1753. 0x410 beshort 0x137f
  1754. !:strength / 2
  1755. >0x402 beshort < 100
  1756. >0x402 beshort > -1 Minix filesystem, V1 (big endian), %d zones
  1757. >0x1e string minix \b, bootable
  1758. 0x410 leshort 0x138f
  1759. !:strength / 2
  1760. >0x402 beshort < 100
  1761. >0x402 beshort > -1 Minix filesystem, V1, 30 char names, %d zones
  1762. >0x1e string minix \b, bootable
  1763. 0x410 beshort 0x138f
  1764. !:strength / 2
  1765. >0x402 beshort < 100
  1766. >0x402 beshort > -1 Minix filesystem, V1, 30 char names (big endian), %d zones
  1767. >0x1e string minix \b, bootable
  1768. # Weak Magic: this is $x
  1769. #0x410 leshort 0x2468
  1770. #>0x402 beshort < 100
  1771. #>>0x402 beshort > -1 Minix filesystem, V2, 14 char names
  1772. #>0x1e string minix \b, bootable
  1773. #0x410 beshort 0x2468
  1774. #>0x402 beshort < 100
  1775. #>0x402 beshort > -1 Minix filesystem, V2 (big endian)
  1776. #>0x1e string minix \b, bootable
  1777. #0x410 leshort 0x2478
  1778. #>0x402 beshort < 100
  1779. #>0x402 beshort > -1 Minix filesystem, V2, 30 char names
  1780. #>0x1e string minix \b, bootable
  1781. #0x410 leshort 0x2478
  1782. #>0x402 beshort < 100
  1783. #>0x402 beshort > -1 Minix filesystem, V2, 30 char names
  1784. #>0x1e string minix \b, bootable
  1785. #0x410 beshort 0x2478
  1786. #>0x402 beshort !0 Minix filesystem, V2, 30 char names (big endian)
  1787. #>0x1e string minix \b, bootable
  1788. # Weak Magic! this is MD
  1789. #0x418 leshort 0x4d5a
  1790. #>0x402 beshort <100
  1791. #>>0x402 beshort > -1 Minix filesystem, V3, 60 char names
  1792. # SGI disk labels - Nathan Scott <nathans@debian.org>
  1793. 0 belong 0x0BE5A941 SGI disk label (volume header)
  1794. # SGI XFS filesystem - Nathan Scott <nathans@debian.org>
  1795. 0 belong 0x58465342 SGI XFS filesystem data
  1796. >0x4 belong x (blksz %d,
  1797. >0x68 beshort x inosz %d,
  1798. >0x64 beshort ^0x2004 v1 dirs)
  1799. >0x64 beshort &0x2004 v2 dirs)
  1800. ############################################################################
  1801. # Minix-ST kernel floppy
  1802. 0x800 belong 0x46fc2700 Atari-ST Minix kernel image
  1803. # https://en.wikipedia.org/wiki/BIOS_parameter_block
  1804. # floppies with valid BPB and any instruction at beginning
  1805. >19 string \240\005\371\005\0\011\0\2\0 \b, 720k floppy
  1806. >19 string \320\002\370\005\0\011\0\1\0 \b, 360k floppy
  1807. ############################################################################
  1808. # Hmmm, is this a better way of detecting _standard_ floppy images ?
  1809. 19 string \320\002\360\003\0\011\0\1\0 DOS floppy 360k
  1810. >0x1FE leshort 0xAA55 \b, DOS/MBR hard disk boot sector
  1811. 19 string \240\005\371\003\0\011\0\2\0 DOS floppy 720k
  1812. >0x1FE leshort 0xAA55 \b, DOS/MBR hard disk boot sector
  1813. 19 string \100\013\360\011\0\022\0\2\0 DOS floppy 1440k
  1814. >0x1FE leshort 0xAA55 \b, DOS/MBR hard disk boot sector
  1815. 19 string \240\005\371\005\0\011\0\2\0 DOS floppy 720k, IBM
  1816. >0x1FE leshort 0xAA55 \b, DOS/MBR hard disk boot sector
  1817. 19 string \100\013\371\005\0\011\0\2\0 DOS floppy 1440k, mkdosfs
  1818. >0x1FE leshort 0xAA55 \b, DOS/MBR hard disk boot sector
  1819. 19 string \320\002\370\005\0\011\0\1\0 Atari-ST floppy 360k
  1820. 19 string \240\005\371\005\0\011\0\2\0 Atari-ST floppy 720k
  1821. # | | | | |
  1822. # | | | | heads
  1823. # | | | sectors/track
  1824. # | | sectors/FAT
  1825. # | media descriptor
  1826. # BPB: sectors
  1827. # Valid media descriptor bytes for MS-DOS:
  1828. #
  1829. # Byte Capacity Media Size and Type
  1830. # -------------------------------------------------
  1831. #
  1832. # F0 2.88 MB 3.5-inch, 2-sided, 36-sector
  1833. # F0 1.44 MB 3.5-inch, 2-sided, 18-sector
  1834. # F9 720K 3.5-inch, 2-sided, 9-sector
  1835. # F9 1.2 MB 5.25-inch, 2-sided, 15-sector
  1836. # FD 360K 5.25-inch, 2-sided, 9-sector
  1837. # FF 320K 5.25-inch, 2-sided, 8-sector
  1838. # FC 180K 5.25-inch, 1-sided, 9-sector
  1839. # FE 160K 5.25-inch, 1-sided, 8-sector
  1840. # FE 250K 8-inch, 1-sided, single-density
  1841. # FD 500K 8-inch, 2-sided, single-density
  1842. # FE 1.2 MB 8-inch, 2-sided, double-density
  1843. # F8 ----- Fixed disk
  1844. #
  1845. # FC xxxK Apricot 70x1x9 boot disk.
  1846. #
  1847. # Originally a bitmap:
  1848. # xxxxxxx0 Not two sided
  1849. # xxxxxxx1 Double sided
  1850. # xxxxxx0x Not 8 SPT
  1851. # xxxxxx1x 8 SPT
  1852. # xxxxx0xx Not Removable drive
  1853. # xxxxx1xx Removable drive
  1854. # 11111xxx Must be one.
  1855. #
  1856. # But now it's rather random:
  1857. # 111111xx Low density disk
  1858. # 00 SS, Not 8 SPT
  1859. # 01 DS, Not 8 SPT
  1860. # 10 SS, 8 SPT
  1861. # 11 DS, 8 SPT
  1862. #
  1863. # 11111001 Double density 3 1/2 floppy disk, high density 5 1/4
  1864. # 11110000 High density 3 1/2 floppy disk
  1865. # 11111000 Hard disk any format
  1866. #
  1867. # all FAT12 (strength=70) floppies with sectorsize 512 added by Joerg Jenderek at Jun 2013
  1868. # https://en.wikipedia.org/wiki/File_Allocation_Table#Exceptions
  1869. # Too Weak.
  1870. #512 ubelong&0xE0ffff00 0xE0ffff00
  1871. # without valid Media descriptor in place of BPB, cases with are done at other places
  1872. #>21 ubyte <0xE5 floppy with old FAT filesystem
  1873. # but valid Media descriptor at begin of FAT
  1874. #>>512 ubyte =0xed 720k
  1875. #>>512 ubyte =0xf0 1440k
  1876. #>>512 ubyte =0xf8 720k
  1877. #>>512 ubyte =0xf9 1220k
  1878. #>>512 ubyte =0xfa 320k
  1879. #>>512 ubyte =0xfb 640k
  1880. #>>512 ubyte =0xfc 180k
  1881. # look like an old DOS directory entry
  1882. #>>>0xA0E ubequad 0
  1883. #>>>>0xA00 ubequad !0
  1884. #!:mime application/x-ima
  1885. #>>512 ubyte =0xfd
  1886. # look for 2nd FAT at different location to distinguish between 360k and 500k
  1887. #>>>0x600 ubelong&0xE0ffff00 0xE0ffff00 360k
  1888. #>>>0x500 ubelong&0xE0ffff00 0xE0ffff00 500k
  1889. #>>>0xA0E ubequad 0
  1890. #!:mime application/x-ima
  1891. #>>512 ubyte =0xfe
  1892. #>>>0x400 ubelong&0xE0ffff00 0xE0ffff00 160k
  1893. #>>>>0x60E ubequad 0
  1894. #>>>>>0x600 ubequad !0
  1895. #!:mime application/x-ima
  1896. #>>>0xC00 ubelong&0xE0ffff00 0xE0ffff00 1200k
  1897. #>>512 ubyte =0xff 320k
  1898. #>>>0x60E ubequad 0
  1899. #>>>>0x600 ubequad !0
  1900. #!:mime application/x-ima
  1901. #>>512 ubyte x \b, Media descriptor %#x
  1902. # without x86 jump instruction
  1903. #>>0 ulelong&0x804000E9 !0x000000E9
  1904. # assembler instructions: CLI;MOV SP,1E7;MOV AX;07c0;MOV
  1905. #>>>0 ubequad 0xfabce701b8c0078e \b, MS-DOS 1.12 bootloader
  1906. # IOSYS.COM+MSDOS.COM
  1907. #>>>>0xc4 use 2xDOS-filename
  1908. #>>0 ulelong&0x804000E9 =0x000000E9
  1909. # only x86 short jump instruction found
  1910. #>>>0 ubyte =0xEB
  1911. #>>>>1 ubyte x \b, code offset %#x+2
  1912. # https://thestarman.pcministry.com/DOS/ibm100/Boot.htm
  1913. # assembler instructions: CLI;MOV AX,CS;MOV DS,AX;MOV DX,0
  1914. #>>>>(1.b+2) ubequad 0xfa8cc88ed8ba0000 \b, PC-DOS 1.0 bootloader
  1915. # ibmbio.com+ibmdos.com
  1916. #>>>>>0x176 use DOS-filename
  1917. #>>>>>0x181 ubyte x \b+
  1918. #>>>>>0x182 use DOS-filename
  1919. # https://thestarman.pcministry.com/DOS/ibm110/Boot.htm
  1920. # assembler instructions: CLI;MOV AX,CS;MOV DS,AX;XOR DX,DX;MOV
  1921. #>>>>(1.b+2) ubequad 0xfa8cc88ed833d28e \b, PC-DOS 1.1 bootloader
  1922. # ibmbio.com+ibmdos.com
  1923. #>>>>>0x18b use DOS-filename
  1924. #>>>>>0x196 ubyte x \b+
  1925. #>>>>>0x197 use DOS-filename
  1926. # https://en.wikipedia.org/wiki/Zenith_Data_Systems
  1927. # assembler instructions: MOV BX,07c0;MOV SS,BX;MOV SP,01c6
  1928. #>>>>(1.b+2) ubequad 0xbbc0078ed3bcc601 \b, Zenith Data Systems MS-DOS 1.25 bootloader
  1929. # IO.SYS+MSDOS.SYS
  1930. #>>>>>0x20 use 2xDOS-filename
  1931. # https://en.wikipedia.org/wiki/Corona_Data_Systems
  1932. # assembler instructions: MOV AX,CS;MOV DS,AX;CLI;MOV SS,AX;
  1933. #>>>>(1.b+2) ubequad 0x8cc88ed8fa8ed0bc \b, MS-DOS 1.25 bootloader
  1934. # IO.SYS+MSDOS.SYS
  1935. #>>>>>0x69 use 2xDOS-filename
  1936. # assembler instructions: CLI;PUSH CS;POP SS;MOV SP,7c00;
  1937. #>>>>(1.b+2) ubequad 0xfa0e17bc007cb860 \b, MS-DOS 2.11 bootloader
  1938. # defect IO.SYS+MSDOS.SYS ?
  1939. #>>>>>0x162 use 2xDOS-filename
  1940. 0 name cdrom
  1941. >38913 string !NSR0 ISO 9660 CD-ROM filesystem data
  1942. !:mime application/x-iso9660-image
  1943. !:ext iso/iso9660
  1944. >38913 string NSR0 UDF filesystem data
  1945. !:mime application/x-iso9660-image
  1946. !:ext iso/udf
  1947. >>38917 string 1 (version 1.0)
  1948. >>38917 string 2 (version 1.5)
  1949. >>38917 string 3 (version 2.0)
  1950. >>38917 byte >0x33 (unknown version, ID %#X)
  1951. >>38917 byte <0x31 (unknown version, ID %#X)
  1952. # The next line is not necessary because the MBR staff is done looking for boot signature
  1953. >0x1FE leshort 0xAA55 (DOS/MBR boot sector)
  1954. # "application id" which appears to be used as a volume label
  1955. >32808 string/T >\0 '%.32s'
  1956. >34816 string \000CD001\001EL\ TORITO\ SPECIFICATION (bootable)
  1957. 37633 string CD001 ISO 9660 CD-ROM filesystem data (raw 2352 byte sectors)
  1958. !:mime application/x-iso9660-image
  1959. 32777 string CDROM High Sierra CD-ROM filesystem data
  1960. # "application id" which appears to be used as a volume label
  1961. >32816 string/T >\0 '%.32s'
  1962. # CDROM Filesystems
  1963. # https://en.wikipedia.org/wiki/ISO_9660
  1964. # Modified for UDF by gerardo.cacciari@gmail.com
  1965. 32769 string CD001
  1966. # mime line at that position does not work
  1967. # to display CD-ROM (70=81-11) after MBR (113=40+72+1), partition-table (71=50+21) and before Apple Driver Map (51)
  1968. #!:strength -11
  1969. # to display CD-ROM (114=81+33) before MBR (113=40+72+1), partition-table (71=50+21) and Apple Driver Map (51)
  1970. !:strength +35
  1971. >0 use cdrom
  1972. # URL: https://en.wikipedia.org/wiki/NRG_(file_format)
  1973. # Reference: https://dl.opendesktop.org/api/files/download/id/1460731811/
  1974. # 11577-mount-iso-0.9.5.tar.bz2/mount-iso-0.9.5/install.sh
  1975. # From: Joerg Jenderek
  1976. # Note: Only for nero disc with once (DAO) type after 300 KB header
  1977. 339969 string CD001 Nero CD image at 0x4B000
  1978. !:mime application/x-nrg
  1979. !:ext nrg
  1980. >307200 use cdrom
  1981. # .cso files
  1982. # Reference: https://pismotec.com/ciso/ciso.h
  1983. # NOTE: There are two other formats with the same magic but
  1984. # completely incompatible specifications:
  1985. # - GameCube/Wii CISO: https://github.com/dolphin-emu/dolphin/blob/master/Source/Core/DiscIO/CISOBlob.h
  1986. # - PSP CISO: https://github.com/jamie/ciso/blob/master/ciso.h
  1987. 0 string CISO
  1988. # Other fields are used to determine what type of CISO this is:
  1989. # - 0x04 == 0x00200000: GameCube/Wii CISO (block_size)
  1990. # - 0x10 == 0x00000800: PSP CISO (ISO-9660 sector size)
  1991. # - 0x10 == 0x00004000: For >2GB files using maxcso...
  1992. # https://github.com/unknownbrackets/maxcso/issues/26
  1993. # - None of the above: Compact ISO.
  1994. >4 lelong !0
  1995. >>4 lelong !0x200000
  1996. >>>16 lelong !0x800
  1997. >>>>16 lelong !0x4000 Compressed ISO CD image
  1998. # cramfs filesystem - russell@coker.com.au
  1999. 0 lelong 0x28cd3d45 Linux Compressed ROM File System data, little endian
  2000. >4 lelong x size %u
  2001. >8 lelong &1 version #2
  2002. >8 lelong &2 sorted_dirs
  2003. >8 lelong &4 hole_support
  2004. >32 lelong x CRC %#x,
  2005. >36 lelong x edition %u,
  2006. >40 lelong x %u blocks,
  2007. >44 lelong x %u files
  2008. 0 belong 0x28cd3d45 Linux Compressed ROM File System data, big endian
  2009. >4 belong x size %u
  2010. >8 belong &1 version #2
  2011. >8 belong &2 sorted_dirs
  2012. >8 belong &4 hole_support
  2013. >32 belong x CRC %#x,
  2014. >36 belong x edition %u,
  2015. >40 belong x %u blocks,
  2016. >44 belong x %u files
  2017. # reiserfs - russell@coker.com.au
  2018. 0x10034 string ReIsErFs ReiserFS V3.5
  2019. 0x10034 string ReIsEr2Fs ReiserFS V3.6
  2020. 0x10034 string ReIsEr3Fs ReiserFS V3.6.19
  2021. >0x1002c leshort x block size %d
  2022. >0x10032 leshort &2 (mounted or unclean)
  2023. >0x10000 lelong x num blocks %d
  2024. >0x10040 lelong 1 tea hash
  2025. >0x10040 lelong 2 yura hash
  2026. >0x10040 lelong 3 r5 hash
  2027. # EST flat binary format (which isn't, but anyway)
  2028. # From: Mark Brown <broonie@sirena.org.uk>
  2029. 0 string ESTFBINR EST flat binary
  2030. # Aculab VoIP firmware
  2031. # From: Mark Brown <broonie@sirena.org.uk>
  2032. 0 string VoIP\ Startup\ and Aculab VoIP firmware
  2033. >35 string x format %s
  2034. # From: Mark Brown <broonie@sirena.org.uk> [old]
  2035. # From: Behan Webster <behanw@websterwood.com>
  2036. 0 belong 0x27051956 u-boot legacy uImage,
  2037. >32 string x %s,
  2038. >28 byte 0 Invalid os/
  2039. >28 byte 1 OpenBSD/
  2040. >28 byte 2 NetBSD/
  2041. >28 byte 3 FreeBSD/
  2042. >28 byte 4 4.4BSD/
  2043. >28 byte 5 Linux/
  2044. >28 byte 6 SVR4/
  2045. >28 byte 7 Esix/
  2046. >28 byte 8 Solaris/
  2047. >28 byte 9 Irix/
  2048. >28 byte 10 SCO/
  2049. >28 byte 11 Dell/
  2050. >28 byte 12 NCR/
  2051. >28 byte 13 LynxOS/
  2052. >28 byte 14 VxWorks/
  2053. >28 byte 15 pSOS/
  2054. >28 byte 16 QNX/
  2055. >28 byte 17 Firmware/
  2056. >28 byte 18 RTEMS/
  2057. >28 byte 19 ARTOS/
  2058. >28 byte 20 Unity OS/
  2059. >28 byte 21 INTEGRITY/
  2060. >29 byte 0 \bInvalid CPU,
  2061. >29 byte 1 \bAlpha,
  2062. >29 byte 2 \bARM,
  2063. >29 byte 3 \bIntel x86,
  2064. >29 byte 4 \bIA64,
  2065. >29 byte 5 \bMIPS,
  2066. >29 byte 6 \bMIPS 64-bit,
  2067. >29 byte 7 \bPowerPC,
  2068. >29 byte 8 \bIBM S390,
  2069. >29 byte 9 \bSuperH,
  2070. >29 byte 10 \bSparc,
  2071. >29 byte 11 \bSparc 64-bit,
  2072. >29 byte 12 \bM68K,
  2073. >29 byte 13 \bNios-32,
  2074. >29 byte 14 \bMicroBlaze,
  2075. >29 byte 15 \bNios-II,
  2076. >29 byte 16 \bBlackfin,
  2077. >29 byte 17 \bAVR32,
  2078. >29 byte 18 \bSTMicroelectronics ST200,
  2079. >29 byte 19 \bSandbox architecture,
  2080. >29 byte 20 \bANDES Technology NDS32,
  2081. >29 byte 21 \bOpenRISC 1000,
  2082. >29 byte 22 \bARM 64-bit,
  2083. >29 byte 23 \bDesignWare ARC,
  2084. >29 byte 24 \bx86_64,
  2085. >29 byte 25 \bXtensa,
  2086. >29 byte 26 \bRISC-V,
  2087. >30 byte 0 Invalid Image
  2088. >30 byte 1 Standalone Program
  2089. >30 byte 2 OS Kernel Image
  2090. >30 byte 3 RAMDisk Image
  2091. >30 byte 4 Multi-File Image
  2092. >30 byte 5 Firmware Image
  2093. >30 byte 6 Script File
  2094. >30 byte 7 Filesystem Image (any type)
  2095. >30 byte 8 Binary Flat Device Tree BLOB
  2096. >31 byte 0 (Not compressed),
  2097. >31 byte 1 (gzip),
  2098. >31 byte 2 (bzip2),
  2099. >31 byte 3 (lzma),
  2100. >12 belong x %d bytes,
  2101. >8 bedate x %s,
  2102. >16 belong x Load Address: %#08X,
  2103. >20 belong x Entry Point: %#08X,
  2104. >4 belong x Header CRC: %#08X,
  2105. >24 belong x Data CRC: %#08X
  2106. # JFFS2 file system
  2107. 0 leshort 0x1984 Linux old jffs2 filesystem data little endian
  2108. 0 beshort 0x1984 Linux old jffs2 filesystem data big endian
  2109. 0 leshort 0x1985 Linux jffs2 filesystem data little endian
  2110. 0 beshort 0x1985 Linux jffs2 filesystem data big endian
  2111. # Squashfs
  2112. 0 name squashfs
  2113. >28 beshort x version %d.
  2114. >30 beshort x \b%d,
  2115. >20 beshort 0 uncompressed,
  2116. >20 beshort 1 zlib
  2117. >20 beshort 2 lzma
  2118. >20 beshort 3 lzo
  2119. >20 beshort 4 xz
  2120. >20 beshort 5 lz4
  2121. >20 beshort 6 zstd
  2122. >20 beshort >0 compressed,
  2123. >28 beshort <3
  2124. >>8 belong x %d bytes,
  2125. >28 beshort >2
  2126. >>28 beshort <4
  2127. >>>63 bequad x %lld bytes,
  2128. >>28 beshort >3
  2129. >>>40 bequad x %lld bytes,
  2130. #>>67 belong x %d bytes,
  2131. >4 belong x %d inodes,
  2132. >28 beshort <2
  2133. >>32 beshort x blocksize: %d bytes,
  2134. >28 beshort >1
  2135. >>28 beshort <4
  2136. >>>51 belong x blocksize: %d bytes,
  2137. >>28 beshort >3
  2138. >>>12 belong x blocksize: %d bytes,
  2139. >28 beshort <4
  2140. >>39 bedate x created: %s
  2141. >28 beshort >3
  2142. >>8 bedate x created: %s
  2143. 0 string sqsh Squashfs filesystem, big endian,
  2144. >0 use squashfs
  2145. 0 string hsqs Squashfs filesystem, little endian,
  2146. >0 use \^squashfs
  2147. # AFS Dump Magic
  2148. # From: Ty Sarna <tsarna@sarna.org>
  2149. 0 string \x01\xb3\xa1\x13\x22 AFS Dump
  2150. >&0 belong x (v%d)
  2151. >>&0 byte 0x76
  2152. >>>&0 belong x Vol %d,
  2153. >>>>&0 byte 0x6e
  2154. >>>>>&0 string x %s
  2155. >>>>>>&1 byte 0x74
  2156. >>>>>>>&0 beshort 2
  2157. >>>>>>>>&4 bedate x on: %s
  2158. >>>>>>>>&0 bedate =0 full dump
  2159. >>>>>>>>&0 bedate !0 incremental since: %s
  2160. #----------------------------------------------------------
  2161. #delta ISO Daniel Novotny (dnovotny@redhat.com)
  2162. 0 string DISO Delta ISO data
  2163. !:strength +50
  2164. >4 belong x version %d
  2165. # VMS backup savesets - gerardo.cacciari@gmail.com
  2166. #
  2167. 4 string \x01\x00\x01\x00\x01\x00
  2168. >(0.s+16) string \x01\x01
  2169. >>&(&0.b+8) byte 0x42 OpenVMS backup saveset data
  2170. >>>40 lelong x (block size %d,
  2171. >>>49 string >\0 original name '%s',
  2172. >>>2 short 1024 VAX generated)
  2173. >>>2 short 2048 AXP generated)
  2174. >>>2 short 4096 I64 generated)
  2175. # Summary: Oracle Clustered Filesystem
  2176. # Created by: Aaron Botsis <redhat@digitalmafia.org>
  2177. 8 string OracleCFS Oracle Clustered Filesystem,
  2178. >4 long x rev %d
  2179. >0 long x \b.%d,
  2180. >560 string x label: %.64s,
  2181. >136 string x mountpoint: %.128s
  2182. # Summary: Oracle ASM tagged volume
  2183. # Created by: Aaron Botsis <redhat@digitalmafia.org>
  2184. 32 string ORCLDISK Oracle ASM Volume,
  2185. >40 string x Disk Name: %0.12s
  2186. 32 string ORCLCLRD Oracle ASM Volume (cleared),
  2187. >40 string x Disk Name: %0.12s
  2188. # Oracle Clustered Filesystem - Aaron Botsis <redhat@digitalmafia.org>
  2189. 8 string OracleCFS Oracle Clustered Filesystem,
  2190. >4 long x rev %d
  2191. >0 long x \b.%d,
  2192. >560 string x label: %.64s,
  2193. >136 string x mountpoint: %.128s
  2194. # Oracle ASM tagged volume - Aaron Botsis <redhat@digitalmafia.org>
  2195. 32 string ORCLDISK Oracle ASM Volume,
  2196. >40 string x Disk Name: %0.12s
  2197. 32 string ORCLCLRD Oracle ASM Volume (cleared),
  2198. >40 string x Disk Name: %0.12s
  2199. # Compaq/HP RILOE floppy image
  2200. # From: Dirk Jagdmann <doj@cubic.org>
  2201. 0 string CPQRFBLO Compaq/HP RILOE floppy image
  2202. #------------------------------------------------------------------------------
  2203. # Files-11 On-Disk Structure (File system for various RSX-11 and VMS flavours).
  2204. # These bits come from LBN 1 (home block) of ODS-1, ODS-2 and ODS-5 volumes,
  2205. # which is mapped to VBN 2 of [000000]INDEXF.SYS;1 - gerardo.cacciari@gmail.com
  2206. #
  2207. 1008 string DECFILE11 Files-11 On-Disk Structure
  2208. >525 byte x (ODS-%d);
  2209. >1017 string A RSX-11, VAX/VMS or OpenVMS VAX file system;
  2210. >1017 string B
  2211. >>525 byte 2 VAX/VMS or OpenVMS file system;
  2212. >>525 byte 5 OpenVMS Alpha or Itanium file system;
  2213. >984 string x volume label is '%-12.12s'
  2214. # From: Thomas Klausner <wiz@NetBSD.org>
  2215. # https://filext.com/file-extension/DAA
  2216. # describes the daa file format. The magic would be:
  2217. 0 string DAA\x0\x0\x0\x0\x0 PowerISO Direct-Access-Archive
  2218. # From Albert Cahalan <acahalan@gmail.com>
  2219. # really le32 operation,destination,payloadsize (but quite predictable)
  2220. # 01 00 00 00 00 00 00 c0 00 02 00 00
  2221. 0 string \1\0\0\0\0\0\0\300\0\2\0\0 Marvell Libertas firmware
  2222. # From Eric Sandeen
  2223. # GFS2
  2224. 0x10000 belong 0x01161970
  2225. >0x10018 belong 0x0000051d GFS1 Filesystem
  2226. >>0x10024 belong x (blocksize %d,
  2227. >>0x10060 string >\0 lockproto %s)
  2228. >0x10018 belong 0x00000709 GFS2 Filesystem
  2229. >>0x10024 belong x (blocksize %d,
  2230. >>0x10060 string >\0 lockproto %s)
  2231. # Russell Coker <russell@coker.com.au>
  2232. 0x10040 string _BHRfS_M BTRFS Filesystem
  2233. >0x1012b string >\0 label "%s",
  2234. >0x10090 lelong x sectorsize %d,
  2235. >0x10094 lelong x nodesize %d,
  2236. >0x10098 lelong x leafsize %d,
  2237. >0x10020 ubelong x UUID=%08x-
  2238. >0x10024 ubeshort x \b%04x-
  2239. >0x10026 ubeshort x \b%04x-
  2240. >0x10028 ubeshort x \b%04x-
  2241. >0x1002a ubeshort x \b%04x
  2242. >0x1002c ubelong x \b%08x,
  2243. >0x10078 lequad x %lld/
  2244. >0x10070 lequad x \b%lld bytes used,
  2245. >0x10088 lequad x %lld devices
  2246. 0 string btrfs-stream BTRFS stream file
  2247. # dvdisaster's .ecc
  2248. # From: "Nelson A. de Oliveira" <naoliv@gmail.com>
  2249. 0 string *dvdisaster* dvdisaster error correction file
  2250. # xfs metadump image
  2251. # mb_magic XFSM at 0; superblock magic XFSB at 1 << mb_blocklog
  2252. # but can we do the << ? For now it's always 512 (0x200) anyway.
  2253. 0 string XFSM
  2254. >0x200 string XFSB XFS filesystem metadump image
  2255. # Type: CROM filesystem
  2256. # From: Werner Fink <werner@suse.de>
  2257. 0 string CROMFS CROMFS
  2258. >6 string >\0 \b version %2.2s,
  2259. >8 ulequad >0 \b block data at %lld,
  2260. >16 ulequad >0 \b fblock table at %lld,
  2261. >24 ulequad >0 \b inode table at %lld,
  2262. >32 ulequad >0 \b root at %lld,
  2263. >40 ulelong >0 \b fblock size = %d,
  2264. >44 ulelong >0 \b block size = %d,
  2265. >48 ulequad >0 \b bytes = %lld
  2266. # Type: xfs metadump image
  2267. # From: Daniel Novotny <dnovotny@redhat.com>
  2268. # mb_magic XFSM at 0; superblock magic XFSB at 1 << mb_blocklog
  2269. # but can we do the << ? For now it's always 512 (0x200) anyway.
  2270. 0 string XFSM
  2271. >0x200 string XFSB XFS filesystem metadump image
  2272. # Type: delta ISO
  2273. # From: Daniel Novotny <dnovotny@redhat.com>
  2274. 0 string DISO Delta ISO data,
  2275. >4 belong x version %d
  2276. # JFS2 (Journaling File System) image. (Old JFS1 has superblock at 0x1000.)
  2277. # See linux/fs/jfs/jfs_superblock.h for layout; see jfs_filsys.h for flags.
  2278. # From: Adam Buchbinder <adam.buchbinder@gmail.com>
  2279. 0x8000 string JFS1
  2280. # Because it's text-only magic, check a binary value (version) to be sure.
  2281. # Should always be 2, but mkfs.jfs writes it as 1. Needs to be 2 or 1 to be
  2282. # mountable.
  2283. >&0 lelong <3 JFS2 filesystem image
  2284. # Label is followed by a UUID; we have to limit string length to avoid
  2285. # appending the UUID in the case of a 16-byte label.
  2286. >>&144 regex [\x20-\x7E]{1,16} (label "%s")
  2287. >>&0 lequad x \b, %lld blocks
  2288. >>&8 lelong x \b, blocksize %d
  2289. >>&32 lelong&0x00000006 >0 (dirty)
  2290. >>&36 lelong >0 (compressed)
  2291. # LFS
  2292. 0 lelong 0x070162 LFS filesystem image
  2293. >4 lelong 1 version 1,
  2294. >>8 lelong x \b blocks %u,
  2295. >>12 lelong x \b blocks per segment %u,
  2296. >4 lelong 2 version 2,
  2297. >>8 lelong x \b fragments %u,
  2298. >>12 lelong x \b bytes per segment %u,
  2299. >16 lelong x \b disk blocks %u,
  2300. >20 lelong x \b block size %u,
  2301. >24 lelong x \b fragment size %u,
  2302. >28 lelong x \b fragments per block %u,
  2303. >32 lelong x \b start for free list %u,
  2304. >36 lelong x \b number of free blocks %d,
  2305. >40 lelong x \b number of files %u,
  2306. >44 lelong x \b blocks available for writing %d,
  2307. >48 lelong x \b inodes in cache %d,
  2308. >52 lelong x \b inode file disk address %#x,
  2309. >56 lelong x \b inode file inode number %u,
  2310. >60 lelong x \b address of last segment written %#x,
  2311. >64 lelong x \b address of next segment to write %#x,
  2312. >68 lelong x \b address of current segment written %#x
  2313. 0 string td\000 floppy image data (TeleDisk, compressed)
  2314. 0 string TD\000 floppy image data (TeleDisk)
  2315. 0 string CQ\024 floppy image data (CopyQM,
  2316. >16 leshort x %d sectors,
  2317. >18 leshort x %d heads.)
  2318. 0 string ACT\020Apricot\020disk\020image\032\004 floppy image data (ApriDisk)
  2319. # URL: http://fileformats.archiveteam.org/wiki/LoadDskF/SaveDskF
  2320. # Update: Joerg Jenderek
  2321. # Note: called "IBM SKF disk image" by TrID
  2322. # verfied by 7-Zip `7z l -tFAT -slt *.dsk` and
  2323. # `deark -l -m loaddskf 06200D19.DSK`
  2324. # Reference: http://mark0.net/download/triddefs_xml.7z/defs/d/dsk-skf-old.trid.xml
  2325. 0 beshort 0xAA58
  2326. >0 use SaveDskF
  2327. # Reference: http://mark0.net/download/triddefs_xml.7z/defs/d/dsk-skf.trid.xml
  2328. 0 beshort 0xAA59
  2329. >0 use SaveDskF
  2330. # Reference: http://mark0.net/download/triddefs_xml.7z/defs/d/dsk-skf-comp.trid.xml
  2331. 0 beshort 0xAA5A
  2332. # skip foo by additional check for unused upper byte of media type in SaveDskF header
  2333. #>3 ubyte =0
  2334. # skip bar by additional check for valid "low" number of heads in SaveDskF header
  2335. #>>26 uleshort <3
  2336. # skip foo by additional check for unused double word field in SaveDskF header
  2337. #>>>30 long =0
  2338. #>>>>0 use SaveDskF
  2339. >0 use SaveDskF
  2340. # display information about IBM SaveDskF floppy disk images
  2341. 0 name SaveDskF
  2342. # SaveDskF magic
  2343. >0 beshort x floppy image data (IBM SaveDskF
  2344. #!:mime application/octet-stream
  2345. !:mime application/x-ibm-dsk
  2346. !:ext dsk
  2347. # also suffix with digit (1dk .2dk ...); NO example FOUND!
  2348. #!:ext dsk/1dk/2dk
  2349. >1 ubyte =0x58 \b, old)
  2350. >1 ubyte =0x59 \b)
  2351. >1 ubyte =0x5A \b, compressed)
  2352. # media type; the first byte of the FAT like: 0xF0 (usual floppy) 0xF9 0xFE
  2353. # https://en.wikipedia.org/wiki/Design_of_the_FAT_file_system
  2354. >2 ubyte !0xF0 \b, Media descriptor %#x
  2355. # upper byte of media type is not used; so this seems to be nil
  2356. >3 ubyte !0 \b, upper byte of media type %#x
  2357. # sector size in bytes as in the BIOS parameter block like: 512 ; SAVEDSKF.EXE with other sizes produce garbage images
  2358. >4 uleshort !512 \b, Bytes/sector %u
  2359. # cluster mask; number of sectors per cluster, minus 1
  2360. >6 uleshort+1 >1 \b, sectors/cluster %u
  2361. #>6 uleshort+1 x \b, sectors/cluster %u
  2362. # cluster shift; log2(cluster size / sector size) like: 0~1=ClusterSize/SectorSize
  2363. >7 ubyte >0 \b, cluster shift %u
  2364. #>7 ubyte x \b, cluster shift %u
  2365. # reserved sectors; as in the BIOS parameter block like: 1 256 (2M256R-K.DSK)
  2366. >8 uleshort >1 \b, reserved sectors %u
  2367. #>8 uleshort x \b, reserved sectors %u
  2368. # FAT copies; as in the BIOS parameter block like: 2 (usual) 1 (2-NK.DSK)
  2369. >10 ubyte !2 \b, FAT
  2370. # plural s
  2371. >>10 ubyte >1 \bs
  2372. >>10 ubyte x %u
  2373. # root directory entries; as in the BIOS parameter block like: 224 (usual) 64 (H1-NK.DSK) 4096 (2-NK.DSK)
  2374. >11 uleshort !224 \b, root entries %u
  2375. # sector number of first cluster (count sectors used by boot sector, FATs and root directory) like: 7 10 29 33 288
  2376. >13 uleshort !33 \b, 1st cluster at sector %u
  2377. # number of clusters in image; empty clusters at the end are not saved and counted like: 2372 2848
  2378. >15 uleshort x \b, %u clusters
  2379. # sectors/FAT; as in the BIOS parameter block like: 1 (H1-NK.DSK) 7 9
  2380. >17 ubyte !9 \b, sectors/FAT %u
  2381. # sector number of root directory (ie, count of sectors used by boot sector and FATs) like: 3 (H1-NK.DSK) 9 10 15 19 274 (2M256R-K.DSK)
  2382. >18 uleshort !19 \b, root directory at sector %u
  2383. # checksum; sum of all bytes in the file
  2384. >20 ulelong x \b, checksum %#8.8x
  2385. # cylinders; number of cylinders like: 40 80
  2386. >24 uleshort !80 \b, %u cylinders
  2387. #>24 uleshort x \b, %u cylinders
  2388. # heads; number of heads as in the BIOS parameter block like: 1 (H1-NK.DSK) 2
  2389. >26 uleshort !2 \b, heads %u
  2390. #>26 uleshort x \b, heads %u
  2391. # sectors/track; number of sectors per track as in the BIOS parameter block like: 8 15 18 36
  2392. >28 uleshort !18 \b, sectors/track %u
  2393. #>28 uleshort x \b, sectors/track %u
  2394. # unused double word field seems to be always like: 0
  2395. >30 ulelong !0 \b, at 0x1E %#x
  2396. # number of sectors in images like: 1017 2786 2880
  2397. >34 uleshort x \b, sectors %u
  2398. # if string is "printable" it can be a real comment
  2399. >(36.s) ubyte !0x00
  2400. # if 1st sector is far enough away (> 0x29) then there is space for comment part
  2401. >>38 uleshort >41
  2402. # offset to comment string like: 28h=40
  2403. >>>36 uleshort x \b, at %#x
  2404. # comment string terminated with \r\n\0
  2405. >>>(36.s) string x "%s"
  2406. # offset to the first sector like: 0 (If this is 0, assume it is 0x200) 29h=41 (DISPLAY3.DSK) 31h 43h 45h 46h 48h 50h 200h=512
  2407. >38 uleshort !0 \b, 1st sector at %#x
  2408. # FOR DEBUGGING!
  2409. #>(38.s) ubelong x SECTOR CONTENT %x
  2410. # not compressed floppy image implies readable DOS boot sector inside image
  2411. >>1 ubyte !0x5A
  2412. # when not compressed it is readable as DOS boot sector via ./filesystems
  2413. #>>>(38.s) indirect x \b; contains
  2414. >38 uleshort =0 \b, 1st sector at 0x200 (0)
  2415. # maybe standard DOS boot sector; NO example FOUND HERE!
  2416. #>>0x200 indirect x \b; contains
  2417. 0 string \074CPM_Disk\076 disk image data (YAZE)
  2418. # From: Joerg Jenderek
  2419. # URL: https://en.wikipedia.org/wiki/Central_Point_Software#cite_note-6
  2420. # Reference: https://www.robcraig.com/download/transcopy-5-x-file-format
  2421. # https://www.robcraig.com/download/transcopy-file-format-by-gene-thompson
  2422. # http://mark0.net/download/triddefs_xml.7z/defs/t/tc-transcopy.trid.xml
  2423. # TransCopy signature
  2424. 0 beshort 0x5AA5
  2425. # skip Intel serial flash ROM with invalid 0 disk sides handled by ./intel
  2426. >0x103 ubyte !0
  2427. # skip Intel serial flash ROM with unlikely "high" start cylinder 100 handled by ./intel
  2428. #>>0x101 ubyte <100 VALID_START_CYLINDER
  2429. # skip Intel serial flash ROM with unlikely description handled by ./intel
  2430. #>>>2 beshort !0xF00f VALID_DESCRIPTION
  2431. # skip Intel serial flash ROM with invalid disk types 89h 88h handled by ./intel
  2432. #>>>>0x100 byte !0x89 VALID_DISK_TYPE
  2433. >>0 use tc-floppy
  2434. # display information of Central Point Software (CPS) Option Board TransCopy floppy image
  2435. 0 name tc-floppy
  2436. >0 beshort x TransCopy disk image
  2437. #!:mime application/octet-stream
  2438. !:mime application/x-floppy-image-tc
  2439. # like: disk04.tc VOCALC2.TC WIZ5_A.tc WIZ2_720.IMG
  2440. !:ext tc/img
  2441. # 1st description (optional 0-terminated maximal 32) like:
  2442. # "Project Workbench 2.20" "Visi On Calc" "Wizardry V Disk 1 of 3"
  2443. >2 string >\0 %.32s
  2444. # 2nd desc. (optional 0-terminated maximal 32) like:
  2445. # "(1988)." "Advanced - Utility" 'Program Disk 2"
  2446. >0x22 string >\0 "%.32s"
  2447. # Looks like ascii (like MESSAGES) formatted with attribute bytes (190)?
  2448. # not needed for disk copy
  2449. #>>0x42 string x '%.190s'
  2450. #>>0x88 lestring16 x "%.8s"
  2451. # disktype: 2~MFM High Density 3~MFM Double Density 4~Apple II GCR 5~FM Single Density
  2452. # 6~Commodore GCR 7~MFM Double Density 8~Commodore Amiga Ch~Atari FM FFh~Unknown
  2453. >0x100 ubyte !0xFF \b, disk type %u
  2454. # StartingCylinder like: 0
  2455. >0x101 ubyte x \b, cylinder
  2456. >0x101 ubyte !0 start=%u
  2457. # EndingCylinder like: 40 (often) 41 79
  2458. >0x102 ubyte x end=%u
  2459. # NumberOfSides like: 2
  2460. >0x103 ubyte !2 \b, %u sides
  2461. # TrackIncrement like: 1
  2462. >0x104 ubyte !1 \b, track increment %u
  2463. # TrackPosTbl Track skew
  2464. #>0x105 ubequad x \b, Track skew %#16.16llx
  2465. # TrackOffsTbl
  2466. #>0x305 ubequad x \b, TrackOffsTbl %#16.16llx
  2467. # TrackLngthTbl
  2468. #>0x505 ubequad x \b, TrackLngthTbl %#16.16llx
  2469. # TrackTypeTable
  2470. #>0x705 ubequad x \b, TrackTypeTable %#16.16llx
  2471. # Address mark timing
  2472. #>0x905 ubequad x \b, Address mark timing %#16.16llx
  2473. # Track fragment
  2474. #>0x2905 ubequad !0 \b, Track fragment %#16.16llx
  2475. # Track data
  2476. #>0x4000 ubequad !0 \b, Track data %#16.16llx
  2477. # ReFS
  2478. # Richard W.M. Jones <rjones@redhat.com>
  2479. 0 string \0\0\0ReFS\0 ReFS filesystem image
  2480. # EFW encase image file format:
  2481. # Gregoire Passault
  2482. # http://www.forensicswiki.org/wiki/Encase_image_file_format
  2483. 0 string EVF\x09\x0d\x0a\xff\x00 EWF/Expert Witness/EnCase image file format
  2484. # UBIfs
  2485. # Linux kernel sources: fs/ubifs/ubifs-media.h
  2486. 0 lelong 0x06101831
  2487. >0x16 leshort 0 UBIfs image
  2488. >0x08 lequad x \b, sequence number %llu
  2489. >0x10 leshort x \b, length %u
  2490. >0x04 lelong x \b, CRC %#08x
  2491. 0 lelong 0x23494255
  2492. >0x04 leshort <2
  2493. >0x05 string \0\0\0
  2494. >0x1c string \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
  2495. >0x04 leshort x UBI image, version %u
  2496. # NEC PC-88 2D disk image
  2497. # From Fabio R. Schmidlin <sd-snatcher@users.sourceforge.net>
  2498. 0x20 ulelong&0xFFFFFEFF 0x2A0
  2499. >0x10 string \0\0\0\0\0\0\0\0\0\0
  2500. >>0x280 string \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
  2501. >>>0x1A ubyte&0xEF 0
  2502. >>>>0x1B ubyte&0x8F 0
  2503. >>>>>0x1B ubyte&70 <0x40
  2504. >>>>>>0x1C ulelong >0x21
  2505. >>>>>>>0 regex [[:print:]]* NEC PC-88 disk image, name=%s
  2506. >>>>>>>>0x1B ubyte 0 \b, media=2D
  2507. >>>>>>>>0x1B ubyte 0x10 \b, media=2DD
  2508. >>>>>>>>0x1B ubyte 0x20 \b, media=2HD
  2509. >>>>>>>>0x1B ubyte 0x30 \b, media=1D
  2510. >>>>>>>>0x1B ubyte 0x40 \b, media=1DD
  2511. >>>>>>>>0x1A ubyte 0x10 \b, write-protected
  2512. # HDD Raw Copy Tool disk image, file extension: .imgc
  2513. # From Benjamin Vanheuverzwijn <bvanheu@gmail.com>
  2514. 0 pstring HDD\ Raw\ Copy\ Tool %s
  2515. >0x100 pstring x %s
  2516. >0x200 pstring x - HD model: %s
  2517. #>0x300 pstring x unknown %s
  2518. >0x400 pstring x serial: %s
  2519. #>0x500 pstring x unknown: %s
  2520. !:ext imgc
  2521. # http://martin.hinner.info/fs/bfs/bfs-structure.html
  2522. 0 lelong 0x1BADFACE SCO UnixWare BFS filesystem
  2523. # https://arstechnica.com/information-technology/2018/07/the-beos-filesystem/
  2524. 32 lelong 0x42465331 BE/OS BFS1 filesystem
  2525. >36 lelong x \b, byte order %d
  2526. >40 lelong x \b, block size %d
  2527. >44 lelong x \b, block shift %d
  2528. >48 lequad x \b, total blocks %lld
  2529. >56 lequad x \b, used blocks %lld
  2530. 0 name next
  2531. >0 lelong x \b, size %d
  2532. >4 string x \b, label %s
  2533. # https://opensource.apple.com/source/IOStorageFamily/IOStorageFamily-44.3\
  2534. # /IONeXTPartitionScheme.h
  2535. 0 string NeXT NeXT version 1 disklabel
  2536. >12 use next
  2537. 0 string dlV1 NeXT version 2 disklabel
  2538. >12 use next
  2539. 0 string dlV2 NeXT version 3 disklabel
  2540. >12 use next
  2541. # bcachefs
  2542. # From: Thomas Weißschuh <thomas@t-8ch.de>
  2543. 0 name bcachefs-uuid
  2544. >0 ubelong x \b%08x
  2545. >4 ubeshort x \b-%04x
  2546. >6 ubeshort x \b-%04x
  2547. >8 ubeshort x \b-%04x
  2548. >10 ubelong x \b-%08x
  2549. >14 ubeshort x \b%04x
  2550. 0x1018 string \xc6\x85\x73\xf6\x4e\x1a\x45\xca\x82\x65\xf5\x7f\x48\xba\x6d\x81 bcachefs
  2551. >0x1068 lequad 8 \b, UUID=
  2552. >>0x1038 use bcachefs-uuid
  2553. >>0x1048 string >0 \b, label "%.32s"
  2554. >>0x1010 uleshort x \b, version %u
  2555. >>0x1012 uleshort x \b, min version %u
  2556. >>0x107a byte x \b, device %d
  2557. # assumes the first field is the members field
  2558. >>0x12f4 ulelong 0x01 \b/UUID=
  2559. >>>0x12f0 default x
  2560. >>>&(0x107a.b*56) use bcachefs-uuid
  2561. >>0x107b byte x \b, %d devices
  2562. >>0x1090 byte ^0x02 \b (unclean)
  2563. # EROFS
  2564. # https://kernel.googlesource.com/pub/scm/linux/kernel/git/xiang/erofs-utils/\
  2565. # +/refs/heads/experimental/include/erofs_fs.h#12
  2566. 1024 lelong 0xE0F5E1E2 EROFS filesystem
  2567. #>1028 lelong x \b, checksum=%#x
  2568. >1032 lelong >0 \b, compat:
  2569. >>1032 lelong &1 SB_CHKSUM
  2570. >>1032 lelong &2 MTIME
  2571. >1036 byte x \b, blocksize=%u
  2572. >1037 byte x \b, exslots=%u
  2573. #>1038 leshort x \b, root_nid=%d
  2574. #>1040 lequad x \b, inodes=%ld
  2575. #>1048 leldate x \b, build_time=%s
  2576. #>1056 lelong x \b.%d
  2577. #>1060 lelong x \b, blocks=%d
  2578. #>1064 lelong x \b, metadata@%#x
  2579. #>1068 lelong x \b, xattr@%#x
  2580. >1072 guid x \b, uuid=%s
  2581. >1088 string >0 \b, name=%s
  2582. >1104 lelong >0 \b, incompat:
  2583. >>1104 lelong &1 LZ4_0PADDING
  2584. >>1104 lelong &2 BIG_PCLUSTER
  2585. >>1104 lelong &4 CHUNKED_FILE
  2586. >>1104 lelong &8 DEVICE_TABLE
  2587. >>1104 lelong &16 ZTAILPACKING