code wiki / (root) / nx_scam_detector_test.nx

nx_scam_detector_test.nx source

↩ module page · 74 lines · 3194 B

1// nx_scam_detector_test.nx -- smoke for nx_scam_detector. 2 3import "nx_syscalls.nx" 4import "nx_intent.nx" 5import "nx_scam_detector.nx" 6 7func main() -> i64 { 8 if NX_SP_N_PATTERNS != 8 { return 1 } 9 if nx_sp_is_valid(NX_SP_URGENCY_PRESSURE) != 1 { return 2 } 10 if nx_sp_is_valid(8) != 0 { return 3 } 11 12 // Clean message: simple greeting "Hello family" 13 let clean: *u8 = (sys_mmap(32)) as *u8 14 clean[0] = 72 as u8; clean[1] = 101 as u8; clean[2] = 108 as u8; 15 clean[3] = 108 as u8; clean[4] = 111 as u8; clean[5] = 32 as u8; 16 clean[6] = 102 as u8; clean[7] = 97 as u8; clean[8] = 109 as u8; 17 clean[9] = 105 as u8; clean[10] = 108 as u8; clean[11] = 121 as u8; 18 let r_clean: *NxScamScanResult = nx_scam_scan(clean, 12, 19 NX_INTENT_DEFENSIVE, 1000) 20 if (r_clean as i64) == 0 { return 4 } 21 if r_clean.verdict != NX_SC_CLEAN { return 5 } 22 if r_clean.pattern_count != 0 { return 6 } 23 24 // Urgency only: "act now and" 25 let urg: *u8 = (sys_mmap(32)) as *u8 26 urg[0] = 97 as u8; urg[1] = 99 as u8; urg[2] = 116 as u8; 27 urg[3] = 32 as u8; urg[4] = 110 as u8; urg[5] = 111 as u8; 28 urg[6] = 119 as u8; urg[7] = 32 as u8; urg[8] = 97 as u8; 29 urg[9] = 110 as u8; urg[10] = 100 as u8; 30 let r_urg: *NxScamScanResult = nx_scam_scan(urg, 11, 31 NX_INTENT_DEFENSIVE, 2000) 32 if r_urg.verdict != NX_SC_SUSPICIOUS { return 7 } 33 if r_urg.pattern_count != 1 { return 8 } 34 if nx_scam_pattern_flagged(r_urg, NX_SP_URGENCY_PRESSURE) != 1 { return 9 } 35 if nx_scam_pattern_flagged(r_urg, NX_SP_AUTHORITY_IMPERSONATION) != 0 { return 10 } 36 37 // Canonical IRS scam: "act now" + "irs" + "gift card" 38 let irs: *u8 = (sys_mmap(64)) as *u8 39 irs[0] = 97 as u8; irs[1] = 99 as u8; irs[2] = 116 as u8; 40 irs[3] = 32 as u8; irs[4] = 110 as u8; irs[5] = 111 as u8; 41 irs[6] = 119 as u8; irs[7] = 32 as u8; 42 irs[8] = 105 as u8; irs[9] = 114 as u8; irs[10] = 115 as u8; 43 irs[11] = 32 as u8; 44 irs[12] = 103 as u8; irs[13] = 105 as u8; irs[14] = 102 as u8; 45 irs[15] = 116 as u8; irs[16] = 32 as u8; 46 irs[17] = 99 as u8; irs[18] = 97 as u8; irs[19] = 114 as u8; 47 irs[20] = 100 as u8; 48 let r_irs: *NxScamScanResult = nx_scam_scan(irs, 21, 49 NX_INTENT_DEFENSIVE, 3000) 50 if r_irs.verdict != NX_SC_CONFIRMED_PATTERN { return 11 } 51 if r_irs.pattern_count < 3 { return 12 } 52 53 // Bitcoin investment alone: SUSPICIOUS 54 let btc: *u8 = (sys_mmap(16)) as *u8 55 btc[0] = 98 as u8; btc[1] = 105 as u8; btc[2] = 116 as u8; 56 btc[3] = 99 as u8; btc[4] = 111 as u8; btc[5] = 105 as u8; 57 btc[6] = 110 as u8; 58 let r_btc: *NxScamScanResult = nx_scam_scan(btc, 7, 59 NX_INTENT_DEFENSIVE, 4000) 60 if r_btc.verdict != NX_SC_SUSPICIOUS { return 13 } 61 if nx_scam_pattern_flagged(r_btc, NX_SP_CRYPTO_INVESTMENT) != 1 { return 14 } 62 63 // Non-Defensive non-Diagnostic intent refused 64 let r_bad: *NxScamScanResult = nx_scam_scan(clean, 12, 65 NX_INTENT_CREATIVE, 5000) 66 if (r_bad as i64) != 0 { return 15 } 67 68 // Diagnostic intent allowed 69 let r_diag: *NxScamScanResult = nx_scam_scan(clean, 12, 70 NX_INTENT_DIAGNOSTIC, 6000) 71 if (r_diag as i64) == 0 { return 16 } 72 73 return 0 74}