본문 바로가기
프로그래밍/NETWORK HACKING

[네트워크 보안] OSI 7계층 / 파이썬 소켓 프로그래밍 / MAC 주소 변경 방법

by B T Y 2017. 6. 12.
반응형

※ 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계층<응용계층>)  < 한글과 목소리가 상대방에게 전달되는건 별개의 문제 >



Layer 4: Transport Layer(전송계층)

  - 통신하는 방법을 정의: TCP, UDP


Layer 3: Network Layer(네트워크 계층)

  - 경로를 선정

  - 서로 다른 네트워크간의 통신을 가능


Layer 2: Data-Link(데이터 링크 계층)

  - 라우팅이 필요하지 않은 구간에서의 통신

  - 신뢰도가 제일 높은 구간


Layer 1: Physical Layer(물리 계층)

  - 물리적인 통신에 관한 정의


  - NIC(Network Interface Card)

  - 케이블, 무선(주파수)


------------------ 하위 4계층 -----------------------



  - 공기라는 매개체를 이용하여 목소리(주파수)를 전달(통신)





※ 파이썬을 이용한 소켓 프로그래밍



  - 네트워크 프로그래밍

  - 입/출력과 같음


* 입/출력의 종류


1. 표준 입/출력: 리눅스 -> 0(stdin), 1(stdout), 2(stderr)


  - C: scanf, gets, printf, ...

  - java: system.out.println, scanner

  - python: input, print

  ...

  * 키보드( 표준입력장치 )로 입력 받아 모니터( 표준출력장치 )에 출력


2. 파일 입/출력


  - 파일의 내용을 읽고, 파일에 내용을 쓰고


  - 파일 객체를 통해서 파일과 통신 ( python의 경우 )

  - 파일 객체의 타입에 따라서 통신 방법이 달라진다.

    ex). 읽기 전용, 쓰기 전용, 읽고/쓰기, 추가


3. 네트워크 입/출력


  - 네트워크 장치를 통해 들어오는( NIC ) 내용을 읽고

  - 네트워크 장치를 통해 내용을 내보내고


  - 네트워크 장치를 통해서 입/출력(통신)을 하기 위해서는 소켓이 필요하다.



  * 파일 식별자 , 장치, 사용자, 프로세스 다 숫자로 구분한다.


  0(stdin), 1(stdout), 2(stderr)


  0번으로 지정된 장비로 입력을 받음, default => 키보드


  2 > /dev/null 

  ( stderr를 출력 재지정 문자( > )를 이용해서/dev/null로 보낸다는 의미 ) 




* 파일입출력 예제


python3 -i 옵션을 이용하면 실행기를 통해 파일입출력 제어가 가능하다.


fd = open( "passwd" , "r" ) r은 읽기모드로 열겠다. r,w,a(append), r+


종류에따라서 파일객체를 다양하게 생성가능


line = fd.readline()

print ( line, end='' )


fd.write("Hello, Korea")


하면 리턴값 12 출력, 몇 글자 입력했는지를 나타낸다.



* 소켓 생성


  socket.socket(family, type)


family

  - AF_INET  --> IPv4 통신

  - AF_UNIX  --> unix계열에서만 사용 가능한 소켓

  - AF_PACKET  --> 로우(raw) 소켓

    - 타입을 갖지 않는 소켓


type

  - socket.SOCK_STREAM : TCP

  - socket.SOCK_DGRAM  : UDP

  - socket.SOCK_RAW    : 형태를 갖지 않는다.





※ MAC 주소 변경 방법



1. VMWare 하드웨어 네트워크 Advanced 들어가서 MAC Address Generate 버튼 클릭

  ( MAC 주소를 변경하면 인터페이스가 하나 더 생긴걸로 인식해서 강제적으로 맞춰줘야 한다 )


2. 리눅스 접속해서 로그인 후에 vi /etc/sysconfig/network-scripts/ifcfg-eth0 접속


DEVICE

TYPE

ONBOOT

BOOTPROTO

NAME

남기고 나머지 삭제


3. vi /etc/udev/rules.d/70-persistent-net.rules 접속


eth1 설정은 놔두고 eth0 설정 지우고 eth1을 eth0으로 바꾸고 재부팅( reboot )



반응형

댓글