[Galaxy S I9000 General] pramods:
No this will not work, you will not be able to decrypt the zip.enc, to decrypt you need to have CRC and Binary_Encrypt string, the XML has these value in these tags that is not there in local XML "<BINARY_CRC><Data>1283028158</Data></BINARY_CRC><BINARY_ENCRYPT_STRING><Data>9780154</Data>" this is for JM1 enc value, attaching the complete XML after catching it from fiddler2

<?xml version="1.0" encoding="utf-8"?><FUSMsg><FUSHdr><ProtoVer>1.0</ProtoVer><SessionID>326599</SessionID><MsgID>1</MsgID></FUSHdr><FUSBody><Results><CmdRef>2</CmdRef><Status>200</Status><LATEST_FW_VERSION><Data>I9000XXJM1/I9000OXAJF3/I9000XXJM1/I9000XXJM1</Data></LATEST_FW_VERSION></Results><Put><CmdID>1</CmdID><BINARY_CRC><Data>1283028158</Data></BINARY_CRC><BINARY_ENCRYPT_STRING><Data>9780154</Data></BINARY_ENCRYPT_STRING><BINARY_URI><Data>http://fus.samsungmobile.com/Phone_Binary/9/GT-I9000_I9000XXJM1_I9000OXAJM1_I9000XXJM1_I9000XXJM1_XX_XEU.zip.enc</Data></BINARY_URI><DESCRIPTION><Data></Data></DESCRIPTION><GSM_SUPPORT_HIDDEN><Data>0</Data></GSM_SUPPORT_HIDDEN><GSM_NATION_CODE><Data>XX</Data></GSM_NATION_CODE><GSM_SITE_CODE><Data>9</Data></GSM_SITE_CODE><LAST_MODIFIED><Data>10/08/21</Data></LAST_MODIFIED> <LATEST_ANDROIDGSM_PDA_VERSION><Data>I9000XXJM1</Data></LATEST_ANDROIDGSM_PDA_VERSION><LATEST_ANDROIDGSM_CSC_VERSION><Data>I9000OXAJF3</Data></LATEST_ANDROIDGSM_CSC_VERSION><LATEST_ANDROIDGSM_PHONE_VERSION><Data>I9000XXJM1</Data></LATEST_ANDROIDGSM_PHONE_VERSION><LATEST_ANDROIDGSM_CONTENTS_VERSION><Data>I9000XXJM1</Data></LATEST_ANDROIDGSM_CONTENTS_VERSION><DEVICE_ANDROID_PDA_PATH><Data>ADD_Home_cache.tar</Data></DEVICE_ANDROID_PDA_PATH><DEVICE_ANDROID_CSC_PATH><Data></Data></DEVICE_ANDROID_CSC_PATH><DEVICE_ANDROID_PHONE_PATH><Data></Data></DEVICE_ANDROID_PHONE_PATH><DEVICE_ANDROID_CONTENTS_PATH><Data></Data></DEVICE_ANDROID_CONTENTS_PATH><CURRENT_DISPLAYVERSION><Data>I9000XXJF3/I9000OXAJF3/I9000XXJF3/I9000XXJF3</Data></CURRENT_DISPLAYVERSION><LATEST_DISPLAYVERSION><Data>I9000XXJM1/I9000OXAJM1/I9000XXJM1/I9000XXJM1</Data></LATEST_DISPLAYVERSION><ANDROIDGSM_TAR_PATH><Data>ADD_Home_cache.tar</Data></ANDROIDGSM_TAR_PATH><NOTIFY><Data>1</Data></NOTIFY><ANNOUNCE><Data>0</Data></ANNOUNCE><ANNOUNCE_CONTENTS><Data></Data></ANNOUNCE_CONTENTS><REQUIRED_CLIENT_PRODUCT><Data></Data></REQUIRED_CLIENT_PRODUCT><REQUIRED_CLIENT_VERSION><Data></Data></REQUIRED_CLIENT_VERSION></Put></FUSBody></FUSMsg>

The code that uses this internally in .NET is

private void DecryptThread(object obj)

{

string containerName = "Mobileleader";

this._crypt = new CryptMngrClass();

Item itemFromRecv = this._updateInfo.FWInfo.GetItemFromRecv("BINARY_ENCRYPT_STRING");

if (((this._tmpFilePath != "") && (itemFromRecv != null)) && (itemFromRecv.Data != null))

{

try

{

string data = itemFromRecv.Data;

this._crypt.GeneratePublicKeyPair(containerName);

this._crypt.add_CrcCheck(new _ICryptMngrEvents_CrcCheckEventHandler(this.crypt_CrcCheck));

this._crypt.add_Decrypt(new _ICryptMngrEvents_DecryptEventHandler(this.crypt_Decrypt));

this._crypt.CheckCrc(this._tmpFilePath, 0);

if (!this._crypt.GeneratePasswordSymmetricKey(data))

{

this.SendReport(DownInfo.CryptoError, 4.0, "SymmetricKey Error");

}

this._tmpZipFilePath = this._tmpFilePath + ".zip";

this._crypt.DecryptFileThread(this._tmpFilePath, this._tmpZipFilePath, 0);

}

catch (Exception)

{

this.SendReport(DownInfo.CryptoError, 0.0, "Crypt Exception");

}

}

else

{

this.SendReport(DownInfo.CryptoError, 0.0, "Invalid Encrypt String");

}

}

Look at the code it need to have these value else it will fail.

Each firmware will have different CRC and different Encrypt String, if both these values are same for all firmware then only this method will work!

-Pramod