Giter Site home page Giter Site logo

naga's Introduction

Naga

BoB(Best of the Best) 7기 MapleStory 팀 에서 진행한 프로젝트입니다.

About Naga

img 나가(Naga)는 Not Available Grayware Application의 약자로서, 사용자가 좀 더 쾌적하게 PC를 사용할 수 있도록 도와주는 프로그램입니다.


Features

나가(Naga)는 크게 두 가지 기능을 제공합니다.

  1. 금융보안 프로그램의 삭제와 업데이트

    뱅킹 서비스를 이용하기 위해 단발성으로 설치되는 보안프로그램들을 쉽게 제거 또는 업데이트 할 수 있도록 도와주는 기능입니다.

    금융 관련 보안 프로그램들의 최신 버전을 확인하고 사용자에게 알려주어  항상 최신버전의 보안 프로그램을 사용할 수 있도록 유도하거나, 사용하지 않는 프로그램에 대해 제거를 권유하는 기능을 가지고 있습니다.


  2. 필요없(을 수도 있)는 프로그램의 삭제와 업데이트

    사용자 모르게 설치되어 있는 프로그램이나 잘 사용하지 않는 프로그램을 탐지하여 사용자에게 알려주고, 쉽게 제거할 수 있도록 도와주는 기능입니다.

    불필요한 프로그램을 삭제함으로써 PC 저장공간을 활용할 수 있도록 하고, 낭비되는 메모리 자원의 누수를 막아 사용자의 PC 환경을 최적화 할 수 있도록 도와줍니다.


How to use Naga?

데모영상확인

  1. Naga installer 를 실행해 프로그램을 설치합니다.

  2. Naga.exe를 실행해 내 PC를 진단합니다.

  3. 제거하고자 하는 프로그램의 체크박스를 선택한 후 삭제버튼을 누릅니다.


하늘색 : 금융관련 보안프로그램

빨간색 : 업데이트가 필요한 보안프로그램

하얀색 : unknown ware 로 구별할 수 있습니다.


Library Used

Special thanks to

somma, kog

naga's People

Contributors

heaeat avatar somma avatar ksusuyeon avatar cksum0120 avatar ksh95216 avatar 3jins avatar

Stargazers

Stephan Burgos avatar  avatar  avatar

Watchers

James Cloos avatar  avatar

naga's Issues

삭제 대상 프로그램들 조사르 다시 해야합니다...!!

초반에 조사했던 프로그램들은 1,2 금융권들을 대상으로만 조사했는데
새벽에 네이버 페이 결제를 하면서 실시간 계좌이체를 하다보니까 그런 서비스를 이용할때도 보안 프로그램이 설치 됨을 확인했습니다...!!
쿠팡, 위메프, 네이버 페이 등등을 이용하면서 실시간 계좌 이체를 이용할 경우 설치되는 프로그램들도 확인해봐야할것 같아요..!

GetFileTime을 통한 access 시간!!!!!

#include <iostream>
#include <windows.h>

using namespace std;



BOOL get_last_acess_time(HANDLE hFile, LPSTR lpszString)
{
	FILETIME ftCreate, ftAccess, ftWrite, ftLocal;
	SYSTEMTIME stCreate;

	//Retrive the file times for the file
	if (!GetFileTime(hFile, &ftCreate, &ftAccess, &ftLocal))
		return false;

	//Convert the last-access time to local time
	if(!FileTimeToLocalFileTime(&ftAccess, &ftLocal))
		return false;

	//Convert the local file time from UTC to system time
	FileTimeToSystemTime(&ftLocal, &stCreate);

	wsprintf(lpszString, "%02d/%02d/%d  %02d:%02d",
		stCreate.wDay, stCreate.wMonth, stCreate.wYear,stCreate.wHour, stCreate.wMinute);

	return TRUE;
		
}

void main()

{
	HANDLE hFile;

	hFile = CreateFile("C:\\Program Files\\DAUM\\PotPlayer\\PotPlayer64.exe",     // open MYFILE.TXT 
		GENERIC_READ,              // open for reading 
		FILE_SHARE_READ,           // share for reading 
		NULL,                      // no security 
		OPEN_EXISTING,             // existing file only 
		FILE_ATTRIBUTE_NORMAL,     // normal file 
		NULL);

	if (hFile == INVALID_HANDLE_VALUE)
	{
		return;
	}

	char buff[255];
	memset(buff, 0x00, 255);
	get_last_acess_time(hFile, buff);
	std::cout << "file last-access time: " << buff << std::endl;
}

version 정보를 가져올 경우

image
사용자 PC에 설치된 프로그램 목록와 pf 파일에서 파싱해온 프로그램의 이름을 비교하여 uninstaller의 정보와 버젼정보를 얻고자한다.

현재는 단순히

  1. 설치된 프로그램 목록의 이름을 받아와 대문자로 바꾼다.
  2. 프리패치 파일에서 얻어온 프로그램의 이름에서 .EXE 를 제외한다.
  3. 1번에서 2번을 포함하고 있는 지 검사한다.
  4. 포함하고 있다면 설치된 프로그램 목록에서의 version 정보를 가져온다.

이를 개선해보고자 한다.

MFC thread

데이터를 읽어오는 동안 loading 화면을 thread를 통해 돌려놓고싶은데
자꾸이상하게 동작한다!!!!ㅋㅋㅋㅋㅠ
image
파싱 다 되기전에 로딩창만 떠버림..
image
파싱이 안되어버림 ㅠ

구라제거기의 삭제대상 설치파일들 확인

설치파일 다운로드 후 드라이브에 업로드
→ 얘네 이름이랑 프로세스 같은 칭구들 확인하믄 될듯!
구글독스
더하다잘라구랬늗ㄴ데 너무 졸려..

  • 키보드 보안 프로그램
  • KISA에서 권고한 이니텍 삭제대상
  • nProtect
  • 기타
  • 프로그램 추가/제거에 들어가지 않는 악성 팝업창 프로그램
  • 그리드
  • 메모리 차지하는 칭구들

Kick-off 대비

  • 현재 진행상황 github에 올리기
  • 발표자료 만들기
  • 예상 질문 답변 해보기

Json 파일의 형식 바꾸기

  • 이름
  • 사일런트 옵션
    사일런트 옵션이 있는 경우 걔를 넣구
    (ex) /S) 없는 경우 넣어서 무조건 경로 뒤에 붙이기

파일의 full path

[INFO] file=\VOLUME{01d2cb8a2a2d3680-122a601d}\PROGRAM FILES\ADOBE\ADOBE PHOTOSHOP CS5 (64 BIT)\PHOTOSHOP.EXE, last used=2018-10-02 13:47:15

csv 파일에 기록되어있는 파일의 전체경로는 다음과 같다.
VOLUME {} 이라고 기록되어있는 부분을 일반적인 경로로 바루엉보자

作名

일찍이 공자(孔子)께서는 정명순행(正名順行)이라하여, “좋은 이름은 만사가 잘된다”라고 말씀하셨고, 부처께서는 명전기성(名詮其姓)이라 하여, “이름자에 모든 것이 있다.”고 남기셨으며, 예수께서는 “아들과 딸에게 논, 밭을 주느니 좋은 이름을 주라”고 말씀하셨다. 이만큼 역사적으로 3대 성인으로 꼽히는 분들께서도 이름의 중요성을 크게 강조하셨다.
-Newswire 인용

모든 만물은 이름을 가지기 마련이며, 정보가 범람하는 4차 산업혁명 시대에서 소프트웨어의 이름은, 그 중요성이 더욱 중요하다. 자신의 위치를 확고히 하기 위한, 또는 자신의 존재를 알리는 유일한 도구인 이름은 자신을 어필하기 위한 가장 큰 도구라고 할 수 있다.

이에 우리도 우리의 노력의 결과물인 프로젝트의 이름을 지어줄 필요성을 느끼게 되었고, 따라서 본 이슈를 제출한다. 👍

뿌엑

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <map>
#include <sstream>
#include <istream>

using namespace std;

vector <string> read_csv(istream &file, char delimiter);
map <string, string> parsing_csv(vector <string> v);
int main()
{
	ifstream file("C:\\Temp\\20181108233906_PECmd_Output_Timeline.csv");

	if (file.fail())
	{
		return (cout << "There is no file" << endl) && 0;
	}

	while (file.good())
	{
		vector <string> line = read_csv(file, ',');
		map <string, string> data = parsing_csv(line);

		/*for (int i = 0; i < line.size(); i++)
		{
			cout << "" << line[i] << "" << endl;
		}*/

		for (map<string, string>::iterator iter = data.begin(); iter != data.end(); iter++)
		{
			cout << "Key : " << iter->first << "\nValue : " << iter->second << endl;
			cout << "\n";
		}

		//pair <map<int,int>iterator,bool> pr;
	}


	file.close();
	return 0;
}

vector<string> read_csv(istream &file, char delimiter)
{
	stringstream ss;
	bool inquotes = false;
	vector <string> line;

	while (file.good())
	{
		while (file.good())
		{
			char c = file.get();
			if (!inquotes && c == '"')
			{
				inquotes = true;
			}

			else if (inquotes && c == '"')
			{
				if (file.peek() == '"')
				{
					ss << (char)file.get();
				}

				else
				{
					inquotes = false;
				}
			}

			else if (!inquotes && c == delimiter)
			{
				line.push_back(ss.str());
				ss.str("");
			}

			else if (!inquotes && (c == '\r' || c == '\n'))
			{
				if (file.peek() == '\n') { file.get(); }
				line.push_back(ss.str());
				return line;
			}

			else
			{
				ss << c;
			}

		}

	}

}

map <string, string> parsing_csv(vector <string> v)
{
	map <string, string> pdata;
	for (int i = 0; i < v.size(); i += 2)
	{
		if (pdata.find(v[i + 1]) == pdata.end()) {
			pdata.insert(pair<string, string>(v[i + 1], v[i]));
		}

		else
			continue;
	}
	
	return pdata;
}		

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.