Как сделать фейковый размер файла

Обновлено: 04.07.2024

Иногда для тестирования какой-то системы (взаимодействия программ, электронная почта, фильтры), требуется создать файл определенного размера. ОС Windows имеет два стандартных инструмента для создания файла произвольного размера.

Содержание

  1. Создать файл с помощью командной строки
  2. Создать файл с помощью 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)

Как видно из скриншота, утилита распознала носитель и вывела данные о микросхеме флеш.

Дешевая флешка к которой подошла ремонтная утилита FCMPTool

Заходим в настройки (Setup), там на странице Mode ищем режим CAP Set. Туда и забиваем требуемый ситуацией размер в мегабайтах.

Alcor Do not exceed the actual capacity of Flash

Про максимальное ограничение мне сказать сложно, но кое-что могу констатировать на основе работы с двумя флешками. При попытке выставить объём более 8 гигов, получаю ошибку следующего содержания:

D0000: False Disk Size Overflow! MaxAllowSize:8192M

Т.е. предельное допустимое значение для данной флешки в данной софтине равно 8192 мегабайта, т.е. 8ГБ. Ну лучше хоть что-то, чем ничего!

По завершению, приложение написало о удачном завершении операций и написала уже новый объём (CAP:8192.0M).

Как мне удалось создать фейк с помощью FCMPTool

Вот отчёт утилиты 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 и вбиваем туда необходимое значение.

Как выставить Fake объём для Alcor UFD AAMP

Здесь у меня и 99999MB и 999999MB получалось без каких-либо проблем.

 Отладка параметров парошивки Alcor AAMP для создания подделки

Вот кстати скриншот свойств съемного диска со свободным объёмом 966ГБ памяти.

Иногда бывают ситуации, в которых требуется быстро создать один или несколько файлов произвольного размера. Операционная система Windows предлагает для этого несколько различных вариантов.

Создание файла с помощью fsutil

Быстрее и проще всего создать файл с помощью утилиты командной строки fsutil. Для примера откроем консоль (обязательно с правами администратора) и создадим на диске E файл file.txt размером 1ГБ командой:

fsutil file createnew E:\File.txt 1000000000

Таким образом можно создать файл любого размера, причем файл создается практически мгновенно.

создание файла с помощью fsutil

Создание файла с помощью PowerShell

То же самое можно сделать с помощью PowerShell, хотя команды будут немного сложнее:

$file = New-Object -TypeName System.IO.FileStream -ArgumentList E:\File.txt,Create,ReadWrite
$file.SetLength(1000Mb)
$file.Close()

Здесь мы сначала создаем объект типа файл, а затем с помощью метода SetLength присваиваем ему необходимый размер. Таким способом также можно мгновенно создать файл любого размера.

создание файла с помощью PowerShell, способ 1

Есть и еще один, альтернативный способ создания файла с помощью PowerShell. Если в первом случае мы создавали файл и задавали его размер, то здесь создаем содержимое нужного размера и помещаем это содержимое в указанный файл. Например:

$content = New-Object -TypeName Byte[] -ArgumentList 10Mb
Set-Content -Path E:\File.txt -Value $content -Encoding Byte

создание файла с помощью PowerShell, способ 2

При использовании этого метода создание файла занимает некоторое время, зависящее от размера файла. Кроме того, с его помощью невозможно создать файл большого размера. Максимальный размер файла ограничен встроенным значением [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
>

Работает небыстро, но для ускорения можно запустить скрипт в несколько потоков.

Читайте также: