|  | @@ -892,9 +892,12 @@ namespace Renci.SshNet
 | 
	
		
			
				|  |  |              //  Read first block - which starts with the packet length
 | 
	
		
			
				|  |  |              var firstBlock = Read(blockSize);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +            DiagnosticAbstraction.Log(string.Format("[{0}] FirstBlock [{1}]: {2}", ToHex(SessionId), blockSize, ToHex(firstBlock)));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              if (_serverCipher != null)
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  |                  firstBlock = _serverCipher.Decrypt(firstBlock);
 | 
	
		
			
				|  |  | +                DiagnosticAbstraction.Log(string.Format("[{0}] FirstBlock decrypted [{1}]: {2}", ToHex(SessionId), firstBlock.Length, ToHex(firstBlock)));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              var packetLength = (uint)(firstBlock[0] << 24 | firstBlock[1] << 16 | firstBlock[2] << 8 | firstBlock[3]);
 | 
	
	
		
			
				|  | @@ -924,10 +927,14 @@ namespace Renci.SshNet
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  |                  var nextBlocks = Read(bytesToRead);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +                DiagnosticAbstraction.Log(string.Format("[{0}] NextBlocks [{1}]: {2}", ToHex(SessionId), bytesToRead, ToHex(nextBlocks)));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                  if (serverHash != null)
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  |                      Buffer.BlockCopy(nextBlocks, nextBlocks.Length - serverHash.Length, serverHash, 0, serverHash.Length);
 | 
	
		
			
				|  |  |                      nextBlocks = nextBlocks.Take(nextBlocks.Length - serverHash.Length);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    DiagnosticAbstraction.Log(string.Format("[{0}] ServerHash [{1}]: {2}", ToHex(SessionId), serverHash.Length, ToHex(serverHash)));
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if (nextBlocks.Length > 0)
 | 
	
	
		
			
				|  | @@ -935,6 +942,7 @@ namespace Renci.SshNet
 | 
	
		
			
				|  |  |                      if (_serverCipher != null)
 | 
	
		
			
				|  |  |                      {
 | 
	
		
			
				|  |  |                          nextBlocks = _serverCipher.Decrypt(nextBlocks);
 | 
	
		
			
				|  |  | +                        DiagnosticAbstraction.Log(string.Format("[{0}] NextBlocks decrypted [{1}]: {2}", ToHex(SessionId), nextBlocks.Length, ToHex(nextBlocks)));
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                      nextBlocks.CopyTo(data, blockSize + inboundPacketSequenceLength);
 | 
	
	
		
			
				|  | @@ -942,7 +950,6 @@ namespace Renci.SshNet
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              var paddingLength = data[inboundPacketSequenceLength + packetLengthFieldLength];
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |              var messagePayloadLength = (int) (packetLength - paddingLength - paddingLengthFieldLength);
 | 
	
		
			
				|  |  |              var messagePayloadOffset = inboundPacketSequenceLength + packetLengthFieldLength + paddingLengthFieldLength;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -965,6 +972,8 @@ namespace Renci.SshNet
 | 
	
		
			
				|  |  |                  messagePayloadOffset = 0;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +            DiagnosticAbstraction.Log(string.Format("[{0}] Message info (Sequence:{1},MessagePayloadLength:{2})", ToHex(SessionId), _inboundPacketSequence, messagePayloadLength));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              _inboundPacketSequence++;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              return LoadMessage(data, messagePayloadOffset);
 | 
	
	
		
			
				|  | @@ -1681,7 +1690,7 @@ namespace Renci.SshNet
 | 
	
		
			
				|  |  |              return builder.ToString();
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        private static string ToHex(byte[] bytes)
 | 
	
		
			
				|  |  | +        internal static string ToHex(byte[] bytes)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |              if (bytes == null)
 | 
	
		
			
				|  |  |                  return null;
 |