バイナリファイルを検索しようとしています。16進エディタでファイルを確認した後、ファイル全体にパターンが見つかりました。ここでそれらを見ることができます。ご覧のとおり、ファイルリストの前後にあります。
/%...... C:\ Users \\ Desktop \ test1.pdf..9
/%...... C:\ Users \\ Desktop \ testtesttesttest.pdf..9
私がやりたいのは、.. 9(HEX = 000039)を見つけて、/%......(hex = 2F25A01C1000000000)が見つかるまで「バックアップ」してから、xバイト先に進むことです。完全なパスを取得します。私が今持っているコードは以下の通りです:
$file = 'C:\Users\<username>\Desktop\bc03160ee1a59fc1.automaticDestinations-ms'
$begin_pattern = '2F25A01C1000000000' #/% ......
$end_pattern = '000039' #..9
$prevBytes = '8'
$bytes = [string]::join('', (gc $file -en byte | % {'{0:x2}' -f $_}))
[regex]::matches($bytes, $end_pattern) |
% {
$i = $_.index - $prevBytes * 2
[string]::join('', $bytes[$i..($i + $prevBytes * 2 - 1)])
}
出力の一部は、大まかに次のように変換されます。
ffff2e0000002f000000300000003b0000003200000033000000340000003500000036000000370000003800 655c4465736b746f705c466f72656e7369635f426f6f6b735c5b656e5d646566745f6d616e75616c2e706466 0000000000000000000000000000010000000a00000000000000000020410a000000000000000a
ÿÿ./0;2345678?e\Desktop\deft_manual.pdf?
?sic Science、Computers、and the Internet.pdf
?ware \ Desktop \ Dive Into Python 3.pdf?