안녕하세요 !

 

이번 포스팅은 올려도 되는지 모르겠는데 이미 공개가 되었다고 하니까 올려봅니다! (문제 되면 지우도록 하겠습니다.)

 

프로그래머스 문제 찾아보다가 월간 코드 챌린지라는게 있어서 풀어봤어요.

 

사용 가능한 프로그래밍 언어는 굉장히 제한적입니다.

 

이번에도 문제는 프로그래머스에 있으니 직접 찾아보시고, 바로 풀이만 진행할게요! 해설 없어요!

 

* Java / Python3으로 진행 하였습니다.

 

 

1. Solved with Java

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
class Solution {
    private static int num = 0;
    public int[] solution(int n) {
        int[][] triangle = triangleList(n);
        int[] answer = new int[num];
        int len = 0;
        for(int[] arrEl:triangle) {
            for(int el:arrEl) {
                answer[len] = el;
                len++;
            }
        }
        return answer;
    }
    
    private static int[][] triangleList(int n){
        int[][] triangle = new int[n][];
        for(int i=1; i<n+1; i++){
            num+=i;
            triangle[i-1= new int[i];
        }
        int count=0, idx=1;
        int minHeight=0, maxHeight=n, minWidth=0, maxWidth=n;
        while (count<=num) {
            int i=minHeight, j=minWidth;
            for(i=minHeight; i<maxHeight; i++) {
                count++;
                if (count==num) {
                    triangle[i][j] = count;
                    return triangle;
                }
                triangle[i][j] = count;
            }
            minWidth++;
            i--;
            for(j=minWidth; j<maxWidth; j++) {
                count++;
                if(count==num) {
                    triangle[i][j] = count;
                    return triangle;
                }
                triangle[i][j] = count;
            }
            maxHeight -= 2;
            j = triangle[i-1].length - idx;
            for(i=maxHeight; i>minHeight; i--) {
                count++;
                if (count==num) {
                    triangle[i][j] = count;
                    return triangle;
                }
                triangle[i][j] = count;
                j--;
            }
            maxHeight++;
            minHeight += 2;
            maxWidth -= 2;
            idx++;
        }
        return triangle;
    }
}
cs

 

 

2. Solved with Python3

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
def solution(n):
    answer = appendEl(triangleList(n))
    return answer
 
def triangleList(n):
    triangle = []
    for i in range(1, n+1):
        triangle.append([0 for _ in range(i)])
    num = sum(range(1, n+1))
    count = 0
    minHeight = 0
    maxHeight = n
    minWidth = 0
    maxWidth = n
    idx = 1
    while count <= num:
        i = minHeight
        j = minWidth
        for i in range(minHeight, maxHeight):
            count += 1
            if count == num:
                triangle[i][j] = count
                return triangle
            triangle[i][j] = count
        minWidth += 1
        for j in range(minWidth, maxWidth):
            count += 1
            if count == num:
                triangle[i][j] = count
                return triangle
            triangle[i][j] = count
        maxHeight -= 2
        j = len(triangle[i-1])-idx
        for i in range(maxHeight, minHeight, -1):
            count += 1
            if count == num:
                triangle[i][j] = count
                return triangle
            triangle[i][j] = count
            j -= 1
        maxHeight += 1
        minHeight += 2
        maxWidth -= 2
        idx += 1
    return triangle
 
def appendEl(triangleList):
    result = []
    for i in triangleList:
        result += i
    return result
cs

 

 

 

 

위 코드의 결과는 직접 확인해 보세요 ~!

안녕하세요 !

 

9월 부터 연말까지 바빠져서

지금 시간이 조금 나서 올리게 되었습니다!

 

이번에도 ~ Programmers 문제 입니다.

 

저번에는 소수를 찾는 거였다면

이번 포스팅은 소수를 만드는 거에요.

 

저번 포스팅들과 마찬가지로 문제는 Programmers에 있으니 직접 검색해 보세요 ~!

 

이번에도 기록용 입니다

별다른 풀이는 하지 않을게요!

 

1. Solved with Java

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import java.util.Arrays;
import java.lang.Math;
 
class Solution {
    private static int answer = 0;
    
    public int solution(int[] nums) {
        int[] comArr = new int[3];
        combination(comArr, nums.length300, nums);
 
        return answer;
    }
    
    private static void combination(int[] comArr, int n, int r,
                                   int index, int target, int[] nums){
        if (r==0){
            if(checkPrime(Arrays.stream(comArr).sum())){
                answer++;
            }
            return;
        }
        if(target==n) return;
        
        comArr[index] = nums[target];
        combination(comArr, n, r-1, index+1, target+1, nums);
        combination(comArr, n, r, index, target+1, nums);
    }
    
    private static boolean checkPrime(int check) {
        int count=0;
        double checkSqrt = Math.sqrt(check);
        double checkZero = checkSqrt - (int)checkSqrt;
        if(checkZero!=0.0) {
            for(int i=1; i<(int)checkSqrt+1; i++) {
                if(check%i==0) {
                    count++;
                }
            }
            count++;
        }
        if(count==2) {
            return true;
        } else {
            return false;
        }
    }
}
cs

 

 

 

2. Solved with Python3 (Python2 버전은 Programmers에서 해당 문제에서는 풀이 언어로 선택 할 수 없어서 3버전만 작성 합니다)

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
from itertools import combinations
from math import sqrt
 
def solution(nums):
    return solve(nums)
 
def solve(combLi):
    primeCount = 0
    for i in combiList(combLi):
        if primeCheck(sum(i)):
            primeCount+=1
        else:
            pass
    
    return primeCount
 
def primeCheck(num):
    numSqrt = sqrt(num)
    checkSqrt = int(numSqrt)+1
    checkZero = numSqrt - int(numSqrt)
    count = 0
    if sqrtCheck(checkZero):
        for i in range(1, checkSqrt):
            if(num%i==0):
                count+=1
            else:
                pass
        count+=1
        if count==2:
            return True
        else:
            return False
    else:
        return False
 
def combiList(nums):
    return list(combinations(nums, 3))
 
def sqrtCheck(checkZero):
    if checkZero!=0.0:
        return True
    else:
        return False
cs

 

 

 

 

 

위 코드의 결과는 직접 확인해 보세요 ~!

 

 

 

 

 

 

안녕하세요!

 

이번에도 Programmers 문제입니다.

 

이번 문제는 2019 카카오톡 개발자 겨울 인턴십에 나온 문제라고 합니다.

 

이번에도 별 다른 설명 없이 기록용으로 바로 풀이를 해볼게요!

* 효율성이 떨어져도 이해해주세요! 피드백 감사하게 받겠습니다!

 

 

1. Solved with Java

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.util.HashMap;
 
class Solution {
    public int[] solution(String s) {
        Map<StringString[]> check = new HashMap<StringString[]>();
        List<Integer> resultList = new ArrayList<Integer>();
        String[] splitStr = splitString(s);
        return test(splitStr, resultList, check);
    }
    
    private static int[] test(String[] splitString, List<Integer> resultList,
                             Map<StringString[]> check){
        for(int i=0; i<splitString.length; i++){
            String[] tmpArr = splitString[i].split(",");
            if(splitString.length==1){
                int[] resultArr = {Integer.parseInt(tmpArr[0], 10)};
                return resultArr;
            } else {
                check.put(""+tmpArr.length, tmpArr);
            }
        }
        for(int i=1; i<splitString.length+1; i++){
            for(String el:check.get(""+i)){
                if(!resultList.contains(Integer.parseInt(el))){
                    resultList.add(Integer.parseInt(el));
                }
            }
        }
        int[] resultArr = new int[resultList.size()];
        for(int i=0; i<resultList.size(); i++){
            resultArr[i] = resultList.get(i);
        }
        
        return resultArr;
    }
    
    private static String[] splitString(String s){
        s = s.replaceAll("\\{\\{""");
        s = s.replaceAll("\\}\\}""");
        return s.split("(\\},\\{)");
    }
}
cs

 

 

2. Solved with Python 2, 3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
def solution(s):
    return parseString(s)
 
def parseString(s):
    dictionary = {}
    convert = s.split("},{")
    if len(convert) == 1:
        convert[0= convert[0].split("{{")[1]
        convert[0= convert[0].split("}}")[0]
        convert[0= int(convert[0], 10)
        return convert
    convert[0= convert[0].split("{")[-1]
    convert[len(convert)-1= convert[len(convert)-1].split("}")[0]
    for i in range(0len(convert)):
        convert[i] = convert[i].split(",")
    for i in convert:
        dictionary[len(i)] = convert.index(i)
    result = []
    for i in range(1len(convert)+1):
        tmp = convert[dictionary[i]]
        for j in tmp:
            if int(j, 10not in result:
                result.append(int(j, 10))
    return result
cs

 

※ 여담이지만 솔직히 이번에 문제에서는 split("},{") 으로 나눠주면서 Java보다는 Python이 확실히 편하더군요. (개인적인 생각입니다!)

    Python 에서는 "},{" 로만 해줘도 하나의 문자열로 인식을 하는데,

    Java 에서는 중괄호를 각각 인식해주기 위해서 "\\"를 사용해야하지, ','를 넣어주고 따로 지정해주지 않으면

    모든 ','를 split 대상으로 인식해서 다 split 되어 버리지... 그거 인식해주려고 소괄호로 묶어서 하나의 문자열로 인식을

    해줘야 하는게 번거롭더군요. (제가 못해서 그래요 헿)

    아무튼 각각의 어떤 언어가 좋고 나쁘다는 말할 수 없다고 생각하고, 각각의 장단점이 있는 것 같습니다.

 

 

 

 

 

 

위 코드의 결과는 직접 확인해 보세요 ~!

 

 

 

 

 

 

 

안녕하세요.

 

이번에는 Project Euler에 이어서 Programmers 문제를 가져왔습니다 !

 

이번에도 마찬가지로 기본적인 알고리즘 코딩이 많이 부족하다고 생각하여 효율이 떨어지더라도 우선 문제를 풀어보는거에 중점을 두고,

필요 API등만 검색해보고 직접 풀어보는 형식으로 진행 하였습니다.

* 아마 문제를 검색해보시면 풀이 방법들이 많이 잘 나와 있을거에요. (위에서 언급한대로 문제 자체를 검색하지 않았다는 점 말씀드립니다.)

 

이번에도 소스코드에 대한 설명은 없이 기록용이므로 바로 풀이를 하도록 하겠습니다.

* 문제 풀이는 Java, Python 2버전, Python 3 버전을 사용하여 진행 하였습니다.

 

Programmers의 문제는 한글로 되어있고, 금방 찾아 보실 수 있으니 문제 내용은 생략 하도록 하겠습니다.

 

1. Solved with Java

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import java.lang.Math;
import java.util.Arrays;
import java.util.List;
import java.util.ArrayList;
import java.util.LinkedList;
 
class Solution {
    public int solution(String numbers) {
        int num=numbers.length();
        List<String> checkDuplicate = new ArrayList<String>();
        LinkedList<Integer> perArr = new LinkedList<Integer>();
        List<String> initList = Arrays.asList(numbers.split(""));
        int[] perCheck = new int[num];
        
        for(int i=1; i<num+1; i++){
            permutation(num, i, perArr, perCheck, initList, checkDuplicate);
        }
        return checkPrimeNum(checkDuplicate);
    }
    
    private static int checkPrimeNum(List<String> checkList){
        List<Integer> convertList = new ArrayList<Integer>();
        List<Integer> primeNum = new ArrayList<Integer>();
        
        for(String el:checkList){
            int convertVal = Integer.parseInt(el, 10);
            if(!convertList.contains(convertVal) 
              && convertVal!=0 && convertVal!=1){
                convertList.add(convertVal);
            }
        }
        
        for(int el: convertList){
            int count=0;
            double elSqrt = Math.sqrt(el);
            double checkZero = elSqrt - (int)elSqrt;
            if(checkZero!=0.0){
                //for(int i=1; i<el+1; i++){
                for(int i=1; i<(int)elSqrt+1; i++){
                    if(el%i==0){
                        count++;
                    }
                }
                count++;
                if(count==2){
                    primeNum.add(el);
                }
            }
        }
        return primeNum.size();
    }
    
    private static void permutation(int n, int r, LinkedList<Integer> perArr,
                                   int[] perCheck, List<String> initList,
                                   List<String> checkDuplicate){
        String checkStr = "";
        if(perArr.size()==r){
            for(int el: perArr){
                checkStr+=el;
                if(!checkDuplicate.contains(checkStr)){
                    checkDuplicate.add(checkStr);
                }
            }
            return;
        }
        
        for(int i=0; i<n; i++){
            if(perCheck[i]==0){
                perArr.add(Integer.parseInt(initList.get(i), 10));
                perCheck[i]=1;
                permutation(n, r, perArr, perCheck, initList, checkDuplicate);
                perCheck[i]=0;
                perArr.removeLast();
            }
        }
    }
}
cs

 

 

2. Solved with Python 2, Python 3

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
from itertools import permutations
from math import sqrt
 
def solution(numbers):
    return primeNum(numbers)
 
def primeNum(number):
    items = list(number)
    itemLen = len(items)+1
    setDuplicate = []
    
    for i in range(1, itemLen):
        check = set(permutations(items, i))
        for j in check:
            strs = ""
            for k in j:
                strs += k
            num = int(strs, 10)
            if num==0 or num==1:
                pass
            else:
                if num not in setDuplicate:
                    if primeCheck(num):
                        setDuplicate.append(num)
                    else:
                        pass
                else:
                    pass
    
    return len(setDuplicate)
 
def primeCheck(num):
    numSqrt = sqrt(num)
    checkSqrt = int(numSqrt)+1
    checkZero = numSqrt - int(numSqrt)
    count = 0
    if sqrtCheck(checkZero):
        for i in range(1, checkSqrt):
            if(num%i==0):
                count+=1
            else:
                pass
        count+=1
        if count==2:
            return True
        else:
            return False
    else:
        return False
 
def sqrtCheck(checkZero):
    if checkZero!=0.0:
        return True
    else:
        return False
cs

 

결과는 직접 확인해 보세요 ~!

 

 

 

안녕하세요.

이번에는 문제 20번을 풀어보겠습니다.

 

Factorial digit sum

Problem 20

n! means n × (n − 1) × ... × 3 × 2 × 1

For example, 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800,
and the sum of the digits in the number 10! is 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27.

Find the sum of the digits in the number 100!

 

Solved

1
2
3
4
5
6
7
8
9
10
11
12
13
def fac(n):
    if(n==1):
        return 1
    else:
        return n*fac(n-1)
 
def facSum(n):
    facResult=fac(n)
    facResult=str(facResult)
    result=0
    for i in facResult:
        result+=int(i)
    return str(result)
cs

결과는 직접 확인해 보세요 ~!

안녕하세요.

심심하기도 하고

스트레스 해소도 할겸해서 문제 순서나 난이도 상관 없이 해보는 Project Euler with Python 입니다.

 

제가 기본적인 난이도의 프로그래밍 실력이 낮다고 생각이 되서 아마 중간중간 틈틈히 가볍게 할 수 있는 프로젝트 오일러를 통해서 포스팅을 하지 않을까 싶네요.

 

소스 설명 없이 기록용으로 작성하도록 하겠습니다.

 

Self powers

Problem 48

The series, 1^1 + 2^2 + 3^3 + ... + 10^10 = 10405071317.

Find the last ten digits of the series, 1^1 + 2^2 + 3^3 + ... + 1000^1000.

 

Solved

1
2
3
4
5
6
def selfPowers(n):
    total=0
    for i in range(1, n+1):
        total+=pow(i,i)
    total=str(total)
    return total[len(total)-10:]
cs

결과는 직접 출력해보세요 ~!

지난번 포스트에서 Keylogger 에 대해서 간단하게 알아 보았습니다.


이제 기능들은 구현이 되었는데 이걸 프로그램 배포자가

원하는 기능을 입력 했을 때 정보를 GitHub로 보내도록 하고 싶지 않나요?


그러기 위해서는 Network 통신이 필요합니다.


그 중에서도 단방향 통신인 UDP가 아닌

양방향 통신

3Way-HandShaking인 TCP를 사용하는 방법을 알아 보겠습니다.

(바로 전 포스트에서 말씀드린 것처럼 악용하시는 분이 계실 수도 있기에 완성된 코드는 설명하지 않습니다. 물론 응용해서 하실 분들도 계시겠지만 이 포스트의 목적은 어디까지나 필자 본인의 개인 공부 및 교육용이기 때문입니다. 제가 올리는 내용들을 악용하셔서 문제가 발생 할 경우 즉시 삭제 조치 하겠습니다. 또한 악용시 책임은 본인에게 있습니다.)





우선 TCP통신을 위해서는 Server와 Client가 있어야 합니다.(Server역할을 하는 PC입니다)



위 사진에서 보면 알 수 있듯이 Server 역할을 하는 PC에서는 host IP와 port 번호를 지정해줍니다.

이때 port 번호는 int type 이어야 합니다.


s 라는 객체를 선언 해줍니다.

socket.SOCK_STREAM 옵션이 TCP 통신을 하겠다는 옵션입니다.


다음으로 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)은

한 번 사용한 포트를 다시 사용 하겠다는 설정입니다.


s.bind를 사용하여 host와 port를 묶어서 사용할 준비를 합니다.


s.listen(연결 허용 수)를 사용하여 연결을 할 수 있도록 소켓을 활성화 합니다.


conn, addr = s.accept()는 연결이 되었을 경우 addr에 연결 된 PC의 IP정보,

conn에 연결 된 PC의 정보를 각각 저장합니다.


conn.recv(읽어들일 Bytes 수)를 통해 conn 객체에서 보내온 정보를 읽습니다.


conn.send(보낼 내용)를 이용하여 연결된 PC에 내용을 전달합니다.


conn.close()를 이용하여 연결되어 있는 connection 객체를 연결을 해제 합니다.


Server 역할을 하는 PC의 소켓을 닫습니다.







다음은 Client 역할을 하는 PC의 코드 입니다.



위 사진에서 알 수 있듯이 TCP Server 역할을 하는 코드에 비해 훨씬 간결하고 짧습니다.


마찬가지로 SOCK_STREAM 옵션을 사용하여 TCP 통신을 하겠다는 선언을 해줍니다.


connect기능을 통해 TCP Server 역할을 하는 PC의 IP와 Port 번호를 입력해서 연결합니다.


send 기능을 이용해 내용을 전달합니다.


마찬가지로 TCP Client 또한 csock.recv() 가 있습니다. (저는 일부러 생략 했습니다)


마지막으로 연결 되어있던 csock 객체를 close()를 통해 닫아 줍니다.




이렇게 해서 Python GitHub 연동 프로그램에 네트워크 기능 까지 알아 보았습니다.


Python GitHub 연동 프로그램과 네트워크 기능을 합쳐서 정말 Virus 처럼 만들 수도 있습니다.

하지만 이에 대한 주의사항과 이 포스트의 목적은 여러번에 걸쳐서 말씀 드렸습니다.


그 부분 유의 해 주시고 GitHub에 올라가 있는 내용은 base64로 암호화 되어 저장이 되어 있습니다.

이 부분 확인 후 (디코딩은 여러분이 직접 해보세요 ! 디코딩도 필자는 직접 해봤습니다!)


Python GitHub 연동프로그램은 마치도록 하겠습니다.


다음은 GitHub에 보내진 정보들이 base64로 암호화된 모습입니다.







※ 다시 한 번 사용하실 때 악용 하지 마세요 ! 당신의 양심입니다. :)

그리고 시간 되는 대로 공부했던 거나 공부 하는 것들 중간 중간 올리도록 하겠습니다.


* [출처] Black Hat Python

* [출처] Everything 블로그 본인






지난번 포스트에서는 ScreenShot 모듈을 알아보았습니다.


이번에는 Target PC에서 어떤 프로세스에서 어떤 내용을

키보드로 입력하고 있는지 파일로 저장하고

저장된 내용의 파일을 읽어서 GitHub로 보낼수 있게 하는

모듈을 알아 보겠습니다.

(물론 마우스 입력도 활용할 수 있지만 Python GitHub 연동 프로그램 포스트를 작성하는 동안은 다루지 않도록 하겠습니다. 본인이 GitHub 연동 프로그램에 추가할 수도 있으니 그 점 참고해 주시기 바랍니다.)





우선 Keylogger 모듈을 만들기 위해 필요한 모듈을 알아 보겠습니다.

필요한 모듈들은 다음과 같습니다.





다음으로 필요한 변수에 대해 알아 보겠습니다.

변수는 다음과 같습니다.






다음으로 Keylogger 실행시 해당 내용을 저장할 파일을 만들어서 저장하는 함수에 대해 알아보겠습니다.







다음으로 Target PC의 사용자가 현재 사용하고 있는 프로세스에 대한 정보를 알아내는 함수에 대해 알아보겠습니다.






다음으로 키보드 입력에 대한 이벤트 발생시 후킹하는 기능을 가진 함수를 알아 보겠습니다.





이렇게 해서 Keylogger 모듈에 대해서 알아 보았습니다.


다음 포스트에서는 Python Network TCP 통신에 대해서 알아 보겠습니다.

(간단하고 Google에 검색 해 보시면 훨씬 자세하게 설명을 해 놓은 글을 보실 수 있습니다. 응용해서 하는 부분은 혹시 악용 하시는 분이 있을 까 해서 완성된 코드를 보여드리지 않기 위함입니다. Network TCP 통신 포스트 이후 Python GitHub 연동 프로그램의 결과에 대해서 간단하게 포스트 하도록 하겠습니다.)




* [출처] Black Hat Python

* [출처] Everything 블로그 본인





이번 포스트에서는 ScreenShot 기능에 대해 알아 보겠습니다.


우선 화면을 캡쳐하기 위해 필요한 모듈을 알아 보겠습니다.





다음으로 화면 캡쳐후 저장할 파일이름이 지정될 변수를 선언 합니다.

(필자는 지정해서 했습니다. 얼마든지 변형해서 사용할 수 있습니다.)





다음은 실제 화면을 캡쳐하는 기능을 구현한 함수입니다.



화면을 캡쳐하는 기능을 구현 했습니다.

이제 캡쳐한 이미지를 GitHub에 보내기 위해

바이너리 형식으로 읽어 들여서 string 형식으로 변환 후

return 하는 함수를 알아 보겠습니다.





다음과 같습니다.




이렇게 해서 화면 캡쳐 후 GitHub로 보내는 코드를 알아 보았습니다.



다음 포스트에서는 Keylogger와 KeyDump에 대해서 알아보겠습니다.






* [출처] Black Hat Python

* [출처] Everything 블로그 본인






지난번 설정 파일에 이어서 

사용할 모듈들에 대해서 알아 보겠습니다.

지난번 포스트를 확인하지 못 하신 분은

다음의 링크를 통해 확인 해 주세요!


http://widevery.tistory.com/19?category=818811



mainInformation, environment, dirlister 모듈에 대해서

알아보도록 하겠습니다.


우선 mainInformation입니다.





다음은 environment입니다.






다음은 dirlister입니다.




이렇게 해서 총 3개의 모듈에 대해서 알아 보았습니다.


이번 포스트는 짧았는데 아마 다음 포스트들도 마찬가지 일 것 같습니다.


다음 포스트에서는 ScreenShot 모듈에 대해서 알아 보겠습니다.




* [출처] Black Hat Python

* [출처] Everything 블로그 본인




+ Recent posts