plist

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Sep 7, 2023 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Extract

func Extract(ipsw string) error

Extract extracts plists from IPSW

func GetBinaryInApp

func GetBinaryInApp(path string) (string, error)

GetBinaryInApp returns the binary path of the given .app

Types

type AppInfo

type AppInfo struct {
	BuildMachineOSBuild           string   `plist:"BuildMachineOSBuild,omitempty"`
	CFBundleDevelopmentRegion     string   `plist:"CFBundleDevelopmentRegion,omitempty"`
	CFBundleDocumentTypes         []any    `plist:"CFBundleDocumentTypes,omitempty"`
	CFBundleExecutable            string   `plist:"CFBundleExecutable,omitempty"`
	CFBundleIconFile              string   `plist:"CFBundleIconFile,omitempty"`
	CFBundleIconName              string   `plist:"CFBundleIconName,omitempty"`
	CFBundleIdentifier            string   `plist:"CFBundleIdentifier,omitempty"`
	CFBundleInfoDictionaryVersion string   `plist:"CFBundleInfoDictionaryVersion,omitempty"`
	CFBundleName                  string   `plist:"CFBundleName,omitempty"`
	CFBundlePackageType           string   `plist:"CFBundlePackageType,omitempty"`
	CFBundleShortVersionString    string   `plist:"CFBundleShortVersionString,omitempty"`
	CFBundleSignature             string   `plist:"CFBundleSignature,omitempty"`
	CFBundleSupportedPlatforms    []string `plist:"CFBundleSupportedPlatforms,omitempty"`
	CFBundleURLTypes              []struct {
		CFBundleTypeRole    string   `plist:"CFBundleTypeRole,omitempty"`
		CFBundleURLIconFile string   `plist:"CFBundleURLIconFile,omitempty"`
		CFBundleURLName     string   `plist:"CFBundleURLName,omitempty"`
		CFBundleURLSchemes  []string `plist:"CFBundleURLSchemes,omitempty"`
	} `plist:"CFBundleURLTypes,omitempty"`
	CFBundleVersion                      string   `plist:"CFBundleVersion,omitempty"`
	DTCompiler                           string   `plist:"DTCompiler,omitempty"`
	DTPlatformBuild                      string   `plist:"DTPlatformBuild,omitempty"`
	DTPlatformName                       string   `plist:"DTPlatformName,omitempty"`
	DTPlatformVersion                    string   `plist:"DTPlatformVersion,omitempty"`
	DTSDKBuild                           string   `plist:"DTSDKBuild,omitempty"`
	DTSDKName                            string   `plist:"DTSDKName,omitempty"`
	DTXcode                              string   `plist:"DTXcode,omitempty"`
	DTXcodeBuild                         string   `plist:"DTXcodeBuild,omitempty"`
	LSApplicationCategoryType            string   `plist:"LSApplicationCategoryType,omitempty"`
	LSMinimumSystemVersion               string   `plist:"LSMinimumSystemVersion,omitempty"`
	LSUIElement                          bool     `plist:"LSUIElement,omitempty"`
	MinimumOSVersion                     string   `plist:"MinimumOSVersion,omitempty"`
	NSHumanReadableCopyright             string   `plist:"NSHumanReadableCopyright,omitempty"`
	NSMainNibFile                        string   `plist:"NSMainNibFile,omitempty"`
	NSPrincipalClass                     string   `plist:"NSPrincipalClass,omitempty"`
	NSSupportsAutomaticGraphicsSwitching bool     `plist:"NSSupportsAutomaticGraphicsSwitching,omitempty"`
	NSUbiquitousDisplaySet               string   `plist:"NSUbiquitousDisplaySet,omitempty"`
	NSUserActivityTypes                  []string `plist:"NSUserActivityTypes,omitempty"`
	NSUserNotificationAlertStyle         string   `plist:"NSUserNotificationAlertStyle,omitempty"`
	NSUserNotificationAlertBody          string   `plist:"NSUserNotificationAlertBody,omitempty"`
	UTExportedTypeDeclarations           []any    `plist:"UTExportedTypeDeclarations,omitempty"`
}

AppInfo is the Info.plist object found in .app files https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Introduction/Introduction.html#//apple_ref/doc/uid/TP40009248-SW1

func ParseAppInfo

func ParseAppInfo(data []byte) (*AppInfo, error)

ParseAppInfo parses the .app/Info.plist

func (*AppInfo) String

func (r *AppInfo) String() string

type AssetDataInfo

type AssetDataInfo struct {
	ActualMinimumSystemPartition int               `plist:"ActualMinimumSystemPartition,omitempty" json:"actual_minimum_system_partition,omitempty"`
	Build                        string            `plist:"Build,omitempty" json:"build,omitempty"`
	DeviceClass                  string            `plist:"DeviceClass,omitempty" json:"device_class,omitempty"`
	HardwareModel                string            `plist:"HardwareModel,omitempty" json:"hardware_model,omitempty"`
	MinimumSystemPartition       int               `plist:"MinimumSystemPartition,omitempty" json:"minimum_system_partition,omitempty"`
	PackageVersion               string            `plist:"PackageVersion,omitempty" json:"package_version,omitempty"`
	ProductType                  string            `plist:"ProductType,omitempty" json:"product_type,omitempty"`
	ProductVersion               string            `plist:"ProductVersion,omitempty" json:"product_version,omitempty"`
	RSEPDigest                   []byte            `plist:"RSEPDigest,omitempty" json:"rsep_digest,omitempty"`
	RSEPTBMDigests               []byte            `plist:"RSEPTBMDigests,omitempty" json:"rseptbm_digests,omitempty"`
	RequiredSpace                int               `plist:"RequiredSpace,omitempty" json:"required_space,omitempty"`
	ReserveFileAware             bool              `plist:"ReserveFileAware,omitempty" json:"reserve_file_aware,omitempty"`
	SEPDigest                    []byte            `plist:"SEPDigest,omitempty" json:"sep_digest,omitempty"`
	SEPTBMDigests                []byte            `plist:"SEPTBMDigests,omitempty" json:"septbm_digests,omitempty"`
	SizeArchiveRoot              int               `plist:"SizeArchiveRoot,omitempty" json:"size_archive_root,omitempty"`
	SizePatchedBinaries          int               `plist:"SizePatchedBinaries,omitempty" json:"size_patched_binaries,omitempty"`
	SizePatchedBinariesSnapshot  int               `plist:"SizePatchedBinaries-Snapshot,omitempty" json:"size_patched_binaries_snapshot,omitempty"`
	SystemPartitionPadding       map[string]int    `plist:"SystemPartitionPadding,omitempty" json:"system_partition_padding,omitempty"`
	SystemUpdatePathMap          map[string]string `plist:"SystemUpdatePathMap,omitempty" json:"system_update_path_map,omitempty"`
	SystemVolumeSealingOverhead  int               `plist:"SystemVolumeSealingOverhead,omitempty" json:"system_volume_sealing_overhead,omitempty"`
	TargetUpdate                 string            `plist:"TargetUpdate,omitempty" json:"target_update,omitempty"`
}

AssetDataInfo AssetData/Info.plist object found in OTAs

func ParseAssetDataInfoPlist

func ParseAssetDataInfoPlist(data []byte) (*AssetDataInfo, error)

ParseBuildManifest parses the AssetData/Info.plist file from an OTA

func (*AssetDataInfo) String

func (a *AssetDataInfo) String() string

AssetDataInfo Stringer

type BuildManifest

type BuildManifest struct {
	BuildIdentities       []buildIdentity `plist:"BuildIdentities,omitempty" json:"build_identities,omitempty"`
	ManifestVersion       int             `plist:"ManifestVersion,omitempty" json:"manifest_version,omitempty"`
	ProductBuildVersion   string          `plist:"ProductBuildVersion,omitempty" json:"product_build_version,omitempty"`
	ProductVersion        string          `plist:"ProductVersion,omitempty" json:"product_version,omitempty"`
	SupportedProductTypes []string        `plist:"SupportedProductTypes,omitempty" json:"supported_product_types,omitempty"`
}

BuildManifest is the BuildManifest.plist object found in IPSWs/OTAs

func ParseBuildManifest

func ParseBuildManifest(data []byte) (*BuildManifest, error)

ParseBuildManifest parses the BuildManifest.plist

func (*BuildManifest) GetBootLoaders

func (b *BuildManifest) GetBootLoaders() map[string][]string

func (*BuildManifest) GetKernelCaches

func (b *BuildManifest) GetKernelCaches() map[string][]string

func (*BuildManifest) GetKernelForModel

func (b *BuildManifest) GetKernelForModel(model string) []string

func (*BuildManifest) String

func (b *BuildManifest) String() string

type IdentityInfo

type IdentityInfo struct {
	BuildNumber            string            `json:"build_number,omitempty"`
	CodeName               string            `plist:"BuildTrain,omitempty" json:"code_name,omitempty"`
	DeviceClass            string            `json:"device_class,omitempty"`
	FDRSupport             bool              `json:"fdr_support,omitempty"`
	MinimumSystemPartition int               `json:"minimum_system_partition,omitempty"`
	MobileDeviceMinVersion string            `json:"mobile_device_min_version,omitempty"`
	OSVarContentSize       int               `json:"os_var_content_size,omitempty"`
	RestoreBehavior        string            `json:"restore_behavior,omitempty"`
	SystemPartitionPadding map[string]int    `json:"system_partition_padding,omitempty"`
	Variant                string            `json:"variant,omitempty"`
	VariantContents        map[string]string `json:"variant_contents,omitempty"`
}

func (IdentityInfo) String

func (i IdentityInfo) String() string

type IdentityManifest

type IdentityManifest struct {
	Digest      []byte         `json:"digest,omitempty"`
	Name        string         `plist:"Name,omitempty" json:"name,omitempty"`
	BuildString string         `plist:"BuildString,omitempty" json:"build_string,omitempty"`
	Info        map[string]any `plist:"Info,omitempty" json:"info,omitempty"`
	Trusted     bool           `json:"trusted,omitempty"`
	EPRO        bool           `plist:"EPRO,omitempty" json:"epro,omitempty"`
	ESEC        bool           `plist:"ESEC,omitempty" json:"esec,omitempty"`
}

func (IdentityManifest) String

func (m IdentityManifest) String() string

type IdentityManifestInfo

type IdentityManifestInfo struct {
	IsFTAB                      bool   `json:"is_ftab,omitempty"`
	IsFUDFirmware               bool   `plist:"IsFUDFirmware,omitempty" json:"is_fud_firmware,omitempty"`
	IsFirmwarePayload           bool   `plist:"IsFirmwarePayload,omitempty" json:"is_firmware_payload,omitempty"`
	IsLoadedByiBoot             bool   `json:"is_loaded_byi_boot,omitempty"`
	IsLoadedByiBootStage1       bool   `json:"is_loaded_byi_boot_stage_1,omitempty"`
	IsiBootEANFirmware          bool   `json:"isi_boot_ean_firmware,omitempty"`
	IsiBootNonEssentialFirmware bool   `json:"isi_boot_non_essential_firmware,omitempty"`
	Path                        string `plist:"Path" json:"path,omitempty"`
	Personalize                 bool   `json:"personalize,omitempty"`
	RestoreRequestRules         []any  `json:"restore_request_rules,omitempty"`
}

type OTAInfo

type OTAInfo struct {
	CFBundleIdentifier            string      `plist:"CFBundleIdentifier,omitempty" json:"cf_bundle_identifier,omitempty"`
	CFBundleInfoDictionaryVersion string      `plist:"CFBundleInfoDictionaryVersion,omitempty" json:"cf_bundle_info_dictionary_version,omitempty"`
	CFBundleName                  string      `plist:"CFBundleName,omitempty" json:"cf_bundle_name,omitempty"`
	CFBundleShortVersionString    string      `plist:"CFBundleShortVersionString,omitempty" json:"cf_bundle_short_version_string,omitempty"`
	CFBundleVersion               string      `plist:"CFBundleVersion,omitempty" json:"cf_bundle_version,omitempty"`
	MobileAssetProperties         types.Asset `plist:"MobileAssetProperties,omitempty" json:"mobile_asset_properties,omitempty"`
}

OTAInfo Info.plist object found in OTAs

func ParseOTAInfo

func ParseOTAInfo(data []byte) (*OTAInfo, error)

ParseOTAInfo parses the Info.plist file from an OTA

func (*OTAInfo) String

func (o *OTAInfo) String() string

OTAInfo Stringer

type Plists

type Plists struct {
	Type           string `json:"type,omitempty"`
	*BuildManifest `json:"build_manifest,omitempty"`
	*Restore       `json:"restore,omitempty"`
	*AssetDataInfo `json:"asset_data_info,omitempty"`
	*OTAInfo       `json:"ota_info,omitempty"`
}

Plists IPSW/OTA plists object

func Parse

func Parse(path string) (*Plists, error)

Parse parses plist files in a local IPSW/OTA file

func ParseZipFiles

func ParseZipFiles(files []*zip.File) (*Plists, error)

ParseZipFiles parses plists in remote ipsw zip

func (*Plists) GetDeviceForBoardConfig

func (p *Plists) GetDeviceForBoardConfig(boardConfig string) *restoreDeviceMap

func (*Plists) GetKernelType

func (p *Plists) GetKernelType(name string) string

func (*Plists) GetOSType

func (p *Plists) GetOSType() string

func (*Plists) String

func (i *Plists) String() string

type Restore

type Restore struct {
	DeviceMap                     []restoreDeviceMap `plist:"DeviceMap,omitempty"`
	ProductBuildVersion           string             `plist:"ProductBuildVersion,omitempty"`
	ProductVersion                string             `plist:"ProductVersion,omitempty"`
	SupportedProductTypeIDs       map[string][]int   `plist:"SupportedProductTypeIDs,omitempty"`
	SupportedProductTypes         []string           `plist:"SupportedProductTypes,omitempty"`
	SystemRestoreImageFileSystems map[string]string  `plist:"SystemRestoreImageFileSystems,omitempty"`
}

Restore is the Restore.plist object found in IPSWs/OTAs

func ParseRestore

func ParseRestore(data []byte) (*Restore, error)

ParseRestore parses the Restore.plist

func (*Restore) String

func (r *Restore) String() string

Jump to

Keyboard shortcuts

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