본문 바로가기

OS9

[TIL 53] 텍스트 파일과 바이너리 파일 탐지(구분)하는 법 파일의 분류이번에 파일 분석 작업을 진행하면서 텍스트 파일과 바이너리 파일을 구분하는 로직을 짜야되는 상황이 와서 여기저기 자료를 좀 찾아보는데 해당 자료는 비지니스 로직인 경우가 많아서 이론적인 내용밖에 얻을 수 없었다. 먼저 내가 생각한 파일 타입 감지는 단순해 보이지만 실제로는 여러 단계의 세밀한 검증이 필요한 작업이었다. 그냥 대충 ascii코드나 utf-8 인지 검사하면 된다고 생각하지만 실제로는 그렇게 검사하면 애초에 비효율적이다. 코어 로직에 넣는다고 하면 최대한 적게 검사하는게 이득이기 때문에.... 그렇다고 무조건적으로 이 방법을 써야하는건 아니다. 대충 인터넷을 뒤져도 완벽하게 구분할수있다고 단정지어 말하는 사람이 없다. 나 또한 그렇게 판단했다. 만약에 완벽한 방법이 있으면 댓글에 방.. 2025. 4. 25.
[TIL 48] 인증정보 관련 탐지 인증 정보 탐지 로직에 관해최근 새로 진행하는 프로젝트에서 인증 정보 관련되서 어떻게 잡아 낼 건지를 계속 찾아보고 고민도 많이 했는데 대체적으로 기본적으로 나와있는 CVE들은 머리에 그림이라도 그려지는데 인증 정보 관련되서 검사하는 로직은 많은 경우의 수가 있으므로 내가 스스로 생각해서 구현하기에는 무리가 있다고 본다.... 명시적으로 서비스 내로 들어오는 파일을 일일히 어떻게 확인 할 것인지 부터 구분하는 것과 해당 파일들 관련해서 어떻게 정리해서 보여줄 것인지 등등 생각하면 정말 많은 상황들이 있는 것 같다. 이런 당장 보여주는 상황 말고도 뒤에서 어떻게 해당 파일이 인증 관련 데이터인지 아닌지 파악하는 것도 처음 받았을 때는 난감한 문제가 아닐 수 없다. 이를 일일히 탐지하는 것이 굉장히 번거로운.. 2025. 2. 6.
[TIL 47] 파일의 읽기와 쓰기 보는입장에서는 우리가 파일을 열고 닫을 때 매우 간단한 동작이라고 착각하기 쉽다. 근데 실제로 컴퓨터 내부에는 엄청 많은 일들이 일어난다. 만약에 파일이 4KB 크기를 가지고 있다고 해보자. read()open('/foo/bar', 'O_RDONLY') 시스템 콜을 하면 파일 시스템은 먼저 파일 bar에 대한 아이노드를 찾아서 파일에 대한 기본적인 정보를 획득해야 한다.즉 파일 시스템은 아이노드를 찾아야한다. 경로명을 따라가는 것은 항상 파일 시스템의 루트에서 시작하며, 루트 디렉토리는 / 로 표시한다. 파일 시스템이 디스크에서 가장 먼저 읽을 것은 루트 디렉토리의 아이노드이다. 아이노드를 찾기 위해 i-number를 알아야하는데 이는 파일 시스템이 마운트 될 때 정해진다. 대부분의 Unix 파일 시스템.. 2025. 1. 22.
[TIL 46] 이론과 직접 느낀 파일 시스템 최근 근황 요즘 회사에서 개발하면서 느낀거지만 최근 우리가 프로그래밍에서 사용하는 파일을 읽어주는 함수들은 굉장히 추상화가 잘되어 있다. 특정 직군 아니면 파일과 관련된 깊은 내용은 크게 알 필요 없이 메뉴얼만 따라도 문제가 없기 떄문이다. 물론 나도 크게 파일과 관련되서 크게 신경을 쓰면서 살진 않았지만 최근에 엔진에 파일 탐색과 추출 관련 라이브러리 개발 및 기능을 추가하면서 구조를 파악하고 오류를 고칠일이 생겨서 고생을 좀 많이 했다. 결국에 내가 직접적으로 해결을 하진 못했지만 이번 기회에 파일이란 정말 자유롭고 복잡한 시스템이구나를 느꼈다. 여기에 봤던 자료들을 보면서 내용을 정리하려고 한다. inode 개인적으로 리눅스 관련 파일 업무를 처리하면서 느낀건 파일에서 가장 중요하다고 생각하는 i.. 2025. 1. 21.