안녕하세요. 감자 코딩에 감자개발자 입니다. 이번에 알아볼 것들은 Pandas Package입니다. 1. Pandas란? 데이터 분석, 데이터 처리 등을 쉽게 하기 위해 만들어진 python package 보다 안정적으로 대용량 데이터들을 쉽게 처리할 수 있음. 대표적인 Pandas 자료구조 2가지 2. Series란? Series는 value와 index의 형태를 지니는 Pandas의 자료 구조이다.아래 그림과 같이 [1,3,5,7]의 값을 가지는 리스트를 Series로 생성하게 되면 (1,3,5,7)이라는 value와 (0,1,2,3)이라는 index가생성되어 Series라는 형태의 자료 구조를 만든다. 3. DataFrame이란?DataFrame은 여러 개의 Dictionary를 처리하는데 있어 S..
감자 코딩에 감자개발자입니다이번강의 에서는 머신러닝을 하기전에 가장먼저 파이썬 환경구축을 위한 아나콘다를 설치해볼것입니다. 저의 개발 환경은 MaxOS High Sierra 10.13.3 을 사용하고있기 때문에 맥환경에 아나콘다를 설치하겠습니다. 일단 들어가기 앞서, 아나콘다란 무엇일까요?간단하게 말해서 파이썬의 여러버전을 관리하기 편하게 하는 플랫폼이라 할수 있습니다. 머신러닝관련된 예를 들어) numpy 같은 모든 패키지들을 따로 설치할 필요없이 관리할 수 있습니다. 일일이 모든 pip 명령어로 패키지들을 설치할 필요가 없어지게 됩니다. 1. 아나콘다 홈페이지 들어가서 설치하기 https://www.anaconda.com/download/#macos 아나콘다를 설치하면 계속 다음을 눌러주시면 설치진행..
안녕하세요 감자 코딩에 감자개발자입니다. 이번에 살펴볼 문제는 DFS와 BFS의 대표적인 문제인 1260번 문제입니다. 문제 링크 https://www.acmicpc.net/problem/1260 /* 문제 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 입력 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 한 간선이 여러 번 주어질 ..
안녕하세요 감자코딩에 감자개발자입니다. 이번에는 살펴볼 알고리즘 개념은 바로 "DFS(Depth First Search)" 입니다. * DFS(Depth First Search) 알고리즘 1. 깊이우선탐색이란 트리 및 그래프 등을 탐색하는 알고리즘이다. 2. 특정 노드를 출발하여 깊게 들어 갈 수 있을때 까지 들어가고 들어 갈 곳이 없다면 다시 나오는 알고리즘이다. 3. 깊게 들어간다해서 깊이 우선 탐색, 스택을 이용하여 구현한다.(재귀를 많이 사용함) * DFS탐색순서 DFS의 탐색순서를 보면 깊이 순서에따라서 방문하는 것이 달라지는것을 볼 수 있습니다. 그림에서 주어진 순서대로 탐색을 하게 되는것을 알고 계시면 될것같습니다. * DFS 알고리즘 구현 로직// dfs callvoid dfs(int nu..
안녕하세요 감자코딩에 감자개발자 입니다. 이번에는 제가 DFS공부하기에 앞서, Recursive call(재귀적 함수 호출)에 대해서 알아보겠습니다. 가장 기본적인 예제로 돌아가는 Recursive에 대한 예를 하나 설명하겠습니다. // // recursive_call_exam.cpp // Algorigm_Study // // Created by kgh on 2018. 8. 6.. // Copyright © 2018년 kgh. All rights reserved. // #include #include using namespace std; int Recursive(int num){ if(num == 1 ){ return 1; }else{ return num + Recursive(num - 1); } } i..
안녕하세요. 감자코딩에 감자개발자입니다. 이번에 살펴볼 기능은 안드로이드로 Kakaotalk 로그인연동하기입니다. 1. 가장 첫번째로, https://developers.kakao.com/ 카카오톡 개발자 사이트로 이동합니다.이동한후, 가장먼저 해야할것은 프로젝트를 등록하고 Hash값을 등록해야합니다. 2. 그런데, 과연 Hash값을 어떻게 얻을까 궁금해 하시는분들이 있을것입니다. 그 방법은 약 2가지 방법이 있으나, 제가 여기서 보여드리는 방법은 안드로이드 코드내에서 소스코드를 추출해보도록 하겠습니다. 1234567891011121314private void getHashKey(){ try { // 패키지이름을 입력해줍니다. PackageInfo info = getPackageManager().getP..
안녕하세요. 감자코딩에 감자개발자입니다. 이번에 살펴볼 내용은, 안드로이드 파일중에서 AAR라이브러리를 확인할 경우가 생기는데요. 이때 어떻게 하면 그 AAR파일의 내용을 확인할 수 있을까 하는방법을 알아보겠습니다. 생각보다 간단하며, 유용할것이라고 판단이 듭니다. 1. *.arr파일을 준비하고, 안드로이드 스튜디오로 프로젝트 파일을 생성 합니다. 2. 이제 그 *.arr파일을 app.libs의 위치에 옮겨넣습니다. 3. 그리고나서 src안에 있는 build.gradle 파일에 아래의 내용을 넣습니다. repositories{ flatDir{ dirs 'libs' } } 추가 합니다. 4. 그리고 src안에 있는 build.gradle 파일안에 한줄을 더 추가해줍니다. dependencies { comp..
/* 토마토 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 1 초 128 MB 30813 8424 5397 26.207% 문제 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자 모양 상자의 칸에 하나씩 넣어서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토의 인접한 곳은 왼쪽, 오른쪽, 앞, 뒤 네 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로 익는 경우는 없다고 가정한다. 철수는 창..
/* 숨바꼭질 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 2 초 128 MB 35272 9761 6127 24.946% 문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오. 입력 첫 번째 줄에 수빈이가 있는 위치 N과 동생이 있는 위치 K가 주어진다. N과 K는 정..
안녕하세요 감자코딩에 감자개발자 입니다.이번에 살펴볼 내용은 백준알고리즘에 2178번 미로 문제입니다. 문제 링크https://www.acmicpc.net/problem/2178 /* 문제 N×M크기의 배열로 표현되는 미로가 있다. 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 1 미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오. 위의 예에서는 15칸을 지나야 (N, M)의 위치로 이동할 수 있다. 칸을 셀 때에는 시작 위치와 도착 위치도 포함한다. 입력 첫째 줄에 두 정수 N, M(2≤N, ..
안녕하세요! 관광이 개발블로그의 관광이 입니다이번에 알아볼 STL의 종류중 하나인 VECTOR에 대해서 살펴보겠습니다. 1. Vector Container VectorContainer는 자동으로 메모리가 할당되는 배열이라고 합니다. 대표적인 메소드로는- v.front() - 가장 앞 위치- v.back() - 마지막 위치- v.push_back() - 가장마지막에 원소 push- v.pop_back() - 가장 마지막 원소 pop 맨뒤쪽에서 삽입과 삭제가 가능하다. 2. Vector Container 사용시 필요한 사항#include == vector v; 라고 가정.== 참조 한다는 것은 해당 데이터를 리턴 한다는 뜻입니다. v.assign(5, 2);- 2의 값으로 5개의 원소 할당. v.at(idx..
안녕하세요. 감자코딩에 감자 입니다. 이번에는 살펴볼것은 C++의 STL의 종류인 Pair에 대해 살펴보도록 하겠습니다. * Pair STL 컨테이너의 한 종류인 Pair은 두개의 변수를 저장할 수 있는 구조입니다.이것을 queue 자료구조의 형태인 Pair로 사용도 할 수 있는데요, BFS 를 구현하다보니 나오는 내용이라 함께 정리하겠습니다. 1. 2차원 배열의 인덱스 2. 이차원 좌표평면에서의 좌표3. 정점번호와 해당 정점 번호까지의 최단거리를 묶어서 저장해야되는 경우 (BFS 미로 문제) 단독으로 pair를 사용하기 위해서는 #include 를 해주어야합니다. 하지만, Queue의 속성으로 쓰일때는 상관없다. 예) // pair q; // Pair 선언 queue q; pair r = make_pa..
* 1주차 알고리즘 정리 안녕하세요 감자입니다. 이제 알고리즘정리를 시작하려고 합니다. 오늘알아볼 알고리즘의 종류중 하나인 BFS를 살펴볼것인데요, 많이 쓰이기도하고 중요한 알고리즘인 만큼 정리시작해보겠습니다. 1. BFS(Breadth First Search)는 그래프전체를 탐색하는 알고리즘의 방법중 하나이다.그래프 전체를 탐색하는 방법은 BFS,DFS가 있다.BFS(Breadth First Search)는 그래프 전체를 탐색,인접한 노드들을 차례대로 방문한다.동심원의 형태로 이루어져서 점차 하나씩 모든 노드들을 방문하게 된다. BFS에서 가장 중요한 것은 각 노드에 대해서 최단 경로의 길이를 구할 수 있다는것이다. 이를 구현하기 위해서는 C++ STL Queue 방법을 사용하게 될것이다. 위의 그림대..
문제 설명이더리움 솔리디티 실습에 오신 것을 환영합니다. 이 강의는 솔리디티를 활용하여 DApp을 단계별로 구현해보는 강의입니다.솔리디티(Solidity) 언어란?솔리디티는 이더리움 블록체인 플랫폼에서 스마트 계약(Smart Contract)를 정의하는 언어입니다. 솔리디티 문법은 자바스크립트 문법과 유사합니다. 다만, 정적 타입 언어1라, 자료형을 명시해주어야 합니다.DApp이란?스마트 계약을 구현한 블록체인 기반의 탈중앙화2 애플리케이션입니다.다음 코드는 솔리디티로 작성된 가장 간단한 형태의 계약(Contract) 코드입니다. 가볍게 한번 둘러보세요!직접 해보기[실행]을 누르면 getMessage 함수가 실행됩니다. message에 들어있는 값을 변경하면서 실행해 보세요.아래 내용을 구현하고 [제출]..
Challenges : Basic 17 Author : WarRock Korean : Key 값이 BEDA-2F56-BC4F4368-8A71-870B 일때 Name은 무엇인가 힌트 : Name은 한자리인데.. 알파벳일수도 있고 숫자일수도 있고.. 정답인증은 Name의 MD5 해쉬값(대문자) English : What is Name when the Key is BEDA-2F56-BC4F4368-8A71-870B Hint : The name is 1 letter and it could be either alphabetic or numeric. Verify your solution with the MD5 value of the Name.
Challenges : Basic 16 Author : ReWrit Korean : Name이 CodeEngn일때 Serial을 구하시오 English : Find the Serial when the Name is CodeEngn 1) 16.exe파일을 PEID로 구조를확인해보자Dev-C++ 4.9.9.2 -> Bloodshed Software [Overlay]현재 Dev-C++ 구조로 패킹되어있는것을 확인할 수 있다. 2)이번것도 올리디버거를 사용해서,분기문을 찾아보자, 분기문을 찾아서 EAX,[EBP-3C]의 값을 찾아서 비교해보자. EAX에는 우리가 입력한 password값이 들어가있고, 결국 EBP-3C값을 구하면 된다HEX -> DEC값으로 변환 시켜서 확인해보자.
Challenges : Basic 15 Author : uBc - bRiANbuSY Korean : Name이 CodeEngn일때 Serial을 구하시오 English : Find the Serial when the Name is CodeEngn 1) PEID로 현재 패킹 상태 확인Borland Delphi 4.0 - 5.0 이렇게 패킹 된것을 확인할 수 있다.별다른 패킹이 없는것을 확인하였으니 2) 이제 올리디버거로 확인해보자,올리디버거로 확인하다보면, search for 기능을 활용하여 사용된 함수와, String값을 확인하여 메시지를 찾아보자, 성공하였을때, 3) 이렇게 성공하였을때 메시지 주변을 찾아보면, 분기문을 찾을 수 있는데, 이것이 큰 힌트가 된다. ID값은 CodeEngn 이고, pass..
Challenges : Basic 14 Author : BENGALY Korean : Name이 CodeEngn 일때 Serial을 구하시오 (이 문제는 정답이 여러개 나올 수 있는 문제이며 5개의 숫자로 되어있는 정답을 찾아야함, bruteforce 필요) Ex) 11111 English : Find the Serial when the Name of CodeEngn (This problem has several answers, and the answer should be a 5 digit number. Brute forcing is required.) Ex) 11111 1) 가장 먼저 해야될것은 PEID 로 패킹 여부 확인UPX 로 패킹된것 확인 하였음 2) Olly 로 Dump Dump 이후에 나머지..
Challenges : Basic 13 Author : Basse 2002 Korean : 정답은 무엇인가 English : Find the answer 1) 문제 풀이 Ollydbug로 13.ex 파일을 까보니, 열리지 않는다. 그래서 PEID 로 패킹 여부를 확인. 2) 확인 결과현재 C# 으로 패킹되어 있는것을 알수 있다. 3) 이것을 코드 복원을 하기 위해서는 (http://www.red-gate.com/dynamic/products/dotnet-development/reflector/download) 사용법은 간단하게 파일을 .Net reflector 출처: http://stih.tistory.com/71 [STIH] 이것의 툴을 사용할 것이다.C# 코드로 복원이 가능하다. 4) 이때 사용하것이..
Challenges : Basic 12 Author : Basse 2002 Korean : Key를 구한 후 입력하게 되면 성공메시지를 볼 수 있다 이때 성공메시지 대신 Key 값이 MessageBox에 출력 되도록 하려면 파일을 HexEdit로 오픈 한 다음 0x???? ~ 0x???? 영역에 Key 값을 overwrite 하면 된다. 문제 : Key값과 + 주소영역을 찾으시오 Ex) 7777777???????? English : You will see a success message after finding the key. If you would want the Key itself to replace the success message in the MessageBox, open up a Hex Edi..
Challenges : Basic 11 Author : abex Korean : OEP를 찾으시오. Ex) 00401000 / Stolenbyte 를 찾으시오. Ex) FF35CA204000E84D000000 정답인증은 OEP+ Stolenbyte Ex ) 00401000FF35CA204000E84D000000 English : Find the OEP. Ex) 00401000 / Find the Stolenbyte. Ex) FF35CA204000E84D000000 The solution should be in this format : OEP + Serial Ex ) 00401000FF35CA204000E84D000000 이문제도 역시, 다운로드 문제가 생겨서 곧 가상에서 다시 할것입니다.
Challenges : Basic 10 Author : ArturDents Korean : OEP를 구한 후 "등록성공"으로 가는 분기점의 OPCODE를 구하시오. 정답인증은 OEP + OPCODE EX) 00400000EB03 English : After finding the OEP, find the OPCODE of the branch instruction going to the "goodboy routine" The solution should be in this format : OEP + Serial EX) 00400000EB03 1)가장 먼저 할것은 PEid툴을 이용하여 패킹여부를 확인 -> AsPack을 사용하여 패킹된것을 확인할 수 있음 2) 이제, pushad 부분을 dump 를 뜬후 PE..
Author : Rekenmachine Korean : OEP를 구하시오 Ex) 00400000 English : Find the OEP Ex) 00400000 이것은 Original Entry Porint 실제 시작시점을 찾으면 된다.이것을 어떻게 찾냐? 일단 이것이 패킹이 되어있는지 여부부터 확인한다.PEId를 이용하여 패킹여부를 확인한다. UPX로 패킹되어있는것을 확인하였으므로올리디버거를 열어 pushad 부분부터 덤프를 떠서 언패킹을 실시한다.다시08.exe파일을 열어 이제 popad가 나온이후에 부터 jmp하는 구간을 찾아 디코딩을 하면 된다. jmp구간을 타고 들어가면 디코딩 구간이 바로 나오게되는데 그 부분이 OEP 구간이다. 이제 이부분을 보게되면 OEP 구간을 확인할 수 있다. Ctrl ..
Challenges : Basic 07 Author : abex Korean : 컴퓨터 C 드라이브의 이름이 CodeEngn 일경우 시리얼이 생성될때 CodeEngn은 "어떤것"으로 변경되는가 English : Assuming the drive name of C is CodeEngn, what does CodeEngn transform into in the process of the serial construction 1) 우리는 이제 06.exe 파일을 뜯어볼것이다일단 가장 먼저 해볼것이 패킹이 되어있는지 여부를 알아볼것이다PEid 툴을이용하여 패킹이 되어있는지 뜯어보자.뜯어본 결과는 패킹이 되지않아있는 exe파일이다. 2) 이제 올리디버거로 이용하여 알아보도록하자올리디버거로 뜯어보면 GetDrive부..
Challenges : Basic 06 Author : Raz0r Korean : Unpack을 한 후 Serial을 찾으시오. 정답인증은 OEP + Serial Ex) 00400000PASSWORD English : Unpack, and find the serial. The solution should be in this format : OEP + Serial Ex) 00400000PASSWORD 여기서는 back to the user mode 를 사용해 볼것이다. 1). 5번 문제와 동일하게PEId 로 패킹이 되어있는지 확인한다 -> UPX 패킹이 되어있는걸로 나타냄.이제 이것을 올리디버거를 사용하여 덤프 과정을 거친다덤프과정을 끝낸 exe파일을 Lord 툴을 이용하여 rebulid를 해주어 실행이 ..
Challenges : Basic 05 Author : Acid Bytes [CFF] Korean : 이 프로그램의 등록키는 무엇인가 English : The registration key of this program is? 1) 문제 풀이일단 가장 먼저 해야될것은 , 등록 키값을 찾는것이기 때문에 이 파일이 패킹이 되었는지 여부를 확인해야 한다. 이때 사용하는것은 PEID 를 사용하여 이 5.exe 파일이 패킹되어있는지 확인을 해볼것이다.5.exe 파일이 패킹되어있는지 여부를 알게되는것은 PEid 를 열어보면 UPX 0.8 9.6 - 1.02 / 1.05 - 2.90 (Delphi) stub -> Markus & Laszlo 이런식으로 패킹여부를 확인 할 수 있다.2) 패킹 여부를 확인 하였으면 이제 ..
Challenges : Basic 04 Author : CodeEngn Korean : 이 프로그램은 디버거 프로그램을 탐지하는 기능을 갖고 있다. 디버거를 탐지하는 함수의 이름은 무엇인가 English : This program can detect debuggers. Find out the name of the debugger detecting function the program uses.1) 문제 풀이일단 4.exe 파일을 실행시키면 True ,false 의 값을 가지는 cmd 도스창이 뜨게 된다. 이것은 디버깅 툴을 이용하게 될 경우 true,false 의 값을 가진다. 디버깅일 경우 0 의 값을 가지고 , 디버깅 값을 가지지 않을경우 1을 반환한다. 2) 일단 가장 먼저 해볼것은, 디버깅을 탐지..
- Total
- Today
- Yesterday
- 감자코딩
- 백준
- 개발하는 관광이
- db
- C언어
- Controller
- 노드
- programming
- C langauge
- MVC
- TensorFlow
- 텐서플로우
- 머신러닝
- 스프링
- 감자개발자
- Android
- 리버싱
- node
- 프로그래밍
- Spring
- BFS
- node.js
- 알고리즘
- 코드엔진
- 백준알고리즘
- Algorigm
- 학교
- 초보자를 위한 C언어 300제
- 안드로이드
- 복습
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |