在 php 中打开 .bat 文件

发布于 2024-09-06 23:18:58 字数 165 浏览 5 评论 0原文

我想制作一个在线php十六进制编辑器,用户上传一个文件,服务器对其执行指定的十六进制编辑,然后将新文件保存在服务器上。我想我应该编写一个 .bat 文件,在 Windows 上打开十六进制编辑器,执行指定的操作,然后返回新文件。我可以使用 php 函数 system() 或类似的函数。有人知道完成这一切的好方法吗?

I want to make an online php hexeditor, where the user uploads a file, the server performs a specified hexedit on it, and then the new file is saved on the server. I was thinking that I should write a .bat file that opens a hex editor on windows, performs the specified actions, then returns the new file. I could use the php function system(), or something like that. Anybody know of a good way to do all this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

鲜肉鲜肉永远不皱 2024-09-13 23:18:58

您当然可以仅使用 PHP 来实现此目的。

您需要做的是:

  • 以二进制形式读取文件
  • 转换为十六进制表示
  • 按照您喜欢的方式显示

查看< a href="http://php.net/manual/en/function.fread.php" rel="nofollow noreferrer">fread 函数,有一个例子展示如何读取文件作为二进制。

然后使用 bin2hex 函数,它会给你二进制数据的十六进制表示。

这是一个简单的例子:

<?php
$filename = "c:\\files\\somepic.gif";
$handle = fopen($filename, "rb");
$contents = fread($handle, filesize($filename));
fclose($handle);

$cols = 8;
$hex = bin2hex($contents);
$hex_split = str_split($hex,4*$cols);

foreach($hex_split as $h)
{
  $tmp = str_split($h, 4);
  foreach($tmp as $t)
    echo $t.' ';
  echo "\r\n";
}
?>

您将得到例如:

d45b 0500 0000 0000 0c00 0000 0000 0000 
0000 0000 0000 0000 0100 0000 0000 0000 
0000 0000 0000 0000 0100 0000 0300 0000 
0000 0000 0000 0000 0000 0000 0000 0000 
e05b 0500 0000 0000 f400 0000 0000 0000 
0000 0000 0000 0000 0100 0000 0000 0000 
0000 0000 0000 0000

You can certainly achieve this using PHP only.

What you need to do is:

  • read the file as binary
  • convert to hexadecimal representation
  • display it the way you like

Check out the fread function, there is an example showing how to read a file as binary.

Then use the bin2hex function which will give you a hexadecimal representation of binary data.

Here's a quick example:

<?php
$filename = "c:\\files\\somepic.gif";
$handle = fopen($filename, "rb");
$contents = fread($handle, filesize($filename));
fclose($handle);

$cols = 8;
$hex = bin2hex($contents);
$hex_split = str_split($hex,4*$cols);

foreach($hex_split as $h)
{
  $tmp = str_split($h, 4);
  foreach($tmp as $t)
    echo $t.' ';
  echo "\r\n";
}
?>

You will get for example:

d45b 0500 0000 0000 0c00 0000 0000 0000 
0000 0000 0000 0000 0100 0000 0000 0000 
0000 0000 0000 0000 0100 0000 0300 0000 
0000 0000 0000 0000 0000 0000 0000 0000 
e05b 0500 0000 0000 f400 0000 0000 0000 
0000 0000 0000 0000 0100 0000 0000 0000 
0000 0000 0000 0000
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文