小编jam*_*909的帖子

字节反向AB CD到CD AB与python

我有一个.bin文件,我想简单地反转十六进制数据.比如说@ 0x10它读取AD DE DE C0,想要它读取DE AD C0 DE.

我知道有一个简单的方法可以做到这一点,但我是初学者,只是学习python,我正在尝试制作一些简单的程序来帮助我完成日常任务.我想以这种方式转换整个文件,而不仅仅是0x10.

我将在起始偏移量0x000000处进行转换,并且blocksize/length为1000000.

这是我的代码,也许你可以告诉我该怎么做.我相信我只是没有得到它,我是编程和python的新手.如果你能帮助我,我会非常感激.

def main():
    infile = open("file.bin", "rb")
    new_pos = int("0x000000", 16)
    chunk = int("1000000", 16)
    data = infile.read(chunk)
    reverse(data)

def reverse(data):
    output(data)

def output(data):
    with open("reversed", "wb") as outfile:
        outfile.write(data)

main()
Run Code Online (Sandbox Code Playgroud)

并且您可以看到用于反转的模块,我已经尝试了许多不同的建议,它将通过未触摸传递文件,否则将抛出错误.我知道模块反向现在是空的,但我已经尝试了各种各样的东西.我只需要模块反转将AB CD转换为CD AB.感谢任何输入

编辑:文件是16 MB,我想颠倒整个文件的字节顺序.

python byte reversing

6
推荐指数
3
解决办法
3万
查看次数

使用Python修改二进制文件

我正在尝试修补hex文件.我有两个名为"patch 1"和"patch 2"的补丁文件(hex)

要修补的文件是一个名为"file.bin"的16 MB文件.

在过去的6或7个小时里,我尝试了许多不同的方法来弄清楚如何去做.我可以整天写一个字符串到一个文件,但我想尝试执行以下操作:

打开patch1.bin,读取字节打开patch2.bin,读取字节打开file.bin,写入字节

我想寻找位置0xc0010和0x7c0010,并应用patch1.bin然后我想寻求0x040000并应用patch2.bin

总而言之,我将应用3个补丁,然后关闭"file.bin"

如果有人给我一个例子,我会非常感激:)

我先尝试过这个:

patch1 = open("patch1", "r");
patch2 = open("patch2", "r");
main = open("file.bin", "w");

main.seek(0xC0010);
main.write(patch1);
main.seek(0x7C0010);
main.write(patch1);
main.seek(0x40000);
main.write(patch2);
main.close();
Run Code Online (Sandbox Code Playgroud)

但被告知我正在尝试将字符串写入文件,当它确实不是我想要的时候,大声笑然后我试过这个:

infile1 = open("patch1.bin", "rb") 
new_pos1 = int("0x00", 16)
infile1.seek(new_pos1, 0)
infile2 = open('file.bin', 'wb')
new_pos2 = int('0xc0010', 16)
infile2.seek(new_pos2, 0xc0010)
chunk1 = int("6FFFE0", 16)         #this is how long patch1 file is
data1 = infile1.read(chunk1)
with open("file.bin", "a") as outfile:
    outfile.write(data1)
Run Code Online (Sandbox Code Playgroud)

但它也没有用,因为无论我怎样尝试,我都无法用正确的偏移来写数据.

我确实管理了几次将patch1写入file.bin,但它没有在正确的偏移处进行修补,事实上它删除了file.bin并且只是将patch1复制到了它的位置.哪个是错的.

我必须提醒你我是python和编程的新手,但我真的想深入研究它并学习,所以任何好的例子都会被检查,希望对我来说是一个很好的学习课:)

谢谢你们和gals帮助我弄清楚我做错了什么:)

python file-io binaryfiles

4
推荐指数
1
解决办法
1万
查看次数

与perl快速字节交换

我最初在这里问这个问题:用perl进行字节交换

我修改了代码,但我发现一个程序在.002秒内执行相同的任务.如果您查看链接,您将看到我如何修改代码.现在虽然这确实加快了一点,但它仍然没有接近其他倒车计划的速度.这是修改后的代码:

my $hexin;
my $n;
 while (($n = read($fin, $bytes_in, 512)) == 512) {
        my @c = split('', $bytes_in);
        my $bytes_out = join('', $c[1], $c[0], $c[3], $c[2], $c[5], $c[4], $c[7], $c[6], $c[9], $c[8], $c[11], $c[10], $c[13], $c[12], $c[15], $c[14], 
                              $c[17], $c[16], $c[19], $c[18], $c[21], $c[20], $c[23], $c[22], $c[25], $c[24], $c[27], $c[26], $c[29], $c[28], $c[31], $c[30], 
                              $c[33], $c[32], $c[35], $c[34], $c[37], $c[36], $c[39], $c[38], $c[41], $c[40], $c[43], $c[42], $c[45], $c[44], $c[47], $c[46], 
                              $c[49], $c[48], $c[51], $c[50], $c[53], $c[52], $c[55], …
Run Code Online (Sandbox Code Playgroud)

perl byte swap

3
推荐指数
1
解决办法
857
查看次数

标签 统计

byte ×2

python ×2

binaryfiles ×1

file-io ×1

perl ×1

reversing ×1

swap ×1