Auties00 / Cobalt

Standalone unofficial fully-featured Whatsapp Web and Mobile API for Java and Kotlin
MIT License
625 stars 183 forks source link

How to get actual content of Message with a content e.g. Image #334

Closed staleks closed 1 year ago

staleks commented 1 year ago

Hi, will you be so kind to add one example how someone can get actual content of a message that has a content. e.g. I wrote listener and I'm able to get that image message meta data

JSON below (slightly changed) { "key" : { "chatJid" : "383600964625@s.whatsapp.net", "fromMe" : true, "id" : "E7535048B4FCBE3F033474ED28BE37C5", "senderJid" : "383642115041@s.whatsapp.net", "sender" : { "jid" : "383642115041@s.whatsapp.net", "lastKnownPresence" : "AVAILABLE", "lastSeen" : 1687958171.499118000 } }, "message" : { "imageMessage" : { "mediaUrl" : "https://mmg.whatsapp.net/v/t62.7118-24/33446220_1958060191209668_874881631412069230_n.enc?ccb=11-4&oh=01_AdTPcEFTmvX0TTuyRfpkjxg-q4k5goVY1HfyVZJlY8tDyw&oe=64C38813&mms3=true", "mimetype" : "image/jpeg", "mediaSha256" : "Q******=", "mediaSize" : 51842, "height" : 1280, "width" : 722, "mediaKey" : "G****=", "mediaEncryptedSha256" : "SRyeeIfw5cJCGN8vLybqL4aWQqxt9Lnx0Fyjg8qwROk=", "mediaDirectPath" : "/v/t62.7118-24/33446220_1958060191209668_874881631412069230_n.enc?ccb=11-4&oh=01_AdTPcEFTmvX0TTuyRfpkjxg-q4k5goVY1HfyVZJlY8tDyw&oe=64C38813", "mediaKeyTimestamp" : 1687958203, "thumbnail" : "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEABsbGxscGx4hIR4qLSgtKj04MzM4PV1CR0JHQl2NWGdYWGdYjX2Xe3N7l33gsJycsOD/2c7Z//////////////8BGxsbGxwbHiEhHiotKC0qPTgzMzg9XUJHQkdCXY1YZ1hYZ1iNfZd7c3uXfeCwnJyw4P/Zztn////////////////CABEIAEgAKAMBIgACEQEDEQH/xAAuAAACAwEBAAAAAAAAAAAAAAAABAEDBQIGAQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAANdHa8tcXPJqx6IZAw9xBvx3o1tatECF+kZV+Eu4bKCzN2aZVmaLySBOOwAAAD//xAAoEAACAgECBAUFAAAAAAAAAAABAgADBBESEBMhMQUVMlFSFDNBU2H/2gAIAQEAAT8AbGZh6pcUwzq9pJ9p5tV8TMXJryvQdDOS3vwzK7Tmg3ekzk4vxEoqt+u1oHQQcPG/t1zmP8jPBOqW8c/DfLRVUzyO39gmBhNiK4LcLMgI+0sAYb0QgOesa6pCNTHyKq9u49499VYBJ7zIxrr7ldegEtwr7bQwIAmRj3MyHsJk4dl/LNbAATKwrrUQIQCJk59teSUCRW0A/ohZQpJlAITrwehSfxOUw72RU06sdZuE3xiAQCJtBm2bZtn/xAAZEQEAAgMAAAAAAAAAAAAAAAABABIQMEH/2gAIAQIBAT8Asyy8crr/AP/EABsRAAEFAQEAAAAAAAAAAAAAAAACERIgURAh/9oACAEDAQE/AIJII0gmjDc823//2Q==", "scansSidecar" : "52vyP1GqUedJg+j8WOS612XyLXdY8F3owSjCb8TtPHwR6d2lWO0jFQ==", "scanLengths" : [ 7854, 24087, 11053, 8848 ], "midQualityFileSha256" : "wK5B1yN9gc4GRrkqloFHn4phSNwGq46XbFgzia5XEok=" }, "deviceInfo" : { "deviceListMetadata" : { }, "deviceListMetadataVersion" : 2 } }, "timestampSeconds" : 1687958204, "status" : "DELIVERED", "senderJid" : "383642115041@s.whatsapp.net", "sender" : { "jid" : "383642115041@s.whatsapp.net", "lastKnownPresence" : "AVAILABLE", "lastSeen" : 1687958171.499118000 }, "pushName" : "John Doe", "receipt" : { } }

Now if I try to get that image from given URL, I get file with .enc extension. So data is for sure encrypted.

But is there a way that I can get decrypted data? Plan is to use this library for compliance use - archiving all the data for a user.

NOTE: I see that there is method var keys = api.keys();

But can you provide some example how this can be used?

Thank You

P.S. Or if there is a better way how I can capture blob content (image, video, etc.) I'm willing to listen/consider all of the suggestions.

Auties00 commented 1 year ago

Hi, will you be so kind to add one example how someone can get actual content of a message that has a content. e.g. I wrote listener and I'm able to get that image message meta data

JSON below (slightly changed) { "key" : { "chatJid" : "383600964625@s.whatsapp.net", "fromMe" : true, "id" : "E7535048B4FCBE3F033474ED28BE37C5", "senderJid" : "383642115041@s.whatsapp.net", "sender" : { "jid" : "383642115041@s.whatsapp.net", "lastKnownPresence" : "AVAILABLE", "lastSeen" : 1687958171.499118000 } }, "message" : { "imageMessage" : { "mediaUrl" : "https://mmg.whatsapp.net/v/t62.7118-24/33446220_1958060191209668_874881631412069230_n.enc?ccb=11-4&oh=01_AdTPcEFTmvX0TTuyRfpkjxg-q4k5goVY1HfyVZJlY8tDyw&oe=64C38813&mms3=true", "mimetype" : "image/jpeg", "mediaSha256" : "Q******=", "mediaSize" : 51842, "height" : 1280, "width" : 722, "mediaKey" : "G****=", "mediaEncryptedSha256" : "SRyeeIfw5cJCGN8vLybqL4aWQqxt9Lnx0Fyjg8qwROk=", "mediaDirectPath" : "/v/t62.7118-24/33446220_1958060191209668_874881631412069230_n.enc?ccb=11-4&oh=01_AdTPcEFTmvX0TTuyRfpkjxg-q4k5goVY1HfyVZJlY8tDyw&oe=64C38813", "mediaKeyTimestamp" : 1687958203, "thumbnail" : "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEABsbGxscGx4hIR4qLSgtKj04MzM4PV1CR0JHQl2NWGdYWGdYjX2Xe3N7l33gsJycsOD/2c7Z//////////////8BGxsbGxwbHiEhHiotKC0qPTgzMzg9XUJHQkdCXY1YZ1hYZ1iNfZd7c3uXfeCwnJyw4P/Zztn////////////////CABEIAEgAKAMBIgACEQEDEQH/xAAuAAACAwEBAAAAAAAAAAAAAAAABAEDBQIGAQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAANdHa8tcXPJqx6IZAw9xBvx3o1tatECF+kZV+Eu4bKCzN2aZVmaLySBOOwAAAD//xAAoEAACAgECBAUFAAAAAAAAAAABAgADBBESEBMhMQUVMlFSFDNBU2H/2gAIAQEAAT8AbGZh6pcUwzq9pJ9p5tV8TMXJryvQdDOS3vwzK7Tmg3ekzk4vxEoqt+u1oHQQcPG/t1zmP8jPBOqW8c/DfLRVUzyO39gmBhNiK4LcLMgI+0sAYb0QgOesa6pCNTHyKq9u49499VYBJ7zIxrr7ldegEtwr7bQwIAmRj3MyHsJk4dl/LNbAATKwrrUQIQCJk59teSUCRW0A/ohZQpJlAITrwehSfxOUw72RU06sdZuE3xiAQCJtBm2bZtn/xAAZEQEAAgMAAAAAAAAAAAAAAAABABIQMEH/2gAIAQIBAT8Asyy8crr/AP/EABsRAAEFAQEAAAAAAAAAAAAAAAACERIgURAh/9oACAEDAQE/AIJII0gmjDc823//2Q==", "scansSidecar" : "52vyP1GqUedJg+j8WOS612XyLXdY8F3owSjCb8TtPHwR6d2lWO0jFQ==", "scanLengths" : [ 7854, 24087, 11053, 8848 ], "midQualityFileSha256" : "wK5B1yN9gc4GRrkqloFHn4phSNwGq46XbFgzia5XEok=" }, "deviceInfo" : { "deviceListMetadata" : { }, "deviceListMetadataVersion" : 2 } }, "timestampSeconds" : 1687958204, "status" : "DELIVERED", "senderJid" : "383642115041@s.whatsapp.net", "sender" : { "jid" : "383642115041@s.whatsapp.net", "lastKnownPresence" : "AVAILABLE", "lastSeen" : 1687958171.499118000 }, "pushName" : "John Doe", "receipt" : { } }

Now if I try to get that image from given URL, I get file with .enc extension. So data is for sure encrypted.

But is there a way that I can get decrypted data? Plan is to use this library for compliance use - archiving all the data for a user.

NOTE: I see that there is method var keys = api.keys();

But can you provide some example how this can be used?

Thank You

P.S. Or if there is a better way how I can capture blob content (image, video, etc.) I'm willing to listen/consider all of the suggestions.

Check if the message is a MediaMessage if it is cast it, and invoke decodedMedia()