Skip to content

Commit 78d6b47

Browse files
committed
Replace unpack! macro with let-chain
Next rust version is going to come out within a couple of weeks where this feature is stable.
1 parent d95da9b commit 78d6b47

File tree

4 files changed

+22
-57
lines changed

4 files changed

+22
-57
lines changed

lib/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22
name = "rayhunter"
33
version = "0.2.8"
4-
edition = "2021"
4+
edition = "2024"
55
description = "Realtime cellular data decoding and analysis for IMSI catcher detection"
66

77

lib/src/analysis/connection_redirect_downgrade.rs

+21-22
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ use std::borrow::Cow;
22

33
use super::analyzer::{Analyzer, Event, EventType, Severity};
44
use super::information_element::{InformationElement, LteInformationElement};
5-
use super::util::unpack;
65
use telcom_parser::lte_rrc::{
76
DL_DCCH_MessageType, DL_DCCH_MessageType_c1, RRCConnectionReleaseCriticalExtensions,
87
RRCConnectionReleaseCriticalExtensions_c1, RedirectedCarrierInfo,
@@ -23,27 +22,27 @@ impl Analyzer for ConnectionRedirect2GDowngradeAnalyzer {
2322
}
2423

2524
fn analyze_information_element(&mut self, ie: &InformationElement) -> Option<Event> {
26-
unpack!(InformationElement::LTE(lte_ie) = ie);
27-
let message = match &**lte_ie {
28-
LteInformationElement::DlDcch(msg_cont) => &msg_cont.message,
29-
_ => return None,
30-
};
31-
unpack!(DL_DCCH_MessageType::C1(c1) = message);
32-
unpack!(DL_DCCH_MessageType_c1::RrcConnectionRelease(release) = c1);
33-
unpack!(RRCConnectionReleaseCriticalExtensions::C1(c1) = &release.critical_extensions);
34-
unpack!(RRCConnectionReleaseCriticalExtensions_c1::RrcConnectionRelease_r8(r8_ies) = c1);
35-
unpack!(Some(carrier_info) = &r8_ies.redirected_carrier_info);
36-
match carrier_info {
37-
RedirectedCarrierInfo::Geran(_carrier_freqs_geran) => Some(Event {
38-
event_type: EventType::QualitativeWarning {
39-
severity: Severity::High,
40-
},
41-
message: "Detected 2G downgrade".to_owned(),
42-
}),
43-
_ => Some(Event {
44-
event_type: EventType::Informational,
45-
message: format!("RRCConnectionRelease CarrierInfo: {:?}", carrier_info),
46-
}),
25+
if let InformationElement::LTE(lte_ie) = ie
26+
&& let LteInformationElement::DlDcch(msg_cont) = &**lte_ie
27+
&& let DL_DCCH_MessageType::C1(c1) = &msg_cont.message
28+
&& let DL_DCCH_MessageType_c1::RrcConnectionRelease(release) = c1
29+
&& let RRCConnectionReleaseCriticalExtensions::C1(c1) = &release.critical_extensions
30+
&& let RRCConnectionReleaseCriticalExtensions_c1::RrcConnectionRelease_r8(r8_ies) = c1
31+
&& let Some(carrier_info) = &r8_ies.redirected_carrier_info {
32+
match carrier_info {
33+
RedirectedCarrierInfo::Geran(_carrier_freqs_geran) => Some(Event {
34+
event_type: EventType::QualitativeWarning {
35+
severity: Severity::High,
36+
},
37+
message: "Detected 2G downgrade".to_owned(),
38+
}),
39+
_ => Some(Event {
40+
event_type: EventType::Informational,
41+
message: format!("RRCConnectionRelease CarrierInfo: {:?}", carrier_info),
42+
}),
43+
}
44+
} else {
45+
None
4746
}
4847
}
4948
}

lib/src/analysis/mod.rs

-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,3 @@ pub mod imsi_requested;
55
pub mod information_element;
66
pub mod null_cipher;
77
pub mod priority_2g_downgrade;
8-
pub mod util;

lib/src/analysis/util.rs

-33
This file was deleted.

0 commit comments

Comments
 (0)