bin/tls-map in tls-map-1.1.0 vs bin/tls-map in tls-map-1.2.0

- old
+ new

@@ -9,30 +9,35 @@ # External require 'docopt' require 'paint' doc = <<~DOCOPT - TLS map + TLS map #{TLSmap::VERSION} Usage: tls-map search <critera> <term> [-o <output> --force -e -a] [--no-color --debug] tls-map export <filename> <format> [--force] [--debug] + tls-map extract <filename> <format> [--no-color --debug] tls-map update [--debug] tls-map -h | --help tls-map --version - Search options: (offline) + Search options: (offline) search and translate cipher names between SSL/TLS libraries <critera> The type of term. Accepted values: codepoint, iana, openssl, gnutls, nss. <term> The cipher algorithm name. -o, --output <output> Displayed fields. Accepted values: all, codepoint, iana, openssl, gnutls, nss. [default: all] -e, --extended (Online) Display additional information about the cipher (requires output = all or iana) -a, --acronym (Online) Display full acronym name (requires -e / --extended option) - Export options: (offline) + Export options: (offline) export the list of all ciphers (mapping) in various formats <filename> The output file name to write to. <format> Supported formats: markdown (a markdown table), json_pretty (expanded JSON), json_compact (minified JSON), marshal (Ruby marshalized hash). + Extract options: (offline) extract ciphers from external tools output file + <filename> The external tool output file + <format> Supported formats: sslyze, sslscan2, testssl, ssllabs-scan (check the documentation for the expected file format) + Update options: (online) DANGEROUS, will break database integrity, force option will be required Other options: --force Force parsing even if intigrity check failed (DANGEROUS, may result in command execution vulnerability) --no-color Disable colorized output @@ -77,9 +82,16 @@ end elsif args['export'] cli = TLSmap::CLI.new(args['--force']) cli.export(args['<filename>'], args['<format>'].to_sym) puts "#{args['<filename>']} exported" + elsif args['extract'] + extractor = TLSmap::App::Extractor.new + ciphers = extractor.parse(args['<format>'], args['<filename>']) + ciphers.each do |k, v| + puts Paint[k, :blue] unless v.empty? + puts Paint[v.join("\n"), :white] unless v.empty? + end elsif args['update'] cli = TLSmap::CLI.new cli.update puts 'Database updated' end