Refactor packet monitoring to capture all traffic on wg0 and enhance logging for peer traffic detection

This commit is contained in:
ImBenji
2025-08-29 01:51:34 +01:00
parent aa5b609d09
commit 2382922995

View File

@@ -89,36 +89,42 @@ class ProtocolBlockingService {
} }
static Future<void> _monitorPeerTraffic() async { static Future<void> _monitorPeerTraffic() async {
for (final peerIP in _activePeerIPs) { // Capture ANY packet on wg0 interface and print it
try { try {
// Capture any new outbound traffic from this peer final process = await Process.start('timeout', [
final process = await Process.start('timeout', [ '0.1', // Very short timeout
'0.1', // Very short timeout - just check for new packets 'tcpdump',
'tcpdump', '-i', 'wg0',
'-i', 'wg0', '-c', '1',
'-c', '1', '-v', // Verbose
'-l', // Line buffered ]);
'src $peerIP and (tcp[tcpflags] & tcp-syn != 0 or udp)',
]); final output = <String>[];
await for (final data in process.stdout) {
output.add(String.fromCharCodes(data));
}
final exitCode = await process.exitCode;
process.kill();
if (exitCode == 0 && output.isNotEmpty) {
final packetData = output.join().trim();
print('📦 PACKET DETECTED: $packetData');
final output = <String>[]; // Check if it's from our monitored peers
await for (final data in process.stdout) { for (final peerIP in _activePeerIPs) {
output.add(String.fromCharCodes(data)); if (packetData.contains(peerIP)) {
} print('🎯 PEER TRAFFIC FROM $peerIP: $packetData');
await _analyzeNewPacket(packetData, peerIP);
final exitCode = await process.exitCode; break;
process.kill(); }
if (exitCode == 0 && output.isNotEmpty) {
final packetData = output.join();
await _analyzeNewPacket(packetData, peerIP);
}
} catch (e) {
// Ignore timeout errors - normal when no new packets
if (!e.toString().contains('timeout')) {
print('❌ Error monitoring peer $peerIP: $e');
} }
} }
} catch (e) {
// Ignore timeout errors - normal when no packets
if (!e.toString().contains('timeout') && !e.toString().contains('No such device')) {
print('❌ Error monitoring traffic: $e');
}
} }
} }