분류 전체보기
-
[Python] Tip - 커스텀 컨테이너 타입은 collections.abc의 클래스를 상속받아 만들기언어/파이썬 & 장고 2017. 10. 15. 18:09
파이썬 프로그래밍의 대부분은 데이터를 담은 클래스들을 정의하고 이 객체들이 연계되는 방법을 명시하는 일입니다. 모든 파이썬 클래스는 일종의 컨테이너로, 속성과 기능을 함께 캡슐화합니다. 파이썬은 데이터 관리용 내장 컨테이너 타입(리스트, 튜플, 세트, 딕셔너리)도 제공합니다.시퀀스처럼 쓰임새가 간단한 클래스를 설계할 때는 파이썬의 내장 list 타입에서 상속받으려고 하는 게 당연합니다. 예를 들어 멤버의 빈도를 세는 메서드를 추가로 갖춘 커스텀 리스트 타입을 생성한다고 가정합니다.class FrequencyList(list): def __init__(self, members): super().__init__(members) def frequency(self): counts = {} for item in ..
-
[Django] 존재하는 테이블 스키마 Django로 복사 방법언어/파이썬 & 장고 2017. 5. 11. 15:24
사전작업virtualenv로 django를 설치한 경우Pycharm 내의 터미널을 사용하실 경우 선택된 interpreter에 따라 자동으로 변경되므로 아래와 같은 작업을 할 필요가 없습니다.예시) djangoDjango라는 virtualenv를 생성한 경우$ cd virtualenv $ source bin/activate (virtualDjango) $ # virtualDjango라는 virtualenv 터미널에 접속한 상태 # virtualenv 접속해제는 deactivate $ 프로젝트로 이동터미널settings 파일이 쪼개져 있지 않은 경우$ python3 manage.py inspectdb > models.py (아무이름이나 가능)settings 파일이 쪼개져 있는 경우$ python3 mana..
-
[Golang] golang에서는 WSGI를 사용하지 않은 이유언어/Golang 2017. 4. 19. 16:20
일단 WSGI는 파이썬에만 해당이 됩니다. Go에는 3가지 옵션이 있습니다. (실제로는 4가지지만 일반적으로 CGI는 높은 부하로 인해 뺐습니다.)Go의 표준 라이브러리에 내장 된 HTTP 서비스 기능.이 경우 앱은 독립 실행형 서버입니다. 가장 간단한 설정 일 수도 있지만 다음과 같은 문제가 있을 수 있습니다. 다운그레이드 권한으로 권한이 부여된 포트(1024 아래의 포트, 예를들어 80포트)를 가진 앱을 실행하려면, 특별한 wrapper나 POSIX 기능을 사용해야합니다.연결을 끊지 않고 재배포를 하려면 goagain과 같은 다른 wrapper가 필요합니다.웹 서버 형태의 reverse HTTP proxy 문제가 존재대부분 독립 실행형의 다양한 문제를 해결하지만, 그래도 전체 HTTP 트래픽을 이리저..
-
WSGI, WAS, CGI 이해서버 2017. 4. 19. 11:42
개요각 언어마다 WAS와 같이 서버 언어를 처리하도록 하는 동작이 각기 상이합니다. 아래는 하나씩 설명하며 각각 비교를 설명합니다.웹 서버인터넷을 통해서 요청된 웹 컨텐츠(이미지, html, 등)의 전달을 도와주는 하드웨어와 소프트웨어를 말합니다. 웹서버는 기본적으로 '정적'입니다. 클라이언트가 HTTP 리퀘스트를 통해 리소스를 요청하면, 그 리소스를 그대로 보내주는게 웹 서버의 역할입니다.CGI(Common Gateway Interface)웹 서버에서 어플리케이션을 작동시키기 위한 인터페이스입니다. 정적인 웹서버를 동적으로 기능하게 하기 위해서 등장하였습니다. 서버 프로그램과 외부 프로그램 간의 인터페이스가 바로 CGI입니다. 근래에는 웹 서버의 프로세스로서 인터프리터를 상주시킴으로써, CGI로부터 프..
-
호스트 네임서버 2017. 4. 19. 11:21
호스트 네임은 컴퓨터의 이름이고 도메인 네임은 컴퓨터 그룹의 이름입니다. 예를 들면 호스트 네임은 사람의 이름으로, 도메인 네임은 사람의 성으로 이해하면 됩니다. [홍길동]과 [홍기산]은 같은 '홍'씨 족의 사람들이지만 '길동'과 '기산'이라는 이름으로 구분됩니다. [장길산]과 [김길산]은 같은 '길산'이라는 이름을 사용하지만 '장'과 '김' 이라는 다른 성을 사용함으로써 구분됩니다. 여기서 '홍', '장', '김' 과 같은 성을 도메인 네임으로, '길동', '기산', '길산' 과 같은 이름을 호스트 네임으로 이해하면 됩니다. tom 과 tom.sunjin2.net과 sunjin2.net 에서 tom 은 호스트 네임이 되며, sunjin2.net 은 도메인 네임이 됩니다. kin.naver.com 과 m..
-
스니핑보안 & 보안 2017. 4. 12. 16:24
스니핑은 네트워크 패킷을 가로채서 분석하는 해킹기법입니다. 아래는 파이썬을 사용한 간단한 스니핑 프로그램 예제입니다.from socket import * import os def sniffing(host): # 아래 값들은 소켓을 생성할 때 프로토콜을 지정하는 세 번째 인자로 사용 # 윈도우는 프로토콜에 관계없이 들어오는 모든 패킷을 가로채기 때문에 IP를 지정해도 무관하지만 유닉스나 리눅스는 ICMP를 가로채겠다는 것을 명시적으로 표시해야함 if os.name == 'nt': socket_protocol = IPPROTO_IP else: socket_protocol = IPPROTO_ICMP # socket_protocol로 지정된 프로토콜을 이용하는 Raw 소켓을 만들고 호스트와 바인드 sniffer..
-
패스워드 크래킹보안 & 보안 2017. 3. 28. 21:22
1. 유닉스(리눅스) 패스워드 크래킹유닉스나 리눅스는 기본적으로 사용자의 패스워드를 MD5 해시값으로 변경하여 관리하고 있습니다. 예를 들어, abcd 아이디의 패스워드가 1234라고 하면 1234에 대한 MD5 해시값인 81 dc 9d db 52 d0 4d c2 00 36 db d8 31 3e d0 55를 사용합니다. 그런데 test 아이디를 가진 사람의 패스워드도 1234라고 하면 문제가 발생할 수도 있습니다. abcd 아이디를 가진 사람이 우연히 test의 비밀번호 MD5값이 동일하다는 것을 안다면 비밀번호가 1234라는 것을 알 수 있기 때문입니다. 그래서 이런 문제를 해결하기 위해 salt라 부르는 2개의 문자를 원래 패스워드에 추가한 후 MD5 해시를 구성하는 매커니즘을 사용하고 있습니다. 다..
-
알려진 평문 공격 (기지 평문 공격) - Known-plaintext attack보안 & 보안 2017. 3. 27. 21:15
기지 평문 공격은 공격자가 평문과 그를 암호화한 암호문을 모두 알고 있을 때 사용할 수 있는 암호 해독 기법들을 가리킵니다. 이 경우 이미 알고 있는 평문을 크립(crib)이라고 부르기도 합니다. 이미 알고 있는 평문과 암호문을 바탕으로 비밀 키를 알아내기 위해 사용합니다. 암호해독가가 암호를 해독하기 위해 의미 없어보이는 암호문만 보아서는 많은 정보를 얻기 힘들지만 암호문 안에 이미 알고 있는 평문이 포함되어 있다면, 그 사실이 암호문과 평문 사이의 관계를 추정하기 위한 단서가 될 수 있습니다.AES 등의 현대 암호체계는 기지 평문 공격의 영향을 받지 않는 것으로 알려져 있지만 예전 버전의 ZIP 파일 포맷에 사용되는 PKZIP 스트림 암호화 알고리즘은 기지 평문 공격에 취약합니다. 이 알고리즘으로 암..