2012년 9월 5일 수요일

패킷파일 로우데이터 문자열/HEX 값 한번에 변경하기!

패킷파일을 조작해야 하는 경우 다양한 방법이 있다. 그런데 문자열과 같은 일부 데이터를 쉽고 빠르게 변경하는 방법은 없을까? 여러분의 시스템에 펄(Perl)이 설치되어 있다면 명령어 한줄로도 가볍게 내용을 변경할 수 있다.

1. 패킷파일의 문자열을 한번에 바꿀 수 있다.

바이너리 패킷 파일을 strings 로 살펴보면 문자열을 볼 수 있는데, 거기서 나오는 문자열을 임의로 변경할 수 있다. 즉, 패킷 데이터의 문자열을 바꿀 수 있는 것이다.

# strings test.pcap | grep TEST
TEST
TEST
TEST
TEST

자 그럼 다음과 같이 하여 변경을 할 수 있다.
# perl -pi -e 's/TEST/HTTP/g'

펄에서 TEST 라는 문자열을 검색하여 HTTP 로 변경을 하는데, 파일 수정까지 같이 해준다. 수정까지 바로 해준다는 점이 중요하다.

2. 문자열 뿐만 아니라 HEX 값도 한번에 변경해 보자.

문자열은 바꿀 수 있는데 HEX 값은 바꿀 수 없을까 ? 물론 바꿀 수 있다. \x 를 이용하면 간단히 해결된다. 패킷파일에서 변경하고자 하는 HEX 값은 다음과 같이 할 수 있다.

# perl -pi -e 's/\x00\x0c\x29\xb5/\x90\x90\x90\x90/g' merge.pcap

예를 들어, MAC 주소를 변경한다고 했을때 해당 값을 찾아 변경이 가능하다. 물론, 블로그에서 소개한 bittwiste 와 같은 도구를 이용해서도 말이다. 맥 주소뿐만 아니라 원하는 모든 것은 변경이 가능하다. 하지만 주의할 점이 있다. bittwiste 는 IP 등을 변경했을때 Checksum 값이 틀려지므로 보정을 해 주게 된다. 하지만 이와 같이 수동으로 직접 패킷파일을 조작하는 경우 Checksum 또한 본인이 스스로 해야 한다.

그러므로 상황에 따라 적절하게 사용하여야 한다. 직접적으로 고치는 경우가 때로는 유용하게 사용될 때가 있다. Payload 와 같이 특별히 Checksum 값 보정이 필요하지 않지만, 임의로 데이터를 바꿔야 하는데 그 변경할 내용이 아주 많다면 이런 방법이 유용해진다.

댓글 없음:

댓글 쓰기