UDP Flood DDOS 공격방식에 대해 서술한 PDF

Posted by Root @ Hacker Xeros
2018.04.27 04:32 해킹 | 정보보안/ㄴ 네트워크해킹

자료의 정의

2007년에 작성된 문서로, 년도가 꽤 되어 현재 기술과 많이 달라졌을 수 있지만 간략하게 UDP Flood DDOS 공격에 대해 이해하기엔 괜찮은것같다


이 댓글을 비밀 댓글로

멀티 쓰레딩과 멀티 프로세싱의 차이

Posted by Root @ Hacker Xeros
2018.04.18 00:12 프로그래밍

멀티 쓰레딩과 싱글 쓰레딩의 차이

▲ 쓰레드가 무엇인지 한 눈에 파악가능하다


멀티 프로세싱 대 멀티 스레딩다중 처리 및 다중 스레드는 시스템에 성능을 추가합니다. 멀티 프로세싱 은 더 많은 CPU 또는 프로세서를 시스템에 추가함으로써 시스템의 컴퓨팅 속도를 향상시킵니다. 멀티 스레딩은 프로세스가 시스템의 응답 성을 높이는 스레드를 더 많이 생성 할 수있게합니다. 아래에 표시된 비교 차트의 도움으로 논의한 멀티 프로세싱과 멀티 스레딩 사이에 다른 점이 몇 가지 있습니다.


비교 차트

/

다중 처리멀티 스레딩
기본멀티 프로세싱은 CPU를 추가하여 컴퓨팅 성능을 향상시킵니다.멀티 스레딩은 단일 프로세스의 다중 스레드를 만들어 컴퓨팅 성능을 향상시킵니다.
실행여러 프로세스가 동시에 실행됩니다.단일 프로세스의 여러 스레드가 동시에 실행됩니다.
창조프로세스 생성은 시간 소모적이며 리소스 집약적입니다.쓰레드 생성은 감지 시간과 자원 모두에서 경제적입니다.
분류다중 처리는 대칭 또는 비대칭 일 수 있습니다.멀티 스레딩은 분류되지 않습니다.


다중 처리의 정의

다중 처리 시스템은 두 개 이상의 프로세서를 가진 시스템입니다. 시스템의 컴퓨팅 속도를 높이기 위해 CPU가 시스템에 추가됩니다. 각 CPU에는 고유 한 레지스터 및 주 메모리 세트가 있습니다. CPU가 분리되어 있기 때문에 하나의 CPU가 처리 할 항목이 없어야하고 유휴 상태 일 수 있고 다른 프로세스가 프로세스에 과부하가 걸릴 수 있습니다. 이러한 경우 프로세스와 리소스는 프로세서간에 동적으로 공유됩니다.다중 처리

다중 처리는 대칭 다중 처리 및 비대칭 다중 처리 로 분류 할 수 있습니다 대칭 다중 처리에서 모든 프로세서는 시스템의 모든 프로세스를 자유롭게 실행할 수 있습니다. 비대칭 멀티 프로세싱에서는 프로세서간에 마스터 - 슬레이브 관계가 있습니다. 마스터 프로세서는 슬레이브 프로세서에 프로세스를 할당합니다.

프로세서에 메모리 컨트롤러 가 내장 된 경우 프로세서 를 추가하면 시스템의 주소 지정 가능한 메모리가 증가합니다. 다중 처리는 메모리 액세스 모델을 균일 한 메모리 액세스 에서 불균일 한 메모리 액세스 로 변경할 수 있습니다 일정한 메모리 액세스는 프로세서에서 RAM에 액세스하는 데 소요되는 시간이 같습니다. 반면, 비 균일 메모리 액세스는 다른 부분보다 메모리의 일부분에 액세스하는 데 더 많은 시간을 필요로합니다.

멀티 스레딩의 정의

멀티 스레딩은 프로세스의 컨텍스트 내에서 단일 프로세스의 여러 스레드를 동시에 실행하는 것입니다. 이제 스레드가 무엇인지에 대해 먼저 논의 해 보겠습니다. 스레드 프로세스의 자체 스레드 ID, 프로그램 카운터, 레지스터 스택을 가지고 독립적으로 실행할 수있는 프로세스의 코드 세그먼트를 의미한다. 그러나 동일한 프로세스에 속하는 스레드는 코드, 데이터 및 시스템 자원과 같은 프로세스의 소유물을 공유해야합니다. 각 서비스 요청에 대해 별도의 프로세스를 작성하면 시간을 소비하고 시스템 자원을 소모합니다. 이 오버 헤드가 발생하는 대신 프로세스의 스레드를 만드는 것이 더 효율적입니다.

멀티 스레딩멀티 스레딩 개념을 이해하려면 워드 프로세서를 예로 들어 보겠습니다 워드 프로세서는 그래픽을 표시하고 키 입력에 응답하며 철자 및 문법 검사를 계속합니다. 이 작업을 동시에 수행하기 위해 다른 워드 프로세서를 열 필요는 없습니다. 하나의 워드 프로세서에서 여러 스레드를 통해 발생합니다.

멀티 스레딩이제 멀티 스레딩의 이점을 고려해 보겠습니다. 멀티 스레딩 은 프로세스의 한 스레드가 차단되거나 긴 작업을 수행하는 것처럼 응답 을 증가 시키지만 프로세스는 계속됩니다. 다중 스레드의 두 번째 이점은 프로세스의 여러 스레드가 동일한 주소 공간에서 동일한 코드 및 데이터를 공유 하므로 자원 공유 입니다.

쓰레드를 생성하는 것은 그들이 속한 프로세스의 코드와 데이터를 공유하기 때문에 경제적입니다. 따라서 시스템은 각 스레드에 대해 개별적으로 자원을 할당 할 필요가 없습니다. 다중 처리 운영 체제에서 다중 스레드를 늘릴 수 있습니다 다중 CPU에서의 멀티 스레딩은 병렬 처리를 증가시킵니다.


멀티 프로세싱과 멀티 스레딩의 주요 차이점

  1. 멀티 프로세싱과 멀티 스레딩의 주요 차이점은 멀티 프로세싱을 사용하면 시스템에 2 개 이상의 CPU가 추가되는 반면 멀티 스레딩을 사용하면 프로세스가 여러 스레드를 생성하여 시스템의 컴퓨팅 속도를 높일 수 있다는 것입니다.
  2. 다중 처리 시스템은 동시에 여러 프로세스를 실행 하지만, 다중 스레드 시스템 은 프로세스의 여러 스레드 를 동시에 실행합니다.
  3. 프로세스를 생성 할 수 있습니다 시간을 소비 하고 심지어 배출 시스템 자원을. 그러나 스레드를 생성 하는 것은 동일한 프로세스에 속한 스레드가 해당 프로세스의 소품을 공유하므로 경제적 입니다.
  4. 멀티 프로세싱은 대칭 멀티 프로세싱 과 비대칭 멀티 프로세싱 으로 분류 할 수 있지만 멀티 스레딩은 더 이상 분류되지 않습니다.

결론:

멀티 프로세싱 시스템에서 멀티 스레딩이 병렬 처리를 증가 시키므로 멀티 프로세싱 환경에서 멀티 스레딩의 이점을 점차적으로 높일 수 있습니다.

'프로그래밍' 카테고리의 다른 글

멀티 쓰레딩과 멀티 프로세싱의 차이  (0) 2018.04.18
이 댓글을 비밀 댓글로

개발 관련 자료 링크

Posted by Root @ Hacker Xeros
2018.03.30 02:08 개발 | 보안 | 팁/개발 메모장

1. 파이썬에서 URL로부터 파일 다운로드하기 : https://www.codementor.io/aviaryan/downloading-files-from-urls-in-python-77q3bs0un

이 댓글을 비밀 댓글로

파이썬에서 URL(웹서버)로부터 파일 다운로드하기

Posted by Root @ Hacker Xeros
2018.03.30 02:06 프로그래밍/ㄴ Python

파이썬에서 URL(웹서버)로부터 파일 다운로드하기

해당 내용에 관해 한국어로 잘 표기 된 포스팅, 자료가 없어 삽질하다 다른 분들은 저와 같은 고생 하지 마시라고 외국 문헌 참조하여 쓰게되었습니다

해당 포스팅은 Python을 사용하여 URL(웹서버) 에서 파일을 효율적/정확하게 다운로드하는 방법에 관한것입니다.

Requests를 사용하여 파일을 다운로드하는 방법

# Code

import requests

url = 'http://google.com/favicon.ico'
r = requests.get(url, allow_redirects=True)
open('google.ico', 'wb').write(r.content)

위 코드는 http://google.com/favicon.ico 에서 미디어를 다운로드하고 google.ico 라는 이름으로 저장합니다

(저장 경로는 해당 파이썬 파일이 위치하는 디렉터리에 저장됩니다)


이 댓글을 비밀 댓글로

파이썬의 문자열 포매팅과 활용 4

Posted by Root @ Hacker Xeros
2018.03.28 16:28 프로그래밍/ㄴ Python

format() 함수를 이용한 소수점 표현

# 코드

print("소수 : {}".format(21.11234567)) # 전체 자리수 삽입
print("소수점 1자리까지 : {:.1f}".format(21.7777777))


# 코드 설명
# format 함수 사용 시 특수한 기능을 갖게 하는 문자 "콜론"( : )


# 실행 결과

> 소수 : 21.11234567
> 소수점 1자리까지 : 21.8


format() 함수를 이용한 문자열 정렬

# 코드

print("[{}] [{}]".format("파이썬", "짱재밌다"))
print("[{0}] [{1}]".format("파이썬", "짱재밌다"))
print("[{0:10}] [{1:10}]".format("파이썬", "짱재밌다")) # 기본적으로 프로그래머가 설정해주지 않으면 좌측정렬된다.
# 콜론(:)은 인덱스 뒤에 위치한다. 근데, 인덱스는 생략 가능

print("[{:>10}] [{:>10}]".format("파이썬", "짱재밌다")) # 우측정렬 -->
print("[{:<10}] [{:<10}]".format("파이썬", "짱재밌다")) # 좌측정렬 <--
print("[{:^10}] [{:^10}]".format("파이썬", "짱재밌다")) # 가운데정렬


# 코드 설명
# 콜론( : )은 인덱스 뒤에 위치한다 그러나 인덱스는 생략 가능하다
# 위 코드에서 정렬 부분을 보면 >, <, ^ 를 확인할 수 있다, 정렬하는 위치의 기준을 나타내는것인데 그냥 방향표시라 생각하면 이해하기 수월하다
# 예를들어 우측정렬 할 때 사용하는 {:>10} 을 직독직해해보면 >(오른쪽) 방향으로 10칸 공백을 만들어 우측 정렬 하겠다는 뜻이 된다


# 실행 결과

> [파이썬] [짱재밌다] > [파이썬] [짱재밌다] > [파이썬 ] [짱재밌다 ] > [ 파이썬] [ 짱재밌다] > [파이썬 ] [짱재밌다 ] > [ 파이썬 ] [ 짱재밌다 ]


정렬 후 공백 채우기

방금 설명했던 문자열 정렬을 사용하고 나니 궁금증이 생긴다.
여백을 공백으로 하지 아니하고 내가 원하는 문자로 채울 수는 없을까?

방법이 있다, 만약 가운데 정렬을 하고 나머지 양쪽 빈 여백에 각각 "하"와 "호"로 채우고 싶다면 아래와 같이 프로그램을 작성하면 된다.
# 코드

print("[{:하^10}] [{:호^10}]".format("파이썬", "짱재밌다")) # 원하는 한 문자 사용


# 코드 설명
# {:^10} {:^10} 이 코드를 {:하^10} {:호^10} 이렇게 변경해주면 된다


# 실행 결과

> [하하하파이썬하하하하] [호호호짱재밌다호호호]


이 댓글을 비밀 댓글로

파이썬의 문자열 포매팅과 활용 3

Posted by Root @ Hacker Xeros
2018.03.28 15:24 프로그래밍/ㄴ Python

format() 함수를 사용한 포매팅 방식

# 코드

print("제 이름은 {}입니다.".format("Xeros"))
print( "저는 {}살 입니다.".format(19))


# 코드 설명
# print() 함수 내의 문자열에 {} 포맷을 짚어넣고 format()함수에{} 포맷에 들어갈 내용을 적는다.


# 실행 결과

> 제 이름은 Xeros입니다.
> 저는 19살입니다


{ } 안에 인덱스값 넣어 순서 지정하기

# 코드

print("1. 제 이름은 {}이고 {}살 입니다.".format("Xeros",19)) print("2. 제 이름은 {0}이고 {1}살 입니다.".format("Xeros",19)) print("3. 제 이름은 {1}이고 {0}살 입니다.".format(19,"Xeros"))


# 코드 설명
# {} 안에 인덱스를 넣지 않으면, 순서대로 값을 가져온다. # {} 안에 인덱스를 넣으면, 뒤에 값들의 순서와 일치하지 않아도, 원하는대로 가져올 수 있다.


# 실행 결과

> 1. 제 이름은 Xeros이고 19살 입니다.
> 2. 제 이름은 Xeros이고 19살 입니다. > 3. 제 이름은 Xeros이고 19살 입니다.


format() 함수에서 변수 사용하기

# 코드

name = "Xeros" age = 19 print("4. 제 이름은 {}이고 {}살 입니다.".format(name,age))


# 코드 설명
# name과 age 변수를 선언하고 format() 함수에 지정된 값을 넣는 대신 변수로 대체하였다


# 실행 결과

> 4. 제 이름은 Xeros이고 19살 입니다.


format() 함수에서 키워드 사용하기

# 코드

print("5. 제 이름은 {n}이고 {a}살 입니다.".format(n=name,a=age))
# n과 a는 키워드이다, format() 안에 원하는 키워드에 맞게 값을 대입

print("6. 제 이름은 {n}이고 {a}살 입니다.".format(a=age,n=name))
# 순서 상관없음

print("7. 제 이름은 {name}이고 {age}살 입니다.".format(age=age,name=name))
# 키워드와 변수가 이름이 같다

# format() 안에서 앞에 사용된 이름이 키워드가 된다, 뒤는 값 (근데 값이 변수인것)
# 키워드와 인덱스 혼용

print("8. 제 {}은 {name}이고 {}살 입니다.".format("이름", 20, name=name))
# 반드시 키워드는 맨 뒤에 위치해야 한다. (키워드가 들어있는 {} 는 인덱스에 포함X)
# 에러 print("8. 제 {}은 {name}이고 {}살 입니다.".format("이름", name=name, 20))


# 코드 설명
# 따로 설명하기에 코드가 너무 길어 코드 부분에 설명도 함께 적시하였습니다


# 실행 결과

> 5. 제 이름은 Xeros이고 19살 입니다.
> 6. 제 이름은 Xeros이고 19살 입니다. > 7. 제 이름은 Xeros이고 19살 입니다. > 8. 제 이름은 Xeros이고 20살 입니다.


기본 포매팅 방식과 { }을 사용한 포매팅 방식의 비교

# 코드

print("%s는 %d살" % ("Xeros",19)) print("{}는 {}살".format("Xeros", 19))


# 코드 설명
# { } 포매팅 방식이 훨씬 간결하고 사용하기 쉬운것을 알 수 있다.


# 실행 결과

> Xeros는 19살 > Xeros는 19살



이 댓글을 비밀 댓글로

파이썬의 문자열 포매팅과 활용 2

Posted by Root @ Hacker Xeros
2018.03.27 17:12 프로그래밍/ㄴ Python

문자열 포매팅은 Print()함수와 관련이 없다

# Code

my_str = "정수 : %d입니다." %10
print(my_str)


# 실행 결과

> 정수 : 10입니다.


변수가 가리키는 값을 포매팅 값으로 호출하여 출력

# Code

year = 2018
print("%d년 입니다." %year)

year +=1 # 복합대입연산자(+=)를 사용 해 year 변수가 가리키는 값에서 1만큼을 추가한다
print("%d년 입니다." %year)

year -=2 # 복합대입연산자(-=)를 사용 해 year 변수가 가리키는 값에서 2만큼을 제거한다
print("%d년 입니다." %year)


# 실행 결과

> 2018년 입니다
> 2019년 입니다
> 2017년 입니다


2개 이상의 문자열 넣기

# Code

print("%d개 이상의 %s넣기"%(2, "문자열"))


# 실행 결과

> 2개 이상의 문자열넣기

1. 2개이상의 값을 넣을떄는 ( )로 묶어준다

2. % 뒤에다가 소괄호로 묶은 뒤 값을 나열한다.


포매팅을 사용하는 코드에서 %를 출력하기

# Code

print("현재 강수확률은 100%입니다.") print("현재 강수확률은 %d%%입니다." %100)


# 실행 결과

> 현재 강수확률은 100%입니다. > 현재 강수확률은 100%입니다.

1. 포매팅을 사용하지 않으면, %문자는 그냥 사용 가능하다.

2. 포매팅을 사용하면, %는 특수한 기능을 갖게 된다.

3. %% < 이런식으로 %를 두 번 사용하여 하나의 %로 처리하게된다.


포맷코드를 활용한 소수점 표현

# Code
print("기본 6자리, 자동반올림 : %f" % 3.166666777) print("소수점 지정 (소수점 뒤 1자리까지) : %.1f" % 3.1212321838712937129847) print("소수점 지정 (소수점 뒤 3자리까지) : %.3f" % 3.1212321838712937129847)


# 실행 결과

> 기본 6자리, 자동반올림 : 3.166667 > 소수점 지정 (소수점 뒤 1자리까지) : 3.1 > 소수점 지정 (소수점 뒤 3자리까지) : 3.121

지난번에도 설명했지만 파이썬에서 %f를 통해 실수를 출력할 경우 자동 6자리까지 반올림이되어 출력된다.

하지만 이것을 프로그래머가 소수 몇째자리까지 출력이 되도록 할 것인지 설정해줄 수 있다.

포맷코드 %f 사용 시 %.출력하고싶은자릿수f 형식으로 코드를 작성하면 된다.


포맷코드를 활용한 정렬과 공백

# Code
print("[%s] [%s]" % ("파이썬", "재밌다!")) print("[%10s] [%10s]" % ("파이썬", "재밌다!")) # 우측정렬 print("[%-10s] [%-10s]" % ("파이썬", "재밌다!")) # 좌측정렬


# 실행 결과

> [파이썬] [재밌다!] > [ 파이썬] [ 재밌다!] > [파이썬 ] [재밌다! ]

%와 포맷코드 사이에 정수를 넣으면, 그 수 만큼 최소 공백을 확보하겠다는 뜻이다

숫자 입력란에 음수를 입력 할 경우 문자를 좌측정렬하고 오른쪽에 공백을 확보하겠다는 의미이며

양수를 입력할 경우 문자를 우측정렬하고 왼쪽에 공백을 확보하겠다는 의미이다

이 댓글을 비밀 댓글로

평창 동계올림픽 해킹 관련 기사

Posted by Root @ Hacker Xeros
2018.03.21 17:39 해킹 | 정보보안/ㄴ 정보보안 자료

카스퍼스키랩 "작년말 스피어피싱과 연관…2월 6일 스키리조트 서버 침입"

평창동계올림픽 개막 당시 시스템 장애를 일으킨 해커가 해당 공격을 지난해(2017년)부터 준비한 것으로 드러났다.

또 해커의 공격에 영향을 받은 대상은 올림픽 관련 조직에 그치지 않고 더 광범위한 한국 정부기관, 민간업체를 아우르는 것으로 파악됐다.

■ 개막식 망치려 했던 올림픽 파괴자 악성코드…배후는?

러시아 사이버보안업체 카스퍼스키랩은 지난 8일 '시큐어리스트' 블로그에 회사 보안인텔리전스 조직 GReAT 팀이 추적, 분석한 '올림픽 파괴자(Olympic Destroyer)' 공격의 세부 내용을 공개했다. 회사측은 이를 통해 올림픽 파괴자 악성SW의 기술적 특징, 해당 공격이 진행된 과정, 악성SW 공격을 위해 유포된 스피어피싱 이메일의 표적 대상, 앞서 러시아와 북한 등을 지목한 배후 추정의 반박 결론을 제시했다. [☞원문보기]

올림픽 파괴자는 지난 2월 9일 올림픽 개회식 때 발생한 네트워크 시스템 장애를 초래한 해킹 공격에 사용된 악성 소프트웨어(SW)를 가리킨다. 당시 현장의 유무선 네트워크 시스템에 장애가 발생했다. 그 여파로 당시 올림픽 현장 취재를 지원하는 메인프레스센터(MPC)의 IPTV 영상 전송, 입장권 판매 및 출력을 위한 공식 홈페이지 운영, 무선랜(Wi-Fi) 서비스에 문제가 있었다. 이후 올림픽 조직위원회, 국제올림픽위원회(IOC)는 장애 원인이 '해커의 사이버공격'이었다고 밝혔지만, 최초 감염 경로는 확인되지 않았다.

카스퍼스키랩은 확인되지 않았던 평창올림픽 네트워크 시스템의 올림픽 파괴자 악성코드 최초 감염 경로를 스피어피싱 이메일을 통한 감염으로 분석했다.

연구원들은 일각의 앞선 분석과 달리, 악성코드의 특성을 통해 발견할 수 있는 북한의 지원을 받는 공격조직과 연관된 단서들은 조작된 것이며, 따라서 이는 북한에게 잘못을 뒤집어씌우려 시도한 것이라고 덧붙였다.

연구원들은 여전히 올림픽 파괴자의 정확한 배후가 밝혀지지 않았지만, 공격자가 노르드VPN과 모노VM을 활용했다는 점을 밝혀냈다. 이는 러시아어 기반 공격조직 'Sofacy'가 과거 보였던 특징임을 지적했다.

그러나 이 또한 러시아 지원을 받는 해커조직의 소행일 수도, 그 소행을 의심하도록 조작된 흔적일 수도 있다. 앞서 미국 외신들은 러시아 지원을 받는다고 알려진 해커그룹 '팬시베어'를 올림픽 파괴자 공격 배후로 소개하기도 했다.

카스퍼스키랩은 또다른 보안업체 크라우드스트라이크의 애덤 메이어스(Adam Meyers) 인텔리전스 담당 부사장의 "올림픽 공격에 팬시베어가 연관돼 있다는 증거는 없다"는 발언을 인용하며, 러시아 배후설 또한 부정했다.

■ "올림픽 파괴자 맬웨어, 네트워크 웜의 일종…관련 호스트에 2월 6일 침입"

앞서 지난 2월 12일 미국 네트워크 업체 시스코의 보안인텔리전스조직 탈로스 소속 연구원들이 '올림픽 파괴자'라 지칭한 평창올림픽 해킹 맬웨어 샘플을 확보해 분석했다. 이들은 악성코드가 평창올림픽을 위해 운영되는 네트워크에 침입한 경로를 밝히진 못했지만, 올림픽 파괴자 맬웨어 안에 올림픽 인터넷서비스 관련 도메인에 접속할 수 있는 수십개 계정 아이디와 패스워드가 포함돼 있었다는 점, 추가 계정 탈취를 시도한다는 점, 감염 대상의 복구를 허용하지 않고 시스템 파괴 동작을 수행한다는 점 등을 밝혀냈다. [☞관련기사]

카스퍼스키랩은 추가 단서를 확보해 진행한 심층 분석 결과를 제시했다. 올림픽 파괴자 맬웨어가 여러 컴포넌트로 구성된 일종의 '네트워크 웜'이었다고 설명했다. 이 네트워크 웜은 정상적인 시스템관리툴인 SysInternals 스위트의 Psexec 툴, 계정탈취 모듈, 와이퍼 등을 포함했다.

지난달 네트워크장비업체 시스코시스템즈의 보안분석팀 탈로스인텔리전스에서 평창동계올림픽 사이버공격에 쓰인 악성코드 샘플의 분석결과를 공개하며 악성코드를 '올림픽파괴자'라 명명했다.지난달 네트워크장비업체 시스코시스템즈의 보안분석팀 탈로스인텔리전스에서 평창동계올림픽 사이버공격에 쓰인 악성코드 샘플의 분석결과를 공개하며 악성코드를 '올림픽파괴자'라 명명했다.

올림픽 파괴자의 목적은 원격 네트워크 공유 환경의 파일을 파괴하기 위한 와이퍼 페이로드를 전달해 60분 뒤 작동시키는 것이었다. 그 메인 모듈은 브라우저와 윈도 저장소에서 사용자 패스워드를 수집해, 훔친 계정 정보를 반영한 새로운 웜을 제작하는 역할을 했다. 새로 만들어진 웜은 접근 가능한 로컬 네트워크 컴퓨터에 뿌려진 뒤 훔친 계정과 사용자 권한을 악용하기 위해 Psexec 툴을 동원했다.

시스템이 네트워크 웜에 감염된지 60분 후 와이퍼가 작동하면 윈도 이벤트 로그가 초기화된다. 백업과 섀도카피가 삭제된다. 윈도 부트 메뉴에서 복구 항목이 제거된다. 시스템의 모든 서비스가 해제되고 컴퓨터가 재부팅된다. 네트워크 공유 환경의 파일들은 이 60분 경과 시점의 파괴 동작이 수행될 때 함께 지워진다. 하지만 로컬 파일과 웜은 그 동작을 통해 자신이나 구성요소를 스스로 제거하진 않았다.

카스퍼스키랩 연구원들의 분석 결과 올림픽 파괴자는 스스로 복제하는 기능을 갖췄지만, 공격자는 지능형지속위협(APT) 공격에 동원되는 측면이동(Lateral movement)을 직접 시도하기도 했다. 이는 웜을 유포하기에 더 적절한 위치를 물색하기 위한 것으로 추정됐다. 그리고 공격자는 Psexec 툴과 탈취 계정을 사용해 네트워크에서 TCP 4444번 포트를 열고 '미터프리터(meterpreter)' 백도어를 다운로드 및 실행했다. 공격자는 또 네트워크 설정을 확인해 다중 네트워크 또는 가상사설망(VPN)에 연결된 서버를 찾아 올림픽위원회 인프라에 연결될 수 있는 인접 네트워크에 침입하고자 했다.

평창동계올림픽 해킹공격으로 유포된 올림픽 파괴자 악성코드의 동작 도식평창동계올림픽 해킹공격으로 유포된 올림픽 파괴자 악성코드의 동작 도식

올림픽 파괴자 공격자에게 침입당한 인프라 중에는 카스퍼스키랩의 시스템 감시 컴포넌트를 가동하고 있는 스키리조트호텔의 네트워크에 위치한 호스트도 있었다. 감시 컴포넌트는 여기서 공격자가 측면이동을 위해 사용하는 기술 일부를 포착했다. 해당 호스트의 원격측정(telemetry) 데이터에 따르면 공격자는 2018년 2월 6일 시스템에 침입했다. 이들은 TCP 4444번 포트 개방, ipconfig 명령 실행, 다운로더, 3가지 역할을 수행하는 파워셸 스크립트릿 3개를 사용했다. 그리고 공격자는 한국표준시(KST) 기준으로 업무외시간에 해당하는 시간대에 주로 움직였는데, 이는 공격활동이 주의를 끌지 않도록 하기 위해서였을 것이라는 게 카스퍼스키랩 연구원의 설명이다.

카스퍼스키랩 연구원들은 악성코드에서 발견한 호스트명을 포함한 탈취계정목록을 기반으로 평창올림픽 대상 웜 유포 공격 범위를 도식화했다. 해당 다이어그램에 따르면 평창올림픽 개막식을 겨냥한 웜 공격 자체는 적어도 3곳에서 함께 진행됐다. 그리고 이 3곳 가운데 한 곳에서 네트워크 웜 유포가 진행되기 시작한 것으로 추정됐다.

주된 공격 시도는 이미 알려진대로 평창올림픽 운영 네트워크에서 발생했지만, 평창올림픽 IT서비스 공급업체인 아토스(AtoS)와 앞서 언급한 스키리조트호텔 쪽에도 개별적으로 웜 공격이 진행됐다. IT서비스 공급업체 쪽의 인프라 중에는 그 셰어포인트서버, 파일서버, 동유럽·중동·아프리카(EEMEA) 사무실이 표적이 됐다. 스키리조트호텔에선 인프라 자동화 서버, 파일서버, 웹서버 등이 표적이 됐다. 평창올림픽 인프라에선 웹서버와 인트라넷이 표적이 됐다.

■ "2017년말 한국에 유포된 스피어피싱 이메일과 평창올림픽 공격 연결고리 발견"

카스퍼스키랩 연구원들은 앞서 한국을 대상으로 발생한 스피어피싱 이메일 공격의 흔적에 주목했다. 지난해 12월 '바이러스토털'에 등록된 악성 MS오피스 문서 파일이다. 연구원들은 이 악성문서에서 이번 평창동계올림픽 공격과의 연결고리를 몇 개 발견했다.

카스퍼스키랩 측은 "해당 이메일 캠페인과 올림픽 파괴자간의 명확한 연결고리가 (분석의) 대상이었다"며 "우리는 이 문서화된 문서와 평창에서 발생한 공격 사이에 몇가지 연관성이 있다고 여길만한 점들을 가까스로 발견했다"고 밝혔다.

첫번째 연결고리는 평창올림픽 공격의 악성코드 올림픽 파괴자와, 앞서 국내에서 이뤄진 스피어피싱 이메일 공격에 쓰인 악성문서의 동작 특성이다.

카스퍼스키랩 연구원들이 발견한 한국 대상 스피어피싱 이메일 악성문서에 포함된 파워셸스크립트(왼쪽)와 올림픽파괴자 악성코드에 포함된 파워셸스크립트.카스퍼스키랩 연구원들이 발견한 한국 대상 스피어피싱 이메일 악성문서에 포함된 파워셸스크립트(왼쪽)와 올림픽파괴자 악성코드에 포함된 파워셸스크립트.

스피어피싱 이메일 공격에 동원된 악성문서를 MS오피스로 열고 편집기능을 활성화하면, 악성문서는 cmd.exe 명령어를 사용해 파워셸 스크립트릿을 실행하고 또다른 파워셸 스크립트릿을 내려받아 실행함으로써 시스템에 백도어를 심는 동작을 수행했다. 이 백도어는 올림픽 파괴자 공격 피해를 입은 평창올림픽 네트워크에서 발견된 파워셸 백도어와 유사성이 크다고 카스퍼스키랩 측은 지적했다.

카스퍼스키랩 연구원들은 "두 파워셸 스크립트는 동일한 툴을 사용해 난독화 및 작성된 독립형 파일리스 백도어 악성코드"라며 "두 스크립트는 유사한 URL 구조를 채용했고 파워셸의 RC4 및 쿠키를 통해 base64로 서버에 전달된 비밀키 값을 사용해 구현됐다"고 분석했다.

두번째 연결고리는 올림픽 파괴자 공격을 수행한 공격자가 사용한 가상사설망(VPN) 서비스업체 '노르드VPN'의 인터넷 주소 값이, 기존 스피어피싱 이메일 공격에 쓰인 악성문서에도 포함됐다는 점이다.

카스퍼스키랩 연구원들이 분석한 올림픽파괴자 관련 스피어피싱 이메일 악성문서 내용카스퍼스키랩 연구원들이 분석한 올림픽파괴자 관련 스피어피싱 이메일 악성문서 내용

관련 조사를 위해 카스퍼스키랩 연구원들은 평창동계올림픽 개최지에 자리한 호텔에서 관리하는 서버 중 하나의 관리권한을 얻었다. 관련 업체로부터 네트워크 게이트웨이의 네트워크 접속 로그를 제공받아 분석한 결과, 그 서버와 131.255.*.* IP주소를 사용하는 아르헨티나 소재의 악의적 명령제어 서버간 트래픽이 있었음을 확인했다. 이 명령제어 서버의 사용권한은 불가리아의 한 리셀러 업체가 노르웨이에서 '프로톤메일(protonmail.com)'이라는 도메인 기반의 메일계정을 사용하는 인물 'Simon***'으로부터 2017년 10월 10일 결제한 것이었다.

Simon*** 메일계정 사용자는 노르웨이의 IP주소 82.102.*.*를 사용해 아르헨티나 소재 서버를 관리했다. 이 IP주소는 가상사설망(VPN) 서비스업체 '노르드VPN(NordVPN)'가 제공하는 게이트웨이 정보에 해당했다. 노르드VPN은 비트코인으로 결제를 받아 프라이버시 보호형 VPN 서비스를 제공하고 있다. 평창동계올림픽 스피어피싱 이메일 관련 악성파일 내용에도 노르드VPN 서비스 주소가 등장한다.

카스퍼스키랩 연구원들은 이를 근거로 "(악성문서에 포함된 노르드VPN 문자열은) 신뢰도가 낮은 지표지만 동계오림픽 스피어피싱 캠페인과 올림픽 파괴자 웜 공격을 시작한 공격자간의 또다른 연결고리로 보인다"고 평했다.

■ "최초 네트워크 웜 확산, 올림픽 개최지 스키리조트에서 시작"

카스퍼스키랩 연구원들은 공격자들이 올림픽 파괴자 공격을 수행하기 위해 평창동계올림픽의 공식 파트너들이 운영하는 네트워크를 표적으로 삼은 스피어피싱 이메일을 발견했다. 공격자는 이 공격을 시도하기 위해 각 파트너 업체의 홈페이지를 들러 그 이름을 찾고, 도메인명을 확인하고, 스피어피싱 공격의 시작점으로 삼을 이메일 계정을 수집하려 했을 것으로 추정됐다.

연구원들이 발견한 악성문서 중 하나는 2017년 12월 29일 한국에서 '바이러스토털' 사이트에 업로드됐다. 악성문서 발신처 이메일 계정은 한국의 공공기관 '대테러센터(NCTC)'를 사칭하고 있지만, 실제 발신자 서버 IP주소는 싱가포르 쪽이다.

또 연구원들이 공개한 스피어피싱 이메일의 수신처는 평창올림픽 아이스하키 종목 관련 공식 이메일 주소 'icehockey@pyeongchang2018.com'를 담고 있었지만, 실제 표적은 다양한 국내 기업 및 공공기관 도메인을 아울렀다.

카스퍼스키랩이 실제 평창올림픽 공격에 연관된 스피어피싱 이메일이 표적으로 삼았다는 공공부문 도메인은 평창올림픽 공식사이트, 한국공항공사, 관세청, 한국전력공사, 기상청, 한국철도공사, 대한민국정책포털, 대한체육회 등이다. 표적이 된 민간부문 도메인은 SK, KT, 포스코, SK하이닉스, 대한항공, 한진택배, 강릉아산병원, 동아일보, 알펜시아리조트, 용평리조트 등이다.

카스퍼스키랩 연구원들이 파악한 올림픽 파괴자 악성코드 유포 대상 표적 조직의 인터넷도메인카스퍼스키랩 연구원들이 파악한 올림픽 파괴자 악성코드 유포 대상 표적 조직의 인터넷도메인

다만 공격자가 평창올림픽 네트워크 범주를 넘어선 표적을 최종 피해 대상으로 의도했다고 단정할 수는 없다.

20일 카스퍼스키랩 GReAT팀 소속 박성수 책임연구원은 "다른 회사를 공격 대상으로 한 것인지, 올림픽 협력사 및 파트너 등을 통해 우회적인 공격을 하려 한 것인지같은 정확한 (공격)의도는 확인이 어렵다"고 설명했다.

또 박성수 책임연구원은 해당 스피어피싱 메일을 받은 여러 분야의 기관 및 기업 조직이 모두 악성코드 감염 또는 시스템 장애 등 피해를 겪었는지에 대해 "수신자의 감염 및 피해 여부는 알 수 없다"고 답했다.

연구원들이 발견한 모든 증거를 바탕으로 분석한 결과 스키리조트 2곳의 자동화 인프라를 맡고 있는 소프트웨어 업체, 스키리조트 호텔 두곳, 프랑스에 본부를 둔 IT서비스업체 아토스 등의 시스템이 올림픽 파괴자의 공격에 뚫린 것으로 파악됐다.

그리고 한국이 아니라 다른 곳에 소재한 피해 시스템도 있었다. 바이러스토털에 관련 악성코드를 업로드한 곳은 오스트리아 소재의 'VAT정보교환시스템(VIES)' 담당조직이었다. VIES는 유럽연합 집행위원회가 소유한 검색엔진이며, 이는 그와 통신하는 유럽 소재 IT업체 아토스의 시스템이 감염에 따른 부차적 피해 가능성을 시사한다는 설명이다.

하지만 연구원들이 파악한 웜의 주요 출현 위치는 '이름을 밝힐 수 없는' 한국의 겨울 휴양지에 소재한 호텔에 있었다. 조사결과, 악성코드 공격을 받은 서버 중 하나를 운영하는 곳에서 작동한 스키 게이트 및 리프트를 쓸 수 없게 됐다. 연구원들은 이게 부차적인 피해가 아니며, 공격자가 의도적으로 스키리조트 자동화 서버에서 웜 확산을 시작한 것이라고 분석했다.

올림픽 파괴자 악성코드의 네트워크 웜 공격이 발생한 장소 3곳. IT서비스제공자 아토스, 평창올림픽, 스키리조트 각각에서 진행됐다.올림픽 파괴자 악성코드의 네트워크 웜 공격이 발생한 장소 3곳. IT서비스제공자 아토스, 평창올림픽, 스키리조트 각각에서 진행됐다.

연구원들은 "해당 서버는 네트워크에서 페이션트제로(patient-zero, 병원체의 최초감염자)라 불리는 것이었다"며 "그 공격 시점은 평창동계올림픽 개막식 공식행사 몇시간 전이었는데, 이는 감염된 인프라를 사용하는 사람들에게 끼칠 불편을 극대화할만큼 네트워크상에 충분히 전파되도록 선정된 것이었다"고 덧붙였다.

■ "북한 배후 지목 근거, 해커조직 '지문'은 위조된 것…배후추정 신중해야"

보안업계의 관심은 올림픽 파괴자 악성코드의 근원지다. 이 공격 배우를 둘러싼 가설은 분분하다. 여러 분석 주체들이 지난달 공격이 발생한 직후 여러 근거를 가지고 러시아, 중국, 북한 등 국가의 지원을 받는 해커조직의 소행일 가능성을 제기했다. 이들 국가에 고용된 사이버 스파이, 사보타주 공격 조직이 과거 보여온 특징과 올림픽 파괴자가 보인 몇몇 특징이 일치했다는 이유에서였다.

카스퍼스키랩도 올림픽 파괴자의 배후 집단을 밝혀내고자 했다. 그러다 공격자들이 남긴 고유 흔적을 근거로 "북한이 연계된 악명 높은 국가 지원 해킹 지반 '라자루스'와 올림픽 파괴자가 연관돼 있다는 확실한 증거를 발견했다"고 지적했다. 연구원들은 파일에 저장된 코드 개발 환경의 일부 특징 조합을 일종의 '지문'으로 삼는 기법을 통해 올림픽 파괴자의 지문이 과거 분석한 라자루스 악성코드 개발자 지문과 같음을 알아냈다.

하지만 추가 분석 결과 처음에 발견된 올림픽 파괴자의 지문은 위조된 것이었다. 카스퍼스키랩 측은 "2차 분석과 수동 검증을 거친 결과 연구팀은 라자루스가 사용하는 지문과 완벽하게 일치하도록 위조됐으나, 그 실제 코드와 일치하지는 않는 특징을 몇 가지 발견했다"고 설명했다.

이에 대해 박성수 책임연구원은 "마치 범죄자가 다른 사람의 DNA를 훔쳐서 현장에 자신의 DNA 대신 남겨놓은 것과 같다"면서 "잘못된 추적은 심각한 결과를 가져올 수 있으며 누군가 국가 및 정치 현안에 영향을 주기 위해 보안 커뮤니티의 의견을 조작하려고 할 수 있기 때문에, 공격 배후 추적은 아주 신중하게 진행해야 한다"고 평했다.

이 댓글을 비밀 댓글로

Visual Studio Code 소스코드 정렬 단축키

Posted by Root @ Hacker Xeros
2018.03.21 17:13 개발 | 보안 | 팁/개발 메모장

저는 코딩 프로그램으로 VS Code를 애용하는데 가끔 소스코드같은것을 정렬해주어야 할 필요성이 있습니다 그럴 땐 VS Code의 내장 코드 정렬 기능을 사용하면되는데 아주 간단합니다


이런식으로 정렬이 되지 않은 코드가 존재 할 때



정렬하고자 하는 코드들을 드래그해준 뒤 Ctrl + K + F 커맨드 를 사용하시면



아래와 같이 자동 정렬 되는것을 확인하실 수 있습니다


이 댓글을 비밀 댓글로

카카오톡봇 단타경고 JavaScript 코드

Posted by Root @ Hacker Xeros
2018.03.21 16:49 프로그래밍/ㄴ JavaScript



사람이 많은 채팅방에서는 단타방지 기능이 필수적입니다


예를들면 "안녕하세요"라는 문장을 카카오톡에선 꼭

"안녕"

"하세요"

이런식으로 여러번에 걸쳐 톡을 전송하는사람이 있습니다


그런사람에게 경고를 주기 위한 JavaScript 소스코드입니다


주요 기능은 3번 연속으로 5글자 이하의 문자를 전송 할 경우 경로를 띄우는 형식입니다


도배방지.js


'프로그래밍 > ㄴ JavaScript' 카테고리의 다른 글

카카오톡봇 단타경고 JavaScript 코드  (0) 2018.03.21
이 댓글을 비밀 댓글로

카카오톡봇 단타경고 JavaScript 코드

Posted by Root @ Hacker Xeros
2018.03.21 16:48 프로젝트/ㄴ 카카오톡 챗봇 개발


사람이 많은 채팅방에서는 단타방지 기능이 필수적입니다


예를들면 "안녕하세요"라는 문장을 카카오톡에선 꼭

"안녕"

"하세요"

이런식으로 여러번에 걸쳐 톡을 전송하는사람이 있습니다


그런사람에게 경고를 주기 위한 JavaScript 소스코드입니다


주요 기능은 3번 연속으로 5글자 이하의 문자를 전송 할 경우 경로를 띄우는 형식입니다


도배방지.js


이 댓글을 비밀 댓글로

파이썬의 문자열 포매팅과 활용 1

Posted by Root @ Hacker Xeros
2018.03.21 05:16 프로그래밍/ㄴ Python

문자열 포매팅이란?

1. 문자열 내에 어떤 값을 삽입하는 방법이다.
2. 문자열에서 사용할 값이 변할 때(변수) 유용하다.

포맷 코드

문자열 포매팅에 대해 배우기 전에 숙지하고 넘어가야 하는 개념이 바로 "포맷코드(서식문자)" 이다, 각각의 자료형에 따라 사용하는 포맷코드가 달라지기 때문이다.

%s : 자료형이 문자열일때 사용한다.
%c : 자료형이 문자 1글자일때 사용한다.
%d : 자료형이 정수일때 사용한다.
%f : 자료형이 실수(소수)일때 사용한다.

이 외에도 16진수, 8진수 등 더 많은 형식에 대한 포맷코드가 존재하지만 우선 이번 포스팅에서는 여기까지만 설명한다.

포매팅 방법

%d 등 포맷코드가 문자열에 포함되어있으면, 문자열이 끝난 뒤 %기호를 붙이고, 포맷코드에 들어갈 값을 입력해준다

포맷코드의 형식과 값의형식 (type)이 같아야 한다 (%d 포맷코드가 들어가면, 반드시 정수형 자료를 넣어주어야한다)

기본적인 포매팅 방식을 사용하여 정수를 출력해보자

# Code

print("정수 : %d입니다." %10)


# 실행 결과

> 정수 : 10입니다


기본적인 포매팅 방식을 사용해서 실수를 출력해보자

# Code

print( "실수 : %f입니다." %10.12)


# 실행 결과

> 실수 : 10.120000입니다


이런식으로 실수를 출력하게 되면 우리는 실수값에 10.12를 주었지만 %f포맷코드는 기본설정이 소수점 뒤 6자리까지이기때문에 10.120000 라는 값을 출력한다.


위의 포매팅 방식을 변수에 저장하여 사용하기

# Code

my_str = "정수 : %d입니다." %10
my_str2 = "실수 : %f입니다." %10.12

print(my_str)
print(my_str2)


# 실행 결과

> 정수 : 10입니다
> 실수 : 10.120000입니다


기본적인 포매팅 방식에서 사용 한 코드("정수 : %d입니다." %10)를 my_str 변수에 저장시키고 그 변수를 출력하는 방법이다, 문자열이든, 숫자열이든 상관없이 사용할 수 있다. 또한 여기서 알아가야 할 개념중 하나가 문자열 포매팅은 print()함수와 관련이 없다, 꼭 기억하도록 하자


문자열 포매팅을 이용한 형변환

# Code

print("(형변환)정수 -> 실수 : %f" %10)

print("(형변환)정수 -> 정수 : %d" %10.12345)


# 실행 결과


(형변환)정수 -> 실수 : 10.000000 (형변환)정수 -> 정수 : 10


정수값(10)을 %f 포맷코드를 사용하여 출력 할 경우 원래는 존재하지 않던 소수점이 추가되어 10.000000 이라는 값으로 형변환이 되고


실수값(10.12345)을 %d 포맷코드를 사용하여 출력 할 경우 원래 존재하던 소수점이 손실되어 10 이라는 값으로 형변환이 된다


형변환은 주로 실수의 값을 받았을때 그 값을 정수로 변환시켜 값을 사용해야할 때 사용한다.


사용하기 편리한 %s 포맷코드

다른 여러 포맷 코드들이 있지만 그중 보다 편리하게 사용할 수 있는 포맷코드가 있다 바로 "%s" 포맷코드이다
"%d" 포맷코드는 정수, "%f" 포맷코드는 실수 등 자료형에 따라 포맷코드를 다르게 사용해야 하는 반면 "%s" 포맷코드는 어떠한 자료형이든 사용할 수 있다.

쉽게 설명하자면 직사각형은 정사각형이 아니지만 정사각형은 직사각형이기도 한것과 비슷한 개념이다

# Code

print("문자열 : %s" % 10)

print("문자열 : %s" % 10.12345)

print("문자열 : %s" % "안녕하세요")

print("문자열 : %s" % "abcd")

print("문자열 : %s" % "ABCD")

print("문자열 : %s" % "!@#")


# 실행 결과


> 문자열 : 10
> 문자열 : 10.12345
> 문자열 : 안녕하세요
> 문자열 : abcd
> 문자열 : ABCD
> 문자열 : !@#


위와같이 "%s" 포맷코드는 자료형이 정수형이던 실수형이던 문자형이던 심지어 특수문자던 상관 없이 문제없이 사용할 수 있다.





이 댓글을 비밀 댓글로

파이썬의 문자열 슬라이싱

Posted by Root @ Hacker Xeros
2018.03.21 05:15 프로그래밍/ㄴ Python

문자열을 슬라이싱 하는 여러가지 방법

이번 포스팅에서 사용될 코드들을 위해 먼저 변수를 하나 선언 한 뒤 문자열 값을 정의한다

# Code

# 이번 포스팅에선 아래 변수를 가지고 문자열 슬라이싱에 대해 설명하겠다.
my_str = "without haste, but without rest."

하나, 하나씩 슬라이싱해서 출력하기

아주 기초적인 방법이다.
# Code

print((my_str[0] + my_str[1] + my_str[2] + my_str[3]))

# 실행 결과

> with

my_str번수의 0, 1, 2, 3 번째 인덱스들을 각 각 순서대로 출력해서 with라는 실행 결과가 나오게 된다, 하지만 이 방법은 너무나도 효율적이지 않기 때문에 잘 사용하지 않는다.


위의 방법이 불편하기 때문에 나온 방법이 아래 방법이다


조금 더 효율적으로 슬라이싱해서 출력하기

# Code

print(my_str[0:4])


# 실행 결과

> with


분명 하나, 하나씩 잘라내어 출력하는 방법과는 다른 코드이지만 결과값은 똑같이 with이다.

확실히 코드의 복잡함이 줄어들고 효율적이다.


print(my_str[시작인덱스값:끝인덱스값])


슬라이싱에서 시작과 끝 인덱스값이 0일 필요는 없다

다른 예제들을 살펴보면 시작인덱스값은 항상 0이고 끝은 4였다, 하지만 시작 인덱스값과 끝 인덱스값은 프로그래머가 원하는대로 설정할 수 있다
# Code

print(my_str[8:13])


# 실행 결과

> haste


실행 결과와 같이 my_str변수가 가리키는 문자열 without haste, but without rest. 의 8번째 인덱스인 h부터 13번째인덱스인 e까지 출력되는것을 학인할 수 있다.


인덱스 초과 시 자동으로 끝인덱스까지만 출력한다

# Code

print(my_str[0:100])


# 실행 결과

> without haste, but without rest.


시작 인덱스만 지정해 줄 경우 끝인덱스는 문자열의 끝인덱스로 자동 설정되어 출력한다

# Code

print(my_str[8:])


# 실행 결과

> haste, but without rest.


끝인덱스만 지정해 줄 경우 시작인덱스는 0번째 인덱스로 자동 설정되어 출력한다

# Code

print(my_str[:4])


# 실행 결과

> with


시작인덱스와 끝인덱스 둘 다 지정해주지 않았을 경우

# Code

print([:])


# 실행 결과

> without haste, but without rest.


이런 경우는 그냥 print(my_str)과 동일한 결과값이 출력된다






이 댓글을 비밀 댓글로

파이썬의 문자열 인덱싱

Posted by Root @ Hacker Xeros
2018.03.21 05:14 프로그래밍/ㄴ Python

문자열 인덱싱이란?

인덱스(index) 즉 idx는 사실 쉽게 말해 순서라고 생각하면 이해하기 쉽다, 또한 인덱스라는것에 대해 배울 떄 한가지 더 명심해야 할 것 중 하나가 인간은 숫자를 셀 때 1부터 세나가지만 컴퓨터는 0부터 세나간다

index의 사전적 의미는 "색인"이다

"문자열" 인덱싱에서 만약 "hello" 라는 문자열을 인덱싱 할 경우 아래와 같이 이해하면 된다

[ h ] [ e ] [ l ]  [ l ]  [ o ]
[ 0 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ]
문자열에서 문자의 순서대로 세나간다, 이것이 문자열 인덱싱이다.

문자열 인덱싱의 개념을 알았으니 이제 문자열 인덱싱은 어떻게 사용하는것인지 알아보도록 하자.

# Code

my_str = "without haste, but without rest." # 인덱스를 설명하기 위해 my_str 변수에 문자열 한줄을 저장한다
print(my_str) # 우선 my_str 변수를 출력한다
print(my_str[0], my_str[10]) # my_str 변수의 0번째 인덱스에 있는 문자와 10번째 인덱스에 있는 글자를 출력한다


# 출력 결과

without haste, but without rest.
w s


위의 출력 결과를 다시 한번 설명하자면

"without haste, but without rest." 문자열에서 0번째에 존재하는 문자는 "w"이고 10번째에 존재하는 문자는 s이다

(without haste, but without rest.)


여기서 한가지 주의 할 점이 있다, 바로 인덱스에서 인식하는 문자열은 모든 문자가 포함된다.


특수문자, 공백, 숫자, 모든 언어 전부 다 인덱스에 포함된다 따라서 만약 위 문자열에서 7번째 인덱스에 있는것을 출력 할 경우 공백이 출력된다.


인덱스에 음수 값을 넣을 경우

통상적인 언어라면 인덱스에 음수값을 넣을수는 "없다", 하지만 파이썬이라면 가능하다
양수를 인덱스에 넣었을 때는 왼쪽에서 오른쪽 순으로 인덱스를 셋지만 인덱스에 음수값을 넣었을 경우에는 오른쪽에서 왼쪽으로 인덱스를 센다, 하지만 0번째 인덱스는 이미 양수 인덱스 규칙에서 사용하고있기때문에 음수로 인덱스를 셀 경우 0부터 세는것과는 다르게 -1부터 센다

한번 인덱스에 음수값을 넣어보자.

# Code

my_str = "without haste, but without rest.
print(my_str[-1])


#출력 결과

.


이런식으로 문자열의 맨 오른쪽부터 왼쪽으로 셀 때 첫번째 문자인 "." 이 출력된다


초과 된 인덱스를 호출 할 경우

"without haste, but without rest." 이 문자열의 인덱스의 범위는 0 ~ 31, -32 ~ -1 까지이다 만약 32번째 인덱스 또는 -32번째 인덱스를 호출 할 경우 에러가 발생한다, 왜냐하면 음수 인덱스의 최대 범위는 -32이고 양수 인덱스의 최대 범위는 31까지이기때문이다








이 댓글을 비밀 댓글로

파이썬의 자료형, 자료형에 따른 사용법

Posted by Root @ Hacker Xeros
2018.03.21 05:13 프로그래밍/ㄴ Python

파이썬의 자료형(자료의 형태)이란?

파이썬 뿐만 아니라 모든 언어에서 자료형의 개념은 중요하다, 자료형에는 크게 숫자형(Number)과 문자형(String)이 존재한다.
자료형의 종류는 아래와 같다

1. 숫자형 (number)
> 정수 (integer) : -10, 0, 10
> 양의 정수와 음의 정수 모두 해당한다
> 실수 (float-point) : -1.1, -20.1, 10.123

> 양의 실수와 음의 실수 모두 해당한다

> 지수 (exponent) : 20.1e1, 20.1E-1

> 2진수 (binary-number) : 0b10, 0B11

> 8진수 (octal-number) : 0o10, 0O16

> 16진수 (hexadecimal-number) : 0xA0, 0XB1


2. 문자형

> "abcd"

> '1234'

> 따옴표로 묶으면 문자열이 된다


문자열을 만드는 4가지 방법

> 큰 따옴표로 묶는다 ("happy day")

> 작은 따옴표로 묶는다 ('happy day')

> 큰 따옴표 3개를 연속 사용해서 묶는다 ('''happy day''')

> 작은 따옴표 3개를 연속 사용해서 묶는다 ('''happy day''')


왜 문자열을 출력하는데 저렇게 다양한 방법들이 존재할까?


각 방법들의 사용법을 알아보도록 하자


가끔 우리는 "(큰따옴표)나 '(작은 따옴표)를 출력해야 할 때가 생긴다.

Ex) print("제로스가 "파이썬은 정말 착한 언어입니다" 라고 말했다")


만약 위와 같이 작성 할 경우 에러가 발생한다, 이뉴는 문자열의 시작과 끝은 항상 큰, 작은따옴표로 감싸주어야하는데 위와같이 코드를 작성 할 경우


print("제로스가" 파이썬은 정말 착한 언어입니다 "라고말했다") 처럼 빨간 부분을 감싸주지 못해 저부분을 파이썬 컴파일러는 읽을 수가 없었던것이다


이럴 경우 어떻게 해야할까?

방법은 간단하다 print('제로스가 "파이썬은 정말 착한 언어입니다" 라고 말했다') 이런식으로 작은따옴표를 사용 해 문자열을 감싸주면 해결된다

반대로 문자열 안에 '(작은따옴표)를 사용하고 싶을 경우 print("제로스가 '파이썬은 정말 착한 언어입니다' 라고 말했다") 이런식으로 문자열 안에 '(작은따옴표)를 포함시키면서 "(큰따옴표)로 감싸주면 해결된다


그럼 '''(작은따옴표 3개)와 """(큰따옴표 3개)는 언제사용하는것일까?

바로 여러 줄의 코드를 작성 할 때 사용한다, 이것또한 작은따옴표와 큰따옴표의 차이는 위와 같다


# Code

print("[문자열 만드는 4가지 방법]")
print('1. happy day')
print("2. happy day")
print('''
3. happy
day''')
print("""
4. happy
day""")


# 실행 결과

[문자열 만드는 4가지 방법]
1. happy day
2. happy day

3. happy
day

4. happy
day





이 댓글을 비밀 댓글로

파이썬의 변수

Posted by Root @ Hacker Xeros
2018.03.21 05:13 프로그래밍/ㄴ Python

변수(Variable)란?

1. 값을 저장하는 공간

2. 파이썬에서의 변수는 '객체'를 가리킨다

> 다른 프로그래밍 언어에서는 선언된 변수 안에 값을 짚어넣는 반면, 파이썬은 그저 값을 가리키는 용도로 사용한다


변수에 값을 대입하는 여러가지 방법


1. 변수에 값을 하나씩 대입해준다


# Code

a = 1 # a는 변수, a에 1을 대입
b = 2
c = 3
print(a, b, c)


# 실행 결과

> 1 2 3


2. 변수에 값을 한번에 대입하는 방법

# Code

a, b, c = 4, 5, 6
print(a, b, c)


# 실행 결과


> 4 5 6

이 순간 변수 a, b, c에 들어있던 1, 2, 3이라는 값과는 연결고리가 끊어지고 변수 a, b, c에는 4, 5, 6 이라는 새로운 값이 저장된다.


3. 변수에 모두 같은 값을 대입하는 방법

# Code

a = b = c = 7
print(a,b,c)


# 실행 결과

> 7 7 7

위 코드를 이해하기 쉽게 풀어쓰면 7은 c이며, c는 b이며 b는 a이다 따라서 모두 7, 7, 7 이라는 값을 각 변수에 저장하게 된다


4. 변수에 값 대입 (변수에 값을 하나씩 대입하는것과 같은 원리)

# Code

a = 8; b = 9; c = 10
print(a,b,c)


# 실행 결과

> 8 9 10

1번 방법과 같은 방식이다 하지만 다른 점이 있다면 1번의 코드를 한 줄로 적었다는것이다, 지난 파이썬 기본문법 에서 설명했던 ;(세미콜론)을 사용하는 방법이다 ;(세미콜론)을 사용하여 식의 종결의 끝을 알려준다면 두 줄 이상에 걸쳐 적을 코드를 한 줄에 적을 수 있다 하지만 필자는 해당 방법보다는 1번 방법을 사용하는것을 추천한다 이유는 간단하다, "가독성" 떄문이다


5. 변수끼리 값 교체

# Code

a, b = b, a
print(a,b,c)

a,b,c = c,a,b
print(a,b,c)


# 실행 결과

> 9 8 10
> 10 9 8

변수끼리 값을 교체할 수 있는것은 파이썬의 강력한 기능 중 하나이다


변수에 값을 저장하는것이 아닌 가리키는 파이썬

위에서 말했다싶이 파이썬은 다른 언어와는 다르게 변수에 값을 저장하는것이 아니라 단순히 값을 가리키는 용도로 사용된다

# Code

a = 1
b = 1
print( id(1) )
print( id(a) )
print( id(b) )


# 실행 결과

1689346272
1689346272
1689346272


위와 같이 1의 id값은 1689346272 라는 것을 알 수 있다, 그런데 1이라는 값을 갖고있는 a, b 변수 모두 1과 같은 1689346272 이라는 id를 가지고 있는 것을 알 수 있다


변수명의 규칙

1. 변수명은 한글, 영어로 작성 가능하다, 하지만 영어와 언더바 조합으로만 변수명을 작성하는것이 백번 낫다
2. 변수명에 특수문자는 _(언더바)만 사용가능하며 숫자는 사용할 수 있지만 첫번째 글자로는 안된다
3. 변수명에 사용되는 영어는 대소문자를 구분하여 사용하여야 한다 (Ex. A 변수와 a 변수는 서로 다른 변수이다)
4. 변수명에 예약어는 사용할 수 없다 (import와 같은 언어 내부의 기능이 있는 단어)
5. 4번과 비슷하다, 변수명에 함수는 사용할 수는 있지만 그럴 경우 해당 함수가 기능상으로 절대 동작하지 않으므로 절대 사용하면 안된다 (Ex. pint()함수)
# 4, 5번 설명
print()
print("재미나는 파이썬")

print = "정말인가요?" # 이 순간 print는 변수화가 되었다
#print("재미있어요") # print() 함수는 사용할 수 없다
del(print) # 변수화된 print 제거
print("네 재미있어요") # 제거 후부터는 다시 print()함수를 사용할 수 있다

# import = "하하하" # 오류발생 : 예약어는 실행조차 되지 않음!

작성 요령

1. 변수명을 작성할 때는 이름만 봐도 알 수 있게 '의미'를 부여한다
> 여러 단어가 조합된 경우, _언더바로 구분 (Ex. my_name = "제로스", my_age=19)
> 기본적으로 소문자를 사용한다







이 댓글을 비밀 댓글로

파이썬의 Print()함수와 기본문법 2

Posted by Root @ Hacker Xeros
2018.03.21 05:12 프로그래밍/ㄴ Python

Print() 함수에서 덧셈 기호 (+)의 용도


# Code

print(1+1) # 숫자 + 숫자 -> 덧셈 연산
print("1"+"1") # 문자열 + 문자열 -> 문자열 연결
print("1" "1") # 문자열 끼리는 기호 없이 연결 가능


# 실행 결과

> 2
> 11
> 11


이 부분을 보고 우리는 몇가지를 알 수 있다.

print()함수 안에 숫자+숫자를 사용 할 경우 함수 안의 숫자를 계산해서 나온 결과값을 출력한다, 하지만 "1"+"1"과 같이 콤마 안에 써있는 숫자는 문자형으로 인식하고

"1"이라는 문자에 "1"이라는 문자를 연결 해 "11" 이라는 결과값을 출력하는것을 볼 수 있다.


문자열을 "연결" 해줄때는 "문자열 a" + "문자열 b" 또는 "문자열a""문자열b" 라는 코드를 작성해 "문자열a문자열b" 라는 값을 출력할 수 있다


그렇다면 아래 방법과도 같이 코드를 작성할 수 있지 않을까?


# Code

print("1" + 2)
print("1" 2)


불가능하다, 에러가 발생해 컴파일조차 진행할 수 없다(문자열 + 숫자 형식은 사용할 수 없다.)


문자열 + 숫자 형식은 사용할 수 없다.


그럼 문자열 과 숫자를 하나의 print() 함수에서 사용하고 싶을 떈 어떻게해야할까?


지난 파이썬의 Print()함수와 기본문법 1 포스팅의 ,(콤마) 를 사용해 나열하면 된다


# Code

print(2018, "년 입니다.", sep="")
# print()함수에서 콤마(,)로 나열하면 무엇이던 사용가능하다.


# 실행 결과

> 2018년 입니다.




이 댓글을 비밀 댓글로

파이썬의 Print()함수와 기본문법 1

Posted by Root @ Hacker Xeros
2018.03.21 05:11 프로그래밍/ㄴ Python

print() 함수란?

모든 프로그램이 마찬가지이지만 Print 함수는 앞으로 자주 사용하게 될 함수이다, 프로그램에 있어 사용자가 읽을 수 있도록 인터페이스 창에 어떠한 문자를 출력하기 위해 Print 함수를 사용한다

> 인터페이스 창(화면) : IDLE이나 콘솔(CMD)
> 함수 : 특정 행위를 하기 위해 만들어놓은 기능


기본 출력
간단한 예시로 Hello world!를 출력해보자
# Code

print("hello world!")
print(1)


# 실행 결과

> hello world!
> 1

print("문자열") 또는 print(숫자)를 사용해 문자열 또는 숫자를 출력할 수 있다

숫자를 출력할때는 ' (따옴표)나 " (큰따옴표)를 사용하지 않아도 되지만 문자열을 출력할 때는 사용하여야한다



숫자 계산 후 출력

Print함수 내에서 값을 계산하여 출력하는것또한 가능하다

# Code

print(1 + 2)


# 실행 결과

> 3



세미콜론(;)을 사용해 두 줄의 코드를 한 줄에 코딩

Print함수 내에서 여러가지 숫자 또는 문자를 출력하는것또한 가능하다

# Code

print(1); print("안녕하세요")


# 실행 결과

> 1
> 안녕하세요



Print함수에서 여러가지 숫자 또는 문자를 ,(콤마)로 구분해 출력

# Code

print(1,2,3,"A","B","C")


# 실행 결과

> 1 2 3 A B C



Print 함수에서 기본 적용되는 구분기호와 마지막기호를 변경

위의 과정까지 따라왔더면 한번쯤은 print 함수를 연이어 사용했을때 자동 줄넘김이 되는것을 변경할순없을까? 라는 생각을 해볼 수도 있다,

그때 사용하는것이 sep 과 end이다.


우선 코드부터 살펴보도록 하자

# Code

print(1,2,3,sep="") # 기본 적용되는 공백을 빈문자로 지정
print("안녕",end="") # 출력이 끝난 후 기본개행을 빈문자로 지정
print("하세요")

만약 위와 같이 코드를 작성하지 않고

# Code

print(1,2,3) # 기본 적용되는 공백을 빈문자로 지정
print("안녕") # 출력이 끝난 후 기본개행을 빈문자로 지정

위와 같이 소스코드를 작성하게 된다면

# 실행 결과

> 1 2 3
> 안녕
> 하세요

이런식으로 123이 아닌 1 2 3으로, 안녕하세요가 아닌 안녕\n하세요로 출력이 된다


sep과 end 에 대해 조금 더 자세하게 설명해보자면

sep 은 print함수에서 여러개의 숫자를 ,(콤마)로 구분 해 출력할때 콤마 사이사이에 종단을 지정해주며 기본값은 " "(공백)이다

end 는 print함수가 종결될 때 함수 끝의 종단을 지정해주며 기본값은 "\n"(개행)이다






이 댓글을 비밀 댓글로

파이썬의 주석처리

Posted by Root @ Hacker Xeros
2018.03.21 05:09 프로그래밍/ㄴ Python

파이썬에는 두가지 형태의 주석이 있다

블록주석
블록주석은 다음과 같이 작성한다

''' 주석이란? 1. 소스에 설명을 추가하는 것 2. 실행 시 무시된다.(프로그램 수행에 영향이 없다) 3. 여러 줄 주석 : 작은따옴표 3개 또는 큰따옴표3개로 묶는다 '''

'''가 블록주석의 시작이고 '''가 블록주석의 끝이다.


보통 블럭주석은 여러줄의 설명을 주석처리 할 때 사용한다, 주석 처리된 부분은 프로그램 수행에 있어 영향을 주지 않는다


라인주석

라인주석은 다음과같이 작성한다

# 뒤부터는 주석처리
# 기호를 이용하면 #기호가 시작된 곳부터 해당 라인의 끝까지가 주석문이 된다. # 보통 코드의 특정부분(한 라인)에 대한 설명이 필요할 경우
# 해당 라인에 위와 같은 라인 주석을 많이 사용한다.

주석이 적은 코드, 많은 코드, 어떤것이 좋은 코드인가?

사실 필자의 생각은 주석이 많거나 적다고 해서 좋거나 좋지 못한 코드가 아니라고 생각한다, 주석은 프로그램의 코드를 설명하기 위한 좋은 방법 중의 하나이고 사실 직관적으로 주석없이 이해할 수 있는 코드가 좋겠지만 프로그램 소스코드의 길이가 길어지면 길어질수록 주석또한 많아질수밖에 없는것이 당연한것이다


Clean code that works


"동작하는 깨끗한 코드", 이상적인 코드라고 할 수 있겠다.


하지만 내용도 불분명하고 도저히 이해불가한 코드에 주석은 필수적이다. 또는 헷갈리기 쉬운 부분도 주석은 꼭 필요하다.

주석은 이해하기 어려운 곳에 주로 작성되기 때문에 "주석이 필요하다면 좋은 코드가 아니다" 라는 말이 나온 것이다

하지만 Simple Code를 작성할 수 없는 입장이라면 주석은 어쩔 수 없이 꼭 필요하다.


적절하지 못한 주석

다음의 예처럼 누구나 알고있는 뻔한 내용에 주석을 다는 것은 소스코드를 지저분하게 만들뿐이다
a++ # a의 값을 증가

또 한가지 주석 사용 시 주의할 점이 있다. 그것은 주석의 내용도 소스코드가 변경되면 업데이트 되어야 한다는 점이다.

소스코드는 변경이 되었는데 주석문은 수정을 안 하는 경우가 종종 있다.

귀찮아서, 바빠서 그럴수도 있지만 소스코드에 달린 엉뚱한 주석문은 소스코드를 읽는 다른 이에게 엄청난 혼란을 주게 된다.


주석을 사용하는 또 다른 이유

주석을 사용하는 또 다른 이유는 현재 작성한 소스코드의 특정 부분을 잠시 사용하지 않게 만들고 싶은 경우에도 사용한다.
예를들어 기존의 코드보다 좀 더 업그레이드 된 코드를 작성하고 싶은 경우 기존 코드를 모두 삭제하고 시작하는 것이 아니라 잠시 주석처리하고 새로운 코드를 만드는 것이 더 유리하다. 주석처리한 기존코드를 참고할 수도 있고 최악의 경우에 기존의 코드로 쉽게 돌아갈 수 있기 때문이다 (주석만 해제하면 된다)








이 댓글을 비밀 댓글로

파이썬 설치

Posted by Root @ Hacker Xeros
2018.03.21 05:08 프로그래밍/ㄴ Python

파이썬 3.x.x 버전대 설치




1. https://www.python.org/downloads/ 접속

2. 해당 페이지에서 Download Python 3.x.x 버튼을 클릭한다

3. 다운로드되는 설치파일을 실행해 설치해주면 된다






이 댓글을 비밀 댓글로

프린트스크린 키를 조금 더 유용하고 편리하게 사용해보자

Posted by Root @ Hacker Xeros
2018.03.21 05:04 컴퓨터 활용 | 유틸/ㄴ 컴퓨터 사용 팁

프린트스크린 키를 조금 더 유용하고 편리하게 사용하기

Xeros입니다

가끔씩 컴퓨터를 사용하시다보면 화면 캡쳐를 해야될 때가 있는데요 이럴때 윈도우에 내장되어있는 "캡처 도구" 라는 프로그램을 사용하셔도 되고

외부 캡처 프로그램을 따로 다운로드 받으셔서 사용하셔도되는데요 이런 번거로움과 짧은 순간순간을 빠르게 저장해야될 때가 있습니다

이럴 때 주로 키보드의 Print Screen 단축키를 이용하는데요


(사용하시는 키보드에 따라 키의 위치와 이름이 조금씩 다릅니다 하지만 대부분 PrtScn이나 Print Screen 이런식으로 적혀있습니다)



프린트 스크린 키를 누르시면 클립보드에 현재 화면이 복사됩니다

이제 복사된 사진을 카카오톡 대화방에 Control + V 커맨드로 붙여넣기하거나

그림판을 실행시키신 후 마찬가지로 Control + V 커맨드로 붙여넣기 하시면 됩니다


그런데 이 방식을 사용하면 저장이 되지 않고 단순히 클립보드에만 임시로 저장이 되기때문에 순간 순간의 사진들을 저장하셔야 하는분들께는 불편하실 수 있습니다

그래서 이게 불편하신 분들은 아래 소개드리는 방식을 사용하시면 보다 편리하게 순간 순간을 저장하실 수 있습니다


키보드의 윈도우 버튼 + Print Screen 커맨드를 사용하시면

C:\Users\사용자이름\Pictures\Screenshots

즉 내PC > 사진 > 스크린샷 경로에 

이런식으로 스크린샷들이 바로바로 저장됩니다


추가적으로 다중모니터를 사용하시거나 특정 영역을 캡쳐하시고싶으신분들이 계실겁니다

그런분들은

현재 보고있는(캡쳐하고싶은) 창을 마우스로 한번 클릭해주신 후 Alt + Print Screen 커맨드를 사용하시면 현재 영역만 깔끔하게 출력됩니다


이 댓글을 비밀 댓글로

우분투 16.04, 17.10 버전에 웹서버(APM) 설치하기

Posted by Root @ Hacker Xeros
2018.03.21 05:02 운영체제 | 서버관리/ㄴ 리눅스

우분투 리눅스 16.04 / 17.10 버전에서 웹서버 구동, 아파치, PHP, MYSQL (APM) 설치하기


안녕하세요 Xeros입니다 오늘은 우분투 리눅스에 APM 을 전부 설치 즉 웹서버를 구동시켜볼건데요


우선 설명에 들어가기 앞서 정리된 영상을 훑어보시고 중요한 부분은 아래 설명에서 확인하시면 좋을 것 같습니다



설치 방법 설명입니다



1. 아파치를 설치해봅시다

apt-get install apache2



2. mysql을 설치해봅시다

apt-get install mysql-server mysql-client



3. php를 추가해봅시다

apt-get install php libapache2-mod-php php-xml php-gd php-mysql


모든 설치가 완료되었다면

vi /etc/apache2/apache2.conf 에 들거가 키보드 방향키로 맨 마지막줄로 이동 한 뒤 키보드의 insert 키를 사용하여


# Enable Phpmyadmin

Include /etc/phpmyadmin/apache.conf

위 두 줄을 추가해주세요



모든 작업이 완료되었다면 순차적으로 아래 커맨드를 이용해 mysql과 apache의 서비스를 재시작해줍시다

service mysql restart

service apache2 restart




이 댓글을 비밀 댓글로

누구나 쉽고빠르게 웹서버 구축하기 (윈도우)

Posted by Root @ Hacker Xeros
2018.03.21 05:02 운영체제 | 서버관리/ㄴ 윈도우

윈도우 사용자라면 누구나 3분안에 웹서버 구축


안녕하세요 Xeros입니다




자세한 설치방법은 위 영상에 있습니다


1.오토셋 10버전(최신버전)을 다운로드받아주세요

2.다운로드 받으시고나서 웹서버와 Mysql 서버를 실행해주시면 설치와 구동 완료입니다


간혹 정상 구동이 안되시는분들이 계신데 그런 경우 오토셋 설치 디렉터리에 진입하셔서 vc redist라는 설치프로그램을 사용하여 패키지를 설치하시면 오류는 사라집니다

이 댓글을 비밀 댓글로

아주 간단하게 웹서버 파비콘 설정하기

Posted by Root @ Hacker Xeros
2018.03.21 05:00 운영체제 | 서버관리

아주 간단하게 웹서버 파비콘 설정하기

안녕하세요 Xeros입니다


정말 너무나도 간단하게 웹서버 파비콘 설정하는 방법을 알아볼텐데요 정말 너무 간단합니다


우선 파비콘이란?


이런식으로 웹사이트에 접속했을때 좌측 상단에 뜨는 아이콘을 말합니다


설정방법은 매우 간단합니다

이런식으로 파비콘이 될 ico 확장자 이미지파일을 웹서버 루트디렉터리(웹서버 가장 앞단 디렉토리)에 favicon.ico 파일명으로 넣어주시기만 하면 됩니다..

이 댓글을 비밀 댓글로

누구나 쉽게 카카오톡 챗봇 개발하기 1

Posted by Root @ Hacker Xeros
2018.03.21 04:57 프로젝트/ㄴ 카카오톡 챗봇 개발



카카오톡 챗봇 개발하기 1장

안녕하세요 Xeros입니다


많은분들이 요청해주셔서 이번에는 카카오톡 챗봇을 만드는 방법에 대해서 써보려고 합니다

하나의 프로젝트로 진행해보려고 하는데요 문법, 기술설명을 하는것도 좋지만 사용 언어가 Js인만큼 문법과 프로그래밍 기초 지식은 다른곳에서 얻으시리라 믿고

문법에 중요도를 두는것이아니라 하나의 봇을 완성시키는식으로 강의를 써내려갈 생각입니다


흔히들 챗봇이라고 하면 카카오톡 플러스 친구를 떠올리시는데요, 제가 만드는 챗봇은 살짝 이와 다릅니다

플러스친구의 챗봇은 일반 채팅방에 접근이 불가능하지만 제 방식의 챗봇과 같은 형태로 만드신다면 일반 사용자 계정처럼 만들어지며 당연히 카카오톡 오픈채팅, 일반 단체채팅, 1대1 개인채팅 등 여러분야에서 사용하실 수 있습니다



해당 영상에서 기본적인 챗봇 설정과 카카오톡 부계정 생성까지 전부 설명되어있습니다


카카오톡 챗봇 기본설정은 위 영상을 보시고 하시면 될것같습니다 딱히 코딩을 하지 않았기때문에.. 설치하는 방법은 말로 설명듣기보단

영상으로 듣는이 훨씬 간결하고 수월하실 것 같습니다


본격적인 코딩은 다음 강좌때부터 진행하도록 하겠습니다.


이 댓글을 비밀 댓글로

티스토리 툴바