mirror of
https://github.com/bettercap/bettercap.git
synced 2024-11-03 04:00:07 -08:00
209 lines
4.0 KiB
Go
209 lines
4.0 KiB
Go
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()
|