@kar-mi/spirit-vale-tools-capture 2.5.0 → 2.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -24,6 +24,8 @@ export declare class PacketCapture extends EventEmitter {
|
|
|
24
24
|
private decodeFishNet;
|
|
25
25
|
private fishNetRpcMap;
|
|
26
26
|
private fishNetSessionDecoder;
|
|
27
|
+
private droppedPending;
|
|
28
|
+
private droppedReportedAtMs;
|
|
27
29
|
private _state;
|
|
28
30
|
constructor(dependencies?: PacketCaptureDependencies);
|
|
29
31
|
get state(): CaptureState;
|
|
@@ -41,6 +43,8 @@ export declare class PacketCapture extends EventEmitter {
|
|
|
41
43
|
stop(): Promise<void>;
|
|
42
44
|
private poll;
|
|
43
45
|
private flushPending;
|
|
46
|
+
/** Reports packets given up on unattributed, which is how a connection loses its opening. */
|
|
47
|
+
private reportDroppedPending;
|
|
44
48
|
private emitTransportPacket;
|
|
45
49
|
private emitLiteNetLibPackets;
|
|
46
50
|
private emitFishNetPacket;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packet-capture.d.ts","sourceRoot":"","sources":["../../src/capture/packet-capture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAW3C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,qBAAqB,EAAiB,MAAM,qBAAqB,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAgB,WAAW,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,YAAY,EACb,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"packet-capture.d.ts","sourceRoot":"","sources":["../../src/capture/packet-capture.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { CaptureProtocol, CapturedTransportPacket, CaptureTargetStatus } from "../types.ts";
|
|
2
2
|
import type { WindowsOwnedEndpoint } from "./win32-system.ts";
|
|
3
3
|
type OwnedEndpoint = WindowsOwnedEndpoint;
|
|
4
|
+
export declare const TARGET_REFRESH_INTERVAL_MS = 1000;
|
|
4
5
|
export interface TargetSnapshotProvider {
|
|
5
6
|
snapshot(processName: string, protocols: readonly CaptureProtocol[]): Promise<{
|
|
6
7
|
processIds: number[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"target-tracker.d.ts","sourceRoot":"","sources":["../../src/capture/target-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEjG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,KAAK,aAAa,GAAG,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"target-tracker.d.ts","sourceRoot":"","sources":["../../src/capture/target-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEjG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,KAAK,aAAa,GAAG,oBAAoB,CAAC;AAE1C,eAAO,MAAM,0BAA0B,OAAQ,CAAC;AAEhD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,eAAe,EAAE,GAAG,OAAO,CAAC;QAC5E,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,SAAS,EAAE,aAAa,EAAE,CAAC;KAC5B,CAAC,CAAC;CACJ;AAED,qBAAa,oBAAoB;IAS7B,QAAQ,CAAC,WAAW,EAAE,MAAM;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAbpC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,KAAK,CAAC,CAAiC;IAC/C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,gBAAgB,CAAC,CAAS;IAElC,YACW,WAAW,EAAE,MAAM,EACX,SAAS,EAAE,SAAS,eAAe,EAAE,EACrC,QAAQ,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,EAC/C,QAAQ,GAAE,sBAA4D,EACtE,SAAS,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAe,EAC/C,iBAAiB,SAA6B,EAC7D;IAEE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAG3B;IAED,IAAI,IAAI,IAAI,CAGX;IAED,QAAQ,CAAC,MAAM,EAAE,uBAAuB,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAM5E;IAED,OAAO,CAAC,OAAO;YAMD,OAAO;CAgCtB"}
|
package/dist/capture.js
CHANGED
|
@@ -15925,8 +15925,9 @@ function errorMessage2(error) {
|
|
|
15925
15925
|
// src/capture/packet-capture.ts
|
|
15926
15926
|
var POLL_INTERVAL_MS = 2;
|
|
15927
15927
|
var MAX_POLL_BATCH = 128;
|
|
15928
|
-
var PENDING_PACKET_LIMIT =
|
|
15929
|
-
var PENDING_PACKET_MAX_AGE_MS =
|
|
15928
|
+
var PENDING_PACKET_LIMIT = 16384;
|
|
15929
|
+
var PENDING_PACKET_MAX_AGE_MS = TARGET_REFRESH_INTERVAL_MS * 5;
|
|
15930
|
+
var PENDING_DROP_REPORT_MS = 1e4;
|
|
15930
15931
|
var systemRuntime = new SystemNpcapRuntime;
|
|
15931
15932
|
async function getNpcapStatus() {
|
|
15932
15933
|
return systemRuntime.status();
|
|
@@ -15948,6 +15949,8 @@ class PacketCapture extends EventEmitter {
|
|
|
15948
15949
|
decodeFishNet = false;
|
|
15949
15950
|
fishNetRpcMap;
|
|
15950
15951
|
fishNetSessionDecoder = null;
|
|
15952
|
+
droppedPending = 0;
|
|
15953
|
+
droppedReportedAtMs = 0;
|
|
15951
15954
|
_state = "stopped";
|
|
15952
15955
|
constructor(dependencies = {}) {
|
|
15953
15956
|
super();
|
|
@@ -16046,9 +16049,10 @@ class PacketCapture extends EventEmitter {
|
|
|
16046
16049
|
packet.direction = direction;
|
|
16047
16050
|
this.emitTransportPacket(packet);
|
|
16048
16051
|
} else {
|
|
16049
|
-
this.pending.
|
|
16050
|
-
|
|
16051
|
-
|
|
16052
|
+
if (this.pending.length >= PENDING_PACKET_LIMIT)
|
|
16053
|
+
this.droppedPending += 1;
|
|
16054
|
+
else
|
|
16055
|
+
this.pending.push({ packet, observedAt: Date.now() });
|
|
16052
16056
|
}
|
|
16053
16057
|
}
|
|
16054
16058
|
}
|
|
@@ -16064,13 +16068,19 @@ class PacketCapture extends EventEmitter {
|
|
|
16064
16068
|
}
|
|
16065
16069
|
}
|
|
16066
16070
|
flushPending() {
|
|
16067
|
-
if (!this.target
|
|
16071
|
+
if (!this.target)
|
|
16068
16072
|
return;
|
|
16073
|
+
if (this.pending.length === 0) {
|
|
16074
|
+
this.reportDroppedPending();
|
|
16075
|
+
return;
|
|
16076
|
+
}
|
|
16069
16077
|
const cutoff = Date.now() - PENDING_PACKET_MAX_AGE_MS;
|
|
16070
16078
|
const remaining = [];
|
|
16071
16079
|
for (const candidate of this.pending) {
|
|
16072
|
-
if (candidate.observedAt < cutoff)
|
|
16080
|
+
if (candidate.observedAt < cutoff) {
|
|
16081
|
+
this.droppedPending += 1;
|
|
16073
16082
|
continue;
|
|
16083
|
+
}
|
|
16074
16084
|
const direction = this.target.classify(candidate.packet);
|
|
16075
16085
|
if (!direction)
|
|
16076
16086
|
remaining.push(candidate);
|
|
@@ -16080,6 +16090,18 @@ class PacketCapture extends EventEmitter {
|
|
|
16080
16090
|
}
|
|
16081
16091
|
}
|
|
16082
16092
|
this.pending = remaining;
|
|
16093
|
+
this.reportDroppedPending();
|
|
16094
|
+
}
|
|
16095
|
+
reportDroppedPending() {
|
|
16096
|
+
if (this.droppedPending === 0)
|
|
16097
|
+
return;
|
|
16098
|
+
const now = Date.now();
|
|
16099
|
+
this.droppedReportedAtMs ||= now;
|
|
16100
|
+
if (now - this.droppedReportedAtMs < PENDING_DROP_REPORT_MS)
|
|
16101
|
+
return;
|
|
16102
|
+
this.emitSafely("warning", `gave up on ${this.droppedPending} packets that could not be attributed to the target process`);
|
|
16103
|
+
this.droppedPending = 0;
|
|
16104
|
+
this.droppedReportedAtMs = now;
|
|
16083
16105
|
}
|
|
16084
16106
|
emitTransportPacket(packet) {
|
|
16085
16107
|
if (packet.protocol === "tcp")
|
|
@@ -16162,6 +16184,8 @@ class PacketCapture extends EventEmitter {
|
|
|
16162
16184
|
this.fishNetRpcMap = undefined;
|
|
16163
16185
|
this.fishNetSessionDecoder?.reset();
|
|
16164
16186
|
this.fishNetSessionDecoder = null;
|
|
16187
|
+
this.droppedPending = 0;
|
|
16188
|
+
this.droppedReportedAtMs = 0;
|
|
16165
16189
|
}
|
|
16166
16190
|
}
|
|
16167
16191
|
function inferDirection(ipPacket, device) {
|