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