mirror of
https://github.com/bettercap/bettercap
synced 2025-07-05 20:42:09 -07:00
add some krb5 tests
This commit is contained in:
parent
d71477f502
commit
f0f98bcd06
1 changed files with 208 additions and 0 deletions
208
packets/krb5_test.go
Normal file
208
packets/krb5_test.go
Normal file
|
@ -0,0 +1,208 @@
|
|||
package packets
|
||||
|
||||
import (
|
||||
"encoding/asn1"
|
||||
"errors"
|
||||
"reflect"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestKrb5Contants(t *testing.T) {
|
||||
var units = []struct {
|
||||
got interface{}
|
||||
exp interface{}
|
||||
}{
|
||||
{Krb5AsRequestType, 10},
|
||||
{Krb5Krb5PrincipalNameType, 1},
|
||||
{Krb5CryptDesCbcMd4, 2},
|
||||
{Krb5CryptDescCbcMd5, 3},
|
||||
{Krb5CryptRc4Hmac, 23},
|
||||
}
|
||||
for _, u := range units {
|
||||
if !reflect.DeepEqual(u.exp, u.got) {
|
||||
t.Fatalf("expected '%v', got '%v'", u.exp, u.got)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestKrb5Vars(t *testing.T) {
|
||||
var units = []struct {
|
||||
got interface{}
|
||||
exp interface{}
|
||||
}{
|
||||
{ErrNoCrypt, errors.New("No crypt alg found")},
|
||||
{ErrReqData, errors.New("Failed to extract pnData from as-req")},
|
||||
{ErrNoCipher, errors.New("No encryption type or cipher found")},
|
||||
{Krb5AsReqParam, "application,explicit,tag:10"},
|
||||
}
|
||||
for _, u := range units {
|
||||
if !reflect.DeepEqual(u.exp, u.got) {
|
||||
t.Fatalf("expected '%v', got '%v'", u.exp, u.got)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestKrb5PrincipalName(t *testing.T) {
|
||||
str := []string{"example"}
|
||||
name := Krb5PrincipalName{NameString: str}
|
||||
var units = []struct {
|
||||
got interface{}
|
||||
exp interface{}
|
||||
}{
|
||||
{name.NameType, 0},
|
||||
{name.NameString, str},
|
||||
}
|
||||
for _, u := range units {
|
||||
if !reflect.DeepEqual(u.exp, u.got) {
|
||||
t.Fatalf("expected '%v', got '%v'", u.exp, u.got)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestKrb5EncryptedData(t *testing.T) {
|
||||
cipher := []byte{}
|
||||
data := Krb5EncryptedData{Cipher: cipher}
|
||||
var units = []struct {
|
||||
got interface{}
|
||||
exp interface{}
|
||||
}{
|
||||
{data.Cipher, cipher},
|
||||
{data.Etype, 0},
|
||||
{data.Kvno, 0},
|
||||
}
|
||||
for _, u := range units {
|
||||
if !reflect.DeepEqual(u.exp, u.got) {
|
||||
t.Fatalf("expected '%v', got '%v'", u.exp, u.got)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestKrb5Ticket(t *testing.T) {
|
||||
v := 0
|
||||
r := "picat"
|
||||
s := Krb5PrincipalName{}
|
||||
e := Krb5EncryptedData{}
|
||||
|
||||
ticket := Krb5Ticket{
|
||||
TktVno: v,
|
||||
Realm: r,
|
||||
Sname: s,
|
||||
EncPart: e,
|
||||
}
|
||||
var units = []struct {
|
||||
got interface{}
|
||||
exp interface{}
|
||||
}{
|
||||
{ticket.TktVno, v},
|
||||
{ticket.Realm, r},
|
||||
{ticket.Sname, s},
|
||||
{ticket.EncPart, e},
|
||||
}
|
||||
for _, u := range units {
|
||||
if !reflect.DeepEqual(u.exp, u.got) {
|
||||
t.Fatalf("expected '%v', got '%v'", u.exp, u.got)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestKrb5Address(t *testing.T) {
|
||||
x := 0
|
||||
y := []byte{}
|
||||
addr := Krb5Address{
|
||||
AddrType: x,
|
||||
Krb5Address: y,
|
||||
}
|
||||
var units = []struct {
|
||||
got interface{}
|
||||
exp interface{}
|
||||
}{
|
||||
{addr.AddrType, x},
|
||||
{addr.Krb5Address, y},
|
||||
}
|
||||
for _, u := range units {
|
||||
if !reflect.DeepEqual(u.exp, u.got) {
|
||||
t.Fatalf("expected '%v', got '%v'", u.exp, u.got)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestKrb5PnData(t *testing.T) {
|
||||
x := 0
|
||||
y := []byte{}
|
||||
addr := Krb5PnData{
|
||||
Krb5PnDataType: x,
|
||||
Krb5PnDataValue: y,
|
||||
}
|
||||
var units = []struct {
|
||||
got interface{}
|
||||
exp interface{}
|
||||
}{
|
||||
{addr.Krb5PnDataType, x},
|
||||
{addr.Krb5PnDataValue, y},
|
||||
}
|
||||
for _, u := range units {
|
||||
if !reflect.DeepEqual(u.exp, u.got) {
|
||||
t.Fatalf("expected '%v', got '%v'", u.exp, u.got)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestKrb5ReqBody(t *testing.T) {
|
||||
e := []int{}
|
||||
a := []Krb5Address{}
|
||||
k := []Krb5Ticket{}
|
||||
req := Krb5ReqBody{
|
||||
Etype: e,
|
||||
Krb5Addresses: a,
|
||||
AdditionalKrb5Tickets: k,
|
||||
}
|
||||
var units = []struct {
|
||||
got interface{}
|
||||
exp interface{}
|
||||
}{
|
||||
{req.KDCOptions, asn1.BitString{}},
|
||||
{req.Cname, Krb5PrincipalName{}},
|
||||
{req.Realm, ""},
|
||||
{req.Sname, Krb5PrincipalName{}},
|
||||
{req.From, time.Time{}},
|
||||
{req.Till, time.Time{}},
|
||||
{req.Rtime, time.Time{}},
|
||||
{req.Nonce, 0},
|
||||
{req.Etype, e},
|
||||
{req.Krb5Addresses, a},
|
||||
{req.EncAuthData, Krb5EncryptedData{}},
|
||||
{req.AdditionalKrb5Tickets, k},
|
||||
}
|
||||
for _, u := range units {
|
||||
if !reflect.DeepEqual(u.exp, u.got) {
|
||||
t.Fatalf("expected '%v', got '%v'", u.exp, u.got)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestKrb5Request(t *testing.T) {
|
||||
p := []Krb5PnData{}
|
||||
req := Krb5Request{
|
||||
Krb5PnData: p,
|
||||
}
|
||||
var units = []struct {
|
||||
got interface{}
|
||||
exp interface{}
|
||||
}{
|
||||
{req.Pvno, 0},
|
||||
{req.MsgType, 0},
|
||||
{req.Krb5PnData, p},
|
||||
{req.ReqBody, Krb5ReqBody{}},
|
||||
}
|
||||
for _, u := range units {
|
||||
if !reflect.DeepEqual(u.exp, u.got) {
|
||||
t.Fatalf("expected '%v', got '%v'", u.exp, u.got)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// TODO: add test for func (kdc Krb5Request) String()
|
||||
// TODO: add test for func (pd Krb5PnData) getParsedValue()
|
Loading…
Add table
Add a link
Reference in a new issue