Class: SSHScan::Banner

Inherits:
Object
  • Object
show all
Defined in:
lib/ssh_scan/banner.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(string) ⇒ Banner

Returns a new instance of Banner.



6
7
8
# File 'lib/ssh_scan/banner.rb', line 6

def initialize(string)
  @string = string
end

Class Method Details

.read(string) ⇒ SSHScan::Banner

Create SSHScan::Banner object based on target’s SSH banner.

Parameters:

  • string (String)

    String from which the banner should be constructed.

Returns:



15
16
17
# File 'lib/ssh_scan/banner.rb', line 15

def self.read(string)
  return SSHScan::Banner.new(string)
end

Instance Method Details

#==(other) ⇒ Object



103
104
105
# File 'lib/ssh_scan/banner.rb', line 103

def ==(other)
  self.to_s == other.to_s
end

#os_guessSSHScan::OS

Guess target’s OS (Ubuntu, CentOS …). See OS for a list of OS(s) supported.

Returns:



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/ssh_scan/banner.rb', line 74

def os_guess()
  case @string
  when /Ubuntu/i
    return SSHScan::OS::Ubuntu.new(@string)
  when /6.6p1-5build1/i # non-standard Ubuntu release
    return SSHScan::OS::Ubuntu.new(@string)
  when /CentOS/i
    return SSHScan::OS::CentOS.new
  when /RHEL|RedHat/i
    return SSHScan::OS::RedHat.new
  when /FreeBSD/i
    return SSHScan::OS::FreeBSD.new
  when /Debian/i
    return SSHScan::OS::Debian.new
  when /Windows|Microsoft/i
    return SSHScan::OS::Windows.new
  when /Cisco/i
    return SSHScan::OS::Cisco.new
  when /Raspbian/i
    return SSHScan::OS::Raspbian.new(@string)
  when /ROS/i
    return SSHScan::OS::ROS.new
  when /DOPRA/i
    return SSHScan::OS::DOPRA.new
  else
    return SSHScan::OS::Unknown.new
  end
end

#ssh_lib_guessSSHScan::SSHLib

Guess target’s SSH Library (OpenSSH, LibSSH …). See SSHLib for a list of SSH libraries supported.

Returns:



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/ssh_scan/banner.rb', line 35

def ssh_lib_guess()
  case @string
  when /OpenSSH/i
    return SSHScan::SSHLib::OpenSSH.new(@string)
  when /LibSSH/i
    return SSHScan::SSHLib::LibSSH.new()
  when /ipssh/i
    return SSHScan::SSHLib::IpSsh.new(@string)
  when /Cisco/i
    return SSHScan::SSHLib::CiscoSSH.new()
  when /ROS/
    return SSHScan::SSHLib::ROSSSH.new()
  when /DOPRASSH/i
    return SSHScan::SSHLib::DOPRASSH.new()
  when /cryptlib/i
    return SSHScan::SSHLib::Cryptlib.new()
  when /NOS-SSH/i
    return SSHScan::SSHLib::NosSSH.new(@string)
  when /pgp/i
    return SSHScan::SSHLib::PGP.new()
  when /ServerTech_SSH|Mocana SSH/i
    return SSHScan::SSHLib::SentrySSH.new()
  when /mpssh/i
    return SSHScan::SSHLib::Mpssh.new(@string)
  when /dropbear/i
    return SSHScan::SSHLib::Dropbear.new(@string)
  when /RomSShell/i
    return SSHScan::SSHLib::RomSShell.new(@string)
  when /Flowssh/i
    return SSHScan::SSHLib::FlowSsh.new(@string)
  else
    return SSHScan::SSHLib::Unknown.new()
  end
end

#ssh_versionString

Guess target’s SSH version.

Returns:

  • (String)

    If SSH version string looks like “SSH-1.81” or “SSH-number” then return the number, else return “unknown”



23
24
25
26
27
28
29
# File 'lib/ssh_scan/banner.rb', line 23

def ssh_version()
  if match = @string.match(/SSH-(\d+[\.\d+]+)/)
    return match[1].to_f
  else
    return "unknown"
  end
end

#to_sObject



107
108
109
# File 'lib/ssh_scan/banner.rb', line 107

def to_s
  @string
end