2013-12-21 4 views
3

널 바이트가 아니라 하드 드라이브로 덮어 쓰려는 하드 드라이브가 있습니다.DD를 사용하여 특정 파일을 재귀 적으로 작성하십시오.

48 69 64 64 65 6E 20 = "숨겨진"

은 여기 내 명령은 지금까지의 :

echo "Hidden " > /myfile 
dd if=/myfile of=/dev/sdb bs=1M 

참고 : 나는 또한 아무 소용이 같은 수와 전환 등의 매개 변수의 한 assorment을 시도

이제 괜찮습니다. 내가 달릴 때 :

dd if=/dev/sdb | hexdump -C | less 

나는 처음 몇 바이트가 쓰여지는 것을 볼 수 있지만 나머지는 변경되지 않는다. 재귀 적으로 드라이브에 "숨김"을 쓰고 싶습니다.

+3

'반복적으로'가 아니라 '재귀 적으로'를 의미합니다. [Wikipedia의 재귀 참조] (https://en.wikipedia.org/wiki/Recursion_%28computer_science%29) – 1ace

+0

귀하의 질문에 이미 답변하고 받아 들였습니다. 그러나 여기에 몇 가지 타이핑을 저장하는 데 도움이되는 힌트가 있습니다 : 'dd if =/dev/sdb | hexdump -C | less' 다음 형식으로 쓸 수 있습니다 : 'hexdump -C/dev/sdb | less' – OmnipotentEntity

답변

11

나는에 이것을 시도하는 예비 디스크를 가지고 있지 않지만, 당신이 yes command to continuously push your string into the pipe 사용할 수 있습니다

yes "Hidden" | dd of=/dev/sdb 

dd가 전체 디스크를 작성하면 파이프가 닫히고이 명령이 완료된다고 가정합니다.

위의 내용은 "숨겨진"문자열을 줄 바꿈합니다.

yes "Hidden" | paste -d' ' -s - | dd of=/dev/sdb 

을 또는 당신은 널 (null)로 구분하려는 경우 : 당신이 그것을 공백으로 구분, 질문과 같이 원하는 경우에 당신은 할 수

yes "Hidden" | tr '\n' '\0' | dd of=/dev/sdb 
+0

이것은 그것을했다! 감사! 붙여 넣기 명령은 필수는 아니지만 Null 구분 기호가있는 깔끔한 명령입니다. – Goodies

+0

+1 내게도, 매일 무언가를 배우고,'yes' 명령을 들어 보지 못했습니다. –

+1

"숨김"을 공백으로 구분하기를 원하지 않는 한,'paste' 명령은 꼭 필요한 것은 아닙니다. 그렇지 않으면 개행 문자로 구분됩니다. 다행 당신을 위해 일했다! –

2

if 매개 변수를 지정하지 않으면 stdin에서 입력을 읽습니다.

dd of=/dev/sdb < for((i=0;i<100000;i++)); do echo 'Hidden '; done; 

100000의 가치는 분명히 적어도 diskSizeInBytes/strlen('Hidden ') 할 필요가 : 이것은 당신이 이런 일을 수행 할 수 있습니다.

내가 당신을 위해 이것을 테스트하지 않은 결과를 감안할했지만 작동한다고)

+0

흠집 ... 괄호를 사용하지 않는 것 같아서 아이디어를 얻었습니다. 'for ((i = 0; i <100000; i ++)); 에코 '숨김'| dd of =/dev/sdb; 첫 번째 바이트에 "숨김"을 100000 번 쓰는 것처럼 보입니다. – Goodies

+0

잘못 입력 한 것 같습니다. 이제 100000의 결합 출력을 파이프하는 대신 'dd'를 100000 번 시작합니다. 한 번 에코. 'dd' 호출 전체를 루프 밖으로 이동하십시오. –

2

dcfldd, DD의 포크, 몇 가지 추가 기능을 가지고 있습니다 유용하다고 생각할 수도 있습니다. 예를 들어, 귀하의 문제는 다음과 같이 해결할 수 있습니다 :

dcfldd textpattern="Hidden " of=/dev/sdb bs=1M 
관련 문제