public string buildCookieRequest(string configLastChanged, bool useMSAToken) { DateTime now = DateTime.UtcNow; XDocument doc = new XDocument(); var envelope = Xml.CreateElement(NAMESPACE_SOAP + "Envelope"); doc.Add(envelope); var header = Xml.CreateElement(NAMESPACE_SOAP + "Header"); envelope.Add(header); buildCommonHeader(ref doc, ref header, PRIMARY_URL, "http://www.microsoft.com/SoftwareDistribution/Server/ClientWebService/GetCookie", useMSAToken); var body = Xml.CreateElement(NAMESPACE_SOAP + "Body"); envelope.Add(body); var request = Xml.CreateElement(NAMESPACE_WU_SERVICE + "GetCookie"); body.Add(request); request.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "lastChange", configLastChanged)); request.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "currentTime", now.ToString("o"))); request.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "protocolVersion", "1.81")); return(doc.ToString()); }
public string buildGetConfigRequest(bool useMSAToken = true) { XDocument doc = new XDocument(); var envelope = Xml.CreateElement(NAMESPACE_SOAP + "Envelope"); doc.Add(envelope); var header = Xml.CreateElement(NAMESPACE_SOAP + "Header"); envelope.Add(header); buildCommonHeader(ref doc, ref header, PRIMARY_URL, "http://www.microsoft.com/SoftwareDistribution/Server/ClientWebService/GetConfig", useMSAToken); var body = Xml.CreateElement(NAMESPACE_SOAP + "Body"); envelope.Add(body); var request = Xml.CreateElement(NAMESPACE_WU_SERVICE + "GetConfig"); body.Add(request); request.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "protocolVersion", "1.81")); return(doc.ToString()); }
public void buildCommonHeader(ref XDocument doc, ref XElement header, string url, string actionName, bool useMSAToken) { var action = Xml.CreateElement(NAMESPACE_ADDRESSING + "Action", actionName); header.Add(action); action.Add(Xml.CreateAttribute(NAMESPACE_SOAP + "mustUnderstand", "1")); var messageId = Xml.CreateElement(NAMESPACE_ADDRESSING + "MessageID", "urn:uuid:a68d4c75-ab85-4ca8-87db-136d281a2e28"); header.Add(messageId); var to = Xml.CreateElement(NAMESPACE_ADDRESSING + "To", url); header.Add(to); to.Add(Xml.CreateAttribute(NAMESPACE_SOAP + "mustUnderstand", "1")); var security = Xml.CreateElement(NAMESPACE_WSSECURITY_SECEXT + "Security"); header.Add(security); security.Add(Xml.CreateAttribute(NAMESPACE_SOAP + "mustUnderstand", "1")); var timestamp = Xml.CreateElement(NAMESPACE_WSSECURITY_UTILITY + "Timestamp"); security.Add(timestamp); timestamp.Add(Xml.CreateElement(NAMESPACE_WSSECURITY_UTILITY + "Created", "2019-01-01T00:00:00.000Z")); timestamp.Add(Xml.CreateElement(NAMESPACE_WSSECURITY_UTILITY + "Expires", "2100-01-01T00:00:00.000Z")); var ticketsToken = Xml.CreateElement(NAMESPACE_WU_AUTHORIZATION + "WindowsUpdateTicketsToken"); security.Add(ticketsToken); ticketsToken.Add(Xml.CreateAttribute(NAMESPACE_WSSECURITY_UTILITY + "id", "ClientMSA")); if (UserToken != null && UserToken.Length > 0) { if (useMSAToken) { var msaToken = Xml.CreateElement("TicketType"); ticketsToken.Add(msaToken); msaToken.Add(Xml.CreateAttribute("Name", "MSA")); msaToken.Add(Xml.CreateAttribute("Version", "1.0")); msaToken.Add(Xml.CreateAttribute("Policy", "MBI_SSL")); msaToken.Add(Xml.CreateElement("User", UserToken.ToString())); } } var aadToken = Xml.CreateElement("TicketType"); ticketsToken.Add(aadToken); aadToken.Add(Xml.CreateAttribute("Name", "AAD")); aadToken.Add(Xml.CreateAttribute("Version", "1.0")); aadToken.Add(Xml.CreateAttribute("Policy", "MBI_SSL")); }
public void buildInstalledNonLeafUpdateIDs(ref XDocument doc, ref XElement paramsNode) { // Mostly random updates, took from my primary Windows installation + the detectoids for ARM int[] installedNonLeafUpdateIDs = { 1, 2, 3, 11, 19, 2359974, 5169044, 8788830, 23110993, 23110994, 59830006, 59830007, 59830008, 60484010, 62450018, 62450019, 62450020, 98959022, 98959023, 98959024, 98959025, 98959026, 129905029, 130040030, 130040031, 130040032, 130040033, 138372035, 138372036, 139536037, 158941041, 158941042, 158941043, 158941044, // ARM 133399034, 2359977 }; var node = Xml.CreateElement(NAMESPACE_WU_SERVICE + "InstalledNonLeafUpdateIDs"); paramsNode.Add(node); foreach (int i in installedNonLeafUpdateIDs) { node.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "int", i.ToString())); } }
public string buildDownloadLinkRequest(string updateId, int revisionNumber, bool useMSAToken) { XDocument doc = new XDocument(); var envelope = Xml.CreateElement(NAMESPACE_SOAP + "Envelope"); doc.Add(envelope); var header = Xml.CreateElement(NAMESPACE_SOAP + "Header"); envelope.Add(header); buildCommonHeader(ref doc, ref header, SECURED_URL, "http://www.microsoft.com/SoftwareDistribution/Server/ClientWebService/GetExtendedUpdateInfo2", useMSAToken); var body = Xml.CreateElement(NAMESPACE_SOAP + "Body"); envelope.Add(body); var request = Xml.CreateElement(NAMESPACE_WU_SERVICE + "GetExtendedUpdateInfo2"); body.Add(request); var updateIds = Xml.CreateElement(NAMESPACE_WU_SERVICE + "updateIDs"); request.Add(updateIds); var updateIdNode = Xml.CreateElement(NAMESPACE_WU_SERVICE + "UpdateIdentity"); updateIds.Add(updateIdNode); updateIdNode.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "UpdateID", updateId)); updateIdNode.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "RevisionNumber", revisionNumber.ToString())); var xmlUpdateFragmentTypes = Xml.CreateElement(NAMESPACE_WU_SERVICE + "infoTypes"); request.Add(xmlUpdateFragmentTypes); xmlUpdateFragmentTypes.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "XmlUpdateFragmentType", "FileUrl")); //xmlUpdateFragmentTypes.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "XmlUpdateFragmentType", "FileDecryption")); //xmlUpdateFragmentTypes.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "XmlUpdateFragmentType", "EsrpDecryptionInformation")); //xmlUpdateFragmentTypes.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "XmlUpdateFragmentType", "PiecesHashUrl")); //xmlUpdateFragmentTypes.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "XmlUpdateFragmentType", "BlockMapUrl")); request.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "deviceAttributes", "E:BranchReadinessLevel=CBB&DchuNvidiaGrfxExists=1&ProcessorIdentifier=Intel64%20Family%206%20Model%2063%20Stepping%202&CurrentBranch=rs4_release&DataVer_RS5=1942&FlightRing=Retail&AttrDataVer=57&InstallLanguage=en-US&DchuAmdGrfxExists=1&OSUILocale=en-US&InstallationType=Client&FlightingBranchName=&Version_RS5=10&UpgEx_RS5=Green&GStatus_RS5=2&OSSkuId=48&App=WU&InstallDate=1529700913&ProcessorManufacturer=GenuineIntel&AppVer=10.0.17134.471&OSArchitecture=AMD64&UpdateManagementGroup=2&IsDeviceRetailDemo=0&HidOverGattReg=C%3A%5CWINDOWS%5CSystem32%5CDriverStore%5CFileRepository%5Chidbthle.inf_amd64_467f181075371c89%5CMicrosoft.Bluetooth.Profiles.HidOverGatt.dll&IsFlightingEnabled=0&DchuIntelGrfxExists=1&TelemetryLevel=1&DefaultUserRegion=244&DeferFeatureUpdatePeriodInDays=365&Bios=Unknown&WuClientVer=10.0.17134.471&PausedFeatureStatus=1&Steam=URL%3Asteam%20protocol&Free=8to16&OSVersion=10.0.17134.472&DeviceFamily=Windows.Desktop")); return(doc.ToString()); }
public string buildSyncRequest(CookieData cookieData, bool useMSAToken) { XDocument doc = new XDocument(); var envelope = Xml.CreateElement(NAMESPACE_SOAP + "Envelope"); doc.Add(envelope); var header = Xml.CreateElement(NAMESPACE_SOAP + "Header"); envelope.Add(header); buildCommonHeader(ref doc, ref header, PRIMARY_URL, "http://www.microsoft.com/SoftwareDistribution/Server/ClientWebService/SyncUpdates", useMSAToken); var body = Xml.CreateElement(NAMESPACE_SOAP + "Body"); envelope.Add(body); var request = Xml.CreateElement(NAMESPACE_WU_SERVICE + "SyncUpdates"); body.Add(request); var cookie = Xml.CreateElement(NAMESPACE_WU_SERVICE + "cookie"); request.Add(cookie); cookie.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "Expiration", cookieData.expiration.ToString())); cookie.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "EncryptedData", cookieData.encryptedData.ToString())); var parameters = Xml.CreateElement(NAMESPACE_WU_SERVICE + "parameters"); request.Add(parameters); parameters.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "ExpressQuery", "false")); buildInstalledNonLeafUpdateIDs(ref doc, ref parameters); parameters.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "SkipSoftwareSync", "false")); parameters.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "NeedTwoGroupOutOfScopeUpdates", "true")); var filterAppCategoryIds = Xml.CreateElement(NAMESPACE_WU_SERVICE + "FilterAppCategoryIds"); parameters.Add(filterAppCategoryIds); var filterAppCatId = Xml.CreateElement(NAMESPACE_WU_SERVICE + "CategoryIdentifier"); filterAppCategoryIds.Add(filterAppCatId); filterAppCatId.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "Id", MINECRAFT_APP_ID)); parameters.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "TreatAppCategoryIdsAsInstalled", "true")); parameters.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "AlsoPerformRegularSync", "false")); parameters.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "ComputerSpec", "")); var extendedUpdateInfoParams = Xml.CreateElement(NAMESPACE_WU_SERVICE + "ExtendedUpdateInfoParameters"); parameters.Add(extendedUpdateInfoParams); var xmlUpdateFragmentTypes = Xml.CreateElement(NAMESPACE_WU_SERVICE + "XmlUpdateFragmentTypes"); extendedUpdateInfoParams.Add(xmlUpdateFragmentTypes); xmlUpdateFragmentTypes.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "XmlUpdateFragmentType", "Extended")); xmlUpdateFragmentTypes.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "XmlUpdateFragmentType", "LocalizedProperties")); xmlUpdateFragmentTypes.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "XmlUpdateFragmentType", "Eula")); var extendedUpdateLocales = Xml.CreateElement(NAMESPACE_WU_SERVICE + "Locales"); extendedUpdateInfoParams.Add(extendedUpdateLocales); extendedUpdateLocales.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "string", "en-US")); extendedUpdateLocales.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "string", "en")); var clientPreferredLanguages = Xml.CreateElement(NAMESPACE_WU_SERVICE + "ClientPreferredLanguages"); parameters.Add(clientPreferredLanguages); clientPreferredLanguages.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "string", "en-US")); var productsParameters = Xml.CreateElement(NAMESPACE_WU_SERVICE + "ProductsParameters"); parameters.Add(productsParameters); productsParameters.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "SyncCurrentVersionOnly", "false")); productsParameters.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "DeviceAttributes", "E:BranchReadinessLevel=CBB&DchuNvidiaGrfxExists=1&ProcessorIdentifier=Intel64%20Family%206%20Model%2063%20Stepping%202&CurrentBranch=rs4_release&DataVer_RS5=1942&FlightRing=Retail&AttrDataVer=57&InstallLanguage=en-US&DchuAmdGrfxExists=1&OSUILocale=en-US&InstallationType=Client&FlightingBranchName=&Version_RS5=10&UpgEx_RS5=Green&GStatus_RS5=2&OSSkuId=48&App=WU&InstallDate=1529700913&ProcessorManufacturer=GenuineIntel&AppVer=10.0.17134.471&OSArchitecture=AMD64&UpdateManagementGroup=2&IsDeviceRetailDemo=0&HidOverGattReg=C%3A%5CWINDOWS%5CSystem32%5CDriverStore%5CFileRepository%5Chidbthle.inf_amd64_467f181075371c89%5CMicrosoft.Bluetooth.Profiles.HidOverGatt.dll&IsFlightingEnabled=0&DchuIntelGrfxExists=1&TelemetryLevel=1&DefaultUserRegion=244&DeferFeatureUpdatePeriodInDays=365&Bios=Unknown&WuClientVer=10.0.17134.471&PausedFeatureStatus=1&Steam=URL%3Asteam%20protocol&Free=8to16&OSVersion=10.0.17134.472&DeviceFamily=Windows.Desktop")); productsParameters.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "CallerAttributes", "E:Interactive=1&IsSeeker=1&Acquisition=1&SheddingAware=1&Id=Acquisition%3BMicrosoft.WindowsStore_8wekyb3d8bbwe&")); productsParameters.Add(Xml.CreateElement(NAMESPACE_WU_SERVICE + "Products")); return(doc.ToString()); }