Class: Rex::Post::Meterpreter::Extensions::Stdapi::Fs::FileStat

Inherits:
FileStat
  • Object
show all
Defined in:
lib/rex/post/meterpreter/extensions/stdapi/fs/file_stat.rb

Overview

This class wrappers gathering information about a given file and implements the Rex::Post::FileStat interface in terms of data acquisition.

Constant Summary collapse

@@struct_stat =
[
  'st_dev',     4,  # 0
  'st_ino',     2,  # 4
  'st_mode',    2,  # 6
  'st_nlink',   2,  # 8
  'st_uid',     2,  # 10
  'st_gid',     2,  # 12
  'pad1',       2,  # 14
  'st_rdev',    4,  # 16
  'st_size',    4,  # 20
  'st_atime',   8,  # 24
  'st_mtime',   8,  # 32
  'st_ctime',   8,  # 40
]

Class Attribute Summary collapse

Attributes inherited from FileStat

#stathash

Instance Method Summary collapse

Methods inherited from FileStat

#atime, #blksize, #blockdev?, #blocks, #chardev?, #ctime, #dev, #directory?, #executable?, #executable_real?, #file?, #filetype?, #ftype, #gid, #grpowned?, #ino, #mode, #mtime, #nlink, #owned?, #perm?, #pipe?, #pretty, #prettymode, #rdev, #readable?, #readable_real?, #setgid?, #setuid?, #size, #socket?, #sticky?, #symlink?, #uid, #writeable?, #writeable_real?

Constructor Details

#initialize(file) ⇒ FileStat

Returns an instance of a FileStat object.



49
50
51
# File 'lib/rex/post/meterpreter/extensions/stdapi/fs/file_stat.rb', line 49

def initialize(file)
  self.stathash = stat(file) if (file)
end

Class Attribute Details

.clientObject

Returns the value of attribute client.



22
23
24
# File 'lib/rex/post/meterpreter/extensions/stdapi/fs/file_stat.rb', line 22

def client
  @client
end

Instance Method Details

#update(stat_buf) ⇒ Object

Swaps in a new stat hash.



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/rex/post/meterpreter/extensions/stdapi/fs/file_stat.rb', line 56

def update(stat_buf)
  elem   = @@struct_stat
  hash   = {}
  offset = 0
  index  = 0

  while (index < elem.length)
    size = elem[index + 1]

    value   = stat_buf[offset, size].unpack(size == 2 ? 'v' : 'V')[0]
    offset += size

    hash[elem[index]] = value

    index += 2
  end

  return (self.stathash = hash)
end