Class: TLSmap::App::Extractor

Inherits:
Object
  • Object
show all
Defined in:
lib/tls_map/extractor.rb

Overview

External tools output data extractor

Output files from SSLyze (JSON), sslscan2 (XML), testssl.sh (JSON), ssllabs-scan (JSON)

Example of commands:

  • sslyze --json_out=example.org.json example.org
  • sslscan2 --show-cipher-ids --xml=example.org.xml example.org
    • --show-cipher-ids is mandatory else ciphers are not saved to the output
  • testssl --jsonfile-pretty example.org.json --mapping no-openssl --cipher-per-proto example.org
    • json-pretty is the only supported format, default json or csv, html won't work
  • ssllabs-scan --quiet example.org > example.org.json
    • The default output is the only supported format, using -json-flat won't work

Defined Under Namespace

Classes: SsllabsScan, Sslscan2, Sslyze, Testssl

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize ⇒ Extractor

Initialize TLSmap::App::Extractor instance



36
37
38
# File 'lib/tls_map/extractor.rb', line 36

def initialize
  @ciphers = []
end

Instance Attribute Details

#ciphers ⇒ Array<String> (readonly)

Get the list of ciphers extracted from the tool output file

Returns:

  • (Array<String>) —

    Cipher array (IANA names)



33
34
35
# File 'lib/tls_map/extractor.rb', line 33

def ciphers
  @ciphers
end

Instance Method Details

#parse(tool, file) ⇒ Array<String>

Extract the ciphers from the tool output file

Parameters:

  • tool (String) —

    Possible values: sslyze, sslscan2, testssl, ssllabs-scan

  • file (String) —

    Path of the tool output file, beware of the format expected. See TLSmap::App::Extractor

Returns:

  • (Array<String>) —

    Cipher array (IANA names)



80
81
82
83
84
85
# File 'lib/tls_map/extractor.rb', line 80

def parse(tool, file)
  # Convert string to class
  @ciphers = Object.const_get("TLSmap::App::Extractor::#{normalize(tool)}").parse(file)
rescue StandardError
  warn helper(tool)
end

#ssl20 ⇒ Array<String>

Return only the SSL 2.0 ciphers

Returns:

  • (Array<String>) —

    Cipher array (IANA names)



42
43
44
# File 'lib/tls_map/extractor.rb', line 42

def ssl20
  @ciphers['SSL2.0']
end

#ssl30 ⇒ Array<String>

Return only the SSL 3.0 ciphers

Returns:

  • (Array<String>) —

    Cipher array (IANA names)



48
49
50
# File 'lib/tls_map/extractor.rb', line 48

def ssl30
  @ciphers['SSL3.0']
end

#tls10 ⇒ Array<String>

Return only the TLS 1.0 ciphers

Returns:

  • (Array<String>) —

    Cipher array (IANA names)



54
55
56
# File 'lib/tls_map/extractor.rb', line 54

def tls10
  @ciphers['TLS1.0']
end

#tls11 ⇒ Array<String>

Return only the TLS 1.1 ciphers

Returns:

  • (Array<String>) —

    Cipher array (IANA names)



60
61
62
# File 'lib/tls_map/extractor.rb', line 60

def tls11
  @ciphers['TLS1.1']
end

#tls12 ⇒ Array<String>

Return only the TLS 1.2 ciphers

Returns:

  • (Array<String>) —

    Cipher array (IANA names)



66
67
68
# File 'lib/tls_map/extractor.rb', line 66

def tls12
  @ciphers['TLS1.2']
end

#tls13 ⇒ Array<String>

Return only the TLS 1.3 ciphers

Returns:

  • (Array<String>) —

    Cipher array (IANA names)



72
73
74
# File 'lib/tls_map/extractor.rb', line 72

def tls13
  @ciphers['TLS1.3']
end