| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | #ifndef SESSION_H#define SESSION_H#include <vector>#include <random>#include <memory>#include <functional>#include <climits>#include <algorithm>#include "Utils.h"#include "stdlib.h"#include "ShannonConnection.h"#include "LoginBlob.h"#include "ApResolve.h"#include "PlainConnection.h"#include "Packet.h"#include "ConstantParameters.h"#include "Crypto.h"#include "NanoPBHelper.h"#include "protobuf/authentication.pb.h"#include "protobuf/keyexchange.pb.h"#define SPOTIFY_VERSION 0x10800000000#define LOGIN_REQUEST_COMMAND 0xAB#define AUTH_SUCCESSFUL_COMMAND 0xAC#define AUTH_DECLINED_COMMAND 0xADclass Session{private:    ClientResponseEncrypted authRequest;    ClientResponsePlaintext clientResPlaintext;    ClientHello clientHello;    APResponseMessage apResponse;    std::shared_ptr<PlainConnection> conn;    std::unique_ptr<Crypto> crypto;    std::vector<uint8_t> sendClientHelloRequest();    void processAPHelloResponse(std::vector<uint8_t> &helloPacket);public:    Session();    ~Session();    std::shared_ptr<ShannonConnection> shanConn;    std::shared_ptr<LoginBlob> authBlob;    void connect(std::unique_ptr<PlainConnection> connection);    void connectWithRandomAp();    void close();    std::vector<uint8_t> authenticate(std::shared_ptr<LoginBlob> blob);};#endif
 |