decrypted

package
v0.0.0-...-a2c3042 Latest Latest
Warning

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

Go to latest
Published: Apr 18, 2021 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Examples

Constants

View Source
const (
	DbiKey                     = 0x00
	DbiUser                    = 0x01
	DbiDcOptionOldOld          = 0x02
	DbiChatSizeMax             = 0x03
	DbiMutePeer                = 0x04
	DbiSendKeyOld              = 0x05
	DbiAutoStart               = 0x06
	DbiStartMinimized          = 0x07
	DbiSoundNotify             = 0x08
	DbiWorkMode                = 0x09
	DbiSeenTrayTooltip         = 0x0a
	DbiDesktopNotify           = 0x0b
	DbiAutoUpdate              = 0x0c
	DbiLastUpdateCheck         = 0x0d
	DbiWindowPosition          = 0x0e
	DbiConnectionTypeOld       = 0x0f
	DbiDefaultAttach           = 0x11
	DbiCatsAndDogs             = 0x12
	DbiReplaceEmoji            = 0x13
	DbiAskDownloadPath         = 0x14
	DbiDownloadPathOld         = 0x15
	DbiScaleOld                = 0x16
	DbiEmojiTabOld             = 0x17
	DbiRecentEmojiOldOld       = 0x18
	DbiLoggedPhoneNumber       = 0x19
	DbiMutedPeers              = 0x1a
	DbiNotifyView              = 0x1c
	DbiSendToMenu              = 0x1d
	DbiCompressPastedImage     = 0x1e
	DbiLangOld                 = 0x1f
	DbiLangFileOld             = 0x20
	DbiTileBackgroundOld       = 0x21
	DbiAutoLock                = 0x22
	DbiDialogLastPath          = 0x23
	DbiRecentEmojiOld          = 0x24
	DbiEmojiVariantsOld        = 0x25
	DbiRecentStickers          = 0x26
	DbiDcOptionOld             = 0x27
	DbiTryIPv6                 = 0x28
	DbiSongVolume              = 0x29
	DbiWindowsNotificationsOld = 0x30
	DbiIncludeMutedOld         = 0x31
	DbiMegagroupSizeMax        = 0x32
	DbiDownloadPath            = 0x33
	DbiAutoDownload            = 0x34
	DbiSavedGifsLimit          = 0x35
	DbiShowingSavedGifsOld     = 0x36
	DbiAutoPlay                = 0x37
	DbiAdaptiveForWide         = 0x38
	DbiHiddenPinnedMessages    = 0x39
	DbiRecentEmoji             = 0x3a
	DbiEmojiVariants           = 0x3b
	DbiDialogsMode             = 0x40
	DbiModerateMode            = 0x41
	DbiVideoVolume             = 0x42
	DbiStickersRecentLimit     = 0x43
	DbiNativeNotifications     = 0x44
	DbiNotificationsCount      = 0x45
	DbiNotificationsCorner     = 0x46
	DbiThemeKeyOld             = 0x47
	DbiDialogsWidthRatioOld    = 0x48
	DbiUseExternalVideoPlayer  = 0x49
	DbiDcOptions               = 0x4a
	DbiMtpAuthorization        = 0x4b
	DbiLastSeenWarningSeenOld  = 0x4c
	DbiAuthSessionSettings     = 0x4d
	DbiLangPackKey             = 0x4e
	DbiConnectionType          = 0x4f
	DbiStickersFavedLimit      = 0x50
	DbiSuggestStickersByEmoji  = 0x51
	DbiSuggestEmoji            = 0x52
	DbiTxtDomainString         = 0x53
	DbiThemeKey                = 0x54
	DbiTileBackground          = 0x55
	DbiCacheSettings           = 0x56
	DbiAnimationsDisabled      = 0x57
	DbiScalePercent            = 0x58
	DbiPlaybackSpeed           = 0x59
	DbiLanguagesKey            = 0x5a
	DbiEncryptedWithSalt       = 333
	DbiEncrypted               = 444
	DbiVersion                 = 666
)

Variables

View Source
var DBI = map[uint32]string{
	0x00: "DbiKey",
	0x01: "DbiUser",
	0x02: "DbiDcOptionOldOld",
	0x03: "DbiChatSizeMax",
	0x04: "DbiMutePeer",
	0x05: "DbiSendKeyOld",
	0x06: "DbiAutoStart",
	0x07: "DbiStartMinimized",
	0x08: "DbiSoundNotify",
	0x09: "DbiWorkMode",
	0x0a: "DbiSeenTrayTooltip",
	0x0b: "DbiDesktopNotify",
	0x0c: "DbiAutoUpdate",
	0x0d: "DbiLastUpdateCheck",
	0x0e: "DbiWindowPosition",
	0x0f: "DbiConnectionTypeOld",
	0x11: "DbiDefaultAttach",
	0x12: "DbiCatsAndDogs",
	0x13: "DbiReplaceEmoji",
	0x14: "DbiAskDownloadPath",
	0x15: "DbiDownloadPathOld",
	0x16: "DbiScaleOld",
	0x17: "DbiEmojiTabOld",
	0x18: "DbiRecentEmojiOldOld",
	0x19: "DbiLoggedPhoneNumber",
	0x1a: "DbiMutedPeers",
	0x1c: "DbiNotifyView",
	0x1d: "DbiSendToMenu",
	0x1e: "DbiCompressPastedImage",
	0x1f: "DbiLangOld",
	0x20: "DbiLangFileOld",
	0x21: "DbiTileBackgroundOld",
	0x22: "DbiAutoLock",
	0x23: "DbiDialogLastPath",
	0x24: "DbiRecentEmojiOld",
	0x25: "DbiEmojiVariantsOld",
	0x26: "DbiRecentStickers",
	0x27: "DbiDcOptionOld",
	0x28: "DbiTryIPv6",
	0x29: "DbiSongVolume",
	0x30: "DbiWindowsNotificationsOld",
	0x31: "DbiIncludeMutedOld",
	0x32: "DbiMegagroupSizeMax",
	0x33: "DbiDownloadPath",
	0x34: "DbiAutoDownload",
	0x35: "DbiSavedGifsLimit",
	0x36: "DbiShowingSavedGifsOld",
	0x37: "DbiAutoPlay",
	0x38: "DbiAdaptiveForWide",
	0x39: "DbiHiddenPinnedMessages",
	0x3a: "DbiRecentEmoji",
	0x3b: "DbiEmojiVariants",
	0x40: "DbiDialogsMode",
	0x41: "DbiModerateMode",
	0x42: "DbiVideoVolume",
	0x43: "DbiStickersRecentLimit",
	0x44: "DbiNativeNotifications",
	0x45: "DbiNotificationsCount",
	0x46: "DbiNotificationsCorner",
	0x47: "DbiThemeKeyOld",
	0x48: "DbiDialogsWidthRatioOld",
	0x49: "DbiUseExternalVideoPlayer",
	0x4a: "DbiDcOptions",
	0x4b: "DbiMtpAuthorization",
	0x4c: "DbiLastSeenWarningSeenOld",
	0x4d: "DbiAuthSessionSettings",
	0x4e: "DbiLangPackKey",
	0x4f: "DbiConnectionType",
	0x50: "DbiStickersFavedLimit",
	0x51: "DbiSuggestStickersByEmoji",
	0x52: "DbiSuggestEmoji",
	0x53: "DbiTxtDomainString",
	0x54: "DbiThemeKey",
	0x55: "DbiTileBackground",
	0x56: "DbiCacheSettings",
	0x57: "DbiAnimationsDisabled",
	0x58: "DbiScalePercent",
	0x59: "DbiPlaybackSpeed",
	0x5a: "DbiLanguagesKey",
	333:  "DbiEncryptedWithSalt",
	444:  "DbiEncrypted",
	666:  "DbiVersion",
}
View Source
var LSK = map[uint32]interface{}{
	0x00: UserMap{},
	0x01: Draft{},
	0x02: DraftPosition{},
	0x03: Images{},
	0x04: Locations{},
	0x05: StickerImages{},
	0x06: Audios{},
	0x07: RecentStickersOld{},
	0x08: BackgroundOld{},
	0x09: UserSettings{},
	0x0a: RecentHashtagsAndBots{},
	0x0b: StickersOld{},
	0x0c: SavedPeers{},
	0x0d: ReportSpamStatuses{},
	0x0e: SavedGifsOld{},
	0x0f: SavedGifs{},
	0x10: StickersKeys{},
	0x11: TrustedBots{},
	0x12: FavedStickers{},
	0x13: ExportSettings{},
	0x14: Background{},
	0x15: SelfSerialized{},
}

Functions

func ParseCache

func ParseCache(data []byte, keytype uint32) (interface{}, error)
Example
image0, err := hex.DecodeString(hexImage)
if err != nil {
	fmt.Println(1, err)
}
key, err := hex.DecodeString(hexKey)
if err != nil {
	fmt.Println(2, err)
}
rawtdf, err := tdata.ReadRawTDF(bytes.NewReader([]byte(image0)))
if err != nil {
	fmt.Println(3, err)
}
ecache, err := encrypted.ReadECache(rawtdf)
if err != nil {
	fmt.Println(4, err)
}
data, err := ecache.Decrypt(key)
if err != nil {
	fmt.Println(5, err)
}
cache, err := ParseCache(data, ReverseLSK(Images{}))
if err != nil {
	fmt.Println(6, err)
}
image := cache.(Images)
err = struc.Unpack(bytes.NewReader(data), &image)
if err != nil {
	fmt.Println("error using unpack", err)
}
fmt.Println(hex.EncodeToString(image.Data))
Output:

ffd8ffe000104a46494600010101004800480000ffdb0043000e0a0b0d0b090e0d0c0d100f0e11162417161414162c20211a24342e3736332e32323a4153463a3d4e3e32324862494e56585d5e5d3845666d655a6c535b5d59ffdb0043010f10101613162a17172a593b323b5959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959ffc00011080020005a03012200021101031101ffc400190000030101010000000000000000000000010204030007ffc400351000010302020705050900000000000000010002110312043105132141515291227192a1d2233233d1f042536162638193b1e1ffc40014010100000000000000000000000000000000ffc4001511010100000000000000000000000000000011ffda000c03010002110311003f00f49424252e9902d3fba59a633b5a78142b491c576c3b2520b098007447b0d76401ee409a81f79533e64daafceff126b9bcc3aaeb9bcc3aa0cf51fa957c4b502042ecd720e596b2adf1632d9ceedcb5201cc4a018d19040a5ce00ec64ee177f89c64858de099023410609247926fac966e6bc35e581ae7fd9b8c058df8d9f8543f91de9414900882011f884440c879294d4c5813aaa3dd7bbd281763af814f0f11bdeef920afeb25ca51531b13a9a1ddac77a5173f1922da34403c6a3bd2837820f6623815d2e8f776f9292ed2371ec616d0799d97446ec7961f678704e46f76cef1082a17ef0d464f2a901d21116618bb8dce8fe90bf48449a787f13fe482c93b9bd51513ce91221a30cd24672e31e4aca61c29b43c82f81711bca0fffd9
Example (A)
data, err := hex.DecodeString("ac0200000000000500000000000000210000000000000038000000010000002200000e10000000130000000100000052000000010000005100000001000000080000000100000031000000010000000b000000010000001c00000000000000440000000000000045000000030000004600000002000000140000000000000033ffffffffffffffff0000002300000030002f0068006f006d0065002f006100740069006c0061002e0061006c0072002f0050006900630074007500720065007300000029000dbba000000042000dbba0000000340000000000000000000000000000004000000000000000000000004100000000000000370000000100000049000000000000004d0000003800000000000000000000000000000000000000000000000100000004000000000000000000000000000735b700000000ffffffff000000000000003a0000002200000004d83dde02000100000004d83dde180001000000022764000100000004d83dde0d000100000004d83dde0a000100000004d83dde01000100000004d83ddc4d000100000002263a000100000004d83dde14000100000004d83dde04000100000004d83dde2d000100000004d83ddc8b000100000004d83dde12000100000004d83dde33000100000004d83dde1c000100000004d83dde48000100000004d83dde09000100000004d83dde03000100000004d83dde22000100000004d83dde1d000100000004d83dde31000100000004d83dde21000100000004d83dde0f000100000004d83dde1e000100000004d83dde05000100000004d83dde1a000100000004d83dde4a000100000004d83dde0c000100000004d83dde00000100000004d83dde0b000100000004d83dde06000100000004d83ddc4c000100000004d83dde10000100000004d83dde1500010000003b0000000000000026000000003ab23fdf")
if err != nil {
	fmt.Println(err)
}
code := ReverseLSK(UserSettings{})
cache, err := ParseCache(data, code)
if err != nil {
	fmt.Println(err)
}
json.NewEncoder(os.Stdout).Encode(cache)
Output:

{"FullLen":684,"Settings":[{"DbiSendKeyOld":0},{"DbiTileBackgroundOld":0},{"DbiAdaptiveForWide":1},{"DbiAutoLock":3600},{"DbiReplaceEmoji":1},{"DbiSuggestEmoji":1},{"DbiSuggestStickersByEmoji":1},{"DbiSoundNotify":1},{"DbiIncludeMutedOld":1},{"DbiDesktopNotify":1},{"DbiNotifyView":0},{"DbiNativeNotifications":0},{"DbiNotificationsCount":3},{"DbiNotificationsCorner":2},{"DbiAskDownloadPath":0},{"DbiDownloadPath":{"V":"","Bookmark":""}},{"DbiDialogLastPath":"/home/atila.alr/Pictures"},{"DbiSongVolume":900000},{"DbiVideoVolume":900000},{"DbiAutoDownload":{"Photo":0,"Audio":0,"Gif":0}},{"DbiDialogsMode":{"Enabled":0,"ModeInt":0}},{"DbiModerateMode":0},{"DbiAutoPlay":1},{"DbiUseExternalVideoPlayer":0},{"DbiAuthSessionSettings":{"V":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABAAAAAAAAAAAAAAAAAAHNbcAAAAA/////wAAAAA="}},{"DbiRecentEmoji":[{"First":"😂","Second":1},{"First":"😘","Second":1},{"First":"❤","Second":1},{"First":"😍","Second":1},{"First":"😊","Second":1},{"First":"😁","Second":1},{"First":"👍","Second":1},{"First":"☺","Second":1},{"First":"😔","Second":1},{"First":"😄","Second":1},{"First":"😭","Second":1},{"First":"💋","Second":1},{"First":"😒","Second":1},{"First":"😳","Second":1},{"First":"😜","Second":1},{"First":"🙈","Second":1},{"First":"😉","Second":1},{"First":"😃","Second":1},{"First":"😢","Second":1},{"First":"😝","Second":1},{"First":"😱","Second":1},{"First":"😡","Second":1},{"First":"😏","Second":1},{"First":"😞","Second":1},{"First":"😅","Second":1},{"First":"😚","Second":1},{"First":"🙊","Second":1},{"First":"😌","Second":1},{"First":"😀","Second":1},{"First":"😋","Second":1},{"First":"😆","Second":1},{"First":"👌","Second":1},{"First":"😐","Second":1},{"First":"😕","Second":1}]},{"DbiEmojiVariants":[]},{"DbiRecentStickers":[]}]}
Example (B)
data, err := hex.DecodeString("ae0000004e45abe9000000014481d5870000003d0000000000000048002f0068006f006d0065002f006100740069006c0061002e0061006c0072002f00500069006300740075007200650073002f00530070006f0074006900660079002e0070006e0067ffffffff000000000025802c02301bbeff0002a38c0000000000000000000000000000000000000000ffffffffffffffff00000000002583c1023ba3e4ff0000000000000000000000000e8e")
if err != nil {
	fmt.Println(err)
}
code := ReverseLSK(Locations{})
cache, err := ParseCache(data, code)
if err != nil {
	fmt.Println(err)
}
b, err := json.Marshal(cache)
if err != nil {
	fmt.Println(err)
}
fmt.Println(string(b))
Output:

{"FullLen":174,"Locations":[{"MediaKey":{"LocationType":"DocumentFileLocation","DC":1,"ID":"0x4481d5870000003d"},"LegacyType":0,"Filename":"/home/atila.alr/Pictures/Spotify.png","Bookmark":"","DateTime":"2016-09-12T10:11:47.262Z","Size":172940}]}
Example (C)
data, err := hex.DecodeString("3203000000000003000000c80000003200030d4000000035000000c800000043000000c80000005000000005000000060000000000000007000000000000001d0000000000000009000000000000000a000000000000000c000000010000000d0000000000000016000000000000004a0000025cffffffff0000000d0000000100000000000001bb0000000e3134392e3135342e3137352e3530000000000000000100000001000001bb00000027323030313a306232383a663233643a663030313a303030303a303030303a303030303a30303061000000000000000200000000000001bb0000000e3134392e3135342e3136372e3531000000000000000200000001000001bb00000027323030313a303637633a303465383a663030323a303030303a303030303a303030303a30303061000000000000000300000000000001bb0000000f3134392e3135342e3137352e313030000000000000000300000001000001bb00000027323030313a306232383a663233643a663030333a303030303a303030303a303030303a30303061000000000000000400000000000001bb0000000e3134392e3135342e3136372e3931000000000000000400000001000001bb00000027323030313a303637633a303465383a663030343a303030303a303030303a303030303a30303061000000000000000400000002000001bb0000000f3134392e3135342e3136342e323530000000000000000400000003000001bb00000027323030313a303637633a303465383a663030343a303030303a303030303a303030303a30303062000000000000000500000001000001bb00000027323030313a306232383a663233663a663030353a303030303a303030303a303030303a30303061000000000000000500000010000001bb0000000d39312e3130382e35362e323030000000000000000500000000000001bb0000000d39312e3130382e35362e3137350000000000000000000000190000001a00350035003500310039003900390037003700390030003700300000004f0000000400000000ffffffff00000028000000010000004ea642b24495ee2a550000000e0000000200000018000004ac0000073ac674053f0000000049fad6985298f9b321101418ed78")

if err != nil {
	fmt.Println(err)
}

cache, err := ParseCache(data, ReverseLSK(UserSettings{}))
if err != nil {
	fmt.Println(err)
}
b, err := json.Marshal(cache)
if err != nil {
	fmt.Println(err)
}
fmt.Println(string(b))
Output:

{"FullLen":818,"Settings":[{"DbiChatSizeMax":200},{"DbiMegagroupSizeMax":200000},{"DbiSavedGifsLimit":200},{"DbiStickersRecentLimit":200},{"DbiStickersFavedLimit":5},{"DbiAutoStart":0},{"DbiStartMinimized":0},{"DbiSendToMenu":0},{"DbiWorkMode":0},{"DbiSeenTrayTooltip":0},{"DbiAutoUpdate":1},{"DbiLastUpdateCheck":0},{"DbiScaleOld":0},{"DbiDcOptions":{"Serialized":"/////wAAAA0AAAABAAAAAAAAAbsAAAAOMTQ5LjE1NC4xNzUuNTAAAAAAAAAAAQAAAAEAAAG7AAAAJzIwMDE6MGIyODpmMjNkOmYwMDE6MDAwMDowMDAwOjAwMDA6MDAwYQAAAAAAAAACAAAAAAAAAbsAAAAOMTQ5LjE1NC4xNjcuNTEAAAAAAAAAAgAAAAEAAAG7AAAAJzIwMDE6MDY3YzowNGU4OmYwMDI6MDAwMDowMDAwOjAwMDA6MDAwYQAAAAAAAAADAAAAAAAAAbsAAAAPMTQ5LjE1NC4xNzUuMTAwAAAAAAAAAAMAAAABAAABuwAAACcyMDAxOjBiMjg6ZjIzZDpmMDAzOjAwMDA6MDAwMDowMDAwOjAwMGEAAAAAAAAABAAAAAAAAAG7AAAADjE0OS4xNTQuMTY3LjkxAAAAAAAAAAQAAAABAAABuwAAACcyMDAxOjA2N2M6MDRlODpmMDA0OjAwMDA6MDAwMDowMDAwOjAwMGEAAAAAAAAABAAAAAIAAAG7AAAADzE0OS4xNTQuMTY0LjI1MAAAAAAAAAAEAAAAAwAAAbsAAAAnMjAwMTowNjdjOjA0ZTg6ZjAwNDowMDAwOjAwMDA6MDAwMDowMDBiAAAAAAAAAAUAAAABAAABuwAAACcyMDAxOjBiMjg6ZjIzZjpmMDA1OjAwMDA6MDAwMDowMDAwOjAwMGEAAAAAAAAABQAAABAAAAG7AAAADTkxLjEwOC41Ni4yMDAAAAAAAAAABQAAAAAAAAG7AAAADTkxLjEwOC41Ni4xNzUAAAAAAAAAAA=="}},{"DbiLoggedPhoneNumber":"5551999779070"},{"DbiConnectionType":4},{"DbiKey":{"DcId":-1,"Key":"AAAAAQAAAE6mQrJEle4qVQAAAA4AAAACAAAAGAAABKwAAAc6xnQFPw=="}},{"DbiKey":{"DcId":0,"Key":null}}]}

func ReverseLSK

func ReverseLSK(a interface{}) uint32

Types

type Audios

type Audios struct {
	FullLen uint32 `struc:"little"`
	First   uint64
	Second  uint64
	Len     uint32 `struc:"sizeof=Data"`
	Data    []byte `json:"-"`
}

type Background

type Background struct{}

type BackgroundOld

type BackgroundOld struct{}

type DMap

type DMap struct {
	Files map[string]uint32
}

func ReadDMap

func ReadDMap(data []byte) (DMap, error)
Example
package main

import (
	"encoding/hex"
	"fmt"
	"log"
	"sort"
)

const hexDMap0 = "d009000000000003000000582e6ab17475aa9e27000000010000689b0000000029db2dca000017cccb142f5441fb2a0d000000010003b93900000000300c72970001415c45edca91d364c281000000010003b93a00000000300c72970000032c1852f6449e9ca19b000000010003b93c00000000300c729700001b7c3894a0cb1e0917cf00000002000039b6000000000f394cd20000200c45ad764df3c6b04a00000002000060f1000000000e0803700000200cfda25d9e4542cc85000000020000f6ba000000000eab53120000041ca77ed6b767844c030000000200016030000000000d481697000017cc38eef2c8362614b8000000020001cef7000000000eb7b96a00001a3c6af556ce4d0c1ecf000000020001d8be000000000e46c2060000188c4e9317f4da2294de00000002000220c0000000000e9aa5410000143c34bc7897b8293bb40000000200035fb3000000000eabb43c0000039cbd91b5ac8a8e42940000000200035fb5000000000eabb43c00007c1c97ad5afa473db1b1000000020003bac5000000000e9c1be2000022fc608ebdcdece58a2e000000020003d008000000000eab54570000c70c69647ce2d2eaaceb000000020003d009000000000eab54570000033cf68244923026818a0000000200053465000000000eabb8520000034c79ccf70b3873732e0000000200053467000000000eabb8520000536cfbbff53429c46d6e0000000200065b77000000000eb7bd3b0000ad4cb3e34036aaacaef30000000200065b78000000000eb7bd3b0000043c87e9828da4c063b70000000400000fb900000000308b139500000abc85106b849cb944c40000000400001ba50000000030729ed300000b1c435a5e5557f1f66e0000000400003bee00000000196154b9000009bccd63270ae9e5de87000000040000aea8000000001b2ce8af0000070c15a701c008387481000000040000b1e0000000001b2cd20a0000053c3e9954d7ee5c2ad7000000040000b40f000000001b2ceb4b0000036cc047774b34f4e9e9000000040000b7e9000000001b2d047d000002ecc673334ac5f53840000000040000d72e000000001a9eec3c000006ac33e91b97e41e9e00000000040000d731000000001a9eec3c0001d8bc68215222607b45f60000000400014383000000001ac35f30000002dcf51cd8c90b9374b90000000400016b6f000000001aa0a827000003bc20f2d15a20e9b1a90000000400021ab6000000001a9a6d01000004dc96d4305313dedd870000000400024aed000000001b221a010000082c0f4e1992973d1a0d0000000400024e84000000001b2215440000043c13a6c1d10382a0c90000000400024f0e000000001b2201990000071cda2a074f86ae86340000000400024f26000000001b21f206000005fc0b711c90647f7a460000000400024fcb000000001b21e48c0000035c6eed84e853c62dc60000000400024fff000000001b221a12000006aceb27f8278b8b7f7b00000004000250ba000000001b2976910000039c2856d606d03ea0640000000400025268000000001b2219a20000068c6ea1d5edf4e6a3da0000000400025269000000001b2219a2000070dc24e50f9397646fcf0000000400025329000000001b220f830000076ca8fca44c3b2b8ded000000040002532a000000001b220f830000685cf23bab36d0431a2d000000040002546a000000001b220d4f0000052c6c0aab41736091210000000400025bcd000000001b2976b7000002cc27b2a8b6b65d63c50000000400025bce000000001b2976b70000233c555256ce1a232167000000040002ba33000000001b1ee066000005fc22ad74c2ca099908000000040002e8e1000000001b1f3b620000076c59a8ef898901fdfa000000040002ea69000000001b1f26680000076ce020bcea5f4152d8000000040002eba5000000001b1f339d000004acb3c92698566c3d0d000000040002ed76000000001b1f324a000006acd54b163d1b9bfba3000000040002edcc000000001b1f40580000046cfa853657e93625b4000000040002edcd000000001b1f405800001a5c3d70e34bab025e56000000040002ef35000000001b1f3ef90000074c25eeb34f7478ab7a000000040002ef43000000001b1f1b690000059cb91a865da8c20acc000000040002f067000000001b20568b0000068cb8d06932e289ec9c000000040002f068000000001b20568b000060ac208e1b52a3b4111e000000040002f2d3000000001b1f2a8e0000066c64892bf785330b9d000000040002f355000000001b1edb200000073c977a742020df3af7000000040002f39b000000001b204e080000066cc57fa7c3c1e7c91c000000040002f39c000000001b204e0800005a9c2c9eb56129980fe8000000040002f3d0000000001b1f2569000003fc6729c31e28748e08000000040002f3d1000000001b1f25690000310c88c22032573ed0ad000000040002f435000000001b1f06b80000053cee064a0214fdc79b000000040002f436000000001b1f06b80000352caef3b989e667fc40000000040002f456000000001b1ee146000005dcef6c7a1fd46c6d09000000040002f4d8000000001b1ef22f0000058cb10616bdef94c0f9000000040002f4f4000000001b1f0d3c0000072c69be493874cf7741000000040002f51a000000001b1f2ae90000078c8ecb51039f6383ab000000040002f51b000000001b1f2ae90000577cc9e9d1117da4e7c5000000040002f679000000001b1ef4510000070cf382b82b8fba9c48000000040002f82b000000001b1edc1c0000066c23ed803956ecff27000000040002f82c000000001b1edc1c00004ffce62c18330916bba3000000040002f91c000000001b1f2dce0000080c92f7d307b8cb1df1000000040002fa7e000000001b1ef05a000002ac2134c072cadbaa02000000040002fa7f000000001b1ef05a00001d2c34e1a27e5ee6cc42000000040002faea000000001a9f1a3c0000042c442f3797b9675fb8000000040002fb26000000001b1ee8f70000055c0583b4b8ffa1f34c000000040002fb27000000001b1ee8f700004fcc36689099f7827178000000040003069e00000000195e59220000039cca5139c9702225c700000004000413f5000000001b22212d000004bc1bdb5fc57eb4a69f00000004000418d9000000001ac363800000044cb8280e7dd0ecfcef0000000400041beb000000001ac378030000075cf671a8d6d441f2960000000400041bec000000001ac37803000068dcf3bc73631f9a275a0000000400041c60000000001b221e120000036cee4e728ea5c0045100000004000426b1000000001ac36f8a0000056cbbdd5598ff2b2cef00000004000427dd000000001ac363e4000070dc32961197d298205800000004000427de000000001ac363e40000076c0000000d735f4ef83ba7cb3b00000008b145f77302906f5200000009d4cf92b6551271c0"

func main() {
	map0, _ := hex.DecodeString(hexDMap0)
	dmap, err := ReadDMap(map0)
	if err != nil {
		log.Fatal(err)
	}
	kk := []string{}
	for k := range dmap.Files {
		kk = append(kk, k)
	}
	sort.Strings(kk)
	for _, k := range kk {
		fmt.Println(k, dmap.Files[k])
	}
}
Output:

00E9E14E79B19E33 3
04835F5CA433376C 3
04CF766E989B3FEA 3
0C1721556B29FC4D 9
1219063714BAA0C6 3
1477FC478394EB96 3
15400C5AE827E4EE 3
182C463D19ACDE54 3
184783800C107A51 3
1B1BD374AFA5DA79 3
1FD1BC8B703D7F29 3
20AABDAC270C4312 3
24CC6EE5E72A1E43 3
25F60920377F541B 8
30C448767B6DE77A 3
3ABB61903381C26E 3
3ABFB9B1D361B45D 3
3FEACAAA63043E3B 3
4368EA68F470A2AD 3
460AE30D606D6582 3
4924E8A8CA5B19DB 3
4B52639E756358AF 3
4BB3928B7987CB43 3
4C449BC948B60158 3
58CC2454E9D52ADF 3
5C36D56B6B8A2B72 3
5C7E4AD7111D9E9C 3
64A7F74609C117B0 3
65E520BAB43E07D3 3
692F144D6D8A176F 3
6CD26C358E48DEE6 3
6F54B70622251286 3
72E9AA57471BA6E2 3
72FFCE659308DE32 3
761232A1EC652555 3
78DDED3135034D69 3
78ED5E9EA07236DC 3
7B360C4AD8289E78 3
7C5222079C9315AC 3
7DA2C5EE7D4599E3 3
7FA3FD020247A779 3
809990AC2C47DA22 3
80E84782E13C9276 3
84C9ABF8B28B283F 3
8502892D79116923 3
8717287F99098663 3
8B4162638C2FEE83 3
8BF5769B7973F244 3
8D2514F5AECB020E 3
8EF08992165BE9C2 3
90D6C64DF1A7C6FE 3
9A1B9E02A51D2F02 3
9B4739B09C8DC15F 3
9C0A28301D1C6A31 3
9E9E4F43B477740C 3
9F0C49FEDB61601B 3
A40B6C3FD467DA54 3
A572A9F13637CB3F 3
A7BA8747F43BEE52 3
A81862032944286F 3
AD3A6E4FDE5D1AE6 3
AFDF109898FE8A95 3
B3BC7AB38FE4F537 13
B7F7B8B8728F72BE 3
B91AC9E9446F2581 3
B97CDF4120A460EE 3
BA3836F93015BCE8 3
BECAAE2D2EC74696 3
C19C7E1C3C7AF75C 3
C43F1AFF8B4B3850 3
C9CE982E23960D8B 3
CCA02C8AD568A19B 3
D0A1D3792991E4F0 3
D0A2BF1445F241BC 3
D0D3C66589629C3B 3
D2A1340D63BAB32F 3
D9B033587FB29846 3
DA0DE37523022C88 3
DED8B2B3C44ACF8A 3
E1114B3A25B1E802 3
E2373783B07FCC97 3
E2A85ECEDCDBE806 3
E66F1F7555E5A534 3
E6D64C92435FFBBF 3
ED4922AD4F7139E4 3
F96A4BE75CF5BDB1 3
FC7190E1BC0A4983 3
FCE1C0D4EC655FA6 3
FCF6467939F05E42 3
FEC2B2FF8955DDBB 3
FECFCE0DD7E0828B 3

type Draft

type Draft struct{}

type DraftPosition

type DraftPosition struct{}

type ExportSettings

type ExportSettings struct{}

type FavedStickers

type FavedStickers struct{}

type Images

type Images struct {
	FullLen    uint32 `struc:"little"`
	First      uint64
	Second     uint64
	LegacyType uint32
	Len        uint32 `struc:"sizeof=Data"`
	Data       []byte `json:"-"`
}

type Location

type Location struct {
	MediaKey   MediaKey
	LegacyType uint32
	Filename   string
	Bookmark   []byte
	DateTime   time.Time
	Size       uint32
}

type Locations

type Locations struct {
	FullLen   uint32 `struc:"little"`
	Locations []Location
}

type MediaKey

type MediaKey struct {
	LocationType uint32
	DC           int32
	ID           uint64
}

func (MediaKey) MarshalJSON

func (d MediaKey) MarshalJSON() ([]byte, error)

type RecentHashtagsAndBots

type RecentHashtagsAndBots struct{}

type RecentStickersOld

type RecentStickersOld struct{}

type ReportSpamStatus

type ReportSpamStatus struct {
	Peer   uint64
	Status int32
}

type ReportSpamStatuses

type ReportSpamStatuses struct {
	FullLen            uint32 `struc:"little"`
	Size               int32  `struc:"sizeof=ReportSpamStatuses"`
	ReportSpamStatuses []ReportSpamStatus
}

type SavedGifs

type SavedGifs struct{}

type SavedGifsOld

type SavedGifsOld struct{}

type SavedPeers

type SavedPeers struct{}

type SelfSerialized

type SelfSerialized struct{}

type Settings

type Settings struct {
}

type StickerImages

type StickerImages struct {
	FullLen uint32 `struc:"little"`
	First   uint64
	Second  uint64
	Len     uint32 `struc:"sizeof=Data"`
	Data    []byte `json:"-"`
}

type StickersKeys

type StickersKeys struct{}

type StickersOld

type StickersOld struct{}

type TrustedBots

type TrustedBots struct{}

type UserMap

type UserMap struct{}

type UserSetting

type UserSetting struct {
	DbiDcOptionOldOld struct {
		DcId uint32
		Host string
		IP   string
		Port uint32
	}
	DbiDcOptionOld struct {
		DcIdWithShift uint32
		Flags         int32
		IP            string
		Port          uint32
	}
	DbiDcOptions struct {
		Serialized []byte
	}
	DbiChatSizeMax         int32
	DbiSavedGifsLimit      int32
	DbiStickersRecentLimit int32
	DbiStickersFavedLimit  int32
	DbiMegagroupSizeMax    int32
	DbiUser                struct {
		UserId int32
		DcId   uint32
	}
	DbiKey struct {
		DcId int32
		Key  []byte
	}
	DbiMtpAuthorization struct {
		Serialized []byte
	}
	DbiAutoStart              int32
	DbiStartMinimized         int32
	DbiSendToMenu             int32
	DbiUseExternalVideoPlayer int32
	DbiCacheSettings          struct {
		Size int64
		Time int32
	}
	DbiAnimationsDisabled int32
	DbiSoundNotify        int32
	DbiAutoDownload       struct {
		Photo int32
		Audio int32
		Gif   int32
	}
	DbiAutoPlay    int32
	DbiDialogsMode struct {
		Enabled int32
		ModeInt int32
	}
	DbiModerateMode            int32
	DbiIncludeMutedOld         int32
	DbiShowingSavedGifsOld     int32
	DbiDesktopNotify           int32
	DbiWindowsNotificationsOld int32
	DbiNativeNotifications     int32
	DbiNotificationsCount      int32
	DbiNotificationsCorner     int32
	DbiDialogsWidthRatioOld    int32
	DbiLastSeenWarningSeenOld  int32
	DbiAuthSessionSettings     struct {
		V []byte
	}
	DbiWorkMode          int32
	DbiTxtDomainString   string
	DbiConnectionTypeOld struct {
		V        int32
		Host     string
		Port     int32
		User     string
		Password string
	}
	DbiConnectionType int32 //TODO
	DbiThemeKeyOld    uint64
	DbiThemeKey       struct {
		KeyDay    uint64
		KeyNight  uint64
		NightMode uint32
	}
	DbiLangPackKey     uint64
	DbiLanguagesKey    uint64
	DbiTryIPv6         int32
	DbiSeenTrayTooltip int32
	DbiAutoUpdate      int32
	DbiLastUpdateCheck int32
	DbiScaleOld        int32
	DbiScalePercent    int32
	DbiLangOld         int32
	DbiLangFileOld     string
	DbiWindowPosition  struct {
		X         int
		Y         int
		W         int
		H         int
		Moncrc    int32
		Maximized int
	}
	DbiLoggedPhoneNumber string
	DbiMutePeer          uint64
	DbiMutedPeers        struct {
		Count uint32 `struc:"sizeof=Peers"`
		Peers []uint64
	}
	DbiSendKeyOld        int32
	DbiCatsAndDogs       int32
	DbiTileBackgroundOld int32
	DbiTileBackground    struct {
		TileDay   int32
		TileNight int32
	}
	DbiAdaptiveForWide        int32
	DbiAutoLock               int32
	DbiReplaceEmoji           int32
	DbiSuggestEmoji           int32
	DbiSuggestStickersByEmoji int32
	DbiDefaultAttach          int32
	DbiNotifyView             int32
	DbiAskDownloadPath        int32
	DbiDownloadPathOld        string
	DbiDownloadPath           struct {
		V        string
		Bookmark []byte
	}
	DbiCompressPastedImage int32
	DbiEmojiTabOld         int32
	DbiRecentEmojiOldOld   []struct {
		First  uint32
		Second uint16
	}
	DbiRecentEmojiOld []struct {
		First  uint64
		Second uint16
	}
	DbiRecentEmoji []struct {
		First  string
		Second uint16
	}
	DbiRecentStickers []struct {
		First  uint64
		Second uint16
	}
	DbiEmojiVariantsOld []struct {
		First  uint32
		Second uint64
	}
	DbiEmojiVariants []struct {
		First  string
		Second uint16
	}
	DbiHiddenPinnedMessages []struct {
		PeerId uint64
		MsgId  int32
	}
	DbiDialogLastPath string
	DbiSongVolume     int32
	DbiVideoVolume    int32
	DbiPlaybackSpeed  int32
}

type UserSettings

type UserSettings struct {
	FullLen  uint32 `struc:"little"`
	Settings []map[string]interface{}
}

Jump to

Keyboard shortcuts

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