본문 바로가기

전체 글123

[TIL 53] 텍스트 파일과 바이너리 파일 탐지(구분)하는 법 파일의 분류이번에 파일 분석 작업을 진행하면서 텍스트 파일과 바이너리 파일을 구분하는 로직을 짜야되는 상황이 와서 여기저기 자료를 좀 찾아보는데 해당 자료는 비지니스 로직인 경우가 많아서 이론적인 내용밖에 얻을 수 없었다. 먼저 내가 생각한 파일 타입 감지는 단순해 보이지만 실제로는 여러 단계의 세밀한 검증이 필요한 작업이었다. 그냥 대충 ascii코드나 utf-8 인지 검사하면 된다고 생각하지만 실제로는 그렇게 검사하면 애초에 비효율적이다. 코어 로직에 넣는다고 하면 최대한 적게 검사하는게 이득이기 때문에.... 그렇다고 무조건적으로 이 방법을 써야하는건 아니다. 대충 인터넷을 뒤져도 완벽하게 구분할수있다고 단정지어 말하는 사람이 없다. 나 또한 그렇게 판단했다. 만약에 완벽한 방법이 있으면 댓글에 방.. 2025. 4. 25.
[TIL 52] pyinstaller 파일 실행시 print() 문제 발견 기존에 쓰던 파이썬 플러그인을 그냥 하나의 스크립트 실행 파일로 빼려고 pyinstaller --onefile을 하게 되었다. 기존 python 스크립트는 출력되는데 바이너리 파일로 바꿔서 사용하면 print() 이나 std.out 등이 출력되지 않는다. 이유를 찾아보니 pyinstaller는 기본적으로 콘솔없이 사용하게 된다. 즉 버퍼는 존재하지만 보내는 기능이 없어진거나 마찬가지다. --windowed : 이 옵션이 자동으로 들어가 있어서 이는 위와 같이 보내는 기능이 없어진다. 그래서 --noconsole 옵션을 넣어줘야한다. pyinstaller --onefile --noconsole "myfile.py" 대충 위처럼 올리면 된다. 하지만 --noconsole을 하게 되면 cmd창이 일.. 2025. 4. 8.
[TIL 51] 저널링에 대하여..... 저널링 웬만한 사람들은 굳이 겪을 일은 없겠지만 극한의 격리화된 상황에서의 개발시 파일 시스템을 이용시 단지 읽고 쓰고의 방식으로 구현 해놓으면 중간에 시스템에 문제가 갈 때 데이터의 무결성을 지켜주지 못할 확률이 존재한다. 우리 운영체제에서도 이와 같은 상황이 존재한다. 내가 머리가 안좋아서 잘못된 예시 일 수도 있는데 예를 들면 ext4 파일 시스템을 기반으로 하는 상황에서vi나 vim을 사용해서 특정 파일(text)를 작성한다고 했을 때, 텍스트 파일을 작성하면 해당 프로세스가 메모리 상위로 올라가게되는데 이 상황에서 작성한 텍스트들을 write 명령을 실행하면 디스크에 저장된다. 근데 시스템이 중간에 다운되면 write되었던 수정 데이터들은 적용이 안되고 오류가 생겨 파일이 손상 될 수 있다.그래.. 2025. 4. 8.
[TIL 50] windows defender로 인한 파일 삭제 파일 제외?특정 스크립트언어로 보안 모듈을 개발하고 돌리고 해당 스크립트에 압축해제가 있을 때, 특정 파일들만 압축이 안되는 경우가 있다. 개발 하면서 모두가 겪는 상황은 다르기 때문에 정확하게 말할 순 없지만 내가 처한 상황에서 생각 할 수 있는 것은  다음과 같다. 1. 해당 압축파일이 linux에서 사용하는 파일이라 메모리에 올린다음 가져와도 네이밍규칙 때문에 가져오지 못함.2. 운영체제 입장에서 읽을 수 없는 파일이다.3. 특정 조건 때문에 파일이 격리 되는 것 같다. 일단 1,2 번은 예외 처리 안해놓기도 해서 로직 내부에 따로 예외 처리를 해놨다. 특정 패키지를 메모리에 올리고 그대로 가져오는 방식이 대체적으로 일반적이지만 메모리 내부에 접근에서 이름 부분에 해당하는 부분을 수정해서 덮으면 이.. 2025. 3. 13.