Commit Graph
7 Commits
Author SHA1 Message Date
gurix cd8593eef5 feat(10-01): add 30 new port-matching rules to DefaultRules
- Add Discovery rules: mDNS (5353), SSDP (1900), SNMP (161/162)
- Add Mail rules: IMAP (143/993), POP3 (110/995), SMTP-sub (587)
- Add Remote Access rules: RDP (3389), Telnet (23), VNC (5900)
- Add File Transfer rules: FTP (20/21), SMB (445), TFTP (69)
- Add Database rules: MySQL (3306), PostgreSQL (5432), Redis (6379), MongoDB (27017)
- Add VoIP rules: SIP (5060/5061 tcp+udp)
- Add Infrastructure ext rules: LDAP (389/636), Kerberos (88 tcp+udp), Syslog (514)
- Add Web ext rule: QUIC (udp 443)
- Catch-all rules remain last; total 42 rules (12 existing + 30 new)
2026-03-27 15:53:22 +01:00
gurix 50e047438d feat(10-01): add 21 new TrafficClass constants and update AllClasses()
- Add constants for Mail (IMAP, POP3, SMTP-sub), File Transfer (FTP, SMB, TFTP)
- Add constants for Remote Access (RDP, Telnet, VNC), Database (MySQL, PostgreSQL, Redis, MongoDB)
- Add constants for Discovery (mDNS, SSDP, SNMP), VoIP (SIP), Web (QUIC)
- Add constants for Infrastructure extension (LDAP, Kerberos, Syslog)
- Update AllClasses() to return 32 classes (LDAP/Kerberos/Syslog excluded per D-01)
2026-03-27 15:52:17 +01:00
gurix 52c601019b feat(04-01): add BPF validation, pcap reading, Timestamp field, and filter support
- Add Timestamp time.Time field to ClassifiedPacket (classify/types.go)
- Create capture/bpf.go: ValidateBPFFilter and CompileSoftwareBPF
- Create capture/pcap_reader.go: ReadPcapFile with optional software BPF filter
- Update OpenCapture and StartCapture to accept filter string param
- Update cmd/netsynth/main.go to pass empty filter to StartCapture
- All new tests pass; existing tests unaffected
2026-03-26 14:33:29 +01:00
gurix ff3ec7eb78 feat(03-01): extend TrafficClass to 14 classes with hash-bucketed unknowns
- Replace ClassUnknown with ClassUnknown1-4 (unknown-1 through unknown-4)
- AllClasses() now returns 14 elements
- Add hashBucket() function routing unrecognized traffic deterministically
- Update synth/config.go: NumLayers=14, 4 dissonant unknown tone configs at 862-1047 Hz
- Add TestAllClassesCount and TestHashBucketDistribution tests
- Add TestClassFreqConfigsComplete and TestNumLayersMatchesAllClasses to config_test.go
- Update TestNewBankHas14Layers, TestMixerNoClip for 14 classes
- All classify and synth tests pass
2026-03-26 13:11:24 +01:00
gurix 48ef6e53ad feat(01-01): implement config-driven classifier with 12 protocol rules
- Add classify/rules.go: Rule struct and DefaultRules slice with 12 rules
  (10 specific protocol rules + 2 catch-alls for other-TCP/other-UDP)
- Add classify/classifier.go: Classifier with NewClassifier and Classify methods
- Config-driven slice (not switch) per D-02; first-match-wins ordering
- Returns ClassUnknown for non-TCP/UDP/ICMP traffic per D-03
- All 14 tests pass covering all 11 traffic classes
2026-03-25 12:12:47 +01:00
gurix f233e80f4b test(01-01): add failing tests for all 11 protocol classification classes
- Tests for ICMP, DNS/UDP, DNS/TCP, HTTPS, HTTP, SSH, SMTP, NTP, DHCP(67/68),
  other-TCP, other-UDP, unknown
- Test for order-dependent first-match-wins rule behavior
- Uses gopacket SerializeLayers to build synthetic packets
2026-03-25 12:12:01 +01:00
gurix 15e8143389 feat(01-01): install Go 1.24, initialize module, create shared types
- Initialize Go module github.com/netsynth/netsynth with Go 1.24.1
- Create classify/types.go with 11 TrafficClass constants (ICMP, DNS, HTTPS,
  HTTP, SSH, SMTP, NTP, DHCP, other-TCP, other-UDP, unknown)
- Add ClassifiedPacket and WindowSnapshot shared types
- Add Phase 1 dependencies: gopacket v1.5.0, go-pcap, cobra v1.10.2
2026-03-25 12:11:02 +01:00