유쾌한 파이썬 [데이터 수집·분석·통계·은닉·암호화 기술]
- 원서명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장, ‘스파이 마스터의 상세 분석’에서는 기본적인 데이터 분석에 파이썬을 사용하는 방법을 살펴본다. 좋은 요원은 단순히 사실과 숫자만을 나열하지 않는다. 좋은 요원은 어떤 데이터가 사실을 반영하는지 확인하기 위해 충분한 분석을 수행한다. 데이터 집합 간의 상관관계를 검증할 수 있다면 귀중한 정보 자산이 될 수 있다.
목차
목차
- 1장 스파이 활동 도구
- 작업에 필요한 기본 도구 구하기: 파이썬 3.3
- 윈도우의 비밀
- 맥 OS의 비밀
- 추가 도구: 텍스트 편집기
- 다른 개발 도구 설치
- 파이썬 컴포넌트를 추가로 얻기 위한 도구 얻기
- 도구 확인
- 어떻게 멈출까?
- help() 시스템 사용
- 맥 OS와 GNU/리눅스의 비밀
- 윈도우의 비밀
- 도움말 모드 사용
- 배경 소개: 수학과 수
- 유력한 범인
- 수의 상아탑
- 정수
- 유리수
- 부동소수점 수
- 십진수
- 복소수
- 수 이외의 것들
- 값을 변수에 대입
- 스크립트 작성과 출력
- 사용자 입력 받기
- 예외 처리
- 루프와 재시도
- 텍스트와 문자열 다루기
- 수와 문자열 상호 변환
- 문자열 파싱
- 소프트웨어 구조화
- 파일과 폴더 처리
- 파일 만들기
- 파일 읽기
- 더 복잡한 논리적 조건 만들기
- 문제 해결: 잊어버린 암호 복구
- 말뭉치 읽기
- ZIP 압축 프로그램 읽기
- 무차별 검색 시도
- 요약
- 작업에 필요한 기본 도구 구하기: 파이썬 3.3
- 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 문서로부터 간단한 파이썬 객체 만들기
- 서로 다른 여러 부분 하나로 엮기
- 마지막 단계
- 데이터 이해: 스키마와 메타데이터
- 요약
- 배경설명: 위도, 경도, GPS
- 5장 스파이 마스터의 상세 분석
- 통계 요약 만들기
- 원 데이터 파일 파싱
- 평균 계산
- 제네레이터 식 이해
- 가운데 있는 값 찾기
- 가장 흔한 값 찾기
- 파이썬 모듈과 애플리케이션 만들기
- 모듈 만들고 사용하기
- 애플리케이션 모듈 만들기
- 혼합 모듈 만들기
- 자신만의 클래스와 객체 만들기
- 클래스 정의 사용
- 비교와 상관관계
- 표준편차 계산
- 표준점수 계산
- 시퀀스와 이터러블 비교
- 상관계수 계산
- 고품질 소프트웨어 작성
- 자신을 테스트하는 모듈과 테스트 실행 모듈 만들기
- 더 복잡한 테스트 만들기
- 독테스트 케이스를 클래스 정의에 추가하기
- 문제 해결: 몇 가지 흥미로운 데이터 집합 분석
- 더 많은 데이터 얻기
- 향후 연구 과제
- 요약
- 통계 요약 만들기