rubyntlm 0.1.1 → 0.2.0
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.
- data/.travis.yml +12 -0
- data/CHANGELOG.md +6 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +17 -0
- data/README.md +41 -0
- data/Rakefile +10 -66
- data/lib/net/ntlm.rb +18 -11
- data/lib/rubyntlm.rb +1 -0
- data/rubyntlm.gemspec +22 -0
- metadata +91 -45
- data/README +0 -25
data/.travis.yml
ADDED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,6 @@
|
|
1
|
+
0.2.0 - Major changes to behavior!!!!
|
2
|
+
- Bug - Type 1 packets do not include a domain and workstation by defauly. Packet capture software will see this type of packet as malformed. All packets now include this information
|
3
|
+
- Bug - Type 3 packets do not include the calling workstation. This should be setup by default.
|
4
|
+
|
5
|
+
0.1.2
|
6
|
+
- Feature user can specify the target domain
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
data/README.md
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# Ruby/NTLM -- NTLM Authentication Library for Ruby
|
2
|
+
|
3
|
+
[](https://travis-ci.org/winrb/rubyntlm)
|
4
|
+
|
5
|
+
Ruby/NTLM provides message creator and parser for the NTLM authentication.
|
6
|
+
|
7
|
+
__100% Ruby__
|
8
|
+
|
9
|
+
Simple Example
|
10
|
+
--------------
|
11
|
+
|
12
|
+
### Creating NTLM Type 1 message
|
13
|
+
|
14
|
+
```ruby
|
15
|
+
t1 = NTLM::Message::Type1.new()
|
16
|
+
```
|
17
|
+
|
18
|
+
### Parsing NTLM Type 2 message from server
|
19
|
+
|
20
|
+
```ruby
|
21
|
+
t2 = NTLM::Message.parse(message_from_server)
|
22
|
+
```
|
23
|
+
|
24
|
+
### Creating NTLM Type 3 message
|
25
|
+
|
26
|
+
```ruby
|
27
|
+
t3 = t2.response({:user => 'user', :password => 'passwd'})
|
28
|
+
```
|
29
|
+
|
30
|
+
Support
|
31
|
+
-------
|
32
|
+
|
33
|
+
https://groups.google.com/forum/?fromgroups#!forum/rubyntlm
|
34
|
+
|
35
|
+
Contributing
|
36
|
+
------------
|
37
|
+
1. Fork it.
|
38
|
+
2. Create a branch (git checkout -b my_feature_branch)
|
39
|
+
3. Commit your changes (git commit -am "Added a sweet feature")
|
40
|
+
4. Push to the branch (git push origin my_feature_branch)
|
41
|
+
5. Create a pull requst from your branch into master (Please be sure to provide enough detail for us to cipher what this change is doing)
|
data/Rakefile
CHANGED
@@ -1,66 +1,10 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
PKG_VERSION = Net::NTLM::VERSION::STRING
|
12
|
-
|
13
|
-
task :default => [:test]
|
14
|
-
|
15
|
-
Rake::TestTask.new(:test) do |t|
|
16
|
-
t.test_files = FileList[ "test/*.rb" ]
|
17
|
-
t.warning = true
|
18
|
-
t.verbose = true
|
19
|
-
end
|
20
|
-
|
21
|
-
# Rake::PackageTask.new(PKG_NAME, PKG_VERSION) do |p|
|
22
|
-
# p.need_tar_gz = true
|
23
|
-
# p.package_dir = 'build'
|
24
|
-
# p.package_files.include("README", "Rakefile")
|
25
|
-
# p.package_files.include("lib/net/**/*.rb", "test/**/*.rb", "examples/**/*.rb")
|
26
|
-
# end
|
27
|
-
|
28
|
-
Rake::RDocTask.new do |rd|
|
29
|
-
rd.rdoc_dir = 'doc'
|
30
|
-
rd.title = 'Ruby/NTLM library'
|
31
|
-
rd.main = "README"
|
32
|
-
rd.rdoc_files.include("README", "lib/**/*.rb")
|
33
|
-
end
|
34
|
-
|
35
|
-
dist_dirs = ["lib", "test", "examples"]
|
36
|
-
spec = Gem::Specification.new do |s|
|
37
|
-
s.name = PKG_NAME
|
38
|
-
s.version = PKG_VERSION
|
39
|
-
s.summary = %q{Ruby/NTLM library.}
|
40
|
-
s.description = %q{Ruby/NTLM provides message creator and parser for the NTLM authentication.}
|
41
|
-
s.authors = ["Kohei Kajimoto"]
|
42
|
-
s.email = %q{koheik@gmail.com}
|
43
|
-
s.homepage = %q{http://rubyforge.org/projects/rubyntlm}
|
44
|
-
s.rubyforge_project = %q{rubyntlm}
|
45
|
-
|
46
|
-
s.files = ["Rakefile", "README"]
|
47
|
-
dist_dirs.each do |dir|
|
48
|
-
s.files = s.files + Dir.glob("#{dir}/**/*.rb")
|
49
|
-
end
|
50
|
-
|
51
|
-
s.has_rdoc = true
|
52
|
-
s.extra_rdoc_files = %w( README )
|
53
|
-
s.rdoc_options.concat ['--main', 'README']
|
54
|
-
|
55
|
-
s.autorequire = 'net/ntlm'
|
56
|
-
end
|
57
|
-
|
58
|
-
Rake::GemPackageTask.new(spec) do |p|
|
59
|
-
p.gem_spec = spec
|
60
|
-
p.need_tar = true
|
61
|
-
p.need_zip = true
|
62
|
-
p.package_dir = 'build'
|
63
|
-
end
|
64
|
-
|
65
|
-
|
66
|
-
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
require 'rake/testtask'
|
3
|
+
|
4
|
+
task :default => [:test]
|
5
|
+
|
6
|
+
Rake::TestTask.new(:test) do |t|
|
7
|
+
t.test_files = FileList[ "test/*.rb" ]
|
8
|
+
t.warning = true
|
9
|
+
t.verbose = true
|
10
|
+
end
|
data/lib/net/ntlm.rb
CHANGED
@@ -45,14 +45,16 @@
|
|
45
45
|
require 'base64'
|
46
46
|
require 'openssl'
|
47
47
|
require 'openssl/digest'
|
48
|
+
require 'kconv'
|
49
|
+
require 'socket'
|
48
50
|
|
49
51
|
module Net #:nodoc:
|
50
|
-
module NTLM
|
52
|
+
module NTLM #:nodoc:
|
51
53
|
|
52
54
|
module VERSION #:nodoc:
|
53
55
|
MAJOR = 0
|
54
|
-
MINOR =
|
55
|
-
TINY =
|
56
|
+
MINOR = 2
|
57
|
+
TINY = 0
|
56
58
|
STRING = [MAJOR, MINOR, TINY].join('.')
|
57
59
|
end
|
58
60
|
|
@@ -605,8 +607,8 @@ module Net #:nodoc:
|
|
605
607
|
string :sign, {:size => 8, :value => SSP_SIGN}
|
606
608
|
int32LE :type, {:value => 1}
|
607
609
|
int32LE :flag, {:value => DEFAULT_FLAGS[:TYPE1] }
|
608
|
-
security_buffer :domain, {:value => ""
|
609
|
-
security_buffer :workstation, {:value =>
|
610
|
+
security_buffer :domain, {:value => ""}
|
611
|
+
security_buffer :workstation, {:value => Socket.gethostname }
|
610
612
|
string :padding, {:size => 0, :value => "", :active => false }
|
611
613
|
}
|
612
614
|
|
@@ -667,6 +669,7 @@ module Net #:nodoc:
|
|
667
669
|
def response(arg, opt = {})
|
668
670
|
usr = arg[:user]
|
669
671
|
pwd = arg[:password]
|
672
|
+
domain = arg[:domain] ? arg[:domain] : ""
|
670
673
|
if usr.nil? or pwd.nil?
|
671
674
|
raise ArgumentError, "user and password have to be supplied"
|
672
675
|
end
|
@@ -699,13 +702,12 @@ module Net #:nodoc:
|
|
699
702
|
opt[:unicode] = true
|
700
703
|
end
|
701
704
|
|
702
|
-
tgt = self.target_name
|
703
705
|
ti = self.target_info
|
704
706
|
|
705
707
|
chal = self[:challenge].serialize
|
706
|
-
|
708
|
+
|
707
709
|
if opt[:ntlmv2]
|
708
|
-
ar = {:ntlmv2_hash => NTLM::ntlmv2_hash(usr, pwd,
|
710
|
+
ar = {:ntlmv2_hash => NTLM::ntlmv2_hash(usr, pwd, domain, opt), :challenge => chal, :target_info => ti}
|
709
711
|
lm_res = NTLM::lmv2_response(ar, opt)
|
710
712
|
ntlm_res = NTLM::ntlmv2_response(ar, opt)
|
711
713
|
elsif has_flag?(:NTLM2_KEY)
|
@@ -719,7 +721,7 @@ module Net #:nodoc:
|
|
719
721
|
Type3.create({
|
720
722
|
:lm_response => lm_res,
|
721
723
|
:ntlm_response => ntlm_res,
|
722
|
-
:domain =>
|
724
|
+
:domain => domain,
|
723
725
|
:user => usr,
|
724
726
|
:workstation => ws,
|
725
727
|
:flag => self.flag
|
@@ -754,8 +756,13 @@ module Net #:nodoc:
|
|
754
756
|
t.ntlm_response = arg[:ntlm_response]
|
755
757
|
t.domain = arg[:domain]
|
756
758
|
t.user = arg[:user]
|
757
|
-
|
758
|
-
|
759
|
+
|
760
|
+
if arg[:workstation]
|
761
|
+
t.workstation = arg[:workstation]
|
762
|
+
else
|
763
|
+
t.workstation = NTLM.encode_utf16le(Socket.gethostname)
|
764
|
+
end
|
765
|
+
|
759
766
|
if arg[:session_key]
|
760
767
|
t.enable(:session_key)
|
761
768
|
t.session_key = arg[session_key]
|
data/lib/rubyntlm.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'net/ntlm'
|
data/rubyntlm.gemspec
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'lib', 'net', 'ntlm')
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.platform = Gem::Platform::RUBY
|
5
|
+
s.name = 'rubyntlm'
|
6
|
+
s.version = Net::NTLM::VERSION::STRING
|
7
|
+
s.summary = 'Ruby/NTLM library.'
|
8
|
+
s.description = 'Ruby/NTLM provides message creator and parser for the NTLM authentication.'
|
9
|
+
|
10
|
+
s.authors = ['Kohei Kajimoto','Paul Morton']
|
11
|
+
s.email = ['koheik@gmail.com','paul.e.morton@gmail.com']
|
12
|
+
s.homepage = 'https://github.com/winrb/rubyntlm'
|
13
|
+
|
14
|
+
|
15
|
+
s.files = `git ls-files`.split($/)
|
16
|
+
s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
|
+
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
18
|
+
s.require_paths = ["lib"]
|
19
|
+
|
20
|
+
s.add_development_dependency "bundler", "~> 1.3"
|
21
|
+
s.add_development_dependency "rake"
|
22
|
+
end
|
metadata
CHANGED
@@ -1,53 +1,99 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.0
|
3
|
-
specification_version: 1
|
1
|
+
--- !ruby/object:Gem::Specification
|
4
2
|
name: rubyntlm
|
5
|
-
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
7
|
-
|
8
|
-
summary: Ruby/NTLM library.
|
9
|
-
require_paths:
|
10
|
-
- lib
|
11
|
-
email: koheik@gmail.com
|
12
|
-
homepage: http://rubyforge.org/projects/rubyntlm
|
13
|
-
rubyforge_project: rubyntlm
|
14
|
-
description: Ruby/NTLM provides message creator and parser for the NTLM authentication.
|
15
|
-
autorequire: net/ntlm
|
16
|
-
default_executable:
|
17
|
-
bindir: bin
|
18
|
-
has_rdoc: true
|
19
|
-
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.0.0
|
24
|
-
version:
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
5
|
+
prerelease:
|
25
6
|
platform: ruby
|
26
|
-
|
27
|
-
cert_chain:
|
28
|
-
post_install_message:
|
29
|
-
authors:
|
7
|
+
authors:
|
30
8
|
- Kohei Kajimoto
|
31
|
-
|
9
|
+
- Paul Morton
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2013-03-22 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: bundler
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ~>
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '1.3'
|
23
|
+
type: :development
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ~>
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '1.3'
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
name: rake
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
34
|
+
none: false
|
35
|
+
requirements:
|
36
|
+
- - '>='
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
39
|
+
type: :development
|
40
|
+
prerelease: false
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
description: Ruby/NTLM provides message creator and parser for the NTLM authentication.
|
48
|
+
email:
|
49
|
+
- koheik@gmail.com
|
50
|
+
- paul.e.morton@gmail.com
|
51
|
+
executables: []
|
52
|
+
extensions: []
|
53
|
+
extra_rdoc_files: []
|
54
|
+
files:
|
55
|
+
- .travis.yml
|
56
|
+
- CHANGELOG.md
|
57
|
+
- Gemfile
|
58
|
+
- Gemfile.lock
|
59
|
+
- README.md
|
32
60
|
- Rakefile
|
33
|
-
- README
|
34
|
-
- lib/net/ntlm.rb
|
35
|
-
- test/function_test.rb
|
36
61
|
- examples/http.rb
|
37
62
|
- examples/imap.rb
|
38
63
|
- examples/smtp.rb
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
64
|
+
- lib/net/ntlm.rb
|
65
|
+
- lib/rubyntlm.rb
|
66
|
+
- rubyntlm.gemspec
|
67
|
+
- test/function_test.rb
|
68
|
+
homepage: https://github.com/winrb/rubyntlm
|
69
|
+
licenses: []
|
70
|
+
post_install_message:
|
71
|
+
rdoc_options: []
|
72
|
+
require_paths:
|
73
|
+
- lib
|
74
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
75
|
+
none: false
|
76
|
+
requirements:
|
77
|
+
- - '>='
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
segments:
|
81
|
+
- 0
|
82
|
+
hash: -254558294721854043
|
83
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
84
|
+
none: false
|
85
|
+
requirements:
|
86
|
+
- - '>='
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
89
|
+
segments:
|
90
|
+
- 0
|
91
|
+
hash: -254558294721854043
|
50
92
|
requirements: []
|
51
|
-
|
52
|
-
|
53
|
-
|
93
|
+
rubyforge_project:
|
94
|
+
rubygems_version: 1.8.25
|
95
|
+
signing_key:
|
96
|
+
specification_version: 3
|
97
|
+
summary: Ruby/NTLM library.
|
98
|
+
test_files:
|
99
|
+
- test/function_test.rb
|
data/README
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
= Ruby/NTLM -- NTLM Authentication Library for Ruby
|
2
|
-
|
3
|
-
Ruby/NTLM provides message creator and parser for the NTLM authentication.
|
4
|
-
|
5
|
-
Some features:
|
6
|
-
* Independent from non-standard Ruby libraries.
|
7
|
-
* Supports NTLM and NTLMv2 reponses.
|
8
|
-
|
9
|
-
== Simple Example
|
10
|
-
|
11
|
-
* Creating NTLM Type 1 message
|
12
|
-
|
13
|
-
t1 = NTLM::Message::Type1.new()
|
14
|
-
|
15
|
-
* Parsing NTLM Type 2 message from server
|
16
|
-
|
17
|
-
t2 = NTLM::Message.parse(message_from_server)
|
18
|
-
|
19
|
-
* Creating NTLM Type 3 message
|
20
|
-
|
21
|
-
t3 = t2.response({:user => 'user', :password => 'passwd'})
|
22
|
-
|
23
|
-
== Support
|
24
|
-
|
25
|
-
You can find Ruby/NTLM RubyForge page at http://rubyforge.org/projects/rubyntlm.
|