ronin-db 0.1.3 → 0.2.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +1 -0
- data/.gitignore +1 -0
- data/ChangeLog.md +28 -0
- data/Gemfile +6 -4
- data/README.md +17 -5
- data/Rakefile +13 -35
- data/data/completions/ronin-db +271 -0
- data/gemspec.yml +17 -2
- data/lib/ronin/db/cli/command.rb +1 -1
- data/lib/ronin/db/cli/commands/add.rb +1 -1
- data/lib/ronin/db/cli/commands/asn.rb +12 -2
- data/lib/ronin/db/cli/commands/certs.rb +322 -0
- data/lib/ronin/db/cli/commands/completion.rb +63 -0
- data/lib/ronin/db/cli/commands/creds.rb +2 -1
- data/lib/ronin/db/cli/commands/edit.rb +1 -1
- data/lib/ronin/db/cli/commands/emails.rb +22 -1
- data/lib/ronin/db/cli/commands/hosts.rb +2 -1
- data/lib/ronin/db/cli/commands/ips.rb +2 -1
- data/lib/ronin/db/cli/commands/irb.rb +8 -4
- data/lib/ronin/db/cli/commands/list.rb +1 -1
- data/lib/ronin/db/cli/commands/migrate.rb +12 -8
- data/lib/ronin/db/cli/commands/open_ports.rb +102 -0
- data/lib/ronin/db/cli/commands/oses.rb +95 -0
- data/lib/ronin/db/cli/commands/passwords.rb +83 -0
- data/lib/ronin/db/cli/commands/people.rb +185 -0
- data/lib/ronin/db/cli/commands/phone_numbers.rb +136 -0
- data/lib/ronin/db/cli/commands/ports.rb +103 -0
- data/lib/ronin/db/cli/commands/remove.rb +1 -1
- data/lib/ronin/db/cli/commands/services.rb +102 -0
- data/lib/ronin/db/cli/commands/software.rb +95 -0
- data/lib/ronin/db/cli/commands/street_addresses.rb +129 -0
- data/lib/ronin/db/cli/commands/urls.rb +2 -1
- data/lib/ronin/db/cli/commands/web_vulns.rb +235 -0
- data/lib/ronin/db/cli/database_options.rb +87 -0
- data/lib/ronin/db/cli/deletable.rb +85 -0
- data/lib/ronin/db/cli/importable.rb +108 -0
- data/lib/ronin/db/cli/model_command.rb +8 -6
- data/lib/ronin/db/cli/modifiable.rb +12 -104
- data/lib/ronin/db/cli/printing.rb +58 -0
- data/lib/ronin/db/cli/ruby_shell.rb +1 -1
- data/lib/ronin/db/cli/uri_methods.rb +1 -1
- data/lib/ronin/db/cli.rb +3 -1
- data/lib/ronin/db/config_file.rb +1 -1
- data/lib/ronin/db/exceptions.rb +1 -1
- data/lib/ronin/db/home.rb +1 -1
- data/lib/ronin/db/root.rb +1 -1
- data/lib/ronin/db/tasks.rb +87 -0
- data/lib/ronin/db/version.rb +2 -2
- data/lib/ronin/db.rb +15 -7
- data/man/ronin-db-add.1 +47 -69
- data/man/ronin-db-add.1.md +26 -22
- data/man/ronin-db-asn.1 +36 -54
- data/man/ronin-db-asn.1.md +29 -19
- data/man/ronin-db-certs.1 +108 -0
- data/man/ronin-db-certs.1.md +106 -0
- data/man/ronin-db-completion.1 +76 -0
- data/man/ronin-db-completion.1.md +78 -0
- data/man/ronin-db-creds.1 +28 -46
- data/man/ronin-db-creds.1.md +23 -16
- data/man/ronin-db-edit.1 +15 -26
- data/man/ronin-db-edit.1.md +11 -7
- data/man/ronin-db-emails.1 +36 -49
- data/man/ronin-db-emails.1.md +30 -17
- data/man/ronin-db-hosts.1 +31 -51
- data/man/ronin-db-hosts.1.md +25 -18
- data/man/ronin-db-ips.1 +31 -52
- data/man/ronin-db-ips.1.md +26 -19
- data/man/ronin-db-irb.1 +22 -35
- data/man/ronin-db-irb.1.md +17 -10
- data/man/ronin-db-list.1 +16 -30
- data/man/ronin-db-list.1.md +13 -9
- data/man/ronin-db-migrate.1 +22 -35
- data/man/ronin-db-migrate.1.md +17 -10
- data/man/ronin-db-open-ports.1 +72 -0
- data/man/ronin-db-open-ports.1.md +70 -0
- data/man/ronin-db-oses.1 +72 -0
- data/man/ronin-db-oses.1.md +70 -0
- data/man/ronin-db-passwords.1 +75 -0
- data/man/ronin-db-passwords.1.md +73 -0
- data/man/ronin-db-people.1 +96 -0
- data/man/ronin-db-people.1.md +94 -0
- data/man/ronin-db-phone-numbers.1 +93 -0
- data/man/ronin-db-phone-numbers.1.md +91 -0
- data/man/ronin-db-ports.1 +87 -0
- data/man/ronin-db-ports.1.md +85 -0
- data/man/ronin-db-remove.1 +15 -28
- data/man/ronin-db-remove.1.md +12 -8
- data/man/ronin-db-services.1 +84 -0
- data/man/ronin-db-services.1.md +82 -0
- data/man/ronin-db-software.1 +72 -0
- data/man/ronin-db-software.1.md +70 -0
- data/man/ronin-db-street-addresses.1 +81 -0
- data/man/ronin-db-street-addresses.1.md +79 -0
- data/man/ronin-db-urls.1 +37 -60
- data/man/ronin-db-urls.1.md +28 -21
- data/man/ronin-db-web-vulns.1 +87 -0
- data/man/ronin-db-web-vulns.1.md +85 -0
- data/man/ronin-db.1 +118 -0
- data/man/ronin-db.1.md +99 -0
- data/scripts/setup +58 -0
- metadata +52 -9
- data/lib/ronin/db/cli/database_command.rb +0 -71
- data/lib/ronin/db/cli/resources_command.rb +0 -118
| @@ -0,0 +1,102 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
            #
         | 
| 3 | 
            +
            # ronin-db - A common database library for managing and querying security data.
         | 
| 4 | 
            +
            #
         | 
| 5 | 
            +
            # Copyright (c) 2006-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
         | 
| 6 | 
            +
            #
         | 
| 7 | 
            +
            # ronin-db is free software: you can redistribute it and/or modify
         | 
| 8 | 
            +
            # it under the terms of the GNU Lesser General Public License as published
         | 
| 9 | 
            +
            # by the Free Software Foundation, either version 3 of the License, or
         | 
| 10 | 
            +
            # (at your option) any later version.
         | 
| 11 | 
            +
            #
         | 
| 12 | 
            +
            # ronin-db is distributed in the hope that it will be useful,
         | 
| 13 | 
            +
            # but WITHOUT ANY WARRANTY; without even the implied warranty of
         | 
| 14 | 
            +
            # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
         | 
| 15 | 
            +
            # GNU Lesser General Public License for more details.
         | 
| 16 | 
            +
            #
         | 
| 17 | 
            +
            # You should have received a copy of the GNU Lesser General Public License
         | 
| 18 | 
            +
            # along with ronin-db.  If not, see <https://www.gnu.org/licenses/>.
         | 
| 19 | 
            +
            #
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            require 'ronin/db/cli/model_command'
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            module Ronin
         | 
| 24 | 
            +
              module DB
         | 
| 25 | 
            +
                class CLI
         | 
| 26 | 
            +
                  module Commands
         | 
| 27 | 
            +
                    #
         | 
| 28 | 
            +
                    # Manages all OpenPorts in the database.
         | 
| 29 | 
            +
                    #
         | 
| 30 | 
            +
                    # ## Usage
         | 
| 31 | 
            +
                    #
         | 
| 32 | 
            +
                    #     ronin-db open-ports [options]
         | 
| 33 | 
            +
                    #
         | 
| 34 | 
            +
                    # ## Options
         | 
| 35 | 
            +
                    #
         | 
| 36 | 
            +
                    #         --db NAME                    The database to connect to (Default: default)
         | 
| 37 | 
            +
                    #         --db-uri URI                 The database URI to connect to
         | 
| 38 | 
            +
                    #         --db-file PATH               The sqlite3 database file to use
         | 
| 39 | 
            +
                    #     -v, --verbose                    Enables verbose output
         | 
| 40 | 
            +
                    #         --add VALUE                  Adds a value to the database
         | 
| 41 | 
            +
                    #         --import FILE                Imports the values from the FILE into the database
         | 
| 42 | 
            +
                    #         --delete VALUE               Deletes a value from the database
         | 
| 43 | 
            +
                    #         --delete-all                 Deletes all values from the database
         | 
| 44 | 
            +
                    #     -p, --with-port PORT             Searches for all OpenPorts associated with the PORT number
         | 
| 45 | 
            +
                    #     -P, --with-protocol tcp|udp      Searches for all OpenPorts associated with the protocol
         | 
| 46 | 
            +
                    #     -S, --with-service SERVICE       Searches for all OpenPorts associated with the SERVICE
         | 
| 47 | 
            +
                    #     -I, --with-ip IP                 Searches for all OpenPorts associated with the IP
         | 
| 48 | 
            +
                    #     -h, --help                       Print help information
         | 
| 49 | 
            +
                    #
         | 
| 50 | 
            +
                    # @since 0.2.0
         | 
| 51 | 
            +
                    #
         | 
| 52 | 
            +
                    class OpenPorts < ModelCommand
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                      command_name 'open-ports'
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                      model_file 'ronin/db/open_port'
         | 
| 57 | 
            +
                      model_name 'OpenPort'
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                      option :with_port, short: '-p',
         | 
| 60 | 
            +
                                         value: {
         | 
| 61 | 
            +
                                           type: Integer,
         | 
| 62 | 
            +
                                           usage: 'PORT'
         | 
| 63 | 
            +
                                         },
         | 
| 64 | 
            +
                                         desc: 'Searches for all OpenPorts with the PORT number' do |port|
         | 
| 65 | 
            +
                                           @query_method_calls << [:with_port_number, [port]]
         | 
| 66 | 
            +
                                         end
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                      option :with_protocol, short: '-P',
         | 
| 69 | 
            +
                                             value: {
         | 
| 70 | 
            +
                                               type: [:tcp, :udp]
         | 
| 71 | 
            +
                                             },
         | 
| 72 | 
            +
                                             desc: 'Searches for all OpenPorts associated with the protocol' do |protocol|
         | 
| 73 | 
            +
                                               @query_method_calls << [:with_protocol, [protocol]]
         | 
| 74 | 
            +
                                             end
         | 
| 75 | 
            +
             | 
| 76 | 
            +
                      option :with_service, short: '-S',
         | 
| 77 | 
            +
                                            value: {
         | 
| 78 | 
            +
                                              type:  String,
         | 
| 79 | 
            +
                                              usage: 'SERVICE'
         | 
| 80 | 
            +
                                            },
         | 
| 81 | 
            +
                                            desc: 'Searches for all OpenPorts associated with the SERVICE' do |service|
         | 
| 82 | 
            +
                                              @query_method_calls << [:with_service_name, [service]]
         | 
| 83 | 
            +
                                            end
         | 
| 84 | 
            +
             | 
| 85 | 
            +
                      option :with_ip, short: '-I',
         | 
| 86 | 
            +
                                       value: {
         | 
| 87 | 
            +
                                         type:  String,
         | 
| 88 | 
            +
                                         usage: 'IP'
         | 
| 89 | 
            +
                                       },
         | 
| 90 | 
            +
                                       desc: 'Searches for all OpenPorts associated with the IP' do |ip|
         | 
| 91 | 
            +
                                         @query_method_calls << [:with_ip_address, [ip]]
         | 
| 92 | 
            +
                                       end
         | 
| 93 | 
            +
             | 
| 94 | 
            +
                      description 'Queries OpenPorts'
         | 
| 95 | 
            +
             | 
| 96 | 
            +
                      man_page 'ronin-db-open-ports.1'
         | 
| 97 | 
            +
             | 
| 98 | 
            +
                    end
         | 
| 99 | 
            +
                  end
         | 
| 100 | 
            +
                end
         | 
| 101 | 
            +
              end
         | 
| 102 | 
            +
            end
         | 
| @@ -0,0 +1,95 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
            #
         | 
| 3 | 
            +
            # ronin-db - A common database library for managing and querying security data.
         | 
| 4 | 
            +
            #
         | 
| 5 | 
            +
            # Copyright (c) 2006-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
         | 
| 6 | 
            +
            #
         | 
| 7 | 
            +
            # ronin-db is free software: you can redistribute it and/or modify
         | 
| 8 | 
            +
            # it under the terms of the GNU Lesser General Public License as published
         | 
| 9 | 
            +
            # by the Free Software Foundation, either version 3 of the License, or
         | 
| 10 | 
            +
            # (at your option) any later version.
         | 
| 11 | 
            +
            #
         | 
| 12 | 
            +
            # ronin-db is distributed in the hope that it will be useful,
         | 
| 13 | 
            +
            # but WITHOUT ANY WARRANTY; without even the implied warranty of
         | 
| 14 | 
            +
            # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
         | 
| 15 | 
            +
            # GNU Lesser General Public License for more details.
         | 
| 16 | 
            +
            #
         | 
| 17 | 
            +
            # You should have received a copy of the GNU Lesser General Public License
         | 
| 18 | 
            +
            # along with ronin-db.  If not, see <https://www.gnu.org/licenses/>.
         | 
| 19 | 
            +
            #
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            require 'ronin/db/cli/model_command'
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            module Ronin
         | 
| 24 | 
            +
              module DB
         | 
| 25 | 
            +
                class CLI
         | 
| 26 | 
            +
                  module Commands
         | 
| 27 | 
            +
                    #
         | 
| 28 | 
            +
                    # Queries all OSes in the database.
         | 
| 29 | 
            +
                    #
         | 
| 30 | 
            +
                    # ## Usage
         | 
| 31 | 
            +
                    #
         | 
| 32 | 
            +
                    #     ronin-db oses [options]
         | 
| 33 | 
            +
                    #
         | 
| 34 | 
            +
                    # ## Options
         | 
| 35 | 
            +
                    #
         | 
| 36 | 
            +
                    #         --db NAME                    The database to connect to (Default: default)
         | 
| 37 | 
            +
                    #         --db-uri URI                 The database URI to connect to
         | 
| 38 | 
            +
                    #         --db-file PATH               The sqlite3 database file to use
         | 
| 39 | 
            +
                    #     -v, --verbose                    Enables verbose output
         | 
| 40 | 
            +
                    #     -N, --name NAME                  Searches for all OSes records with the matching name
         | 
| 41 | 
            +
                    #         --named NAME                 Searches for all OSes containing the NAME
         | 
| 42 | 
            +
                    #     -F, --flavor linux|bsd           Searches for all OSes with the flavor
         | 
| 43 | 
            +
                    #     -V, --version VERSION            Searches for all OSes with the VERSION
         | 
| 44 | 
            +
                    #     -h, --help                       Print help information
         | 
| 45 | 
            +
                    #
         | 
| 46 | 
            +
                    # @since 0.2.0
         | 
| 47 | 
            +
                    #
         | 
| 48 | 
            +
                    class Oses < ModelCommand
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                      model_file 'ronin/db/os'
         | 
| 51 | 
            +
                      model_name 'OS'
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                      option :name, short: '-N',
         | 
| 54 | 
            +
                                    value: {
         | 
| 55 | 
            +
                                      type:  String,
         | 
| 56 | 
            +
                                      usage: 'NAME'
         | 
| 57 | 
            +
                                    },
         | 
| 58 | 
            +
                                    desc: 'Searches for all OSes records with the matching name' do |name|
         | 
| 59 | 
            +
                                      @query_method_calls << [:with_name, [name]]
         | 
| 60 | 
            +
                                    end
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                      option :named, value: {
         | 
| 63 | 
            +
                                       type:  String,
         | 
| 64 | 
            +
                                       usage: 'NAME'
         | 
| 65 | 
            +
                                     },
         | 
| 66 | 
            +
                                     desc: 'Searches for all OSes containing the NAME' do |name|
         | 
| 67 | 
            +
                                       @query_method_calls << [:named, [name]]
         | 
| 68 | 
            +
                                     end
         | 
| 69 | 
            +
             | 
| 70 | 
            +
                      option :flavor, short: '-F',
         | 
| 71 | 
            +
                                      value: {
         | 
| 72 | 
            +
                                        type: [:linux, :bsd]
         | 
| 73 | 
            +
                                      },
         | 
| 74 | 
            +
                                      desc: 'Searches for all OSes with the flavor' do |flavor|
         | 
| 75 | 
            +
                                        @query_method_calls << [:with_flavor, [flavor]]
         | 
| 76 | 
            +
                                      end
         | 
| 77 | 
            +
             | 
| 78 | 
            +
                      option :version, short: '-V',
         | 
| 79 | 
            +
                                       value: {
         | 
| 80 | 
            +
                                         type:  String,
         | 
| 81 | 
            +
                                         usage: 'VERSION'
         | 
| 82 | 
            +
                                       },
         | 
| 83 | 
            +
                                       desc: 'Searches for all OSes with the VERSION' do |version|
         | 
| 84 | 
            +
                                         @query_method_calls << [:with_version, [version]]
         | 
| 85 | 
            +
                                       end
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                      description 'Queries OSes'
         | 
| 88 | 
            +
             | 
| 89 | 
            +
                      man_page 'ronin-db-oses.1'
         | 
| 90 | 
            +
             | 
| 91 | 
            +
                    end
         | 
| 92 | 
            +
                  end
         | 
| 93 | 
            +
                end
         | 
| 94 | 
            +
              end
         | 
| 95 | 
            +
            end
         | 
| @@ -0,0 +1,83 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
            #
         | 
| 3 | 
            +
            # ronin-db - A common database library for managing and querying security data.
         | 
| 4 | 
            +
            #
         | 
| 5 | 
            +
            # Copyright (c) 2006-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
         | 
| 6 | 
            +
            #
         | 
| 7 | 
            +
            # ronin-db is free software: you can redistribute it and/or modify
         | 
| 8 | 
            +
            # it under the terms of the GNU Lesser General Public License as published
         | 
| 9 | 
            +
            # by the Free Software Foundation, either version 3 of the License, or
         | 
| 10 | 
            +
            # (at your option) any later version.
         | 
| 11 | 
            +
            #
         | 
| 12 | 
            +
            # ronin-db is distributed in the hope that it will be useful,
         | 
| 13 | 
            +
            # but WITHOUT ANY WARRANTY; without even the implied warranty of
         | 
| 14 | 
            +
            # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
         | 
| 15 | 
            +
            # GNU Lesser General Public License for more details.
         | 
| 16 | 
            +
            #
         | 
| 17 | 
            +
            # You should have received a copy of the GNU Lesser General Public License
         | 
| 18 | 
            +
            # along with ronin-db.  If not, see <https://www.gnu.org/licenses/>.
         | 
| 19 | 
            +
            #
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            require 'ronin/db/cli/model_command'
         | 
| 22 | 
            +
            require 'ronin/db/cli/modifiable'
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            module Ronin
         | 
| 25 | 
            +
              module DB
         | 
| 26 | 
            +
                class CLI
         | 
| 27 | 
            +
                  module Commands
         | 
| 28 | 
            +
                    #
         | 
| 29 | 
            +
                    # Manages all Passwords in the database.
         | 
| 30 | 
            +
                    #
         | 
| 31 | 
            +
                    # ## Usage
         | 
| 32 | 
            +
                    #
         | 
| 33 | 
            +
                    #     ronin-db passwords [options]
         | 
| 34 | 
            +
                    #
         | 
| 35 | 
            +
                    # ## Options
         | 
| 36 | 
            +
                    #
         | 
| 37 | 
            +
                    #         --db NAME                    The database to connect to (Default: default)
         | 
| 38 | 
            +
                    #         --db-uri URI                 The database URI to connect to
         | 
| 39 | 
            +
                    #         --db-file PATH               The sqlite3 database file to use
         | 
| 40 | 
            +
                    #     -v, --verbose                    Enables verbose output
         | 
| 41 | 
            +
                    #         --add VALUE                  Adds a value to the database
         | 
| 42 | 
            +
                    #         --import FILE                Imports the values from the FILE into the database
         | 
| 43 | 
            +
                    #         --delete VALUE               Deletes a value from the database
         | 
| 44 | 
            +
                    #         --delete-all                 Deletes all values from the database
         | 
| 45 | 
            +
                    #     -u, --for-user USER              Searches for all Passwords associated with the USER name
         | 
| 46 | 
            +
                    #     -e, --with-email EMAIL           Searches for all Passwords associated with the EMAIL address
         | 
| 47 | 
            +
                    #
         | 
| 48 | 
            +
                    # @since 0.2.0
         | 
| 49 | 
            +
                    #
         | 
| 50 | 
            +
                    class Passwords < ModelCommand
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                      include Modifiable
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                      model_file 'ronin/db/password'
         | 
| 55 | 
            +
                      model_name 'Password'
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                      option :for_user, short: '-u',
         | 
| 58 | 
            +
                                        value: {
         | 
| 59 | 
            +
                                          type:  String,
         | 
| 60 | 
            +
                                          usage: 'USER'
         | 
| 61 | 
            +
                                        },
         | 
| 62 | 
            +
                                        desc: 'Searches for all Passwords associated with the USER name' do |user|
         | 
| 63 | 
            +
                                          @query_method_calls << [:for_user, [user]]
         | 
| 64 | 
            +
                                        end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                      option :with_email, short: '-e',
         | 
| 67 | 
            +
                                          value: {
         | 
| 68 | 
            +
                                            type: String,
         | 
| 69 | 
            +
                                            usage: 'EMAIL'
         | 
| 70 | 
            +
                                          },
         | 
| 71 | 
            +
                                          desc: 'Searches for all Passwords associated with the EMAIL address' do |email|
         | 
| 72 | 
            +
                                            @query_method_calls << [:with_email_address, [email]]
         | 
| 73 | 
            +
                                          end
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                      description 'Manages all Passwords in the database'
         | 
| 76 | 
            +
             | 
| 77 | 
            +
                      man_page 'ronin-db-passwords.1'
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                    end
         | 
| 80 | 
            +
                  end
         | 
| 81 | 
            +
                end
         | 
| 82 | 
            +
              end
         | 
| 83 | 
            +
            end
         | 
| @@ -0,0 +1,185 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
            #
         | 
| 3 | 
            +
            # ronin-db - A common database library for managing and querying security data.
         | 
| 4 | 
            +
            #
         | 
| 5 | 
            +
            # Copyright (c) 2006-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
         | 
| 6 | 
            +
            #
         | 
| 7 | 
            +
            # ronin-db is free software: you can redistribute it and/or modify
         | 
| 8 | 
            +
            # it under the terms of the GNU Lesser General Public License as published
         | 
| 9 | 
            +
            # by the Free Software Foundation, either version 3 of the License, or
         | 
| 10 | 
            +
            # (at your option) any later version.
         | 
| 11 | 
            +
            #
         | 
| 12 | 
            +
            # ronin-db is distributed in the hope that it will be useful,
         | 
| 13 | 
            +
            # but WITHOUT ANY WARRANTY; without even the implied warranty of
         | 
| 14 | 
            +
            # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
         | 
| 15 | 
            +
            # GNU Lesser General Public License for more details.
         | 
| 16 | 
            +
            #
         | 
| 17 | 
            +
            # You should have received a copy of the GNU Lesser General Public License
         | 
| 18 | 
            +
            # along with ronin-db.  If not, see <https://www.gnu.org/licenses/>.
         | 
| 19 | 
            +
            #
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            require 'ronin/db/cli/model_command'
         | 
| 22 | 
            +
            require 'ronin/db/cli/modifiable'
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            module Ronin
         | 
| 25 | 
            +
              module DB
         | 
| 26 | 
            +
                class CLI
         | 
| 27 | 
            +
                  module Commands
         | 
| 28 | 
            +
                    #
         | 
| 29 | 
            +
                    # Manages all People in the database.
         | 
| 30 | 
            +
                    #
         | 
| 31 | 
            +
                    # ## Usage
         | 
| 32 | 
            +
                    #
         | 
| 33 | 
            +
                    #     ronin-db people [options]
         | 
| 34 | 
            +
                    #
         | 
| 35 | 
            +
                    # ## Options
         | 
| 36 | 
            +
                    #
         | 
| 37 | 
            +
                    #         --db NAME                    The database to connect to (Default: default)
         | 
| 38 | 
            +
                    #         --db-uri URI                 The database URI to connect to
         | 
| 39 | 
            +
                    #         --db-file PATH               The sqlite3 database file to use
         | 
| 40 | 
            +
                    #     -v, --verbose                    Enables verbose output
         | 
| 41 | 
            +
                    #         --add VALUE                  Adds a value to the database
         | 
| 42 | 
            +
                    #         --import FILE                Imports the values from the FILE into the database
         | 
| 43 | 
            +
                    #         --delete VALUE               Deletes a value from the database
         | 
| 44 | 
            +
                    #         --delete-all                 Deletes all values from the database
         | 
| 45 | 
            +
                    #     -a, --for-address ADDRESS        Searches for all People associated with the street address
         | 
| 46 | 
            +
                    #     -c, --for-city CITY              Searches for all People associated with the city
         | 
| 47 | 
            +
                    #     -s, --for-state STATE            Searches for all People associated with the state
         | 
| 48 | 
            +
                    #     -s, --for-province PROVINCE      Searches for all People associated with the province
         | 
| 49 | 
            +
                    #     -z, --for-zipcode ZIPCODE        Searches for all People associated with the zipcode
         | 
| 50 | 
            +
                    #     -C, --for-country COUNTRY        Searches for all People associated with the Country
         | 
| 51 | 
            +
                    #     -P, --with-prefix PREFIX         Searches for all People with the prefix
         | 
| 52 | 
            +
                    #     -f, --with-first-name NAME       Searches for all People with the first name
         | 
| 53 | 
            +
                    #     -m, --with-middle-name NAME      Searches for all People with the middle name
         | 
| 54 | 
            +
                    #     -M INITIAL,                      Searches for all People with the middle name
         | 
| 55 | 
            +
                    #         --with-middle-initial
         | 
| 56 | 
            +
                    #     -l, --with-last-name NAME        Searches for all People with the last name
         | 
| 57 | 
            +
                    #     -S, --with-suffix SUFFIX         Searches for all People with the suffix
         | 
| 58 | 
            +
                    #     -h, --help                       Print help information
         | 
| 59 | 
            +
                    #
         | 
| 60 | 
            +
                    # @since 0.2.0
         | 
| 61 | 
            +
                    #
         | 
| 62 | 
            +
                    class People < ModelCommand
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                      include Modifiable
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                      model_file 'ronin/db/person'
         | 
| 67 | 
            +
                      model_name 'Person'
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                      option :for_address, short: '-a',
         | 
| 70 | 
            +
                                           value: {
         | 
| 71 | 
            +
                                             type:  String,
         | 
| 72 | 
            +
                                             usage: 'ADDRESS'
         | 
| 73 | 
            +
                                           },
         | 
| 74 | 
            +
                                           desc: 'Searches for all People associated with the street address' do |address|
         | 
| 75 | 
            +
                                             @query_method_calls << [:for_address, [address]]
         | 
| 76 | 
            +
                                           end
         | 
| 77 | 
            +
             | 
| 78 | 
            +
                      option :for_city, short: '-c',
         | 
| 79 | 
            +
                                        value: {
         | 
| 80 | 
            +
                                          type:  String,
         | 
| 81 | 
            +
                                          usage: 'CITY'
         | 
| 82 | 
            +
                                        },
         | 
| 83 | 
            +
                                        desc: 'Searches for all People associated with the city' do |city|
         | 
| 84 | 
            +
                                          @query_method_calls << [:for_city, [city]]
         | 
| 85 | 
            +
                                        end
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                      option :for_state, short: '-s',
         | 
| 88 | 
            +
                                         value: {
         | 
| 89 | 
            +
                                           type:  String,
         | 
| 90 | 
            +
                                           usage: 'STATE'
         | 
| 91 | 
            +
                                         },
         | 
| 92 | 
            +
                                         desc: 'Searches for all People associated with the state' do |state|
         | 
| 93 | 
            +
                                           @query_method_calls << [:for_state, [state]]
         | 
| 94 | 
            +
                                         end
         | 
| 95 | 
            +
             | 
| 96 | 
            +
                      option :for_province, short: '-p',
         | 
| 97 | 
            +
                                            value: {
         | 
| 98 | 
            +
                                              type:  String,
         | 
| 99 | 
            +
                                              usage: 'PROVINCE'
         | 
| 100 | 
            +
                                            },
         | 
| 101 | 
            +
                                            desc: 'Searches for all People associated with the province' do |province|
         | 
| 102 | 
            +
                                              @query_method_calls << [:for_province, [province]]
         | 
| 103 | 
            +
                                            end
         | 
| 104 | 
            +
             | 
| 105 | 
            +
                      option :for_zipcode, short: '-z',
         | 
| 106 | 
            +
                                           value: {
         | 
| 107 | 
            +
                                             type:  String,
         | 
| 108 | 
            +
                                             usage: 'ZIPCODE'
         | 
| 109 | 
            +
                                           },
         | 
| 110 | 
            +
                                           desc: 'Searches for all People associated with the zipcode' do |zipcode|
         | 
| 111 | 
            +
                                             @query_method_calls << [:for_zipcode, [zipcode]]
         | 
| 112 | 
            +
                                           end
         | 
| 113 | 
            +
             | 
| 114 | 
            +
                      option :for_country, short: '-C',
         | 
| 115 | 
            +
                                           value: {
         | 
| 116 | 
            +
                                             type:  String,
         | 
| 117 | 
            +
                                             usage: 'COUNTRY'
         | 
| 118 | 
            +
                                           },
         | 
| 119 | 
            +
                                           desc: 'Searches for all People associated with the Country' do |country|
         | 
| 120 | 
            +
                                             @query_method_calls << [:for_country, [country]]
         | 
| 121 | 
            +
                                           end
         | 
| 122 | 
            +
             | 
| 123 | 
            +
                      option :with_prefix, short: '-P',
         | 
| 124 | 
            +
                                           value: {
         | 
| 125 | 
            +
                                             type:  String,
         | 
| 126 | 
            +
                                             usage: 'PREFIX'
         | 
| 127 | 
            +
                                           },
         | 
| 128 | 
            +
                                           desc: 'Searches for all People with the prefix' do |prefix|
         | 
| 129 | 
            +
                                             @query_method_calls << [:with_prefix, [prefix]]
         | 
| 130 | 
            +
                                           end
         | 
| 131 | 
            +
             | 
| 132 | 
            +
                      option :with_first_name, short: '-f',
         | 
| 133 | 
            +
                                               value: {
         | 
| 134 | 
            +
                                                 type:  String,
         | 
| 135 | 
            +
                                                 usage: 'NAME'
         | 
| 136 | 
            +
                                               },
         | 
| 137 | 
            +
                                               desc: 'Searches for all People with the first name' do |name|
         | 
| 138 | 
            +
                                                 @query_method_calls << [:with_first_name, [name]]
         | 
| 139 | 
            +
                                               end
         | 
| 140 | 
            +
             | 
| 141 | 
            +
                      option :with_middle_name, short: '-m',
         | 
| 142 | 
            +
                                                value: {
         | 
| 143 | 
            +
                                                  type:  String,
         | 
| 144 | 
            +
                                                  usage: 'NAME'
         | 
| 145 | 
            +
                                                },
         | 
| 146 | 
            +
                                                desc: 'Searches for all People with the middle name' do |name|
         | 
| 147 | 
            +
                                                  @query_method_calls << [:with_middle_name, [name]]
         | 
| 148 | 
            +
                                                end
         | 
| 149 | 
            +
             | 
| 150 | 
            +
                      option :with_middle_initial, short: '-M',
         | 
| 151 | 
            +
                                                   value: {
         | 
| 152 | 
            +
                                                     type:  String,
         | 
| 153 | 
            +
                                                     usage: 'INITIAL'
         | 
| 154 | 
            +
                                                   },
         | 
| 155 | 
            +
                                                   desc: 'Searches for all People with the middle name' do |initial|
         | 
| 156 | 
            +
                                                     @query_method_calls << [:with_middle_initial, [initial]]
         | 
| 157 | 
            +
                                                   end
         | 
| 158 | 
            +
             | 
| 159 | 
            +
                      option :with_last_name, short: '-l',
         | 
| 160 | 
            +
                                              value: {
         | 
| 161 | 
            +
                                                type:  String,
         | 
| 162 | 
            +
                                                usage: 'NAME'
         | 
| 163 | 
            +
                                              },
         | 
| 164 | 
            +
                                              desc: 'Searches for all People with the last name' do |name|
         | 
| 165 | 
            +
                                                @query_method_calls << [:with_last_name, [name]]
         | 
| 166 | 
            +
                                              end
         | 
| 167 | 
            +
             | 
| 168 | 
            +
                      option :with_suffix, short: '-S',
         | 
| 169 | 
            +
                                           value: {
         | 
| 170 | 
            +
                                             type:  String,
         | 
| 171 | 
            +
                                             usage: 'SUFFIX'
         | 
| 172 | 
            +
                                           },
         | 
| 173 | 
            +
                                           desc: 'Searches for all People with the suffix' do |suffix|
         | 
| 174 | 
            +
                                             @query_method_calls << [:with_suffix, [suffix]]
         | 
| 175 | 
            +
                                           end
         | 
| 176 | 
            +
             | 
| 177 | 
            +
                      description 'Queries People'
         | 
| 178 | 
            +
             | 
| 179 | 
            +
                      man_page 'ronin-db-people.1'
         | 
| 180 | 
            +
             | 
| 181 | 
            +
                    end
         | 
| 182 | 
            +
                  end
         | 
| 183 | 
            +
                end
         | 
| 184 | 
            +
              end
         | 
| 185 | 
            +
            end
         | 
| @@ -0,0 +1,136 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
            #
         | 
| 3 | 
            +
            # ronin-db - A common database library for managing and querying security data.
         | 
| 4 | 
            +
            #
         | 
| 5 | 
            +
            # Copyright (c) 2006-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
         | 
| 6 | 
            +
            #
         | 
| 7 | 
            +
            # ronin-db is free software: you can redistribute it and/or modify
         | 
| 8 | 
            +
            # it under the terms of the GNU Lesser General Public License as published
         | 
| 9 | 
            +
            # by the Free Software Foundation, either version 3 of the License, or
         | 
| 10 | 
            +
            # (at your option) any later version.
         | 
| 11 | 
            +
            #
         | 
| 12 | 
            +
            # ronin-db is distributed in the hope that it will be useful,
         | 
| 13 | 
            +
            # but WITHOUT ANY WARRANTY; without even the implied warranty of
         | 
| 14 | 
            +
            # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
         | 
| 15 | 
            +
            # GNU Lesser General Public License for more details.
         | 
| 16 | 
            +
            #
         | 
| 17 | 
            +
            # You should have received a copy of the GNU Lesser General Public License
         | 
| 18 | 
            +
            # along with ronin-db.  If not, see <https://www.gnu.org/licenses/>.
         | 
| 19 | 
            +
            #
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            require 'ronin/db/cli/model_command'
         | 
| 22 | 
            +
            require 'ronin/db/cli/modifiable'
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            module Ronin
         | 
| 25 | 
            +
              module DB
         | 
| 26 | 
            +
                class CLI
         | 
| 27 | 
            +
                  module Commands
         | 
| 28 | 
            +
                    #
         | 
| 29 | 
            +
                    # Manages all PhoneNumbers in the database.
         | 
| 30 | 
            +
                    #
         | 
| 31 | 
            +
                    # ## Usage
         | 
| 32 | 
            +
                    #
         | 
| 33 | 
            +
                    #     ronin-db phone-numbers [options]
         | 
| 34 | 
            +
                    #
         | 
| 35 | 
            +
                    # ## Options
         | 
| 36 | 
            +
                    #
         | 
| 37 | 
            +
                    #         --db NAME                    The database to connect to (Default: default)
         | 
| 38 | 
            +
                    #         --db-uri URI                 The database URI to connect to
         | 
| 39 | 
            +
                    #         --db-file PATH               The sqlite3 database file to use
         | 
| 40 | 
            +
                    #     -v, --verbose                    Enables verbose output
         | 
| 41 | 
            +
                    #         --add VALUE                  Adds a value to the database
         | 
| 42 | 
            +
                    #         --import FILE                Imports the values from the FILE into the database
         | 
| 43 | 
            +
                    #         --delete VALUE               Deletes a value from the database
         | 
| 44 | 
            +
                    #         --delete-all                 Deletes all values from the database
         | 
| 45 | 
            +
                    #     -P, --for-person FULL_NAME       Searches for phone numbers associated with the person's full name
         | 
| 46 | 
            +
                    #     -O, --for-organization NAME      Searches for phone numbers associated with the organization's name
         | 
| 47 | 
            +
                    #     -c, --with-country-code NUM      Searches for phone numbers with the country code
         | 
| 48 | 
            +
                    #     -a, --with-area-code NUM         Searches for phone numbers with the area code
         | 
| 49 | 
            +
                    #     -p, --with-prefix NUM            Searches for phone numbers with the prefix
         | 
| 50 | 
            +
                    #     -l, --with-line-number NUM       Searches for phone numbers with the line number
         | 
| 51 | 
            +
                    #     -S, --similar-to PHONE_NUMBER    Searches for phone numbers similar to another phone number
         | 
| 52 | 
            +
                    #     -h, --help                       Print help information
         | 
| 53 | 
            +
                    #
         | 
| 54 | 
            +
                    # @since 0.2.0
         | 
| 55 | 
            +
                    #
         | 
| 56 | 
            +
                    class PhoneNumbers < ModelCommand
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                      include Modifiable
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                      command_name 'phone-numbers'
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                      model_file 'ronin/db/phone_number'
         | 
| 63 | 
            +
                      model_name 'PhoneNumber'
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                      option :for_person, short: '-P',
         | 
| 66 | 
            +
                                          value: {
         | 
| 67 | 
            +
                                            type:  String,
         | 
| 68 | 
            +
                                            usage: 'FULL_NAME'
         | 
| 69 | 
            +
                                          },
         | 
| 70 | 
            +
                                          desc: "Searches for phone numbers associated with the person's full name" do |full_name|
         | 
| 71 | 
            +
                                            @query_method_calls << [:for_person, [full_name]]
         | 
| 72 | 
            +
                                          end
         | 
| 73 | 
            +
             | 
| 74 | 
            +
                      option :for_organization, short: '-O',
         | 
| 75 | 
            +
                                                value: {
         | 
| 76 | 
            +
                                                  type:  String,
         | 
| 77 | 
            +
                                                  usage: 'NAME'
         | 
| 78 | 
            +
                                                },
         | 
| 79 | 
            +
                                                desc: "Searches for phone numbers associated with the organization's name" do |name|
         | 
| 80 | 
            +
                                                  @query_method_calls << [:for_organization, [name]]
         | 
| 81 | 
            +
                                                end
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                      option :with_country_code, short: '-c',
         | 
| 84 | 
            +
                                                 value: {
         | 
| 85 | 
            +
                                                   type:  String,
         | 
| 86 | 
            +
                                                   usage: 'NUM'
         | 
| 87 | 
            +
                                                 },
         | 
| 88 | 
            +
                                                 desc: 'Searches for phone numbers with the country code' do |country_code|
         | 
| 89 | 
            +
                                                   @query_method_calls << [:with_country_code, country_code]
         | 
| 90 | 
            +
                                                 end
         | 
| 91 | 
            +
             | 
| 92 | 
            +
                      option :with_area_code, short: '-a',
         | 
| 93 | 
            +
                                              value: {
         | 
| 94 | 
            +
                                                type:  String,
         | 
| 95 | 
            +
                                                usage: 'NUM'
         | 
| 96 | 
            +
                                              },
         | 
| 97 | 
            +
                                              desc: 'Searches for phone numbers with the area code' do |area_code|
         | 
| 98 | 
            +
                                                @query_method_calls << [:with_area_code, area_code]
         | 
| 99 | 
            +
                                              end
         | 
| 100 | 
            +
             | 
| 101 | 
            +
                      option :with_prefix, short: '-p',
         | 
| 102 | 
            +
                                           value: {
         | 
| 103 | 
            +
                                             type:  String,
         | 
| 104 | 
            +
                                             usage: 'NUM'
         | 
| 105 | 
            +
                                           },
         | 
| 106 | 
            +
                                           desc: 'Searches for phone numbers with the prefix' do |prefix|
         | 
| 107 | 
            +
                                             @query_method_calls << [:with_prefix, prefix]
         | 
| 108 | 
            +
                                           end
         | 
| 109 | 
            +
             | 
| 110 | 
            +
                      option :with_line_number, short: '-l',
         | 
| 111 | 
            +
                                                value: {
         | 
| 112 | 
            +
                                                  type:  String,
         | 
| 113 | 
            +
                                                  usage: 'NUM'
         | 
| 114 | 
            +
                                                },
         | 
| 115 | 
            +
                                                desc: 'Searches for phone numbers with the line number' do |line_number|
         | 
| 116 | 
            +
                                                  @query_method_calls << [:with_line_number, line_number]
         | 
| 117 | 
            +
                                                end
         | 
| 118 | 
            +
             | 
| 119 | 
            +
                      option :similar_to, short: '-S',
         | 
| 120 | 
            +
                                          value: {
         | 
| 121 | 
            +
                                            type:  String,
         | 
| 122 | 
            +
                                            usage: 'PHONE_NUMBER'
         | 
| 123 | 
            +
                                          },
         | 
| 124 | 
            +
                                          desc: 'Searches for phone numbers similar to another phone number' do |number|
         | 
| 125 | 
            +
                                            @query_method_calls << [:similar_to, number]
         | 
| 126 | 
            +
                                          end
         | 
| 127 | 
            +
             | 
| 128 | 
            +
                      description 'Queries PhoneNumbers'
         | 
| 129 | 
            +
             | 
| 130 | 
            +
                      man_page 'ronin-db-phone-numbers.1'
         | 
| 131 | 
            +
             | 
| 132 | 
            +
                    end
         | 
| 133 | 
            +
                  end
         | 
| 134 | 
            +
                end
         | 
| 135 | 
            +
              end
         | 
| 136 | 
            +
            end
         |