본문 바로가기

일상,취미44

[TIL 35일차] 운영체제의 가상화 오늘 한일오늘은 펌웨어 추출을 위한 스크립트 수정을 하느라 하루를 다 보낸 것 같다. 애초에 windows에서 binwalk나 unblob 같은 추출 기능들이 사용이 불가능하니 결국 docker에 올려서 추출하기로 했다. docker 설치하고.... 띄우고 docker 에서 command로 호출하는 shell 파일은 따로 파일별로 핸들링하는 python코드로 작성되어있다. 근데 shell파일에서 시스템 콜인 exec로 python "loacl file_path" 형식으로 호출하게 되면 exec는 해당 프로세스를 종료하고 특정 프로세스를 실행하기 때문에 그 뒤에 있는 코드들이 실행되지 않을수도 있다. 특정 파이썬 파일을 실행하고 이후에 실행될 코드가 존재한다면 python file_name 형식으로 실행하.. 2024. 8. 14.
[TIL 34일차] linux -> window 포팅에 대한 나의 생각 , 지난 한 주를 돌아보며 오늘 한일linux 파일시스템을 추출하는 기능을 window로 포팅하는 기능이 왜 안되는지 되게 하는 방법은 없는지 지난 2주동안 엄청 나게 서치해봤다. 기본적으로 파일시스템을 구성하는 구조가 엄연히 다르다는 것이다. linux는 슈퍼블록이나 inode 기반으로 이루어져 있는 구조 라고 한다면 MFT을 사용하거나, NTFS시스템으로 되어있기 때문에 이 동작자체가 원활하게 돌아간다는 보장도 없고, 중간에 코어모듈에서 사용된 모듈 함수 일부분은 shell을 이용하거나, yield 시스템 콜 호출 등 , linux posix 규격 호출을 사용하기 때문에 중간에 안되는 부분이 있을 것으로 보인다. 아직 내레벨에서 만들수 있는 기능은 아닌것 같아서 네이티브로 돌리는것보다는 wsl을 이용하거나 cygwin을 이용하.. 2024. 8. 10.
[TIL 33일차] roms 파일 체크 목록....그리고 코드를 대하는 나의 자세 오늘 한일window에서 바이너리 데이터를 추출할 일은 거의 없겠지만 romsfsck2 형식 파일을 추출하는 코드의 동작은 굉장히 복잡한거 같다. 분석해본 결과 일단 roms에서 사용할 수 있는 항목들을 분류하고 이후에 오류가 날수 있는 부분을  찾아야한다. 보통 심볼릭링크와 하드링크, 체크섬 하는 기능과 크기와 아이노드 체크, 파일 재귀적 탐색, 매직 바이트 체크 등에서 오류가 날수 있으므로 위에 항목은 기본적으로 체크해야한다. 보통 파일구조마다 커널 코드에 등록되어 있기 때문에 파일 분석 코드들을 보면 매직바이트를 비교하는게 일반적이다. 코드로 봐보면 다음과 같다. def verify_checksum(romfs_bytes): total = 0 int32 = 2 ** 32 for i .. 2024. 7. 30.
다시 시작하는 TIL 32일차 오늘 한일1주일 가까이 삽질하면서 나한테 어떤걸 시킨건지 아직 파악도 못하고 그냥 시킨거를 하고 있었는데 드디어 틀이 좀 잡힌거 같다. 파일을 추출하고 특정 형식에 맞게 자동으로 분류되는 실행파일이나 plugin 기능을 만드는것 이었다. 웬만한 iot나 임베디드, 펌웨어 관련 파일 시스템은 다 linux 관련 파일 시스템이라 window에서 이거를 다 파싱해서 분류해서 핸들링하고 실행파일로 만들라는건데...... 드디어 대표님의 의도를 파악한거 같다. 근데 문제는 알고나니까 솔직히 어떻게 해야될지 감도 안잡힌다. wsl이나 가상 환경을 linux로 만들어서 파일 결과물을 가져오기에는 리소스가 다른 플랫폼에 비해 과하게 많이들어서 이거를 서비스로 만들기는 어려울 거같은데 이거를 가상환경에 의지 않고 네이티.. 2024. 7. 27.