我正在研究一个基本的文件雕刻器,我目前一直在计算文件的字节位置。
我发现我需要一段代码来执行以下步骤;
- 在变量中找到 $searchQuery
- 找到 $searchQuery 后删除字符串的其余部分
- 计算变量中现在存在的字段数
- 将此变量减去 2 以考虑十六进制偏移量和 $searchQuery 本身
- 然后将答案乘以 2 得到正确的字节数
这方面的一个例子是;
- 在“00052a0: b4f1 559c ffd8 ffe0 0010 4a46 4946 0001”中找到“ffd8”
- 变量更新为“00052a0: b4f1 559c ffd8”
- $fieldCount 被赋值为“4”
- $fieldCount=((fieldCount-2))
- $byteCount=((fieldCount*2))
除了计算变量中的字段数之外,我对如何做所有事情都有一个基本的想法。例如,在找到 $searchQuery 之前,如何计算变量中有多少字段?同样,删除字符串中不必要的部分后,如何计算字段数?
用 grep 找到 $searchString 后,我不知道如何继续。我当前的代码如下所示;
#!/bin/bash
#***************************************************************
#Name: fileCarver.sh
#Purpose: Extracts files hidden within other files
#Author:
#Date Written: 12/01/2013
#Last Updated: 12/01/2013
#***************************************************************
clear
#Request user input
printf "Please enter the input file name: "
read inputFile
printf "Please enter the search string: "
read searchString
#Search for the required string
searchFunction()
{
#Search for required string and remove unnecessary characters
startHexOffset=`xxd $1 | grep $2 | cut -d":" -f 1`
#Convert the Hex Offset to Decimal
startDecOffset=$(echo "ibase=16;${startHexOffset^^}" | bc)
}
searchFunction $inputFile $searchString
exit 0
谢谢您的帮助!