Page MenuHomeFeedback Tracker

Launcher server browser protocol parsing issue
Confirmed Internally, NormalPublic

Description

The DayZ Launcher is incorrectly parsing the server browser protocol contained in the Steam A2S_RULES response.

It statically takes byte 36 and byte 38 to verify the ExpansionTerrain and DLC flag. The current approach retrieves a random letter from the mod list, depending on how the server is configured.

This results in servers using mods reporting in the launcher as requiring a DLC.

Details

Severity
Major
Resolution
Open
Reproducibility
Sometimes
Operating System
Windows 10
Category
Launcher
Steps To Reproduce

Load mods that constitute to around 100 byte of payload length added to the server browser protocol length.

Additional Information

The DLC map itself is outdated as well, redirecting players to the defunct Livonia DLC page when the Get DLC button is clicked.

Proposed fix:
The browser protocol response must be properly parsed back into a singular payload instead of relying on a static offset.

Event Timeline

A2S Payload NOT triggering the check:

\xff\xff\xff\xffE\n\x00\x01\x01\x00\x02\x01\x02\x01\x02\x01\x02\x03\xec\n\x98a\x04\xa4\x97sl\tEar Plugs\xb9_\x9a(\x04T\xc4\xfbl\rVPPAdminTools\xcf\xb9\x7f\x96\x04\x04\xb0\xef\\\x13Community Framework\x04\x0bCooltrainV3\x04dayz\x0eJacob_Mango_V3\x03VPP\x01\x02\x00allowedBuild\x000\x00clientPort\x000\x00dedicated\x001\x00island\x00chernarusplus\x00language\x0065543\x00platform\x00win\x00requiredBuild\x000\x00requiredVersion\x00126\x00timeLeft\x0015\x00

A2S Payload triggering the check:

\xff\xff\xff\xffE\x1a\x00\x01\x11\x00\x02\x07\x01\x02\x01\x02<\x1f\xc7\xd0g\x04N\n\x0e\xa8\x0eParagonClothesp\x97\xc1\x04\x04\xe2p\xfbe\x10BaseBuildingPlus\xdaAyL\x04;\xf8#\xc7\tBetterSky\x1d\xe5\xe2X\x04&\xc6M\x93\x08DayZ Dog\xa0S_\xdf\x04#\xf3\x81\xaa\x10BoomLay's Things\x1cV\x7fh\x04\xc4\x15\x00\x02\x11\x00\x9f\x91\rSNAFU_Weapons\xb3#\xeb\xc5\x04\x0b\x11\xec\xb4\x16UnCivilized BillboardsS\xc9\x14\xdd\x04\x9b\x87\xf3\xad\x13Survivor Animations\x89\xca\xa4q\x04\x07%i\xc6\x10DragonHealth125k\xec\xd8\xe4Z\x04o\x81U\xc5\x0bRaG_Dragons\x95K\xe7\x00\x03\x11\x00\x80\x04\x9c\xbe\xbc\x9e\x1bMMG - Mightys Military GearNl\xafI\x04\xf51W\xbf\x10MMG Base Storage\x8bR<\xf3\x042\xf2\xf1\xa9\rFMZ_AdminPack_\x12\xfa\xb4\x04[\x7f]\xbc\x0e[CnG]UAZ_31514\xc8B\x01\x02\x9b\x04\xf3{\x06\xc4\x0cMBM_Viper\x00\x04\x11\x00GTSc3\xcf|\x04\x92\xb2\xec\xb3\x14Blacks Paragon Retex\x16\xcb\x80j\x04\xc1\xfex\xa5\x07Fox car\x8eIP\x0b\x04m\xc7\xac\xc2\x0eMBM_ImprezaWRX;\xf3\xd3\x11\x04\x8c+\x11\xaf\rFC_Fish_Equip\x07(\x0e\xac\x04[\xe3\r\xbc\x14Krak3nsAmmoStacks100\x00\x05\x11\x00\xdeQ?\xc6\x04\xc50\xfa\xbd\x0cMBM_RamRebel\x8b\xce\xbeN\x04:3%\xb2\x0cMore Patches\x93\xf8\xa9P\x04\xc1\x0c\x17\x94\x0fAllCountryFlagsv\xca(\xf9\x04\xfc\xe0\xa4{\x13Unknown Ghillie Mod\xc0\x01\x03\x06\xe2\x04~:\xe0\x89\x0bAutorun Mod\x1a\xadHG\x04C\x97\x00\x06\x11\x00\x93\xa6\x0bBBPItemPack\xc3VP\x04\x04\x0ee\xbf\xbc\rMBM_DuneBuggy\x9c2\xd4\x14\x04,\xf2Y\xab\x13AST_RFFSheli_reskin`\x0f\xf36\x04\xccq{\xbc\x13MBM_DodgeChallenger\xde\xa5\x0c\xf5\x04\x10\xb6;\xad\x14RedFalcon Watercraft\xfb\xbb\x00\x07\x11\x00CR\x04\xcc'\xa4\xbb\tMBM_CanAmDt\xa5~\x04I\xd6K\xb0\x13Blacks BBP Interior\xd6@\x7f\x9a\x04MU\xb7\x8a\x15MA Items and Clothing\xd4i\xd4\x81\x04\x81\xf7\xc8\xa8\rPVEZ Reloadedc;\xe7e\x04\x83\xb8e\x81\tDrugsPLUSf\xed\x93\xf2\x04RO1\x00\x08\x11\x00s\x0cCannabisPlus\xb0\xe0\xaf\x16\x04\xb7\xf08m\rFlipTransport\xa2\xe9@6\x04\xce_q\xa9\x19Paragon Collectable itemsO\xb9\xe0\x94\x04\xcd\x11\xac\xb5\x0fParagon Arsenal21 \xac\x04\x1ar\x1b\xa8\x16Paragon Gear and Arm\x00\t\x11\x00orz\x14(8\x044\tm\xb3\x0fParagon StorageC\xbfR\xfa\x04\xe72\xad\xab\x10RaG_Vehicle_Pack\xc1k\xd8\x13\x04\x92\xc1\x99\xab\rRaG_BaseItems\x9a\xd1\x16G\x04\xea\xd4\x1eb\x08CodeLock7\xd0S\x9d\x04\x8e\x8d\xbd\x7f\x16Advanced Weapon Scopes\xac\x00\n\x11\x00\xa2\x01\x01\x8d\x04\xcf\xa4L\xb0\x17Blacks RFFS Helis Retex\xac\x1a\xc8\x87\x04\xd4\x9b\x83\xa0\x1dRedFalcon Flight System Heliz\x0f\x95\xa2\xc1\x04R\t-d\x10VPPNotifications\xee\x01\x03\xb2\xa0\x04\x0b\xf4m\xc7\x15VENOM GROUPE DEERI\x00\x0b\x11\x00SLE\xb2\xd80\xdb\x044\xca\x8f\x92\nTraderPlus\x98\xdb\xd0\xcc\x04\xacO\xd2^\nTrader Mod\x02#\x19\x07\x04\\\x02/\xc5\tVENOM CAR\xce\x049`\x04\x89\xfem\xc7\x17VENOM CLOTHING DEERISLE_\xb1\xc0\x03\x04u\xf8m\xc7\x12VENOM MOD DEERISLEw\xee\xd9\xcc\x00\x0c\x11\x00\x04\x97(\xa9\x87\x12DayZ Editor Loader\xb9_\x9a(\x04T\xc4\xfbl\rVPPAdminTools\xa9R\xadz\x042C\x82_\x08DeerIsle\x80\x93vO\x04\x83MU]\x0cBuilderItems\xa2p)Z\x04 \x9e\xb6\x97\x0eDabs Framework\xcf\xb9\x7f\x96\x04\x04\xb0\xef\\\x13Commun\x00\r\x11\x00ity Framework2\x0fAllcountryFlags\x03BBP\x06BLACKS\x07boomlay\x08boomlay2\x12C4BaseRaidbyDmitri\x0bchill_grill\nCodeLockv3\x0bCypeRevenge\x03dab\x04dayz\ndayzt\x00\x0e\x11\x00rader\ndeerisle53\x0cDragonHealth\x03fcp\x03FMZ\x08Fox_4320\nFutureSixx\x07Hunterz\x08IceBlade\x06Inkota\x07ItsSk93\x0eJacob_Mango_V3\x0eLBmasterPub_v3\nliquidr\x00\x0f\x11\x00ock\x05lunna\x15MACustomItemsClothing\x06MaKCaC\x05MBMv2\x06mebrad\x0fMightyMoitzbert\x0cNotABananaV3\x16official_ASTC_RFFS_key\x07Paragon\x06Radash\trag_tyso\x00\x10\x11\x00n\tRedFalcon\tRFFSHeliz\x10SNAFU_Weapons_V1\x0bTBCarDealer\x10TBDeathInsurance\x05TBLib\x0cTBRealEstate\x05VENOM\x08VENOM666\x08VenomCar\x07VENOMPC\x03VPP\tWard\x00\x11\x11\x00og.v3\x0bxKrak3nMods\x01\x02\x00allowedBuild\x000\x00clientPort\x000\x00dedicated\x001\x00island\x00deerisle\x00language\x0065545\x00platform\x00win\x00requiredBuild\x000\x00requiredVersion\x00126\x00timeLeft\x0015\x00

Current implemented check (py3 demo):

a2s_payload = ...
num1 = a2s_payload[36]
x = ((num1 & 0b00000100) >> 2) != 0
print('Byte38 [DLC Flag]', a2s_payload[38], 'Byte36 [ExpansionTerrain]', num1, 'DLC Flag', x)
philippjoos updated the task description. (Show Details)Oct 15 2024, 5:47 PM
philippjoos edited Additional Information. (Show Details)
oweff added a subscriber: oweff.Oct 15 2024, 6:27 PM
golner added a subscriber: golner.Oct 15 2024, 9:25 PM
Geez changed the task status from New to Assigned.Oct 16 2024, 10:31 AM
Geez changed the task status from Assigned to Confirmed Internally.Oct 16 2024, 1:53 PM
LydHosting added a comment.EditedOct 18 2024, 7:02 PM

I tried a method to correct the problem with a customer who was asked to have a DLC to connect to his Chernarus server. The problem is corrected by adding the following parameter to serverDZ.cfg:

steamProtocolMaxDataSize = 4096;

Perhaps it would be a good idea to increase the default value (1024 - I think) used by DayZ so that server owners don't have to do this.

To sum up, increasing this value allows you to:

  • Remove the DLC acquisition button when it's not needed;
  • Fix the problem that has prevented the launcher from displaying the list of mods on certain servers since version 1.26 was released;
  • Remove the red alert that could be displayed (forever) on some servers falsely indicating that the list of mods on the server is incomplete.