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
- 각 파일에 대해 shell(
sh
)이 이 짧은 시간 동안 실행됩니다.스크립트:file -b $0 | grep -q text
,$0
파일 이름으로 대체됩니다. - 이것
file
프로그램은 각 파일의 콘텐츠 유형을 결정하고 해당 정보를 출력합니다. 이-b
옵션은 각 테스트 파일의 이름이 인쇄되는 것을 방지합니다. grep
file
다음을 포함하는 행을 검색하여 프로그램의 출력을 필터링합니다."텍스트". (file
이 명령의 일반적인 출력이 어떻게 나타나는지 직접 확인하십시오 .)- 하지만
grep
필터링된 텍스트는 출력하지 않습니다.-q
(조용히) 선택권을 주세요. 그것이 하는 일은 그것을 바꾸는 것뿐이다.종료 상태("true" - 필터링된 텍스트를 의미) 또는0
1("false"를 의미 - 텍스트)"텍스트"file
)의 출력 에는 나타나지 않습니다 . - 의 true/false 종료 상태는 으로 전달되어
grep
전체 " " 테스트의 최종 결과로 사용됩니다.sh
find
-exec sh -c 'file $0 | grep -q text' {} \;
- 위 테스트가 반환되는 경우진짜,
-print
명령이 실행됩니다(즉, 테스트 중인 파일 이름이 인쇄됩니다).
답변2
find . -type f -readable -size 1033c ! -executable
c
파일 크기 대신 파일 크기를 사용하고 있습니다 b
. b
512바이트 블록에 적용됩니다. c
실제 바이트의 경우.
답변3
내가 쓴 것은 다음과 같습니다.
find -size 1033c ! -executable
그리고 파일을 받았습니다. 분명히 사람이 읽을 수 있는 부분은 실패할 것입니다.
답변4
게임의 올바른 구문은 다음과 같습니다.
file ./*
각 파일의 구성 요소가 나열된 반환 메시지를 받게 됩니다. 이는 Bandit 게임에서 달성하고자 하는 목표에 완벽합니다. 이 작업의 실제 변화구는 모든 파일이 -(하이픈)으로 시작한다는 것입니다.