bin/haiti in haiti-hash-1.4.1 vs bin/haiti in haiti-hash-1.5.0

- old
+ new

@@ -1,54 +1,60 @@ #!/usr/bin/env ruby # frozen_string_literal: true # Ruby internal -require 'pp' # Project internal require 'haiti' # External require 'docopt' require 'paint' doc = <<~DOCOPT - HAITI (HAsh IdenTifIer) v#{HashIdentifier::VERSION} + #{Paint['HAITI (HAsh IdenTifIer)', '#FF69B4']} v#{Paint[HashIdentifier::VERSION, :bold]} - Usage: + #{Paint['Usage:', '#00FFFF']} haiti [options] <hash> haiti samples (<ref> | <name>) + haiti --ascii-art haiti -h | --help haiti --version - Commands: + #{Paint['Commands:', '#00FFFF']} samples Display hash samples for the given type - Parameters: + #{Paint['Parameters:', '#00FFFF']} <hash> Hash string to identify, read from STDIN if equal to "-" <ref> hashcat or john the ripper reference <name> Hash type name - Options: - --no-color Disable colorized output + #{Paint['Options:', '#00FFFF']} + --no-color Disable colorized output (NO_COLOR environment variable is respected too) -e, --extended List all possible hash algorithms including ones using salt --short Display in a short format: do not display hashcat and john the ripper references --hashcat-only Show only hashcat references --john-only Show only john the ripper references + --ascii-art Display the logo in colored ascii-art --debug Display arguments -h, --help Show this screen --version Show version - Examples: + #{Paint['Examples:', '#00FFFF']} haiti -e d41d8cd98f00b204e9800998ecf8427e haiti --no-color --short d41d8cd98f00b204e9800998ecf8427e b2sum /etc/os-release | awk '{print $1}' | haiti - haiti samples crc32 + + #{Paint['Project:', '#00FFFF']} + #{Paint['author', :underline]} (https://pwn.by/noraj / https://twitter.com/noraj_rawsec) + #{Paint['source', :underline]} (https://github.com/noraj/haiti) + #{Paint['documentation', :underline]} (https://noraj.github.io/haiti) DOCOPT begin args = Docopt.docopt(doc, version: HashIdentifier::VERSION) Paint.mode = 0 if args['--no-color'] - pp args if args['--debug'] + puts args if args['--debug'] # use case 1, using the tool if args['<hash>'] args['<hash>'] = $stdin.read.chomp if args['<hash>'] == '-' hi = HashIdentifier.new(args['<hash>']) if hi.type.empty? @@ -57,19 +63,23 @@ end hi.type.each do |type| next if type.extended && !args['--extended'] print Paint[type.name, :bold] - print Paint[" [HC: #{type.hashcat}]", :blue] unless type.hashcat.nil? || args['--short'] || args['--john-only'] - print Paint[" [JtR: #{type.john}]", :green] unless type.john.nil? || args['--short'] || args['--hashcat-only'] + unless type.hashcat.nil? || args['--short'] || args['--john-only'] + print Paint[" [HC: #{type.hashcat}]", '#00FFFF'] + end + print Paint[" [JtR: #{type.john}]", '#FF69B4'] unless type.john.nil? || args['--short'] || args['--hashcat-only'] puts end elsif args['samples'] input = args['<ref>'] || args['<name>'] samples = HashIdentifier.samples(input) samples.each do |sample| puts sample end + elsif args['--ascii-art'] + puts File.read(File.join(__dir__, '../docs/_media/logo.ascii')) end # use case 2, help: already handled by docopt # use case 3, version: already handled by docopt rescue Docopt::Exit => e puts e.message