Documentation ¶
Index ¶
- Constants
- Variables
- func ParseCache(data []byte, keytype uint32) (interface{}, error)
- func ReverseLSK(a interface{}) uint32
- type Audios
- type Background
- type BackgroundOld
- type DMap
- type Draft
- type DraftPosition
- type ExportSettings
- type FavedStickers
- type Images
- type Location
- type Locations
- type MediaKey
- type RecentHashtagsAndBots
- type RecentStickersOld
- type ReportSpamStatus
- type ReportSpamStatuses
- type SavedGifs
- type SavedGifsOld
- type SavedPeers
- type SelfSerialized
- type Settings
- type StickerImages
- type StickersKeys
- type StickersOld
- type TrustedBots
- type UserMap
- type UserSetting
- type UserSettings
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 ¶
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 Background ¶
type Background struct{}
type BackgroundOld ¶
type BackgroundOld struct{}
type DMap ¶
func ReadDMap ¶
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 DraftPosition ¶
type DraftPosition struct{}
type ExportSettings ¶
type ExportSettings struct{}
type FavedStickers ¶
type FavedStickers struct{}
type MediaKey ¶
func (MediaKey) MarshalJSON ¶
type RecentHashtagsAndBots ¶
type RecentHashtagsAndBots struct{}
type RecentStickersOld ¶
type RecentStickersOld struct{}
type ReportSpamStatus ¶
type ReportSpamStatuses ¶
type ReportSpamStatuses struct { FullLen uint32 `struc:"little"` Size int32 `struc:"sizeof=ReportSpamStatuses"` ReportSpamStatuses []ReportSpamStatus }
type SavedGifsOld ¶
type SavedGifsOld struct{}
type SavedPeers ¶
type SavedPeers struct{}
type SelfSerialized ¶
type SelfSerialized struct{}
type StickerImages ¶
type StickersKeys ¶
type StickersKeys struct{}
type StickersOld ¶
type StickersOld struct{}
type TrustedBots ¶
type TrustedBots 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 ¶
Click to show internal directories.
Click to hide internal directories.