You are viewing a potentially older version of this package. View all versions.
Ctrlc-LethalGuardPlus-1.0.1 icon

LethalGuardPlus

Host-side anticheat for Lethal Company. Blocks the voice chat (Dissonance) crash attack that floods the host with fake players. Only the host needs it.

By Ctrlc
Date uploaded a week ago
Version 1.0.1
Download link Ctrlc-LethalGuardPlus-1.0.1.zip
Downloads 37
Dependency string Ctrlc-LethalGuardPlus-1.0.1

This mod requires the following mods to function

BepInEx-BepInExPack-5.4.2100 icon
BepInEx-BepInExPack

BepInEx pack for Mono Unity games. Preconfigured and ready to use.

Preferred version: 5.4.2100

README

LethalGuard+

Anticheat for Lethal Company hosts. Bad packets are dropped at the host, so every player in your lobby is protected, even if they don't have the mod.

Modules

Module Protects against
Voice Voice chat (Dissonance) crash attack

More modules are coming in future versions.


Voice module

The attack

A player joins your lobby and, through the game's voice chat system (Dissonance), creates dozens of fake voice players with huge names and absurd audio settings, then floods packets. Every fake player makes your game allocate a giant audio buffer. Within seconds your RAM is gone: the game crashes with OutOfMemory, and sometimes Windows Explorer goes down with it.

The root cause is in Dissonance: the host trusts whatever player ID, name and codec settings a client puts in its packets, and allocates memory from a size the client chooses.

What it does

As host (the important part): every voice packet from a client is checked before the game processes it or relays it to the other players. Packets that break the rules are dropped:

  • player names longer than a normal name
  • invalid codec settings (giant FrameSize, unknown codec, invalid sample rate)
  • a client claiming to be another player (fake player ID / name)
  • voice or text sent on behalf of another player
  • relay packets carrying anything other than voice or text
  • packets lying about their own length
  • more packets per second than a normal player sends

As client (in someone else's lobby): your own game is protected. Codec settings of joining voice players are sanitized and voice frames from suspicious players are dropped. You can't protect the host or other players from here; the attack packets go to the host, not through you.

Normal players are not affected: legit voice chat stays under every limit.


Installation

Install with r2modman / Thunderstore Mod Manager. Only the host needs it to protect the lobby. Installing it as a client protects your own game.

Config

BepInEx/config/lethalguardplus.cfg

Section Setting Default Meaning
General KickOffender false Host only. Kick a player who sends an attack packet. Rate limit violations only drop packets, they never kick.
Voice BlockPackets true Drop rule-breaking voice packets. false only logs them (the attack will work).
Voice MaxNameLength 64 Max voice player name length.
Voice MaxFrameSize 5760 Max codec frame size (Opus maximum).
Voice MaxPacketsPerSecond 200 Host: max voice packets per second per connection.
Voice MaxVoiceFramesPerSecond 150 Client: max voice frames per second per player.

Log

Every blocked packet is written to BepInEx/LethalGuardPlus.log with the player's Steam ID and name. Repeats are summarized every 5 seconds so the log doesn't explode during an attack.

[18:29:55.829] [HOST] CLIENTSTATE-NAME | clientId=1 steamId=7656119... name="..." | name is 990 characters (limit 64)
[18:29:55.831] [HOST] SPOOFED-VOICE | clientId=1 steamId=7656119... name="..." | VoiceData on behalf of another player

Türkçe

Lethal Company host'ları için anticheat. Kötü paketler host'ta düşürüldüğü için sadece host'un yüklemesi yeterli, lobideki herkes korunur.

Ses modülü: Sesli sohbet (Dissonance) üzerinden yapılan, host'un belleğini doldurup oyunu çökerten saldırıyı engeller. Client olarak yüklersen kendi oyunun korunur.

Engellenen her paket BepInEx/LethalGuardPlus.log dosyasına saldırganın Steam ID'siyle yazılır. Yeni modüller sonraki sürümlerde gelecek.

CHANGELOG

Changelog

2.0.3

  • Known attackers and players kicked from this lobby are now refused before they connect, so their packets never reach the game.
  • Closed a gap in the 2.0.2 crash fix: packets from a kicked attacker could still be treated as coming from the host.
  • Refused attackers no longer leave a blank name in the player list.
  • The KnownAttackerList setting is gone: this protection is now always on. /unban <SteamID> still lets an account in on your game.

2.0.2

  • Fixed a new lobby crash: a broken network packet could crash the host's game right after the attacker joined, before any ban check. It is now blocked and the sender is kicked. This fix is always on.

2.0.1

  • Small hotfix.

2.0.0

LethalGuard+ now protects the whole lobby, not only voice chat. Only the host needs it.

Updating from 1.0.x

  • Players can now be kicked automatically, but only for requests a normal game can never send. KickLevel=Off turns this off. Blocking stays on either way.
  • Settings are reset to the new defaults, except HideModdedTag=false, which is kept.
  • Using LethalGuard+ Beta? It turns itself off now. Your bans stay, but settings from the Beta are not copied over.

New protection (host)

  • Lobby crashes: message floods, oversized packets and more voice chat attacks.
  • Ship: fake early takeoff, a locked lever, "leave early" votes from living players, spamming doors, lights, magnet, teleporter or horn.
  • Credits: free items, furniture, vehicles and moons, wiped credits.
  • Chat: talking as someone else, fake server messages, huge text, spam.
  • Terminal and furniture: locking the terminal from afar, moving or storing furniture in a broken way.
  • Spawns and kills: reusing gift boxes and masks, deleting monsters, fake kills.
  • Items: deleting items for everyone. Optional ItemTeleportGuard (off by default) can break item mods.
  • Joining: two players taking the last slot, known lobby attackers.

For hosts

  • Commands: /kick, /ban, /unban, /bans, /recent. /ban also works on players who already left, /unban last undoes the latest ban.
  • A first offence is only a lobby ban. AutoBanDuration decides what happens if the same account is caught again in another lobby within 30 days.
  • KickLevel and NoticeLevel choose who is kicked and what you see in chat. Notices are only shown to you.
  • One chat line in your first lobby after starting the game shows that you're protected. Only you can see it, and NoticeLevel=Off hides it.
  • The config now has three parts: General, Modules (turn single protections off) and Advanced (including TrustedPlayers).
  • Bug reports: send BepInEx/LethalGuardPlus.log.

Fixes

  • Innocent players could be muted after a game freeze or when the host PC had been on for more than about 25 days.

1.0.2

  • Your lobby is no longer listed under the modded filter: players can find it without ticking the modded checkbox. Can be turned off with HideModdedTag.

1.0.1

  • Release build without obfuscation. No functional changes.

1.0.0

  • First release.
  • Voice module, host: validates every Dissonance packet before it is processed or relayed (name length, codec settings, spoofed player IDs, relay contents, packet length, rate limit).
  • Voice module, client: sanitizes codec settings of joining voice players and drops voice frames from suspicious players.
  • Optional auto-kick (KickOffender, off by default).