Jack去年以this Python script为我提供了帮助。这非常有用。现在我想再次使用它,但是这次输出必须是十六进制值,并且如果在大海捞针中找到“针”,那将是非常好的。这可能吗?
#!/usr/bin/python
import mmap
fd = open("file_to_search", "rb")
needle = "\x35\x5A\x3C\x2F\x74\x69\x6D\x65\x3E"
haystack = mmap.mmap(fd.fileno(), length = 0, access = mmap.ACCESS_READ)
i = haystack.find(needle)
while i >= 0:
i += len(needle)
print (haystack[i : i + 28])
i = haystack.find(needle, i)
答案 0 :(得分:0)
如果要更改的内容是显示,则需要更改print
语句。此外,正如J-F Fabre所提到的,如果您使用的是Python3,则需要将搜索字符串更改为bytes
对象。
对于Python3:
needle = b"\x35\x5A\x3C\x2F\x74\x69\x6D\x65\x3E"
...
print ("%08X: "%i, ', '.join("%02X"%(ch) for ch in haystack[i:i+28]))
对于Python2:
print ("%08X: "%i), ', '.join("%02X"%ord(ch) for ch in haystack[i:i+28])
答案 1 :(得分:0)
你可以用Python 2这样做:
<?php
$my_array = [];
while($myvar=mysqli_fetch_array($sql_result)) {
$my_array[] = $myvar;
}
$js_array = json_encode($my_array);
?>
<script>
var javascript_array = <?php echo $js_array; ?>;
</script>
示例输出:
import mmap
with open("file_to_search", "rb") as fd:
needle = "\x35\x5A\x3C\x2F\x74\x69\x6D\x65\x3E"
needle_len = len(needle)
haystack = mmap.mmap(fd.fileno(), length=0, access=mmap.ACCESS_READ)
offset = haystack.find(needle)
while offset >= 0:
hex_string = ''.join(r'\x%02X' % ord(b)
for b in haystack[offset: offset+needle_len])
print('offset: {}, needle: "{}"'.format(offset, hex_string))
offset += needle_len
offset = haystack.find(needle, offset)
由于offset: 3, needle: "\x35\x5A\x3C\x2F\x74\x69\x6D\x65\x3E"
的值永远不会改变,因此每次找到匹配项时显示其值似乎都是多余的。