From: Jason Ish Date: Thu, 8 Sep 2022 14:59:11 +0000 (-0600) Subject: bittorrent-dht: parse token and target as byte values X-Git-Tag: suricata-7.0.0-rc1~432 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4bc9cf39863e1bcfb69eddb10fecc642847be495;p=thirdparty%2Fsuricata.git bittorrent-dht: parse token and target as byte values --- diff --git a/rust/src/bittorrent_dht/logger.rs b/rust/src/bittorrent_dht/logger.rs index 50a1a26087..283f103323 100644 --- a/rust/src/bittorrent_dht/logger.rs +++ b/rust/src/bittorrent_dht/logger.rs @@ -65,13 +65,13 @@ fn log_bittorrent_dht( js.open_object("request")?; js.set_hex("id", &request.id)?; if let Some(target) = &request.target { - js.set_string("target", target)?; + js.set_hex("target", target)?; } if let Some(info_hash) = &request.info_hash { js.set_hex("info_hash", info_hash)?; } if let Some(token) = &request.token { - js.set_string("token", token)?; + js.set_hex("token", token)?; } if let Some(implied_port) = request.implied_port { js.set_uint("implied_port", u64::from(implied_port))?; diff --git a/rust/src/bittorrent_dht/parser.rs b/rust/src/bittorrent_dht/parser.rs index b72c5aee9a..cdb0db45dc 100644 --- a/rust/src/bittorrent_dht/parser.rs +++ b/rust/src/bittorrent_dht/parser.rs @@ -32,11 +32,11 @@ pub struct BitTorrentDHTRequest { /// q = * - 20 byte string, sender's node ID in network byte order pub id: Vec, /// q = find_node - target node ID - pub target: Option, + pub target: Option>, /// q = get_peers/announce_peer - 20-byte info hash of target torrent pub info_hash: Option>, /// q = announce_peer - token key received from previous get_peers query - pub token: Option, + pub token: Option>, /// q = announce_peer - 0 or 1, if 1 ignore provided port and /// use source port of UDP packet pub implied_port: Option, @@ -125,9 +125,10 @@ impl FromBencode for BitTorrentDHTRequest { id = value.try_into_bytes().context("id").map(Some)?; } (b"target", value) => { - target = String::decode_bencode_object(value) + target = value + .try_into_bytes() .context("target") - .map(Some)?; + .map(|v| Some(v.to_vec()))?; } (b"info_hash", value) => { info_hash = value @@ -136,9 +137,10 @@ impl FromBencode for BitTorrentDHTRequest { .map(|v| Some(v.to_vec()))?; } (b"token", value) => { - token = String::decode_bencode_object(value) + token = value + .try_into_bytes() .context("token") - .map(Some)?; + .map(|v| Some(v.to_vec()))?; } (b"implied_port", value) => { implied_port = u8::decode_bencode_object(value)