본문 바로가기
반응형

프로그래밍/NETWORK HACKING32

[네트워크 보안] 파이썬3 UDP 프로토콜 클래스 정의 및 packet.py / sniffer.py 수정 파이썬3 UDP 프로토콜 클래스 정의 및 packet.py / sniffer.py 수정에 대해서 정리한다. * udp 헤더의 크기 = udp 헤더(고정) + 데이터의 크기(가변) * UDP 세그먼트에서 data 부분을 가져올때 방법 - udp.data.decode( errors='ignore' ) - struct.unpack( '!' + str(20) + 'B', data ) ( struct.unpack()을 할때 포맷문자 부분은 문자열이라는 부분을 이용해서 데이터 길이만 추출해내면 된다 ) - 전체적 패킷 구조: ethernet + ip + udp 헤더의 역할? - 전송되는 데이터의 정보가 담겨있다. 계층별 프로토콜 헤더 - 계층에서 사용되는 정보 네트워크란? - 사용되는 장치들이 유무선으로 연결되어 .. 2017. 6. 21.
[네트워크 보안] 파이썬3 클래스로 각 프로토콜 헤더를 정의( packet.py, eth.py, ip.py, sniffer.py ) 파이썬3 클래스로 각 프로토콜 헤더를 정의에 대해서 정리한다. 바이트 -> 정수, 문자 문자, 정수 -> 바이트 객체지향을 제대로 사용해보려면 프로젝트 규모가 좀 커야지 좋다. ( 객체지향 -> 아주 약간만 커도 굉장히 유용 ) 클래스로 각 프로토콜 헤더를 정의 1. has-a 패킷 클래스(): 이더넷 아이피 유디피 ... * 기본적으로 멤버들은 바이트 형태를 유지 * getter를 통해 가져오거나 setter를 통해서 입력할 때 변환 * setter, getter, 클래스의 캡슐화 2. is-a 이더넷 클래스 아이피 클래스( 이더넷 클래스 ): * 프로토콜 헤더를 익히는게 목적 지난 시간: 변환 오늘 : 클래스 정의 아이피 헤더에 대한 클래스 정의 - 각 클래스 정의 eth.py import struc.. 2017. 6. 20.
[네트워크 보안] 파이썬3 struct 모듈을 이용한 패킷 분석 파이썬3 struct 모듈을 이용한 패킷 분석에 대해서 정 str - 문자 표현시 사용 가능한 자료형 bytes - 변경불가 - 문자에 대한 아스키 코드 표현 bytearray - 변경가능 * 네트워크 통신을 할때는 bytes형을 이용해서 통신을 한다. 1. 네트워크 스트림(장치)으로 부터 읽어들일 때 - bytes -> 정수, 문자열 형태로 변환 2. 네트워크 스트림으로 내보낼 때 - 정수, 문자열 -> bytes * 숫자 타입 같은 경우에는 struct 모듈을 이용해서 pack, unpack ( b'10' 불가능 ) byte order -> 배치 순서 ABCD -> 메모리 저장 -> DCBA (little endian) -> 네트워크 스트림 -> (big endian) ( int 같은 숫자 자료형은 .. 2017. 6. 17.
[네트워크 보안] UDP 통신 계층별 분석 UDP 통신 계층별 분석에 대해서 정리한다. ※ UDP - 네트워크상에서 어떠한 일이 일어나는지? - 눈에 보이지 않는 것들 4 -> 3 -> 2 -> 1: 확인(분석) 1 -> 2 -> 패킷 직접 제작(프로토콜) * 스니핑(sniffing) - 다른 사람의 패킷을 가로채는 기법 - 덤프 : 저장한다는 개념메모리 덤프 * 로우 소켓 프로그래밍: 스니퍼(덤프) 프로그램 - 무엇을 덤프 할 것인가? - NIC 장치로 들어오거나 나가는 것들(패킷) ! 패킷이 항상 두개가 아닐 수 있다! 네트워크는 항상 실행을 보장할 수 없다 * 네트워크 엔지니어: 장비(라우터, 스위치, ... ) - 실력: 트러블 슈팅, 네트워크 설계, ... - 실무 경험을 중시 udp serverdata: b"\x00PV;%\xf8\x0.. 2017. 6. 16.
[네트워크 보안] 파이썬 TCP 소켓 / TCP 에코 서버 & 클라이언트 파이썬 TCP 소켓 / TCP 에코 서버 & 클라이언트에 대해서 정리한다. ※ TCP 소켓 1. 소켓의 타입: SOCK_STREAM - 서버 1. 서버소켓 2. bind( ... ) # 포트 지정 3. Listen( ... ) # 클라이언트 연결 요청을 받기 위한 메서드 ( 인자로 클라이언트 연결을 몇개까지 받을지 결정 ) 4. accept( ... ) # 블록 메서드, 수신 대기 5. send, recv - 클라이언트 1. 클라이언트 소켓 2. connect( ... ) 3. send, recv ※ 실습: TCP 에코 서버 & 클라이언트 ( 서버측은 해당 bind로 클라이언트와 연결을 하고 들어오는 데이터를 받아서 그 내용을 클라이언트에게 되돌려준다 ) * server_s.. 2017. 6. 15.
[네트워크 보안] 파이썬 소켓 통신(UDP) / UDP 에코서버 실습 파이썬 소켓 통신(UDP) / UDP 에코서버 실습에 대해서 정리한다. ※ 소켓 - 입/출력을 하기위한 fd와 비슷한 역할 - 통신하려는 타입에 맞게 소켓을 생성해서 사용 ( 파일과 마찬가지의 개념 ) 많은 언어들이 네트워크 통신을 하기 위해서는 소켓을 사용하도록 하고 있다. * 소켓 프로그래밍 = 네트워크 프로그래밍 서버 : 요청을 받는 쪽 실행 -> 수신 대기 아이피 : 네트워크 상에서 호스트를 식별할 수 있는 식별정보 * 네트워크 전체에서 중복되선 안된다 ex) 집주소 포트 : 호스트 상에서 서비스를 식별하는 식별정보 * 호스트에서만 중복되지 않으면 된다. ex) 이름 클라이언트 : 요청을 하는 쪽 실행 -> 송신 - netstat -anu를 통해서 udp에서 사용하고 있는 포트번호 확인 가능 ( .. 2017. 6. 13.
[네트워크 보안] OSI 7계층 / 파이썬 소켓 프로그래밍 / MAC 주소 변경 방법 ※ OSI 7 Layer( OSI 7계층 ) - 네트워크를 7개의 계층으로 분류 - 인터넷 != 웹 - TCP/IP 프로토콜 (인터넷 5계층) Layer 7: Application Layer(응용계층) - 웹, 온라인 게임, DHCP, DNS, ... Layer 6: Presentation Layer(표현계층)Layer 5: Session Layer(세션계층) - 추상적인 계층: 암호화, SSL, ... (인터넷에서는 5,6계층이 잘 표현되지 않았다 ) ----------------- 상위 3계층 ------------------ 상위 3계층이 없어도 통신은 가능하다. 예). 대화 - 무중력 상태에서는 대화가 되지 않음 - 언어: 한글(상위 3계층) < 한글과 목소리가 상대방에게 전달되는건 별개의 문제 .. 2017. 6. 12.
[네트워크 보안] CentOS6 Python3 설치 및 기본 실습 환경 구축, 보안 설정 해제 CentOS6 Python3 설치 및 기본 실습 환경 구축, 보안 설정 해제 * 파이썬 실행기 설치 1. 개발자 도구 설치 #> yum groupinstall "Development Tools" #> yum install wget ( 파이썬 소스코드 설치를 위한 wget 명령어를 yum에서 설치 ) 2. 파이썬 소스코드 다운로드 #> wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz #> tar xvf Python-3.6.1.tgz #> cd Python-3.6.1 3. 파이썬 소스코드 컴파일 ( 해당 파이썬 디렉터리 Python-3.6.1에서 작업을 진행 ) #> ./configure #> make #> make install #> pytho.. 2017. 6. 8.