[Bug 60121] New: Multi Theft Auto serial validation error
http://bugs.winehq.org/show_bug.cgi?id=60121 Bug ID: 60121 Summary: Multi Theft Auto serial validation error Product: Wine Version: 11.14 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@list.winehq.org Reporter: EpicTux123@proton.me Target Milestone: --- Distribution: --- Created attachment 81684 --> http://bugs.winehq.org/attachment.cgi?id=81684 80 mb log file from me # THE ISSUE There exists a modification for the game "Grand Theft Auto: San Andreas" called "Multi Theft Auto", available online at https://multitheftauto.com/ . It makes it possible to play the game online with others, something that the original game does not have the possibility to. Some bad actors, however, sometimes use cheat like god mode, infinite money and so on. To fix it, the developers ban such bad actors, but to avoid the bad actors from simply creating a new account and using a VPN (ban evasion), they also uniquely register the device serial based on the unique identifiers of hardware components, but mainly the storage device, be it a SATA HDD or a NVME SSD. This is their anti-cheat/anti-device spoofing system, which is proprietary. The rest of the code is open-source, available at https://github.com/multitheftauto/mtasa-blue , but the relevant code for this issue is a proprietary network module. Wine apparently fails at getting such serial from the Linux system, resulting in the app not working as expected and closing with serial validation error. On Windows, it works as expected, be it with any type of storage (filesystem is always NTFS, in this case). # THE DEVELOPERS' RECOMMENDATIONS https://help.multitheftauto.com/sa/trouble/serial-validation/#-linux To fix the issue, the developers recommend running the native Linux server binary (server, not client) to then generate such serial IDs automagically and keep them in sync with the client (the mod's client is Windows-only, but can work via Wine). It requires root in order to read some system paths. However, that has not been successful for me. Apparently, after running the server, there is supposed to be an automatic magic communication between the Linux server -> MTA client (the latter being via Wine, and the former being Linux native), but it did not happen in my case, even without sandboxing. # THE INCONSISTENCIES It is a gamble; 50% of people get it to work, and 50% do not, and the latter is my case. I asked one of the Multi Theft Auto developers if their anti-device spoofing mechanism discriminates against device type or if it really only cares about the serial being valid. The latter is the answer: it only cares about serial numbers. # A WEIRD WORKAROUND Some people in the community have found that if you plug in a SATA drive such as a USB stick or external SATA HDD, the serial validation works as expected, but that has not been my case; it was still not working. This is not relevant either, because on Windows it works with a single NVME-only device without any issues, but I am mentioning it because some people have found it to work with that. It is something related to not having certain types of storage/disks; see https://wiki.multitheftauto.com/wiki/Client_on_Linux_Manual#Known_issues:~:t... for a community explanation (that page is somewhat outdated, but the part I linked may be relevant for the information it gives). The workaround did not work for me. So, I dug further into what is the problem. # WMI: THE POTENTIAL PROBLEM In https://github.com/multitheftauto/mtasa-blue/issues/4097 such issue is discussed at length, but what has been its main subject is the talk about Windows Management Instrumentation (WMI) and how Wine exposes storage devices and their IDs to the app. The main comment is this one https://github.com/multitheftauto/mtasa-blue/issues/4097#issuecomment-425913... (please read it starting from there as it has relevant information), talking about how the issue happens. The person there also made a small program to replicate how Wine gets the serial for the app ( https://github.com/Zephkek/serial_test ), trying to replicate the query from Wine. # TO REPRODUCE THE ISSUE 1. Buy a copy of the game GTA SA. See https://wiki.multitheftauto.com/wiki/Where_to_buy_GTASA for details. (Note: the game is abandonware. To buy it, you have to buy the full new trilogy as well, but de-listed version also exists on Steam if you had it earlier, or in the high seas if you want to search there). 2. Acquire the modification, MTA, at https://multitheftauto.com/ (main Download button, Win10 version), at no cost. 3. Create a clean Wine prefix (note: in my case it was Wine from Arch Linux with WOW64 enabled), with those verbs installed from winetricks: allfonts fontsmooth=rgb d3dx9_42 d3dcompiler_42 d3dcompiler_43 d3dcompiler_47 (needed to avoid launch issues). 4. Run the mod installer inside the Wine prefix. Uncheck everything in the installer except for "Game client" (do not check what cannot be unchecked, of course). 5. Do not change default mod install directory. 6. Change game directory to your copy of GTA SA (can be in your /home outside the prefix, no problem). If the copy is not version 1.0, MTA will automatically downgrade it to v1.0 (Steam is v3.0, for example). 7. After installing, open the game with its wineprefix. Mod's EXE is located in "C:/Program Files (x86)/MTA San Andreas 1.6/Multi Theft Auto.exe". 8. If it gives you warn about anti-virus, check the checkbox and proceed (you can safely ignore it). 9. Game opens to the main menu, and after 10 seconds exists with invalid serial error. Tip: run the mod with WINEDEBUG="+wmic,+wbemprox,+mountmgr,+volume,+file" for debug. I am not entirely sure the case is WMI but that is my best guess at the moment. # SYSTEM INFORMATION I am able to reproduce this issue with the following system: Operating System: Arch Linux KDE Plasma Version: 6.7.3 KDE Frameworks Version: 6.28.0 Qt Version: 6.11.1 Kernel Version: 7.1.5-arch1-2 (64-bit) Graphics Platform: Wayland Package "wine" from Arch Linux official repository. Version "11.14-2". ("wine-mono" and "wine-gecko" packages also installed, but probably not relevant.) System with only one NVME SSD installed and nothing else. I also attached a log file from my test of the problem with the same debug flags I recommended earlier. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60121 --- Comment #1 from EpicTux123 <EpicTux123@proton.me> --- Created attachment 81686 --> http://bugs.winehq.org/attachment.cgi?id=81686 discord message This is a screenshot from a community server admin that (apparently) has knowledge about how the mod works (I don't know him, some other community member sent me this). He says that since the anti-cheat system to check devices is so old, the NVME check happens differently on Windows, because there it sees all NVME checks as normal SATA checks. Probably some very old legacy code or something, which is why it is working on Windows, since it (in)correctly reports as SATA to the anti-cheat system. So actually Wine may be doing the correct thing here, because it is not trying to replicate such Windows bug. Very interesting if that is the case. I cannot confirm this is the behavior on Windows as I only have Linux installed. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60121 --- Comment #2 from Hans Leidekker <hans@meelstraat.net> --- This command should tell you if you have a drive with a unique serial number: $ wine wmic diskdrive get serialnumber There should be at least one that's not 'WINEHDISK'. If not then that may be the reason the DRM doesn't accept your system. There may be other reasons too but the fact that some people have success by attaching an external drive suggests that this property is involved. Note that not all drives (internal or external) expose a serial number on Linux. We can't do anything that in Wine. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60121 --- Comment #3 from EpicTux123 <EpicTux123@proton.me> --- (In reply to Hans Leidekker from comment #2)
This command should tell you if you have a drive with a unique serial number:
$ wine wmic diskdrive get serialnumber
There should be at least one that's not 'WINEHDISK'. If not then that may be the reason the DRM doesn't accept your system. There may be other reasons too but the fact that some people have success by attaching an external drive suggests that this property is involved. Note that not all drives (internal or external) expose a serial number on Linux. We can't do anything that in Wine.
Yep, I do have one: SerialNumber ADATA-LEGEND-860-[REDACTED] WINEHDISK It is a 12-character serial consisting of random uppercase letters and numbers. https://wiki.multitheftauto.com/wiki/Client_on_Linux_Manual#Known_issues:~:t... says the output of $ ls -l /dev/disk/by-id should contain at least any entry starting with "ata-" or "scsi-", which is not my case (everything starts with "nvme" only). -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60121 --- Comment #4 from Hans Leidekker <hans@meelstraat.net> --- (In reply to EpicTux123 from comment #3)
https://wiki.multitheftauto.com/wiki/Client_on_Linux_Manual#Known_issues:~: text=Serial%20Validation%20fails says the output of
$ ls -l /dev/disk/by-id
should contain at least any entry starting with "ata-" or "scsi-", which is not my case (everything starts with "nvme" only).
That's something different, it talks about a Linux native server program. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60121 --- Comment #5 from EpicTux123 <EpicTux123@proton.me> --- (In reply to Hans Leidekker from comment #4)
(In reply to EpicTux123 from comment #3)
https://wiki.multitheftauto.com/wiki/Client_on_Linux_Manual#Known_issues:~: text=Serial%20Validation%20fails says the output of
$ ls -l /dev/disk/by-id
should contain at least any entry starting with "ata-" or "scsi-", which is not my case (everything starts with "nvme" only).
That's something different, it talks about a Linux native server program.
From my understanding, that ls command is to say that if you don't have such entries then the serial validation will not work in Wine as well. But I can't be sure; the details of this are proprietary. What I know is that it works on Windows with NVME-only, and that Wine has the correct serial number (I can attest by using Linux native commands and verify it's the same number). -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60121 --- Comment #6 from Hans Leidekker <hans@meelstraat.net> --- (In reply to EpicTux123 from comment #5)
That's something different, it talks about a Linux native server program.
From my understanding, that ls command is to say that if you don't have such entries then the serial validation will not work in Wine as well. But I can't be sure; the details of this are proprietary.
No, Wine doesn't use those names.
What I know is that it works on Windows with NVME-only, and that Wine has the correct serial number (I can attest by using Linux native commands and verify it's the same number).
If Wine correctly reports your serial number then I don't see a Wine bug. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60121 --- Comment #7 from EpicTux123 <EpicTux123@proton.me> --- (In reply to Hans Leidekker from comment #6)
(In reply to EpicTux123 from comment #5)
That's something different, it talks about a Linux native server program.
From my understanding, that ls command is to say that if you don't have such entries then the serial validation will not work in Wine as well. But I can't be sure; the details of this are proprietary.
No, Wine doesn't use those names.
What I know is that it works on Windows with NVME-only, and that Wine has the correct serial number (I can attest by using Linux native commands and verify it's the same number).
If Wine correctly reports your serial number then I don't see a Wine bug.
Well, the same setup (having only a NVME drive) on Windows works, but in Wine it does not. The bug here is that it does not work, simple as that. It is probably not working in the sense that the proprietary code is requesting such serial in a way that may be legacy or something, which Wine maybe does not have support for. (It is just a guess from me, not something confirmed.) I am also trying to work with the developers to improve the situation on Wine, but the fact is that in Wine it does not work when in Windows it does, so there is the bug. It is difficult, because it is a proprietary anti-cheat mechanism, so details of it cannot be talked in public. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60121 --- Comment #8 from Hans Leidekker <hans@meelstraat.net> --- (In reply to EpicTux123 from comment #7)
If Wine correctly reports your serial number then I don't see a Wine bug.
Well, the same setup (having only a NVME drive) on Windows works, but in Wine it does not. The bug here is that it does not work, simple as that.
It is probably not working in the sense that the proprietary code is requesting such serial in a way that may be legacy or something, which Wine maybe does not have support for. (It is just a guess from me, not something confirmed.)
You said it works for some people which suggests that some version of Wine does support it. You should try comparing your system with one where it does work. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60121 --- Comment #9 from EpicTux123 <EpicTux123@proton.me> --- (In reply to Hans Leidekker from comment #8)
(In reply to EpicTux123 from comment #7)
If Wine correctly reports your serial number then I don't see a Wine bug.
Well, the same setup (having only a NVME drive) on Windows works, but in Wine it does not. The bug here is that it does not work, simple as that.
It is probably not working in the sense that the proprietary code is requesting such serial in a way that may be legacy or something, which Wine maybe does not have support for. (It is just a guess from me, not something confirmed.)
You said it works for some people which suggests that some version of Wine does support it. You should try comparing your system with one where it does work.
Hmm, I think I have something to ponder for this issue: from the random amount I gathered of feedback from random people, the common scenario to make it work appears to be: Use Debian or a Debian-based distro (preferably Ubuntu; maybe Linux Mint can also work?) and have a SATA drive. My situation is Wine on Arch Linux and a NVME drive only. I have told the devs about this issue and one of them said he is looking into it as the problem is more complex than initially thought. As it seems, it could still be a Wine issue, since people running the game's mod server as root (shenanigans) to validate the serial seems to work. I think the culprit here is the game mode and not Wine, but I am not sure if Wine does not have even 1% of guilt in this case. That is the information I have for know. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60121 --- Comment #10 from EpicTux123 <EpicTux123@proton.me> --- Sorry, I meant "game's mod" * in the previous comment, and not "game mode". -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=60121 EpicTux123 <EpicTux123@proton.me> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |NOTOURBUG Status|UNCONFIRMED |RESOLVED --- Comment #11 from EpicTux123 <EpicTux123@proton.me> --- One developer of the game mod said serial validation is more on their side and nothing really to do with Wine. So I am closing this issue. The issue is being worked on, on their side. Thank you for your help. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
participants (1)
-
WineHQ Bugzilla