rex-random_identifier 0.1.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: 37a540cb858fe522a417016b1f3b3af0ed9603df
4
+ data.tar.gz: 7c7b3eaf43de9d4e219fb1a258e462680360ad64
5
+ SHA512:
6
+ metadata.gz: 738e80bda84b8ca1fdb87f4610f31e34c61e6020cd692ba8ff9e02d4a369a31bf7dd1a89bd033c89e93ae12ea149abca36b2dd85e98b3aae270ac6e1d4d3e8af
7
+ data.tar.gz: c4405411ab21e6f8c7318f30e9565dc609de9512ca1ab4321280c0a9115692972b69797ba06c42a3483f176b74c4a76e134b7e714b90ceaab561da854422cb24
checksums.yaml.gz.sig ADDED
@@ -0,0 +1,3 @@
1
+ g�1���T&�3�8iɳ ~�� _V�K�N�;i���˪��>M�kA����lBJ��A 8�~
2
+ ��g��r~pA)ʆ�u�#��x�6n�xW��eϥs:���d��k�v�U��.�^@1B���(NS�+9o�,.S��δ�˝���x���2�-d�g�G�%���c<��S�pm��|�*P!�^;P�V>J܈��'
3
+ �O�/���?%4s
data.tar.gz.sig ADDED
Binary file
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.3.1
5
+ before_install: gem install bundler -v 1.12.5
@@ -0,0 +1,49 @@
1
+ # Contributor Code of Conduct
2
+
3
+ As contributors and maintainers of this project, and in the interest of
4
+ fostering an open and welcoming community, we pledge to respect all people who
5
+ contribute through reporting issues, posting feature requests, updating
6
+ documentation, submitting pull requests or patches, and other activities.
7
+
8
+ We are committed to making participation in this project a harassment-free
9
+ experience for everyone, regardless of level of experience, gender, gender
10
+ identity and expression, sexual orientation, disability, personal appearance,
11
+ body size, race, ethnicity, age, religion, or nationality.
12
+
13
+ Examples of unacceptable behavior by participants include:
14
+
15
+ * The use of sexualized language or imagery
16
+ * Personal attacks
17
+ * Trolling or insulting/derogatory comments
18
+ * Public or private harassment
19
+ * Publishing other's private information, such as physical or electronic
20
+ addresses, without explicit permission
21
+ * Other unethical or unprofessional conduct
22
+
23
+ Project maintainers have the right and responsibility to remove, edit, or
24
+ reject comments, commits, code, wiki edits, issues, and other contributions
25
+ that are not aligned to this Code of Conduct, or to ban temporarily or
26
+ permanently any contributor for other behaviors that they deem inappropriate,
27
+ threatening, offensive, or harmful.
28
+
29
+ By adopting this Code of Conduct, project maintainers commit themselves to
30
+ fairly and consistently applying these principles to every aspect of managing
31
+ this project. Project maintainers who do not follow or enforce the Code of
32
+ Conduct may be permanently removed from the project team.
33
+
34
+ This code of conduct applies both within project spaces and in public spaces
35
+ when an individual is representing the project or its community.
36
+
37
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
38
+ reported by contacting a project maintainer at DMaloney@rapid7.com. All
39
+ complaints will be reviewed and investigated and will result in a response that
40
+ is deemed necessary and appropriate to the circumstances. Maintainers are
41
+ obligated to maintain confidentiality with regard to the reporter of an
42
+ incident.
43
+
44
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage],
45
+ version 1.3.0, available at
46
+ [http://contributor-covenant.org/version/1/3/0/][version]
47
+
48
+ [homepage]: http://contributor-covenant.org
49
+ [version]: http://contributor-covenant.org/version/1/3/0/
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in rex-random_identifier.gemspec
4
+ gemspec
5
+
data/README.md ADDED
@@ -0,0 +1,47 @@
1
+ # Rex::RandomIdentifier
2
+
3
+ Ruby Exploitation(Rex) Library for generating strings that conform to most standards for an identifier, i.e., begin with a letter and contain only alphanumeric characters and underscore.
4
+
5
+
6
+ ## Installation
7
+
8
+ Add this line to your application's Gemfile:
9
+
10
+ ```ruby
11
+ gem 'rex-random_identifier'
12
+ ```
13
+
14
+ And then execute:
15
+
16
+ $ bundle
17
+
18
+ Or install it yourself as:
19
+
20
+ $ gem install rex-random_identifier
21
+
22
+ ## Usage
23
+
24
+ Example
25
+ ```ruby
26
+ vars = Rex::RandomIdentifierGenerator.new
27
+ asp_code = <<-END_CODE
28
+ Sub #{vars[:func]}()
29
+ Dim #{vars[:fso]}
30
+ Set #{vars[:fso]} = CreateObject("Scripting.FileSystemObject")
31
+ ...
32
+ End Sub
33
+ #{vars[:func]}
34
+ END_CODE
35
+ #
36
+ ```
37
+
38
+ ## Development
39
+
40
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
41
+
42
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
43
+
44
+ ## Contributing
45
+
46
+ Bug reports and pull requests are welcome on GitHub at https://github.com/rapid7/rex-random_identifier. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
47
+
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "rex/random_identifier"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,7 @@
1
+ require "rex/random_identifier/version"
2
+ require 'rex/random_identifier/generator'
3
+ module Rex
4
+ module RandomIdentifier
5
+ # Your code goes here...
6
+ end
7
+ end
@@ -0,0 +1,178 @@
1
+ # -*- coding: binary -*-
2
+ require 'rex/text'
3
+
4
+ # A quick way to produce unique random strings that follow the rules of
5
+ # identifiers, i.e., begin with a letter and contain only alphanumeric
6
+ # characters and underscore.
7
+ #
8
+ # The advantage of using this class over, say, {Rex::Text.rand_text_alpha}
9
+ # each time you need a new identifier is that it ensures you don't have
10
+ # collisions.
11
+ #
12
+ # @example
13
+ # vars = Rex::RandomIdentifier::Generator.new
14
+ # asp_code = <<-END_CODE
15
+ # Sub #{vars[:func]}()
16
+ # Dim #{vars[:fso]}
17
+ # Set #{vars[:fso]} = CreateObject("Scripting.FileSystemObject")
18
+ # ...
19
+ # End Sub
20
+ # #{vars[:func]}
21
+ # END_CODE
22
+ #
23
+ class Rex::RandomIdentifier::Generator
24
+
25
+ # Raised when a RandomIdentifierGenerator cannot create any more
26
+ # identifiers without collisions.
27
+ class ExhaustedSpaceError < StandardError; end
28
+
29
+ # Default options
30
+ DefaultOpts = {
31
+ # Arbitrary
32
+ :max_length => 12,
33
+ :min_length => 3,
34
+ # This should be pretty universal for identifier rules
35
+ :char_set => Rex::Text::AlphaNumeric+"_",
36
+ :first_char_set => Rex::Text::LowerAlpha
37
+ }
38
+
39
+ # @param opts [Hash] Options, see {DefaultOpts} for default values
40
+ # @option opts :max_length [Fixnum]
41
+ # @option opts :min_length [Fixnum]
42
+ # @option opts :char_set [String]
43
+ def initialize(opts={})
44
+ # Holds all identifiers.
45
+ @value_by_name = {}
46
+ # Inverse of value_by_name so we can ensure uniqueness without
47
+ # having to search through the whole list of values
48
+ @name_by_value = {}
49
+
50
+ @opts = DefaultOpts.merge(opts)
51
+ if @opts[:min_length] < 1 || @opts[:max_length] < 1 || @opts[:max_length] < @opts[:min_length]
52
+ raise ArgumentError, "Invalid length options"
53
+ end
54
+
55
+ # This is really just the maximum number of shortest names. This
56
+ # will still be a pretty big number most of the time, so don't
57
+ # bother calculating the real one, which will potentially be
58
+ # expensive, since we're talking about a 36-digit decimal number to
59
+ # represent the total possibilities for the range of 10- to
60
+ # 20-character identifiers.
61
+ #
62
+ # 26 because the first char is lowercase alpha, (min_length - 1) and
63
+ # not just min_length because it includes that first alpha char.
64
+ @max_permutations = 26 * (@opts[:char_set].length ** (@opts[:min_length]-1))
65
+ # The real number of permutations could be calculated thusly:
66
+ #((@opts[:min_length]-1) .. (@opts[:max_length]-1)).reduce(0) { |a, e|
67
+ # a + (26 * @opts[:char_set].length ** e)
68
+ #}
69
+ end
70
+
71
+ # Returns the @value_by_name hash
72
+ #
73
+ # @return [Hash]
74
+ def to_h
75
+ return @value_by_name
76
+ end
77
+
78
+ # Return a unique random identifier for +name+, generating a new one
79
+ # if necessary.
80
+ #
81
+ # @param name [Symbol] A descriptive, intention-revealing name for an
82
+ # identifier. This is what you would normally call the variable if
83
+ # you weren't generating it.
84
+ # @return [String]
85
+ def get(name)
86
+ return @value_by_name[name] if @value_by_name[name]
87
+
88
+ @value_by_name[name] = generate
89
+ @name_by_value[@value_by_name[name]] = name
90
+
91
+ @value_by_name[name]
92
+ end
93
+ alias [] get
94
+ alias init_var get
95
+
96
+ # Add a new identifier. Its name will be checked for uniqueness among
97
+ # previously-generated names.
98
+ #
99
+ # @note This should be called *before* any calls to {#get} to avoid
100
+ # potential collisions. If you do hit a collision, this method will
101
+ # raise.
102
+ #
103
+ # @param name (see #get)
104
+ # @param value [String] The identifier that will be returned by
105
+ # subsequent calls to {#get} with the sane +name+.
106
+ # @raise RuntimeError if +value+ already exists
107
+ # @return [void]
108
+ def store(name, value)
109
+
110
+ case @name_by_value[value]
111
+ when name
112
+ # we already have this value and it is associated with this name
113
+ # nothing to do here
114
+ when nil
115
+ # don't have this value yet, so go ahead and just insert
116
+ @value_by_name[name] = value
117
+ @name_by_value[value] = name
118
+ else
119
+ # then the caller is trying to insert a duplicate
120
+ raise RuntimeError, "Value is not unique!"
121
+ end
122
+
123
+ self
124
+ end
125
+
126
+ # Create a random string that satisfies most languages' requirements
127
+ # for identifiers. In particular, with a default configuration, the
128
+ # first character will always be lowercase alpha (unless modified by a
129
+ # block), and the whole thing will contain only a-zA-Z0-9_ characters.
130
+ #
131
+ # If called with a block, the block will be given the identifier before
132
+ # uniqueness checks. The block's return value will be the new
133
+ # identifier. Note that the block may be called multiple times if it
134
+ # returns a non-unique value.
135
+ #
136
+ # @note Calling this method with a block that returns only values that
137
+ # this generator already contains will result in an infinite loop.
138
+ #
139
+ # @example
140
+ # rig = Rex::RandomIdentifier::Generator.new
141
+ # const = rig.generate { |val| val.capitalize }
142
+ # rig.insert(:SOME_CONSTANT, const)
143
+ # ruby_code = <<-EOC
144
+ # #{rig[:SOME_CONSTANT]} = %q^generated ruby constant^
145
+ # def #{rig[:my_method]}; ...; end
146
+ # EOC
147
+ #
148
+ # @param len [Fixnum] Avoid setting this unless a specific size is
149
+ # necessary. Default is random within range of min .. max
150
+ # @return [String] A string that matches <tt>[a-z][a-zA-Z0-9_]*</tt>
151
+ # @yield [String] The identifier before uniqueness checks. This allows
152
+ # you to modify the value and still avoid collisions.
153
+ def generate(len=nil)
154
+ raise ArgumentError, "len must be positive integer" if len && len < 1
155
+ raise ExhaustedSpaceError if @value_by_name.length >= @max_permutations
156
+
157
+ # pick a random length within the limits
158
+ len ||= rand(@opts[:min_length] .. (@opts[:max_length]))
159
+
160
+ ident = ""
161
+
162
+ # XXX: Infinite loop if block returns only values we've already
163
+ # generated.
164
+ loop do
165
+ ident = Rex::Text.rand_base(1, "", @opts[:first_char_set])
166
+ ident << Rex::Text.rand_base(len-1, "", @opts[:char_set])
167
+ if block_given?
168
+ ident = yield ident
169
+ end
170
+ # Try to make another one if it collides with a previously
171
+ # generated one.
172
+ break unless @name_by_value.key?(ident)
173
+ end
174
+
175
+ ident
176
+ end
177
+
178
+ end
@@ -0,0 +1,5 @@
1
+ module Rex
2
+ module RandomIdentifier
3
+ VERSION = "0.1.0"
4
+ end
5
+ end
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'rex/random_identifier/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "rex-random_identifier"
8
+ spec.version = Rex::RandomIdentifier::VERSION
9
+ spec.authors = ["David 'thelightcosine' Maloney"]
10
+ spec.email = ["DMaloney@rapid7.com"]
11
+
12
+ spec.summary = %q{Random Identifier Generator}
13
+ spec.description = %q{Ruby Exploitation(Rex) library for generating Random identifier strings}
14
+ spec.homepage = "https://github.com/rapid7/rex-random_identifier"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
+ spec.bindir = "exe"
18
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.12"
22
+ spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "rspec", "~> 3.0"
24
+
25
+ spec.add_runtime_dependency "rex-text"
26
+ end
metadata ADDED
@@ -0,0 +1,189 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rex-random_identifier
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - David 'thelightcosine' Maloney
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG
14
+ A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
15
+ b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw
16
+ MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
17
+ YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT
18
+ aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ
19
+ jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp
20
+ xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp
21
+ 1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG
22
+ snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ
23
+ U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8
24
+ 9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E
25
+ BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B
26
+ AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz
27
+ yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE
28
+ 38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP
29
+ AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad
30
+ DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME
31
+ HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
32
+ -----END CERTIFICATE-----
33
+ - |
34
+ -----BEGIN CERTIFICATE-----
35
+ MIIEKDCCAxCgAwIBAgILBAAAAAABL07hNVwwDQYJKoZIhvcNAQEFBQAwVzELMAkG
36
+ A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
37
+ b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xMTA0MTMxMDAw
38
+ MDBaFw0xOTA0MTMxMDAwMDBaMFExCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
39
+ YWxTaWduIG52LXNhMScwJQYDVQQDEx5HbG9iYWxTaWduIENvZGVTaWduaW5nIENB
40
+ IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCyTxTnEL7XJnKr
41
+ NpfvU79ChF5Y0Yoo/ENGb34oRFALdV0A1zwKRJ4gaqT3RUo3YKNuPxL6bfq2RsNq
42
+ o7gMJygCVyjRUPdhOVW4w+ElhlI8vwUd17Oa+JokMUnVoqni05GrPjxz7/Yp8cg1
43
+ 0DB7f06SpQaPh+LO9cFjZqwYaSrBXrta6G6V/zuAYp2Zx8cvZtX9YhqCVVrG+kB3
44
+ jskwPBvw8jW4bFmc/enWyrRAHvcEytFnqXTjpQhU2YM1O46MIwx1tt6GSp4aPgpQ
45
+ STic0qiQv5j6yIwrJxF+KvvO3qmuOJMi+qbs+1xhdsNE1swMfi9tBoCidEC7tx/0
46
+ O9dzVB/zAgMBAAGjgfowgfcwDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYB
47
+ Af8CAQAwHQYDVR0OBBYEFAhu2Lacir/tPtfDdF3MgB+oL1B6MEcGA1UdIARAMD4w
48
+ PAYEVR0gADA0MDIGCCsGAQUFBwIBFiZodHRwczovL3d3dy5nbG9iYWxzaWduLmNv
49
+ bS9yZXBvc2l0b3J5LzAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vY3JsLmdsb2Jh
50
+ bHNpZ24ubmV0L3Jvb3QuY3JsMBMGA1UdJQQMMAoGCCsGAQUFBwMDMB8GA1UdIwQY
51
+ MBaAFGB7ZhpFDZfKiVAvfQTNNKj//P1LMA0GCSqGSIb3DQEBBQUAA4IBAQAiXMXd
52
+ PfQLcNjj9efFjgkBu7GWNlxaB63HqERJUSV6rg2kGTuSnM+5Qia7O2yX58fOEW1o
53
+ kdqNbfFTTVQ4jGHzyIJ2ab6BMgsxw2zJniAKWC/wSP5+SAeq10NYlHNUBDGpeA07
54
+ jLBwwT1+170vKsPi9Y8MkNxrpci+aF5dbfh40r5JlR4VeAiR+zTIvoStvODG3Rjb
55
+ 88rwe8IUPBi4A7qVPiEeP2Bpen9qA56NSvnwKCwwhF7sJnJCsW3LZMMSjNaES2dB
56
+ fLEDF3gJ462otpYtpH6AA0+I98FrWkYVzSwZi9hwnOUtSYhgcqikGVJwQ17a1kYD
57
+ sGgOJO9K9gslJO8k
58
+ -----END CERTIFICATE-----
59
+ - |
60
+ -----BEGIN CERTIFICATE-----
61
+ MIIEyjCCA7KgAwIBAgISESEyE8rNriS4+1dc8jOHEUL8MA0GCSqGSIb3DQEBBQUA
62
+ MFExCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMScwJQYD
63
+ VQQDEx5HbG9iYWxTaWduIENvZGVTaWduaW5nIENBIC0gRzIwHhcNMTMxMDExMTUx
64
+ NTM4WhcNMTYxMDExMTUxNTM4WjBgMQswCQYDVQQGEwJVUzEWMBQGA1UECBMNTWFz
65
+ c2FjaHVzZXR0czEPMA0GA1UEBxMGQm9zdG9uMRMwEQYDVQQKEwpSYXBpZDcgTExD
66
+ MRMwEQYDVQQDEwpSYXBpZDcgTExDMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
67
+ CgKCAQEAhD//7+739c69hssg0mD6CXgf2JkuWTcU81dgD7aKcoEPqU8e1FseBvDW
68
+ /Q5fNK2H2NgHV/Msn18zXuK0PkaJXqj/vDsuKB3Hq0BiR2AwyDdEw8K5MK5bgQc2
69
+ tmcVtEAejRoy1Uv5UyfaAYAxG6zsma3buV1fjnEAC3VouRg4+EX/f65H/a6srntK
70
+ 5Etp3D71k2f0oUl8dOqOmSsRJQQ5zSs4ktDvpjAmsvzoA+1svceLYU95mvQsIw2T
71
+ edpmibGMwGw/HmgV+YWBgF5UGvax6zbC2i6DF2YHnDfkNb8/1MEIaxOTAbJTazTK
72
+ 8laCQOyay6L1BNPQKjZBgOge8LZq1wIDAQABo4IBizCCAYcwDgYDVR0PAQH/BAQD
73
+ AgeAMEwGA1UdIARFMEMwQQYJKwYBBAGgMgEyMDQwMgYIKwYBBQUHAgEWJmh0dHBz
74
+ Oi8vd3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMAkGA1UdEwQCMAAwEwYD
75
+ VR0lBAwwCgYIKwYBBQUHAwMwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL2NybC5n
76
+ bG9iYWxzaWduLmNvbS9ncy9nc2NvZGVzaWduZzIuY3JsMIGGBggrBgEFBQcBAQR6
77
+ MHgwQAYIKwYBBQUHMAKGNGh0dHA6Ly9zZWN1cmUuZ2xvYmFsc2lnbi5jb20vY2Fj
78
+ ZXJ0L2dzY29kZXNpZ25nMi5jcnQwNAYIKwYBBQUHMAGGKGh0dHA6Ly9vY3NwMi5n
79
+ bG9iYWxzaWduLmNvbS9nc2NvZGVzaWduZzIwHQYDVR0OBBYEFE536JwFx9SpaEi3
80
+ w8pcq2GRFA5BMB8GA1UdIwQYMBaAFAhu2Lacir/tPtfDdF3MgB+oL1B6MA0GCSqG
81
+ SIb3DQEBBQUAA4IBAQAGpGXHtFLjTTivV+xQPwtZhfPuJ7f+VGTMSAAYWmfzyHXM
82
+ YMFYUWJzSFcuVR2YfxtbS45P7U5Qopd7jBQ0Ygk5h2a+B5nE4+UlhHj665d0zpYM
83
+ 1eWndMaO6WBOYnqtNyi8Dqqc1foKZDNHEDggYhGso7OIBunup+N4sPL9PwQ3eYe6
84
+ mUu8z0E4GXYViaMPOFkqaYnoYgf2L+7L5zKYT4h/NE/P7kj7EbduHgy/v/aAIrNl
85
+ 2SpuQH+SWteq3NXkAmFEEqvLJQ4sbptZt8OP8ghL3pVAvZNFmww/YVszSkShSzcg
86
+ QdihYCSEL2drS2cFd50jBeq71sxUtxbv82DUa2b+
87
+ -----END CERTIFICATE-----
88
+ date: 2016-06-21 00:00:00.000000000 Z
89
+ dependencies:
90
+ - !ruby/object:Gem::Dependency
91
+ name: bundler
92
+ requirement: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.12'
97
+ type: :development
98
+ prerelease: false
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.12'
104
+ - !ruby/object:Gem::Dependency
105
+ name: rake
106
+ requirement: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '10.0'
111
+ type: :development
112
+ prerelease: false
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '10.0'
118
+ - !ruby/object:Gem::Dependency
119
+ name: rspec
120
+ requirement: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '3.0'
125
+ type: :development
126
+ prerelease: false
127
+ version_requirements: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '3.0'
132
+ - !ruby/object:Gem::Dependency
133
+ name: rex-text
134
+ requirement: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ type: :runtime
140
+ prerelease: false
141
+ version_requirements: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ description: Ruby Exploitation(Rex) library for generating Random identifier strings
147
+ email:
148
+ - DMaloney@rapid7.com
149
+ executables: []
150
+ extensions: []
151
+ extra_rdoc_files: []
152
+ files:
153
+ - ".gitignore"
154
+ - ".rspec"
155
+ - ".travis.yml"
156
+ - CODE_OF_CONDUCT.md
157
+ - Gemfile
158
+ - README.md
159
+ - Rakefile
160
+ - bin/console
161
+ - bin/setup
162
+ - lib/rex/random_identifier.rb
163
+ - lib/rex/random_identifier/generator.rb
164
+ - lib/rex/random_identifier/version.rb
165
+ - rex-random_identifier.gemspec
166
+ homepage: https://github.com/rapid7/rex-random_identifier
167
+ licenses: []
168
+ metadata: {}
169
+ post_install_message:
170
+ rdoc_options: []
171
+ require_paths:
172
+ - lib
173
+ required_ruby_version: !ruby/object:Gem::Requirement
174
+ requirements:
175
+ - - ">="
176
+ - !ruby/object:Gem::Version
177
+ version: '0'
178
+ required_rubygems_version: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - ">="
181
+ - !ruby/object:Gem::Version
182
+ version: '0'
183
+ requirements: []
184
+ rubyforge_project:
185
+ rubygems_version: 2.4.8
186
+ signing_key:
187
+ specification_version: 4
188
+ summary: Random Identifier Generator
189
+ test_files: []
metadata.gz.sig ADDED
@@ -0,0 +1 @@
1
+ h+lg��N�Lh��ח�;�5�@��[�-{[Y�&�#�I����U C��BOaWQ>��O5��]�l8D�zOl�]��?�S�q:�"��lT�i���ʉ�_@$���;֯���;�Jh��33ڌ���k]�k$G�MId�����k�L#�s��u�� �\�!36�%��V~�s9��F��2"T/l��U8�E�sN�&8+���K71�r!�z����>:&� \�C|ƍ)3"����\��o�+w�z