mirror of
				https://github.com/CPunch/Laika.git
				synced 2025-10-31 02:20:21 +00:00 
			
		
		
		
	- laikaP_iterList for iterating over pollList - laikaS_consumeRead for throwing away padding or otherwise unneeded bytes in the socket's inbuffer - incremented minor version
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef LAIKA_PACKET_H
 | |
| #define LAIKA_PACKET_H
 | |
| 
 | |
| #define LAIKA_MAGIC "LAI\x12"
 | |
| #define LAIKA_MAGICLEN 4
 | |
| 
 | |
| #define LAIKA_MAX_PKTSIZE 4096
 | |
| 
 | |
| /* NONCE: randomly generated uint8_t[LAIKA_NONCESIZE] */
 | |
| 
 | |
| /* first handshake between peer & cnc works as so:
 | |
|     - peer connects to cnc and sends a LAIKAPKT_HANDSHAKE_REQ with the peer's pubkey
 | |
|     - after cnc receives LAIKAPKT_HANDSHAKE_REQ, all packets are encrypted
 | |
|     - cnc responds with LAIKAPKT_HANDSHAKE_RES
 | |
|     - if peer is an authenticated client (panel), LAIKAPKT_AUTHENTICATED_HANDSHAKE_REQ is then sent
 | |
| */
 | |
| 
 | |
| enum {
 | |
|     LAIKAPKT_HANDSHAKE_REQ,
 | |
|     /* layout of LAIKAPKT_HANDSHAKE_REQ:
 | |
|     *   uint8_t laikaMagic[LAIKA_MAGICLEN];
 | |
|     *   uint8_t majorVer;
 | |
|     *   uint8_t minorVer;
 | |
|     *   uint8_t pubKey[crypto_kx_PUBLICKEYBYTES]; -- freshly generated pubKey to encrypt decrypted nonce with
 | |
|     */
 | |
|     LAIKAPKT_HANDSHAKE_RES,
 | |
|     /* layout of LAIKAPKT_HANDSHAKE_RES:
 | |
|     *   uint8_t endian;
 | |
|     */
 | |
|     LAIKAPKT_AUTHENTICATED_HANDSHAKE_REQ,
 | |
|     /* layout of LAIKAPKT_STAGE2_HANDSHAKE_REQ
 | |
|     *   uint8_t peerType;
 | |
|     */
 | |
|     LAIKAPKT_AUTHENTICATED_ADD_BOT, /* notification that a bot has connected to the cnc */
 | |
|     /* layout of LAIKAPKT_AUTHENTICATED_ADD_BOT
 | |
|     *   uint8_t pubKey[crypto_kx_PUBLICKEYBYTES]; -- pubkey of said bot
 | |
|     *   -- reserved info later (machine info including hostname, OS, machineType, ip, etc.)
 | |
|     */
 | |
|     LAIKAPKT_AUTHENTICATED_RMV_BOT, /* notification that a bot has disconnected from the cnc */
 | |
|     /* layout of LAIKAPKT_AUTHENTICATED_RMV_BOT
 | |
|     *   uint8_t pubKey[crypto_kx_PUBLICKEYBYTES]; -- pubkey of said bot
 | |
|     */
 | |
|     //LAIKAPKT_VARPKT_REQ,
 | |
|     /* layout of LAIKAPKT_VARPKT_REQ:
 | |
|     *   uint8_t pktID;
 | |
|     *   uint16_t pktSize;
 | |
|     */
 | |
|     LAIKAPKT_MAXNONE
 | |
| };
 | |
| 
 | |
| typedef uint8_t LAIKAPKT_ID;
 | |
| typedef uint16_t LAIKAPKT_SIZE;
 | |
| 
 | |
| #endif |