전체 글

전체 글

    Python 이미지 파일 해킹하기

    ※ 본 포스팅은 (조성문 정영훈 저) 를 기반으로 작성되었습니다. 개요 (출처: 네이버 웹툰 ) Python은 무시무시한 확장성을 자랑하는 언어이다. 파일을 다루는 방면에서도 아주 강력한 기능을 지원하는데, 바이너리 파일을 열어서 손쉽게 그 내용을 변경하거나 추가할 수 있다. 웹에서 사용하는 다양한 형식의 이미지 파일에 스크립트를 추가하면 강력한 기능을 가진 해킹 도구를 만들 수 있다. 이번 포스팅에서는 비트맵 파일(.bmp) 에 JavaScript를 삽입해서 쿠키를 저장하고 다시 읽어들이는 간단한 코드를 작성하고, 직접 실습해볼 것이다. 이미지 파일 열어보기 일단 이미지 파일이 있어야 해킹할 거리가 생긴다. 글쓴이는 그림판에서 1x1 픽셀 크기의 작은 점 하나만 있는 이미지 파일을 만들어서 dot.bm..

    [Django] Django로 만드는 투표 앱(1) - views.py 설계

    인프런 Django 강좌를 따라 실습하면서 간단하게 투표 기능을 할 수 있는 웹 어플리케이션을 만들어 보았다. 우선 투표 어플리케이션에 사용될 4개의 view를 설계해 보았다. Question Index Page : 최근 등록된 5개의 질문들을 보여주는 페이지 Question Detail Page : 각 질문과 투표를 할 수 있는 User 폼을 보여주는 페이지 Question Result Page : 각 질문에 대한 결과를 보여주는 페이지 투표 액션 : 특정 질문에 대해 투표를 핸들링 현재 Django 프로젝트 디렉터리 구조는 다음과 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 mysite ├── db.sqlite3 ├── manage.py ├── m..

    8. 지정한 위치 읽고 쓰기 - pread(), pwrite()

    개요 지난번 게시글에서는 lseek()를 통해 파일 오프셋을 원하는 곳으로 바꾸어서 파일 입출력을 하는 방법에 대해 다루어 보았다. 한편 리눅스에서는 lseek() 대신 읽고 쓸 파일 오프셋을 지정할 수 있는 read()와 write()와 비슷한 사촌격의 시스템 콜이 있다. 둘 모두 각각의 읽기, 쓰기 작업을 마친 후 파일 오프셋을 갱신하지 않는다. pread()와 pwrite() pread() 시스템 콜을 사용하면 읽을 오프셋을 지정할 수 있다. 1234#include #define _XOPEN_SOURCE 500 ssize_t pread(int fd, void *buf, size_t count, off_t pos);cs pread()를 사용하면 파일 디스크립터 fd에서 pos (지정된 오프셋) 에 있..

    7. 파일 탐색하기 - lseek()

    개요 파일 입출력을 좀 더 재미있게 할 수 있는 방법은 없을까? 파일 입출력을 할 때 무료함을 느낀다면, 그건 파일 입출력 오프셋 위치 때문일 것이다. 지금까지 알아보았던 방식 (write() 시스템 콜이나 O_APPEND 플래그를 사용하는 것)으로는 항상 파일의 시작이나 끝에서밖에 입출력을 하는 것에서 그쳤다. 하지만 중간에 다른 데에서부터 입출력을 하고 싶을 때도 있다. 이를 위해서 파일 탐색 방법을 알아두어야 할 것이다. lseek() 시스템 콜 이번에 배울 lseek()는 파일 디스크립터에 연결된 파일의 오프셋을 특정 값으로 지정할 수 있게 해주는 시스템 콜이다. 사실 이 기능을 제외하고는 다른 동작은 하지 않으며, 어떤 입출력도 하지 않는다. 단지 파일 오프셋만 옮길 뿐이다. 1234#inclu..