Сейчас на форуме: Magister Yoda, vasilevradislav, tyns777, zombi-vadim (+3 невидимых)

 eXeL@B —› Программирование —› Обход ограничений Fat32/ntfs
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 13 мая 2008 18:59 · Поправил: Unami
· Личное сообщение · #1

В Windows можно создать директорию с запрещенным именем. Для этого нужно в консоли ввести:
"mkdir ..invalid..\"
С созданой папкой, с мнимым именем "..invalid.", нельзя производить какие либо операции (удаление, переименование итп). Удалить можно тоже через консоль.
"rmdir ..invalid..\"

Задача: написать программу (на С) обходящую ограничения файловой системы т.е. позволяющая работать (создавать, переименовывать, удалять) с файлом или папкой с неправильным именем.

Поискав материал по теме, я нашел статью http://www.xakep.ru/magazine/xa/062/080/1.asp , в которой был приведен код, якобы позволяющий переименовать файл в соответствии с заданием.

#include <windows.h>
void main()
{
char *old = "C:\TMP\somefile.txt";
char *_new = "C:\TMP\twodots.."; //переменные для нового и старого имени файла
char *newname;
wsprintf(newname,"%s.",_new); //добавляем символы «.\» в новое имя файла
MoveFile(old, newname); //переименовываем файл
}


Код оказался не рабочим, а привести его в рабоспособное состояние я не смог.



Чуть позже, я обнаружил ошибку в Миранде. Дело в том, что если в настроках указать в качестве места куда сохраняются принятые файлы "patch\Downloads\%nick%\", а у человека будет в начале и в конце ника будет стоять по две точки то полученый файл, сохранится в директорию с неправильным именем.

В моем случае ник был "..::[Pandorinnn]::..". Вместо скобок и двоеточий, миранда поставила "%", соответственно мнимое имя папки получилось "..%%%Pandorinnn%%%.".

Исходники миранды (моей версии, есть ли в других такая ошибка - не знаю) можно забрать отсюда. http://internap.dl.sourceforge.net/sourceforge/miranda/miranda-im-v0.7.3-src.zip

Модуль приема файла, называется "srfile" и находится в "miranda\src\modules\srfile". Сам не смог найти нужный код.

Помогите написать софтину, уже отчаялся!



Ранг: 2.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 13 мая 2008 19:46
· Личное сообщение · #2

char *newname;
wsprintf(newname,"%s.",_new); //добавляем символы «.\» в новое имя файла


жесть какая-то. код-то походу и вправду не рабочий - ведь newname просто указатель в никуда.



Ранг: 52.2 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 13 мая 2008 20:43 · Поправил: Vitek
· Личное сообщение · #3

Unami пишет:
char *newname;
wsprintf(newname,"%s.",_new); //добавляем символы «.\» в новое имя файла


Пардон... куды память дел ?

для примера
char *newname = (char*)GlobalAlloc(GMEM_FIXED | GMEM_ZEROINIT,512);



Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 13 мая 2008 21:16 · Поправил: Unami
· Личное сообщение · #4

Повторяюсь, этот код был приведен в --> статье <-- http://www.xakep.ru/magazine/xa/062/080/1.asp .
С помошью wsprintf похоже не получится. Возможно нужно кодить на низком уровне (не умею). Хотя я сомневаюсь что в миранде файловые операции на нем.



Ранг: 52.2 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 13 мая 2008 21:33 · Поправил: Vitek
· Личное сообщение · #5

Держи кароче

f2e7_13.05.2008_CRACKLAB.rU.tgz - ice.cpp

[offtop]
как его млин теперь удалить ?!
[/offtop]




Ранг: 279.1 (наставник)
Активность: 0.160
Статус: Участник
wizard

Создано: 13 мая 2008 23:30 · Поправил: MACKLIA
· Личное сообщение · #6

Vitek пишет:
Держи кароче

f2e7_13.05.2008_CRACKLAB.rU.tgz - ice.cpp

char *old = "C:\somefile.txt";
char *_new = "C:\twodots.."; //переменные для нового и старого имени файла
char *newname = (char*)GlobalAlloc(GMEM_FIXED | GMEM_ZEROINIT,512);
wsprintf(newname,"%s.",_new); //добавляем символы «.\» в новое имя файла
MoveFile(old, newname); //переименовываем файл


Vitek а обратное переименование как осуществишь ?
Кстати прога UnlockerAssistant может удалять и переименовывать и создавать такие хитрые файлы

-----
Что один человек сделал , другой всегда сломать может...




Ранг: 52.2 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 14 мая 2008 15:03
· Личное сообщение · #7

MACKLIA пишет:
Vitek а обратное переименование как осуществишь ?


Удаляется без проблем через альтернативное имя. типа
del c:\TWODOT~1
челых 20 минут потратил на удаление, блин =/
Используя такое имя можно и переименовать




Ранг: 271.6 (наставник), 2thx
Активность: 0.30
Статус: Участник

Создано: 14 мая 2008 15:10
· Личное сообщение · #8

Unami пишет:
В Windows можно создать директорию с запрещенным именем. Для этого нужно в консоли ввести:
"mkdir ..invalid.."

А если в через окно винрара переименовать любой файл в "..invalid.." то он вообще нихера не удаляется

-----
iNTERNATiONAL CoDE CReW





Ранг: 279.1 (наставник)
Активность: 0.160
Статус: Участник
wizard

Создано: 14 мая 2008 15:53
· Личное сообщение · #9

Spirit пишет:
А если в через окно винрара переименовать любой файл в "..invalid.." то он вообще нихера не удаляется


Spirit юзай UnlockerAssistant - удаляй и сотворяй любые нэймы файлов

-----
Что один человек сделал , другой всегда сломать может...




Ранг: 17.8 (новичок)
Активность: 0.020
Статус: Участник

Создано: 14 мая 2008 16:08
· Личное сообщение · #10

знаю ещё одно зарезервированое имя: prn




Ранг: 279.1 (наставник)
Активность: 0.160
Статус: Участник
wizard

Создано: 14 мая 2008 16:23 · Поправил: MACKLIA
· Личное сообщение · #11

UR-Shark пишет:
знаю ещё одно зарезервированое имя: prn


Это уже все знают - хацкеры подсказали вот тут -> http://www.xakep.ru/magazine/xa/062/080/1.asp http://www.xakep.ru/magazine/xa/062/080/1.asp

-----
Что один человек сделал , другой всегда сломать может...




Ранг: 210.5 (наставник), 2thx
Активность: 0.140
Статус: Участник

Создано: 14 мая 2008 16:40
· Личное сообщение · #12

Кстати, (это немного оффтоп но все-же одним боком связано с темой данного топика), как мы знаем эксплорер не может (точнее не позволяет) создавать файлы которые начинаются точкой (например тот же .htaccess), но такие файлы можно создать другим способом, например FAR-ом (Shift-F4). Играя с этим, заметил что MS Word 2003 не правильно обрабатывет файл ".doc" (тойсть названия нет, только расширение) и появляется такое сообщение:

There is insufficient memory. Save the document now. (D:\.doc)

This error appears if there is a problem saving the file.  Usually, the disk is full, RAM memory is low, or there is a permission problem with the drive the file is being saved to.  If the amount of disk space for a paging file is low, save the file to another drive. If the RAM memory is low, increase available RAM.  If permissions to the drive do not allow you to save to that drive, save the file to another drive or request permissions from the administrator to save files to the drive.
Note: This error can occur if the computer is running a version of antivirus software that is not compatible with Office or needs to be updated. This error can also occur if you are saving to a full floppy disk or the floppy disk is too small for the file.
More information about this error message online.


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




Ранг: 230.5 (наставник)
Активность: 0.180
Статус: Участник
Norg

Создано: 14 мая 2008 16:51
· Личное сообщение · #13

кстати если заархивировать файл например notepad.exe то открыв его в winrar и нажаф F2 можно переименовать его в пустоту (ALT+num0+num1+num6+num0) или дать имя .exe

-----
M&#225 enginn renna undan &#254v&#237 sem honum er skapa&#240




Ранг: 47.5 (посетитель)
Активность: 0.030
Статус: Участник

Создано: 14 мая 2008 17:35
· Личное сообщение · #14

di-2 пишет:
кстати если заархивировать файл например notepad.exe то открыв его в winrar и нажаф F2 можно переименовать его в пустоту (ALT+num0+num1+num6+num0)


Прикольно, но это не пустое имя, а файл с единственным символов с кодом 0160. В общем, как говорили, что можно winrar'ом разные имена давать)




Ранг: 467.7 (мудрец), 5thx
Активность: 0.270
Статус: Участник
Иной :)

Создано: 14 мая 2008 18:12
· Личное сообщение · #15

Мдя... вот вы тему развернули Давайте тогда уж приколемся в WinHEX откроем файловую систему дисков своих и нулями забьём или мусором. Чёж мелочиться то? Результат будет почти тот же Веселуха в стиле садомаза или что сделать чтобы жизнь мёдом не казалась.

-----
Computer Security Laboratory




Ранг: 135.2 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 14 мая 2008 19:17
· Личное сообщение · #16

UR-Shark пишет:
знаю ещё одно зарезервированое имя: prn


также есть еще "con" (причем как каталоги, так и файлы, например "con.txt")

ЗЫ
как я читал, con (ботаник) - прозвище дяди билла в молодости




Ранг: 279.1 (наставник)
Активность: 0.160
Статус: Участник
wizard

Создано: 15 мая 2008 00:53 · Поправил: MACKLIA
· Личное сообщение · #17

Vitek пишет:
Удаляется без проблем через альтернативное имя. типа
del c:\TWODOT~1
челых 20 минут потратил на удаление, блин =/
Используя такое имя можно и переименовать


Чтото не получается обратно переименовать

procedure TForm1.Button1Click(Sender: TObject);
begin
MoveFile('C:\PROBA.txt','C:\.PROVERKA..');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
MoveFile('C:\.PROVERKA..\~1','C:\PROBA.txt');
end;

-----
Что один человек сделал , другой всегда сломать может...




Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 15 мая 2008 13:02 · Поправил: tundra37
· Личное сообщение · #18

MACKLIA и остальные :
Для запрещенных имен существуют "спец-имена" :
\\?\C:\con
Создает и удаляет только так.




Ранг: 279.1 (наставник)
Активность: 0.160
Статус: Участник
wizard

Создано: 15 мая 2008 14:55 · Поправил: MACKLIA
· Личное сообщение · #19

tundra37 пишет:
MACKLIA и остальные :
Для запрещенных имен существуют "спец-имена" :
\?\C:\con


tundra37 запрещенные имена т.е. AUX, CON, NUL, PRN, COM1-COM9 и LPT1-LPT9.
Меня интересует как переименовать например такой файл - C:\.2..

например делаем сначала так
MoveFile('C:\1.txt','\?\C:\.2..\ ');

..а сейчас нужно вернуть как было
MoveFile('\?\C:\.2..\ ','C:\1.txt'); - нифига не получается



Всё разобрался ,оказывается ненадо было " \ " в конце писать
MoveFile('C:\1.txt','\?\C:\.2..'); обратно MoveFile('\?\C:\.2..','C:\1.txt');

-----
Что один человек сделал , другой всегда сломать может...




Ранг: 251.3 (наставник), 81thx
Активность: 0.140.11
Статус: Участник

Создано: 15 мая 2008 15:49
· Личное сообщение · #20

alexey_k пишет:
как я читал, con (ботаник) - прозвище дяди билла в молодости

Млин, один балбес написал а ты повторяеш
CON - это CONsole, ещё со времён DOS'а имя устройства вывода.
А поскольку каждое устройство есть файл, то и создавать тебе файлы с таким именем не дают - система думает что он уже существует (имя занято).



Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 15 мая 2008 21:51 · Поправил: Unami
· Личное сообщение · #21

В общем накатал я софтинку. Сырая конечно еще, но переименовывает и туда и обратно и файлы и папки.
С последним есть небольшие проблемы (см проверку ключа "-d"). Но думаю скоро разберусь. Всем большое спасибо.

bfb1_16.05.2008_CRACKLAB.rU.tgz - invalide.c

Прошу прощения за кривой код.



Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 15 мая 2008 23:30
· Личное сообщение · #22

Проблему можно решить так:
if (argv[1][0] == '-' && argv[1][1] == 'd')




Ранг: 230.5 (наставник)
Активность: 0.180
Статус: Участник
Norg

Создано: 16 мая 2008 09:20
· Личное сообщение · #23

Откапал в журнале Хакер за 4-2008 год Создает в бесконечно цикле файлы нулевого размера

5301_16.05.2008_CRACKLAB.rU.tgz - dff.jpg

-----
M&#225 enginn renna undan &#254v&#237 sem honum er skapa&#240




Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 16 мая 2008 19:43
· Личное сообщение · #24

.jpg? O_O
А что там? Есть статья?



Ранг: 107.5 (ветеран)
Активность: 0.150
Статус: Участник

Создано: 16 мая 2008 19:47
· Личное сообщение · #25

Unami пишет:
А что там? Есть статья?

Маленький кусок кодеса

-----
Md5 fcbb6c9c9a5029b24d70f2d67c7cca74




Ранг: 52.2 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 17 мая 2008 10:55
· Личное сообщение · #26

Unami пишет:
char *newname = (char*)GlobalAlloc(GMEM_FIXED | GMEM_ZEROINIT,512);



я польщен, но пожалуй более грамотно будет заменить 512 переменной MAX_PATH
хотя если цель создание длинного пути который не поддерживает explorer то пожалуй сойдет. но в этом случае без труда спасает cmd.exe




Ранг: 230.5 (наставник)
Активность: 0.180
Статус: Участник
Norg

Создано: 17 мая 2008 12:26
· Личное сообщение · #27

Unami статьи как таковой нету,написано что только пустой файл может быть минимум 1 кб. т.к в нем храниться дата создания и модификации.Ну а большую часть обсирают Microsoft =)

-----
M&#225 enginn renna undan &#254v&#237 sem honum er skapa&#240





Ранг: 279.1 (наставник)
Активность: 0.160
Статус: Участник
wizard

Создано: 18 мая 2008 20:22
· Личное сообщение · #28

Кстати ,если создать файл с запрещенным именем - т.е. AUX, CON, NUL, PRN, COM1-COM9 и LPT1-LPT9 ,то откат системы не поможет от него избавиться ,наверное скоро некоторые триальшики будут это дело использовать - после окончания триала прога просто создаст такой файл в недрах system 32 и даже в реестре срать не придётся .Причём воспользовавшись советом tundra37
tundra37 пишет:
Для запрещенных имен существуют "спец-имена" :
\?\C:\con
Создает и удаляет только так.

можно программно читать и редактировать этот вайл ,т.е. хранить в нём количество запусков и прочую триальную хрень .

-----
Что один человек сделал , другой всегда сломать может...





Ранг: 467.7 (мудрец), 5thx
Активность: 0.270
Статус: Участник
Иной :)

Создано: 18 мая 2008 20:52 · Поправил: [HEX]
· Личное сообщение · #29

MACKLIA
Нафига откаты? Поправить файловую систему можно и ручками если конечно они не из одного места растут. Как уже говорили можно спокойно из WinHex поправить.

-----
Computer Security Laboratory





Ранг: 279.1 (наставник)
Активность: 0.160
Статус: Участник
wizard

Создано: 18 мая 2008 22:58 · Поправил: MACKLIA
· Личное сообщение · #30

[HEX] пишет:
MACKLIA
Нафига откаты? Поправить файловую систему можно и ручками если конечно они не из одного места растут. Как уже говорили можно спокойно из WinHex поправить.


[HEX] ты за меня не переживай ,я эти файлы и так удалю ,мне просто интересно - было поможет ли откат или нет (надо-было над знакомым приколоться ,а он после многих приколов откатом пользуется).

А зачем править файловую систему ,если эти файлы можно уничтожить более простыми средствами ? -выпендрёж наверное
А если ты такой спец в вопросах правки файловой системы ручками при помощи WinHex - то помоги советом KingSise -> http://exelab.ru/f/action=vthread&topic=11865&forum=3&page =-1

P.S. Триал расчитан на рядовых юзеров ,большинство из которых даже таких слов как файловая система и WinHex не знаю.

-----
Что один человек сделал , другой всегда сломать может...



. 1 . 2 . >>
 eXeL@B —› Программирование —› Обход ограничений Fat32/ntfs
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати