xref: /dflybsd-src/contrib/file/magic/Magdir/gnu (revision 7b80531f545c7d3c51c1660130c71d01f6bccbe0)
1f72f8299SJan Lentfer
2327e51cbSPeter Avalos#------------------------------------------------------------------------------
3*614728caSSascha Wildner# $File: gnu,v 1.24 2021/04/26 15:56:00 christos Exp $
4327e51cbSPeter Avalos# gnu:  file(1) magic for various GNU tools
5327e51cbSPeter Avalos#
6327e51cbSPeter Avalos# GNU nlsutils message catalog file format
7327e51cbSPeter Avalos#
817b11469SPeter Avalos# GNU message catalog (.mo and .gmo files)
917b11469SPeter Avalos
106fca56fbSSascha Wildner# Update: Joerg Jenderek
116fca56fbSSascha Wildner# URL: https://www.gnu.org/software/gettext/manual/html_node/MO-Files.html
126fca56fbSSascha Wildner# Reference: ftp://ftp.gnu.org/pub/gnu/gettext/gettext-0.19.8.tar.gz/
136fca56fbSSascha Wildner#	gettext-0.19.8.1/gettext-runtime/intl/gmo.h
146fca56fbSSascha Wildner# Note: maybe call it like "GNU translation gettext machine object"
15327e51cbSPeter Avalos0	string		\336\22\4\225	GNU message catalog (little endian),
166fca56fbSSascha Wildner#0	ulelong	0x950412DE		GNU-format message catalog data
176fca56fbSSascha Wildner# TODO: write lines in such a way that code can also be called for big endian variant
186fca56fbSSascha Wildner#>0	use		gettext-object
196fca56fbSSascha Wildner#0	name		gettext-object
206fca56fbSSascha Wildner>4	ulelong		x		revision
216fca56fbSSascha Wildner!:mime	application/x-gettext-translation
226fca56fbSSascha Wildner# mo extension is also used for Easeus Partition Master PE32 executable module
236fca56fbSSascha Wildner# like ConvertFatToNTFS.mo
246fca56fbSSascha Wildner!:ext	gmo/mo
256fca56fbSSascha Wildner# only found three revision combinations 0.0 0.1 1.1 as unsigned 32-bit
266fca56fbSSascha Wildner# major revision
276fca56fbSSascha Wildner>4	ulelong/0xFFff	x		%u.
286fca56fbSSascha Wildner# minor revision
296fca56fbSSascha Wildner>4	ulelong&0x0000FFff	x	\b%u
306fca56fbSSascha Wildner>>8	ulelong		x		\b, %u message
316fca56fbSSascha Wildner# plural s
326fca56fbSSascha Wildner>>8	ulelong		>1		\bs
336fca56fbSSascha Wildner# size of hashing table
346fca56fbSSascha Wildner#>20	ulelong		x		\b, %u hash
356fca56fbSSascha Wildner#>20	ulelong		>1		\bes
36*614728caSSascha Wildner#>24	ulelong		x		at %#x
37970935fdSSascha Wildner# for revision x.0 offset of table with originals is 1Ch if directly after header
386fca56fbSSascha Wildner>4	ulelong&0x0000FFff	=0
39*614728caSSascha Wildner>>12	ulelong		!0x1C		\b, at %#x string table
406fca56fbSSascha Wildner# but for x.1 table offset i found is 30h. That means directly after bigger header
416fca56fbSSascha Wildner>4	ulelong&0x0000FFff	>0
42*614728caSSascha Wildner>>12	ulelong		!0x30		\b, at %#x string table
436fca56fbSSascha Wildner# The following variables are only used in .mo files with minor revision >= 1
446fca56fbSSascha Wildner# number of system dependent segments
456fca56fbSSascha Wildner#>>28	ulelong		x		\b, %u segment
466fca56fbSSascha Wildner#>>28	ulelong		>1		\bs
476fca56fbSSascha Wildner# offset of table describing system dependent segments
48*614728caSSascha Wildner#>>32	ulelong		x		at %#x
496fca56fbSSascha Wildner# number of system dependent strings pairs
506fca56fbSSascha Wildner>>36	ulelong		x		\b, %u sysdep message
516fca56fbSSascha Wildner>>36	ulelong		>1		\bs
526fca56fbSSascha Wildner# offset of table with start offsets of original sysdep strings
53*614728caSSascha Wildner#>>40	ulelong		x		\b, at %#x sysdep strings
546fca56fbSSascha Wildner# offset of table with start offsets of translated sysdep strings
55*614728caSSascha Wildner#>>44	ulelong		x		\b, at %#x sysdep translations
56*614728caSSascha Wildner# >>(44.l)	ulelong	x		%#x chars
57*614728caSSascha Wildner# >>>&0		ulelong	x		at %#x
586fca56fbSSascha Wildner# >>>>(&-4)	string	x		"%s"
596fca56fbSSascha Wildner# string table after big header
60*614728caSSascha Wildner#>>48	ubequad		x		\b, string table %#llx
616fca56fbSSascha Wildner#
626fca56fbSSascha Wildner# 0th string length seems to be always 0
636fca56fbSSascha Wildner#>(12.l)	ulelong	x		\b, %u chars
64*614728caSSascha Wildner#>>&0		ulelong	x		at %#x
65970935fdSSascha Wildner# if 1st string length positive inspect offset and string
666fca56fbSSascha Wildner#>(12.l+8)	ulelong	>0		\b, %u chars
67*614728caSSascha Wildner#>>&0		ulelong	x		at %#x
68970935fdSSascha Wildner# if 2nd string length positive inspect offset and string
696fca56fbSSascha Wildner# >(12.l+16)	ulelong	>0		\b, %u chars
70*614728caSSascha Wildner# >>&0		ulelong	x		at %#x
716fca56fbSSascha Wildner# skip newline byte
726fca56fbSSascha Wildner#>>>(&-4)	ubyte	=0x0A
736fca56fbSSascha Wildner#>>>>&0		string	x		"%s"
746fca56fbSSascha Wildner#>>>(&-4)	ubyte	!0x0A
756fca56fbSSascha Wildner#>>>>&-1		string	x		'%s'
766fca56fbSSascha Wildner# offset of table with translation strings
77*614728caSSascha Wildner#>16	ulelong		x		\b, at %#x translation table
786fca56fbSSascha Wildner# check translation 0 length and offset
796fca56fbSSascha Wildner>(16.l)		ulelong	>0
806fca56fbSSascha Wildner>>&0		ulelong	x
816fca56fbSSascha Wildner# translation 0 seems to be often Project-Id with name and version
826fca56fbSSascha Wildner>>>(&-4)	string	x		\b, %s
836fca56fbSSascha Wildner# trans. 1 with bytes >= 1 unlike icoutils-0.31.0\po\en@boldquot.gmo with 1 NL
846fca56fbSSascha Wildner>(16.l+8)	ulelong	>1
856fca56fbSSascha Wildner>>&0		ulelong	x
866fca56fbSSascha Wildner>>>(&-4)	ubyte	!0x0A
876fca56fbSSascha Wildner>>>>&-1		string	x		'%s'
886fca56fbSSascha Wildner# 1 New Line like in tar-1.29\po\de.gmo
896fca56fbSSascha Wildner>>>(&-4)	ubyte	=0x0A
906fca56fbSSascha Wildner>>>>&0		ubyte	!0x0A
916fca56fbSSascha Wildner>>>>>&-1	string	x		'%s'
926fca56fbSSascha Wildner# 2nd New Line like in parted-3.1\po\de.gmo
936fca56fbSSascha Wildner>>>>&0		ubyte	=0x0A
946fca56fbSSascha Wildner>>>>>&0		string	x		'%s'
9517b11469SPeter Avalos
96327e51cbSPeter Avalos0	string		\225\4\22\336	GNU message catalog (big endian),
976fca56fbSSascha Wildner#0	ubelong	0x950412DE		GNU-format message catalog data
986fca56fbSSascha Wildner!:mime	application/x-gettext-translation
996fca56fbSSascha Wildner!:ext	gmo/mo
1006fca56fbSSascha Wildner# TODO: for big endian use same code as for little endian
1016fca56fbSSascha Wildner#>0	use		\^gettext-object
1026fca56fbSSascha Wildner# DEBUG code
103*614728caSSascha Wildner#>16	ubelong		x		\b, at %#x translation table
104*614728caSSascha Wildner#>(16.L)		ubelong	x		%#x chars
105*614728caSSascha Wildner#>>&0		ubelong	x		at %#x
1066fca56fbSSascha Wildner# unexpected value HERE!
107*614728caSSascha Wildner#>>>(&-4)	ubequad	x		%#llx
1086fca56fbSSascha Wildner#
10917b11469SPeter Avalos>4	beshort		x		revision %d.
11017b11469SPeter Avalos>6	beshort		>0		\b%d,
11117b11469SPeter Avalos>>8	belong		x		%d messages,
11217b11469SPeter Avalos>>36	belong		x		%d sysdep messages
11317b11469SPeter Avalos>6	beshort		=0		\b%d,
11417b11469SPeter Avalos>>8	belong		x		%d messages
11517b11469SPeter Avalos
116327e51cbSPeter Avalos
117327e51cbSPeter Avalos# GnuPG
118327e51cbSPeter Avalos# The format is very similar to pgp
119327e51cbSPeter Avalos0	string          \001gpg                 GPG key trust database
120327e51cbSPeter Avalos>4	byte            x                       version %d
12179343712SPeter Avalos# Note: magic.mime had 0x8501 for the next line instead of 0x8502
122327e51cbSPeter Avalos0	beshort		0x8502			GPG encrypted data
12379343712SPeter Avalos!:mime	text/PGP # encoding: data
12479343712SPeter Avalos
1256fca56fbSSascha Wildner# Update: Joerg Jenderek
1266fca56fbSSascha Wildner# Note:	PGP and GPG use same data structure.
1276fca56fbSSascha Wildner#	So recognition is now done by ./pgp with start test for byte 0x99
128327e51cbSPeter Avalos# This magic is not particularly good, as the keyrings don't have true
129327e51cbSPeter Avalos# magic. Nevertheless, it covers many keyrings.
1306fca56fbSSascha Wildner# 0	ubeshort-0x9901	<2
1316fca56fbSSascha Wildner# >3	byte		4
1326fca56fbSSascha Wildner# >>4	bedate		x		GPG key public ring, created %s
1336fca56fbSSascha Wildner# !:mime application/x-gnupg-keyring
134c30bd091SSascha Wildner
135e8af9738SPeter Avalos# Symmetric encryption
136e8af9738SPeter Avalos0	leshort		0x0d8c
137e8af9738SPeter Avalos>4	leshort		0x0203
138e8af9738SPeter Avalos>>2	leshort		0x0204		GPG symmetrically encrypted data (3DES cipher)
139e8af9738SPeter Avalos>>2	leshort		0x0304		GPG symmetrically encrypted data (CAST5 cipher)
140e8af9738SPeter Avalos>>2	leshort		0x0404		GPG symmetrically encrypted data (BLOWFISH cipher)
141e8af9738SPeter Avalos>>2	leshort		0x0704		GPG symmetrically encrypted data (AES cipher)
142e8af9738SPeter Avalos>>2	leshort		0x0804		GPG symmetrically encrypted data (AES192 cipher)
143e8af9738SPeter Avalos>>2	leshort		0x0904		GPG symmetrically encrypted data (AES256 cipher)
144e8af9738SPeter Avalos>>2	leshort		0x0a04		GPG symmetrically encrypted data (TWOFISH cipher)
145e8af9738SPeter Avalos>>2	leshort		0x0b04		GPG symmetrically encrypted data (CAMELLIA128 cipher)
146e8af9738SPeter Avalos>>2	leshort		0x0c04		GPG symmetrically encrypted data (CAMELLIA192 cipher)
147e8af9738SPeter Avalos>>2	leshort		0x0d04		GPG symmetrically encrypted data (CAMELLIA256 cipher)
148e8af9738SPeter Avalos
149e8af9738SPeter Avalos
150e8af9738SPeter Avalos# GnuPG Keybox file
1516fca56fbSSascha Wildner# <https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=blob;f=kbx/keybox-blob.c;hb=HEAD>
152e8af9738SPeter Avalos# From: Philipp Hahn <hahn@univention.de>
153e8af9738SPeter Avalos0	belong	32
154e8af9738SPeter Avalos>4	byte	1
155e8af9738SPeter Avalos>>8	string	KBXf	GPG keybox database
156e8af9738SPeter Avalos>>>5	byte	1	version %d
157e8af9738SPeter Avalos>>>16	bedate	x	\b, created-at %s
158e8af9738SPeter Avalos>>>20	bedate	x	\b, last-maintained %s
159e8af9738SPeter Avalos
160e8af9738SPeter Avalos
161327e51cbSPeter Avalos# From: James Youngman <jay@gnu.org>
162327e51cbSPeter Avalos# gnu find magic
163327e51cbSPeter Avalos0	string	\0LOCATE	GNU findutils locate database data
164327e51cbSPeter Avalos>7	string	>\0		\b, format %s
165327e51cbSPeter Avalos>7	string	02		\b (frcode)
16679343712SPeter Avalos
16779343712SPeter Avalos# Files produced by GNU gettext
1689f86ab30SPeter Avalos
1699f86ab30SPeter Avalos# gettext message catalogue
170c30bd091SSascha Wildner0	search/1024	\nmsgid
171c30bd091SSascha Wildner>&0	search/1024	\nmsgstr	GNU gettext message catalogue text
172c30bd091SSascha Wildner!:strength +100
1739f86ab30SPeter Avalos!:mime text/x-po
174