Module: Metasploit::Model::Architecture

Extended by:
ActiveModel::Naming, ActiveSupport::Concern
Includes:
Translation
Defined in:
lib/metasploit/model/architecture.rb

Overview

Code shared between Mdm::Architecture and Metasploit::Framework::Architecture.

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

ABBREVIATIONS =

Valid values for #abbreviation

[
    'armbe',
    'armle',
    'cbea',
    'cbea64',
    'cmd',
    'dalvik',
    'firefox',
    'java',
    'mipsbe',
    'mipsle',
    'nodejs',
    'php',
    'ppc',
    'ppc64',
    'python',
    'ruby',
    'sparc',
    'tty',
    'x86',
    'x86_64'
]
BITS =

Valid values for #bits.

[
    32,
    64
]
ENDIANNESSES =

Valid values for #endianness.

[
    'big',
    'little'
]
FAMILIES =

Valid values for #family.

[
    'arm',
    'cbea',
    'javascript',
    'mips',
    'ppc',
    'sparc',
    'x86'
]
SEED_ATTRIBUTES =

Attributes for seeds. Ensures that in-database seeds for Mdm::Architecture and in-memory seeds for Metasploit::Framework::Architecture are the same.

[
    {
        :abbreviation => 'armbe',
        :bits => 32,
        :endianness => 'big',
        :family => 'arm',
        :summary => 'Little-endian ARM'
    },
    {
        :abbreviation => 'armle',
        :bits => 32,
        :endianness => 'little',
        :family => 'arm',
        :summary => 'Big-endian ARM'
    },
    {
        :abbreviation => 'cbea',
        :bits => 32,
        :endianness => 'big',
        :family => 'cbea',
        :summary => '32-bit Cell Broadband Engine Architecture'
    },
    {
        :abbreviation => 'cbea64',
        :bits => 64,
        :endianness => 'big',
        :family => 'cbea',
        :summary => '64-bit Cell Broadband Engine Architecture'
    },
    {
        :abbreviation => 'cmd',
        :bits => nil,
        :endianness => nil,
        :family => nil,
        :summary => 'Command Injection'
    },
    {
        :abbreviation => 'dalvik',
        :bits => nil,
        :endianness => nil,
        :family => nil,
        :summary => 'Dalvik process virtual machine used in Google Android'
    },
    {
        abbreviation: 'firefox',
        bits: nil,
        endianness: nil,
        family: 'javascript',
        summary: "Firefox's privileged javascript API"
    },
    {
        :abbreviation => 'java',
        :bits => nil,
        :endianness => 'big',
        :family => nil,
        :summary => 'Java'
    },
    {
        :abbreviation => 'mipsbe',
        :bits => 32,
        :endianness => 'big',
        :family => 'mips',
        :summary => 'Big-endian MIPS'
    },
    {
        :abbreviation => 'mipsle',
        :bits => 32,
        :endianness => 'little',
        :family => 'mips',
        :summary => 'Little-endian MIPS'
    },
    {
        abbreviation: 'nodejs',
        bits: nil,
        endianness: nil,
        family: 'javascript',
        summary: 'NodeJS'
    },
    {
        :abbreviation => 'php',
        :bits => nil,
        :endianness => nil,
        :family => nil,
        :summary => 'PHP'
    },
    {
        :abbreviation => 'ppc',
        :bits => 32,
        :endianness => 'big',
        :family => 'ppc',
        :summary => '32-bit Peformance Optimization With Enhanced RISC - Performance Computing'
    },
    {
        :abbreviation => 'ppc64',
        :bits => 64,
        :endianness => 'big',
        :family => 'ppc',
        :summary => '64-bit Performance Optimization With Enhanced RISC - Performance Computing'
    },
    {
        :abbreviation => 'python',
        :bits => nil,
        :endianness => nil,
        :family => nil,
        :summary => 'Python'
    },
    {
        :abbreviation => 'ruby',
        :bits => nil,
        :endianness => nil,
        :family => nil,
        :summary => 'Ruby'
    },
    {
        :abbreviation => 'sparc',
        :bits => nil,
        :endianness => nil,
        :family => 'sparc',
        :summary => 'Scalable Processor ARChitecture'
    },
    {
        :abbreviation => 'tty',
        :bits => nil,
        :endianness => nil,
        :family => nil,
        :summary => '*nix terminal'
    },
    {
        :abbreviation => 'x86',
        :bits => 32,
        :endianness => 'little',
        :family => 'x86',
        :summary => '32-bit x86'
    },
    {
        :abbreviation => 'x86_64',
        :bits => 64,
        :endianness => 'little',
        :family => 'x86',
        :summary => '64-bit x86'
    }
]

Instance Attribute Summary collapse

Instance Attribute Details

#abbreviationString

Abbreviation used for the architecture. Will match ARCH constants in metasploit-framework.

Returns:

  • (String)


# File 'lib/metasploit/model/architecture.rb', line 316

#bits32, ...

Number of bits supported by this architecture.

Returns:

  • (32)

    if 32-bit

  • (64)

    if 64-bit

  • (nil)

    if bits aren't applicable, such as for non-CPU architectures like ruby, etc.



# File 'lib/metasploit/model/architecture.rb', line 321

#endianness'big', ...

The endianness of the architecture.

Returns:

  • ('big')

    if big endian

  • ('little')

    if little endian

  • (nil)

    if endianness is not applicable, such as for software architectures like tty.



# File 'lib/metasploit/model/architecture.rb', line 328

#familyString?

The CPU architecture family.

Returns:

  • (String)

    if a CPU architecture.

  • (nil)

    if not a CPU architecture.



# File 'lib/metasploit/model/architecture.rb', line 335

#module_instancesArray<Metasploit::Model::Module::Instance> (readonly)



# File 'lib/metasploit/model/architecture.rb', line 306

#summaryString

Sentence length summary of architecture. Usually an expansion of the abbreviation or initialism in the #abbreviation and the #bits and #endianness in prose.

Returns:

  • (String)


# File 'lib/metasploit/model/architecture.rb', line 341