smbRpc 0.0.3

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.
Files changed (79) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +11 -0
  3. data/examples/enumLsa.rb +44 -0
  4. data/examples/enumSmbPipe.rb +16 -0
  5. data/lib/smbRpc.rb +33 -0
  6. data/lib/smbRpc/epmapper.rb +13 -0
  7. data/lib/smbRpc/epmapper/constants.rb +28 -0
  8. data/lib/smbRpc/epmapper/epmLookup.rb +98 -0
  9. data/lib/smbRpc/lsarpc.rb +22 -0
  10. data/lib/smbRpc/lsarpc/close.rb +48 -0
  11. data/lib/smbRpc/lsarpc/constants.rb +54 -0
  12. data/lib/smbRpc/lsarpc/enumerateAccounts.rb +55 -0
  13. data/lib/smbRpc/lsarpc/enumeratePrivilegesAccount.rb +49 -0
  14. data/lib/smbRpc/lsarpc/lookupNames.rb +74 -0
  15. data/lib/smbRpc/lsarpc/lookupPrivilegeName.rb +37 -0
  16. data/lib/smbRpc/lsarpc/lookupSids.rb +96 -0
  17. data/lib/smbRpc/lsarpc/openAccount.rb +49 -0
  18. data/lib/smbRpc/lsarpc/openPolicy.rb +52 -0
  19. data/lib/smbRpc/lsarpc/queryInformationPolicy.rb +92 -0
  20. data/lib/smbRpc/lsarpc/querySecurityObject.rb +75 -0
  21. data/lib/smbRpc/rpc.rb +5 -0
  22. data/lib/smbRpc/rpc/connection.rb +34 -0
  23. data/lib/smbRpc/rpc/constants.rb +64 -0
  24. data/lib/smbRpc/rpc/endpoints.rb +38 -0
  25. data/lib/smbRpc/rpc/ndrep.rb +24 -0
  26. data/lib/smbRpc/rpc/pdu.rb +40 -0
  27. data/lib/smbRpc/samr.rb +40 -0
  28. data/lib/smbRpc/samr/addMemberToAlias.rb +43 -0
  29. data/lib/smbRpc/samr/addMemberToGroup.rb +36 -0
  30. data/lib/smbRpc/samr/changePasswordUser.rb +64 -0
  31. data/lib/smbRpc/samr/closeHandle.rb +50 -0
  32. data/lib/smbRpc/samr/connect.rb +46 -0
  33. data/lib/smbRpc/samr/constants.rb +114 -0
  34. data/lib/smbRpc/samr/createAliasInDomain.rb +45 -0
  35. data/lib/smbRpc/samr/createGroupInDomain.rb +46 -0
  36. data/lib/smbRpc/samr/createUserInDomain.rb +48 -0
  37. data/lib/smbRpc/samr/deleteAlias.rb +35 -0
  38. data/lib/smbRpc/samr/deleteGroup.rb +35 -0
  39. data/lib/smbRpc/samr/deleteUser.rb +35 -0
  40. data/lib/smbRpc/samr/enumerateAliasesInDomain.rb +61 -0
  41. data/lib/smbRpc/samr/enumerateDomainsInSamServer.rb +52 -0
  42. data/lib/smbRpc/samr/enumerateGroupsInDomain.rb +60 -0
  43. data/lib/smbRpc/samr/enumerateUsersInDomain.rb +67 -0
  44. data/lib/smbRpc/samr/getMembersInAlias.rb +41 -0
  45. data/lib/smbRpc/samr/getMembersInGroup.rb +45 -0
  46. data/lib/smbRpc/samr/lookupDomainInSamServer.rb +41 -0
  47. data/lib/smbRpc/samr/lookupIdsInDomain.rb +52 -0
  48. data/lib/smbRpc/samr/lookupNamesInDomain.rb +55 -0
  49. data/lib/smbRpc/samr/openAlias.rb +39 -0
  50. data/lib/smbRpc/samr/openDomain.rb +48 -0
  51. data/lib/smbRpc/samr/openGroup.rb +39 -0
  52. data/lib/smbRpc/samr/openUser.rb +39 -0
  53. data/lib/smbRpc/samr/queryInformationUser.rb +182 -0
  54. data/lib/smbRpc/samr/removeMemberFromAlias.rb +43 -0
  55. data/lib/smbRpc/samr/removeMemberFromGroup.rb +34 -0
  56. data/lib/smbRpc/samr/setInformationUser.rb +53 -0
  57. data/lib/smbRpc/srvsvc.rb +12 -0
  58. data/lib/smbRpc/srvsvc/netShareEnum.rb +104 -0
  59. data/lib/smbRpc/srvsvc/serverGetInfo.rb +57 -0
  60. data/lib/smbRpc/svcctl.rb +20 -0
  61. data/lib/smbRpc/svcctl/closeService.rb +48 -0
  62. data/lib/smbRpc/svcctl/constants.rb +88 -0
  63. data/lib/smbRpc/svcctl/controlService.rb +48 -0
  64. data/lib/smbRpc/svcctl/createService.rb +68 -0
  65. data/lib/smbRpc/svcctl/deleteService.rb +31 -0
  66. data/lib/smbRpc/svcctl/enumServicesStatus.rb +96 -0
  67. data/lib/smbRpc/svcctl/openScm.rb +37 -0
  68. data/lib/smbRpc/svcctl/openService.rb +36 -0
  69. data/lib/smbRpc/svcctl/queryServiceConfig.rb +67 -0
  70. data/lib/smbRpc/svcctl/startService.rb +35 -0
  71. data/lib/smbRpc/updateRuby_smb.rb +3 -0
  72. data/lib/smbRpc/updateRuby_smb/client.rb +29 -0
  73. data/lib/smbRpc/updateRuby_smb/dcerpc.rb +30 -0
  74. data/lib/smbRpc/updateRuby_smb/ioctl_request.rb +53 -0
  75. data/lib/smbRpc/updateString.rb +3 -0
  76. data/lib/smbRpc/updateString/raise_not_error_success.rb +11 -0
  77. data/lib/smbRpc/updateString/to_des_ecb_lm.rb +34 -0
  78. data/smbRpc.gemspec +16 -0
  79. metadata +148 -0
@@ -0,0 +1,34 @@
1
+ class String
2
+ def genKeys(sevenByteStr) #[MS-SAMR] 2.2.11.1.4
3
+ sevenBitsArray = sevenByteStr.unpack("B*")[0].scan(/......./) #grab each 7 bits into array
4
+ eightBitsStr = "" #[MS-SAMR]2.2.11.1.2 Encrypting a 64-Bit Block with a 7-Byte Key
5
+ sevenBitsArray.each do |e|
6
+ count = 0
7
+ e.split("").each{ |i| count += 1 if i == "1" } #add parity bit to each chunks (1 if sum of bits even)
8
+ eightBitsStr << e
9
+ eightBitsStr << (count % 2 == 0? "0" : "1") #MS-SAMR 2.2.11.1.2 says if odd use 0???
10
+ end
11
+ return [eightBitsStr].pack("B*") #pack back to 8 bytes key
12
+ end
13
+
14
+ def to_des_ecb_lm(key)
15
+ #keys
16
+ key1 = genKeys(key[0,7])
17
+ key2 = genKeys(key[7,7])
18
+ #hash
19
+ hash1 = self[0,8]
20
+ hash2 = self[8,8]
21
+ #encrypt
22
+ #[MS-SAMR]2.2.11 Common Algorithms
23
+ #2.2.11.1 DES-ECB-LM
24
+ #2.2.11.1.1 Encrypting an NT or LM Hash Value with a Specified Key
25
+ out = ""
26
+ desEcb = OpenSSL::Cipher.new("DES-ECB")
27
+ desEcb.encrypt
28
+ desEcb.key = key1
29
+ out << desEcb.update(hash1)
30
+ desEcb.key = key2
31
+ out << desEcb.update(hash2)
32
+ return out
33
+ end
34
+ end
data/smbRpc.gemspec ADDED
@@ -0,0 +1,16 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'smbRpc'
3
+ s.version = '0.0.3'
4
+ s.date = '2019-01-19'
5
+ s.summary = "Interface to various Windows RPC services over SMB namepipes"
6
+ s.description = "As describe in summary"
7
+ s.authors = ["Rungsree Singholka"]
8
+ s.email = 'rubysmbrpc@gmail.com'
9
+ s.files = `git ls-files -z`.split("\x0")
10
+ s.required_ruby_version = '>= 2.2.0'
11
+ s.add_runtime_dependency 'ruby_smb'
12
+ s.add_runtime_dependency 'smbhash'
13
+ s.homepage =
14
+ 'https://github.com/smbRpc/smbRpc'
15
+ s.license = '0BSD'
16
+ end
metadata ADDED
@@ -0,0 +1,148 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: smbRpc
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ platform: ruby
6
+ authors:
7
+ - Rungsree Singholka
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-01-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: ruby_smb
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: smbhash
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: As describe in summary
42
+ email: rubysmbrpc@gmail.com
43
+ executables: []
44
+ extensions: []
45
+ extra_rdoc_files: []
46
+ files:
47
+ - README.md
48
+ - examples/enumLsa.rb
49
+ - examples/enumSmbPipe.rb
50
+ - lib/smbRpc.rb
51
+ - lib/smbRpc/epmapper.rb
52
+ - lib/smbRpc/epmapper/constants.rb
53
+ - lib/smbRpc/epmapper/epmLookup.rb
54
+ - lib/smbRpc/lsarpc.rb
55
+ - lib/smbRpc/lsarpc/close.rb
56
+ - lib/smbRpc/lsarpc/constants.rb
57
+ - lib/smbRpc/lsarpc/enumerateAccounts.rb
58
+ - lib/smbRpc/lsarpc/enumeratePrivilegesAccount.rb
59
+ - lib/smbRpc/lsarpc/lookupNames.rb
60
+ - lib/smbRpc/lsarpc/lookupPrivilegeName.rb
61
+ - lib/smbRpc/lsarpc/lookupSids.rb
62
+ - lib/smbRpc/lsarpc/openAccount.rb
63
+ - lib/smbRpc/lsarpc/openPolicy.rb
64
+ - lib/smbRpc/lsarpc/queryInformationPolicy.rb
65
+ - lib/smbRpc/lsarpc/querySecurityObject.rb
66
+ - lib/smbRpc/rpc.rb
67
+ - lib/smbRpc/rpc/connection.rb
68
+ - lib/smbRpc/rpc/constants.rb
69
+ - lib/smbRpc/rpc/endpoints.rb
70
+ - lib/smbRpc/rpc/ndrep.rb
71
+ - lib/smbRpc/rpc/pdu.rb
72
+ - lib/smbRpc/samr.rb
73
+ - lib/smbRpc/samr/addMemberToAlias.rb
74
+ - lib/smbRpc/samr/addMemberToGroup.rb
75
+ - lib/smbRpc/samr/changePasswordUser.rb
76
+ - lib/smbRpc/samr/closeHandle.rb
77
+ - lib/smbRpc/samr/connect.rb
78
+ - lib/smbRpc/samr/constants.rb
79
+ - lib/smbRpc/samr/createAliasInDomain.rb
80
+ - lib/smbRpc/samr/createGroupInDomain.rb
81
+ - lib/smbRpc/samr/createUserInDomain.rb
82
+ - lib/smbRpc/samr/deleteAlias.rb
83
+ - lib/smbRpc/samr/deleteGroup.rb
84
+ - lib/smbRpc/samr/deleteUser.rb
85
+ - lib/smbRpc/samr/enumerateAliasesInDomain.rb
86
+ - lib/smbRpc/samr/enumerateDomainsInSamServer.rb
87
+ - lib/smbRpc/samr/enumerateGroupsInDomain.rb
88
+ - lib/smbRpc/samr/enumerateUsersInDomain.rb
89
+ - lib/smbRpc/samr/getMembersInAlias.rb
90
+ - lib/smbRpc/samr/getMembersInGroup.rb
91
+ - lib/smbRpc/samr/lookupDomainInSamServer.rb
92
+ - lib/smbRpc/samr/lookupIdsInDomain.rb
93
+ - lib/smbRpc/samr/lookupNamesInDomain.rb
94
+ - lib/smbRpc/samr/openAlias.rb
95
+ - lib/smbRpc/samr/openDomain.rb
96
+ - lib/smbRpc/samr/openGroup.rb
97
+ - lib/smbRpc/samr/openUser.rb
98
+ - lib/smbRpc/samr/queryInformationUser.rb
99
+ - lib/smbRpc/samr/removeMemberFromAlias.rb
100
+ - lib/smbRpc/samr/removeMemberFromGroup.rb
101
+ - lib/smbRpc/samr/setInformationUser.rb
102
+ - lib/smbRpc/srvsvc.rb
103
+ - lib/smbRpc/srvsvc/netShareEnum.rb
104
+ - lib/smbRpc/srvsvc/serverGetInfo.rb
105
+ - lib/smbRpc/svcctl.rb
106
+ - lib/smbRpc/svcctl/closeService.rb
107
+ - lib/smbRpc/svcctl/constants.rb
108
+ - lib/smbRpc/svcctl/controlService.rb
109
+ - lib/smbRpc/svcctl/createService.rb
110
+ - lib/smbRpc/svcctl/deleteService.rb
111
+ - lib/smbRpc/svcctl/enumServicesStatus.rb
112
+ - lib/smbRpc/svcctl/openScm.rb
113
+ - lib/smbRpc/svcctl/openService.rb
114
+ - lib/smbRpc/svcctl/queryServiceConfig.rb
115
+ - lib/smbRpc/svcctl/startService.rb
116
+ - lib/smbRpc/updateRuby_smb.rb
117
+ - lib/smbRpc/updateRuby_smb/client.rb
118
+ - lib/smbRpc/updateRuby_smb/dcerpc.rb
119
+ - lib/smbRpc/updateRuby_smb/ioctl_request.rb
120
+ - lib/smbRpc/updateString.rb
121
+ - lib/smbRpc/updateString/raise_not_error_success.rb
122
+ - lib/smbRpc/updateString/to_des_ecb_lm.rb
123
+ - smbRpc.gemspec
124
+ homepage: https://github.com/smbRpc/smbRpc
125
+ licenses:
126
+ - 0BSD
127
+ metadata: {}
128
+ post_install_message:
129
+ rdoc_options: []
130
+ require_paths:
131
+ - lib
132
+ required_ruby_version: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: 2.2.0
137
+ required_rubygems_version: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ requirements: []
143
+ rubyforge_project:
144
+ rubygems_version: 2.7.6
145
+ signing_key:
146
+ specification_version: 4
147
+ summary: Interface to various Windows RPC services over SMB namepipes
148
+ test_files: []