hackernote 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ff684139dfe33900c5be1dc93d3a8e4b11df8361
4
+ data.tar.gz: 360f8c7218cf83c8e506d827f4d1b6762bca228d
5
+ SHA512:
6
+ metadata.gz: cb496296e8f68ab5b89f272b1587538ed4d7056c13750d955a47d28eaec9aac6ffa5bb6ae05193e2d22a5cd5c3415d4971789fd13802967ece93fd12e7b99e50
7
+ data.tar.gz: 50dd1f61221d47b90fca8e044e93574bfc8338ab1b31db8debf19d3d382619b908cfcb4736c3ca1ab8cb659889790f0366cce8a02cf0750631f011f3c9881b51
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ .idea
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source "https://rubygems.org"
2
+
3
+ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
+
5
+ # Specify your gem's dependencies in hackernote.gemspec
6
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2018 KING SABRI
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,71 @@
1
+ # Hacker's Note
2
+
3
+ It's a Ruby script creates a gitbook compatible structure for penetration test and red team projects
4
+ The main target of this script is to make building [gitbook](https://www.gitbook.com/editor) project for a new PT/RT engagement easily.
5
+
6
+ ## Installation
7
+
8
+ $ gem install hackernote
9
+
10
+ ## Usage
11
+
12
+ ```
13
+ $> hackernote -h
14
+
15
+ ______ ____ ______ ____
16
+ | | .'. .~ ~.| ..''| |`````````, ..'''' |.. |.~ ~.`````|`````|
17
+ |_________| .''```. | |..'' |______ |'''|''''' .'' | ``.. | | | |______
18
+ | | .' `. | |``.. | | `. ..' | ``.. | | | |
19
+ | |.' `.`.______.'| ``..|__________| `....'' | ``|`.______.' | |___________
20
+ v1.0.0
21
+
22
+ Hacker's Note - Helps security professionals to organize their notes in a gitbook structure for PT/RT engagements.
23
+
24
+ Help menu:
25
+ -p, --project PROJECT_NAME Project Name
26
+ -l, --list TARGET_LIST The target name or a text file contains list of targets
27
+ -g, --git GIT_REPO_URL Configure git server URL
28
+ -h, --help Show this help message
29
+
30
+ Usage:
31
+ hackernote --project <project_name> --list <targets[.list]> --git <git server repository URL>
32
+
33
+ Example:
34
+ hackernote --project PT_CustomerName_WebApp_01-01-2030 --list target_list.txt
35
+ hackernote -p PT_CustomerName_WebApp_01-01-2030 -l example.com
36
+ hackernote -p PT_CustomerName_WebApp_01-01-2030 -l example.com -g https://github.com/[USERNAME]/PT_CustomerName_WebApp_01-01-2030.git
37
+ ```
38
+
39
+
40
+ ## Document Structure
41
+ The script create a tree of folders and files for each target
42
+
43
+ - Project Name
44
+ - Target1/
45
+ - target1.md
46
+ - scanning_and_enumeration.md
47
+ - critical
48
+ - high.md
49
+ - medium.md
50
+ - low
51
+ - informational.md
52
+ - notes
53
+ - TargetX/
54
+ - target1.md
55
+ - scanning_and_enumeration.md
56
+ - critical
57
+ - high.md
58
+ - medium.md
59
+ - low
60
+ - informational.md
61
+ - notes
62
+ - README.md
63
+ - book.json
64
+
65
+ ## Contributing
66
+
67
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/hackernote.
68
+
69
+ ## License
70
+
71
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+ task :default => :spec
data/bin/hackernote ADDED
@@ -0,0 +1,69 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Hacker's Note - A command-line tool creates gitbook compatible structure for pentest and read team projects.
4
+ #
5
+ # @Author: KING SABRI - @KINGSABRI
6
+ #
7
+ lib = File.dirname(__FILE__) + '/../lib'
8
+ if File.directory?(lib)
9
+ unless $:.include?(lib)
10
+ $:.unshift(lib)
11
+ end
12
+ end
13
+ require 'hackernote'
14
+ include HackerNote::Utils
15
+
16
+ options = {}
17
+ option_parser = OptionParser.new
18
+ option_parser.banner = "#{"Hacker's Note".bold} - Helps security professionals to organize their notes in a gitbook structure for PT/RT engagements."
19
+ option_parser.set_summary_indent ' '
20
+ option_parser.separator "\nHelp menu:".underline
21
+ option_parser.on('-p', '--project PROJECT_NAME', "Project Name") {|v| options[:project] = v}
22
+ option_parser.on('-l', '--list TARGET_LIST' , 'The target name or a text file contains list of targets') {|v| options[:list] = v}
23
+ option_parser.on('-g', '--git GIT_REPO_URL' , 'Configure git server URL') {|v| options[:git_url] = v}
24
+ option_parser.on('-h', '--help', 'Show this help message') {puts HackerNote::Utils.banner, option_parser; exit!}
25
+ option_parser.on_tail "\nUsage:\n".underline + " hackernote --project <project_name> --list <targets[.list]> --git <git server repository URL>"
26
+ option_parser.on_tail "\nExample:".underline
27
+ option_parser.on_tail" hackernote --project PT_CustomerName_WebApp_01-01-2030 --list target_list.txt"
28
+ option_parser.on_tail" hackernote -p PT_CustomerName_WebApp_01-01-2030 -l example.com"
29
+ option_parser.on_tail" hackernote -p PT_CustomerName_WebApp_01-01-2030 -l example.com -g https://github.com/[USERNAME]/PT_CustomerName_WebApp_01-01-2030.git\n\n"
30
+
31
+ begin
32
+ option_parser.parse!
33
+ gitbook = HackerNote::GitbookBuilder.new
34
+ git = HackerNote::Git.new
35
+ case
36
+ when options[:project] && options[:list] && options[:git_url]
37
+ gitbook.build(options[:project], options[:list])
38
+ print "\r\n".cls_upline
39
+ git.setup(options[:project], options[:git_url])
40
+ puts "\n[+] ".green.bold + "Happy Hacking!".bold
41
+ when options[:project] && options[:list]
42
+ gitbook.build(options[:project], options[:list])
43
+ print "\r\n".cls_upline
44
+ git.git = nil
45
+ git.setup(options[:project], '[YOUR GIT REPOSITORY URL]')
46
+ puts "\n[+] ".green.bold + "Happy Hacking!"
47
+ when options[:project].nil? && options[:list].nil?
48
+ puts HackerNote::Utils.banner
49
+ puts option_parser
50
+ when options[:project].nil?
51
+ puts '[!] '.red + "Missing mandatory switch '-p/--project'"
52
+ puts option_parser
53
+ when options[:list].nil?
54
+ puts '[!] '.red + "Missing mandatory switch '-l/--list'"
55
+ puts option_parser
56
+ end
57
+ rescue OptionParser::MissingArgument => e
58
+ e.args.each {|arg| puts '[!] '.red + "#{e.reason.capitalize} for '#{arg}' option."}
59
+ puts option_parser
60
+ rescue OptionParser::InvalidOption => e
61
+ puts '[!] '.red + "#{e}"
62
+ puts option_parser
63
+ rescue Exception => e
64
+ puts e.backtrace
65
+ puts e.backtrace_locations
66
+ puts e
67
+ end
68
+
69
+
@@ -0,0 +1,23 @@
1
+
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "hackernote"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "hackernote"
8
+ spec.version = HackerNote::VERSION
9
+ spec.authors = ["KING SABRI"]
10
+ spec.email = ["king.sabri@gmail.com"]
11
+
12
+ spec.summary = %q{Hacker's Note - A command-line tool creates gitbook compatible structure for pentest and read team projects.}
13
+ spec.description = %Q{Hacker's Note - A command-line tool creates gitbook compatible structure for pentest and read team projects.\nHelps security professionals to organize their notes in a gitbook structure for PT/RT engagements.}
14
+ spec.homepage = "https://github.com/TechArchSA/HackersNote"
15
+ spec.license = "MIT"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject {|f| f.match(%r{^(test|spec|features)/})}
18
+ spec.bindir = "bin"
19
+ spec.executables = ['hackernote']
20
+ spec.require_paths = ["lib"]
21
+
22
+ spec.post_install_message = HackerNote::Utils.logo
23
+ end
data/lib/hackernote.rb ADDED
@@ -0,0 +1,21 @@
1
+ # Standard libraries
2
+ require 'optparse'
3
+ require 'fileutils'
4
+ require 'pathname'
5
+ require 'find'
6
+ require 'mkmf'
7
+ require 'readline'
8
+
9
+ # HackerNote
10
+ require "hackernote/version"
11
+ require "hackernote/extensions"
12
+ require "hackernote/utils"
13
+ require "hackernote/gitbook_builder"
14
+ require "hackernote/git"
15
+
16
+
17
+ module HackerNote
18
+ String.class_eval do
19
+ include Extensions::String
20
+ end
21
+ end
@@ -0,0 +1,27 @@
1
+ module HackerNote
2
+ module Extensions
3
+ module String
4
+ # Colors
5
+ def red; colorize(self, "\e[1m\e[31m"); end
6
+ def green; colorize(self, "\e[1m\e[32m"); end
7
+ def dark_green; colorize(self, "\e[32m"); end
8
+ def yellow; colorize(self, "\e[1m\e[33m"); end
9
+ def blue; colorize(self, "\e[1m\e[34m"); end
10
+ def dark_blue; colorize(self, "\e[34m"); end
11
+ def purple; colorize(self, "\e[35m"); end
12
+ def dark_purple; colorize(self, "\e[1;35m"); end
13
+ def cyan; colorize(self, "\e[1;36m"); end
14
+ def dark_cyan; colorize(self, "\e[36m"); end
15
+ def pure; colorize(self, "\e[0m\e[28m"); end
16
+ def underline; colorize(self, "\e[4m"); end
17
+ def bold; colorize(self, "\e[1m"); end
18
+ def reset; colorize(self, "\e[0m\e[28m"); end
19
+ def colorize(text, color_code) "#{color_code}#{text}\e[0m" end
20
+
21
+ # Cursor
22
+ def mv_down(n=1) cursor(self, "\033[#{n}B") end
23
+ def cls_upline; cursor(self, "\e[K") end
24
+ def cursor(text, position)"\r#{position}#{text}" end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,41 @@
1
+ module HackerNote
2
+ class Git
3
+
4
+ attr_accessor :git
5
+ def initialize
6
+ @git = find_executable0 'git'
7
+ end
8
+
9
+ # Setup git repo
10
+ def setup(project, git_url='')
11
+ puts '[+] '.bold + 'Git Setup:'.bold.underline
12
+
13
+ git_cmds =
14
+ [
15
+ "git init",
16
+ "git add -A",
17
+ "git commit -m 'Initial #{project} commit'",
18
+ "git remote add origin #{git_url}",
19
+ "git push origin master",
20
+ "git checkout -b YourName",
21
+ "git push origin YourName"
22
+ ]
23
+ if @git
24
+ puts '[>] '.bold + "Found 'git' installed!"
25
+ puts '[-] '.bold + "Initiating local git repository."
26
+ git_cmds.first(4).each do |cmd|
27
+ puts "[>] ".bold + "executing: " + "#{cmd}".dark_green
28
+ `#{cmd}`
29
+ end
30
+ puts "[!] ".yellow + "Please do not forget to:".underline
31
+ git_cmds.last(3).each {|cmd| puts "$ ".bold + "#{cmd}".dark_green}
32
+ else
33
+ puts '[x] '.red.bold + "git command can't be found (or you didn't use '--git' switch)."
34
+ puts '[!] '.yellow + "Please install 'git' command then do the following (or use --git switch if git is installed):"
35
+ git_cmds.each {|cmd| puts "$> ".bold + "#{cmd}".dark_green}
36
+ end
37
+
38
+ end
39
+
40
+ end
41
+ end
@@ -0,0 +1,194 @@
1
+ module HackerNote
2
+ #
3
+ # GitbookBuild class
4
+ # for all gitbook related work (build gitbook files, targets files, project readme, etc)
5
+ #
6
+ class GitbookBuilder
7
+
8
+ # Builder wrapper
9
+ def build(project_name, target_list)
10
+ @project_name = project_name
11
+ @target_list = target_list
12
+
13
+ puts '[+] '.bold + 'Gitbook Setup:'.bold.underline
14
+ set_env
15
+ build_gitbook_files
16
+ build_targets_files
17
+ build_project_readme
18
+ general_fixes
19
+ end
20
+
21
+ # set environment requirements
22
+ def set_env
23
+ set_project_dir
24
+ set_targets_list
25
+ Dir.chdir @project_path
26
+ end
27
+
28
+ # set the project main directory @see #set_env
29
+ def set_project_dir
30
+ @project_path = Pathname.new(@project_name).basename
31
+
32
+ if Dir.exist?(@project_path)
33
+ rename = "#{@project_path}_#{Time.now.to_i}"
34
+ puts '[-] '.bold + "Renaming Existing directory '#{@project_path}' to '#{rename}'"
35
+ FileUtils.mv(@project_path, rename)
36
+ end
37
+
38
+ puts '[-] '.bold + "Creating #{@project_name} directory"
39
+ Dir.mkdir @project_name
40
+ end
41
+
42
+ # check targets list, @see #set_env
43
+ # if file read each line as a target,
44
+ # if file not exists, consider the given name as a target
45
+ #
46
+ # @return Array of target names
47
+ def set_targets_list
48
+ if File.file? @target_list
49
+ @list_of_targets = File.open(@target_list).each_line(chomp: true).map(&:strip).reject(&:nil?).reject(&:empty?)
50
+ else
51
+ puts "[!] ".yellow + "No targets list file, assuming '#{@target_list}' as a target name."
52
+ @list_of_targets = [@target_list]
53
+ end
54
+ end
55
+
56
+ # build gitbook's main files such as book.json, SUMMARY.md and README.md
57
+ def build_gitbook_files
58
+ puts '[-] '.bold + "Creating gitbook's main files.'"
59
+ prj_files = %w[book.json SUMMARY.md README.md]
60
+ prj_files.each do |file|
61
+ File.write(file, "# #{file.split('.').first.capitalize}\n\n")
62
+ end
63
+ end
64
+
65
+ # build_targets_files builds project related files
66
+ #
67
+ # @example:
68
+ # targetX/
69
+ # scanning_and_enumeration.md
70
+ # critical.md
71
+ # high.md
72
+ # medium.md
73
+ # low.md
74
+ # informational.md
75
+ # notes.md
76
+ def build_targets_files
77
+ puts '[-] '.bold + "Creating targets' files and directories."
78
+ target_main_files = %W[scanning_and_enumeration.md critical.md high.md medium.md low.md informational.md notes.md]
79
+
80
+ @list_of_targets.each do |target|
81
+ target = fix_project_naming(target)
82
+ target_files = target_main_files.dup
83
+ target_files.unshift "#{target}.md"
84
+ Dir.mkdir(target)
85
+ create_summary_record(target)
86
+ target_files.each do |t_file|
87
+ file_path = File.join(target, t_file)
88
+ heading1 = t_file.split('.md').first.capitalize # Each file's title
89
+ File.write(file_path, "# #{heading1}\n\n")
90
+ open(file_path, 'a') do |file|
91
+ file.puts "# #{heading1}\n\n"
92
+ file.puts build_target_notes if heading1.include? 'Notes'
93
+ end
94
+ create_summary_record(file_path.to_s) unless heading1 =~ /#{target}/i
95
+ end
96
+
97
+ end
98
+ end
99
+
100
+ # build_target_notes builds the content of notes file
101
+ def build_target_notes
102
+ <<~NOTES
103
+ ## To Be Checked
104
+
105
+
106
+ ## To Be Deleted
107
+
108
+ * Users
109
+ * user1
110
+ * user2
111
+ * Files/Directories/URL
112
+ * filepath1
113
+ * filepath1
114
+
115
+ NOTES
116
+ end
117
+
118
+ # Create summary records @see #build_targets_files
119
+ def create_summary_record(file_path)
120
+ record = File.open('SUMMARY.md', 'a+')
121
+ path = File.split file_path
122
+ title = path.last.split('.md').first.capitalize
123
+ path.delete_if {|p| p == '.'}
124
+ align = "#{' ' * path.index(path.last)}* "
125
+ file_path = "#{file_path}/#{file_path}.md" if File.directory? file_path
126
+ the_record = "#{align}[#{title}](#{file_path})"
127
+ record.puts the_record
128
+ record.close
129
+ print "\r#{the_record}".cls_upline
130
+ sleep 0.1
131
+ end
132
+
133
+ # README.md generator
134
+ def build_project_readme
135
+ readme = <<~README
136
+ # #{@project_name}
137
+ ## Customer Requests and Concerns
138
+ 1. No DoS Attacks
139
+ 2. Automated scan should be gentle at production time
140
+ 3. ABCDEFG
141
+
142
+ | Timeline | Date |
143
+ | :--- | :--- |
144
+ | Project Testing Start | 1/1/2030 |
145
+ | Project Testing End | 1/1/2030 |
146
+
147
+ ## Applications progress
148
+
149
+ | Host/IP | # of issues | Progress % | Issues | Notes | misc. |
150
+ | :--- | :--- | :--- | :--- | :--- | :--- |
151
+ #{@list_of_targets.map {|host| "|#{host} | | | | | |" }.join("\n")}
152
+
153
+ ### Point Of Contact
154
+ | Name | email | Mobile number | Job title/Role |
155
+ | :--- | :--- | :--- | :--- |
156
+ | Firstname Lastname | email2@email.com | 0550000000 | |
157
+
158
+ ### Source IP Addresses log
159
+ This list has to be regularly update!
160
+
161
+ | Engineer 1 | Engineer 2 |
162
+ | :--- | :--- |
163
+ | x.x.x.x | y.y.y.y |
164
+ | x.x.x.x | y.y.y.y |
165
+ | x.x.x.x | y.y.y.y |
166
+
167
+ ## Scope
168
+
169
+ **Approach:**
170
+
171
+ **IP ranges**
172
+
173
+ **Domains**
174
+
175
+ **Credentials**
176
+
177
+ ## Clean up
178
+ | Host | URL/Files | Description |
179
+ | :--- | :--- | :--- |
180
+ | | |
181
+ README
182
+ File.write('README.md', readme)
183
+ end
184
+
185
+ # general fixes
186
+ def general_fixes
187
+ # fix for book.json
188
+ File.write('book.json', '{ }')
189
+ # Create 'files' directory, general place for project related files and scripts
190
+ Dir.mkdir 'files'
191
+ end
192
+ end
193
+
194
+ end
@@ -0,0 +1,56 @@
1
+ module HackerNote
2
+ module Utils
3
+
4
+ # fix target/project name if the target is a URL (eg. http://example.com/app1/route2/)
5
+ # @return [String]
6
+ def fix_project_naming(project)
7
+ project.gsub(/http[:|s]+\/\//, '').gsub('/', '-').gsub(/-*$/, '')
8
+ end
9
+
10
+ def self.logo
11
+ slogan = 'The Cyber Daemons - '.reset + 'TechArch'.bold
12
+ %Q{
13
+ ______
14
+ '!!""""""""""""*!!'
15
+ .u$"!' .!!"$"
16
+ *$! 'z` ($!
17
+ +$- .$$&` !$!
18
+ +$- `$$$$3 !$!
19
+ +$' !! '!$! !! !$!
20
+ +$' ($$. !$! '$$! !$!
21
+ +$' $$$$ !$! $$$$ !$!
22
+ +$' .$" !$! 3$ !$!
23
+ ($! `$%` !3! .$% ($!
24
+ ($(` '"$! `*$"` ."$!
25
+ `($(` '"$!.($". ."$!
26
+ `($(` !$$%. ."$!
27
+ `!$%$! !$%$!
28
+ ` `
29
+ #{slogan}
30
+ }.red.bold
31
+ end
32
+
33
+ # banner
34
+ def self.banner
35
+ version = "v#{HackerNote::VERSION}".underline.reset
36
+ %Q{
37
+ ______ ____ ______ ____
38
+ | | .'. .~ ~.| ..''| |`````````, ..'''' |.. |.~ ~.`````|`````|
39
+ |_________| .''```. | |..'' |______ |'''|''''' .'' | ``.. | | | |______
40
+ | | .' `. | |``.. | | `. ..' | ``.. | | | |
41
+ | |.' `.`.______.'| ``..|__________| `....'' | ``|`.______.' | |___________
42
+ #{version}
43
+ }.bold
44
+ end
45
+
46
+ # ask method for interactive session with user
47
+ def ask(question, expected_answer)
48
+ answer = ''
49
+ until answer.match?(expected_answer)
50
+ answer = Readline.readline(question, true)
51
+ end
52
+
53
+ answer
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,3 @@
1
+ module HackerNote
2
+ VERSION = "1.0.0"
3
+ end
metadata ADDED
@@ -0,0 +1,68 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hackernote
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - KING SABRI
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-01-17 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: |-
14
+ Hacker's Note - A command-line tool creates gitbook compatible structure for pentest and read team projects.
15
+ Helps security professionals to organize their notes in a gitbook structure for PT/RT engagements.
16
+ email:
17
+ - king.sabri@gmail.com
18
+ executables:
19
+ - hackernote
20
+ extensions: []
21
+ extra_rdoc_files: []
22
+ files:
23
+ - ".gitignore"
24
+ - Gemfile
25
+ - LICENSE.txt
26
+ - README.md
27
+ - Rakefile
28
+ - bin/hackernote
29
+ - hackernote.gemspec
30
+ - lib/hackernote.rb
31
+ - lib/hackernote/extensions.rb
32
+ - lib/hackernote/git.rb
33
+ - lib/hackernote/gitbook_builder.rb
34
+ - lib/hackernote/utils.rb
35
+ - lib/hackernote/version.rb
36
+ homepage: https://github.com/TechArchSA/HackersNote
37
+ licenses:
38
+ - MIT
39
+ metadata: {}
40
+ post_install_message: "\e[1m\e[1m\e[31m\n ______\n '!!\"\"\"\"\"\"\"\"\"\"\"\"*!!'\n
41
+ \ .u$\"!' .!!\"$\"\n *$! 'z` ($!\n +$- .$$&`
42
+ \ !$!\n +$- `$$$$3 !$!\n +$' !! '!$! !! !$!\n +$'
43
+ \ ($$. !$! '$$! !$!\n +$' $$$$ !$! $$$$ !$!\n +$' .$\" !$! 3$
44
+ \ !$!\n ($! `$%` !3! .$% ($!\n ($(` '\"$! `*$\"` .\"$!\n `($(`
45
+ '\"$!.($\". .\"$!\n `($(` !$$%. .\"$!\n `!$%$! !$%$!\n `
46
+ \ `\n \e[0m\e[28mThe Cyber Daemons - \e[0m\e[1mTechArch\e[0m\n
47
+ \ \e[0m\e[0m"
48
+ rdoc_options: []
49
+ require_paths:
50
+ - lib
51
+ required_ruby_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ required_rubygems_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ requirements: []
62
+ rubyforge_project:
63
+ rubygems_version: 2.6.13
64
+ signing_key:
65
+ specification_version: 4
66
+ summary: Hacker's Note - A command-line tool creates gitbook compatible structure
67
+ for pentest and read team projects.
68
+ test_files: []