Class: FunctionTest

Inherits:
Test::Unit::TestCase
  • Object
show all
Defined in:
lib/rex/proto/ntlm.rb.ut.rb

Overview

FunctionTest by Minero Aoki

Instance Method Summary collapse

Instance Method Details

#setupObject

:nodoc:



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/rex/proto/ntlm.rb.ut.rb', line 73

def setup
	@passwd = "SecREt01"
	@user   = "user"
	@domain = "domain"
	@challenge = ["0123456789abcdef"].pack("H*")
	@client_ch = ["ffffff0011223344"].pack("H*")
	@timestamp = 1055844000
	@trgt_info = [
		"02000c0044004f004d00410049004e00" +
		"01000c00530045005200560045005200" +
		"0400140064006f006d00610069006e00" +
		"2e0063006f006d000300220073006500" +
		"72007600650072002e0064006f006d00" +
		"610069006e002e0063006f006d000000" +
		"0000"
	].pack("H*")
end

#test_lm_hashObject



91
92
93
94
# File 'lib/rex/proto/ntlm.rb.ut.rb', line 91

def test_lm_hash
	ahash = ["ff3750bcc2b22412c2265b23734e0dac"].pack("H*")
	assert_equal ahash, Rex::Proto::NTLM::Crypt::lm_hash(@passwd)
end

#test_lm_responseObject



106
107
108
109
110
111
112
113
114
# File 'lib/rex/proto/ntlm.rb.ut.rb', line 106

def test_lm_response
	ares = ["c337cd5cbd44fc9782a667af6d427c6de67c20c2d3e77c56"].pack("H*")
	assert_equal ares, Rex::Proto::NTLM::Crypt::lm_response(
		{
		:lm_hash => Rex::Proto::NTLM::Crypt::lm_hash(@passwd),
		:challenge => @challenge
	}
	)
end

#test_lmv2_responseObject



127
128
129
130
131
132
133
134
135
136
# File 'lib/rex/proto/ntlm.rb.ut.rb', line 127

def test_lmv2_response
	ares = ["d6e6152ea25d03b7c6ba6629c2d6aaf0ffffff0011223344"].pack("H*")
	assert_equal ares, Rex::Proto::NTLM::Crypt::lmv2_response(
		{
		:ntlmv2_hash => Rex::Proto::NTLM::Crypt::ntlmv2_hash(@user, @passwd, @domain),
		:challenge => @challenge
	},
		{ :client_challenge => @client_ch }
	)
end

#test_ntlm2_sessionObject



164
165
166
167
168
169
170
171
172
173
174
175
176
# File 'lib/rex/proto/ntlm.rb.ut.rb', line 164

def test_ntlm2_session
	acha = ["ffffff001122334400000000000000000000000000000000"].pack("H*")
	ares = ["10d550832d12b2ccb79d5ad1f4eed3df82aca4c3681dd455"].pack("H*")
	session = Rex::Proto::NTLM::Crypt::ntlm2_session(
		{
		:ntlm_hash => Rex::Proto::NTLM::Crypt::ntlm_hash(@passwd),
		:challenge => @challenge
	},
		{ :client_challenge => @client_ch }
	)
	assert_equal acha, session[0]
	assert_equal ares, session[1]
end

#test_ntlm_hashObject



96
97
98
99
# File 'lib/rex/proto/ntlm.rb.ut.rb', line 96

def test_ntlm_hash
	ahash = ["cd06ca7c7e10c99b1d33b7485a2ed808"].pack("H*")
	assert_equal ahash, Rex::Proto::NTLM::Crypt::ntlm_hash(@passwd)
end

#test_ntlm_responseObject



116
117
118
119
120
121
122
123
124
125
# File 'lib/rex/proto/ntlm.rb.ut.rb', line 116

def test_ntlm_response
	ares = ["25a98c1c31e81847466b29b2df4680f39958fb8c213a9cc6"].pack("H*")
	ntlm_hash = Rex::Proto::NTLM::Crypt::ntlm_hash(@passwd)
	assert_equal ares, Rex::Proto::NTLM::Crypt::ntlm_response(
		{
		:ntlm_hash => ntlm_hash,
		:challenge => @challenge
	}
	)
end

#test_ntlmv2_hashObject



101
102
103
104
# File 'lib/rex/proto/ntlm.rb.ut.rb', line 101

def test_ntlmv2_hash
	ahash = ["04b8e0ba74289cc540826bab1dee63ae"].pack("H*")
	assert_equal ahash, Rex::Proto::NTLM::Crypt::ntlmv2_hash(@user, @passwd, @domain)
end

#test_ntlmv2_responseObject



138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
# File 'lib/rex/proto/ntlm.rb.ut.rb', line 138

def test_ntlmv2_response
	ares = [
		"cbabbca713eb795d04c97abc01ee4983" +
		"01010000000000000090d336b734c301" +
		"ffffff00112233440000000002000c00" +
		"44004f004d00410049004e0001000c00" +
		"53004500520056004500520004001400" +
		"64006f006d00610069006e002e006300" +
		"6f006d00030022007300650072007600" +
		"650072002e0064006f006d0061006900" +
		"6e002e0063006f006d00000000000000" +
		"0000"
	].pack("H*")
	assert_equal ares, Rex::Proto::NTLM::Crypt::ntlmv2_response(
		{
		:ntlmv2_hash => Rex::Proto::NTLM::Crypt::ntlmv2_hash(@user, @passwd, @domain),
		:challenge => @challenge,
		:target_info => @trgt_info
	},
		{
		:timestamp => @timestamp,
		:client_challenge => @client_ch
	}
	)
end