본문 바로가기

Programming/Python

API 모니터링 API 모니터링 프로그램이 어떤 API를 실행하게 될 때 그 부분을 찾아서 분석하는 것에 대해서 알아보도록 하겠습니다. 먼저 다음 소스코드를 작성합니다. 소스코드를 분석해보도록 하겠습니다. dbg.enumerate_processes()는 해당 컴퓨터의 실행 중인 프로세스와 PID 값을 가져 옵니다.이것을 for문을 이용해서 pid와 프로세스 이름을 가져오게 되는 것이죠. if 문으로 server-strcpy라는 프로세스 이름이 있다면 해당 pid에 붙게 됩니다. dbg.func_resolve('ws_32', 'send')는 winsock2 32bit를 사용하는 send 함수를 찾아내는 것입니다. bp_set은 send()가 존재하는 곳의 주소에 breakpoint를 걸어준다고 생각하면 됩니다. 이 값을 .. 더보기
PyDBG PyDBG PyDBG에 대해서 알아보도록 하겠습니다. 먼저 PaiMei-1.1.win32.exe를 설치 합니다. 설치 후 pydasm.pyd를 C:\python27\Lib\site=packages\pydbg\에 넣습니다.마찬가지로 첨부된 __init__.py를 C:\python27\Lib\ctypes\에 넣습니다. cmd 창에서 C:\python27\Lib\site-packages로 이동합니다. 그 후 python easy_install.py build -c mingw32 를 입력합니다.python을 실행하여 import pydbg를 했을 때 오류가 없으면 설치가 완료됩니다. 가상 XP에서 다음 소스코드를 작성합니다. echo-server-strcpy 프로그램을 실행 한 후 cmd에서 위 소스코드를 실행.. 더보기
Pydasm을 이용한 디스어셈블링 Pydasm을 이용한 디스어셈블링 Pydasm을 사용하려면 먼저 설치를 해야하는데, 아래 첨부된 파일을 다운받아주세요 ^^ 해당 파일을 압축해제 후 cmd 창을 이용하여 해당 폴더로 이동하고 setup.py install을 입력합니다. 그 후 python을 실행하고 import pydasm을 입력했을 때 오류가 나지 않으면 설치가 완료됩니다. 위 사진이 python IDLE 입니다. IDLE를 실행시킵니다. 위 소스코드를 보도록 하죠. import pydasm을 했을 때 오류가 발생하지 않으면 pydsam이 정상적으로 설치된 것입니다.2줄에서 MODE_32는 32비트에 맞춰 어셈코드를 출력하는 것입니다.또한 FORMAT_INTLE은 intel 형식, ATT는 AT&T 방식으로 나타내 줍니다. 더보기
PE 분석 PE 분석 python으로 PE 파일을 분석해보도록 하겠습니다. 먼저 기본적으로 설치된 python에는 pefile 모듈이 존재 하지 않습니다.ImmunityDBG의 모든 모듈은 C:\Program Files (x86)\Immunity Inc\Immunity Debugger\Libs 해당 경로에 저장되어있습니다. pefile 모듈을 사용하기 위해서 위 경로에서 pefile.py와 pelib.py를 C:\python27\Libs에 넣어두도록 합니다.우분투에서 사용할 때는 /usr/lib/python2.7에 추가하도록 합니다. 위 소스코드를 보도록 하죠. pefile은 PE 파일을 분석하기 위한 모듈이며 pprint는 pretty-print 모듈로 말 그대로 예쁘게, 보기좋게 출력을 해주는 모듈입니다.한번 .. 더보기
Pyhook Pyhook 이번에는 PyHook에 대해서 알아보도록 하겠습니다.먼저 후킹에 대해서 알아야 하는데, Hook은 갈고리를 뜻합니다. 갈고리의 역할은 무언가 낚아채는데 이용하죠. 컴퓨터 공학에서는 Hooking이라는 말을 사용하는데 컴퓨터가 어떤 일을 처리하는 과정 중에 낚아채는 것을 의미합니다.ImmunityDBG에서는 여러가지 Hook이 존재합니다. BPHook, LogHook, PreBpHook, LoadDLLHook 등등이 존재합니다. 위 소스코드를 보죠. 먼저 AllExceptHook은 프로그램이 예외가 발생하게 되면 잡아줍니다.regs는 CPU 레지스터 정보를 갖고 잇습니다. 10줄에 보면 log에 해당 레지스터를 남기고 있습니다. echo-server-strcpy를 ImmunityDBG로 실행합.. 더보기
Assemble, Disassemble, Search Assebmble, Disassemble, Search 어셈, 디스어셈, 서치에 대해서 알아보도록 하겠습니다.ImmunityDBG에서 어셈블리어를 Hex 값으로 Hex값을 어셈블리어로 변환하고, 해당 Hex 값이 어디에 위치해 있는지 찾아보도록 하죠. 간단히 리버스 엔지니어링을 하면 처음 접하는 abexcm1.exe를 ImmunityDBG로 실행 후 python shell을 실행 시킵니다. (python 인터프리터) 위 소스코드를 보죠.JMP ESP와 JMP ESP \n RET 어셈 코드를 Hex 값으로 나타내었더니 위와 같은 값이 출력됩니다. 위 소스코드를 보면 해당 주소의 어셈블리어를 출력해주는 것을 알 수 있습니다. 그렇다면 반대로 어떤 어셈블리어가 어느 주소에 있는지도 알 수 있지 않을까요? se.. 더보기
Immunity DBG 기초 Immunity DBG 기초 ImmunityDBG에 대해서 알아보도록 하죠. ImmunityDBG는 OllyDBG와 매우 흡사하게 만들어 졌습니다. 하지만 ImmunityDBG는 Python 스크립트가 작동합니다.!!!!OllyDBG 개발자가 ImmunityDBG를 만들었다고 하네요 ^^ python과 ImmunityDBG가 서로 작동이 되는지 확인해 보도록 하겠습니다. 먼저 C:\Program Files\Immunity Inc\Immunity Debugger\PyCommands로 이동합니다.해당 폴더에 demo.py를 만들고 아래 소스코드를 작성하도록 합니다. 위 소스코드를 보면, immlib를 추가했는데 이 부분은 ImmunityDBG에서 사용할 수 있도록 해준다고 생각하면 됩니다.그리고 main().. 더보기
Exploit 기초 Exploit 기초 이번에는 간단한 Exploit을 해보고, 어떻게 하는 것인지 알아보도록 하겠습니다. 먼저 익스플로잇을 하기 전에 환경을 구성해야 합니다. Virtual Machine을 이용해서 가상 OS를 설치해야하는데 Windows XP 32bit를 설치하시길 바랍니다. 그리고 해당 파일을 가상 XP에 받아두시길 바랍니다. Echo_Server_strcpy는 현재 프로그램 소스코드가 어떻게 짜여져 있는지 모르는 상태입니다. 임의의 값을 넣어서 확인 해보는 작업을 하도록 해보죠. Virtual Machine에 설치된 Ubuntu로 돌아가서 다음 소스코드를 작성합니다. 위 소스코드는 앞서 포스팅한 소켓 프로그램에서 사용했던 소스코드 입니다.buf에 A를 20자를 넣고 해당 값을 서버로 보내주는 프로그램.. 더보기
Raw 소켓 스니핑 Raw 소켓 스니핑 이번에는 Raw 소켓 스니핑에 대해서 알아보도록 하겠습니다. 먼저 Raw 소켓은 프로토콜을 설계하여 구현하거나 패킷을 조작할 때 사용하는 소켓입니다.커널 수준에서 다루는 헤더 등을 조작할 수 있죠. 따라서 일반 유저 권한 사용자가 사용할 때는 커널에서 알아서 프로토콜 헤더를 붙여 전송하지만 루트 권한 사용자는 직접 프로토콜 헤더의 전부 또는 일부를 만들거나 사용할 수 있습니다. 먼저 struct에 대해서 알아보죠.struct는 python과 C 자료간의 변환을 하도록 해줍니다. 위 표는 Raw Socket Sniffing 포멧 스트링과 제어문자 입니다. 이러한 것들이 어떻게 사용되는지 알아보죠. pack은 해당 하는 값을 \x00 꼴로 만들어주고 unpack은 \x01의 값을 '1' .. 더보기
웹 페이지 만들기 웹 페이지 만들기 Apache로 php 파일을 만들어서 웹을 구동 시켜본적이 있으신가요? python에서 소스코드를 작성해서 간단히 웹 페이지를 만들 수 있습니다. HTTP 서버를 만들어서 접속하는 예제입니다. SimpleHTTPServer 모듈을 포함하고 있는데, 모듈 이름 또한 쉽게 되어있습니다. Http 클래스를 보면 do_GET() 함수를 사용하고 있습니다. 이 함수는 현재 작업 디렉토리에 상대적인 결로로 요청하여 로컬 파일에 매핑됩니다. index.html이 있는 경우 이 페이지를 나타내주고 없는 경우에는 디렉토리를 나열하게 됩니다. '/admin' 경로로 들어가게 된다면 관리자 페이지라고 출력을 하며 해당 홈페이지의 정보가 나오게 되죠. 이러한 부분들은 취약점으로 작용할 수 있으니 보안해주어야.. 더보기
소켓 서버 프레임워크 소켓 서버 프레임워크 이번에는 소켓 서버 프로그램의 기본 구조에 대해서 알아보도록 하겠습니다. 앞서 포스팅한 내용들이라 딱히 어려운 부분은 없습니다. ((sys.argv[1], 8000))에서 sys.argv[1]은 프로그램을 실행 시 인자 값을 넣어 실행할 수 있도록 해줍니다.해당 인자 값은 IP주소를 넣어주면 됩니다. 위 소스코드도 마찬가지로 메시지를 보내면 다시 되돌아오는 echo 프로그램입니다.SocketServer 모듈을 사용하여 TCPServer()로 해당 서버에 접속합니다. 클래스를 사용하게 되면서 client.recv()의 형태가 self.request.recv()로 변경되었습니다. 기본 틀이라는 것만 알아두고 넘어가도록 하죠. 더보기
서버 프로그램 서버 프로그램 pwnable.kr과 같은 wargame을 풀다보면 서버와 연결하여 풀어야 하는 문제들이 종종있습니다. 이럴 때 어떻게 사용해야 하는지에 대해서 간단한 서버 프로그램을 만들어 보겠습니다. 위 예제는 간단히 접속만 하는 프로그램입니다. socket() 함수를 살펴보죠. AF_INET은 IPv4 인터넷 프로토콜을 말하며, SOCK_STREAM은 TCP를 말합니다. 추가적으로 SOCK_DGRAM은 UDP를 말합니다. bind()는 소켓을 host 컴퓨터의 prot에 연결하며 listen()은 연결을 원하는 클라이언트가 대기할 수 있는 수를 말하빈다. 당연히 1이상의 수를 갖고 있어야합니다.accept()는 들어오는 접속 요청을 허용하는 함수입니다. A 터미널에서 서버를 열어주고 B터미널에서는 서.. 더보기
서브 프로세스 서브 프로세스 이번에는 서브 프로세스에 대해서 알아보도록 하겠습니다. subprocess는 process 생성 및 관리, 입출력 스트림 제어, 반환 코드 처리 작업을 일반화환 함수와 객체들을 제공합니다. 터미널에서 리눅스의 명령어들을 입력해서 사용하고 있는데 그 명령어들을 소스코드 상에서 동작시키려고 한다면 어떻게 할까요?아래 예제를 보도록 하겠습니다. 기본적으로 사용되는 터미널에서 입력한 ls-al과 python으로 작성한 ls-al의 차이가 없습니다. 똑같이 명령어를 수행하고 있죠.여기서 주목할 것은 subprocess.call(['ls' , 'al']) 명령어가 리스트 방식으로 입력해야 한다는 것입니다. 더보기
시그널 시그널 이번에는 시그널에 대해서 알아보도록 하겠습니다.시그널은 말 그대로 신호인데, 어떤 신호에 따라 처리를 하도록 하는 것입니다. 위 그림은 각 시그널의 번호와 그 내용이 정리되어있습니다. 명령어를 이용해 정보를 확인할 수 있습니다. SIGINT는 interrupt for Keyboard로 정의 되어있습니다. 즉, 키보드로 방해를 하는 동작을 수행하면 You cannot kill me 라는 문구가 출력되는 것입니다. 더보기
쓰레딩, 큐 쓰레딩, 큐 이번에는 쓰레딩과 큐에 대해서 알아보도록 하겠습니다. 소스코드를 이해하려기 보다는 가볍게 보고 넘어가는 방식으로 하겠습니다. 첫 번째 for문에서 0부터 9까지 총 10번을 반복하면서 쓰레드를 생성합니다. 그리고 그 값이 Make_thread 클래스로 넘어가서 time.sleep()으로 이동합니다.즉 0부터 9까지 time.sleep()에 들어가고 출력하는 프로그램이 실행되는 것이죠. 위 그림을 보면 각 쓰레드가 언제 시작되고 종료되는지 알 수 있습니다.리눅스와 윈도우 두 가지 환경에서 실행시킨 결과 리눅스에서는 실행 시 결과가 다르게 나왔고, 윈도우에서는 실행결과가 같게 나왔습니다. 하지만 결과가 달라지는 것이 정상적입니다. 실행 시간과 종료 시간이 다르고 처리하는 순서의 차이가 있기 때문.. 더보기
쓰레드 쓰레드 이번에는 쓰레드에 대해서 알아보도록 하겠습니다.쓰레드는 프로세스 내에서 흐름 단위를 말합니다. 한 프로그램은 하나의 쓰레드를 가지지만 둘 이상의 쓰레드도 실행 할 수 있습니다. 이러한 것을 멀티 쓰레드라고 합니다. thread.start_new_thread()를 이용해서 thread를 만듭니다.for문을 실행하면서 i 값을 make_thread()에 넘겨주죠. 소스코드를 실행해서 작성한 후에 실행을 해보면 위와 같은 출력 결과가 나오지는 않습니다.왜냐하면 CPU마다 처리하는 순서가 다른 것도 있지만 Global Interpreter Lock(GIL)이라는 것이 존재합니다. 최근에 듀얼코어, 쿼드코어를 지나 옥타코어, 데카코어 그 이상까지도 나오는 추세인데, 스마트폰 마저 옥타코어를 사용하고 있죠... 더보기
프로세스 만들기 프로세스 만들기 이번에는 프로세스를 만들어 보도록 하겠습니다. 프로세스에 대해서 공부하면 부모 프로세스와 자식 프로세스에 관한 내용이 나오죠. fork()는 프로세스를 복제하는 함수라 생각하면 됩니다. fork() 함수는 성공 시 자식 프로세스의 PID가 부모에게 반환되며, 자식프로세스에게는 0이 반환됩니다.실패시에는 부모 프로세스에 -1이 반환되며 자식 프로세스는 생성되지 않습니다. 실행 결과를 보면 부모 프로세스가 실행되고 난 후 부모 프로세스의 PID 값이 childpid에 들어가 있습니다. 이 값이 0이 아니기 때문에 else문으로 이동하게 됩니다.하지만 그 후 0이란 값이 나타나게 되는데 childpid가 0이 되면서 자식 프로세스가 실행됩니다. 추가적으로 PPID라는 것이 보이는데, PID는 .. 더보기
파일 목록 출력 파일 목록 출력 현재 위치에서 파일인지 디렉토리인지 판단하여 출력해주는 프로그램을 만들어 보도록 하겠습니다. 그전에 간단하게 몇 몇 기능들을 확인해 보도록 하죠. 현재위치 확인 os 모듈을 추가한 후 getcwd()를 사용해 보죠. 출력 값으로 해당 위치가 어디인지 알려줍니다. 디렉토리 만들기 리눅스를 사용해 보셨다면 디렉토리를 만들 때, mkdir 명령어를 이용하여 디렉토리를 만들었을 겁니다. python을 이용하여 디렉토리를 만들 때 os 모듈을 이용해서 디렉토리를 만들 수 있습니다. os.mkdir를 이용하면 디렉토리를 만들 수 있습니다. 존재하는 파일 확인 마찬가지로 현재 위치에서 존재하는 파일을 확인할 때 os 모듈을 이용하는데 listdir()를 이용합니다.. 는 현재 위치에 존재하는 파일의 .. 더보기
파일 입출력 파일 입출력 C언어에서 파일 입출력에 대해서 배웠을 겁니다. 대부분 뒷쪽에 있어서... 잘 하지도 않죠. 하지만 자주 사용하기 때문에 많이 공부 했을것입니다.python의 파일 입출력은 C와 매우 비슷합니다. open("파일명", "방식")의 형태로 사용할 수 있습니다.for문을 통해서 0부터 99까지 기록하며 저장하는 소스코드 입니다. 파일을 open 했으면 close도 해주어야 한다는 것을 잊지 말아야 합니다. 추가적으로 이미 작성된 파일에 추가적으로 작성을 하고 싶다면 'a'라는 옵션을 주면 되고 , 파일을 읽고 싶다면 'r'이라는 옵션을 주면 됩니다. 한가지 더 말하자면 파일의 이름을 바꾸는데는 다음과 같이 소스코드를 사용합니다. 파일의 이름을 바꾸는데 os 모듈을 추가해 주어야 하며, renam.. 더보기
예외처리 예외처리 예외처리는 C++, JAVA를 해본 사람이라면 try ~ catch라는 구문을 들어봤을 것입니다. python에서도 예외처리가 존재합니다. python을 실행해서 0/0 을 입력합니다.0/0을 계산하게 되면 에러가 발생하는데 0을 나눈다고 하면서 에러가 발생합니다. 예를 들자면, 게임 속에서 몬스터에게 공격을 했을 때 0이라는 데미지를 준다면 뭔가 잘못된 것입니다. 혹은 데미지가 int형의 범위 내에서 이루어진다고 했을 때, 그 범위를 넘어간다면 이 또한 뭔가 잘못된 것입니다. 이러한 예외들이 발생하게 된다면 게임은 엉망진창으로 변하게 되죠. 이러한 이유 때문에 예외처리가 있습니다. exception.py를 작성합니다. num의 변수에 값을 입력받아서 try 구문 안의 20과 나눕니다. 앞서 0.. 더보기
패키지 패키지 패키지는 JAVA를 해본 사람이라면 들었을 단어입니다. 말 그대로 묶어놓은 공간과 같은 의미라고 생각하면 됩니다. 먼저 package라는 디렉토리(폴더)를 하나 만듭니다. 이곳에 Calculator.py를 소스코드를 작성합니다.그리고 해당 디렉토리에 __init__.py를 만듭니다. __init__.py의 역할은 package 디렉토리가 패키지의 일부라는 것을 알려주기 위한 것입니다. 코드의 내용을 보면 Calculator.py의 Calc 클래스를 import 하고 있습니다. package 디렉토리를 벗어나서 pack.py 소스코드를 작성합니다.pack.py는 package 디렉토리를 import 합니다. 그러면 package 데렉토리 안의 내용들이 포함되는 것입니다.따라서 package 디렉토리.. 더보기
모듈 모듈 모듈에 대해서 알아보도록 하겠습니다. 우리가 C언어를 배울 때 항상 먼저 작성하던 것이 있었습니다.바로 #include 즉, 헤더파일인데 이 헤더파일이 있어야 printf와 scanf를 사용할 수 있었습니다. 이와 비슷한 것이 python에서는 모듈이라고 합니다. 위 두 소스코드를 보도록 하죠. 실질적으로 실행하는 코드는 code.py 입니다. 만약 import module을 하지 않고 소스코드를 작성해서 실행한다면 당연히 에러가 발생할 것입니다.왜냐하면 code.py에서는 module.Object_Calc 객체에 접근할 수 없기 때문이죠. 이러한 것을 어디서 찾아서 값을 출력할까요? 앞에서도 말했듯이 module.py를 import 시켜서 사용하면 가능합니다. imporot module를 하게 되.. 더보기
클래스, 객체, 상속 클래스, 객체, 상속 이번에는 클래스에 대해서 알아보도록 하겠습니다. 클래스에 대해서 알려면 객체와 상속에 대해서도 알아야 합니다.C언어에서는 클래스가 없어서 사용을 하지 못하지만, C++, JAVA에서는 클래스를 사용할 수 있습니다. python에서도 마찬가지죠. 위 소스코드를 보도록 하겠습니다. python의 클래스는 class 라고 입력하고 사용하면 됩니다. 한 줄 한 줄 소스코드를 해석해 보도록 하겠습니다. 1 : name 이라는 이름을 갖는 클래스를 선언합니다. 2: def __init__(self)는 클래스를 생설할 때 자동으로 호출됩니다. C++의 생성자와 비슷하며, 인자 값을 이용할 때 필요합니다. 3: self가 사용되는데, self는 C++, JAVA에서 사용되는 this와 비슷합니다... 더보기
함수 함수 이번에는 함수에 대해서 알아보도록 하겠습니다.C 언어를 배울 때 C 언어는 함수로 시작해서 함수로 끝난다 라는 말을 많이 들어보셨을 겁니다. 안들어봤으면 말고.. C에서 함수를 만들 때는 다음과 같이 만들죠. 앞서 포스팅한 조건문, 반복문을 공부하셨다면 눈치껏 알 수 있을겁니다. 간단한 소스를 비교해서 알아보도록 할게요. 소스비교 왼쪽은 C언어로 작성된 함수고, 오른쪽은 python으로 작성된 함수 입니다. python에서는 함수의 시작을 def로 하고, 함수이름과 :를 통해서 시작을 알려주죠마찬가지로 들여쓰기를 통해서 함수의 몸체가 시작됩니다. ※ python에서 함수가 끝나는 것은 어떻게 알려주나요? python에서 함수가 끝나는 것을 알려주는 식은 따로 없습니다. 단지 들여쓰기로 모든 것을 해.. 더보기
조건문, 반복문 조건문, 반복문 이번에는 python의 조건문과 반복문에 대해서 알아보도록 하겠습니다.프로그래밍언어에서 사용되는 조건문과 반복문이 매우 비슷하게 사용됩니다. C언어서는 각 구문을 구별하기 위하여 {} 중괄호를 이용하여 구분했지만, python에서는 들여쓰기로 구분합니다.들여쓰기로 구분해서 사용하기 때문에 소스코드 작성 시 유의하여야 합니다. 조건문 C언어에서는 조건문이 if, else if, else 와 같은 구문으로 사용되지만, python에서는 if, elif, else로 사용됩니다.else if가 elif로 줄여졌죠.이마저도 짧게쓰는... 위 소스코드를 보도록 하겠습니다. python에서는 각 구문이 시작한다는 것을 알려주기 위해서 : 를 사용합니다.앞서 말한 것 처럼, else if 대신에 eli.. 더보기
연산자 이번에는 Python의 연산자에 대해서 알아보도록 하겠습니다. 뭐 항상 C언어와 함께 말을하는데, 프로그래밍을 처음 시작하면 대부분 C언어를 많이 접하시니까 C언어를 꼭 하셨으면 좋겠네요. 정말 C언어는 해도 해도 끝이 없습니다. 파면 팔 수록 더 모르는 부분들이 많이 나와요. 문법적인 건 아니지만... 대입 연산자= 대입연산자는 값을 변수에 넣기 위해서 사용됩니다. 변수 a에 2라는 값으로 초기화 했습니다. 이러한 방식으로 값을 대입합니다. 산술 연산자+, -, *, /, %, ** +: 값을 더해줍니다.-: 값을 빼줍니다.*: 값을 곱합니다./: 값을 나눠 몫을 나타냅니다.%: 값을 나눠 나머지를 나타냅니다.**: 제곱을 해줍니다. 정말 쉽죠? 기타 대입 연산자+=, -=, *=, /=, %= C언어.. 더보기
변수와 자료형 파이썬의 변수와 자료형에 대해서 알아보도록 하겠습니다. 변수 잠깐 C언어를 이야기 하자면 C언어 에서는 변수를 선언하고 값을 초기화 하는데, 자료형 변수명 = 값; 과 같은 형태를 사용했습니다.파이썬에서는 어떻게 사용 할까요? 파이썬에서는 자료형을 따지긴 하지만 C언어처럼 먼저 선언을 할 필요가 없습니다. 위 사진을 보면 변수 name을 선언했지만 자료형은 적어주지 않았습니다. int name 처럼 사용하지 않았다는 것이죠. 파이썬은 초기화 되는 값에 따라서 알아서 형태가 정해진다는 것입니다.해당 변수의 타입을 알고 싶다면 type(변수명)을 이용하면 알 수 있습니다. 자료형 파이썬의 자료형은 다음과 같습니다. Strings, Numbers, Dictionary, Tuple, Lists, Boolean .. 더보기
코딩과 실행 방법 저는 우분투 14.04 LTS에서 python을 공부하도록 하겠습니다.이게 정말 더 편한거 같아서요 ㅎㅎㅎ 처음에 코딩을 어떻게 해야하는지 실행은 어떻게 해야하는지 정말 모르겠더군요.... 책을 찾아봐도 잘 모르겠고... 보고 있는 책이 정말 멍청한 책인듯 합니다.알려주지도 않아요.... 우분투를 설치하셨으면 Python 이라는 폴더를 만들고 터미널을 켜서 Python 디렉토리까지 이동합니다. 경로는 cd /home/이름/Desktop/Python 으로 이동하시면 됩니다. python이라고 입력을 하면 다음과 같이 나오게 됩니다. 소문자로 입력하세요. 대소문자 구별을 합니다. 우분투에는 설치가 되어있어서 이렇게 나오게 됩니다. (만약 설치가 되어있지 않으면 설치방법을 구글에서 검색해보세요~) 코딩방법 1.. 더보기
Python 설치하기 파이썬 언어가 쉽다고 해서 해보려고 합니다. 리눅스를 쓰다보면 파이썬을 많이 사용하게 되더라구요. 그냥 뭔지도 모르고 쓰고 있어서 자세하게 공부해 보려고 합니다.(펄도 사용하더라구... FTZ 할때 많이 씁니다...) 1. 윈도우에서 사용하기 python.org에 접속하면 Download를 할 수 있습니다. 파이썬의 다운로드 종류가 2개가 있습니다. 3버전 부터는 문법이 달라졌다고 합니다.기존의 파이썬의 경우 print "Hello world" 였다면 3버전 부터는 print("Hello world") 로 바뀌게 된겁니다. (사실... 3버전 이상부터가 더 친숙합니다.... C도 배우고 그래서 그런가요...? ㅋㅋㅋ ) 저는 2.7.9 버전을 다운로드 하도록 하겠습니다. 친절하게 next를 눌러서 설치해.. 더보기