“…The experiment first groups the captured traffic data according to IP which must be the routing nodes of the Tor to obtain valuable packet information. In the experiment, after the traffic data is obtained, it only needs to request and respond to the packet size as it 6 Security and Communication Networks (1) class Filter{ (2) public: //Defines the storage server IP address; server ips (3) unordered set <string> server ips; //Defines the storage client IP address: client ips (4) unordered set <string> client ips; //Defines the maximum port that needs to be processed (5) int PROXYPORT MIN; //Defines the minimum port that needs to be processed (6) int PROXYPORT MAX; (7) public: //FilterConstructor (8) Filter(char * clientipfname, char * serveripfname, int portmin, int portmax); //Read the IP function (9) int read ips(unordered set<string>&set, char * fname); //Determines whether the file loads the function (10) bool is onload(u char * payload); //Determine whether the traffic function is listening (11) bool is monitoredtraffic(char * src, unsigned int sport, char * dst, unsigned int dport); //Implement the transformation function for the data (12) RETparse one(char * capfname, int proxy port min, intproxy port max, int remove ack, char * monitoredoutname, char * localoutname, char * c2stau, char * s2ctau, char * timeseq); (13) }; contains more complex data. Therefore, the original data needs to be processed.…”