Sha256: 4803662b3cc8d728570a823753e78568de94b3df86be9ad86d3c78ecc3f5190b

Contents?: true

Size: 1010 Bytes

Versions: 3

Compression:

Stored size: 1010 Bytes

Contents

# A {Metasploit::Credential::PasswordHash password hash} that can be {Metasploit::Credential::ReplayableHash replayed}
# to authenticate to PostgreSQL servers. It is composed of a hexadecimal string of 32 charachters prepended by the string
# 'md5'
class Metasploit::Credential::PostgresMD5 < Metasploit::Credential::ReplayableHash
  #
  # CONSTANTS
  #

  # Valid format for {Metasploit::Credential::Private#data}
  DATA_REGEXP = /md5([a-f0-9]{32})/

  #
  # Callbacks
  #

  if ActiveRecord::VERSION::MAJOR >= 7 && ActiveRecord::VERSION::MINOR >= 1
    serialize :data, coder: Metasploit::Credential::CaseInsensitiveSerializer
  else
    serialize :data, Metasploit::Credential::CaseInsensitiveSerializer
  end
  validates_uniqueness_of :data, :case_sensitive => false

  #
  # Validations
  #

  validate :data_format

  private

  def data_format
    unless DATA_REGEXP.match(data)
      errors.add(:data, 'is not in Postgres MD5 Hash format')
    end
  end

  public

  Metasploit::Concern.run(self)

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
metasploit-credential-6.0.12 app/models/metasploit/credential/postgres_md5.rb
metasploit-credential-6.0.11 app/models/metasploit/credential/postgres_md5.rb
metasploit-credential-6.0.10 app/models/metasploit/credential/postgres_md5.rb