본문 바로가기
Programming/ASN.1

ASN.1 BER 허겁지겁 만든 디코딩 뷰어

by Pendine 2021. 5. 25.
728x90

https://pendine.tistory.com/36

보완함

 

ASN 패킷 디코딩 뷰어 개편

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%26visibilit..

pendine.tistory.com

 

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

 

카테고리가 자바가 맞는지 ASN.1이 맞는지 모르겠지만

일단 ASN.1 디코딩을 위해 허겁지겁 개발했으므로 여기에 올리는게 맞는듯.

 

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

 

pendine/ASN.1PacketDataView

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

github.com

 

ASN.1 파일을 BER 에 따라서 나눠서 볼 수 있도록 변경함.

일단 어느정도 수준까지는 나눠서 보기 편하게 됐음.

 

테스트한 패킷은 하나만 갖고 했던거라 내일 테스트 통신할때 오류 생기면 빼박 손디코딩 해야함.

 

 

내가 사용했던 ASN.1 패킷

30 45 80 01 01 81 3C 30 3A 80 01 03 81 03 01 F8 AF 82 01 01 A3 28 81 00 83 00 85 00 A7 20 80 02 07 E2 81 01 01 82 01 02 83 01 00 84 01 00 85 01 09 A6 03 82 01 00 A7 06 80 01 F7 81 01 00 A4 03 82 01 00 82 02 A6 C5

 

손디코딩결과

30 45 
        80 01 01
        81 3C 
                30 3A 
                         80 01 03 
                         81 03 01 F8 AF 
                         82 01 01 

                         A3 28 
                                 81 00 
                                 83 00  
                                 85 00 
                                 A7 20 
                                         80 02 07 E2 
                                         81 01 01 
                                         82 01 02 
                                         83 01 00 
                                         84 01 00 
                                         85 01 09 
                                         A6 03 
                                                  82 01 00 
                                         A7 06 
                                                  80 01 F7
                                                  81 01 00 
                         A4 03 
                                   82 01 00
82 02 A6 C5

 

어느정도 완성됬다고 생각해서 깃허브에 백업해놓은 프로젝트

실행 후 결과

확인용 내뱉기 시작
	30 45
		80 01 01 81 3C 30 3A 80 01 03 81 03 01 F8 AF 82 01 01 A3 28 81 00 83 00 85 00 A7 20 80 02 07 E2 81 01 01 82 01 02 83 01 00 84 01 00 85 01 09 A6 03 82 01 00 A7 06 80 01 F7 81 01 00 A4 03 82 01 00 82 02 A6 C5 
		80 01
			01 
		81 3C
			30 3A 80 01 03 81 03 01 F8 AF 82 01 01 A3 28 81 00 83 00 85 00 A7 20 80 02 07 E2 81 01 01 82 01 02 83 01 00 84 01 00 85 01 09 A6 03 82 01 00 A7 06 80 01 F7 81 01 00 A4 03 82 01 00 
			30 3A
				80 01 03 81 03 01 F8 AF 82 01 01 A3 28 81 00 83 00 85 00 A7 20 80 02 07 E2 81 01 01 82 01 02 83 01 00 84 01 00 85 01 09 A6 03 82 01 00 A7 06 80 01 F7 81 01 00 A4 03 82 01 00 
				80 01
					03 
				81 03
					01 F8 AF 
				82 01
					01 
				A3 28
					81 00 83 00 85 00 A7 20 80 02 07 E2 81 01 01 82 01 02 83 01 00 84 01 00 85 01 09 A6 03 82 01 00 A7 06 80 01 F7 81 01 00 
					81 00
						
					83 00
						
					85 00
						
					A7 20
						80 02 07 E2 81 01 01 82 01 02 83 01 00 84 01 00 85 01 09 A6 03 82 01 00 A7 06 80 01 F7 81 01 00 
						80 02
							07 E2 
						81 01
							01 
						82 01
							02 
						83 01
							00 
						84 01
							00 
						85 01
							09 
						A6 03
							82 01 00 
						A7 06
							80 01 F7 81 01 00 
							80 01
								F7 
							81 01
								00 
				A4 03
					82 01 00 
		82 02
			A6 C5 

확인용 내뱉기 끝

내일 테스트하는데

어제 잠들기전에 너무 불안했음.

테스트 할때 오류가 나면 손으로 디코딩해야하는데

양식 바뀔때마다 손 디코딩 해야하는데 이게 과연 하루안에 끝날까 싶은 공포감

 

오늘 출근해서 1시간동안 구현된 프로젝트 다시 손보다가

허겁지겁 만든 결과물

 

동작 방식은 첫번째 헥스코드 (0x00) 부분은 TAG로 처리

이후 두번째 헥스코드는 길이로 판단하고 두번째 헥스코드를 숫자로 치환했을때 128보다 크거나 같으면

2개의 헥스코드를 읽고 처리하도록 했음.

 

이후 TLV 중 V에 해당하는 데이터의 길이가 3보다 크면

그 안에서 TLV 구조가 있는지 계속 확인하고 TLV 객체를 새로 생성, 이후 반복.

 

 

 

일반적인 TCP 패킷은 손 디코딩 하라면 할 수 있는데

ASN.1 패킷은 한번 보고나니 엄두가 안남.

 

728x90

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

ASN 패킷 BER 디코딩 뷰어 개편2  (0) 2021.12.16
ASN 패킷 BER 디코딩 뷰어 개편  (1) 2021.11.02
ASN.1 정리 ㄱㄱ  (2) 2021.09.30
DSRC 분석중  (0) 2021.06.30
ASN.1  (0) 2021.05.07

댓글