mirror of
https://github.com/bettercap/bettercap
synced 2025-07-06 04:52:10 -07:00
add some ntlm tests
This commit is contained in:
parent
f0f98bcd06
commit
8b74453842
1 changed files with 164 additions and 0 deletions
164
packets/ntlm_test.go
Normal file
164
packets/ntlm_test.go
Normal file
|
@ -0,0 +1,164 @@
|
|||
package packets
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestNTLMConstants(t *testing.T) {
|
||||
var units = []struct {
|
||||
got interface{}
|
||||
exp interface{}
|
||||
}{
|
||||
{NTLM_SIG_OFFSET, 0},
|
||||
{NTLM_TYPE_OFFSET, 8},
|
||||
{NTLM_TYPE1_FLAGS_OFFSET, 12},
|
||||
{NTLM_TYPE1_DOMAIN_OFFSET, 16},
|
||||
{NTLM_TYPE1_WORKSTN_OFFSET, 24},
|
||||
{NTLM_TYPE1_DATA_OFFSET, 32},
|
||||
{NTLM_TYPE1_MINSIZE, 16},
|
||||
{NTLM_TYPE2_TARGET_OFFSET, 12},
|
||||
{NTLM_TYPE2_FLAGS_OFFSET, 20},
|
||||
{NTLM_TYPE2_CHALLENGE_OFFSET, 24},
|
||||
{NTLM_TYPE2_CONTEXT_OFFSET, 32},
|
||||
{NTLM_TYPE2_TARGETINFO_OFFSET, 40},
|
||||
{NTLM_TYPE2_DATA_OFFSET, 48},
|
||||
{NTLM_TYPE2_MINSIZE, 32},
|
||||
{NTLM_TYPE3_LMRESP_OFFSET, 12},
|
||||
{NTLM_TYPE3_NTRESP_OFFSET, 20},
|
||||
{NTLM_TYPE3_DOMAIN_OFFSET, 28},
|
||||
{NTLM_TYPE3_USER_OFFSET, 36},
|
||||
{NTLM_TYPE3_WORKSTN_OFFSET, 44},
|
||||
{NTLM_TYPE3_SESSIONKEY_OFFSET, 52},
|
||||
{NTLM_TYPE3_FLAGS_OFFSET, 60},
|
||||
{NTLM_TYPE3_DATA_OFFSET, 64},
|
||||
{NTLM_TYPE3_MINSIZE, 52},
|
||||
{NTLM_BUFFER_LEN_OFFSET, 0},
|
||||
{NTLM_BUFFER_MAXLEN_OFFSET, 2},
|
||||
{NTLM_BUFFER_OFFSET_OFFSET, 4},
|
||||
{NTLM_BUFFER_SIZE, 8},
|
||||
{NtlmV1, 1},
|
||||
{NtlmV2, 2},
|
||||
}
|
||||
for _, u := range units {
|
||||
if !reflect.DeepEqual(u.exp, u.got) {
|
||||
t.Fatalf("expected '%v', got '%v'", u.exp, u.got)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestNTLMChallengeResponse(t *testing.T) {
|
||||
r := NTLMChallengeResponse{}
|
||||
var units = []struct {
|
||||
got interface{}
|
||||
exp interface{}
|
||||
}{
|
||||
{r.Challenge, ""},
|
||||
{r.Response, ""},
|
||||
}
|
||||
for _, u := range units {
|
||||
if !reflect.DeepEqual(u.exp, u.got) {
|
||||
t.Fatalf("expected '%v', got '%v'", u.exp, u.got)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestNTLMChallengeResponseParsed(t *testing.T) {
|
||||
r := NTLMChallengeResponseParsed{}
|
||||
var units = []struct {
|
||||
got interface{}
|
||||
exp interface{}
|
||||
}{
|
||||
{r.Type, 0},
|
||||
{r.ServerChallenge, ""},
|
||||
{r.User, ""},
|
||||
{r.Domain, ""},
|
||||
{r.LmHash, ""},
|
||||
{r.NtHashOne, ""},
|
||||
{r.NtHashTwo, ""},
|
||||
}
|
||||
for _, u := range units {
|
||||
if !reflect.DeepEqual(u.exp, u.got) {
|
||||
t.Fatalf("expected '%v', got '%v'", u.exp, u.got)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestNTLMResponseHeader(t *testing.T) {
|
||||
r := NTLMResponseHeader{}
|
||||
var units = []struct {
|
||||
got interface{}
|
||||
exp interface{}
|
||||
}{
|
||||
{r.Sig, ""},
|
||||
{r.Type, uint32(0)},
|
||||
{r.LmLen, uint16(0)},
|
||||
{r.LmMax, uint16(0)},
|
||||
{r.LmOffset, uint16(0)},
|
||||
{r.NtLen, uint16(0)},
|
||||
{r.NtMax, uint16(0)},
|
||||
{r.NtOffset, uint16(0)},
|
||||
{r.DomainLen, uint16(0)},
|
||||
{r.DomainMax, uint16(0)},
|
||||
{r.DomainOffset, uint16(0)},
|
||||
{r.UserLen, uint16(0)},
|
||||
{r.UserMax, uint16(0)},
|
||||
{r.UserOffset, uint16(0)},
|
||||
{r.HostLen, uint16(0)},
|
||||
{r.HostMax, uint16(0)},
|
||||
{r.HostOffset, uint16(0)},
|
||||
}
|
||||
for _, u := range units {
|
||||
if !reflect.DeepEqual(u.exp, u.got) {
|
||||
t.Fatalf("expected '%v', got '%v'", u.exp, u.got)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestNTLMState(t *testing.T) {
|
||||
r := map[uint32]string{}
|
||||
p := []NTLMChallengeResponse{}
|
||||
s := NTLMState{
|
||||
Responses: r,
|
||||
Pairs: p,
|
||||
}
|
||||
var units = []struct {
|
||||
got interface{}
|
||||
exp interface{}
|
||||
}{
|
||||
{s.Responses, r},
|
||||
{s.Pairs, p},
|
||||
}
|
||||
for _, u := range units {
|
||||
if !reflect.DeepEqual(u.exp, u.got) {
|
||||
t.Fatalf("expected '%v', got '%v'", u.exp, u.got)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func BuildExampleNTLMState() NTLMState {
|
||||
return NTLMState{
|
||||
Responses: map[uint32]string{},
|
||||
Pairs: []NTLMChallengeResponse{},
|
||||
}
|
||||
}
|
||||
|
||||
func TestNTLMStateAddServerResponse(t *testing.T) {
|
||||
s := BuildExampleNTLMState()
|
||||
|
||||
s.AddServerResponse(uint32(0), "picat")
|
||||
|
||||
var units = []struct {
|
||||
got interface{}
|
||||
exp interface{}
|
||||
}{
|
||||
{s.Responses[uint32(0)], "picat"},
|
||||
}
|
||||
for _, u := range units {
|
||||
if !reflect.DeepEqual(u.exp, u.got) {
|
||||
t.Fatalf("expected '%v', got '%v'", u.exp, u.got)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: add tests for the rest of NTLM :P
|
Loading…
Add table
Add a link
Reference in a new issue