rex-socket 0.1.53 → 0.1.55

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f4e2765900a58243437c2588d16bc2c3fcd65b58f042707a1ebca28d2240786d
4
- data.tar.gz: b7e46d8ab59b275872e48c418de39f07c615a2fdc480ad7ce0a8cf033eb5297f
3
+ metadata.gz: f205a57e2e9e372f999bd08d4e39d6be05bb5fc4a3bcc83e3b27b0de29dd90ad
4
+ data.tar.gz: '028fca6197d04804b78b7f6ee8d9ca849196c84714a1eabf640b25fe723b8226'
5
5
  SHA512:
6
- metadata.gz: 87cdca34534ff3ba9c085659200b40f71802ea51bc023e82bd918df19c3e5b70b2f9132dd954d121655d21a90e2a32bbea0fbed48543877f22ca404cac4d3ee9
7
- data.tar.gz: 3bb326d55b4b6c3f6741df0bcf6073b329bba6934e5a5ac45cae1a6716b53301f1d8b3bebc80d40de0ed1c55a67e5c6fc37846fe5eb9524f294d373b6fc984c8
6
+ metadata.gz: 393eb18d30bf96737c546a91cc646991cb1b17641cce3266911378a6a423c1d7a3f0e921ca455816bf7563fae6fa6933a38a39263c5b7a823be1c319ff0d8960
7
+ data.tar.gz: c5f866f117febd1717a60404a2b07e5cf945f48c37c479e490d26992b5438abfb78f1b7e84940399e0e741ef155830ec07cb7fa5ef211fb88d70e7b33341e9de
checksums.yaml.gz.sig CHANGED
Binary file
@@ -30,7 +30,7 @@ jobs:
30
30
  timeout-minutes: 40
31
31
 
32
32
  strategy:
33
- fail-fast: true
33
+ fail-fast: false
34
34
  matrix:
35
35
  ruby:
36
36
  - '2.7'
@@ -39,20 +39,20 @@ jobs:
39
39
  - '3.2'
40
40
  os:
41
41
  - ubuntu-20.04
42
+ - windows-2019
43
+ - macos-11
42
44
  - ubuntu-latest
43
45
  exclude:
44
46
  - { os: ubuntu-latest, ruby: '2.7' }
45
47
  - { os: ubuntu-latest, ruby: '3.0' }
46
- test_cmd:
47
- - bundle exec rspec
48
48
 
49
49
  env:
50
50
  RAILS_ENV: test
51
51
 
52
- name: ${{ matrix.os }} - Ruby ${{ matrix.ruby }} - ${{ matrix.test_cmd }}
52
+ name: ${{ matrix.os }} - Ruby ${{ matrix.ruby }}
53
53
  steps:
54
54
  - name: Checkout code
55
- uses: actions/checkout@v2
55
+ uses: actions/checkout@v4
56
56
 
57
57
  - name: Setup Ruby
58
58
  uses: ruby/setup-ruby@v1
@@ -60,9 +60,6 @@ jobs:
60
60
  ruby-version: ${{ matrix.ruby }}
61
61
  bundler-cache: true
62
62
 
63
- - name: ${{ matrix.test_cmd }}
63
+ - name: rspec
64
64
  run: |
65
- echo "${CMD}"
66
- bash -c "${CMD}"
67
- env:
68
- CMD: ${{ matrix.test_cmd }}
65
+ bundle exec rspec
data/cortex.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ info:
3
+ title: Rex Socket
4
+ description: The Rex Socket Abstraction Library
5
+ x-cortex-git:
6
+ github:
7
+ alias: r7org
8
+ repository: rapid7/rex-socket
9
+ x-cortex-tag: rex-socket
10
+ x-cortex-type: service
11
+ x-cortex-domain-parents:
12
+ - tag: metasploit
13
+ openapi: 3.0.1
14
+ servers:
15
+ - url: "/"
@@ -1,5 +1,5 @@
1
1
  module Rex
2
2
  module Socket
3
- VERSION = "0.1.53"
3
+ VERSION = "0.1.55"
4
4
  end
5
5
  end
data/lib/rex/socket.rb CHANGED
@@ -258,6 +258,29 @@ module Socket
258
258
  @@resolver ? self.rex_gethostbyname(host) : ::Socket.gethostbyname(host)
259
259
  end
260
260
 
261
+ #
262
+ # Wrapper for Resolv::DNS.getresources which normalizes the return value to a
263
+ # list of hostnames regardless of the resource class.
264
+ #
265
+ # @param name [String] The name to lookup.
266
+ # @param typeclass [Symbol] The resource class to lookup, e.g. CNAME, MX, etc.
267
+ # @raises ArgumentError An argument error is raised when the typeclass is invalid.
268
+ # @return [Array<String>] The hostnames that were returned by the query.
269
+ def self.getresources(name, typeclass)
270
+ return self.rex_getresources(name, typeclass) if @@resolver
271
+
272
+ typeclass = typeclass.upcase
273
+ attribute = DNS_RESOURCE_ATTRIBUTE_NAMES[typeclass]
274
+ if attribute.nil?
275
+ raise ArgumentError, "Invalid typeclass: #{typeclass}"
276
+ end
277
+ const = Resolv::DNS::Resource::IN.const_get(typeclass)
278
+
279
+ dns = Resolv::DNS.new
280
+ resources = dns.getresources(name, const)
281
+ resources.map(&attribute).map(&:to_s)
282
+ end
283
+
261
284
  #
262
285
  # Create a sockaddr structure using the supplied IP address, port, and
263
286
  # address family
@@ -672,37 +695,57 @@ module Socket
672
695
  # is no concurrent use of the same locals and this is safe.
673
696
  def self.tcp_socket_pair
674
697
  lsock = nil
698
+ last_child_error = nil
699
+ accept_timeout = 10
675
700
  rsock = nil
676
701
  laddr = '127.0.0.1'
677
702
  lport = 0
678
703
  threads = []
679
704
  mutex = ::Mutex.new
680
705
 
681
- threads << Rex::ThreadFactory.spawn('TcpSocketPair', false) {
706
+ threads << Rex::ThreadFactory.spawn('TcpSocketPair', false) do
682
707
  server = nil
683
- mutex.synchronize {
684
- threads << Rex::ThreadFactory.spawn('TcpSocketPairClient', false) {
685
- mutex.synchronize {
686
- rsock = ::TCPSocket.new( laddr, lport )
687
- }
688
- }
689
- server = ::TCPServer.new(laddr, 0)
690
- if (server.getsockname =~ /127\.0\.0\.1:/)
691
- # JRuby ridiculousness
692
- caddr, lport = server.getsockname.split(":")
693
- caddr = caddr[1,caddr.length]
694
- lport = lport.to_i
708
+ begin
709
+ mutex.synchronize do
710
+ threads << Rex::ThreadFactory.spawn('TcpSocketPairClient', false) do
711
+ mutex.synchronize do
712
+ begin
713
+ rsock = ::TCPSocket.new( laddr, lport )
714
+ rescue => e
715
+ last_child_error = "#{e.class} - #{e.message}"
716
+ raise
717
+ end
718
+ end
719
+ end
720
+ server = ::TCPServer.new(laddr, 0)
721
+ if (server.getsockname =~ /127\.0\.0\.1:/)
722
+ # JRuby ridiculousness
723
+ caddr, lport = server.getsockname.split(":")
724
+ caddr = caddr[1,caddr.length]
725
+ lport = lport.to_i
726
+ else
727
+ # Sane implementations where Socket#getsockname returns a
728
+ # sockaddr
729
+ lport, caddr = ::Socket.unpack_sockaddr_in( server.getsockname )
730
+ end
731
+ end
732
+
733
+ readable, _writable, _errors = ::IO.select([server], nil, nil, accept_timeout)
734
+ if readable && readable.any?
735
+ lsock, _ = server.accept_nonblock
695
736
  else
696
- # Sane implementations where Socket#getsockname returns a
697
- # sockaddr
698
- lport, caddr = ::Socket.unpack_sockaddr_in( server.getsockname )
737
+ raise RuntimeError, "rsock didn't connect in #{accept_timeout} seconds"
699
738
  end
700
- }
701
- lsock, _ = server.accept
702
- server.close
703
- }
739
+ ensure
740
+ server.close if server
741
+ end
742
+ end
704
743
 
705
- threads.each { |t| t.join }
744
+ threads.each.with_index do |thread, i|
745
+ thread.join
746
+ rescue => e
747
+ raise "Thread #{i} - error #{e} - last child error: #{last_child_error}"
748
+ end
706
749
 
707
750
  return [lsock, rsock]
708
751
  end
@@ -943,6 +986,52 @@ protected
943
986
  # Ensure response types (depending on underlying library used) provide required methods
944
987
  return v4, v6
945
988
  end
989
+
990
+ def self.rex_getresources(name, typeclass, resolver: @@resolver)
991
+ raise ::SocketError.new(
992
+ "Rex::Socket internal DNS resolution requires passing/setting a resolver"
993
+ ) unless resolver
994
+ raise ::SocketError.new(
995
+ "Rex::Socket internal DNS resolution requires passing a String name to resolve"
996
+ ) unless name.is_a?(String)
997
+
998
+ typeclass = typeclass.upcase
999
+ attribute = REX_DNS_RESOURCE_ATTRIBUTE_NAMES[typeclass]
1000
+ if attribute.nil?
1001
+ raise ArgumentError, "Invalid typeclass: #{typeclass}"
1002
+ end
1003
+ const = ::Net::DNS.const_get(typeclass)
1004
+
1005
+ resources = begin
1006
+ resolver.send(name, const).answer.select do |a|
1007
+ a.type == const
1008
+ end.map(&attribute).map(&:to_s)
1009
+ rescue
1010
+ []
1011
+ end
1012
+
1013
+ resources
1014
+ end
1015
+
1016
+ DNS_RESOURCE_ATTRIBUTE_NAMES = {
1017
+ CNAME: :name,
1018
+ MX: :exchange,
1019
+ NS: :name,
1020
+ PTR: :name,
1021
+ SOA: :mname,
1022
+ SRV: :target
1023
+ }.freeze
1024
+ private_constant :DNS_RESOURCE_ATTRIBUTE_NAMES
1025
+
1026
+ REX_DNS_RESOURCE_ATTRIBUTE_NAMES = {
1027
+ CNAME: :domainname,
1028
+ MX: :exchange,
1029
+ NS: :domainname,
1030
+ PTR: :domainname,
1031
+ SOA: :mname,
1032
+ SRV: :target
1033
+ }.freeze
1034
+ private_constant :REX_DNS_RESOURCE_ATTRIBUTE_NAMES
946
1035
  end
947
1036
 
948
1037
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rex-socket
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.53
4
+ version: 0.1.55
5
5
  platform: ruby
6
6
  authors:
7
7
  - Metasploit Hackers
@@ -10,90 +10,31 @@ bindir: exe
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- +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
33
36
  -----END CERTIFICATE-----
34
- - |
35
- -----BEGIN CERTIFICATE-----
36
- MIIFMDCCBBigAwIBAgIQBAkYG1/Vu2Z1U0O1b5VQCDANBgkqhkiG9w0BAQsFADBl
37
- MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
38
- d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv
39
- b3QgQ0EwHhcNMTMxMDIyMTIwMDAwWhcNMjgxMDIyMTIwMDAwWjByMQswCQYDVQQG
40
- EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl
41
- cnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEyIEFzc3VyZWQgSUQgQ29kZSBT
42
- aWduaW5nIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+NOzHH8O
43
- Ea9ndwfTCzFJGc/Q+0WZsTrbRPV/5aid2zLXcep2nQUut4/6kkPApfmJ1DcZ17aq
44
- 8JyGpdglrA55KDp+6dFn08b7KSfH03sjlOSRI5aQd4L5oYQjZhJUM1B0sSgmuyRp
45
- wsJS8hRniolF1C2ho+mILCCVrhxKhwjfDPXiTWAYvqrEsq5wMWYzcT6scKKrzn/p
46
- fMuSoeU7MRzP6vIK5Fe7SrXpdOYr/mzLfnQ5Ng2Q7+S1TqSp6moKq4TzrGdOtcT3
47
- jNEgJSPrCGQ+UpbB8g8S9MWOD8Gi6CxR93O8vYWxYoNzQYIH5DiLanMg0A9kczye
48
- n6Yzqf0Z3yWT0QIDAQABo4IBzTCCAckwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNV
49
- HQ8BAf8EBAMCAYYwEwYDVR0lBAwwCgYIKwYBBQUHAwMweQYIKwYBBQUHAQEEbTBr
50
- MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wQwYIKwYBBQUH
51
- MAKGN2h0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJ
52
- RFJvb3RDQS5jcnQwgYEGA1UdHwR6MHgwOqA4oDaGNGh0dHA6Ly9jcmw0LmRpZ2lj
53
- ZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmwwOqA4oDaGNGh0dHA6
54
- Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmww
55
- TwYDVR0gBEgwRjA4BgpghkgBhv1sAAIEMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8v
56
- d3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCgYIYIZIAYb9bAMwHQYDVR0OBBYEFFrEuXsq
57
- CqOl6nEDwGD5LfZldQ5YMB8GA1UdIwQYMBaAFEXroq/0ksuCMS1Ri6enIZ3zbcgP
58
- MA0GCSqGSIb3DQEBCwUAA4IBAQA+7A1aJLPzItEVyCx8JSl2qB1dHC06GsTvMGHX
59
- fgtg/cM9D8Svi/3vKt8gVTew4fbRknUPUbRupY5a4l4kgU4QpO4/cY5jDhNLrddf
60
- RHnzNhQGivecRk5c/5CxGwcOkRX7uq+1UcKNJK4kxscnKqEpKBo6cSgCPC6Ro8Al
61
- EeKcFEehemhor5unXCBc2XGxDI+7qPjFEmifz0DLQESlE/DmZAwlCEIysjaKJAL+
62
- L3J+HNdJRZboWR3p+nRka7LrZkPas7CM1ekN3fYBIM6ZMWM9CBoYs4GbT8aTEAb8
63
- B4H6i9r5gkn3Ym6hU/oSlBiFLpKR6mhsRDKyZqHnGKSaZFHv
64
- -----END CERTIFICATE-----
65
- - |
66
- -----BEGIN CERTIFICATE-----
67
- MIIFIzCCBAugAwIBAgIQCMePMbkSxvnPeJhYXIfaxzANBgkqhkiG9w0BAQsFADBy
68
- MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
69
- d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEyIEFzc3VyZWQg
70
- SUQgQ29kZSBTaWduaW5nIENBMB4XDTIwMTAwNzAwMDAwMFoXDTIzMTEwNjEyMDAw
71
- MFowYDELMAkGA1UEBhMCVVMxFjAUBgNVBAgTDU1hc3NhY2h1c2V0dHMxDzANBgNV
72
- BAcTBkJvc3RvbjETMBEGA1UEChMKUmFwaWQ3IExMQzETMBEGA1UEAxMKUmFwaWQ3
73
- IExMQzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALNTz4zvAy7h/vQp
74
- 4dr1txXHlABAagkwYYwTMCtHs5PXsJITx/5SAjx5swuaLfze5kPBNF2YImvFlOXY
75
- WaB+0PsOnXnaARsDZU683xFlj8izU6IN6VrAHzDLKFBzruJENrOJD/ikbEtbjO/q
76
- gFbmS9J9v5ohG/pcRSS0t4ZPAwymf8eCp6QsvOKK/Aymp1RhlRaP8N6N5CIpkhz1
77
- 9p968iCE+DjOXVYxcWE+jE/7uB1dbgrXykNBujMSS3GULOvVEY28n6NCmrPlo23g
78
- yRjYVJ2Vy14nBqnxDZ/yRIfWRVjWoT9TsAEbe9gY29oDpSCSs4wSmLQd5zGCpZ9h
79
- r0HDFB8CAwEAAaOCAcUwggHBMB8GA1UdIwQYMBaAFFrEuXsqCqOl6nEDwGD5LfZl
80
- dQ5YMB0GA1UdDgQWBBTLBL7DTwumVEKtdCdpHVYMXOFeDzAOBgNVHQ8BAf8EBAMC
81
- B4AwEwYDVR0lBAwwCgYIKwYBBQUHAwMwdwYDVR0fBHAwbjA1oDOgMYYvaHR0cDov
82
- L2NybDMuZGlnaWNlcnQuY29tL3NoYTItYXNzdXJlZC1jcy1nMS5jcmwwNaAzoDGG
83
- L2h0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3Js
84
- MEwGA1UdIARFMEMwNwYJYIZIAYb9bAMBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8v
85
- d3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCAYGZ4EMAQQBMIGEBggrBgEFBQcBAQR4MHYw
86
- JAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBOBggrBgEFBQcw
87
- AoZCaHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0U0hBMkFzc3Vy
88
- ZWRJRENvZGVTaWduaW5nQ0EuY3J0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEL
89
- BQADggEBAN+GL5/myPWg7oH4mVrG7/OhXF1MoYQF0ddaNiqaweEHMuKJBQCVZRbL
90
- 37HojoKXXv2yyRJBCeTB+ojrxX+5PdLVZa0ss7toWzJ2A1poPXZ1eZvm5xeFD32z
91
- YQaTmmNWNI3PCDTyJ2PXUc+bDiNNwcZ7yc5o78UNRvp9Jxghya17Q76c9Ov9wvnv
92
- dxxQKWGOQy0m4fBrkyjAyH9Djjn81RbQrqYgPuhd5nD0HjN3VUQLhQbIJrk9TVs0
93
- EknWpNgVhohbot1lfVAMmIhdtOVaRVcQQixWPwprDj/ydB8ryDMDosIMcw+fkoXU
94
- 9GJsSaSRRYQ9UUkVL27b64okU8D48m8=
95
- -----END CERTIFICATE-----
96
- date: 2023-09-05 00:00:00.000000000 Z
37
+ date: 2023-12-05 00:00:00.000000000 Z
97
38
  dependencies:
98
39
  - !ruby/object:Gem::Dependency
99
40
  name: rake
@@ -157,6 +98,7 @@ files:
157
98
  - Rakefile
158
99
  - bin/console
159
100
  - bin/setup
101
+ - cortex.yaml
160
102
  - lib/rex/socket.rb
161
103
  - lib/rex/socket/comm.rb
162
104
  - lib/rex/socket/comm/local.rb
metadata.gz.sig CHANGED
Binary file