Cookbook:Accessing CD Key Hash

From BF2 Technical Information Wiki
(Redirected from Scripts:playerData)
Jump to: navigation, search

Contents

Problem

You want to access the CD Key Hashes for players in a game from within a Python script.


Solution

Use the host.rcon_invoke method to send the admin.listPlayers command to the game engine; then use a regular expression to parse the resulting table.

  import re
  
  def playerData():
      '''Returns a dictionary containing player data; dictionary keys are
         playerIDs, values are 4-element tuples, containing player name,
         IP address, IP port, and cd-key hash.'''
      
      rawData = host.rcon_invoke("admin.listplayers")
      
      pattern = re.compile(r'''^Id:\ +(\d+)                              # PlayerID
                               \ -\ (\S+)                                # Player Name
                               \ is\ remote\ ip:\ (\d+\.\d+\.\d+\.\d+):  # IP Address
                               (\d+)                                     # Port Number
                               (?:.*hash:\ (\w{32}))?                    # CD Key Hash
                            ''', re.DOTALL | re.MULTILINE | re.VERBOSE)
      
      result = {}
      for player in pattern.findall(rawData):
          result[int(player[0])] = player[1:]
      
      return result


Discussion

This function packages the parsed data into a dictionary keyed by Player ID for easy access.

A simple example of how you would use this function:

 # print a list of player names, IP addresses, and CD key hashes:
 
 info = playerData()
 for playerID in info:
     print info[playerID][0], info[playerID][1], info[playerID][3]

In principle you could do the same sort of thing with the pb_sv_plist command to retrieve each player's PunkBuster GUID. Unfortunately, there is a bug/"unimplemented feature" in BF2, the result of which is that Python and RCon clients never get any output from PunkBuster commands.

If you need to convert CD keys into key hashes, check out keyHash or BF2_Key_Hasher.


Submitted By

--Woody

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox