공부 52

cFS 설치 및 실행하는방법

Part1 - Setup아래 깃허브 링크에서 cFS를 git clone 해준다.https://github.com/nasa/cFS GitHub - nasa/cFS: The Core Flight System (cFS)The Core Flight System (cFS). Contribute to nasa/cFS development by creating an account on GitHub.github.comgit clone https://github.com/nasa/cFS.gitcd cFS# submodule 설치git checkout bootes-rc2git submodule initgit submodule update 이때 submodule update를 해주면 아래와 같이 뜨며cFS/apps/*cFS/..

공부/SPACE 2024.04.22

C언어 가변인자함수 구현 (...)

C 언어에서 ... 키워드는 가변 인자 목록(variadic arguments)을 의미합니다. 이 키워드는 함수가 고정된 수의 인자 대신 다양한 수의 인자를 받을 수 있게 해 줍니다. 이는 특히 여러 다른 타입의 인자를 다루거나, 호출 시점에 정확한 인자의 수가 결정되지 않는 경우에 유용합니다. 가변 인자 함수의 구현 방법 가변 인자 함수를 구현할 때는 다음과 같은 표준 라이브러리 매크로를 사용합니다: va_list: 인자 목록을 처리하기 위한 변수 타입입니다. va_start: 가변 인자 목록의 초기화를 시작합니다. 첫 번째 매크로 인자는 va_list 타입이고, 두 번째는 가변 인자 바로 앞의 고정된 인자입니다. va_arg: 가변 인자 목록에서 다음 인자를 가져옵니다. 이 매크로는 리스트와 반환할 ..

공부/이모저모 2024.04.12

Stub 함수란

Stub이란? "Stub"은 소프트웨어 개발과 테스트에서 사용되는 용어로, 특히 단위 테스트에서 중요한 역할을 합니다. Stub은 실제로 구현된 복잡한 로직이나 외부 시스템과의 연결을 대신하는 간단하고 제어 가능한 구현을 제공합니다. 이를 통해 개발자는 테스트하고자 하는 부분에 집중할 수 있으며, 테스트가 외부 요소의 영향을 받지 않도록 보장합니다. Stub의 주요 용도: 의존성 제거: Stub을 사용하여 데이터베이스, 네트워크 호출, 하드웨어 입력 등 외부 시스템과의 의존성을 제거할 수 있습니다. 테스트 간소화: 테스트할 시스템을 보다 단순화하여, 오류를 찾기 쉽고 테스트를 빠르게 실행할 수 있습니다. 결과 예측 가능: Stub은 예측 가능한 값을 반환함으로써 테스트 결과의 일관성을 보장합니다. 상태 ..

공부 2024.04.12

git submodule 기능 (git submodule init / git submodule update)

git submodule init과 git submodule update 명령어는 Git의 서브모듈과 관련된 명령어입니다. 서브모듈은 다른 저장소를 현재 저장소의 하위 디렉토리로 포함시키고 싶을 때 사용합니다. 이를 통해 외부 라이브러리나 공통으로 사용되는 구성 요소들을 관리할 수 있습니다. git submodule init 이 명령어는 서브모듈을 초기화합니다. 즉, .gitmodules 파일에 기록된 서브모듈의 정보를 로컬 .git/config 파일로 복사합니다. 이 과정에서 서브모듈의 URL과 브랜치 정보가 설정되지만, 실제로 서브모듈의 콘텐츠를 다운로드하진 않습니다. 서브모듈을 처음으로 추가할 때나, .gitmodules 파일이 변경되었을 때 필요합니다. git submodule update 이 명..

공부/이모저모 2024.03.25

Ubuntu에서 sys/syscall.h: No such file or directory 해결

위와 같이 -m32 옵션을 주어 32비트로 바이너리를 컴파일하려고할때 다음과 같이 오류가 발생하는 경우가 있다. fatal error: sys/syscall.h: No such file or directory 1 | #include | ^~~~~~~~~~~~~~~ compilation terminated. make: *** [Makefile:13: shellcode.o] Error 1 sys/syscall.h는 리눅스의 표준 C라이브러리의 일부이기 때문에 윈도우에서 실행했을때는 해당 라이브러리를 못찾을 수 있지만, 우분투에서 찾지못하는건 상당히 당황스럽다. 우분투에서 우분투의 표준 C 라이브러리가 설치되지않은 상황이기때문에, 이를 적절히 설치해주면된다. 64비트의 경우 : 64비트 시스템에서 32비트 어..

공부/이모저모 2024.03.13

위성 서비스를 사용하는 user segment에서 space segment로 데이터를 전송하는 경로

본래 user segment는 위성에서 제공하는 서비스를 수신하는 역할을 주로한다. 예를들어 TV 방송, 인터넷 서비스, GPS 신호 등이 포함된다. 하지만 특별한 경우 user segment에서 위성으로 데이터 요청을 보내는 상황이 있을 수 있다. 예를들어 위성 기반의 지구 관측 서비스에서 사용자가 특정 지역의 이미지 캡처를 요청할 수 있다. 이 경우, 사용자의 요청은 위성에게 특정 작업을 수행하도록 지시하는 트래픽을 생성하며, 이 트래픽은 PDHS에 의해 처리된다. 이때 논문 그림에 나타는 PD Fetcher로 직접 데이터를 전송하는 것이 아니다. 사용자 단말기(user segment)에서 발생한 트래픽을 기지국으로 전달하여 기지국에서 TC 형태로 전달한다. 이 TC는 PLCOM Rx → PLCOM ..

공부/이모저모 2024.03.11

Ubuntu에 ida free 설치하는 방법 (설치후 qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found 문제해결)

아래 주소에서 IDA Free for Linux 설치 idafree84_linux.run 다운 받은 뒤에 chmod +x idafree84_linux.run ./idafree84_linux.run xcb 오류해결 sudo apt-get update sudo apt-get install -y qt5-default libxcb-xinerama0-dev qt5-default가 설치가 안되면 아래로 해결 sudo apt-get install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools https://csm-kr.tistory.com/114 qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in error 해결하기..

공부/이모저모 2024.03.11

인공위성 펌웨어 해킹을 위한 인공위성관련 용어정리

Satellite Operations Components 관련 용어 ground segment satellite operation의 센터. operators 팀이 GroundStation(GS, 기지국)을 이용해 위성에게 instruction(TC)을 보냄 TC(Telecommand) : GS → 위성 보내는 instruction TM(Telemetry) : 위성 → GS로 보내는 응답 information (about the satellite’s status, errors, and other metrics) TC는 space protocol(우주 프로토콜)을 사용하며 TC와 TM 데이터의 조합을 TC/TM traffic이라함 space segment satellite operation에 필요한 모든 s..

공부/이모저모 2024.03.11

Xu et al. Neural Network-based Graph Embedding for Cross-Platform Binary Code Similarity Detection. (CCS 2017) 요약

ABSTRACT cross-platfrom 바이너리 코드 유사성 탐지는 approximate graphmatching algorithms에 의존한다. 이 방식은 느리고 정확하지않음 이에 신경망을 기반으로 바이너리 코드 유사성을 탐지하는 방법을 제안한다. 이를통해 취약한 펌웨어를 잘 식별하고 Deep learning for Security의 성공사례를 제시 INTRODUCTION 바이너리 코드 유사성 감지는 표절 감지, 악성 코드 감지, 취약점 검색 등 다양한 보안 응용 분야에서 활용되며 점점 바이너리 코드 유사성 감지가 주목받고 있음 특히 IOT 펌웨어 이미지에서 취약점 검색은 매우 중요함 단일 소스 코드 수준의 버그가 다양한 하드웨어 아키텍처와 소프트웨어 플랫폼을 가진 수백 개 이상의 기기에 퍼질 수 ..

C++ 클래스 안의 멤버함수 const 키워드

함수 뒤의 const C++ 을 이용해 개발하다 보면 클래스의 멤버함수안에 아래와 같은 문구를 마주할 수도있다. unsigned int get_data(int) const; unsigned int -> return type (int) -> 매개변수 인 것은 알겠는데, 함수 뒤에 붙는 const가 뭘까? chat gpt에 물어보니, 아래와 같이 대답했다. const 키워드는 이 함수가 해당 객체의 멤버 함수임을 나타냅니다. 이것은 멤버 함수가 객체의 상태를 변경하지 않음을 보장합니다. 이해가 잘 안된다. 왜냐하면 const의 의미는 주로 변수에 사용될때 const int num = 10; 와 같이 쓰여 num이라는 변수(본인) 자체를 바꿀 수 없다는 키워드로 사용되는데, (그러니까 나는 안바뀔꺼니까 (상수..

공부/이모저모 2024.02.13
728x90