오늘 저는 다음 명령을 사용하여 Linux 시스템에서 오래된 USB3 플래시 8GB 드라이브를 해킹했습니다.
dd if=/dev/random of=/dev/sdb
그런 다음 Windows PC에 넣었더니 포맷하라고 하더군요. 4k 블록 크기, fat32 등과 같은 기본값을 사용하여 확장 포맷을 하고, 필요한 일부 파일을 복사하여 내 폴더에 넣었습니다. fdisk에서는 이렇게 말합니다. 새로 설치된 debian 12 시스템에서:
Disk /dev/sdb: 7.32 GiB, 7864320000 bytes, 15360000 sectors
Disk model: ****************
Units: sector of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minum/optimal): 512 bytes/ 512 bytes
Disklabel type: dos
Disk identifier: 0x********
Device Boot Start End Sectors Size Id Type
/dev/sdb1 778135908 1919645538 1141509631 544.3G 72 unknown
/dev/sdb2 168689522 2104717761 1936028240 923.2G 65 Novell Netware 386
/dev/sdb3 1869881465 3805909656 1936028192 923.2G 79 unknown
/dev/sdb4 2885681152 2885736650 55499 27.1M d unknown
Partition table entries are not in disk order.
USB 드라이브에 4개의 파티션이 있는 이유는 무엇입니까? 그 중 2개는 약 900Gig이고, 8GB USB 드라이브에는 500개의 파티션이 있습니까? 이것은 Windows 컴퓨터 용으로 제작 되었습니까? Windows에서 포맷하는 동안 확장 포맷(제로 패딩)을 명시적으로 요청했습니다.
다음을 사용하여 드라이브를 마운트해 보았습니다.
mount -t vfat /dev/sdb /mnt/flashdrive
콘텐츠가 올바르게 설치되었으며 Windows 컴퓨터에서 복사한 파일도 거기에 있었습니다.
드라이브가 어떤 종류의 바이러스에 의해 손상되었거나 하이재킹된 것으로 간주해야 합니까? 이 드라이브를 신뢰할 수 있습니까? 아니면 보안 문제로 고려해야 합니까? 어쩌면 fdisk 오류일까요?
감사해요
나는 그것이 무작위 데이터를 쓰고 있다는 사실과 관련이 있을 수 있다고 생각했습니다. 아마도 MBR 섹터의 무작위 데이터로 인해 드라이브에 여러 파티션이 있을 수 있지만 그렇지 않습니다. 3개의 동일한 플래시 드라이브가 있고 이번에는 동일한 프로세스를 반복하여 사용했습니다. dd if=/dev/zero
3개의 동일한 플래시 드라이브가 있었고 이번에는 대신 사용했습니다.무작위의동일한 결과를 얻습니다.
나에게 있어 Windows는 드라이브를 작동하는 fat32 플래시 드라이브로 만드는 이상한 방식으로 드라이브를 포맷하지만 fdisk와 gdisk는 미친 짓으로 만듭니다.
드라이브를 Acronis Disk Director에 넣으려고 시도했는데 fat32 플래시 드라이브로 올바르게 감지되었지만 Acronis Disk Director는 여전히 Linux 배포판이므로 콘솔로 전환하고 fdisk -l을 실행하면 동일한 이상한 파티션 구성표가 발생합니다. Acronis GUI는 모든 것을 올바르게 감지하지만 콘솔 fdisk는 그렇지 않습니다. 그러나 Acronis GUI는 "슈퍼 플로피"라고도 불리는 기본 파티션의 포맷을 허용하더라도 디스크 정리, 추가 파티션 생성 등을 허용하지 않습니다.
제조업체가 USB 드라이브를 만든 방법에 문제가 있을 수 있습니까?
편집: gdisk 출력을 추가했습니다.
gdisk -l /dev/sdb
GPT fdisk (gdisk) version 1.0.9
Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present
***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory.
***************************************************************
Exact type not match not found for type code 7200; assigning type code for
'Linux filesystem'
Exact type not match not found for type code 6500; assigning type code for
'Linux filesystem'
Exact type not match not found for type code 7900; assigning type code for
'Linux filesystem'
Exact type not match not found for type code 0D00; assigning type code for
'Linux filesystem'
Warning! Secondary partition table overlaps the last partition by
3790549690 blocks!
You will need to delete this partition or resize it in another utility.
Model: DataTraveler 3.0
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): *************************
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 15359966
Partitions will be aligned on 1-sector boundaries
Total free space is 15359933 sectors (7.3 GiB)
Number Start (sector) End(sector) Size Code Name
1 778135908 1919645538 544.3 GiB 8300 Linux filesystem
2 168689522 2104717761 923.2 GiB 8300 Linux filesystem
3 1869881465 3805909656 923.2 GiB 8300 Linux filesystem
4 2885681152 2885736650 21.7 MiB 8300 Linux filesystem
답변1
Windows 확장 형식에 대해서는 잘 모르지만 " mount -t vfat /dev/sdb /mnt/flashdrive
올바른 설치"에 대해 말씀하신 내용이 유용한 힌트를 제공합니다.
이 명령을 사용하면 파티션( 등) 중 하나 대신 전체 드라이브를 마운트하게 /dev/sdb1
됩니다 /dev/sdb2
. 이는 Windows가 파티션 테이블을 생성하지 않고 각 섹터(첫 번째 섹터부터 마지막 섹터까지)를 VFAT 영역으로 사용한다는 의미입니다.
파티션 테이블이 없으면 표시된 내용 fdisk
은 gdisk
전혀 관련이 없습니다.
드라이브가 손상된 것으로 간주해야 합니까?
fdisk
아니요, (또는)을 사용하여 "파티션 테이블"을 저장하지 않는 한 gdisk
.
아니면 어떤 종류의 바이러스에 납치된 걸까요?
아니요.
이 드라이브를 신뢰할 수 있습니까? 아니면 보안 문제로 고려해야 합니까?
귀하의 질문에는 신뢰할 수 없다는 것을 암시하는 내용이 없습니다.
어쩌면 fdisk 오류일까요?
No. fdisk
는 파티션 테이블을 운영하기 위한 도구입니다. 파티션 테이블이 무엇인지(있는 경우) 표시되지만 그렇지 않습니다. 그렇기 때문에 .txt 파일을 사용하여 파티션 테이블을 수정/저장하지 않는 것이 중요합니다 fdisk
.
아무래도 제가 임의의 데이터를 쓰고 있다는 사실과 관련이 있을 것 같습니다(...)
아니요, 이것이 디스크가 포맷되는 방식입니다.
답변2
슈퍼플로피 디스크(파티션 테이블 없이 전체 장치에 파일 시스템이 있는 드라이브)에는 여전히 dos 파티션 테이블을 정의하는 조각이 포함되어 있습니다.
fdisk
또는 의 목적은 gdisk
분할된 테이블을 사용하는 것입니다. 그렇지 않다면 어느 도구도 이를 미리 알지 못하고 최선을 다할 것입니다.설명하다분할된 테이블로서의 데이터. 어떤 경우에는 파티션 테이블이 존재하지 않는다는 것을 확인할 수 있지만(예: 모두 0인 경우) 많은 경우에는 그렇지 않습니다.
요점은 임의의 데이터라도 분할된 테이블로 해석될 수 있다는 것입니다. 이것이 장치에 표시되는 내용입니다. 이 질문에도 비슷한 설정이 있습니다.Windows가 USB NTFS 슈퍼 플로피 디스크를 마운트하지 않습니다.;내 답변에서 통찰력을 얻을 수 있습니다.
미친 파티션 테이블을 보는 것도 그 중 하나입니다단일 파일 시스템에서도 파티션 테이블 생성을 선호하는 이유. 그러나 Windows가 더 잘 알고 있는 것 같습니다. Windows만이 원인입니다. 디스크 자체에는 문제가 없습니다(또는 손상되었다는 증거가 없습니다).
사용하는 모든 시스템에 파일 시스템을 마운트할 수 있다면 괜찮을 것입니다. Windows가 생성하는 "혼란"에 속는지 모르겠지만 Linux에서는 Windows가 표시 /dev/sdb
되고 전혀 사용하지 않는 경우 언제든지 명시적으로 마운트할 수 있습니다 /dev/sdb1
.
그러나 설정을 보다 합리적으로 만들고 싶다면 처음부터 다시 시작하세요. 를 사용하여 기본 파티션이 하나만 있는 dos 파티션 테이블을 생성 dd if=/dev/zero of=/dev/sdb bs=512 count=1
하고 fdisk /dev/sdb
(시작 섹터와 끝 섹터의 기본값이면 충분함) 유형은 0C
( W95 FAT32 (LBA)
)이어야 합니다. 도구가 파티션 테이블에 쓰도록 합니다. 그런 다음 FAT32 파일 시스템을 만듭니다 sdb1
(Linux에서 또는 Windows에서 수행하도록 하고 새 파티션 테이블을 따르기를 바랍니다).