JoniKauf
JoniKauf

Reputation: 25

Convert Base64 ImageStream in .NET WinForms to images with Python

I have a very big WinForms application in the company I'm at and I want to extract all the images that are contained in it. I already wrote a program in python to extract basic images that are of type Image and Icon, but I struggle to turn an ImageStream base64 string into its images.

Here is a .resx file snipped with an actual base64 encoded string I want to convert:

...
  <data name="imageList.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
    <value>
        AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
        LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADO
        CwAAAk1TRnQBSQFMAgEBBgEAAagBAgGoAQIBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
        AwABQAMAASADAAEBAQABCAYAAQgYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
        AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
        AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
        AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
        AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
        AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
        ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
        AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
        AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
        AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
        AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
        AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
        AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
        AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
        AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
        ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
        Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
        AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
        AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
        AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
        ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
        Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
        AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
        AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
        AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
        AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
        AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
        AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/wMAAuwSAAH/AfQC/ycA
        AfkCAQHsBQAB+QHsCQAB7AHqAgAB6gHsJgAB+QMBAewDAAH5AgEB7AcAAfQBFAHqAgAB6gEUAfQlAAH5
        BAEB7AEAAfkEAQHsBgAB7wEUAeoCAAHqARQB7yYAAfkEAQHsBQEB7AUAAfQCFAHqAgAB6gIUAfQmAAH5
        CAEB7AYAAe8CFAHqAgAB6gIUAe8nAAH5BgEB7AYAAfQDFAHqAgAB6gEUARMBFAH0JwAFAQHsBwAB8gES
        AhQB6gIAAeoCFAESAfInAAH5BAEB7AoAAQ4EAAIOKAAB+QUBAewJAAH3BgAB9ycAAfkDAQHsAwEB7AsA
        AkMpAAH5AwEB7AEAAfkDAQHsCgACQykAAfkCAQHsAwAB+QMBAewJAAJDKgAB+QEBBQAB+QMBCQACQzIA
        AfkBAQH5iAABMAI3ATABAzoAATABNwL7ATcBMAEDCAACMy4AATABNwT7ATcBMAEDBgADMy0AATABNwb7
        ATcBMAEDBQABMwL6ATMQAAJTGQABMAE3AQAB+wEAAfsDAAH7ATcBMAEDAwABMwP6AjMOAARTCQALBgMA
        ATABNwH7AQAB+wEAAvsBAAH7AQMB+wE3ATABAwEAAjME+gEzDQACUwKhAlMJAAn8AwABMAE3AvsBAAED
        AQAF+wEDAfsBNwEwAQABMwb6ATMLAAJTBKECUwoAAv4BBgH+AQYFAAE3AfsBAwH7AgAD+wEDAgAD+wE3
        AQAD+gKeAvoCMwkAAlMGoQJTCQAC/gEGAf4BBgUAAaAC+wEDAgABAwEAAQMDAAP7AV4BAAGeAfoBngIA
        AZ4C+gEzCQACUwahAlMJAAL+AQYB/gEGBQABwwGgAfsCAwIAAQMC+wEDA/sBXgHDAgABngQAAZ4C+gEz
        CQACUwShAlMKAAL+AQYB/gEGBgABwwGgAgMCAAIDBPsBXgHDCQABngH6AjMJAAJTAqECUwsAAv4BBgH+
        AQYHAAHDAaAC+wEDAgABAwL7AV4BwwsAAZ4B+gIzCQAEUwwAAv4BBgH+AQYIAAHDAaAC+wIAAvsBXgHD
        DQABngH6AjMJAAJTDQAC/gEGAf4BBgkAAcMBoAT7AV4Bww8AAZ4B+gIzFwAC/gEGAf4BBgoAAcMBoAL7
        AV4BwxEAAZ4B+gEzJwABwwGgAV4BwxMAAZ4B+hEAAUIBTQE+BwABPgMAASgDAAFAAwABIAMAAQEBAAEB
        BgABARYAA/8BAAHPAf8B/AE/BAABhwHPAfkBnwQAAYMBhwHxAY8EAAGBAQMB8QGPBAABwAEDAeEBhwQA
        AeABBwHhAYcEAAHwAQ8BwQGDBAAB+AEfAcEBgwQAAfgBHwGAAQEEAAHwAR8BgAEBBAAB4AEPAYABAQQA
        AcEBBwGAAQEEAAHDAYMBgAEBBAAB5wHDAYABAQQAAf8B4wGAAQEEAAT/BAAC/wH8AR8E/wHqAasB+AEP
        AfMD/wHqAasB8AEHAeMD/wHiASMB4AEDAeEB/wH+AX8B4gEjAcABAQHAAf8B/AE/AeABAwGAAQABgAH/
        AfgBHwHwAQcCAAGAAX8B8AEPAfgBHwIAAYABPwHgAQcB9AEfAgABjAE/AeABBwH0AR8CAAHeAR8B8AEP
        AewBHwGAAQEB/wEPAfgBHwHsAR8BwAEDAf8BhwH8AT8B9AEfAeABBwH/AcMB/gF/AfQBHwHwAQ8B/wHh
        Av8B+AEfAfgBHwH/AfEE/wH8AT8B/wH5Av8L
    </value>
  </data>
...

Similar to Image and Icon I know that all the required data should be somehow encoded into the base64 value, I just don't understand how.

I tried:

So, given I have a string with the base64 encoded value s, how would I go about decoding this into all its contained images and output them as files? As an addition, how would it be possible to get each image's name (or any other metadata for that matter)?

Image with data about the ImageStream imageList, all images have exact same metadata besides name: Image with data about the ImageStream ImageList

Upvotes: 0

Views: 60

Answers (0)

Related Questions