Search code examples
phpexeflushoutput-bufferingob-start

PHP output buffering (ob_start, ob_flush)


I used php output buffering earlier in order to create csv file from database, because i didn't want to create an existing file, just wanted to make content downloadable.

CSV is text-based file, so its easy to create this way, you set the header and flush the text content. But! What if, I want to create an exe from hex data? (The project is: I have an existing exe file and I want that users can write something inside a HTML textbox and I convert that to hex and exchange the old text to the new one)

Thanks.


Solution

  • If you want to replace part of binary file, for example from 100th byte to 200th byte you could use substr() and str_pad():

    $binFile = file_get_contents('/pathto/exec/file.exec');
    $replacedBinFile = substr($binFile, 0, 100) . str_pad(substr($_POST['text'], 0, 100), 100, "\x00") . substr($binFile, 200);
    file_put_contents('/pathto/exec/file_replaced.exec', $replacedBinFile);