Как сделать фейковый размер файла
Обновлено: 04.07.2024
Иногда для тестирования какой-то системы (взаимодействия программ, электронная почта, фильтры), требуется создать файл определенного размера. ОС Windows имеет два стандартных инструмента для создания файла произвольного размера.
Содержание
- Создать файл с помощью командной строки
- Создать файл с помощью PowerShell
Создать файл с помощью командной строки
Для создания файла заданного размера с помощью командной строки Windows используйте команду fsutil . Размер файла для этой команды указывается в байтах.
Создать файл TestFile.txt размером 1 МБ:
fsutil file createnew D:\TestFile.txt 1048576
Если при создании файла в указанном размещении вы получаете « Ошибка: Отказано в доступе » — запустите командную строку от имени администратора .
Создать файл с помощью PowerShell
Создать пустой файл заданного размера
Для создания файла определенного размера с Windows PowerShell используйте последовательность команд (размер файла указывается в: Kb, Mb, Gb):
$file = New-Object -TypeName System.IO.FileStream -ArgumentList D:\TestFile.txt,Create,ReadWrite
$file.SetLength(1Mb)
$file.Close()
Windows PowerShell создаст пустой файл (заполненный символами NULL), выбранного размера.
Если при создании файла в указанном размещении вы получаете ошибка: « New-Object : Исключение при вызове «.ctor» с «3» аргументами: «Отказано в доступе по пути … » — запустите Windows PowerShell от имени администратора .
Ошибка: «Отказано в доступе по пути» при создании файла Ошибка: «Отказано в доступе по пути» при создании файлаСоздать непустой файл заданного размера
Для создания не пустого файла (случайное содержимое) размером 1 Мб, выполните команды Windows PowerShell:
$array = New-Object -TypeName Byte[] -ArgumentList 2Mb
$obj = New-Object -TypeName System.Random
$obj.NextBytes($array)
Set-Content -Path D:\TestFile.txt -Value $array -Encoding Byte
Скорость создания файла будет зависеть о указанного размера файла и характеристик вашего компьютера.
Создание непустого файла произвольного размера используя Windows PowerShell Создание непустого файла произвольного размера используя Windows PowerShellСоздать несколько файлов заданного размера
Создать 5 непустых файлов (случайное содержимое) размером 1Мб, используя Windows PowerShell:
$array = New-Object -TypeName Byte[] -ArgumentList 1Mb
$obj = New-Object -TypeName System.Random
$obj.NextBytes($array)
for ($i=1; $i -le 5; $i++)
Скорость создания файлов будет зависеть от указанного размера файлов и характеристик вашего компьютера.
Здравствуйте, Дамы и Господа. Суть вопроса: как изменить ИНФОРМАЦИЮ О РАЗМЕРЕ ФАЙЛА? Сам размер файла менять не нужно ни в коем случае, нужно лишь изменить атрибут, отображающий этот самый размер (в нашем случае - уменьшить). Применение, грубо говоря, - обман прог, которые сортируют файлы по размеру.
Повторяю еще раз - реальный размер изменяться не должен ни в коем случае.
Пример:
Некий видеоролик весит, допустим, 2 гига. Нужно: щелкаешь на этом файле правой кнопкой мыши и в свойствах читаешь, что он весит, допустим, десять мегабайт. Это образно говоря. Но суть в том, чтобы так думали еще и все программы, обращающиеся к файлу.
Пример №2. (теоретическое обоснование возможности существования примера №1) :)
Допустим, загружаешь в Инет все тот же видеофайл, который весит 2 гига. Допустим, стоит ограничение на загрузку в 1 гиг. Спустя СЕКУНДУ после нажатия "загрузить", появляется надпись: "Иди на, файл весит 2 гига, вместо максимально допустимого 1-го".
Мораль: за эту СЕКУНДУ удаленный комп при всем желании не может посчитать кол-во занимаемого этим файлом места. Следовательно, он откуда-то считывает эту величину. Следовательно, она записана где-то в виде атрибута, который и надо изменить.
Пример №3.
Еще во времена дискеток мне попадался такой глюк: жил-был некий файл, который весил 1 мегабайт. Однако ни на одну дискету его записать не получалось. Писало что-то напидобие "диск переполнен". После записи этого файла на носитель, который считает ФАКТИЧЕСКОЕ свободное/занятое место (именно ФАКТИЧЕСКОЕ, а не путем суммирования веса всех хранящихся файлов [диск, флешка]), оказалось, что этот файл весит 30 с копейками метров, вместо одного метра, заявленного в свойствах.
Т.о. все возможно..
Надеюсь на помощь умных людей.
2 Андрей Тишкин
Спасибо за тактичность)
Свою ОСь? Ну, может быть лет через 30..) А пока хоть бы с реестром научиться как следует работать.. )
Может все-таки кого-нибудь осинило, а?
Никак, это фантастика
Можно "сжать" файл, но опять таки это приведёт к изменению его размера. Так что сделать это нереально.> она записана где-то в виде атрибута, который и надо изменить
Если ты изменишь этот атрибут в своей локальной таблице диреректорий. твоя локальная файловая подсистема как минимум не сможет работать с этим файлом корректно.
Если же ты, не трогая локальный атрибут, неким образом "обманешь" своего http-клиента, подсунув ему "атрибут" 1Гб вместо реалного 2Гб, то он и пердавать будет на удаленный сервер столько сколько ему велено, а именно 1Гб, а не 2Гб.
В зависимости от возраста модели алькоровского контроллера, можно примерно обозначить утилиты, пригодные для наших целей:
Как понятно из вышесказанного, шить нам предстоит или в FC MPTool или в Alcor AAMP. С теми что постарее, обращаемся к первой из них, а с новомодными чипами из серии AU6989 (всякие 89AN, 89SN, 89SN-GT и тому подобное) соответственно ко второй.
В обоих случаях, можно шиться как в режиме Low Level Format, так и более быстрым High Level Format. Последний, годиться только к исправно функционирующим флешкам, но при этом экономится уйму времени, которое жалко терять на работу с фейком.
Алькоровских подделок у меня по пальцам пересчитать, которые были бы ещё совместимы с устаревшим приложением FCMPTool.
Подопытная флешка Noname белая с двумя разъёмами (второй OTG) с микросхемой на 256МБ:
USB-контроллер: Alcor AU6988 [0xBD02]
Флеш-память: Toshiba MLC [98DA90157614]
Прошивальщик: FCMPTool(040321.MD)
Как видно из скриншота, утилита распознала носитель и вывела данные о микросхеме флеш.
Заходим в настройки (Setup), там на странице Mode ищем режим CAP Set. Туда и забиваем требуемый ситуацией размер в мегабайтах.
Про максимальное ограничение мне сказать сложно, но кое-что могу констатировать на основе работы с двумя флешками. При попытке выставить объём более 8 гигов, получаю ошибку следующего содержания:
D0000: False Disk Size Overflow! MaxAllowSize:8192M
Т.е. предельное допустимое значение для данной флешки в данной софтине равно 8192 мегабайта, т.е. 8ГБ. Ну лучше хоть что-то, чем ничего!
По завершению, приложение написало о удачном завершении операций и написала уже новый объём (CAP:8192.0M).
Вот отчёт утилиты H2TESTW, который без проблем раскусил нашу подделку:
The media is likely to be defective.
234.7 MByte OK (480768 sectors)
7.7 GByte DATA LOST (16261632 sectors)
Details:0 KByte overwritten (0 sectors)
0 KByte slightly changed (
В качестве разнообразия, для AAMP я взял оригинальную флешку Transcend JF600 16GB с проблемной Micron L74 флеш-памятью в Dual-режиме. Шить её, как вы понимаете буду в Single-Channel, ибо другое всё равно невозможно, кроме как через онлайн сервис восстановления Transcend. Но не в этом суть, ибо я делаю акцент именно на знатное происхождение накопителя.
Процесс настройки здесь абсолютно такой же, как и у разобранного ранее комплекса FC MPTool. Т.е. на той же вкладке Mode, активируем режим CAP Set и вбиваем туда необходимое значение.
Здесь у меня и 99999MB и 999999MB получалось без каких-либо проблем.
Вот кстати скриншот свойств съемного диска со свободным объёмом 966ГБ памяти.
Иногда бывают ситуации, в которых требуется быстро создать один или несколько файлов произвольного размера. Операционная система Windows предлагает для этого несколько различных вариантов.
Создание файла с помощью fsutil
Быстрее и проще всего создать файл с помощью утилиты командной строки fsutil. Для примера откроем консоль (обязательно с правами администратора) и создадим на диске E файл file.txt размером 1ГБ командой:
fsutil file createnew E:\File.txt 1000000000
Таким образом можно создать файл любого размера, причем файл создается практически мгновенно.
Создание файла с помощью PowerShell
То же самое можно сделать с помощью PowerShell, хотя команды будут немного сложнее:
$file = New-Object -TypeName System.IO.FileStream -ArgumentList E:\File.txt,Create,ReadWrite
$file.SetLength(1000Mb)
$file.Close()
Здесь мы сначала создаем объект типа файл, а затем с помощью метода SetLength присваиваем ему необходимый размер. Таким способом также можно мгновенно создать файл любого размера.
Есть и еще один, альтернативный способ создания файла с помощью PowerShell. Если в первом случае мы создавали файл и задавали его размер, то здесь создаем содержимое нужного размера и помещаем это содержимое в указанный файл. Например:
$content = New-Object -TypeName Byte[] -ArgumentList 10Mb
Set-Content -Path E:\File.txt -Value $content -Encoding Byte
При использовании этого метода создание файла занимает некоторое время, зависящее от размера файла. Кроме того, с его помощью невозможно создать файл большого размера. Максимальный размер файла ограничен встроенным значением [int]::MaxValue и при его превышении будет выдана ошибка ″Array dimentions exceeded supported range″.
Все описанные способы создают пустые файлы (точнее файлы, заполненные символом NUL). Если надо создать файл заданного размера и заполнить его каким либо произвольным содержимым, то можно немного изменить предыдущий способ и воспользоваться такими командами:
$array = New-Object -TypeName Byte[] -ArgumentList 10Mb
$obj = New-Object -TypeName System.Random
$obj.NextBytes($array)
Set-Content -Path E:\File.txt -Value $array -Encoding Byte
Ну и для генерации большого количества файлов (напр. 1000) можно воспользоваться таким скриптом:
$array = New-Object -TypeName Byte[] -ArgumentList 10Mb
$obj = New-Object -TypeName System.Random
$obj.NextBytes($array)
for ($i=1; $i -le 1000; $i++) Set-Content -Path E:\File.txt$i -Value $array -Encoding Byte
>
Работает небыстро, но для ускорения можно запустить скрипт в несколько потоков.
Читайте также: