Class: TLSmap::App::Extractor

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

Overview

External tools output data extractor

Output files from SSLyze (JSON), sslscan2 (XML), testssl.sh (JSON), ssllabs-scan (JSON) , tlsx (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
  • tlsx -u example.org -cipher-enum -o example.org.json -j -sm ctls

Defined Under Namespace

Classes: SsllabsScan, Sslscan2, Sslyze, Testssl, Tlsx

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeExtractor

Initialize TLSmap::App::Extractor instance



39
40
41
# File 'lib/tls_map/app/extractor/extractor.rb', line 39

def initialize
  @ciphers = []
end

Instance Attribute Details

#ciphersArray<String> (readonly)

Get the list of ciphers extracted from the tool output file

Returns:

  • (Array<String>)

    Cipher array (IANA names)



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

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, tlsx

  • file (String)

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

Returns:

  • (Array<String>)

    Cipher array (IANA names)



83
84
85
86
87
88
# File 'lib/tls_map/app/extractor/extractor.rb', line 83

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

#ssl20Array<String>

Return only the SSL 2.0 ciphers

Returns:

  • (Array<String>)

    Cipher array (IANA names)



45
46
47
# File 'lib/tls_map/app/extractor/extractor.rb', line 45

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

#ssl30Array<String>

Return only the SSL 3.0 ciphers

Returns:

  • (Array<String>)

    Cipher array (IANA names)



51
52
53
# File 'lib/tls_map/app/extractor/extractor.rb', line 51

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

#tls10Array<String>

Return only the TLS 1.0 ciphers

Returns:

  • (Array<String>)

    Cipher array (IANA names)



57
58
59
# File 'lib/tls_map/app/extractor/extractor.rb', line 57

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

#tls11Array<String>

Return only the TLS 1.1 ciphers

Returns:

  • (Array<String>)

    Cipher array (IANA names)



63
64
65
# File 'lib/tls_map/app/extractor/extractor.rb', line 63

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

#tls12Array<String>

Return only the TLS 1.2 ciphers

Returns:

  • (Array<String>)

    Cipher array (IANA names)



69
70
71
# File 'lib/tls_map/app/extractor/extractor.rb', line 69

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

#tls13Array<String>

Return only the TLS 1.3 ciphers

Returns:

  • (Array<String>)

    Cipher array (IANA names)



75
76
77
# File 'lib/tls_map/app/extractor/extractor.rb', line 75

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