4/17/2016

ITS (Issue Tracking system/Bug Tracking System)

1. ITS/BTS(Issue Tracking System) 

ITS/BTS( Issue Tracking system/Bug Tracking System)은 프로그램 개발을 진행을 하면, 
각 프로젝트를 관리를 하기위해서 만들어진 시스템이다.

예를 들면, 프로젝트를 진행을 하게되면, SCM(Source Code Management,Git,SVN)를 이용하여, 
소스관리를 처음 생각해야할 것이다. 
이는 소스관리만 되지 각 이슈사항과 Team 과의 이슈를 공유하기에는 기능이 너무 부족하다.

그래서, SCM(Git or SVN) 기반으로 Team or Group 과 이전 개발관련 자료들을 쉽게 공유하기 위해서,
ITS/BTS 시스템이 필요할때가 많이 느낄 것이다.

물론 각 Project가 작어서 혼자서 개발해야 할 경우가 큰 필요성을 못 느끼지만, 혼자개발 하더라도 
본인의 모든 개발내용사항을 기억하지 못하기 때문에 가급적 이용하는 것을 권한다.
Team으로 개발하면 개발 관련 내용을 공유하고 각 자원관리하고 이를 필요할 시점이 반드시 필요하다.


1.1 ITS/BTS 기본기능들 


SCM기반 (e.g SVN or GIT)으로 각각의 프로젝트 소스 History를 관리하며, 
Project에서 새로운 기능 or 문제사항(Issue 및 Bug)가 발생할 경우
이를 ITS/BTS기반으로 관련사항을 공유하고 자원을 예상기간에 맞게 할당하고, 
각 개별 Project에서 진행사항을 표시하여 쉽게 알수 있어 관리가 편리하다.

일반적으로 Issue/Bug는 발생이 되면 이슈의 관련내용(Type, Attributes)과 진행상태(Workflow)를 분리하고 
이를 공유한다.

각 이슈를 진행을 하면 진행상태에 따라 기간을 정하고 이를 각각 관리를 한다.
이를 통하여 전체 관련이슈를 진척사항 및 통계도 알수 있으며, 소스관리도 좀 더 쉽게 관리가 진행이 되며, 
관련 문제사항의 기록으로 남아있기에 추후 인수인계도 편하며, 관련문서도 이곳에 첨부하면 된다. 

더불어 PM(Project Manager)는 Project의 진척사항 및 팀내부의 개별관리가 쉬어진다.

ITS 관련내용 과 각 Issue 관련 전략
  https://en.wikipedia.org/wiki/Issue_tracking_system
  https://blog.gaerae.com/2014/05/issue-tracking-system-bug-tracking-system.html
  https://www.capterra.com/issue-tracking-software/
  https://www.slideshare.net/ssuserdaba75/ss-32628868


1.2 ITS/BTS Open Source Tools


무료로 제공을 해주는 오픈소스이며, SCM과 같이 관리가 가능하다.

  • Redmine
오픈소스에서 유명한 Redmine이며, SCM(SVN/CVS/GIT/Mercurial)을 지원하며, 
확장가능한  다양한 plugin을 제공하고 있다.
각 Plugin 을 통해서 GIT기반의 Cloud 시스템과도 연동가능하며, 많이 사용되는 관리 Tool 이다.
Wiki 기능 및 Gantt 차트 기능 등 다양한 기능을 제공하고 있다.


Redmine 다양한 기능소개
  http://www.redmine.org/projects/redmine/wiki

Redmine 기본 사용법
  http://www.redmine.or.kr/projects/community/wiki/Redmine_%EC%84%A4%EC%B9%98_%EB%B0%8F_%EC%82%AC%EC%9A%A9%EB%B2%95

Redmine User Guide
  http://www.redmine.org/projects/redmine/wiki/Guide

Redmine Developer Guide
  http://www.redmine.org/projects/redmine/wiki/Developer_Guide


  1. 장점: 사용하기 편하며 각 PlugIn들을 이용하여 각 확장하기가 쉽다. 또한 다양한 SCM지원  
  2. 단점: 이를 별도로 Server에서 관리를 해야하니, 그게 단점?

  • Bugzilla
다른 사이트에서 사용되는 것만 보았으며, 직접 사용해본 경험이 없지만, 설치만 해본 경험은 있다. 
솔직히 나의 경우는 거의 Redmine을 사용할 것 같으며, 각 Plugin들이 확장이라서 편하다.

Bugzilla 특징
최근사이트를 들어가보니, 예전 보다는 많이 나아진것 같은데, 추후 시간이 되면 다시 설치해보고 말하겠다.
  https://www.bugzilla.org/features/
  https://en.wikipedia.org/wiki/Bugzilla

Bugzilla 사용법
  https://www.guru99.com/bugzilla-tutorial-for-beginners.html


  • Mantis
다른 사이트에서 사용되는 것만 보았으며, 직접 사용해본 경험이 없지만, 역시 설치만 해본 경험은 있다. 


Mantis 관련자료
솔직히 Mantis에 대해서는 별로 좋은 기억이 없어서, 뭐라고 말을 못하겠으며, 최근사이트 가보면, 이전보다는 나은 것 같다.
  https://www.mantisbt.org/


Mantis 사용법
  https://www.guru99.com/mantis-bug-tracker-tutorial.html


  • Trac
오래전에 개발 Server 직접 운영할때, SVN과 함께 사용해본 경험이 있으며, 그 때 당시에는 너무 획기적으로 좋았다. 
최근 TRAC사이트를 보니, 현재는 아래의 단점들이 없어진 것 같으나, 요즘은 거의 사용하는지 아는 것으로 보인다. 

내 기억으로는 사용하기 편했으나, 시스템이 자주 죽었으며, 디자인과 편의성이 나를 만족시켜준 것으로 기억한다.
  1. 장점: 사용하기 편하며 관리도 편했던 걸로 기억한다. 소스보기도 지원하여 괜찮았다. 
  2. 단점: 시스템이 자주 멈추고 죽는현상으로 좀 많이 고생을 했던 걸로 기억한다.

TRAC
  https://trac.edgewall.org/

최근에 본 TRAC 사이트 (802.11)
  http://warpproject.org/trac/



1.3  Cloud 기반의 GIT 제공 사이트 

Cloud기반의 GIT Service를 사용하면 일반적으로 ITS기능을 각 Cloud에서 제공을 해주고 있으며, 
ITS기능을 제공해주며, 이는 상위 Redmine과도 연동가능하다.


  • 대표적인 GIT Service 사이트
  1. Github
  2. Atlassian(Bitbucket)
  3. Gitlab


Github 사용법
  https://github.com/tadkim/infra/wiki/GitHub-::-%EA%B9%83%ED%97%88%EB%B8%8C-%EC%82%AC%EC%9A%A9%EB%B2%95-1

Github Issue List와 Eclipse 연결
    http://wiki.opf-labs.org/display/SP/Connecting+GitHub+Issues+lists+to+Eclipse

Gitlab 기능
    https://about.gitlab.com/features/

Gitlab Issue 관리
    https://www.lesstif.com/pages/viewpage.action?pageId=20775379



  • Atlassian의 JIRA 사용법 
Atlassian의 Bitbucket과 함께 제공해주는 ITS로 유료로 제공
  https://www.guru99.com/jira-tutorial-a-complete-guide-for-beginners.html

Atlassian의 Agile ALM
  http://www.curvc.com/curvc/solution/alm/agilealmwithatlassian



2. Redmine 설치방법 

다시 설치를 해보고, 이를 한번 사용해보고 추후 진행하겠음 

Wireshark를 이용하여 Window에서 USB 분석

1. Wireshark의 USB 분석 기능 

USB를 분석하기위해서는 별도의 USB 스니퍼 프로그램이 필요하며, 잘 설치된 경우 쉽게 Wireshark에서 분석가능하다.
회사 컴퓨터의 경우 USB 분석이 쉽게 잘되었는데, 이상하게 나의 개인노트북은 Wireshark에서 interface 부분에서 USB를 찾지를 못한다.

Wireshark의 USB의 분석기능의 핵심은 URB 분석이 될 것이며, 이는 USB Descriptor의 정의되어진 구조와 맞는지 확인을 하자.

이 부분을 조금씩 문제를 해결하기 위해서 아래와 같이 원인파악을 해보고 분석하려한다.

  • 개인 삼성 노트북의 USB 내부구성 
  1. USB Webcam 
  2. USB Buletooth 
  3. USB SD Card Reader (Host)
  4. Hub 구성 

상위와 같이 노트북 내부의 Device가 USB로 연결구성이 되어있다. (복잡하게 만들었군)
좀 더 확인을 하고자 하면 제어판의 장치관리자에서 확인하자.



  • USBPcap Driver 확인 
USB Capture를 위해 USBPcap Driver 설정확인



1.1 USBPcap 관련 설치 검증 및 관련 테스트 

일단 Hub의 각각의 Driver 정보를 확인하자.
그리고, Hub의 장치 Class GUID를 확인하자

  • USBPcap Class GUID 값 



  • 장치관리자에서 USB Hub의 장치클래스 GUID 확인
  1. 장치관리자->범용 직렬 버스 컨트롤러->Generic USB Hub->속성 
  2. 자세히->장치클래스 GUID 확인

       36FC9E60-C465-11CF-8056-444553540000


  • 레지스터 편집기에서 USBPCap 검색 
  1. regedit.exe를 실행
  2. 편집->찾기 USBPCap 검색
  3. 관련 장치 클래스 GUID 확인 

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class{36FC9E60-C465-11CF-8056-444553540000}\UpperFilters
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Class{36FC9E60-C465-11CF-8056-444553540000}\UpperFilters
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class{36FC9E60-C465-11CF-8056-444553540000}\UpperFilters

  https://github.com/desowin/usbpcap/issues/3



  • USBPcapCMD 값 Regedit 값 비교 
USBPcapCMD의 USBPcap1,2,3 과 같은 regedit에서 Class GUID를 찾지 못했다.


C:\Program Files\USBPcap\USBPcapCMD.exe 



USBPcap1,2,3을 Class GUID 아래와 같이 동일하지만 앞의 값은 다르다.
   f18a0e88-c30c-11d0-8815-00a0c906bed8

1 \\.\USBPcap1
  \??\USB#ROOT_HUB20#4&4f07082&0#{f18a0e88-c30c-11d0-8815-00a0c906bed8}
    [Port 1] Generic USB Hub
2 \\.\USBPcap2
  \??\USB#ROOT_HUB20#4&1c0cc4&0#{f18a0e88-c30c-11d0-8815-00a0c906bed8}
    [Port 1] Generic USB Hub
3 \\.\USBPcap3
  \??\IUSB3#ROOT_HUB30#4&1e43ead0&0#{f18a0e88-c30c-11d0-8815-00a0c906bed8} 


f18a0e88-c30c-11d0-8815-00a0c906bed8 관련사항
  https://docs.microsoft.com/en-us/windows-hardware/drivers/install/guid-devinterface-usb-hub


  • 레지스터 편집기 1차 검색
regedit에서 USBPcap 및 아래의 값으로 검색을 해보면 아래의 값을 찾을 수 있다
하지만 위와 동일 하지 않다. 장치 Class GUID가 맞지가 않다

ROOT_HUB20

  1. 4&4f07082&0
  2. 4&1c0cc4&0


  • 레지스터 편집기 2차 검색
f18a0e88-c30c-11d0-8815-00a0c906bed8로 검색을 해보면 USBPcap과 연결된 부분을 찾지를 못했다.

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\DeviceClasses{f18a0e88-c30c-11d0-8815-00a0c906bed8}

...


  • 개인노트북의 문제결론 
현재 내 개인 노트북은 USB가 꼬인것 같은데, 일단 직접 Command를 이용하여 각 기능을 기본으로 확인해보자.
아래와 같이 기본 캡쳐와 분석을 해보면 된다.
회사 컴퓨터는 잘되는데, 왜 내 개인 노트북이 문제인지 , 젠장.


2.1 USBPcapCMD이용한 기본 캡쳐 및 분석  

개인노트북에서 직접 USBPcapCMD 명령이용하여 USB 관련 부분을 캡쳐 해보고, 이를 분석해보자.
아래의 파일을 를 관리자 모드로 실행을 해주며,그냥 실행을 하였더니, WRITE가 허용이 되지 않았다.


C:\Program Files\USBPcap\USBPcapCMD.exe 


나의 개인노트북은 위와 같이 Filter 3번 (USBPcap3) 에 잡히는 것을 알수있으며, 우측 전용 USB3.0 Hub에 연결하여도, USB2.0 Hub에 부분에 연결해도 동일하다.
상위에 보듯이 Filter 3번 은 USB 3.0 Hub이며 이부분을 캡쳐해서 분석하자.

  • USB Data Capture 
  1. Select Filter to monitor를 Filter 3번(USBPcap3)로 설정
  2. 저장파일을 test.pcap 저장

  • Wireshark로 USB Data *.pcap 분석 
Ctrl+C로 캡쳐를 종료했다면 이제 test.pcap을 Wireshark를 이용하여 File->Open으로 test.pcap을 분석하자.

위와 같이 중요한 USB Descriptor 관련파일들을 확인을 할수가 있다.

USB Descriptor 부터 URB 분석까지 쉽게 분석이 가능



기본기능은 내노트북에서도 잘동작한다.

2.2 링크파일을 이용한 쉽게 이용 

상위 방법을 이제 간단히 링크로 만들어 쉽게 만들어보자.

  1. 바탕화면화면->새로만들기->바로가기 실행
  2. "C:\Program Files\USBPcap\USBPcapCMD.exe"



2.3  USBPcapCMD.exe 와 Wireshark.exe  기능확인 

cmd를 이용하여 USBPcapCMD.exe와 Wireshark.exe 옵션을 확인하자

C:\Users\JHLEE> cd C:\Program Files\USBPcap
C:\Program Files\USBPcap>USBPcapCMD.exe --help

C:\Program Files\USBPcap> cd C:\Program Files\Wireshark
C:\Program Files\Wireshark> wireshark.exe --help






2.4. Live Capture 기능 

개인노트북에서는 Wireshark에서 Interface가 USB가 잡히지 않아 아래와 같이 cmd.exe를 이용하여 강제로 실행을 했지만, Live Capture는 동작이 되지 않았다.

  • Live Capture 설정 
쉽게 파이프를 이용하여 아래와 같이 설정하자.
C:\Users\JHLEE> cd C:\Program Files\USBPcap
C:\Program Files\USBPcap>USBPcapCMD.exe -d \\.\USBPcap3 -o - | "C:\Program Files\Wireshark\Wireshark.exe" -k -i - 
Selected capture options result in empty capture.

캡쳐 중인 Wireshark 실행되고, 캡쳐모드로 동작하나 USB Capture는 동작되지 않는다.
원인분석을 위해서, 상위 로그내용을 "Selected .. " 부분을 소스에서 찾아보자

  • USBPcapCMD.exe 소스분석  
  start_capture 함수-> "Selected Capture options result.." 관련에러를 확인가능
  상위 에러가 발생하면 start capture 함수가 동작 되지 않는 것을 확인가능

  https://github.com/desowin/usbpcap/blob/master/USBPcapCMD/cmd.c


  • 단위 TEST 진행 
아래와 같이 설정변경하여 USBPcapCMD만  부분 TEST를 진행하자
-o 옵션에 파일명을 적고 실행해도 위와동일하게 에러 메시지를 본다.
하지만 -A 옵션을 추가하면 아래의 에러메시지는 없어지고 USBPcapCMD는 동작된다.

C:\Users\JHLEE> cd C:\Program Files\USBPcap
C:\Program Files\USBPcap>USBPcapCMD.exe -d \\.\USBPcap3 -o test.pcap
Selected capture options result in empty capture.

  • Live Capture 재설정 
이제 원인을 알았으니, 상위에러는 -A 옵션추가하여 다시 실행하면, 상위 에러로그는 사라지지만, Wireshark는 캡쳐 중일 뿐 아무런 동작되지 않는다.

또 다른 문제가 존재하는 것 같은데 추후 이부분을 더 알아보자.
(상위 장치 Class GUID 때문에  USB Interface를 잘 못찾는 느낌 인것 같은데)

C:\Users\JHLEE> cd C:\Program Files\USBPcap
C:\Program Files\USBPcap>USBPcapCMD.exe -d \\.\USBPcap3 -A -o - | "C:\Program Files\Wireshark\Wireshark.exe" -k -i -  

아래와 같이 Capture Interface에 "-" 추가 되었지만 동작되지 않는다.




USBPcapCMD.exe 기본설명서
  http://desowin.org/usbpcap/tour.html

다른 Window USB Driver 설정참조 (*.inf 파일)
  https://blog.sverrirs.com/2016/04/reverse-engineer-usb-protocol.html

WireShark 이용한 USB Capture 부분 
  http://www.packetinside.com/2011/04/usb.html
  https://wiki.wireshark.org/CaptureSetup/USB

4/10/2016

Wireshark로 RTSP 와 H.264 분석

1. 개발 분석 환경 

RTSP Protocol을 인식하지 못한다면, Port문제 일수 있으니, IP Address와 Port를 찾아 이 관련 Packet을 RTSP로 Decode 시키면 자동으로 RTP도 전부 인식이 된다.

  • Network 분석환경 
  1. TEST Device: IP Camera  ( Target Device)
  2. TEST Program:  VLC Player ( Host Device)

  • Host의 VLC Player 환경설정 
  1. VLC의 네트워크 스트림 열기-> 네트워크 설정
  2. rtsp://192.168.1.168:8557/PSIA/Streaming/channels/2?videoCodecType=H.264

WIFI CaptureSetup
  https://wiki.wireshark.org/CaptureSetup/WLAN
  https://www.acrylicwifi.com/en/blog/how-to-capture-wifi-traffic-using-wireshark-on-windows/

2. Wireshark 설치

  • Wireshark Download
  https://www.wireshark.org/download.html


3. Wireshark 분석 및 설정 

Wireshark의 사용법은 간단하며, Capture 를 진행한 후 분석하거나, 다른 Capture된 파일을 분석을 하면된다. 

3.1 Wireshark의 기본 Filter 사용법

필터는 말그대로 전체 패킷 중에서 본인 원하는 패킷을 필터링하여 보고 싶은 것만 보는 것이다. 
간단히 예를 들면 

       ip.addr eq 192.168.1.168  : ip 주소가 source or destistion 검색 

필터에 관련된 내용을 외울 필요는 없으며, 개별 패킷에서 본인이 필터링 하고자 하는부분
or 관련부분 
즉 예를 들면 TCP의 Port 부분에 적용하고 싶다면 그곳에서 우측마우스를 눌러 Apply as Filter 기능으로 선택하면된다. 

하지만 빠른 사용을 위해서 본인이 간단히 and 와 or 연산을 조합하여 정교한 필터를 만들자.

3.2 H.264 분석 

Wireshark에서 H.264의 NAL를 분석에 대해 알고 싶어 이부분을 찾았다. 
  1. Capture를 한 후 RTP 분석에서 Payload Type을 확인한다. 
  2. Edit->Preferences->Protocols->H264  (H264 dynamic payload type 설정) 
  3. RTP Payload Type 설정을 해준다. 

  • RTP Packet에서 Payload Type 확인  


  • H264 dynamic payload type: 96 


  • 아래와 같이 H.264 기본분석 가능 
H.264의 FU부분만 나오고 더 이상은 Decode 되지않아 문제가 발생 이 부분은 추후 다시 한번 TEST



  • H.264 Fragmentation Units(FU)

  https://tools.ietf.org/html/rfc3984#page-27


3.3 Statistics 기능 사용

Statistic에서는 다양한 기능을 제공하는 데, 이를 이용하여 Protocol의 Flow 와 사용빈도 와 구조도 를 세부 분석이 가능하다

  • Statistics->Protocol Hierarchy 
프로토콜 구조도라는데, 사용빈도도 확인할 수 있고, 전체 구조를 확인 가능하다.




  • Statistics->IO Graphs
필터에 본인이 원하는 필터를 넣어 증가 추세를 확인 및 추적이 가능하며 각 Line을 본인이 직접설정이 가능하다.



  • Statistics->Flow Graph  
Protocol의 전체분석이 쉬어지고, 보기도 너무 쉽다.



  http://stackoverflow.com/questions/26164442/decoding-rtp-payload-as-h264-using-wireshark
  https://ask.wireshark.org/questions/35544/how-i-know-it-is-h264-packet-capture
  https://www.wireshark.org/lists/wireshark-users/201007/msg00162.html
  https://www.wireshark.org/docs/dfref/h/h264.html