네트웍을 조금 깊이 공부하다 보면 필요한 툴 중에 하나가 패킷 스니핑(packet sniffing) 소프트웨어이다. 패킷 스니핑이란 네트웍 상에 오가는 모든 패킷들의 내용을 보는걸 말한다. (평상시에는 자신에게 오는 패킷만 받아 처리한다) 예전 텍스트 환경에서 많이 사용되던 프로그램으로는 snoop (SunOS에서 사용)과 지금도 거의 표준적으로 사용되고 있는 tcpdump가 있다.

GUI 환경의 툴로는 보통 tcpdump/pcap을 사용하고 거기에 graphic back-end를 붙여준 형태가 많다.


Ethereal 에서 이름이 바뀐 Wireshark이다. 현재 패킷 스니핑 툴에서는 거의 de-facto standard의 지위를 차지하고 있다. 물론 Windows/Linux/Mac OS X 모두 지원한다. 다만 아래 화면에서 볼 수 있는것처럼 Linux/X Windows를 맥에 포팅한 형태이기 때문에 맥 고유의 UI를 사용하지 않아서 맥 어플리케이션의 깔끔한 느낌이 없다.

그에 비해 Cocoa Packet Analyzer는 처음부터 네이티브 맥 OS X와 코코아 환경에서 구현한 패킷 스니핑 툴이라 맥 UI가 깔끔하게 적용되어 있다. 산업표준인 pcap 패킷 캡춰 포맷을 지원하기 때문에 다른 패킷 스니핑 툴과도 트레이스 파일이 호환된다. 또한 libpcap/tcpdump 의 packet filter expression을 사용할 수 있기 때문에 tcpdump에 익숙한 사람은 별도로 공부할 필요가 없다.
그리고 cocoa bundle technology를 지원하기 때문에 애널라이져 플러그인을 만들어 붙일 수도 있다. 현재 SIP 프로토콜은 3rd party의 플러그인으로 구현되어 있다.

* 예전에는 보통 libpcap/tcpdump를 먼저 깔아준 다음 프로그램을 설치하는 형태가 많았는데 Cocoa Packet Analyzer도 최근 다른 프로그램들과 마찮가지로 필요한 모든걸 한꺼번에 설치해주기 때문에 편리하다.








L2TP 패킷의 내용을 보는 화면이다.

IP v6도 당연히 지원한다.

컬럼에 어떤 필드를 보여줄 지 선택할 수 있다.


캡춰된 패킷을 쉽게 검색할 수 있도록 되어있다.


지원하는 프로토콜 타입은 다음과 같다.
  • Ethertype ARP
  • Ethertype IP (v4/ v6)
  • Ethertype PPP
  • Ethertype PPPoED/S
  • Ethertype 802.1Q VLAN
  • Linktype Loopback
  • Linktype PPP
  • IP-Protocol IP
  • IP-Protocol TCP
  • IP-Protocol UDP
  • IP-Protocol ICMP
  • IP-Protocol IGMP
  • IP-Protocol L2TP
  • PPPoE Discovery and Sessionstages
  • PPP-Protocols: IP, LCP, IPCP, CCP, PAP, CHAP
  • L2TP-Protocol (port based detection)
  • RADIUS-Protocol (port based detection)
  • SIP-Protocol (third party analyzer plugin)
현재 버젼은 0.60.1이다.
Posted by nautes

Serproxy (Serial Proxy)는 시리얼 포트의 입출력을 TCP/IP 네트웍을 통해 리다이렉션 시켜주는 멀티쓰레드 프락시 소프트웨어이다. 작은 임베디드 보드의 경우 시리얼 포트만 가지고 있고 tcp/ip 스택을 가지고 있지 않아서 네트웍을 통해 연결을 할 수 없는 경우가 많다. 이런 경우 serproxy를 사용하면 원격지에 있는 디바이스를 네트웍을 통해 제어할 수 있게 된다.

그 이외에도 플래쉬나 다른 프로그래밍 언어로 사용자 인터페이스를 만드는 경우 해당 언어에서 시리얼 포트를 제어하는 라이브러리를 제공해주지 않으면 시리얼 포트를 사용할 수가 없지만 serproxy를 사용하면 소켓 프로그래밍 인터페이스를 사용해서 시리얼 포트로 데이터를 주고 받을 수 있다.


200806222356.jpg

(a) 시리얼 포트를 직접 억세스하는 경우


200806222356.jpg

(b) Serial proxy를 사용하는 경우

위의 그림 (b)에서는 serproxy를 실행하는 컴퓨터와 그 시리얼 포트를 사용하는 컴퓨터를 따로 그려 놨지만 한 컴퓨터에서 serproxy를 실행하고 같은 컴퓨터에서 소켓 프로그램으로 시리얼 포트를 억세스 할 수도 있다. (제어 프로그램을 플래시로 만드는 경우 경우 플래시에서 시리얼 포트를 직접 억세스 할 수 없기 때문에 이런 방법을 사용해야 한다. 이 경우 destination ip: localhost, port: cfg파일에 설정한 포트번호로 억세스 하면 된다.)

여기서 소스 및 윈도우용 바이너리 파일을 다운받을 수 있다.

맥용 바이너리 파일은 아래에서 다운받으면 된다.


압축을 열어보면 serproxy와 serproxy.cfg 가 있는데 serproxy.cfg는 /usr/local/etc에 serproxy는 /usr/local/bin에 복사해주고 자신의 환경에 맞게 serproxy.cfg를 바꿔주면 된다.


# 시리얼 포트에서 오는 뉴라인('\n')을 nils('\00') 으로 변환

# 플래시의 경우 끝에 nils가 오지 않으면 앞부분을 해석하지 않기 때문에 이 기능이 필요하다. true (e.g. 플래시를 사용하는 경우 or false

newlines_to_nils=true

# 사용할 시리얼 포트, 여기서는 2개를 사용하는 경우, 각각 1, 2가 된다.

comm_ports=1,2

# 디폴트 설정

comm_baud=19200

comm_databits=8

comm_stopbits=1

comm_parity=none

# 아이들 타임아웃

timeout=300

# 포트 맵핑 설정, 즉 시리얼 포트 1은 TCP포트 5531을 통해, 시리얼 포트 2는 TCP포트 5532를 통해 사용할 수 있음

net_port1=5331

net_port2=5332

# 각 시리얼 포트 디바이스 이름

serial_device1=/dev/tty.usbserial

serial_device2=/dev/tty.usbserial-3B1
Posted by nautes

이전버튼 1 이전버튼