목록분류 전체보기 (365)
ICMP 패킷을 보내고 다시 받은 패킷의 src IP를 추출했다. #include #include #include #include #include #include // ICMP 체크섬 계산 함수unsigned short checksum(void *b, int len) { unsigned short *buf = (unsigned short *)b; unsigned int sum = 0; unsigned short result; for (sum = 0; len > 1; len -= 2) sum += *buf++; if (len == 1) sum += *(unsigned char *)buf; sum = (sum >> 16) + (sum & 0xFFFF..
리눅스의 Traceroute를 직접 구현해 보기로 했다. Traceroute는 ICMP 규약을 통해 통신을한다.ICMP의 패킷 구조이다.WireShark로 다시 한번 확인해 볼 예정이다. 먼저 간단하게 ICMP패킷을 만들어 보내는 코드를 작성해 보았다. #include #include #include #include #include #include // ICMP 체크섬 계산 함수unsigned short checksum(void *b, int len) { unsigned short *buf = (unsigned short *)b; unsigned int sum = 0; unsigned short result; for (sum = 0; len > 1; len -= 2) ..
가장 높은 시너지에 대해서 승률을 정리하는 로직을 작성했다. #ifndef ANALYSIS_H#define AHALYSIS_H#include "JSONParsing.h"#include #include #include class Analysis{ private: Participant my_data; std::vector scraped_traits; std::vector scraped_avg_places; std::map mapset; public: Analysis(Participant arg_1, std::vector arg_2, std::vector arg_3); void Analysis_traits();..
오늘은 간단하게 저번에 작성했던 코드를 클래스로 다시 정리했다. Scraper를 만들어주었다. tasks도 수정을 해주었다. #ifndef SCRAPER_H#define SCRAPER_H#include #include #include class Scraper{ private: std::vector traits; std::vector avg_places; FILE* pipe; public: Scraper(); ~Scraper(); std::vector GET_traits(); std::vector GET_avg_places(); void Print_Data();};#endif //S..
내가 가지고 있는 데이터와 어떤 데이터를 비교해야 할지 많이 고민했다.결국 TFT정보들이 정리되어있는 사이트를 크롤링해서비교 데이터를 수집하기로 했다. C++로 크롤링을 진행하다 여러 오류를 만나 시간이 오래 걸렸다.그래서 Python으로 크롤링을 진행하고 해당 출력데이터를 c++로 보내는 방법을 이용하기로 했다. 점점 디렉터리에 파일이 많아진다.test.py가 크롤링을 진행하는 스크립트이다.#include "APIManager.h"#include "JSONParsing.h"#include #include #include #include #include #include using namespace std;int main() { string puuid = "jzmQU3rvfYTnN7djGlqZg7G..
API의 JSON데이터를 정리해 주었다. #ifndef APIMANAGER_H#define APIMANAGER_H#include #include #include class APIManager{ private: std::string apiEndpoint; std::string api_Data; static size_t WriteCallback(void *contents, size_t size, size_t nmemb, void* userp); public: APIManager(const std::string& endpoint); void FetchData(); void SET_api_data(const std::str..
Riot에서 제공하는 api를 가지고 무언가 만들어보고 싶었다.이번에도 c++로 만들 예정이며단일 책임 원칙을 지켜가며 설계를 해보고 싶었다. 일단 API를 가져오는 클래스부터 간단하게 구현하기로 했다. 해당 디렉터리 구조를 가지고 있고tasks.json파일을 수정하였다. #ifndef APIMANAGER_H#define APIMANAGER_H#include #include class APIManager{ private: std::string apiEndpoint; public: APIManager(const std::string& endpoint); void fetchData(); private: static size_t WriteCa..
마지막 간단한 암호화를 적용해 보았다.대칭키인 AES를 이용해 파일을 암호화를 진행하고 클라이언트에서는 복호화를 진행한다.따로 cpp파일로 만들어 사용했다. 라이브러리를 다운로드하여준다.여러 암호화를 위한 툴을 제공해 준다.인자값도 추가해 준다. 256비트의 키를 미리 만들어 주었다. #include #include #include #include #include #define AES_KEY_LENGTH 256 // AES 키 길이를 256비트로 설정std::string keyFile = "/home/sj/aes_key/aes_key.txt"; // AES 키 파일bool encryptFileAES(const std::string& inputFile, const std::string& output..