92 static bool isSSHPort(uint16_t portSrc, uint16_t portDst)
94 return portSrc == 22 || portDst == 22;
115 :
Layer(data, dataLen, prevLayer, packet,
SSH)
161 :
SSHLayer(data, dataLen, prevLayer, packet)
245 #pragma pack(push, 1)
249 uint32_t packetLength;
250 uint8_t paddingLength;
254 static_assert(
sizeof(
ssh_message_base) == 6,
"ssh_message_base size is not 6 bytes");
261 :
SSHLayer(data, dataLen, prevLayer, packet)
264 ssh_message_base* getMsgBaseHeader()
const
266 return reinterpret_cast<ssh_message_base*
>(m_Data);
301 return getFieldValue(0);
308 return getFieldValue(1);
315 return getFieldValue(2);
322 return getFieldValue(3);
329 return getFieldValue(4);
336 return getFieldValue(5);
343 return getFieldValue(6);
350 return getFieldValue(7);
357 return getFieldValue(8);
365 return getFieldValue(9);
374 size_t m_FieldOffsets[11];
375 bool m_OffsetsInitialized;
377 void parseMessageAndInitOffsets();
379 std::string getFieldValue(
int fieldOffsetIndex);
395 :
SSHLayer(data, dataLen, prevLayer, packet)
Definition: SSHLayer.h:390
size_t getHeaderLen() const override
Definition: SSHLayer.h:401
SSHEncryptedMessage(uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
Definition: SSHLayer.h:394
std::string toString() const override
Definition: SSHLayer.h:186
size_t getHeaderLen() const override
std::string toString() const override
size_t getPaddingLength() const
std::string getMessageTypeStr() const
SSHHandshakeMessageType
An enum that represents SSH non-encrypted message types.
Definition: SSHLayer.h:190
@ SSH_MSG_KEX_DH_INIT
Diffie-Hellman Key Exchange Init message.
Definition: SSHLayer.h:196
@ SSH_MSG_UNKNOWN
Unknown message.
Definition: SSHLayer.h:206
@ SSH_MSG_KEX_DH_GEX_REPLY
"Diffie-Hellman Group Exchange Reply message
Definition: SSHLayer.h:202
@ SSH_MSG_KEX_DH_GEX_REQUEST
Diffie-Hellman Group Exchange Request message.
Definition: SSHLayer.h:204
@ SSH_MSG_NEW_KEYS
New Keys message.
Definition: SSHLayer.h:194
@ SSH_MSG_KEX_INIT
Key Exchange Init message.
Definition: SSHLayer.h:192
@ SSH_MSG_KEX_DH_REPLY
message
Definition: SSHLayer.h:198
@ SSH_MSG_KEX_DH_GEX_INIT
Diffie-Hellman Group Exchange Init message.
Definition: SSHLayer.h:200
uint8_t * getSSHHandshakeMessage() const
SSHHandshakeMessageType getMessageType() const
static SSHHandshakeMessage * tryParse(uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
size_t getSSHHandshakeMessageLength() const
Definition: SSHLayer.h:130
size_t getHeaderLen() const override
Definition: SSHLayer.h:148
std::string getIdentificationMessage()
std::string toString() const override
static SSHIdentificationMessage * tryParse(uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
Definition: SSHLayer.h:275
std::string getCompressionAlgorithmsClientToServer()
Definition: SSHLayer.h:341
std::string getCookieAsHexStream()
std::string getKeyExchangeAlgorithms()
Definition: SSHLayer.h:299
std::string getEncryptionAlgorithmsClientToServer()
Definition: SSHLayer.h:313
std::string getServerHostKeyAlgorithms()
Definition: SSHLayer.h:306
std::string getLanguagesClientToServer()
Definition: SSHLayer.h:355
std::string getCompressionAlgorithmsServerToClient()
Definition: SSHLayer.h:348
std::string getMacAlgorithmsClientToServer()
Definition: SSHLayer.h:327
std::string getMacAlgorithmsServerToClient()
Definition: SSHLayer.h:334
bool isFirstKexPacketFollows()
std::string getLanguagesServerToClient()
Definition: SSHLayer.h:363
std::string getEncryptionAlgorithmsServerToClient()
Definition: SSHLayer.h:320
SSHKeyExchangeInitMessage(uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
Definition: SSHLayer.h:74
void computeCalculateFields() override
Does nothing for this layer.
Definition: SSHLayer.h:104
static SSHLayer * createSSHMessage(uint8_t *data, size_t dataLen, Layer *prevLayer, Packet *packet)
OsiModelLayer getOsiModelLayer() const override
Definition: SSHLayer.h:107
void parseNextLayer() override
static bool isSSHPort(uint16_t portSrc, uint16_t portDst)
Definition: SSHLayer.h:92
The main namespace for the PcapPlusPlus lib.
OsiModelLayer
An enum representing OSI model layers.
Definition: ProtocolType.h:225
@ OsiModelApplicationLayer
Application layer (layer 7)
Definition: ProtocolType.h:239
const ProtocolType SSH
SSH version 2 protocol.
Definition: ProtocolType.h:146
An internal struct representing the SSH handshake message header.
Definition: SSHLayer.h:248