DB:Auth:account 548

From Project Skyfire
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Back to auth database list of tables.


The `account` table

This table holds information on all available accounts.


Structure

Field Type Attributes Key Null Default Extra Comment
id int(10) unsigned PRI NO Auto increment Identifier
username varchar(32) signed UNI NO "
sha_pass_hash varchar(40) signed NO "
sessionkey varchar(80) signed NO "
v varchar(64) signed NO "
s varchar(64) signed NO "
token_key varchar(100) signed NO "
email varchar(254) signed NO "
reg_email varchar(254) signed NO "
joindate timestamp signed NO CURRENT_TIMESTAMP
last_ip varchar(15) signed NO 127.0.0.1
failed_logins int(10) unsigned NO 0
locked tinyint(3) unsigned NO 0
lock_country varchar(2) unsigned NO 00
last_login timestamp signed NO 0000-00-00 00:00:00
online tinyint(3) signed NO 0
expansion tinyint(3) unsigned NO 2
mutetime bigint(20) signed NO 0
mutereason varchar(255) signed NO
muteby varchar(50) signed NO
locale tinyint(3) unsigned NO 0
os varchar(3) signed NO "
recruiter int(10) unsigned NO 0
hasBoost tinyint unsigned NO 0


DB Structure

CREATE TABLE `account` (
	`id` INT NOT NULL AUTO_INCREMENT COMMENT 'Identifier',
	`username` VARCHAR(32) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',
	`sha_pass_hash` VARCHAR(40) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',
	`sessionkey` VARCHAR(80) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',
	`v` VARCHAR(64) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',
	`s` VARCHAR(64) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',
	`token_key` VARCHAR(100) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',
	`email` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',
	`reg_mail` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',
	`joindate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
	`last_ip` VARCHAR(15) NOT NULL DEFAULT '127.0.0.1' COLLATE 'utf8_general_ci',
	`failed_logins` INT NOT NULL DEFAULT '0',
	`locked` TINYINT NOT NULL DEFAULT '0',
	`lock_country` VARCHAR(2) NOT NULL DEFAULT '00' COLLATE 'utf8_general_ci',
	`last_login` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
	`online` TINYINT NOT NULL DEFAULT '0',
	`expansion` TINYINT NOT NULL DEFAULT '4',
	`mutetime` BIGINT NOT NULL DEFAULT '0',
	`mutereason` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',
	`muteby` VARCHAR(50) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',
	`locale` TINYINT NOT NULL DEFAULT '0',
	`os` VARCHAR(3) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',
	`recruiter` INT NOT NULL DEFAULT '0',
	`hasBoost` TINYINT NOT NULL DEFAULT '0',
	PRIMARY KEY (`id`) USING BTREE,
	UNIQUE INDEX `idx_username` (`username`) USING BTREE
)
COMMENT='Account System'
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;


Description of the fields

id

The unique account ID.

username

The account user name.

sha_pass_hash

This field contains the encrypted password. The encryption is SHA1 and is in the following format: username:password. The SQL to create the password (or to compare with the current hash) is:

SELECT SHA1(CONCAT(UPPER(`username`), ':', UPPER(<pass>)));

sessionkey

This field has no description. You can help wiki by clicking here to describe this field, if you have permissions.

v

v is derived from salt, as well as the user's username (all uppercase) and their password (all uppercase).

To obtain the verifier you need to calculate:

   Calculate h1 = SHA1("USERNAME:PASSWORD"), substituting the user's username and password converted to uppercase.
   Calculate h2 = SHA1(salt || h1), where || is concatenation (the . operator in PHP).

NOTE: Both salt and h1 are binary, not hexadecimal strings!

   Treat h2 as an integer in little-endian order (the first byte is the least significant).
   Calculate (g ^ h2) % N.

NOTE: g and N are parameters, which are fixed in the WoW implementation.

g = 7

N = 0x894B645E89E1535BBDAD5B8B290650530801B18EBFBF5E8FAB3C82872A3E9BB7

   Convert the result back to a byte array in little-endian order.

s

s is a cryptographically random 32-byte value.

token_key

This field has no description. You can help wiki by clicking here to describe this field, if you have permissions.

email

The e-mail address associated with this account.

reg_email

The registration e-mail address associated with this account.

joindate

The date when the account was created.

last_ip

The last IP used by the person who logged in the account.

failed_logins

The number of failed logins attempted on the account.

locked

Boolean 0 or 1 controlling if the account has been locked or not. This can be controlled with the ".account lock" GM command. If locked (1), the user can only log in with their last_ip. If unlocked (0), a user can log in from any IP, and their last_ip will be updated if it is different. ".Ban account" does not lock it.

lock_country

This field has no description. You can help wiki by clicking here to describe this field, if you have permissions.

last_login

The date when the account was last logged into.

online

Boolean 0 or 1 controlling if the account is currently logged in and online.

expansion

Boolean 0 or 1 controlling if the client logged in on the account has any expansions. (for example if client is TBC, but expansion is set to 0, it will not be able to enter outlands and etc.)

mutetime

The time, in Unix time, when the account will be unmuted. To see when mute will be expired you can use this query:

SELECT FROM_UNIXTIME(`mutetime`);

mutereason

The reason for the mute.

muteby

The character name with the rights to the .mute command that give the mute.

locale

The locale used by the client logged into this account. If multiple locale data has been configured and added to the world servers, the world servers will return the proper locale strings to the client. See localization IDs

os

Stores information about client's OS. Used by Warden system.

  • Win
  • Mac

recruiter

The account ID of another account. Used for recuit-a-friend system. See account.id

hasBoost

This field has no description. You can help wiki by clicking here to describe this field, if you have permissions.