rabid 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +2 -1
  3. data/bin/rabid +2 -10
  4. data/lib/bigipcookie.rb +13 -11
  5. data/lib/bigipcookie/version.rb +1 -1
  6. metadata +22 -74
  7. data/.gitignore +0 -8
  8. data/.rubocop.yml +0 -22
  9. data/.yardopts +0 -4
  10. data/.yardopts-dev +0 -6
  11. data/Gemfile +0 -6
  12. data/Gemfile.lock +0 -58
  13. data/README.md +0 -32
  14. data/Rakefile +0 -10
  15. data/bin/rabid_setup +0 -6
  16. data/docs/.nojekyll +0 -0
  17. data/docs/About.md +0 -13
  18. data/docs/CHANGELOG.md +0 -23
  19. data/docs/README.md +0 -23
  20. data/docs/_coverpage.md +0 -14
  21. data/docs/_media/logo.png +0 -0
  22. data/docs/_navbar.md +0 -2
  23. data/docs/_sidebar.md +0 -15
  24. data/docs/index.html +0 -31
  25. data/docs/pages/demo.md +0 -3
  26. data/docs/pages/documentation.md +0 -34
  27. data/docs/pages/install.md +0 -90
  28. data/docs/pages/publishing.md +0 -39
  29. data/docs/pages/quick-start.md +0 -30
  30. data/docs/pages/usage.md +0 -54
  31. data/docs/vendor/docsify.js +0 -1
  32. data/docs/vendor/plugins/emoji.min.js +0 -1
  33. data/docs/vendor/plugins/search.min.js +0 -1
  34. data/docs/vendor/prismjs/components/prism-ruby.min.js +0 -1
  35. data/docs/vendor/themes/vue.css +0 -1
  36. data/docs/why.md +0 -49
  37. data/docs/yard/BigIPCookie.html +0 -159
  38. data/docs/yard/BigIPCookie/Decode.html +0 -782
  39. data/docs/yard/Version.html +0 -126
  40. data/docs/yard/_index.html +0 -138
  41. data/docs/yard/class_list.html +0 -51
  42. data/docs/yard/css/common.css +0 -1
  43. data/docs/yard/css/full_list.css +0 -58
  44. data/docs/yard/css/style.css +0 -496
  45. data/docs/yard/file.LICENSE.html +0 -70
  46. data/docs/yard/file.README.html +0 -105
  47. data/docs/yard/file_list.html +0 -61
  48. data/docs/yard/frames.html +0 -17
  49. data/docs/yard/index.html +0 -105
  50. data/docs/yard/js/app.js +0 -303
  51. data/docs/yard/js/full_list.js +0 -216
  52. data/docs/yard/js/jquery.js +0 -4
  53. data/docs/yard/method_list.html +0 -99
  54. data/docs/yard/top-level-namespace.html +0 -112
  55. data/package-lock.json +0 -154
  56. data/test/test_bigipcookie.rb +0 -86
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9d404056c0f595ca4ba95787c5f7c0c59933d34ab3396d2d36e5cbc3093fb875
4
- data.tar.gz: e5509152258eece3829cfd628bd4b2087d94fa52573b0424428cbc021e214ce3
3
+ metadata.gz: a5699f2c4c79f71d44c6e7cd7dc3f89bb424bbcf7069293157ac0555d7270519
4
+ data.tar.gz: 7ec606ba5cd1e482edd19d32d519680137c3817197ae64cd67286b586cb8e721
5
5
  SHA512:
6
- metadata.gz: 0d23f1b376126a7f4e83c300a1a208ae5b582b9b4e135955e0675c2311c0a31e33a1f636d509dec8fcfbd1ae1b5d00f365f9cf18c71e473859b319103e27aa44
7
- data.tar.gz: 030321261fd98b0f1f0fa347ad750929fe7df04804b712e96749793b4da4d76fb8e2e0d2aa220ba38e8a76577affd69e9612d09f8f23acebf15f784faa96731b
6
+ metadata.gz: 8b062568f80e4d673e4bf99b20c9366cbd77bb0f1196897fe7d81cf6238a30332a32a63acfd2192ffdcaa2250c08cb02520445daf6065ad6af49a7acd7695f0a
7
+ data.tar.gz: 6ddee9719e5e74ca28a7188c5d68c60e44c7783879742fe1089dc7ea72a010b165e3055683f1baf135b9ecb32db4f63293147a1cd02a2f639a475ec5af131743
@@ -1,6 +1,7 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2019-2020 Alexandre ZANNI
3
+ Copyright (c) 2020-2020 Alexandre ZANNI
4
+ Copyright (c) 2019-2020 Alexandre ZANNI at Orange Cyberdefense
4
5
 
5
6
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
7
  of this software and associated documentation files (the "Software"), to deal
data/bin/rabid CHANGED
@@ -35,6 +35,7 @@ DOCOPT
35
35
 
36
36
  begin
37
37
  args = Docopt.docopt(doc, version: BigIPCookie::VERSION)
38
+ Paint.mode = 0 if args['--no-color']
38
39
  pp args if args['--debug']
39
40
  # use case 1, using the tool
40
41
  if args['<raw_cookie>']
@@ -43,16 +44,7 @@ begin
43
44
  opts[:ipv6compression] = 0 if args['--ipv6-long-format']
44
45
  bip.auto_decode(opts)
45
46
  # Display
46
- if args['--no-color']
47
- if args['--short']
48
- puts bip.decoded_cookie
49
- else
50
- puts "Pool name: #{bip.pool_name}"
51
- puts "Cookie type: #{bip.cookie_type}"
52
- puts "Raw cookie: #{bip.raw_cookie}"
53
- puts "Decoded cookie: #{bip.decoded_cookie}"
54
- end
55
- elsif args['--short']
47
+ if args['--short']
56
48
  puts Paint[bip.decoded_cookie, :green]
57
49
  else
58
50
  puts Paint['Pool name:', :white, :bold] + ' ' + bip.pool_name
@@ -85,16 +85,17 @@ class BigIPCookie
85
85
  opts[:reverse] = 0
86
86
  end
87
87
 
88
- if opts[:ipversion] == 4
88
+ case opts[:ipversion]
89
+ when 4
89
90
  opts[:joinchar] = '.'
90
91
  opts[:scanby] = 2
91
- elsif opts[:ipversion] == 6
92
+ when 6
92
93
  opts[:joinchar] = ':'
93
94
  opts[:scanby] = 4
94
95
  end
95
96
 
96
97
  ip = format('%02x', ip) if opts[:ip2hex] == 1 # ip to hex
97
- ip = '0' + ip if ip.size % 2 == 1 # prepend a 0 when we have an odd number
98
+ ip = '0' + ip if ip.size.odd? # prepend a 0 when we have an odd number
98
99
  ip = ip.scan(/.{#{opts[:scanby]}}/) # split by n
99
100
  ip.reverse! if opts[:reverse] == 1 # reverse array
100
101
  ip = ip.map { |i| i.to_i(16) } if opts[:hex2ip] == 1 # hex to ip
@@ -168,7 +169,7 @@ class BigIPCookie
168
169
  # Return that the cookie is encrypted
169
170
  # @param cookie [String] raw cookie value
170
171
  # @return [String] Encrypted cookie detection message
171
- def encrypted(cookie)
172
+ def encrypted(_cookie)
172
173
  return 'Unknown:Encrypted'
173
174
  end
174
175
 
@@ -190,7 +191,7 @@ class BigIPCookie
190
191
  return 601 if /rd([0-9]+)o([0-9a-zA-Z]{32})o([0-9]{1,5})/.match?(cookie)
191
192
 
192
193
  ## Encrypted
193
- return 999 if /!(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?/.match?(cookie)
194
+ return 999 if %r{!(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?}.match?(cookie)
194
195
 
195
196
  raise 'Unrecognized cookie'
196
197
  end
@@ -201,19 +202,20 @@ class BigIPCookie
201
202
  # @return [String] the decoded cookie value
202
203
  def decode_cookie(cookie, opts = {})
203
204
  number = detect_cookie_type(cookie)
204
- if number == 400
205
+ case number
206
+ when 400
205
207
  @cookie_type = 'IPv4 pool members'
206
208
  ipv4_pm(cookie)
207
- elsif number == 401
209
+ when 401
208
210
  @cookie_type = 'IPv4 pool members in non-default route domains'
209
211
  ipv4_pm_ndrd(cookie)
210
- elsif number == 600
212
+ when 600
211
213
  @cookie_type = 'IPv6 pool members'
212
214
  ipv6_pm(cookie, opts)
213
- elsif number == 601
215
+ when 601
214
216
  @cookie_type = 'IPv6 pool members in non-default route domains'
215
217
  ipv6_pm_ndrd(cookie, opts)
216
- elsif number == 999
218
+ when 999
217
219
  @cookie_type = 'Encrypted'
218
220
  encrypted(cookie)
219
221
  else
@@ -235,7 +237,7 @@ class BigIPCookie
235
237
  # @note
236
238
  # .yardopts-dev must be used to get {decode_ip} documentation
237
239
  def auto_decode(opts = {})
238
- if /\=/.match?(@raw_cookie) # if there is a key
240
+ if /=/.match?(@raw_cookie) # if there is a key
239
241
  if /^BIGipServer/.match?(@raw_cookie) # if default cookie name
240
242
  pool_name = retrieve_pool_name
241
243
  cookie_value = /^BIGipServer.*?=(.+)/.match(@raw_cookie).captures[0]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Version
4
- VERSION = '0.0.5'
4
+ VERSION = '0.0.6'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rabid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexandre ZANNI
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-26 00:00:00.000000000 Z
11
+ date: 2020-07-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: docopt
@@ -30,42 +30,42 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '2.1'
33
+ version: '2.2'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '2.1'
40
+ version: '2.2'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '2.0'
47
+ version: '2.1'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '2.0'
54
+ version: '2.1'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: commonmarker
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0.20'
61
+ version: '0.21'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0.20'
68
+ version: '0.21'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: github-markup
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -128,14 +128,14 @@ dependencies:
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '0.63'
131
+ version: '0.80'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '0.63'
138
+ version: '0.80'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: yard
141
141
  requirement: !ruby/object:Gem::Requirement
@@ -155,76 +155,25 @@ email: alexandre.zanni@engineer.com
155
155
  executables:
156
156
  - rabid
157
157
  - rabid_console
158
- - rabid_setup
159
158
  extensions: []
160
159
  extra_rdoc_files: []
161
160
  files:
162
- - ".gitignore"
163
- - ".rubocop.yml"
164
- - ".yardopts"
165
- - ".yardopts-dev"
166
- - Gemfile
167
- - Gemfile.lock
168
161
  - LICENSE.txt
169
- - README.md
170
- - Rakefile
171
162
  - bin/rabid
172
163
  - bin/rabid_console
173
- - bin/rabid_setup
174
- - docs/.nojekyll
175
- - docs/About.md
176
- - docs/CHANGELOG.md
177
- - docs/README.md
178
- - docs/_coverpage.md
179
- - docs/_media/logo.png
180
- - docs/_navbar.md
181
- - docs/_sidebar.md
182
- - docs/index.html
183
- - docs/pages/demo.md
184
- - docs/pages/documentation.md
185
- - docs/pages/install.md
186
- - docs/pages/publishing.md
187
- - docs/pages/quick-start.md
188
- - docs/pages/usage.md
189
- - docs/vendor/docsify.js
190
- - docs/vendor/plugins/emoji.min.js
191
- - docs/vendor/plugins/search.min.js
192
- - docs/vendor/prismjs/components/prism-ruby.min.js
193
- - docs/vendor/themes/vue.css
194
- - docs/why.md
195
- - docs/yard/BigIPCookie.html
196
- - docs/yard/BigIPCookie/Decode.html
197
- - docs/yard/Version.html
198
- - docs/yard/_index.html
199
- - docs/yard/class_list.html
200
- - docs/yard/css/common.css
201
- - docs/yard/css/full_list.css
202
- - docs/yard/css/style.css
203
- - docs/yard/file.LICENSE.html
204
- - docs/yard/file.README.html
205
- - docs/yard/file_list.html
206
- - docs/yard/frames.html
207
- - docs/yard/index.html
208
- - docs/yard/js/app.js
209
- - docs/yard/js/full_list.js
210
- - docs/yard/js/jquery.js
211
- - docs/yard/method_list.html
212
- - docs/yard/top-level-namespace.html
213
164
  - lib/bigipcookie.rb
214
165
  - lib/bigipcookie/version.rb
215
- - package-lock.json
216
- - test/test_bigipcookie.rb
217
- homepage: https://orange-cyberdefense.github.io/rabid/
166
+ homepage: https://noraj.github.io/rabid/
218
167
  licenses:
219
168
  - MIT
220
169
  metadata:
221
170
  yard.run: yard
222
- bug_tracker_uri: https://github.com/Orange-Cyberdefense/rabid/issues
223
- changelog_uri: https://github.com/Orange-Cyberdefense/rabid/blob/master/docs/CHANGELOG.md
224
- documentation_uri: https://orange-cyberdefense.github.io/rabid/
225
- homepage_uri: https://orange-cyberdefense.github.io/rabid/
226
- source_code_uri: https://github.com/Orange-Cyberdefense/rabid/
227
- post_install_message:
171
+ bug_tracker_uri: https://github.com/noraj/rabid/issues
172
+ changelog_uri: https://github.com/noraj/rabid/blob/master/docs/CHANGELOG.md
173
+ documentation_uri: https://noraj.github.io/rabid/
174
+ homepage_uri: https://noraj.github.io/rabid/
175
+ source_code_uri: https://github.com/noraj/rabid/
176
+ post_install_message:
228
177
  rdoc_options: []
229
178
  require_paths:
230
179
  - lib
@@ -232,16 +181,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
232
181
  requirements:
233
182
  - - "~>"
234
183
  - !ruby/object:Gem::Version
235
- version: '2.4'
184
+ version: '2.7'
236
185
  required_rubygems_version: !ruby/object:Gem::Requirement
237
186
  requirements:
238
187
  - - ">="
239
188
  - !ruby/object:Gem::Version
240
189
  version: '0'
241
190
  requirements: []
242
- rubygems_version: 3.0.1
243
- signing_key:
191
+ rubygems_version: 3.1.2
192
+ signing_key:
244
193
  specification_version: 4
245
194
  summary: RApid Big IP Decoder
246
- test_files:
247
- - test/test_bigipcookie.rb
195
+ test_files: []
data/.gitignore DELETED
@@ -1,8 +0,0 @@
1
- .yardoc
2
- *.gem
3
- /pkg
4
- /doc
5
- /vendor
6
- .bundle/
7
- /node_modules
8
- .git
@@ -1,22 +0,0 @@
1
- # Metrics
2
- AllCops:
3
- TargetRubyVersion: 2.4
4
-
5
- Layout/AlignHash:
6
- Include:
7
- - 'lib/**/*.rb'
8
- Metrics/AbcSize:
9
- Enabled: false
10
- Metrics/ClassLength:
11
- Max: 200
12
- Metrics/CyclomaticComplexity:
13
- Enabled: false
14
- Metrics/LineLength:
15
- Include:
16
- - 'lib/**/*.rb'
17
- Metrics/MethodLength:
18
- Max: 25
19
- Metrics/PerceivedComplexity:
20
- Max: 10
21
- Style/RedundantReturn:
22
- Enabled: false
data/.yardopts DELETED
@@ -1,4 +0,0 @@
1
- --output-dir docs/yard
2
- -
3
- --main README.md
4
- LICENSE.txt
@@ -1,6 +0,0 @@
1
- --output-dir docs/yard
2
- --protected
3
- --private
4
- -
5
- --main README.md
6
- LICENSE.txt
data/Gemfile DELETED
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source 'https://rubygems.org'
4
-
5
- # Specify your gem's dependencies in .gemspec
6
- gemspec
@@ -1,58 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- rabid (0.0.5)
5
- docopt (~> 0.6)
6
- paint (~> 2.1)
7
-
8
- GEM
9
- remote: https://rubygems.org/
10
- specs:
11
- ast (2.4.0)
12
- commonmarker (0.21.0)
13
- ruby-enum (~> 0.5)
14
- concurrent-ruby (1.1.5)
15
- docopt (0.6.1)
16
- github-markup (3.0.4)
17
- i18n (1.8.2)
18
- concurrent-ruby (~> 1.0)
19
- jaro_winkler (1.5.4)
20
- minitest (5.14.0)
21
- paint (2.1.0)
22
- parallel (1.19.1)
23
- parser (2.7.0.2)
24
- ast (~> 2.4.0)
25
- rainbow (3.0.0)
26
- rake (13.0.1)
27
- redcarpet (3.5.0)
28
- rexml (3.2.4)
29
- rubocop (0.80.0)
30
- jaro_winkler (~> 1.5.1)
31
- parallel (~> 1.10)
32
- parser (>= 2.7.0.1)
33
- rainbow (>= 2.2.2, < 4.0)
34
- rexml
35
- ruby-progressbar (~> 1.7)
36
- unicode-display_width (>= 1.4.0, < 1.7)
37
- ruby-enum (0.7.2)
38
- i18n
39
- ruby-progressbar (1.10.1)
40
- unicode-display_width (1.6.1)
41
- yard (0.9.24)
42
-
43
- PLATFORMS
44
- ruby
45
-
46
- DEPENDENCIES
47
- bundler (~> 2.0)
48
- commonmarker (~> 0.20)
49
- github-markup (~> 3.0)
50
- minitest (~> 5.11)
51
- rabid!
52
- rake (~> 13.0)
53
- redcarpet (~> 3.4)
54
- rubocop (~> 0.63)
55
- yard (~> 0.9)
56
-
57
- BUNDLED WITH
58
- 2.1.4
data/README.md DELETED
@@ -1,32 +0,0 @@
1
- # RABID
2
-
3
- [![Gem Version](https://badge.fury.io/rb/rabid.svg)](https://badge.fury.io/rb/rabid)
4
- ![GitHub tag (latest SemVer)](https://img.shields.io/github/tag/Orange-Cyberdefense/rabid)
5
- [![GitHub forks](https://img.shields.io/github/forks/Orange-Cyberdefense/rabid)](https://github.com/Orange-Cyberdefense/rabid/network)
6
- [![GitHub stars](https://img.shields.io/github/stars/Orange-Cyberdefense/rabid)](https://github.com/Orange-Cyberdefense/rabid/stargazers)
7
- [![GitHub license](https://img.shields.io/github/license/Orange-Cyberdefense/rabid)](https://github.com/Orange-Cyberdefense/rabid/blob/master/LICENSE.txt)
8
- [![Rawsec's CyberSecurity Inventory](https://inventory.rawsec.ml/img/badges/Rawsec-inventoried-FF5050_flat.svg)](https://inventory.rawsec.ml/tools.html#Rabid)
9
-
10
- [![Packaging status](https://repology.org/badge/vertical-allrepos/rabid.svg)](https://repology.org/project/rabid/versions)
11
-
12
- ![](https://orange-cyberdefense.github.io/rabid/_media/logo.png)
13
-
14
- > **RA**pid **B**ig **I**P **D**ecoder
15
-
16
- ## What it is
17
-
18
- A CLI tool and library allowing to simply decode all kind of BigIP cookies.
19
-
20
- ## Features
21
-
22
- - Support all 4 cookie formats
23
- - CLI tool & library
24
- - Hackable
25
-
26
- ## References
27
-
28
- Homepage / Documentation: https://orange-cyberdefense.github.io/rabid/
29
-
30
- ## Author
31
-
32
- Made by Alexandre ZANNI ([@noraj](https://github.com/noraj)), pentester from Orange Cyberdefense.