
UNIX 명령을 배우려고 이 게임을 하고 있는데 지금은 정말 꼼짝 못 하고 있습니다. 나는 ssh를 통해 서버에 있고 디렉토리는 임의의 파일과 폴더로 가득 차 있으며 다음 레벨의 비밀번호는 파일 중 하나에 있습니다. 파일에 다음과 같은 속성이 있다고 들었습니다.
- 사람이 읽을 수 있는
- 1033바이트
- 실행 불가능
나는 명령을 사용해야 한다고 생각 find
하고 시도했지만 find ! -executable
많은 파일이 반환되었습니다. 매뉴얼이나 온라인에서 사람이 읽을 수 있는 유일한 도움말은 사람이 읽을 수 있는 형식으로 파일 크기를 인쇄하는 것입니다. 그래서 나는 거기에서 약간 길을 잃었습니까?
또한 시도했지만 find ~ -size 1033b
아무것도 반환되지 않았습니다. 그러나 시도했을 때 find ~ -size -1033b
디렉토리의 모든 파일이 반환되었습니다.
답변1
사람이 읽을 수 있는 파일 이름을 필터링하려면 [:print:]
(인쇄 가능)캐릭터 클래스이름. 이러한 클래스에 대한 자세한 내용은 의 매뉴얼에서 찾을 수 있습니다 grep
.
find . -type f -size 1033c -name "[[:print:]]*" ! -executable
다시 생각해 보면 "사람이 읽을 수 있는" 요구 사항은 파일 이름 대신 파일 내용을 참조할 수도 있습니다. 즉, 다음을 검색하게 됩니다.텍스트파일. 그건 좀 더 까다롭습니다. @D_Bye가 주석에서 제안한 대로 file
명령을 사용하여 파일 콘텐츠 유형을 결정해야 합니다. 그러나 file
파이프 뒤에서 실행하는 것은 파일 이름을 표시하는 작업을 복잡하게 만들기 때문에 좋은 생각이 아닙니다 . 제가 제안하는 것은 다음과 같습니다.
find . -type f -size 1033c ! -executable -exec sh -c 'file -b $0 | grep -q text' {} \; -print
-part의 작동 방식은 간략하게 다음과 같습니다 file
.
- 그만큼
-exec
조건자는 이전 조건(유형, 크기, 실행 불가능)을 모두 만족하는sh -c 'file -b $0 | grep -q text' FILENAME
각각에 대해 실행됩니다 .FILENAME
- 각 파일에 대해 쉘(
sh
)은 다음과 같이 짧게 실행됩니다.스크립트: , 파일 이름으로file -b $0 | grep -q text
바꿉니다 .$0
- 그만큼
file
프로그램은 각 파일의 콘텐츠 유형을 결정하고 이 정보를 출력합니다. 이-b
옵션은 테스트된 각 파일의 이름을 인쇄하는 것을 방지합니다. grep
프로그램 에서 나오는 출력을 필터링하고file
다음을 포함하는 행을 검색합니다."텍스트". (file
명령의 일반적인 출력이 어떻게 보이는지 직접 확인하십시오 .)- 하지만
grep
필터링된 텍스트는 출력하지 않습니다.-q
(조용함) 옵션이 제공됩니다. 그것이 하는 일은 단지 그것을 바꾸는 것입니다.종료 상태0
("true" - 필터링된 텍스트를 나타냄) 또는 1("오류"를 의미 - 텍스트 )"텍스트") 의 출력에는 나타나지 않았습니다file
. - 에서 나오는 참/거짓 종료 상태는 으로
grep
전달되어 전체 " " 테스트의 최종 결과로 작용합니다.sh
find
-exec sh -c 'file $0 | grep -q text' {} \;
- 위 테스트가 반환된 경우진실,
-print
명령이 실행됩니다(즉, 테스트된 파일의 이름이 인쇄됩니다).
답변2
find . -type f -readable -size 1033c ! -executable
파일 크기 c
대신에 사용했습니다 . 512바이트 블록용입니다. 실제 바이트용입니다.b
b
c
답변3
내가 쓴 것은 다음과 같습니다.
find -size 1033c ! -executable
그리고 파일을 받았습니다. 분명히 인간이 읽을 수 있는 부분은 당신을 쫓아내는 것이었습니다.
답변4
나는 게임에 대해 생각하지만 올바른 구문은 다음과 같습니다.
file ./*
각 파일이 무엇으로 구성되어 있는지 나열하는 결과를 받게 됩니다. Bandit 게임에서 달성하려는 작업에 정말 효과적이었습니다. 이 작업의 실제 변화구는 각 파일이 -(하이픈)으로 시작한다는 것입니다.