Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/roobscoob/among-us-protocol

A writeup of the network protocol used in Among Us, a game by Innersloth.
https://github.com/roobscoob/among-us-protocol

among-us amongus decompile innersloth packet protocol sus

Last synced: 3 months ago
JSON representation

A writeup of the network protocol used in Among Us, a game by Innersloth.

Awesome Lists containing this project

README

        

# Among Us Protocol Research

> **Note**: This repo is outdated, it is correct up to and partially including the Airship Update. PRs are welcome!

Contained in this repo is my detailed explanation of the netcode behind Among Us, a game by Innersloth. Myself and others have spent countless hours scanning the game's decompiled source code as well as manually dissecting each and every packet sent by the game. Not all of this information will be correct, though it is safe to assume that almost all of it is, and those parts that I am uncertain of will be labeled as such.

I do not work for Innersloth, however Innersloth has provided support in the construction of this wiki; for the most part this is just the result of an obsession in discovering how the game works.

This repo does not currently contain instructions on how to decompile/deobfuscate the game.

To intercept packets, I recommend using [Wireshark](https://www.wireshark.org/) with one of the display filters below.

```
To show all game traffic:
udp.port in { 22023 22123 22223 22323 22423 22523 22623 22723 22823 22923 }

To show only reliable packets (recommended as movement, pings, and acks can add a bunch of noise):
udp.port in { 22023 22123 22223 22323 22423 22523 22623 22723 22823 22923 } and data[0] == 01
```

If you would like to discuss the Among Us protocol or client modding with me or others interested in such topics, you are welcome to join the [NodePolus Discord server](https://discord.gg/Jpg4sWqeYH), or [Reactor](https://discord.gg/ejBqr5zWPD)

#### Table of Contents

1. [Packet Structure](01_packet_structure/README.md)
1. [Protocol Data Types](01_packet_structure/01_protocol_data_types.md)
1. [Packed Integers](01_packet_structure/02_packed_integers.md)
1. [The Structure of a Hazel Message](01_packet_structure/03_the_structure_of_a_hazel_message.md)
1. [The `Vector2` Type](01_packet_structure/04_the_vector2_type.md)
1. [Packet Types (`SendOption`)](01_packet_structure/05_packet_types.md)
1. [`0x00` Normal](01_packet_structure/05_packet_types.md#0x00-normal)
1. [`0x01` Reliable](01_packet_structure/05_packet_types.md#0x01-reliable)
1. [`0x08` Hello](01_packet_structure/05_packet_types.md#0x08-hello)
1. [`0x09` Disconnect](01_packet_structure/05_packet_types.md#0x09-disconnect)
1. [`0x0a` Acknowledgement](01_packet_structure/05_packet_types.md#0x0a-acknowledgement)
1. [`0x0b` Fragment](01_packet_structure/05_packet_types.md#0x0b-fragment)
1. [`0x0c` Ping](01_packet_structure/05_packet_types.md#0x0c-ping)
1. [Enums](01_packet_structure/06_enums.md)
1. [`AlterGameTag`](01_packet_structure/06_enums.md#altergametag)
1. [`ChatNoteType`](01_packet_structure/06_enums.md#chatnotetype)
1. [`Color`](01_packet_structure/06_enums.md#color)
1. [`DisconnectReason`](01_packet_structure/06_enums.md#disconnectreason)
1. [`GameKeyword`](01_packet_structure/06_enums.md#gamekeyword)
1. [`GameOverReason`](01_packet_structure/06_enums.md#gameoverreason)
1. [`GameState`](01_packet_structure/06_enums.md#gamestate)
1. [`Hat`](01_packet_structure/06_enums.md#hat)
1. [`KillDistance`](01_packet_structure/06_enums.md#killdistance)
1. [`LimboState`](01_packet_structure/06_enums.md#limbostate)
1. [`Map`](01_packet_structure/06_enums.md#map)
1. [`Pet`](01_packet_structure/06_enums.md#pet)
1. [`QuickChatMode`](01_packet_structure/06_enums.md#quickchatmode)
1. [`ReportOutcome`](01_packet_structure/06_enums.md#reportoutcome)
1. [`ReportReason`](01_packet_structure/06_enums.md#reportreason)
1. [`Skin`](01_packet_structure/06_enums.md#skin)
1. [`SpawnFlag`](01_packet_structure/06_enums.md#spawnflag)
1. [`SpawnType`](01_packet_structure/06_enums.md#spawntype)
1. [`SystemType`](01_packet_structure/06_enums.md#systemtype)
1. [`TaskBarMode`](01_packet_structure/06_enums.md#taskbarmode)
1. [`TaskType`](01_packet_structure/06_enums.md#tasktype)
1. [The Different Types of IDs](01_packet_structure/07_the_different_types_of_ids.md)
1. [Root Message Types](02_root_message_types/README.md)
1. [`0x00` HostGame](02_root_message_types/00_hostgame.md)
1. [`0x01` JoinGame](02_root_message_types/01_joingame.md)
1. [`0x02` StartGame](02_root_message_types/02_startgame.md)
1. [`0x03` RemoveGame](02_root_message_types/03_removegame.md)
1. [`0x04` RemovePlayer](02_root_message_types/04_removeplayer.md)
1. [`0x05` GameData](02_root_message_types/05_gamedata.md)
1. [`0x06` GameDataTo](02_root_message_types/06_gamedatato.md)
1. [`0x07` JoinedGame](02_root_message_types/07_joinedgame.md)
1. [`0x08` EndGame](02_root_message_types/08_endgame.md)
1. [`0x09` GetGameList](02_root_message_types/09_getgamelist.md)
1. [`0x0a` AlterGame](02_root_message_types/10_altergame.md)
1. [`0x0b` KickPlayer](02_root_message_types/11_kickplayer.md)
1. [`0x0c` WaitForHost](02_root_message_types/12_waitforhost.md)
1. [`0x0d` Redirect](02_root_message_types/13_redirect.md)
1. [`0x0e` ReselectServer](02_root_message_types/14_reselectserver.md)
1. [`0x10` GetGameListV2](02_root_message_types/16_getgamelistv2.md)
1. [`0x11` ReportPlayer](02_root_message_types/17_reportplayer.md)
1. [`GameData` and `GameDataTo` Message Types](03_gamedata_and_gamedatato_message_types/README.md)
1. [`0x01` Data](03_gamedata_and_gamedatato_message_types/01_data.md)
1. [`0x02` RPC](03_gamedata_and_gamedatato_message_types/02_rpc.md)
1. [`0x04` Spawn](03_gamedata_and_gamedatato_message_types/04_spawn.md)
1. [`0x05` Despawn](03_gamedata_and_gamedatato_message_types/05_despawn.md)
1. [`0x06` SceneChange](03_gamedata_and_gamedatato_message_types/06_scenechange.md)
1. [`0x07` Ready](03_gamedata_and_gamedatato_message_types/07_ready.md)
1. [`0x08` ChangeSettings](03_gamedata_and_gamedatato_message_types/08_changesettings.md)
1. [`0xcd` ClientInfo](03_gamedata_and_gamedatato_message_types/205_clientinfo.md)
1. [`RPC` Message Types](04_rpc_message_types/README.md)
1. [`0x00` PlayAnimation](04_rpc_message_types/00_playanimation.md)
1. [`0x01` CompleteTask](04_rpc_message_types/01_completetask.md)
1. [`0x02` SyncSettings](04_rpc_message_types/02_syncsettings.md)
1. [`0x03` SetInfected](04_rpc_message_types/03_setinfected.md)
1. [`0x04` Exiled](04_rpc_message_types/04_exiled.md)
1. [`0x05` CheckName](04_rpc_message_types/05_checkname.md)
1. [`0x06` SetName](04_rpc_message_types/06_setname.md)
1. [`0x07` CheckColor](04_rpc_message_types/07_checkcolor.md)
1. [`0x08` SetColor](04_rpc_message_types/08_setcolor.md)
1. [`0x09` SetHat](04_rpc_message_types/09_sethat.md)
1. [`0x0a` SetSkin](04_rpc_message_types/10_setskin.md)
1. [`0x0b` ReportDeadBody](04_rpc_message_types/11_reportdeadbody.md)
1. [`0x0c` MurderPlayer](04_rpc_message_types/12_murderplayer.md)
1. [`0x0d` SendChat](04_rpc_message_types/13_sendchat.md)
1. [`0x0e` StartMeeting](04_rpc_message_types/14_startmeeting.md)
1. [`0x0f` SetScanner](04_rpc_message_types/15_setscanner.md)
1. [`0x10` SendChatNote](04_rpc_message_types/16_sendchatnote.md)
1. [`0x11` SetPet](04_rpc_message_types/17_setpet.md)
1. [`0x12` SetStartCounter](04_rpc_message_types/18_setstartcounter.md)
1. [`0x13` EnterVent](04_rpc_message_types/19_entervent.md)
1. [`0x14` ExitVent](04_rpc_message_types/20_exitvent.md)
1. [`0x15` SnapTo](04_rpc_message_types/21_snapto.md)
1. [`0x16` Close](04_rpc_message_types/22_close.md)
1. [`0x17` VotingComplete](04_rpc_message_types/23_votingcomplete.md)
1. [`0x18` CastVote](04_rpc_message_types/24_castvote.md)
1. [`0x19` ClearVote](04_rpc_message_types/25_clearvote.md)
1. [`0x1a` AddVote](04_rpc_message_types/26_addvote.md)
1. [`0x1b` CloseDoorsOfType](04_rpc_message_types/27_closedoorsoftype.md)
1. [`0x1c` RepairSystem](04_rpc_message_types/28_repairsystem.md)
1. [`0x1d` SetTasks](04_rpc_message_types/29_settasks.md)
1. [`0x1f` ClimbLadder](04_rpc_message_types/31_climbladder.md)
1. [`0x20` UsePlatform](04_rpc_message_types/32_useplatform.md)
1. [`InnerNetObject` Types](05_innernetobject_types/README.md)
1. [`SkeldShipStatus`](05_innernetobject_types/00_skeldshipstatus.md)
1. [`MeetingHud`](05_innernetobject_types/01_meetinghud.md)
1. [`LobbyBehaviour`](05_innernetobject_types/02_lobbybehaviour.md)
1. [`GameData`](05_innernetobject_types/03_gamedata.md)
1. [`PlayerControl`](05_innernetobject_types/04_playercontrol.md)
1. [`MiraShipStatus`](05_innernetobject_types/05_mirashipstatus.md)
1. [`PolusShipStatus`](05_innernetobject_types/06_polusshipstatus.md)
1. [`DleksShipStatus`](05_innernetobject_types/07_dleksshipstatus.md)
1. [`VoteBanSystem`](05_innernetobject_types/08_votebansystem.md)
1. [`PlayerPhysics`](05_innernetobject_types/09_playerphysics.md)
1. [`CustomNetworkTransform`](05_innernetobject_types/10_customnetworktransform.md)
1. [The `SystemType` Implementations](06_the_systemtype_implementations/README.md)
1. [`ReactorSystem`](06_the_systemtype_implementations/01_reactorsystem.md)
1. [`SwitchSystem`](06_the_systemtype_implementations/02_switchsystem.md)
1. [`LifeSuppSystem`](06_the_systemtype_implementations/03_lifesuppsystem.md)
1. [`MedScanSystem`](06_the_systemtype_implementations/04_medscansystem.md)
1. [`SecurityCameraSystem`](06_the_systemtype_implementations/05_securitycamerasystem.md)
1. [`HudOverrideSystem`](06_the_systemtype_implementations/06_hudoverridesystem.md)
1. [`AutoDoorsSystem`](06_the_systemtype_implementations/07_autodoorssystem.md)
1. [`SabotageSystem`](06_the_systemtype_implementations/08_sabotagesystem.md)
1. [`HqHudSystem`](06_the_systemtype_implementations/09_hqhudsystem.md)
1. [`DeconSystem`](06_the_systemtype_implementations/10_deconsystem.md)
1. [`DoorsSystem`](06_the_systemtype_implementations/11_doorssystem.md)
1. [Miscellaneous](07_miscellaneous/README.md)
1. [The Structure of the `GameOptionsData` Object](07_miscellaneous/01_the_structure_of_the_gameoptionsdata_object.md)
1. [Converting Game IDs to and from Game Codes](07_miscellaneous/02_converting_game_ids_to_and_from_game_codes.md)
1. [Reading the Client Version](07_miscellaneous/03_reading_the_client_version.md)
1. [Map-Specific IDs for Vents and Tasks](07_miscellaneous/04_map_specific_ids_for_interactables.md)
1. [The Skeld](07_miscellaneous/04_map_specific_ids_for_interactables.md#the-skeld)
1. [Vents](07_miscellaneous/04_map_specific_ids_for_interactables.md#vents)
1. [Tasks](07_miscellaneous/04_map_specific_ids_for_interactables.md#tasks)
1. [MIRA HQ](07_miscellaneous/04_map_specific_ids_for_interactables.md#mira-hq)
1. [Vents](07_miscellaneous/04_map_specific_ids_for_interactables.md#vents-1)
1. [Tasks](07_miscellaneous/04_map_specific_ids_for_interactables.md#tasks-1)
1. [Polus](07_miscellaneous/04_map_specific_ids_for_interactables.md#polus)
1. [Vents](07_miscellaneous/04_map_specific_ids_for_interactables.md#vents-2)
1. [Tasks](07_miscellaneous/04_map_specific_ids_for_interactables.md#tasks-2)
1. [The Airship](07_miscellaneous/04_map_specific_ids_for_interactables.md#the-airship)
1. [Vents](07_miscellaneous/04_map_specific_ids_for_interactables.md#vents-3)
1. [Tasks](07_miscellaneous/04_map_specific_ids_for_interactables.md#tasks-3)
1. [Ladders](07_miscellaneous/04_map_specific_ids_for_interactables.md#ladders)