cs2-exploit 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of cs2-exploit might be problematic. Click here for more details.
- package/.github/workflows/npm-publish-github-packages.yml +36 -0
- package/README.md +25 -0
- package/config.json +6 -0
- package/helpers/Coordinator.js +157 -0
- package/helpers/Helper.js +171 -0
- package/helpers/Lobby.js +396 -0
- package/helpers/Protos.js +47 -0
- package/helpers/VDF.js +140 -0
- package/index.js +137 -0
- package/package.json +25 -0
- package/protobufs/.gitattributes +1 -0
- package/protobufs/LICENSE +24 -0
- package/protobufs/README.md +7 -0
- package/protobufs/artifact/base_gcmessages.proto +532 -0
- package/protobufs/artifact/c_peer2peer_netmessages.proto +57 -0
- package/protobufs/artifact/clientmessages.proto +51 -0
- package/protobufs/artifact/connectionless_netmessages.proto +21 -0
- package/protobufs/artifact/dcg_gamemessages.proto +638 -0
- package/protobufs/artifact/dcg_gcmessages_client.proto +1590 -0
- package/protobufs/artifact/dcg_gcmessages_common.proto +617 -0
- package/protobufs/artifact/dcg_gcmessages_server.proto +395 -0
- package/protobufs/artifact/demo.proto +149 -0
- package/protobufs/artifact/econ_gcmessages.proto +1033 -0
- package/protobufs/artifact/econ_shared_enums.proto +47 -0
- package/protobufs/artifact/gameevents.proto +121 -0
- package/protobufs/artifact/gametoolevents.proto +78 -0
- package/protobufs/artifact/gcsdk_gcmessages.proto +391 -0
- package/protobufs/artifact/gcsystemmsgs.proto +28 -0
- package/protobufs/artifact/netmessages.proto +551 -0
- package/protobufs/artifact/network_connection.proto +117 -0
- package/protobufs/artifact/networkbasetypes.proto +206 -0
- package/protobufs/artifact/networksystem_protomessages.proto +19 -0
- package/protobufs/artifact/steamdatagram_messages_auth.proto +38 -0
- package/protobufs/artifact/steamdatagram_messages_sdr.proto +441 -0
- package/protobufs/artifact/steammessages.proto +636 -0
- package/protobufs/artifact/steammessages_base.proto +83 -0
- package/protobufs/artifact/steammessages_cloud.steamworkssdk.proto +68 -0
- package/protobufs/artifact/steammessages_oauth.steamworkssdk.proto +18 -0
- package/protobufs/artifact/steammessages_publishedfile.steamworkssdk.proto +233 -0
- package/protobufs/artifact/steammessages_unified_base.steamworkssdk.proto +30 -0
- package/protobufs/artifact/steamnetworkingsockets_messages.proto +113 -0
- package/protobufs/artifact/steamnetworkingsockets_messages_certs.proto +32 -0
- package/protobufs/artifact/steamnetworkingsockets_messages_udp.proto +76 -0
- package/protobufs/artifact/te.proto +257 -0
- package/protobufs/artifact/uifontfile_format.proto +16 -0
- package/protobufs/artifact/usermessages.proto +473 -0
- package/protobufs/csgo/base_gcmessages_csgo.proto +547 -0
- package/protobufs/csgo/c_peer2peer_netmessages.proto +55 -0
- package/protobufs/csgo/clientmessages.proto +48 -0
- package/protobufs/csgo/connectionless_netmessages.proto +17 -0
- package/protobufs/csgo/cs_gameevents.proto +35 -0
- package/protobufs/csgo/cs_usercmd.proto +54 -0
- package/protobufs/csgo/cstrike15_gcmessages.proto +1415 -0
- package/protobufs/csgo/cstrike15_usermessages.proto +596 -0
- package/protobufs/csgo/demo.proto +160 -0
- package/protobufs/csgo/econ_gcmessages.proto +228 -0
- package/protobufs/csgo/engine_gcmessages.proto +14 -0
- package/protobufs/csgo/enums_clientserver.proto +1529 -0
- package/protobufs/csgo/fatdemo.proto +125 -0
- package/protobufs/csgo/gameevents.proto +120 -0
- package/protobufs/csgo/gcsdk_gcmessages.proto +323 -0
- package/protobufs/csgo/gcsystemmsgs.proto +242 -0
- package/protobufs/csgo/netmessages.proto +607 -0
- package/protobufs/csgo/network_connection.proto +126 -0
- package/protobufs/csgo/networkbasetypes.proto +244 -0
- package/protobufs/csgo/networksystem_protomessages.proto +17 -0
- package/protobufs/csgo/steamdatagram_messages_auth.proto +65 -0
- package/protobufs/csgo/steamdatagram_messages_sdr.proto +534 -0
- package/protobufs/csgo/steammessages.proto +597 -0
- package/protobufs/csgo/steammessages_base.proto +301 -0
- package/protobufs/csgo/steammessages_cloud.steamworkssdk.proto +68 -0
- package/protobufs/csgo/steammessages_gamenetworkingui.proto +61 -0
- package/protobufs/csgo/steammessages_helprequest.steamworkssdk.proto +22 -0
- package/protobufs/csgo/steammessages_oauth.steamworkssdk.proto +18 -0
- package/protobufs/csgo/steammessages_player.steamworkssdk.proto +254 -0
- package/protobufs/csgo/steammessages_publishedfile.steamworkssdk.proto +233 -0
- package/protobufs/csgo/steammessages_unified_base.steamworkssdk.proto +30 -0
- package/protobufs/csgo/steamnetworkingsockets_messages.proto +205 -0
- package/protobufs/csgo/steamnetworkingsockets_messages_certs.proto +39 -0
- package/protobufs/csgo/steamnetworkingsockets_messages_udp.proto +75 -0
- package/protobufs/csgo/te.proto +259 -0
- package/protobufs/csgo/uifontfile_format.proto +13 -0
- package/protobufs/csgo/usercmd.proto +37 -0
- package/protobufs/csgo/usermessages.proto +742 -0
- package/protobufs/csgo/valveextensions.proto +17 -0
- package/protobufs/dota2/base_gcmessages.proto +400 -0
- package/protobufs/dota2/c_peer2peer_netmessages.proto +55 -0
- package/protobufs/dota2/clientmessages.proto +48 -0
- package/protobufs/dota2/connectionless_netmessages.proto +19 -0
- package/protobufs/dota2/demo.proto +160 -0
- package/protobufs/dota2/dota_broadcastmessages.proto +29 -0
- package/protobufs/dota2/dota_client_enums.proto +93 -0
- package/protobufs/dota2/dota_clientmessages.proto +573 -0
- package/protobufs/dota2/dota_commonmessages.proto +146 -0
- package/protobufs/dota2/dota_gcmessages_client.proto +3336 -0
- package/protobufs/dota2/dota_gcmessages_client_battle_report.proto +393 -0
- package/protobufs/dota2/dota_gcmessages_client_bingo.proto +108 -0
- package/protobufs/dota2/dota_gcmessages_client_candy_shop.proto +302 -0
- package/protobufs/dota2/dota_gcmessages_client_chat.proto +239 -0
- package/protobufs/dota2/dota_gcmessages_client_coaching.proto +376 -0
- package/protobufs/dota2/dota_gcmessages_client_fantasy.proto +564 -0
- package/protobufs/dota2/dota_gcmessages_client_guild.proto +651 -0
- package/protobufs/dota2/dota_gcmessages_client_guild_events.proto +231 -0
- package/protobufs/dota2/dota_gcmessages_client_match_management.proto +468 -0
- package/protobufs/dota2/dota_gcmessages_client_showcase.proto +528 -0
- package/protobufs/dota2/dota_gcmessages_client_team.proto +275 -0
- package/protobufs/dota2/dota_gcmessages_client_tournament.proto +173 -0
- package/protobufs/dota2/dota_gcmessages_client_watch.proto +205 -0
- package/protobufs/dota2/dota_gcmessages_common.proto +1667 -0
- package/protobufs/dota2/dota_gcmessages_common_bot_script.proto +294 -0
- package/protobufs/dota2/dota_gcmessages_common_league.proto +351 -0
- package/protobufs/dota2/dota_gcmessages_common_lobby.proto +391 -0
- package/protobufs/dota2/dota_gcmessages_common_match_management.proto +488 -0
- package/protobufs/dota2/dota_gcmessages_msgid.proto +890 -0
- package/protobufs/dota2/dota_gcmessages_server.proto +1495 -0
- package/protobufs/dota2/dota_gcmessages_webapi.proto +376 -0
- package/protobufs/dota2/dota_hud_types.proto +33 -0
- package/protobufs/dota2/dota_match_metadata.proto +346 -0
- package/protobufs/dota2/dota_messages_mlbot.proto +62 -0
- package/protobufs/dota2/dota_modifiers.proto +53 -0
- package/protobufs/dota2/dota_scenariomessages.proto +226 -0
- package/protobufs/dota2/dota_shared_enums.proto +820 -0
- package/protobufs/dota2/dota_usercmd.proto +15 -0
- package/protobufs/dota2/dota_usermessages.proto +1655 -0
- package/protobufs/dota2/econ_gcmessages.proto +997 -0
- package/protobufs/dota2/econ_shared_enums.proto +37 -0
- package/protobufs/dota2/engine_gcmessages.proto +14 -0
- package/protobufs/dota2/enums_clientserver.proto +1547 -0
- package/protobufs/dota2/gameevents.proto +120 -0
- package/protobufs/dota2/gametoolevents.proto +78 -0
- package/protobufs/dota2/gcsdk_gcmessages.proto +488 -0
- package/protobufs/dota2/gcsystemmsgs.proto +26 -0
- package/protobufs/dota2/netmessages.proto +604 -0
- package/protobufs/dota2/network_connection.proto +126 -0
- package/protobufs/dota2/networkbasetypes.proto +244 -0
- package/protobufs/dota2/networksystem_protomessages.proto +17 -0
- package/protobufs/dota2/steamdatagram_messages_auth.proto +65 -0
- package/protobufs/dota2/steamdatagram_messages_sdr.proto +533 -0
- package/protobufs/dota2/steammessages.proto +108 -0
- package/protobufs/dota2/steammessages_base.proto +332 -0
- package/protobufs/dota2/steammessages_clientserver_login.proto +155 -0
- package/protobufs/dota2/steammessages_cloud.steamworkssdk.proto +68 -0
- package/protobufs/dota2/steammessages_gamenetworkingui.proto +42 -0
- package/protobufs/dota2/steammessages_helprequest.steamworkssdk.proto +22 -0
- package/protobufs/dota2/steammessages_int.proto +628 -0
- package/protobufs/dota2/steammessages_oauth.steamworkssdk.proto +18 -0
- package/protobufs/dota2/steammessages_player.steamworkssdk.proto +254 -0
- package/protobufs/dota2/steammessages_publishedfile.steamworkssdk.proto +233 -0
- package/protobufs/dota2/steammessages_steamlearn.steamworkssdk.proto +360 -0
- package/protobufs/dota2/steammessages_unified_base.steamworkssdk.proto +30 -0
- package/protobufs/dota2/steamnetworkingsockets_messages.proto +205 -0
- package/protobufs/dota2/steamnetworkingsockets_messages_certs.proto +39 -0
- package/protobufs/dota2/steamnetworkingsockets_messages_udp.proto +75 -0
- package/protobufs/dota2/te.proto +259 -0
- package/protobufs/dota2/uifontfile_format.proto +13 -0
- package/protobufs/dota2/usercmd.proto +38 -0
- package/protobufs/dota2/usermessages.proto +721 -0
- package/protobufs/dota2/valveextensions.proto +17 -0
- package/protobufs/google/protobuf/descriptor.proto +281 -0
- package/protobufs/steam/clientmetrics.proto +45 -0
- package/protobufs/steam/content_manifest.proto +62 -0
- package/protobufs/steam/contenthubs.proto +41 -0
- package/protobufs/steam/encrypted_app_ticket.proto +10 -0
- package/protobufs/steam/enums.proto +482 -0
- package/protobufs/steam/enums_clientserver.proto +1525 -0
- package/protobufs/steam/enums_productinfo.proto +13 -0
- package/protobufs/steam/htmlmessages.proto +1031 -0
- package/protobufs/steam/offline_ticket.proto +8 -0
- package/protobufs/steam/steamdatagram_messages_auth.proto +65 -0
- package/protobufs/steam/steamdatagram_messages_sdr.proto +534 -0
- package/protobufs/steam/steammessages_accounthardware.steamclient.proto +167 -0
- package/protobufs/steam/steammessages_appoverview.proto +202 -0
- package/protobufs/steam/steammessages_auth.steamclient.proto +375 -0
- package/protobufs/steam/steammessages_base.proto +335 -0
- package/protobufs/steam/steammessages_broadcast.steamclient.proto +619 -0
- package/protobufs/steam/steammessages_chat.steamclient.proto +1070 -0
- package/protobufs/steam/steammessages_client_objects.proto +648 -0
- package/protobufs/steam/steammessages_clientlanp2p.proto +43 -0
- package/protobufs/steam/steammessages_clientmetrics.steamclient.proto +192 -0
- package/protobufs/steam/steammessages_clientnotificationtypes.proto +242 -0
- package/protobufs/steam/steammessages_clientserver.proto +392 -0
- package/protobufs/steam/steammessages_clientserver_2.proto +771 -0
- package/protobufs/steam/steammessages_clientserver_appinfo.proto +131 -0
- package/protobufs/steam/steammessages_clientserver_friends.proto +260 -0
- package/protobufs/steam/steammessages_clientserver_gameservers.proto +159 -0
- package/protobufs/steam/steammessages_clientserver_lbs.proto +70 -0
- package/protobufs/steam/steammessages_clientserver_login.proto +167 -0
- package/protobufs/steam/steammessages_clientserver_mms.proto +228 -0
- package/protobufs/steam/steammessages_clientserver_ucm.proto +206 -0
- package/protobufs/steam/steammessages_clientserver_uds.proto +125 -0
- package/protobufs/steam/steammessages_clientserver_ufs.proto +172 -0
- package/protobufs/steam/steammessages_clientserver_userstats.proto +80 -0
- package/protobufs/steam/steammessages_clientsettings.proto +184 -0
- package/protobufs/steam/steammessages_cloud.steamclient.proto +422 -0
- package/protobufs/steam/steammessages_contentsystem.steamclient.proto +123 -0
- package/protobufs/steam/steammessages_credentials.steamclient.proto +96 -0
- package/protobufs/steam/steammessages_datapublisher.steamclient.proto +102 -0
- package/protobufs/steam/steammessages_depotbuilder.steamclient.proto +99 -0
- package/protobufs/steam/steammessages_deviceauth.steamclient.proto +169 -0
- package/protobufs/steam/steammessages_econ.steamclient.proto +137 -0
- package/protobufs/steam/steammessages_familygroups.steamclient.proto +389 -0
- package/protobufs/steam/steammessages_friendmessages.steamclient.proto +141 -0
- package/protobufs/steam/steammessages_gamenetworking.steamclient.proto +25 -0
- package/protobufs/steam/steammessages_gamenetworkingui.proto +61 -0
- package/protobufs/steam/steammessages_gamenotifications.steamclient.proto +131 -0
- package/protobufs/steam/steammessages_gameservers.steamclient.proto +136 -0
- package/protobufs/steam/steammessages_hiddevices.proto +157 -0
- package/protobufs/steam/steammessages_inventory.steamclient.proto +172 -0
- package/protobufs/steam/steammessages_linkfilter.steamclient.proto +39 -0
- package/protobufs/steam/steammessages_lobbymatchmaking.steamclient.proto +29 -0
- package/protobufs/steam/steammessages_market.steamclient.proto +22 -0
- package/protobufs/steam/steammessages_marketingmessages.steamclient.proto +264 -0
- package/protobufs/steam/steammessages_offline.steamclient.proto +33 -0
- package/protobufs/steam/steammessages_parental.steamclient.proto +260 -0
- package/protobufs/steam/steammessages_parties.steamclient.proto +75 -0
- package/protobufs/steam/steammessages_partnerapps.steamclient.proto +106 -0
- package/protobufs/steam/steammessages_player.steamclient.proto +897 -0
- package/protobufs/steam/steammessages_publishedfile.steamclient.proto +734 -0
- package/protobufs/steam/steammessages_qms.steamclient.proto +111 -0
- package/protobufs/steam/steammessages_remoteclient.proto +99 -0
- package/protobufs/steam/steammessages_remoteclient_discovery.proto +243 -0
- package/protobufs/steam/steammessages_remoteclient_service.steamclient.proto +31 -0
- package/protobufs/steam/steammessages_remoteclient_service_messages.proto +217 -0
- package/protobufs/steam/steammessages_remoteplay.proto +976 -0
- package/protobufs/steam/steammessages_secrets.steamclient.proto +35 -0
- package/protobufs/steam/steammessages_shader.steamclient.proto +89 -0
- package/protobufs/steam/steammessages_site_license.steamclient.proto +103 -0
- package/protobufs/steam/steammessages_sitelicenseclient.proto +38 -0
- package/protobufs/steam/steammessages_siteserverui.proto +130 -0
- package/protobufs/steam/steammessages_star.steamclient.proto +60 -0
- package/protobufs/steam/steammessages_steamtv.steamclient.proto +533 -0
- package/protobufs/steam/steammessages_store.steamclient.proto +404 -0
- package/protobufs/steam/steammessages_storebrowse.steamclient.proto +430 -0
- package/protobufs/steam/steammessages_timedtrial.steamclient.proto +40 -0
- package/protobufs/steam/steammessages_twofactor.steamclient.proto +157 -0
- package/protobufs/steam/steammessages_unified_base.steamclient.proto +33 -0
- package/protobufs/steam/steammessages_unified_test.steamclient.proto +51 -0
- package/protobufs/steam/steammessages_useraccount.steamclient.proto +207 -0
- package/protobufs/steam/steammessages_vac.steamclient.proto +37 -0
- package/protobufs/steam/steammessages_video.steamclient.proto +68 -0
- package/protobufs/steam/steammessages_virtualcontroller.proto +138 -0
- package/protobufs/steam/steammessages_workshop.steamclient.proto +19 -0
- package/protobufs/steam/steamnetworkingsockets_messages.proto +205 -0
- package/protobufs/steam/steamnetworkingsockets_messages_certs.proto +39 -0
- package/protobufs/steam/steamnetworkingsockets_messages_udp.proto +75 -0
- package/protobufs/steam/webuimessages_achievements.proto +29 -0
- package/protobufs/steam/webuimessages_base.proto +24 -0
- package/protobufs/steam/webuimessages_gamenotes.proto +21 -0
- package/protobufs/steam/webuimessages_gamescope.proto +54 -0
- package/protobufs/steam/webuimessages_steamengine.proto +41 -0
- package/protobufs/steam/webuimessages_steamos.proto +114 -0
- package/protobufs/steam/webuimessages_storagedevicemanager.proto +110 -0
- package/protobufs/steam/webuimessages_systemmanager.proto +17 -0
- package/protobufs/steam/webuimessages_transport.proto +18 -0
- package/protobufs/steam/webuimessages_transportvalidation.proto +111 -0
- package/protobufs/tf2/base_gcmessages.proto +561 -0
- package/protobufs/tf2/econ_gcmessages.proto +368 -0
- package/protobufs/tf2/gcsdk_gcmessages.proto +186 -0
- package/protobufs/tf2/gcsystemmsgs.proto +178 -0
- package/protobufs/tf2/steamdatagram_auth_messages.proto +50 -0
- package/protobufs/tf2/steamdatagram_messages.proto +598 -0
- package/protobufs/tf2/steamdatagram_messages_auth.proto +65 -0
- package/protobufs/tf2/steamdatagram_messages_sdr.proto +518 -0
- package/protobufs/tf2/steammessages.proto +577 -0
- package/protobufs/tf2/steammessages_gamenetworkingui.proto +42 -0
- package/protobufs/tf2/steamnetworkingsockets_messages.proto +204 -0
- package/protobufs/tf2/steamnetworkingsockets_messages_certs.proto +38 -0
- package/protobufs/tf2/steamnetworkingsockets_messages_udp.proto +75 -0
- package/protobufs/tf2/tf_gcmessages.proto +1624 -0
- package/protobufs/tf2/tf_proto_def_messages.proto +598 -0
- package/protobufs/underlords/base_gcmessages.proto +532 -0
- package/protobufs/underlords/c_peer2peer_netmessages.proto +57 -0
- package/protobufs/underlords/clientmessages.proto +51 -0
- package/protobufs/underlords/connectionless_netmessages.proto +21 -0
- package/protobufs/underlords/dac_gamemessages.proto +1376 -0
- package/protobufs/underlords/dac_gcmessages_client.proto +1518 -0
- package/protobufs/underlords/dac_gcmessages_common.proto +377 -0
- package/protobufs/underlords/dac_gcmessages_server.proto +417 -0
- package/protobufs/underlords/demo.proto +149 -0
- package/protobufs/underlords/econ_gcmessages.proto +1063 -0
- package/protobufs/underlords/econ_shared_enums.proto +47 -0
- package/protobufs/underlords/enums_clientserver.proto +1538 -0
- package/protobufs/underlords/gameevents.proto +121 -0
- package/protobufs/underlords/gametoolevents.proto +78 -0
- package/protobufs/underlords/gcsdk_gcmessages.proto +448 -0
- package/protobufs/underlords/gcsystemmsgs.proto +29 -0
- package/protobufs/underlords/netmessages.proto +553 -0
- package/protobufs/underlords/network_connection.proto +117 -0
- package/protobufs/underlords/networkbasetypes.proto +219 -0
- package/protobufs/underlords/networksystem_protomessages.proto +19 -0
- package/protobufs/underlords/steamdatagram_messages_auth.proto +64 -0
- package/protobufs/underlords/steamdatagram_messages_sdr.proto +482 -0
- package/protobufs/underlords/steammessages.proto +701 -0
- package/protobufs/underlords/steammessages_base.proto +243 -0
- package/protobufs/underlords/steammessages_clientserver_login.proto +155 -0
- package/protobufs/underlords/steammessages_cloud.steamworkssdk.proto +68 -0
- package/protobufs/underlords/steammessages_helprequest.steamworkssdk.proto +22 -0
- package/protobufs/underlords/steammessages_oauth.steamworkssdk.proto +18 -0
- package/protobufs/underlords/steammessages_player.steamworkssdk.proto +254 -0
- package/protobufs/underlords/steammessages_publishedfile.steamworkssdk.proto +233 -0
- package/protobufs/underlords/steammessages_unified_base.steamworkssdk.proto +30 -0
- package/protobufs/underlords/steamnetworkingsockets_messages.proto +165 -0
- package/protobufs/underlords/steamnetworkingsockets_messages_certs.proto +38 -0
- package/protobufs/underlords/steamnetworkingsockets_messages_udp.proto +74 -0
- package/protobufs/underlords/te.proto +259 -0
- package/protobufs/underlords/uifontfile_format.proto +16 -0
- package/protobufs/underlords/usermessages.proto +511 -0
- package/protobufs/underlords/valveextensions.proto +11 -0
- package/protobufs/update.sh +13 -0
- package/protobufs/webui/common.proto +3998 -0
- package/protobufs/webui/common_base.proto +27 -0
- package/protobufs/webui/service_accountcart.proto +153 -0
- package/protobufs/webui/service_accountlinking.proto +27 -0
- package/protobufs/webui/service_accountprivacy.proto +42 -0
- package/protobufs/webui/service_accountprivateapps.proto +34 -0
- package/protobufs/webui/service_auction.proto +97 -0
- package/protobufs/webui/service_authentication.proto +222 -0
- package/protobufs/webui/service_authenticationsupport.proto +74 -0
- package/protobufs/webui/service_broadcast.proto +562 -0
- package/protobufs/webui/service_chat.proto +11 -0
- package/protobufs/webui/service_chatroom.proto +810 -0
- package/protobufs/webui/service_chatusability.proto +107 -0
- package/protobufs/webui/service_checkout.proto +83 -0
- package/protobufs/webui/service_clan.proto +41 -0
- package/protobufs/webui/service_clanchatrooms.proto +25 -0
- package/protobufs/webui/service_clanfaqs.proto +202 -0
- package/protobufs/webui/service_clientcomm.proto +151 -0
- package/protobufs/webui/service_clientmetrics.proto +22 -0
- package/protobufs/webui/service_cloud.proto +222 -0
- package/protobufs/webui/service_cloudconfigstore.proto +51 -0
- package/protobufs/webui/service_cloudgaming.proto +30 -0
- package/protobufs/webui/service_community.proto +365 -0
- package/protobufs/webui/service_dailydeal.proto +66 -0
- package/protobufs/webui/service_econ.proto +134 -0
- package/protobufs/webui/service_embedded.proto +24 -0
- package/protobufs/webui/service_experimentservice.proto +6 -0
- package/protobufs/webui/service_familygroups.proto +329 -0
- package/protobufs/webui/service_fovasvideo.proto +15 -0
- package/protobufs/webui/service_friendmessages.proto +133 -0
- package/protobufs/webui/service_friendslist.proto +70 -0
- package/protobufs/webui/service_gamenotes.proto +15 -0
- package/protobufs/webui/service_gamerecording.proto +259 -0
- package/protobufs/webui/service_gamerecordingclip.proto +83 -0
- package/protobufs/webui/service_gamerecordingdebug.proto +52 -0
- package/protobufs/webui/service_helprequestlogs.proto +16 -0
- package/protobufs/webui/service_loyaltyrewards.proto +252 -0
- package/protobufs/webui/service_marketingmessages.proto +215 -0
- package/protobufs/webui/service_mobileapp.proto +18 -0
- package/protobufs/webui/service_mobileauth.proto +24 -0
- package/protobufs/webui/service_mobiledevice.proto +26 -0
- package/protobufs/webui/service_mobileperaccount.proto +31 -0
- package/protobufs/webui/service_news.proto +110 -0
- package/protobufs/webui/service_parental.proto +256 -0
- package/protobufs/webui/service_partnermembershipinvite.proto +34 -0
- package/protobufs/webui/service_partnerstorebrowse.proto +28 -0
- package/protobufs/webui/service_phone.proto +51 -0
- package/protobufs/webui/service_physicalgoods.proto +15 -0
- package/protobufs/webui/service_player.proto +917 -0
- package/protobufs/webui/service_promotioneventinvites.proto +109 -0
- package/protobufs/webui/service_promotionplanning.proto +172 -0
- package/protobufs/webui/service_publishedfile.proto +711 -0
- package/protobufs/webui/service_publishing.proto +183 -0
- package/protobufs/webui/service_quest.proto +127 -0
- package/protobufs/webui/service_salefeature.proto +357 -0
- package/protobufs/webui/service_saleitemrewards.proto +54 -0
- package/protobufs/webui/service_shoppingcart.proto +152 -0
- package/protobufs/webui/service_steamawards.proto +76 -0
- package/protobufs/webui/service_steamcharts.proto +75 -0
- package/protobufs/webui/service_steamengine.proto +36 -0
- package/protobufs/webui/service_steamlearn.proto +780 -0
- package/protobufs/webui/service_steamnotification.proto +73 -0
- package/protobufs/webui/service_steamtv.proto +495 -0
- package/protobufs/webui/service_steamvrvoicechat.proto +67 -0
- package/protobufs/webui/service_steamvrwebrtc.proto +48 -0
- package/protobufs/webui/service_storagedevicemanager.proto +104 -0
- package/protobufs/webui/service_store.proto +359 -0
- package/protobufs/webui/service_storeappsimilarity.proto +76 -0
- package/protobufs/webui/service_storebrowse.proto +102 -0
- package/protobufs/webui/service_storemarketing.proto +41 -0
- package/protobufs/webui/service_storequery.proto +103 -0
- package/protobufs/webui/service_storesales.proto +87 -0
- package/protobufs/webui/service_storetopsellers.proto +44 -0
- package/protobufs/webui/service_systemmanager.proto +11 -0
- package/protobufs/webui/service_test_transporterror.proto +6 -0
- package/protobufs/webui/service_transportauth.proto +12 -0
- package/protobufs/webui/service_transportvalidation.proto +69 -0
- package/protobufs/webui/service_twofactor.proto +170 -0
- package/protobufs/webui/service_useraccount.proto +138 -0
- package/protobufs/webui/service_usergameactivity.proto +34 -0
- package/protobufs/webui/service_usergamenotes.proto +70 -0
- package/protobufs/webui/service_usernews.proto +68 -0
- package/protobufs/webui/service_userreviews.proto +96 -0
- package/protobufs/webui/service_video.proto +50 -0
- package/protobufs/webui/service_videoclip.proto +48 -0
- package/protobufs/webui/service_voicechat.proto +139 -0
- package/protobufs/webui/service_webrtc.proto +52 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created
|
|
2
|
+
# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages
|
|
3
|
+
|
|
4
|
+
name: Node.js Package
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
release:
|
|
8
|
+
types: [created]
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
build:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v3
|
|
15
|
+
- uses: actions/setup-node@v3
|
|
16
|
+
with:
|
|
17
|
+
node-version: 16
|
|
18
|
+
- run: npm ci
|
|
19
|
+
- run: npm test
|
|
20
|
+
|
|
21
|
+
publish-gpr:
|
|
22
|
+
needs: build
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
permissions:
|
|
25
|
+
contents: read
|
|
26
|
+
packages: write
|
|
27
|
+
steps:
|
|
28
|
+
- uses: actions/checkout@v3
|
|
29
|
+
- uses: actions/setup-node@v3
|
|
30
|
+
with:
|
|
31
|
+
node-version: 16
|
|
32
|
+
registry-url: https://npm.pkg.github.com/
|
|
33
|
+
- run: npm ci
|
|
34
|
+
- run: npm publish
|
|
35
|
+
env:
|
|
36
|
+
NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
package/README.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# The Exploit
|
|
2
|
+
This exploit relies on the [game:loc](https://github.com/imhunterand/cs2-exploit/blob/main/helpers/Lobby.js#L260) metadata key, which when set to a length greater than `2^15` or `32768` and a client is invited, an out of bounds memory write is triggered, leading to an Access Violation/Segmentation Fault which ultimately crashes the CS:GO client.
|
|
3
|
+
This XML file includes a Javascript file (`panorama/scripts/friendlobby.js`) that populates the fields such as the lobby members' avatars, the gamemode, the average lobby rank, and most importantly, the lobby location.
|
|
4
|
+
```js
|
|
5
|
+
var _SetFlag = function ( elTile )
|
|
6
|
+
{
|
|
7
|
+
var countryCode = PartyBrowserAPI.GetPartySessionSetting( _m_xuid, 'game/loc' );
|
|
8
|
+
var elFlagImg = elTile.FindChildTraverse( 'JsFriendLobbyFlag' );
|
|
9
|
+
if ( countryCode )
|
|
10
|
+
{
|
|
11
|
+
elFlagImg.SetImage( 'file://{images}/flags/'+ countryCode +'.png' );
|
|
12
|
+
elFlagImg.RemoveClass( 'hidden' );
|
|
13
|
+
}
|
|
14
|
+
else
|
|
15
|
+
{
|
|
16
|
+
elFlagImg.AddClass( 'hidden' );
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
```
|
|
20
|
+
The hash function attempted to call the Clang `memset` function and write the parsed filepath to another area of memory without validating the size of the source data. This is called an `Out-of-bounds Write`.
|
|
21
|
+
Initially, I had attempted to escalate this vulnerability to an RCE or remote code execution since the Valve bug bounty program would consider a client crasher out of scope. After contacting many friends who were much better than I was at reverse engineering, it was concluded that the most that could be achieved with this exploit was Denial of Service.
|
|
22
|
+
|
|
23
|
+
## Credits
|
|
24
|
+
- Thanks to @imhunterand for finding the crash method
|
|
25
|
+
- Thanks to the @pwn0sec CSE Team for being our test subjects
|
package/config.json
ADDED
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
const Events = require("events");
|
|
2
|
+
const ByteBuffer = require("bytebuffer");
|
|
3
|
+
const Protos = require("./Protos.js");
|
|
4
|
+
|
|
5
|
+
module.exports = class Coordinator extends Events {
|
|
6
|
+
constructor(steamUser) {
|
|
7
|
+
super();
|
|
8
|
+
|
|
9
|
+
this.steamUser = steamUser;
|
|
10
|
+
this.Protos = Protos([
|
|
11
|
+
{
|
|
12
|
+
name: "csgo",
|
|
13
|
+
protos: [
|
|
14
|
+
__dirname + "/../protobufs/csgo/gcsystemmsgs.proto",
|
|
15
|
+
__dirname + "/../protobufs/csgo/gcsdk_gcmessages.proto",
|
|
16
|
+
__dirname + "/../protobufs/csgo/cstrike15_gcmessages.proto"
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
name: "steam",
|
|
21
|
+
protos: [
|
|
22
|
+
__dirname + "/../protobufs/steam/steammessages_base.proto",
|
|
23
|
+
__dirname + "/../protobufs/steam/steammessages_clientserver_2.proto",
|
|
24
|
+
__dirname + "/../protobufs/steam/steammessages_clientserver.proto",
|
|
25
|
+
__dirname + "/../protobufs/steam/steammessages_clientserver_friends.proto"
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
]);
|
|
29
|
+
|
|
30
|
+
steamUser.on("receivedFromGC", (appid, msgType, payload) => {
|
|
31
|
+
if (appid !== 730) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
this.emit("receivedFromGC", msgType, payload);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
let _handleMessage = this.steamUser._handleMessage;
|
|
39
|
+
this.steamUser._handleMessage = (header, body) => {
|
|
40
|
+
_handleMessage.call(this.steamUser, header, body);
|
|
41
|
+
|
|
42
|
+
this.emit("receivedFromSteam", header, body);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Send a message and get the response from it if needed
|
|
48
|
+
* @param {Number|undefined} appid AppID where to send the GC message to - Pass "undefined" for customized proto
|
|
49
|
+
* @param {Number} header The identifier of the message we are sending
|
|
50
|
+
* @param {Object} proto Header proto
|
|
51
|
+
* @param {Constructor|undefined} protobuf Constructor to create the buffer with settings. If "undefined" then "settings" HAS to be a buffer
|
|
52
|
+
* @param {Object} settings Settings to combine with the protobuf to construct the buffer
|
|
53
|
+
* @param {Number|undefined} responseHeader The response header to our request
|
|
54
|
+
* @param {Object|undefined} responseProtobuf Will automatically append ".decode()": Function which will be used to decode the protobuf. If "undefined" will not decode response and resolve with the raw buffer of the response
|
|
55
|
+
* @param {Number} timeout Max number of milliseconds before we give up on waiting for our response
|
|
56
|
+
* @returns {Promise} Promise which resolves in the object of our response, or undefined if "responseHeader" is undefined or rejects in a timeout error
|
|
57
|
+
*/
|
|
58
|
+
sendMessage(appid, header, proto, protobuf, settings, responseHeader, responseProtobuf, timeout = 30000) {
|
|
59
|
+
return new Promise((resolve, reject) => {
|
|
60
|
+
if (!appid) {
|
|
61
|
+
let encoded = settings;
|
|
62
|
+
if (protobuf) {
|
|
63
|
+
let message = protobuf.create(settings);
|
|
64
|
+
encoded = protobuf.encode(message);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
this.steamUser._send({
|
|
68
|
+
msg: header,
|
|
69
|
+
proto: proto
|
|
70
|
+
}, protobuf ? encoded.finish() : encoded);
|
|
71
|
+
|
|
72
|
+
if (!responseHeader) {
|
|
73
|
+
resolve();
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
let sendTimeout = setTimeout(() => {
|
|
78
|
+
if (this.steamUser._handlerManager._handlers[responseHeader] && this.steamUser._handlerManager._handlers[responseHeader].length > 0) {
|
|
79
|
+
this.steamUser._handlerManager._handlers[responseHeader].pop(); // We added our message last (I assume) so remove the last one
|
|
80
|
+
|
|
81
|
+
if (this.steamUser._handlerManager._handlers[responseHeader].length <= 0) {
|
|
82
|
+
delete this.steamUser._handlerManager._handlers[responseHeader];
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
reject(new Error("Failed to send message: Timeout"));
|
|
87
|
+
}, timeout);
|
|
88
|
+
|
|
89
|
+
this.steamUser._handlerManager.add(responseHeader, (body) => {
|
|
90
|
+
if (this.steamUser._handlerManager.hasHandler(responseHeader)) {
|
|
91
|
+
if (this.steamUser._handlerManager._handlers[responseHeader] && this.steamUser._handlerManager._handlers[responseHeader].length > 0) {
|
|
92
|
+
this.steamUser._handlerManager._handlers[responseHeader].pop(); // We added our message last (I assume) so remove the last one
|
|
93
|
+
|
|
94
|
+
if (this.steamUser._handlerManager._handlers[responseHeader].length <= 0) {
|
|
95
|
+
delete this.steamUser._handlerManager._handlers[responseHeader];
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
clearTimeout(sendTimeout);
|
|
101
|
+
|
|
102
|
+
if (!responseProtobuf) {
|
|
103
|
+
if (body instanceof Buffer || body instanceof ByteBuffer) {
|
|
104
|
+
resolve(body);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
resolve(body);
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
if (body instanceof Buffer || body instanceof ByteBuffer) {
|
|
113
|
+
body = responseProtobuf.decode(body.toBuffer());
|
|
114
|
+
body = responseProtobuf.toObject(body, { defaults: true });
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
resolve(body);
|
|
118
|
+
});
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
let encoded = settings;
|
|
123
|
+
if (protobuf) {
|
|
124
|
+
let message = protobuf.create(settings);
|
|
125
|
+
encoded = protobuf.encode(message);
|
|
126
|
+
}
|
|
127
|
+
this.steamUser.sendToGC(appid, header, proto, protobuf ? encoded.finish() : encoded);
|
|
128
|
+
|
|
129
|
+
if (!responseHeader) {
|
|
130
|
+
resolve();
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
let sendTimeout = setTimeout(() => {
|
|
135
|
+
this.removeListener("receivedFromGC", sendMessageResponse);
|
|
136
|
+
reject(new Error("Failed to send message: Timeout"));
|
|
137
|
+
}, timeout);
|
|
138
|
+
|
|
139
|
+
this.on("receivedFromGC", sendMessageResponse);
|
|
140
|
+
function sendMessageResponse(msgType, payload) {
|
|
141
|
+
if (msgType === responseHeader) {
|
|
142
|
+
clearTimeout(sendTimeout);
|
|
143
|
+
this.removeListener("receivedFromGC", sendMessageResponse);
|
|
144
|
+
|
|
145
|
+
if (!responseProtobuf) {
|
|
146
|
+
resolve(payload);
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
let msg = responseProtobuf.decode(payload);
|
|
151
|
+
msg = responseProtobuf.toObject(msg, { defaults: true });
|
|
152
|
+
resolve(msg);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
const SteamUser = require("steam-user");
|
|
2
|
+
const SteamID = require("steamid");
|
|
3
|
+
const unzipper = require("unzipper");
|
|
4
|
+
const path = require("path");
|
|
5
|
+
const fs = require("fs");
|
|
6
|
+
const request = require("request");
|
|
7
|
+
const Coordinator = require("./Coordinator.js");
|
|
8
|
+
|
|
9
|
+
module.exports = class Helper {
|
|
10
|
+
static decodeUids(input) {
|
|
11
|
+
let bytes = [];
|
|
12
|
+
|
|
13
|
+
let byte = input.readUint8();
|
|
14
|
+
while (byte !== 0x00) {
|
|
15
|
+
bytes.push(byte);
|
|
16
|
+
byte = input.readUint8();
|
|
17
|
+
}
|
|
18
|
+
bytes.push(0);
|
|
19
|
+
|
|
20
|
+
let b = Buffer.from(bytes);
|
|
21
|
+
let results = [];
|
|
22
|
+
let position = 0;
|
|
23
|
+
|
|
24
|
+
while (position < b.length) {
|
|
25
|
+
let lookahead = 0;
|
|
26
|
+
let token = b.readInt8(position);
|
|
27
|
+
let backup = token;
|
|
28
|
+
let v5 = 0;
|
|
29
|
+
let v7 = 0;
|
|
30
|
+
let v9 = 0;
|
|
31
|
+
|
|
32
|
+
do {
|
|
33
|
+
backup = token;
|
|
34
|
+
lookahead += 1;
|
|
35
|
+
v9 = (token & 0x7F) << v7;
|
|
36
|
+
v7 += 7;
|
|
37
|
+
v5 |= v9;
|
|
38
|
+
|
|
39
|
+
if (token === 0 || backup >= 0) {
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
token = b.readInt8(position + lookahead);
|
|
44
|
+
} while (v7 < 35);
|
|
45
|
+
|
|
46
|
+
if (backup < 0) {
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
position += lookahead;
|
|
51
|
+
|
|
52
|
+
if (v5 === 0) {
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
results.push(SteamID.fromIndividualAccountID(v5));
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return results;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
static encodeUids(steamids) {
|
|
63
|
+
let outputBuffer = [];
|
|
64
|
+
|
|
65
|
+
for (let id of steamids.map(s => s.accountid)) {
|
|
66
|
+
while (id > 0x7F) {
|
|
67
|
+
outputBuffer.push((id | 0x80) & 0xFF);
|
|
68
|
+
id >>= 7;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
outputBuffer.push(id);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
outputBuffer.push(0x00);
|
|
75
|
+
|
|
76
|
+
return Buffer.from(outputBuffer);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
static IPStrToInt(ipString) {
|
|
80
|
+
let buf = Buffer.alloc(4);
|
|
81
|
+
let octets = ipString.split(".");
|
|
82
|
+
|
|
83
|
+
for (let i = 0; i < 4; i++) {
|
|
84
|
+
buf[i] = parseInt(octets[i], 10);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return buf.readUInt32BE(0);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
static deleteRecursive(dir) {
|
|
91
|
+
return new Promise((resolve, reject) => {
|
|
92
|
+
fs.readdir(dir, async (err, files) => {
|
|
93
|
+
if (err) {
|
|
94
|
+
reject(err);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
for (let file of files) {
|
|
99
|
+
let filePath = path.join(dir, file);
|
|
100
|
+
let stat = fs.statSync(filePath);
|
|
101
|
+
|
|
102
|
+
if (stat.isDirectory()) {
|
|
103
|
+
await this.deleteRecursive(filePath);
|
|
104
|
+
} else {
|
|
105
|
+
await new Promise((res, rej) => {
|
|
106
|
+
fs.unlink(filePath, (err) => {
|
|
107
|
+
if (err) {
|
|
108
|
+
rej(err);
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
res();
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
fs.rmdir(dir, (err) => {
|
|
119
|
+
if (err) {
|
|
120
|
+
reject(err);
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
resolve();
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
static downloadProtobufs(dir) {
|
|
131
|
+
return new Promise(async (resolve, reject) => {
|
|
132
|
+
let newProDir = path.join(dir, "Protobufs-master");
|
|
133
|
+
if (fs.existsSync(newProDir)) {
|
|
134
|
+
await this.deleteRecursive(newProDir);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// Yes I know the ones I download here are technically not the same as the ones in the submodule
|
|
138
|
+
// but that doesn't really matter, I doubt Valve will do any major changes with the protobufs I use here anyways
|
|
139
|
+
let r = request("https://github.com/SteamDatabase/Protobufs/archive/master.zip");
|
|
140
|
+
let pipe = r.pipe(unzipper.Extract({ path: dir }));
|
|
141
|
+
pipe.on("close", async () => {
|
|
142
|
+
let proDir = path.join(dir, "protobufs");
|
|
143
|
+
if (fs.existsSync(proDir)) {
|
|
144
|
+
await this.deleteRecursive(proDir);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
fs.rename(newProDir, proDir, (err) => {
|
|
148
|
+
if (err) {
|
|
149
|
+
reject(err);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
resolve();
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
pipe.on("error", reject);
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
static verifyProtobufs() {
|
|
161
|
+
let user = new SteamUser();
|
|
162
|
+
let coord = new Coordinator(user);
|
|
163
|
+
|
|
164
|
+
try {
|
|
165
|
+
return typeof coord.Protos.csgo.EGCBaseClientMsg.k_EMsgGCClientHello === "number";
|
|
166
|
+
} catch (e) {
|
|
167
|
+
return false;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
}
|