# dd if=2013-Aug-uptime.csv bs=1 count=1 skip=3 2> /dev/null
d
# dd if=2013-Aug-uptime.csv bs=1 count=1 skip=0x3 2> /dev/null
f
두 번째 명령이 다른 값을 출력하는 이유는 무엇입니까?
건너 뛰기 오프셋을 dd
16 진수 값 으로 전달할 수 있습니까?
답변
두 번째 명령이 다른 값을 출력하는 이유는 무엇입니까?
역사적 이유로 곱셈 연산자로 dd
간주 x
됩니다. 따라서 0x3
0으로 평가됩니다.
건너 뛰기 오프셋을 16 진수 값으로 dd에 전달할 수 있습니까?
내가 아는 한 직접적이지 않습니다. 연산자를 사용한 곱셈뿐만 아니라 “곱하기 512″(0x200) 를 의미하고 “1024 곱하기”(0x400) 를 의미 x
하는 숫자를 접미사로 붙일 수 있습니다 . GNU는 접미사를 사용하여 직접 dd , , , , , 및 는 각각 (20)의 전원, 30, 40, 50, 60, 70, 80 또는 90로 2 곱셈 의미하고 상부 사용하거나 제외 소문자 수 에 대한 접미사. (다른 접미사도 많이 있습니다. 예를 들어 “곱하기 10 18 “을 의미하고 “곱하기 2 50 “을 의미 합니다. GNU 설치가있는 경우 자세한 내용을 참조하십시오 .)b
K
M
G
T
P
E
Z
Y
b
EB
PiB
info coreutils "block size"
위와 같은 비전적이고, 시대에 뒤 떨어지고, 괴짜가 터무니없는 점을 발견 할 수 있습니다. 걱정하지 마십시오 : 당신은 혼자가 아닙니다. 다행스럽게도, 당신은 그것을 모두 무시하고 대신 쉘의 산술 대체를 사용할 수 있습니다 (bash와 다른 Posix 호환 쉘뿐만 아니라 일부 Posix 쉘도 작동합니다). 쉘은 16 진수를 이해하며 일반적인 방식으로 작성된 광범위한 산술 연산자를 허용합니다. 표현식을 $((...))
다음 과 같이 둘러싸면됩니다 .
# dd if=2013-Aug-uptime.csv bs=1 count=$((0x2B * 1024)) skip=$((0x37))
답변
나는 이것이 오래된 스레드라는 것을 알고 있지만, 나 같은 바보가 가고 실수로 fileB가 아직 백업되지 않은 git에 체크인하지 않은 경우 bash 기록에서 ‘cp fileA fileB’를 실수로 리콜 및 호출 할 때 문제는 여전히 역사적입니다. 밤새도록 몇 시간 동안 코딩하고 :-/
이 스레드의 개념 덕분에 손실 된 파일을 완전히 복구 할 수 있었지만 32Gb 디스크와 매우 작은 RAM (Ubuntu 18.04 실행)이있는 원격 Virtual Private Server에서 ‘grep’을 사용하여 모든 attemtps를 잃어 버렸습니다. 위의 ‘메모리 부족’으로 빠르게 사망
내 경우에는 hexdump -C /dev/sdX1 | grep 'shortString'
내 구조에 온 것이 었습니다 . grep과는 달리 16 진수의 매우 narroy ASCII 표현 만 표시하므로 짧고 고유 한 문자열 만 찾아서 감쌀 수 있음을 명심해야합니다. 일치하는 16 진수 주소를 출력하면 위와 비슷한 방식으로 ‘dd’를 사용할 수 있었지만 기본적으로 블록 크기가 4096 인 것으로 보인 것을 제외하고는 16 진수 바이트 주소를 10 진수로 변환하지만 4096으로 나누면 dd의 skip 매개 변수에 대해 4k 블록으로 크기를 조정할 수 있습니다.이 숫자가 dd에 비해 너무 큰 경우 오류 메시지는 skip=
전달 된 숫자가 아니라 유효하지 않은 것에 대해 불평하는 것처럼 보입니다. .
bash를 사용하여 $((0xabcd))
easilty obtaion hex-> dec conversion :-)에 대한 팁을 추가 한 사람들에게
내 마지막 단어-내 경우에는 같은 파일의 사본이 모두 가까이에있었습니다. 그러나 hexdump 가보고 한 가장 높은 주소에서 가장 낮은 주소를 빼면 가능한 모든 사본이 포함 된 ~ 5MB 영역을 식별 할 수 있었으므로 가장 낮은 주소에서 dd를 대상으로하고 전체 영역을 임시 파일로 추출 할 수있었습니다. Vim 편집기는 이제 바이너리 컨텐츠를 상당히 정상적으로 처리하므로 임시 파일을 검사하고 필요에 따라 재구성 할 수 있습니다.