私は基本的なファイルカーバーに取り組んでおり、現在ファイルのバイト位置の計算に固執しています。
次の手順を実行するには、コードが必要であることがわかりました。
- 変数で$searchQueryを見つけます
- $ searchQueryが見つかったら、残りの文字列を削除します
- 変数内に現在存在するフィールドの数を数えます
- 16進オフセットと$searchQuery自体を考慮に入れるためのこの変数からのマイナス2
- 次に、答えに2を掛けて、正しいバイト数を取得します
この例は次のとおりです。
- 「00052a0:b4f1 559c ffd8 ffe0 0010 4a4649460001」内で「ffd8」を見つけます
- 変数が「00052a0:b4f1559cffd8」に更新されます
- $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
助けてくれてありがとう!