PageRenderTime 57ms CodeModel.GetById 12ms RepoModel.GetById 1ms app.codeStats 0ms

/lib/msf/core/post/linux/system.rb

https://bitbucket.org/technopunk2099/metasploit-framework
Ruby | 103 lines | 72 code | 16 blank | 15 comment | 2 complexity | b1bd1521a3c16609ca0c8bcd9755a9f0 MD5 | raw file
Possible License(s): BSD-3-Clause, Apache-2.0, LGPL-2.1, GPL-2.0, MIT
  1. # -*- coding: binary -*-
  2. require 'msf/core/post/common'
  3. require 'msf/core/post/file'
  4. require 'msf/core/post/unix'
  5. module Msf
  6. class Post
  7. module Linux
  8. module System
  9. include ::Msf::Post::Common
  10. include ::Msf::Post::File
  11. include ::Msf::Post::Unix
  12. #
  13. # Returns a Hash containing Distribution Name, Version and Kernel Information
  14. #
  15. def get_sysinfo
  16. system_data = {}
  17. etc_files = cmd_exec("ls /etc").split()
  18. kernel_version = cmd_exec("uname -a")
  19. system_data[:kernel] = kernel_version
  20. # Debian
  21. if etc_files.include?("debian_version")
  22. if kernel_version =~ /Ubuntu/
  23. version = read_file("/etc/issue").gsub(/\n|\\n|\\l/,'')
  24. system_data[:distro] = "ubuntu"
  25. system_data[:version] = version
  26. else
  27. version = read_file("/etc/issue").gsub(/\n|\\n|\\l/,'')
  28. system_data[:distro] = "debian"
  29. system_data[:version] = version
  30. end
  31. # Amazon
  32. elsif etc_files.include?("system-release")
  33. version = read_file("/etc/system-release").gsub(/\n|\\n|\\l/,'')
  34. system_data[:distro] = "amazon"
  35. system_data[:version] = version
  36. # Fedora
  37. elsif etc_files.include?("fedora-release")
  38. version = read_file("/etc/fedora-release").gsub(/\n|\\n|\\l/,'')
  39. system_data[:distro] = "fedora"
  40. system_data[:version] = version
  41. # Oracle Linux
  42. elsif etc_files.include?("enterprise-release")
  43. version = read_file("/etc/enterprise-release").gsub(/\n|\\n|\\l/,'')
  44. system_data[:distro] = "oracle"
  45. system_data[:version] = version
  46. # RedHat
  47. elsif etc_files.include?("redhat-release")
  48. version = read_file("/etc/redhat-release").gsub(/\n|\\n|\\l/,'')
  49. system_data[:distro] = "redhat"
  50. system_data[:version] = version
  51. # Arch
  52. elsif etc_files.include?("arch-release")
  53. version = read_file("/etc/arch-release").gsub(/\n|\\n|\\l/,'')
  54. system_data[:distro] = "arch"
  55. system_data[:version] = version
  56. # Slackware
  57. elsif etc_files.include?("slackware-version")
  58. version = read_file("/etc/slackware-version").gsub(/\n|\\n|\\l/,'')
  59. system_data[:distro] = "slackware"
  60. system_data[:version] = version
  61. # Mandrake
  62. elsif etc_files.include?("mandrake-release")
  63. version = read_file("/etc/mandrake-release").gsub(/\n|\\n|\\l/,'')
  64. system_data[:distro] = "mandrake"
  65. system_data[:version] = version
  66. #SuSE
  67. elsif etc_files.include?("SuSE-release")
  68. version = read_file("/etc/SuSE-release").gsub(/\n|\\n|\\l/,'')
  69. system_data[:distro] = "suse"
  70. system_data[:version] = version
  71. # Gentoo
  72. elsif etc_files.include?("gentoo-release")
  73. version = read_file("/etc/gentoo-release").gsub(/\n|\\n|\\l/,'')
  74. system_data[:distro] = "gentoo"
  75. system_data[:version] = version
  76. else
  77. # Others
  78. version = read_file("/etc/issue").gsub(/\n|\\n|\\l/,'')
  79. system_data[:distro] = "linux"
  80. system_data[:version] = version
  81. end
  82. return system_data
  83. end
  84. end # System
  85. end # Linux
  86. end # Post
  87. end # Msf