magicNumbers

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 27, 2021 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type MagicNumbers

type MagicNumbers struct {
	// Will be a saved file (read/write).
	List []signatures
	// whether there is no signature that match, output display "Displen"
	// byte from the start of the input data.
	DispLen int
	// contains filtered or unexported fields
}

MagicNumbers:

func MagicNumbersNew

func MagicNumbersNew() (out *MagicNumbers, err error)

MagicNumbersNew:

func (*MagicNumbers) AddMagicNumber

func (m *MagicNumbers) AddMagicNumber(ext, mime string, isText bool, signaturesList ...MagicNumbersSignature) (err error)

TODO Thing to add multi-patterns matching in a specific range ... AddMagicNumber: Use MagicNumbersNewSig() to create a new signature before adding. i.e: notice, error not hendled here ... Rebuild() must be used to finalize operation !

1- Add 2 signatures for .woff type "application/font-woff", not a txt file
	mns := MagicNumbersSignatureNew(0, "774F464600010000")
	mns1 := MagicNumbersSignatureNew(0, "774F46464F54544F")
	signs.AddMagicNumber("woff", "application/font-woff", false, mns, mns1)

2- Add 1 signature start at offset 22 for .eot type "application/vnd.ms-fontobject",
not a txt file
	mns = MagicNumbersSignatureNew(22, "4C500000000000000000000000000000000001")
	signs.AddMagicNumber("eot", "application/vnd.ms-fontobject", false, mns)

3- Add only extension .js and his mime type "application/javascript", is a txt file
	signs.AddMagicNumber("js", "application/javascript", true)

4- Add 1 signature start at offset 0, to offset 512 (pattern if searched in this range),
Another search is done from the end of the file with a range of 7 to match "3C2F7376673E"
(</svg>). This signature is for the .svg type "image/svg+xml", is a txt file.
	mns = MagicNumbersSignatureNew(0, "3C73766720786D6C6E73", "3C2F7376673E")
	mns.Range=512  // Range to search from start offset
	mns.RangeEnd=7 // Range from end, by default that contain length +1 of "ValueEnd"
	signs.AddMagicNumber("svg", "image/svg+xml", true, mns)
	signs.Rebuild()

func (*MagicNumbers) CheckBytes

func (m *MagicNumbers) CheckBytes(data []byte, basename ...string) (outInf *[]outInfos, err error)

CheckBytes:

func (*MagicNumbers) CheckFile

func (m *MagicNumbers) CheckFile(filename string) (out *[]outInfos, err error)

CheckFile: TODO find a way to seek only needed bytes to be analysed

func (*MagicNumbers) ImportFromFile

func (m *MagicNumbers) ImportFromFile(filename string) (err error)

ImportFromFile: Import base data containing signatures information.

func (*MagicNumbers) Read

func (m *MagicNumbers) Read(filename string) (err error)

Read: main structure containing whole signatures

func (*MagicNumbers) ReadFromBytes

func (m *MagicNumbers) ReadFromBytes(textFileBytes []byte) (err error)

ReadFromBytes:

func (*MagicNumbers) Rebuild

func (m *MagicNumbers) Rebuild() (err error)

Rebuild: using new added signature and the original json signatures files.

func (*MagicNumbers) Write

func (m *MagicNumbers) Write(filename string) (err error)

Write: main structure containing whole signatures

type MagicNumbersSignature

type MagicNumbersSignature struct {
	Offset,
	Range,
	RangeEnd int
	Value,
	ValueEnd string
	Bytes,
	BytesEnd []byte
}

MagicNumbersSignature:

func MagicNumbersSignatureNew

func MagicNumbersSignatureNew(offset int, valueStart string, valueEnd ...string) MagicNumbersSignature

MagicNumbersSignatureNew:

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL