我之前使用php輸出緩衝來創建數據庫中的csv文件,因爲我不想創建現有文件,只是想讓內容可下載。PHP輸出緩衝(ob_start,ob_flush)
CSV是基於文本的文件,因此很容易以這種方式創建,您可以設置標題並清除文本內容。但!如果我想從十六進制數據創建一個exe文件呢? (該項目是:我有一個現有的exe文件,我希望用戶可以在HTML文本框中寫入內容,並將其轉換爲十六進制並將舊文本交換到新文件)
謝謝。
我之前使用php輸出緩衝來創建數據庫中的csv文件,因爲我不想創建現有文件,只是想讓內容可下載。PHP輸出緩衝(ob_start,ob_flush)
CSV是基於文本的文件,因此很容易以這種方式創建,您可以設置標題並清除文本內容。但!如果我想從十六進制數據創建一個exe文件呢? (該項目是:我有一個現有的exe文件,我希望用戶可以在HTML文本框中寫入內容,並將其轉換爲十六進制並將舊文本交換到新文件)
謝謝。
如果你想從100字節你可以使用substr()和str_pad()第200字節替換二進制文件的一部分,例如:
$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);
使用下面的代碼從硬盤讀取下載exe文件。
<?php
$file = 'test.exe';
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
你知道在什麼範圍內的字節你想覆蓋的exe文件?我做的是 – piotrekkr
。它總共約100-200字節 – Iburidu