dat2img

package
v0.0.18 Latest Latest
Warning

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

Go to latest
Published: Aug 18, 2025 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ENV_FFMPEG_PATH = "FFMPEG_PATH"
	MinRatio        = 0.6
	FixSliceHeaders = true
)

Variables

View Source
var (
	// Common image format definitions
	JPG     = Format{Header: []byte{0xFF, 0xD8, 0xFF}, Ext: "jpg"}
	PNG     = Format{Header: []byte{0x89, 0x50, 0x4E, 0x47}, Ext: "png"}
	GIF     = Format{Header: []byte{0x47, 0x49, 0x46, 0x38}, Ext: "gif"}
	TIFF    = Format{Header: []byte{0x49, 0x49, 0x2A, 0x00}, Ext: "tiff"}
	BMP     = Format{Header: []byte{0x42, 0x4D}, Ext: "bmp"}
	WXGF    = Format{Header: []byte{0x77, 0x78, 0x67, 0x66}, Ext: "wxgf"}
	Formats = []Format{JPG, PNG, GIF, TIFF, BMP, WXGF}

	V4Format1 = Format{Header: []byte{0x07, 0x08, 0x56, 0x31}, AesKey: []byte("cfcd208495d565ef")}
	V4Format2 = Format{Header: []byte{0x07, 0x08, 0x56, 0x32}, AesKey: []byte("0000000000000000")} // FIXME
	V4Formats = []*Format{&V4Format1, &V4Format2}

	// WeChat v4 related constants
	V4XorKey byte = 0x37               // Default XOR key for WeChat v4 dat files
	JpgTail       = []byte{0xFF, 0xD9} // JPG file tail marker
)
View Source
var (
	FFmpegMode = false
	FFMpegPath = "ffmpeg"
)

Functions

func Add2Trak added in v0.0.18

func Add2Trak(init *mp4.InitSegment, frag *mp4.Fragment, index int, data [][]byte) error

func Convert2JPG added in v0.0.16

func Convert2JPG(data []byte) ([]byte, error)

func ConvertAnime2GIF added in v0.0.18

func ConvertAnime2GIF(animeFrames [][]byte, maskFrames [][]byte) ([]byte, error)

ConvertAnime2GIF convert anime frames and mask frames to mp4 FIXME No longer need to write to temporary files

func Dat2Image

func Dat2Image(data []byte) ([]byte, string, error)

Dat2Image converts WeChat dat file data to image data Returns the decoded image data, file extension, and any error encountered

func Dat2ImageV4 added in v0.0.6

func Dat2ImageV4(data []byte, aeskey []byte) ([]byte, string, error)

Dat2ImageV4 processes WeChat v4 dat image files WeChat v4 uses a combination of AES-ECB and XOR encryption

func ScanAndSetXorKey added in v0.0.6

func ScanAndSetXorKey(dirPath string) (byte, error)

ScanAndSetXorKey scans a directory for "_t.dat" files to calculate and set the global XOR key for WeChat v4 dat files Returns the found key and any error encountered

func SetAesKey added in v0.0.16

func SetAesKey(key string)

func Transmux2MP4 added in v0.0.18

func Transmux2MP4(data []byte) ([]byte, error)

func TransmuxAnime2MP4 added in v0.0.18

func TransmuxAnime2MP4(animeFrames [][]byte, maskFrames [][]byte) ([]byte, error)

func Wxam2pic added in v0.0.16

func Wxam2pic(data []byte) ([]byte, string, error)

Types

type AesKeyValidator added in v0.0.16

type AesKeyValidator struct {
	Path          string
	EncryptedData []byte
}

func NewImgKeyValidator added in v0.0.16

func NewImgKeyValidator(path string) *AesKeyValidator

func (*AesKeyValidator) Validate added in v0.0.16

func (v *AesKeyValidator) Validate(key []byte) bool

type Format

type Format struct {
	Header []byte
	AesKey []byte
	Ext    string
}

Format defines the header and extension for different image types

type Partition added in v0.0.18

type Partition struct {
	Offset int
	Size   int
	Ratio  float64
}

type Partitions added in v0.0.18

type Partitions struct {
	Partitions []Partition
	MaxRatio   float64
	MaxIndex   int
}

func (*Partitions) LikeAnime added in v0.0.18

func (p *Partitions) LikeAnime() bool

Jump to

Keyboard shortcuts

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