tls-map 3.0.0 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4026709ea82fcd9b7d1aff224b5bbef53c1528b4f459cdd979e34efa288696ad
4
- data.tar.gz: 3023589dd5993e4cb3ba5425794485970b5a9f643bd9ad83519680a9c4b8bad2
3
+ metadata.gz: c3bfd94194d2ff746b82e4f08e02efa5a223dc7b1cf235efe6a1537803c76761
4
+ data.tar.gz: c7fb814d57ceb1d1d072d4821f382d615e271223687cc51978b0644e6a092418
5
5
  SHA512:
6
- metadata.gz: 94823f19862439cdda3882f7ee931bdaa5233f5888a95f6c03b42113c1dc7a6c79571277257556723055e3538328aad6bac0fd782bbcf45720dd0133c8100020
7
- data.tar.gz: 5188a63cf57c6424294ffb408e9db7f49e2a199753ef69b6ec9786c5e4e02ee3c6aa16be2346a89067770f601bce09fed4d034b14b618fb74a7bbb17cd289a7b
6
+ metadata.gz: 362bc13419886123f2877836b60f0f9f859d84a8bc54a1ec99cb0befddbd3eb3e5cfe09cbf2c4c2a0dd76ba860461985ada8bb710f0b8271593e28fa1ffb9e9f
7
+ data.tar.gz: 549250c7ad98e4ff866bea895a161c58d4827e5ae9a388ce61fb44e3a41bbf56f790d261507e8b39cab65003dbc4f7a64af1f823ee00fed96a41047eeb586f46
data/bin/tls-map CHANGED
@@ -12,43 +12,44 @@ require 'paint'
12
12
  # can't specify 2 options with the same name even if used in different commands
13
13
  # https://github.com/docopt/docopt/issues/296#issuecomment-857477191
14
14
  doc = <<~DOCOPT
15
- TLS map #{TLSmap::VERSION}
15
+ #{Paint['TLS map', :bold, '#81c8b6']} #{Paint[TLSmap::VERSION, :bold]}
16
16
 
17
- Usage:
17
+ #{Paint['Usage:', '#81c8b6']}
18
18
  tls-map search <criteria> <term> [-o <output> --force -e -a] [--no-color --debug]
19
- tls-map bulk <criteria> <file> [-q <output> --force] [--no-color --debug]
19
+ tls-map bulk <criteria> <file> [(-q <output> | --audit) --force] [--no-color --debug]
20
20
  tls-map export <filename> <format> [--force] [--debug]
21
21
  tls-map extract <filename> <format> [--no-color --debug [--only-weak | --hide-weak]]
22
22
  tls-map update [--with-extended] [--debug]
23
23
  tls-map -h | --help
24
24
  tls-map --version
25
25
 
26
- Search options: (offline) search and translate cipher names between SSL/TLS libraries
26
+ #{Paint['Search options:', '#81c8b6']} #{Paint['(offline) search and translate cipher names between SSL/TLS libraries', :underline]}
27
27
  <criteria> The type of term. Accepted values: codepoint, iana, openssl, gnutls, nss.
28
28
  <term> The cipher algorithm name.
29
29
  -o, --output <output> Displayed fields. Accepted values: all, codepoint, iana, openssl, gnutls, nss. [default: all]
30
30
  -e, --extended (Online) Display additional information about the cipher (requires output = all or iana)
31
31
  -a, --acronym (Online) Display full acronym name (requires -e / --extended option)
32
32
 
33
- Bulk options: (offline) search and translate cipher names between SSL/TLS libraries in bulk
33
+ #{Paint['Bulk options:', '#81c8b6']} #{Paint['(offline) search and translate cipher names between SSL/TLS libraries in bulk', :underline]}
34
34
  <criteria> The type of term. Accepted values: codepoint, iana, openssl, gnutls, nss.
35
35
  <file> File containing the cipher algorithm names, one per line.
36
36
  -q, --output2 <output> Displayed fields. Accepted values: codepoint, iana, openssl, gnutls, nss. [default: iana]
37
+ --audit Highlight weak (security level equal to weak or insecure) cipher suites. (work only with TLS not SSL).
37
38
 
38
- Export options: (offline) export the list of all ciphers (mapping) in various formats
39
+ #{Paint['Export options:', '#81c8b6']} #{Paint['(offline) export the list of all ciphers (mapping) in various formats', :underline]}
39
40
  <filename> The output file name to write to.
40
41
  <format> Supported formats: markdown (a markdown table), json_pretty (expanded JSON), json_compact (minified JSON), marshal (Ruby marshalized hash).
41
42
 
42
- Extract options: (offline) extract ciphers from external tools output file
43
+ #{Paint['Extract options:', '#81c8b6']} #{Paint['(offline) extract ciphers from external tools output file', :underline]}
43
44
  <filename> The external tool output file
44
45
  <format> Supported formats: sslyze, sslscan2, testssl, ssllabs-scan, tlsx (check the documentation for the expected file format)
45
46
  --only-weak Show only ciphers with a security level equal to weak or insecure (hide secure and recommended) (work only with TLS not SSL).
46
47
  --hide-weak Hide ciphers with a security level equal to weak or insecure (show only secure and recommended) (work only with TLS not SSL).
47
48
 
48
- Update options: (online) DANGEROUS, will break database integrity, force option will be required
49
+ #{Paint['Update options:', '#81c8b6']} #{Paint['(online) DANGEROUS, will break database integrity, force option will be required', :underline]}
49
50
  --with-extended (Online) Also save extended information used by search --extended option.
50
51
 
51
- Other options:
52
+ #{Paint['Other options:', '#81c8b6']}
52
53
  --force Force parsing even if integrity check failed (DANGEROUS, may result in command execution vulnerability)
53
54
  --no-color Disable colorized output
54
55
  --debug Display arguments
@@ -88,7 +89,7 @@ begin
88
89
  puts "#{Paint[dic[k], :magenta]}: #{Paint[v, sec_lvl[v][:color]]}"
89
90
  else
90
91
  print "#{Paint[dic[k], :magenta]}: #{Paint[v, :white]}"
91
- print " (#{tmext_i.translate_acronym(v)})" if args['--acronym'] && !tmext_i.translate_acronym(v).nil? # rubocop:disable Metrics/BlockNesting
92
+ print " (#{tmext_i.translate_acronym(v)})" if args['--acronym'] && !tmext_i.translate_acronym(v).nil?
92
93
  puts
93
94
  end
94
95
  end
@@ -98,7 +99,23 @@ begin
98
99
  res = cli.bulk_search(args['<criteria>'].to_sym, args['<file>'], args['--output2'].to_sym)
99
100
  puts Paint['No match found', :red] if res.empty?
100
101
  res.each do |h|
101
- puts Paint[h[args['--output2'].to_sym], :green]
102
+ cs = h[args['--output2'].to_sym] # cipher suite
103
+ next if cs.nil?
104
+
105
+ if args['--audit']
106
+ cliext = TLSmap::CLI::Extended.new
107
+ ci = TLSmap::App::Cipher.new(:iana, cs, enhanced_data: cliext.enhanced_data)
108
+ if ci.should_i_use?
109
+ print Paint[cs, :green]
110
+ else
111
+ print Paint[cs, :red]
112
+ print ' -- '
113
+ print Paint['weak', :red, :bold]
114
+ end
115
+ puts
116
+ else
117
+ puts Paint[cs, :green]
118
+ end
102
119
  end
103
120
  elsif args['export']
104
121
  cli = TLSmap::CLI.new(args['--force'])
@@ -112,8 +129,11 @@ begin
112
129
  cliext = TLSmap::CLI::Extended.new
113
130
  v.each do |alg|
114
131
  ci = TLSmap::App::Cipher.new(:iana, alg, enhanced_data: cliext.enhanced_data)
115
- puts Paint[alg, :white] if (args['--only-weak'] && !ci.should_i_use?) ||
116
- (args['--hide-weak'] && ci.should_i_use?)
132
+ next unless (args['--only-weak'] && !ci.should_i_use?) ||
133
+ (args['--hide-weak'] && ci.should_i_use?)
134
+
135
+ print Paint["#{k} ", :blue] unless v.empty?
136
+ puts Paint[alg, :white]
117
137
  end
118
138
  else
119
139
  puts Paint[k, :blue] unless v.empty?
Binary file
@@ -56,7 +56,7 @@ module TLSmap
56
56
 
57
57
  # Offline version of {App::Extended}
58
58
  class Extended < App::Extended
59
- INTEGRITY = 'bed565db6cc8da400c51bcc17107b68bce86f2c7bdf2495d43633679a295d0aa' # sha2-256
59
+ INTEGRITY = '3236733f1d5b69f4230adaa726faeb2f4ba4e88aa59a72880cc822c43ed37b73' # sha2-256
60
60
 
61
61
  # Load and parse data from marshalized hash (`data/extended.marshal`).
62
62
  # It must match the integrity check for security purpose.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TLSmap
4
- VERSION = '3.0.0'
4
+ VERSION = '3.1.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tls-map
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexandre ZANNI
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-06-23 00:00:00.000000000 Z
10
+ date: 2025-02-01 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: csv
@@ -108,7 +107,6 @@ metadata:
108
107
  source_code_uri: https://github.com/noraj/tls-map/
109
108
  funding_uri: https://github.com/sponsors/noraj
110
109
  rubygems_mfa_required: 'true'
111
- post_install_message:
112
110
  rdoc_options: []
113
111
  require_paths:
114
112
  - lib
@@ -116,7 +114,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
116
114
  requirements:
117
115
  - - ">="
118
116
  - !ruby/object:Gem::Version
119
- version: 3.0.0
117
+ version: 3.1.0
120
118
  - - "<"
121
119
  - !ruby/object:Gem::Version
122
120
  version: '4.0'
@@ -126,8 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
124
  - !ruby/object:Gem::Version
127
125
  version: '0'
128
126
  requirements: []
129
- rubygems_version: 3.5.3
130
- signing_key:
127
+ rubygems_version: 3.6.2
131
128
  specification_version: 4
132
129
  summary: CLI & library for TLS cipher suites manipulation
133
130
  test_files: []