整个文件转16进制的ruby脚本(ruby二进制操作)
fin=File.open(c:\windows\system32\cmd.exe, rb).read.unpack("H*").to_s
chars=fin.scan(/../)
chars.each{|i| print i," "}
#==反转
fin=File.open(c:\windows\system32\cmd.exe, rb).read.unpack("H*").to_s
fout=File.open(222.exe, wb)
chars=fin.scan(/../)
chars.each {|char| fout.print char.to_i(16).chr }
#注意一定要用print
#以上这样转成16进制是为了方便替换二进制里的修改、替换等操作。如果直接读二进制到另一个文件,有别的办法(google来的):
File.open(in.dat, rb) {|fin|
File.open(out.dat, wb) {|fout|
fout.print(fin.read)
}
}
或
f = File.new("filename" , "rb")
target = open("targetfile" , "wb")
while true
str = f.sysread(8*8)
target.syswrite(str)
rescue
#用sysread当到达eof后会抛错,但只要有内容就能读取
#还有一个offset的seek方法可以手动操作
break
end
f.close
target.close
补充:综合编程 , 其他综合 ,