Top

유쾌한 파이썬 [데이터 수집·분석·통계·은닉·암호화 기술]

  • 원서명Python for Secret Agents (ISBN 9781783980420)
  • 지은이스티븐 로트(Steven F. Lott)
  • 옮긴이오현석
  • ISBN : 9788960777880
  • 24,000원
  • 2015년 11월 30일 펴냄
  • 페이퍼백 | 260쪽 | 188*235mm
  • 시리즈 : acorn+PACKT

책 소개

요약

파이썬은 배우기 쉽고 활용도가 높은 언어이지만, 처음 파이썬을 배운 사람이라면 그 언어를 어떤 곳에 활용할 수 있을지 궁금하기 마련이다. 이 책에서는 가상의 비밀 요원이 파이썬을 활용해 기초적인 데이터 인코딩과 디코딩, 암호 복구, 이미지 처리, REST적인 서비스 사용, 지리정보 처리, 통계 처리 등을 수행하는 과정을 흥미진진하고 재미있게 보여준다. 그 과정에서 파이썬이 제공하는 다양한 기능을 실제적인 문제 해결에 어떻게 활용할 수 있는지를 배울 수 있다. 이 책을 읽고 나면 파이썬을 다양한 데이터 처리 분야에 활용하는 기본적인 지식을 갖출 수 있을 것이다.

이 책에서 다루는 내용

■ 파이썬을 사용해 도구를 만들고 문제를 해결하는 방법
■ 이미지 파일을 다루는 방법과 스테가노그래피를 사용해 메시지를 이미지에 인코딩하는 방법
■ EXIF나 압축 파일에 들어있는 파일과 디렉터리 목록 등 파일에 감춰진 정보를 수집하는 방법
■ 웹에서 데이터를 가져와서 필터링하고 분석할 수 있는 애플리케이션을 제작하는 방법
■ 파이썬 모듈, 라이브러리, 애플리케이션을 만드는 방법
■ 파이썬 환경에 특별한 패키지를 추가해 자신만의 환경을 구축하는 방법
■ HTTP나 FTP 네트워크 프로토콜을 사용해 데이터를 가져오는 방법

이 책의 대상 독자

재미있는 프로젝트를 통해 파이썬 언어를 배우고 싶은 초보자들을 위한 책이다. 프로그래밍과 통계에 대한 기초 지식이 있다면 이 책의 모든 내용을 쉽게 이해할 수 있다.

이 책의 구성

1장, ‘스파이 활동 도구’에서는 파이썬을 설치하고 사용하는 기초를 다룬다. 요원들이 외환 환전을 처리하도록 돕는 스크립트를 작성하고, 암호를 잃어버린 ZIP 압축 파일을 복구하는 방법을 배울 것이다.

2장, ‘정보 획득’에서는 파이썬을 사용해 여러 종류의 파일 서버에서 정보를 뽑아내는 방법을 살펴본다. 요원들은 서로 다른 인터넷 프로토콜을 다루는 법과 REST(Representational State Transfer), 대표 상태 전송 프로토콜을 사용해 웹 서비스와 상호작용하는 방법을 배울 것이다. 이런 기법의 일환으로 비트코인과 같은 암호 화폐(cryptocurrency)를 다루는 기법도 배울 것이다.

3장, ‘스테가노그래피를 사용한 비밀 메시지 은닉’에서는 Pillow 도구를 사용해 이 미지를 다루는 방법을 보여준다. Pillow를 사용하면 미리보기 이미지를 만들 수 있고, 이미지를 변환하고, 잘라내고, 개선할 수 있다. 또한 이미지 파일에 메시지를 비밀리에 심는 스테가노그래피(steganography) 기법도 살펴볼 것이다.

4장, ‘침투, 은신처, 접선, 기지’에서는 지오코딩(geocoding)과 지오로케이션(geolocation)에 대해 자세히 살펴볼 것이다. 웹 서비스를 사용해 주소를 위도와 경도로 바꾸는 방법이 이에 들어간다. 또한 위도와 경도를 다시 주소로 바꾸는 방법도 배울 것이다. 해버사인(haversine) 공식을 사용해 두 장소 간의 거리를 제대로 계산하는 방법을 살펴볼 것이다. 또한 지리적 위치 정보를 저장하거나 통신시 사용하는 용량을 줄이기 위해 사용하는 몇 가지 코딩 방법도 볼 것이다.

5장, ‘스파이 마스터의 상세 분석’에서는 기본적인 데이터 분석에 파이썬을 사용하는 방법을 살펴본다. 좋은 요원은 단순히 사실과 숫자만을 나열하지 않는다. 좋은 요원은 어떤 데이터가 사실을 반영하는지 확인하기 위해 충분한 분석을 수행한다. 데이터 집합 간의 상관관계를 검증할 수 있다면 귀중한 정보 자산이 될 수 있다.

저자/역자 소개

지은이의 말

모든 비밀 요원이나 스파이에게는 제대로 된 도구와 장치가 필요하다. 요원의 임무가 데이터를 수집하는 것이라면, 고성능의 데이터 처리가 필요하다. 이 책은 가상의 비밀 요원을 설정해서 요원 여러분에게 본부가 요구하는 데이터를 수집하고, 분석하고, 통신하는 과정에서 도움이 될 수 있는 다양한 정보 처리 도구를 제공할 것이다.
파이썬을 사용하면 요원들은 간단한 스크립트를 사용해 데이터를 수집하고, 복잡한 계산을 수행하고, 유용한 결과를 생성할 수 있다. 요원들은 파이썬을 사용해 로컬 파일이나 HTTP 웹서버, FTP 파일 서버로부터 데이터를 끄집어 낼 수 있다.
파이썬에는 다양한 추가 패키지가 있다. 이 책에서는 복잡한 이미지 변환과 처리를 제공하는 Pillow와 HTML 웹페이지로부터 데이터를 추출하도록 돕는 BeautifulSoup를 살펴볼 것이다. 다른 필요가 있는 요원이라면 파이썬 자연어처리 키트(NLTK, Python Natural Language Toolkit), 뉴메릭 파이썬(NumPy, Numeric Python), 또는 사이언티픽 파이썬(SciPy, Scientific Python)을 살펴봐야 할 수도 있다.

지은이 소개

스티븐 로트(Steven F. Lott)

컴퓨터가 크고 비싸고 드물던 1970년대부터 프로그래밍을 해왔다. 소기업부터 대기업까지 수많은 프로젝트에서 계약직 소프트웨어 개발자로 일해 왔으며, 파이썬을 사용해 10년 넘게 비즈니스 문제들을 해결해 왔다.
특히 데이터를 멋지게 표현하는 데 능숙하다. 또한 팩트출판사에서 펴낸 『Mastering Object-oriented Python』의 저자이기도 하다.
현재는 미국 동부지방 여기저기에서 살아가는 디지털 유목민이다. 기술 블로그 http://slott-softwarearchitect.blogspot.com을 운영 중이다.

옮긴이의 말

파이썬은 그 간결성과 특유의 표현력으로 많은 사람에게 꾸준히 사랑을 받고 있다. 빅데이터 시대에 각광받는 언어 중 하나로, 오늘날 C, C++, 자바 다음으로 많이 사용되는, 프로그래머가 꼭 알아야 하는 언어가 되어가고 있다.
언어를 배우는 것은 언어 문법과 라이브러리가 제공하는 기능을 익히는 기본적인 부분과, 언어를 활용해 여러 가지 문제를 해결하는 프로그램을 작성해 보는 실질적이고 응용적인 부분으로 나뉜다. 하지만, 실제로 프로젝트나 작업을 진행하면서 필요한 응용 기능을 구현하는 과정에서 기본기를 배울 수 있다면 흥미는 배가되고, 학습 후 곧바로 배운 바를 실전에 써먹을 수 있기 때문에 파이썬으로부터 얻는 이익도 더 커질 것이다. 이 책은 여러분이 안기부나 CIA와 같은 첩보 기관의 비밀 요원이라 가정하고, 각종 첩보 공작에 필요한 여러 가지 기술을 하나하나 구현해 나간다. 그 과정에서 다양한 파이썬 라이브러리 사용법과 기본 문법, 그리고 애플리케이션 개발 방법을 배울 수 있다.
코딩은 즐거움을 수반한다. 이 책을 읽으면서 암호화, 웹에서 파일 내려받기, 이미지 처리, 지리정보 인코딩/디코딩 등 일상생활의 다양한 문제를 해결하다 보면 코딩의 재미를 더 깊이 느낄 수 있으면서, 다양한 분야에서 활용할 수 있는 파이썬 프로그래밍 기초 지식을 쌓고, 향후 더 복잡하고 어려운 문제에 이를 적용할 수 있을 것이다. 여러분이 이 책을 통해 나와 같은 즐거움을 느끼고, 한 걸음 더 파이썬 프로그래밍의 세계에 발을 깊이 담글 수 있게 되길 바란다.

옮긴이 소개

오현석

KAIST에서 전산학 학사와 석사 학위(프로그래밍 언어 연구실)를 취득했다.
삼성메디슨, 비트앤펄스 등에서 UI 개발자와 개발 팀장을 지냈고, 호주에서 풀스택 개발자로 일하고 있다.
웹이나 모바일 등의 분야에서 값 중심의 프로그래밍을 통해 좀 더 오류 발생 가능성이 적고 유지보수가 편한 프로그램을 작성하는 방법과 이를 지원하는 여러 도구를 만드는 일에 관심이 많다.
『코어 파이썬 애플리케이션 프로그래밍 Core Python Applications Programming Third Edition』(에이콘, 2014)과 『Programming in Scala (Second Edition) 한국어판』(에이콘, 2014), 『파이썬 인 프랙티스』 등을 번역했다.

목차

목차
  • 1장 스파이 활동 도구
    • 작업에 필요한 기본 도구 구하기: 파이썬 3.3
      • 윈도우의 비밀
      • 맥 OS의 비밀
    • 추가 도구: 텍스트 편집기
      • 다른 개발 도구 설치
      • 파이썬 컴포넌트를 추가로 얻기 위한 도구 얻기
    • 도구 확인
      • 어떻게 멈출까?
      • help() 시스템 사용
        • 맥 OS와 GNU/리눅스의 비밀
        • 윈도우의 비밀
      • 도움말 모드 사용
    • 배경 소개: 수학과 수
      • 유력한 범인
      • 수의 상아탑
        • 정수
        • 유리수
        • 부동소수점 수
        • 십진수
        • 복소수
      • 수 이외의 것들
      • 값을 변수에 대입
      • 스크립트 작성과 출력
      • 사용자 입력 받기
        • 예외 처리
        • 루프와 재시도
    • 텍스트와 문자열 다루기
      • 수와 문자열 상호 변환
      • 문자열 파싱
    • 소프트웨어 구조화
    • 파일과 폴더 처리
      • 파일 만들기
      • 파일 읽기
      • 더 복잡한 논리적 조건 만들기
    • 문제 해결: 잊어버린 암호 복구
      • 말뭉치 읽기
      • ZIP 압축 프로그램 읽기
      • 무차별 검색 시도
    • 요약

  • 2장 정보 획득
    • 인터넷 데이터 접근
      • 배경 소개: TCP/IP 프로토콜
      • http.client로 HTTP GET 요청
      • 접속 시 클라이언트 정보 위조
      • 파이썬에서 FTP 사용
        • FTP로 파일 다운로드
        • FTP get() 함수 사용
      • HTTP, FTP, 파일 접근을 위한 urllib 사용
      • urllib을 사용해 FTP 접근하기
    • 파이썬으로 REST API 다루기
      • 간단한 REST 데이터 가져오기
      • 더 복잡한 REST 질의 사용
      • JSON으로 데이터 저장
    • 데이터 컬렉션 조직적으로 다루기
      • 파이썬 리스트 다루기
        • 리스트의 인덱스 연산 사용
      • 파이썬 튜플 사용
        • 제네레이터 식을 튜플의 리스트에 사용
      • 파이썬 사전 매핑 사용
        • 사전 접근 메소드 사용
      • 제네레이터 함수를 통한 시퀀스 변환
      • defaultdict과 Counter 매핑 사용
      • 파이썬 집합 사용
      • for 문과 컬렉션 사용
      • 컬렉션에 파이썬 연산자 적용
    • 문제 해결: 통화 환율
    • 요약

  • 3장 스테가노그래피를 사용한 비밀 메시지 은닉
    • 배경 소개: 다양한 형식의 파일 처리
      • 운영체제 파일시스템 다루기
        • glob
        • os
      • 간단한 텍스트 파일 처리
      • ZIP 파일 다루기
      • JSON 파일 다루기
      • CSV 파일 다루기
      • JPEG와 PNG 그래픽: 픽셀과 메타데이터
    • Pillow 라이브러리 사용
      • 필요한 지원 라이브러리 추가
        • GNU/리눅스의 비밀
        • 맥 OS X의 비밀
        • 윈도우의 비밀
      • Pillow 설치 및 설치 확인
      • 이미지 데이터 디코딩과 인코딩
      • 이미지 다루기: 크기 변환과 미리보기 이미지
      • 이미지 다루기: 잘라내기
      • 이미지 다루기: 화질 개선
      • 이미지 다루기: 필터링
      • 이미지 다루기: ImageOps
    • 스테가노그래피를 만드는 여러 방법들
      • 적색 채널 데이터 얻기
      • 유니코드 문자로부터 바이트 추출
      • 바이트와 비트 다루기
      • 비트 모으기
      • 메시지 인코딩
      • 메시지 디코딩
    • 변조 감지와 방지
      • 해시 합을 이용한 파일 검증
      • 키와 요약값 함께 사용
    • 문제 해결: 메시지 암호화
      • 메시지 풀기
    • 요약

  • 4장 침투, 은신처, 접선, 기지
    • 배경설명: 위도, 경도, GPS
      • GPS 장치의 한계 해결
      • 정치적 문제 해결: 경계, 영내, 관할, 인근지역
    • 지오코딩 서비스를 통해 현재 위치 찾기
      • 주소 지오코딩
      • 위경도 좌표 역지오코딩
    • 얼마나 가까운가? 어떤 방향에 있나?
      • 지오코딩과 해버사인 조합
    • 데이터를 압축해 격자 코드 만들기
      • GeoRef 코드 만들기
    • GeoRef 코드 디코딩
      • 메이든헤드 격자 코드 만들기
      • 메이든헤드 격자 코드 디코딩
    • NAC 만들기
      • NAC 디코딩
    • 문제 해결: 가까운 좋은 음식점
      • 간단한 파이썬 객체 만들기
      • HTML 웹 서비스 다루기: 도구
      • HTML 웹 서비스 다루기: 페이지 가져오기
      • HTML 웹 서비스 다루기: 테이블 파싱
      • 여러 열로 이루어진 데이터에서 간단한 파이썬 객체 만들기
      • 기존 파이썬 객체에 지오코드 정보 추가
      • 파이썬 객체에 위생 점수 넣기
      • 여러 부분 하나로 엮기
      • 위생 데이터 포털 다루기
      • JSON 문서로부터 간단한 파이썬 객체 만들기
      • 서로 다른 여러 부분 하나로 엮기
      • 마지막 단계
      • 데이터 이해: 스키마와 메타데이터
    • 요약

  • 5장 스파이 마스터의 상세 분석
    • 통계 요약 만들기
      • 원 데이터 파일 파싱
      • 평균 계산
        • 제네레이터 식 이해
      • 가운데 있는 값 찾기
      • 가장 흔한 값 찾기
    • 파이썬 모듈과 애플리케이션 만들기
      • 모듈 만들고 사용하기
      • 애플리케이션 모듈 만들기
      • 혼합 모듈 만들기
    • 자신만의 클래스와 객체 만들기
      • 클래스 정의 사용
    • 비교와 상관관계
      • 표준편차 계산
      • 표준점수 계산
        • 시퀀스와 이터러블 비교
      • 상관계수 계산
    • 고품질 소프트웨어 작성
      • 자신을 테스트하는 모듈과 테스트 실행 모듈 만들기
      • 더 복잡한 테스트 만들기
      • 독테스트 케이스를 클래스 정의에 추가하기
    • 문제 해결: 몇 가지 흥미로운 데이터 집합 분석
      • 더 많은 데이터 얻기
      • 향후 연구 과제
    • 요약

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안