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