在你建议我保存文件并使用以下方式格式化驱动器之前分区请理解,我几个小时前就可以这样做,而且只需几分钟。实际上,我想了解这里到底发生了什么。这种情况正在毁掉我多年来积累的所有经验。
我原以为如果我将受病毒感染的闪存驱动器插入到我的 Ubuntu 机器中,我需要做的就是简单地删除病毒文件就可以了。
今天,我从一台 Windows 机器的 NTFS 格式闪存驱动器中收集了一些文件,尽管我完全知道这台机器感染了病毒。当我将闪存驱动器插入我的机器时,我发现它确实收集了许多文件和文件夹。我删除了其中的大部分。唯一显示出强烈抵抗力的是 RECYCLER 目录(及其子目录)。
该目录的属性。
drwx------ 1 masroor masroor 4.0K May 7 16:01 RECYCLER/
如果我执行该rm
命令,
sudo rm -rvf RECYCLER/
我得到了一长行输出,
rm: cannot remove `RECYCLER/S-2-4-27-3777257131-1806073332-421880436-8537/OagFrAIX.exe': Input/output error
rm: cannot remove `RECYCLER/S-2-4-27-3777257131-1806073332-421880436-8537/viJbcvrJ.cpl': Input/output error
<rest snipped>
有趣的是,该命令显示的上述报告的文件ls
具有大量的属性。
ls -l RECYCLER/S-2-4-27-3777257131-1806073332-421880436-8537/
ls: cannot access RECYCLER/S-2-4-27-3777257131-1806073332-421880436-8537/OagFrAIX.exe: Input/output error
ls: cannot access RECYCLER/S-2-4-27-3777257131-1806073332-421880436-8537/viJbcvrJ.cpl: Input/output error
total 0
-????????? ? ? ? ? ? OagFrAIX.exe
-????????? ? ? ? ? ? viJbcvrJ.cpl
如果尝试找到这些有问题的文件夹的属性,
ls -dl RECYCLER/S-2-4-27-3777257131-1806073332-421880436-8537/
我明白了,
drwx------ 1 masroor masroor 4096 May 7 15:58 RECYCLER/S-2-4-27-3777257131-1806073332-421880436-8537/
chmod
使 RECYCLER 文件夹可全部写入的命令失败。
sudo chmod -vR ugo+w RECYCLER/
输出位于的行中。
mode of `RECYCLER/' changed from 0700 (rwx------) to 0722 (rwx-w--w-)
mode of `RECYCLER/S-2-4-27-3777257131-1806073332-421880436-8537' changed from 0700 (rwx------) to 0722 (rwx-w--w-)
chmod: cannot access `RECYCLER/S-2-4-27-3777257131-1806073332-421880436-8537/OagFrAIX.exe': Input/output error
<snipped>
这些文件夹包含许多.exe
其他文件,其中大多数我已经成功删除(上面报告的文件除外)。
如果我检查其中一个文件夹的属性,
lsattr -ad RECYCLER/S-2-4-27-3777257131-1806073332-421880436-8537/
我明白了
lsattr: Inappropriate ioctl for device While reading flags on RECYCLER/S-2-4-27-3777257131-1806073332-421880436-8537/
clamtk
我已经按照建议在此设备上运行这里。但是,它未能发现威胁。
我知道我可以简单地将闪存驱动器内容保存在某个地方,然后对其进行格式化。但是,我更感兴趣的是找出这些文件夹中设置了哪些属性,这些属性阻止了进一步的更改。(当然,我也想对我的闪存驱动器进行消毒。)
更新 1
进一步评论帕特罗。
- 当访问文件夹时,那些具有无数属性的文件不会显示,即使我尝试将它们视为隐藏文件。
rm -rvf *
删除这些文件失败。目录内的命令S-2-4-27-3777257131-1806073332-421880436-8537
失败,并出现输入/输出错误。
更新2
在评论之后魂源和吉拉登戈我试过跑步
ntfsck
。ntfsfix
另外,这个问题幫助了。
以下是输出。
ntfsck
sudo ntfsck /dev/sdc1
Unsupported: replay_log()
Unsupported: check_volume()
Checking 7796 MFT records.
Unsupported cases found.
ntfsfix
sudo ntfsfix -d /dev/sdc1
Mounting volume... OK
Processing of $MFT and $MFTMirr completed successfully.
NTFS volume version is 3.1.
NTFS partition /dev/sdc1 was processed successfully.
但最初的情况依然存在,没有任何改善。
更新 3(已解决)
正如所建议的这个帖子我将驱动器插入 Windows 计算机并执行(从终端),
chkdsk <drive letter> /R
检查和修复活动非常忙碌。还有一些关于坏扇区的消息。任务在不到一分钟的时间内完成。然后我发现已经为恢复区域创建了一些新文件夹。
我将闪存驱动器重新插入到 Linux 机器中,并且可以毫无问题地删除 RECYCLER 文件夹。
作为附加步骤,现在我已经格式化了驱动器(使用 gparted,为 NTFS),因为我认为我已经获得了见解。
看起来这种病毒确实能够导致(临时/软)硬件问题。请参阅上述帖子以获得详细的技术解释。
答案1
好的,我必须在这里澄清几件事:
关于 NTFS 的逆向工程部分不适用于此,尤其是对于格式化的 NTFS 闪存驱动器。即使它确实如此,那也是一件非常不正常的事情。我曾使用过许多 NTFS 格式化的闪存驱动器,这些驱动器在 Windows XP、Vista、7 和 8 中格式化。
因此,Linux 无法正确检测 NTFS 的问题不是它。NTFS-3G 项目并不慢,也不兼容到那个程度,你甚至可以看到上次更新是在几个月前同一年。它确实时不时会出现一些问题,例如缓存支持和巨大的 CPU 占用率,但就像我说的,对于闪存驱动器来说,这种情况不太可能发生,或者发生的可能性非常小。
我遇到过类似的问题,闪存驱动器要么显示 ????? 符号,要么显示完全错误的符号(例如:!@#%$@%#@ 而不是文件名)。一些用户建议使用
ntfsfix
或,ntfck
但如果无法修复这些问题,请在驱动器上运行 Windows 上的 chkdsk。它的引导记录/文件系统可能存在一些问题。只要文件/文件夹的所有者使用,那么文件/文件夹的所有者就无关紧要
sudo
。可以是任何用户,但当他使用该sudo
命令时rm
,无论谁拥有它,它都会被删除。这同样适用于此 NTFS 格式的闪存驱动器。当我第一次看到这个问题时,我打算要求运行命令,
sudo
但我读到你已经这样做了。然后我打算建议使用 ntfs 修复工具,但你已经这样做了。然后我看到了输入/输出错误最后。看到文件名看起来乱糟糟的,我就知道确实存在文件系统问题,只能通过以下方法纠正:在 Windows 上使用 chkdsk。两者都
ntfsfix
无法ntfsck
修复只有 chkdsk 才能修复的几个问题。目前看来这不是硬件问题,更可能是文件系统问题。如果 chkdsk 不起作用,那么唯一的解决方案就是再次格式化闪存驱动器(无需低级格式化)。如果简单格式化不起作用(并在 Windows 和 gparted 中测试过),那么我们正在查看硬件级问题。
如果病毒确实与此问题有关,那是因为它影响/附加到文件系统表 (MFT)。这将导致一些问题,例如文件系统的某些部分正常,而其他部分则不好。在一个系统上看不到文件,而在另一个系统上却可以看到。看到所有文件或某些文件已损坏(例如:!@#!#!LOL!@#!)以及文件系统表损坏时可能发生的其他奇怪现象。这可能很简单,因为病毒会更改文件系统表中的一个字段,也可能很严重,因为病毒会更改 MFT 或多个文件的大小。
除了病毒之外,您应该知道,如果问题非常严重,以至于您无法格式化驱动器(新文件系统),而病毒很少会这样做,那么更有可能的是,您的闪存驱动器硬件存在由热量、撞击等引起的问题。
对于闪存驱动器或任何存储单元(尤其是闪存驱动器)中数据损坏的情况,很多情况下都是因为在正确保存所有信息之前移除了该单元。如果用户在移除闪存驱动器时未确保所有内容都已写入完毕且设备会话已关闭,则在 Windows 和 Linux 中都可能发生这种情况。
对于 Linux,您将开始收到有关整个闪存驱动器中不允许的读/写操作或文件(如电影)缺少整个大小的 50% 或更多的警告(例如,一部 1.2GB 的电影只有 500MB,其中的所有内容都已损坏)。在大多数情况下,fsck 可以修复此问题。对于 Windows,它将显示输入/输出错误,甚至可能损坏整个单元,因为 MFT 未正确保存信息。因此,建议等待会话关闭或使用“安全删除”选项(如果可用)。
答案2
我认为问题在于Linux 中的 NTFS 实现是逆向工程且不完整 --- 向微软索取源代码 ;-)。
“发现不支持的情况”警告提示您。Windows 计算机防病毒软件可能使用了一些 Linux 驱动程序无法掌握的高级/模糊的 NTFS 文件系统特性。
您应该仅在本机系统上对文件系统进行低级管理(在此处搜索 gparted 调整 NTFS 分区大小的频率,仅导致系统无法启动……)。
另请参阅NTFS-3g 主页,尤其是此常见问题解答。