编辑并添加字节到二进制(uint8array)

时间:2014-03-03 05:04:20

标签: javascript

我想在我的二进制文件中添加一个字符串和一些二进制文件,例如0x00,我通过ajax加载它(以二进制形式获取)

这是我的代码,直到现在:

var ajax = new XMLHttpRequest();
ajax.open("GET", "test.bin", true);
ajax.responseType = "arraybuffer";

ajax.onload = function () {
    var byteArray = new Uint8Array(ajax.response);
    // What can i do?
};

ajax.send();

2 个答案:

答案 0 :(得分:2)

好吧,最后我可以解决它:

var str = 'Injected!!!';

var injAr = [0x21,0xFE,str.length]; 
for (var i = 0; i < str.length; i++) { injAr.push(str.charCodeAt(i));}
injAr.push(0x00,0x3B);

var ajax = new XMLHttpRequest();
ajax.open("GET", "test.gif", true);
ajax.responseType = "arraybuffer";

ajax.onload = function () {
    var bAr = new Uint8Array(ajax.response), len = bAr.length - 1;
    window.newBAr = new Uint8Array(len + injAr.length);
    for (var i = 0; i < len; i++) { newBAr[i] = bAr[i];}
    for (var i = 0; i < injAr.length; i++) { newBAr[len + i] = injAr[i];}
}
ajax.send();

嗯,这是为了正确地为gif添加注释块,但它也可以用于jpgs,pngs,例如修改或添加exif元数据

答案 1 :(得分:1)

您需要获得一种格式,即javascript将能够提取字符串的字节并分离作为二进制文件一部分的字节。您可以通过在字符串的开头或结尾放置一个独特的字节标志来表示边界。我会把字符串放在开头,并在其末尾用标志表示二进制文件的开头,因为我不确定二进制文件。

分离后,您需要将字节转换为数字,然后将数字转换为字符。 Here is a question that goes over how to convert binary to characters