unfurl
이라는 유명한 프로젝트가 있다.
링크는 https://dfir.blog/unfurl/ 이고, URL만 넣어도 알아서 분석을 마쳐준다.
그 중에서도 오늘은 Unfurl > google > timestamp 를 알려주는 parameter 2개를 분석할 예정이다(ei
parameter, ved
parameter)
ei
parameterhttp://cheeky4n6monkey.blogspot.com/2014/10/google-eid.html
https://github.com/obsidianforensics/unfurl/blob/main/unfurl/parsers/parse_google.py
https://deedpolloffice.com/blog/articles/decoding-ei-parameter
ei
파라미터가 생성된다.ei
생성되지 않으나,ei
가 생성됨ei
삭제됨varint
3개가 오는 형태# python 3.X
# https://github.com/obsidianforensics/unfurl/blob/3363420baf689a665715cd748c4f5b9880822a04/unfurl/parsers/parse_google.py
import struct, base64
def parse_ei(ei):
decoded = base64.urlsafe_b64decode(ei)
# grab 1st 4 bytes and treat as LE unsigned int
timestamp = struct.unpack('<i', decoded[0:4])[0]
parsed = [timestamp]
varint_offset = 4 # First 4 (0-3) bytes are the timestamp
for _ in [1, 2, 3]:
try:
value, bytes_used = decode_varint(decoded[varint_offset:])
parsed.append(value)
varint_offset += bytes_used
except TypeError as e:
log.warning(f'Unable to decode varint from {decoded}: {e}')
return
return parsed
def decode_varint(source):
result = 0
number_of_bytes = 0
for read in source:
result |= ((read & 0x7F) << (number_of_bytes * 7))
number_of_bytes += 1
if (read & 0x80) != 0x80:
return result, number_of_bytes
def correct_b64_padding(s):
return s + '='*(4 - len(s) % 4)
ved
parameterhttps://www.magnetforensics.com/resources/analyzing-timestamps-in-google-search-urls/
https://deedpolloffice.com/blog/articles/decoding-ved-parameter
ved
파라미터 생성ei
와는 달리 ved
는 이미지 탭, 쇼핑탭 등 이동해도 계속 존재함0ahUKEwiR17e4s4_-AhUQ3WEKHarwCJQQ4dUDCA8
0
또는 2
가 와야함. 별다른 의미는 없음1
이 오면 암호화된 형태로, 해독 불가능(실제로 보지는 못함)proto
아래와 같음
좋은 글 감사합니다!!
궁금한 점이 있는데 메일 알 수 있을까요?