2012-11-11 3 views
0

2 진 패턴과 일치하는 경우 2 진 파일 내부를 확인하고 싶습니다. 이를 위해 BASH : 문자열 내에서 16 진수 표현을 2 진수로 변환하십시오.

, 나는이 육각 서명 문자열 또한

signature=$(echo "$line" |awk -F':' '{ print $4 }') 

내가 진

에 진수 문자열을 변경하려면를 검색 할

Exploit.HTML.ObjectType:3:*:3c6f626a65637420747970653d222f2f2f2f2f2f2f2f2f2f2f2f 

I 코드 ClamAV의 서명 데이터베이스를 사용하고 있습니다

tmp=$(echo -n $signature | sed 's/\([0-9A-F]\{2\}\)/\\\\\\x\1/gI' | xargs print) 

마지막으로 내 파일 (* $ raw_file_path *)이 내 바이너리 패턴과 일치하는지 확인하고 싶습니다

test_var=$(cat $raw_file_path | grep -U -P "$tmp") 

(지금 $ tmp를에) 나는 그것이 작동하지 않습니다하지 않는 이유.

혹시 궁금한 점이 있으시면.

감사합니다.

+0

그렙 및 유닉스 도구, 바이너리 파일을 읽도록 설계되어 있지 않습니다 그들의 정상적인 데이터. 유닉스 도구는 줄 바꿈 문자 (Windows 파일 시스템에서는 \ n 또는 \ r \ n)로 구분 된 데이터 행 읽기에 의존합니다. Null 문자는이 기본 처리 모델을 무효화합니다. 'od'에 대한 조합 옵션을 통해 원하는 것을 할 수 있습니다. 행운을 비네. – shellter

답변

3

어때?

line=Exploit.HTML.ObjectType:3:*:3c6f626a65637420747970653d222f2f2f2f2f2f2f2f2f2f2f2f 
printf $(sed 's/.*://;s/\(..\)/\\x\1/g' <<< "$line") 

산출 어느 :

<object type="//////////// 

당신은 따라서 변수에 빈 출력을 넣을 수 있습니다 :

이제
printf -v variable $(sed 's/.*://;s/\(..\)/\\x\1/g' <<< "$line") 

, cat의 불필요한 사용을 피하십시오!

grep -U "$variable" "$raw_file_path" 

이면 충분합니다. 당신이 (조용하고 grep 문의) grep의 결과를 테스트하려면 : 그들은의 일환으로 000 (NULL) 문자 \ 포함하기 때문에 일반적으로

if grep -qU "$variable" "$raw_file_path"; then 
    echo "Pattern found" 
else 
    echo "Pattern not found" 
fi 
+0

잘'printf'와'sed'의 사용법 : +1! (주석 :'s /.* : // ... $ line' 대신 bash 변수 motor를 써서 다음과 같이 쓸 수 있습니다 :'$ (sed 's/\ (.. \)/\\ x \ 1/g; '<<< $ {line ## * :}}').하지만 감사합니다. 오늘까지 printf의'-v' 옵션을 읽지 않았습니다! (+2 *이 유용했습니다 * ;-) 글쎄요. bash로 가서 * Arrays * 나 Associatives Arrays *를이'printf -v'와 함께 사용하는 방법을 보시고 거기서 환영합니다! –

+0

@ F.Hauri 당신은 매개 변수 확장에 대해 옳았어요. 나는'sed'를 포크 만들기 시작할 때 가능한 한 많은 것을 얻으려고합니다. (내 생각에) 내 벤치 마크는이 경우에 100 %'sed' 메소드가 거의 1 % 더 빨라진다는 것을 증명합니다. (!)'sed' - 매개 변수 확장 메소드':-)'보다. 'printf'와 배열에 관해서는'printf'에게 배열을 만드는 것을 알리는 옵션이 없습니다 (예를 들어'read' 내장 명령의'-a' 옵션과 같이). –

+0

감사합니다! signature = $ (echo "$ line"| awk -F ': "'{print $ 4} ') printf -v 변수 $ (sed's/\ (..\)/\\ X \ 1/g '' ' "$ 서명") grep와 -U "$ 변수", "$의 raw_file_path" – user1778354

관련 문제