120 lines
3.5 KiB
C
120 lines
3.5 KiB
C
//=============================================================================
|
|
// MODULE: apreq.c
|
|
//
|
|
// Description:
|
|
//
|
|
// Bloodhound Parser DLL for Kerberos Authentication Protocol
|
|
//
|
|
// Modification History
|
|
//
|
|
// Michael Webb & Kris Frost Date: 06/04/99
|
|
//=============================================================================
|
|
|
|
|
|
#include "kerbGlob.h"
|
|
|
|
|
|
LPBYTE HandleAPReq(HFRAME hFrame, LPBYTE TempFrame)
|
|
{
|
|
// Display AP-Req (6E)
|
|
TempFrame = DispASNTypes(hFrame, TempFrame, 5, DispKerbMsgType, KrbApReqBitF);
|
|
|
|
// Calculate Length Octet
|
|
TempFrame = CalcLengthSummary(hFrame, TempFrame, 7);
|
|
|
|
// Incrementing TempFrame based on the number of octets
|
|
// taken up by the Length octet
|
|
TempFrame = IncTempFrame(TempFrame);
|
|
|
|
// Display SEQUENCE
|
|
TempFrame = DispSeqOctets(hFrame, TempFrame, 7, ASN1UnivTagSumID, ASN1UnivTag);
|
|
|
|
// Incrementing TempFrame based on the number of octets
|
|
// taken up by the Length octet
|
|
TempFrame = IncTempFrame(TempFrame);
|
|
|
|
// Display Protocol Version value at the Top level
|
|
TempFrame = DispSum(hFrame, TempFrame, 0x02, 0x30, 6, DispProtocolVer);
|
|
|
|
//Display Integer value of pvno[0]
|
|
// Display ASN.1 Identifier
|
|
TempFrame = DispASNTypes(hFrame, TempFrame, 7, KrbApReqID, KrbApReqBitF);
|
|
|
|
// Break Down INTEGER values
|
|
TempFrame = DefineValue(hFrame, TempFrame, 9, KdcContentsValue);
|
|
|
|
// Display Message Type value at the Top level
|
|
TempFrame = DispSum(hFrame, TempFrame, 0x02, 0x30, 6, DispKerbMsgType);
|
|
|
|
// Display msg-type[1]
|
|
TempFrame = DispASNTypes(hFrame, TempFrame, 7, KrbApReqID, KrbApReqBitF);
|
|
|
|
// Break Down INTEGER values
|
|
TempFrame = DefineValue(hFrame, TempFrame, 9, KrbMsgTypeID);
|
|
|
|
// Display AP Options at the Top level
|
|
TempFrame = DispTopSum(hFrame, TempFrame, 6, DispApOptionsSum);
|
|
|
|
// Display ap-options[2]
|
|
TempFrame = DispASNTypes(hFrame, TempFrame, 7, KrbApReqID, KrbApReqBitF);
|
|
|
|
// Display Length Octet
|
|
TempFrame = CalcLengthSummary(hFrame, TempFrame, 10);
|
|
|
|
// Incrementing TempFrame based on the number of octets
|
|
// taken up by the Length octet
|
|
TempFrame = IncTempFrame(TempFrame);
|
|
|
|
// Display Universal Class Tag
|
|
TempFrame = DispASNTypes(hFrame, TempFrame, 9, ASN1UnivTagSumID, ASN1UnivTag);
|
|
|
|
// Display Length Octet
|
|
TempFrame = CalcLengthSummary(hFrame, TempFrame, 12);
|
|
|
|
// Need to increment TempFrame by two because AP Options is 32bit
|
|
TempFrame+=2;
|
|
|
|
// Break down AP-Option Flags
|
|
TempFrame = DefineKdcOptions(hFrame, TempFrame, 7, DispFlagApOptions);
|
|
|
|
// Incrementing TempFrame to next Class Tag
|
|
TempFrame+=3;
|
|
|
|
// Display Ticket at Top Level
|
|
TempFrame = DispTopSum(hFrame, TempFrame, 6, DispSumTicket);
|
|
|
|
// Display ticket[3]
|
|
TempFrame = HandleTicket(hFrame, TempFrame, 7);
|
|
|
|
// Handle the display of authenticator[4]
|
|
// Display Ciper Text at the Top level
|
|
TempFrame = DispTopSum(hFrame, TempFrame, 6, DispCipherText);
|
|
|
|
// Display authenticator[4] of Ticket
|
|
TempFrame = DispASNTypes(hFrame, TempFrame, 7, KrbApReqID, KrbApReqBitF);
|
|
|
|
// Display Length Octet
|
|
TempFrame = CalcLengthSummary(hFrame, TempFrame, 10);
|
|
|
|
// Incrementing TempFrame based on the number of octets
|
|
// taken up by the Length octet
|
|
TempFrame = IncTempFrame(TempFrame);
|
|
|
|
// Display SEQUENCE
|
|
TempFrame = DispASNTypes(hFrame, TempFrame, 9, ASN1UnivTagSumID, ASN1UnivTag);
|
|
|
|
// Display Long form Length Octet
|
|
TempFrame = CalcLengthSummary(hFrame, TempFrame, 11);
|
|
|
|
// Incrementing TempFrame based on the number of octets
|
|
// taken up by the Length octet
|
|
TempFrame = IncTempFrame(TempFrame);
|
|
|
|
// Handle EncryptedData Needs to start with A0
|
|
TempFrame = HandleEncryptedData(hFrame, TempFrame, 7);
|
|
|
|
|
|
return TempFrame;
|
|
|
|
}
|