본문 바로가기
Programming/ASN.1

ASN 패킷 BER 디코딩 뷰어 개편

by Pendine 2021. 11. 2.
728x90

https://pendine.tistory.com/43?category=967064 

윗글도 봐주세여 ↑

 

ASN 패킷 BER 디코딩 뷰어 개편2

https://pendine.tistory.com/36?category=967064 ASN 패킷 BER 디코딩 뷰어 개편 https://pendine.tistory.com/17 위글을 보완하기 위해 작성함 https://pendine.tistory.com/manage/newpost/17?type=post&return..

pendine.tistory.com

 

-----------------------------------------------

https://pendine.tistory.com/17

위글을 보완하기 위해 작성함

 

https://pendine.tistory.com/manage/newpost/17?type=post&returnURL=https%3A%2F%2Fpendine.tistory.com%2Fmanage%2Fposts%2F%3Fcategory%3D-3%26page%3D2%26searchKeyword%3D%26searchType%3Dtitle%26visibility%3Dall

 

pendine.tistory.com

https://github.com/pendine/ASN.1PacketDataView

깃허브 주소

 

GitHub - pendine/ASN.1PacketDataView: BER 에 따라 받은 ASN.1 양식의 패킷을 보기위한 프로젝트

BER 에 따라 받은 ASN.1 양식의 패킷을 보기위한 프로젝트. Contribute to pendine/ASN.1PacketDataView development by creating an account on GitHub.

github.com

 

 

byteArray length : 96
30 5E 80 01 01 81 55 30 53 80 00 81 01 01 82 01 00 A3 00 A4 47 A2 45 80 0C 54 45 53 54 5F 43 4C 49 45 4E 54 00 81 0C 54 45 53 54 5F 53 45 52 56 45 52 00 82 09 74 65 73 74 5F 75 73 65 72 83 09 74 65 73 74 5F 70 61 73 73 A4 04 06 02 51 01 85 01 28 86 01 0A 87 01 01 88 02 10 00 82 02 8E 80 
----------------------------------------------------
 grade : 0 TAG : 30 Length : 5E(94) Value : 800101815530538000810101820100A300A447A245800C544553545F434C49454E5400810C544553545F534552564552008209746573745F757365728309746573745F70617373A4040602510185012886010A8701018802100082028E80
 grade : 1 TAG : 80 Length : 01(1) Value : 01
 grade : 1 TAG : 81 Length : 55(85) Value : 30538000810101820100A300A447A245800C544553545F434C49454E5400810C544553545F534552564552008209746573745F757365728309746573745F70617373A4040602510185012886010A87010188021000
 grade : 2 TAG : 30 Length : 53(83) Value : 8000810101820100A300A447A245800C544553545F434C49454E5400810C544553545F534552564552008209746573745F757365728309746573745F70617373A4040602510185012886010A87010188021000
 grade : 3 TAG : 80 Length : 00(0) Value : null
 grade : 3 TAG : 81 Length : 01(1) Value : 01
 grade : 3 TAG : 82 Length : 01(1) Value : 00
 grade : 3 TAG : A3 Length : 00(0) Value : null
 grade : 3 TAG : A4 Length : 47(71) Value : A245800C544553545F434C49454E5400810C544553545F534552564552008209746573745F757365728309746573745F70617373A4040602510185012886010A87010188021000
 grade : 4 TAG : A2 Length : 45(69) Value : 800C544553545F434C49454E5400810C544553545F534552564552008209746573745F757365728309746573745F70617373A4040602510185012886010A87010188021000
 grade : 5 TAG : 80 Length : 0C(12) Value : 544553545F434C49454E5400
 grade : 5 TAG : 81 Length : 0C(12) Value : 544553545F53455256455200
 grade : 5 TAG : 82 Length : 09(9) Value : 746573745F75736572
 grade : 5 TAG : 83 Length : 09(9) Value : 746573745F70617373
 grade : 1 TAG : 82 Length : 02(2) Value : 8E80
끝

30 5E
	800101815530538000810101820100A300A447A245800C544553545F434C49454E5400810C544553545F534552564552008209746573745F757365728309746573745F70617373A4040602510185012886010A8701018802100082028E80
	80 01
		01
	81 55
		30538000810101820100A300A447A245800C544553545F434C49454E5400810C544553545F534552564552008209746573745F757365728309746573745F70617373A4040602510185012886010A87010188021000
		30 53
			8000810101820100A300A447A245800C544553545F434C49454E5400810C544553545F534552564552008209746573745F757365728309746573745F70617373A4040602510185012886010A87010188021000
			80 00
				
			81 01
				01
			82 01
				00
			A3 00
				
			A4 47
				A245800C544553545F434C49454E5400810C544553545F534552564552008209746573745F757365728309746573745F70617373A4040602510185012886010A87010188021000
				A2 45
					800C544553545F434C49454E5400810C544553545F534552564552008209746573745F757365728309746573745F70617373A4040602510185012886010A87010188021000
					80 0C
						544553545F434C49454E5400
					81 0C
						544553545F53455256455200
					82 09
						746573745F75736572
					83 09
						746573745F70617373
	82 02
		8E80

소스는 일단 너무 허접하다.

 

대충 넘어가고 사용하는 방법.

메인클래스 ASN_VIEW_Main 에서

 

헥스스트링일 경우 -----------

헥스스트링 을 String 객체에 삽입하고

공백 삭제 후, 문자열 길이가 2로 나누어서 나머지가 있는지 확인 (문자열 무결성 확인)

 

바이트 배열일경우 ----------

치환이나 무결성 확인할 필요 없음.

 

TLV2 객체를 생성하여,

확인할 데이터인 헥스스트링 을 바이트배열로 치환하거나 해당 바이트 배열을 인자값으로 넣어준다.

TLV2에서 요구하는 인자값은 바이트배열이다.

TLV2 ( 바이트배열, 0, 바이트배열의길이, 0 ) 으로 초기화 하여 가시화를 하면

본문 최 상단의 형태로 출력된다.

//객체 생성.  ( 바이트배열, 0, 바이트배열의길이, 0 ) 
TLV2 tlv2 = new TLV2( byteArray , 0 , byteArray.length , 0);
//패킷 정리
tlv2.doIt();
	
//가시화
System.out.println( tlv2.getString() );

 

다만 본 소스코드에서 TAG정보가 부족하여

구조체 판단시

구조체의 태그가 30, 31, A2, A4 가 아닌경우

구조체로 판단하지 못하므로 해당 태그값 변경 혹은 추가가 필요함.

728x90

'Programming > ASN.1' 카테고리의 다른 글

[ASN.1] 메시지 디코딩오류  (0) 2022.09.21
ASN 패킷 BER 디코딩 뷰어 개편2  (0) 2021.12.16
ASN.1 정리 ㄱㄱ  (2) 2021.09.30
DSRC 분석중  (0) 2021.06.30
ASN.1 BER 허겁지겁 만든 디코딩 뷰어  (1) 2021.05.25

댓글