Проверка исполняемого файла, если это возможно

besheniy

Новичок
Проверка исполняемого файла, если это возможно

Подскажите пожалуйста, очень нужно, как проверить исполняемый файл (exe, com) перед тем как он должен выполнится ?

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

На сервере этот исполняемый файл должен запускаться, соответсвенно если файл не исполянемый, то он все равно запускается, так как расширение то у него exe, в итоге все виснет. На сервере создается процесс php-cgi.exe и все. Что бы вывести все из ступора приходится в ручную удалять этот процесс. Запускать файл я пробывал через exec, system,popen- ситуация везде такая же. Может я неправильно запускаю, есть какй нибудь параметр, хотя не знаю..

Посоветуйте пожалуйста что можно сделать в такой ситуации, хотя бы что бы не происходило зависание. [PHP 5.1.2]

Спасибо большое.
 

svetasmirnova

маленький монстрик
У тебя скрипт запускает на выполнение любые программы???
 

svetasmirnova

маленький монстрик
>Запускает только те, у которых расширение exe или com.
Любые??? drop_all_my_files.exe тоже?
 

besheniy

Новичок
Ну и размером не больше 3 мб, а так любые, я просто не знаю, как еще можно их отфильтровать.
 

Popoff

popoff.donetsk.ua
besheniy
Я могу создать файл, который будет ПРАВИЛЬНЫМ ехе файлом. Этот файл форматирует твой винчестер. Ты запустишь мой файл, если будешь знать, что он - ПРАВИЛЬНЫЙ ехе файл?
 

besheniy

Новичок
Я не запущу. Только тут дело в том, что запускаю его не я, а скрипт, а ему все равно, какие действия этот файл будет выполянять. Писать дизассемблер и анализировать листинг машинных кодов мне что то не охото :) Хотя ты конечно прав, но что тут можно сделать... Файлы надо все равно запускать...
И сделать хотя бы, что бы сервак не вис полностью...
 

Popoff

popoff.donetsk.ua
besheniy
То есть, ты считаешь, что если отформатировать винчестер, то сервак не зависнет полностью?
 

besheniy

Новичок
Ой блин, если честно то там уже будут не мои трудности, что зависнет, а что нет :)) мне нужно, только что бы он в самом начале не зависал, а потом меня не особо волнует, просто задание такое дали...
 

mani13

Новичок
Хм, так как чел он крайне флудливый, то вся задачи узнаётся со всего инета по чуть-чуть.
http://forum.gor-net.ru/index.php?s=&showtopic=89477&view=findpost&p=1080840

Так что советы от себя:
1. не использовать PHP
2. использовать готовые решения(см. http://olympiads.ru/school/system/download/index.shtml)
3. попробовать pecl-fileinfo
4. для сохранности данных использовать системные chroot/jail/sandbox или аналоги
 

besheniy

Новичок
Автор оригинала: mani13
Хм, так как чел он крайне флудливый, то вся задачи узнаётся со всего инета по чуть-чуть.
http://forum.gor-net.ru/index.php?s=&showtopic=89477&view=findpost&p=1080840

Так что советы от себя:
1. не использовать PHP
2. использовать готовые решения(см. http://olympiads.ru/school/system/download/index.shtml)
3. попробовать pecl-fileinfo
4. для сохранности данных использовать системные chroot/jail/sandbox или аналоги
Спасибо большое, но некоторые советы чисто физически не подходят. Сервак процентов 99 будет стоять под Виндой. Что же касается готовых решений, то там придется очень многое менять. А PHP использовать придеться :)

-~{}~ 12.06.06 21:09:

Автор оригинала: whirlwind
besheniy ищи гуглом на предмет PE-header
Спасибо большое за совет.
Написал прогу анализарующую PE-заголовок. Теперь все работает!
 

BlacKing

Новичок
Интересно, а как тут фильтровать бинарник, на предмет форматирует он винт или нет?

Я уж не знаю кто и с какими правами на сайте закачивает файлы для запуска, могет это модеры только. Но проверять на правильность exe ;) это имхо нереально.

хотя реально, запустить и посмотреть что будет с системой.. ж)
 

BlacKing

Новичок
и полный анализ логов изменения?

особенно если 100 чуваков будут её грузить...

ибо все виртуальные машины уменьнают частоту просеццора более чем в 2 раза, будет интересно посмотреть как долго сервак будет жить
 
Сверху