feat(core): packet capture per card after Java's Lauscher, measured card by card
The engine keeps Java's packet capture (capture.ts): per network card every frame it sent (when it leaves on the cable) or received (also one for another card), once, with time and number; switches log nothing; frames the packet loss dropped are kept apart; the capture outlives a stop and a new start, as in Java, until clearCapture. Per port instead of per MAC, at most 10,000 frames a card. expectSameCaptures compares each card's capture with Java's list of that card in the ARP, WLAN, DNS, TCP, NAT, RIP and single-client DHCP runs. It found that ScenarioNetwork ignored a switch's learning time (Java ran 300 s, the core the scenarios' 5 s); the oracle sets it now, and the TCP and DHCP runs are recorded again. A core test found that a new start numbers frames from 1 again and the capture took them as seen. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+4
-2
File diff suppressed because one or more lines are too long
@@ -15,6 +15,7 @@ export * from './runtime/routeTable.js';
|
|||||||
export * from './runtime/snapshot.js';
|
export * from './runtime/snapshot.js';
|
||||||
export * from './runtime/speed.js';
|
export * from './runtime/speed.js';
|
||||||
export * from './runtime/trace.js';
|
export * from './runtime/trace.js';
|
||||||
|
export * from './runtime/capture.js';
|
||||||
export * from './util/equal.js';
|
export * from './util/equal.js';
|
||||||
export * from './util/javaIp.js';
|
export * from './util/javaIp.js';
|
||||||
export * from './util/swiftString.js';
|
export * from './util/swiftString.js';
|
||||||
|
|||||||
@@ -0,0 +1,120 @@
|
|||||||
|
// The packet capture as Java FILIUS keeps it (filius.rahmenprogramm.nachrichten
|
||||||
|
// .Lauscher, the data exchange window): per network card every frame it sent
|
||||||
|
// or received, once, with the time; and the frames the packet loss dropped.
|
||||||
|
//
|
||||||
|
// Java logs a frame on a card when the card hands it to the cable
|
||||||
|
// (Ethernet.senden, after the cable is free) and when a frame arrives at the
|
||||||
|
// card (EthernetThread, or before it the firewall or NAT thread of a router
|
||||||
|
// or home router) — every frame that arrives, also one addressed to another
|
||||||
|
// card, also one a firewall then drops. Switches have no cards and log
|
||||||
|
// nothing. A frame shows on a card at most once (EthernetFrame
|
||||||
|
// .readByLauscherForMac). The log is not cleared when the simulation stops
|
||||||
|
// or starts again, only for a new or loaded project and by the user.
|
||||||
|
//
|
||||||
|
// Departures from Java: a card's list is kept under its port, not its MAC
|
||||||
|
// address (Java merges two cards with the same MAC into one list), and it
|
||||||
|
// keeps at most `maximumFrameCount` frames, dropping the oldest
|
||||||
|
// `evictionBatchSize` at once (Java keeps all); a frame keeps its number.
|
||||||
|
|
||||||
|
import type { Id } from '../ids.js';
|
||||||
|
import type { EthernetFrame } from './packets.js';
|
||||||
|
|
||||||
|
export interface CapturedFrame {
|
||||||
|
/** Its row number in the card's list, from 1, kept when older frames are dropped (Java: "Nr."). */
|
||||||
|
readonly number: number;
|
||||||
|
readonly timeMilliseconds: number;
|
||||||
|
readonly frame: EthernetFrame;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** How many frames a list keeps, and how many it drops at once when full. */
|
||||||
|
export interface CaptureRetentionPolicy {
|
||||||
|
readonly maximumFrameCount: number;
|
||||||
|
readonly evictionBatchSize: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function captureRetentionPolicy(maximumFrameCount: number, evictionBatchSize: number): CaptureRetentionPolicy {
|
||||||
|
if (!(maximumFrameCount > 0)) throw new RangeError('Packet capture must keep at least one frame');
|
||||||
|
if (!(evictionBatchSize > 0)) throw new RangeError('Packet capture eviction must remove at least one frame');
|
||||||
|
if (evictionBatchSize > maximumFrameCount) throw new RangeError('Packet capture eviction cannot exceed the retention limit');
|
||||||
|
return { maximumFrameCount, evictionBatchSize };
|
||||||
|
}
|
||||||
|
|
||||||
|
export const PRODUCTION_CAPTURE_RETENTION = captureRetentionPolicy(10_000, 1_000);
|
||||||
|
|
||||||
|
class CaptureList {
|
||||||
|
readonly frames: CapturedFrame[] = [];
|
||||||
|
private readonly identities = new Set<number>();
|
||||||
|
private count = 0;
|
||||||
|
|
||||||
|
/** `once`: a frame shows at most once (a card's list; a switch floods one frame onto several cables, each may drop it). */
|
||||||
|
constructor(
|
||||||
|
private readonly policy: CaptureRetentionPolicy,
|
||||||
|
private readonly once: boolean,
|
||||||
|
) {}
|
||||||
|
|
||||||
|
/** Adds the frame unless it shows once only and the list has it already; false then. */
|
||||||
|
add(timeMilliseconds: number, frame: EthernetFrame): boolean {
|
||||||
|
if (this.once && this.identities.has(frame.identity)) return false;
|
||||||
|
if (this.frames.length >= this.policy.maximumFrameCount) {
|
||||||
|
for (const evicted of this.frames.splice(0, this.policy.evictionBatchSize)) this.identities.delete(evicted.frame.identity);
|
||||||
|
}
|
||||||
|
this.count += 1;
|
||||||
|
this.frames.push({ number: this.count, timeMilliseconds, frame });
|
||||||
|
this.identities.add(frame.identity);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** A new run numbers its frames from 1 again: the identities of the last run no longer tell a frame apart. */
|
||||||
|
forgetIdentities(): void {
|
||||||
|
this.identities.clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class PacketCapture {
|
||||||
|
private readonly listsByPortId = new Map<Id, CaptureList>();
|
||||||
|
private dropped: CaptureList;
|
||||||
|
|
||||||
|
constructor(private readonly policy: CaptureRetentionPolicy = PRODUCTION_CAPTURE_RETENTION) {
|
||||||
|
this.dropped = new CaptureList(policy, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Logs the frame on the card at `portId`, unless it shows there already. */
|
||||||
|
record(portId: Id, timeMilliseconds: number, frame: EthernetFrame): void {
|
||||||
|
let list = this.listsByPortId.get(portId);
|
||||||
|
if (list === undefined) {
|
||||||
|
list = new CaptureList(this.policy, true);
|
||||||
|
this.listsByPortId.set(portId, list);
|
||||||
|
}
|
||||||
|
list.add(timeMilliseconds, frame);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Logs a frame the packet loss dropped on its cable (Lauscher.addDroppedDataUnit). */
|
||||||
|
recordDropped(timeMilliseconds: number, frame: EthernetFrame): void {
|
||||||
|
this.dropped.add(timeMilliseconds, frame);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** The card's frames, oldest first. */
|
||||||
|
frames(portId: Id): readonly CapturedFrame[] {
|
||||||
|
return this.listsByPortId.get(portId)?.frames ?? [];
|
||||||
|
}
|
||||||
|
|
||||||
|
/** The cards that have frames. */
|
||||||
|
portIds(): Id[] {
|
||||||
|
return [...this.listsByPortId.keys()];
|
||||||
|
}
|
||||||
|
|
||||||
|
droppedFrames(): readonly CapturedFrame[] {
|
||||||
|
return this.dropped.frames;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** The simulation starts again: the lists stay, frames of the new run are new. */
|
||||||
|
beginRun(): void {
|
||||||
|
for (const list of this.listsByPortId.values()) list.forgetIdentities();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Empties every list (Lauscher.reset). */
|
||||||
|
clear(): void {
|
||||||
|
this.listsByPortId.clear();
|
||||||
|
this.dropped = new CaptureList(this.policy, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -39,6 +39,8 @@
|
|||||||
// DNS after Java (filius.software.dns: DNSServer, DNSServerMitarbeiter,
|
// DNS after Java (filius.software.dns: DNSServer, DNSServerMitarbeiter,
|
||||||
// Resolver, DNSQueryAgent), not Swift's typed format; a recursive server
|
// Resolver, DNSQueryAgent), not Swift's typed format; a recursive server
|
||||||
// asks on without asking itself (Java does, without end).
|
// asks on without asking itself (Java does, without end).
|
||||||
|
// The packet capture after Java's Lauscher (capture.ts): a card logs a frame
|
||||||
|
// when it leaves on the cable and when it arrives, a switch logs nothing.
|
||||||
// Java counterparts: filius.hardware.Verbindung, filius.software.netzzugangsschicht,
|
// Java counterparts: filius.hardware.Verbindung, filius.software.netzzugangsschicht,
|
||||||
// filius.software.vermittlungsschicht (ARP, IP, ICMP), system.SwitchFirmware,
|
// filius.software.vermittlungsschicht (ARP, IP, ICMP), system.SwitchFirmware,
|
||||||
// filius.software.transportschicht (UDP, TCP), filius.software.dhcp.
|
// filius.software.transportschicht (UDP, TCP), filius.software.dhcp.
|
||||||
@@ -103,6 +105,7 @@ import {
|
|||||||
type DnsMessageRecord,
|
type DnsMessageRecord,
|
||||||
type DnsQuestion,
|
type DnsQuestion,
|
||||||
} from './dns.js';
|
} from './dns.js';
|
||||||
|
import { PacketCapture, PRODUCTION_CAPTURE_RETENTION, type CaptureRetentionPolicy } from './capture.js';
|
||||||
import { JavaCompatibleRandom } from './random.js';
|
import { JavaCompatibleRandom } from './random.js';
|
||||||
import { routeTableRows, type RouteRow } from './routeTable.js';
|
import { routeTableRows, type RouteRow } from './routeTable.js';
|
||||||
import { EMPTY_TOPOLOGY_SNAPSHOT, withSnapshot, type NodeSnapshot, type TopologySnapshot } from './snapshot.js';
|
import { EMPTY_TOPOLOGY_SNAPSHOT, withSnapshot, type NodeSnapshot, type TopologySnapshot } from './snapshot.js';
|
||||||
@@ -845,6 +848,7 @@ export class NetworkRuntimeEngine {
|
|||||||
private readonly cablesCarryOneFrameAtATime: boolean;
|
private readonly cablesCarryOneFrameAtATime: boolean;
|
||||||
private readonly swiftArp: boolean;
|
private readonly swiftArp: boolean;
|
||||||
private readonly swiftSends: boolean;
|
private readonly swiftSends: boolean;
|
||||||
|
private readonly packetCapture: PacketCapture;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* `swiftCables`: a cable carries all frames at once, as in the Swift
|
* `swiftCables`: a cable carries all frames at once, as in the Swift
|
||||||
@@ -855,12 +859,20 @@ export class NetworkRuntimeEngine {
|
|||||||
*
|
*
|
||||||
* `swiftArp`, `swiftSends`: Swift's ARP and Swift's send that returns
|
* `swiftArp`, `swiftSends`: Swift's ARP and Swift's send that returns
|
||||||
* when the network is quiet, likewise only for the comparison.
|
* when the network is quiet, likewise only for the comparison.
|
||||||
|
*
|
||||||
|
* `captureRetention`: how many frames each card's packet capture keeps.
|
||||||
*/
|
*/
|
||||||
constructor(
|
constructor(
|
||||||
seed: bigint | number = DEFAULT_SEED,
|
seed: bigint | number = DEFAULT_SEED,
|
||||||
packetTraceRetentionPolicy: TraceRetentionPolicy = PRODUCTION_TRACE_RETENTION,
|
packetTraceRetentionPolicy: TraceRetentionPolicy = PRODUCTION_TRACE_RETENTION,
|
||||||
options: { readonly swiftCables?: boolean; readonly swiftArp?: boolean; readonly swiftSends?: boolean } = {},
|
options: {
|
||||||
|
readonly swiftCables?: boolean;
|
||||||
|
readonly swiftArp?: boolean;
|
||||||
|
readonly swiftSends?: boolean;
|
||||||
|
readonly captureRetention?: CaptureRetentionPolicy;
|
||||||
|
} = {},
|
||||||
) {
|
) {
|
||||||
|
this.packetCapture = new PacketCapture(options.captureRetention ?? PRODUCTION_CAPTURE_RETENTION);
|
||||||
this.cablesCarryOneFrameAtATime = options.swiftCables !== true;
|
this.cablesCarryOneFrameAtATime = options.swiftCables !== true;
|
||||||
this.swiftArp = options.swiftArp === true;
|
this.swiftArp = options.swiftArp === true;
|
||||||
this.swiftSends = options.swiftSends === true;
|
this.swiftSends = options.swiftSends === true;
|
||||||
@@ -876,6 +888,20 @@ export class NetworkRuntimeEngine {
|
|||||||
this.stateValue.simulationSpeedPercent = this.runtimeSpeed.percent;
|
this.stateValue.simulationSpeedPercent = this.runtimeSpeed.percent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The packet capture (Java's Lauscher): per card every frame it sent or
|
||||||
|
* received. It outlives a stop and a new start, as in Java; clearCapture
|
||||||
|
* empties it.
|
||||||
|
*/
|
||||||
|
get capture(): PacketCapture {
|
||||||
|
return this.packetCapture;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Empties the packet capture (Java: the data exchange window's reset, a new or loaded project). */
|
||||||
|
clearCapture(): void {
|
||||||
|
this.packetCapture.clear();
|
||||||
|
}
|
||||||
|
|
||||||
/** The runtime state. Read it; change it only through the engine's methods. */
|
/** The runtime state. Read it; change it only through the engine's methods. */
|
||||||
get state(): RuntimeState {
|
get state(): RuntimeState {
|
||||||
return this.stateValue;
|
return this.stateValue;
|
||||||
@@ -900,6 +926,7 @@ export class NetworkRuntimeEngine {
|
|||||||
if (this.stateValue.phase !== 'stopped') return [this.output({ type: 'startIgnoredAlreadyRunning' })];
|
if (this.stateValue.phase !== 'stopped') return [this.output({ type: 'startIgnoredAlreadyRunning' })];
|
||||||
const seed = toSeed(input.seed);
|
const seed = toSeed(input.seed);
|
||||||
this.stateValue = initialState(seed);
|
this.stateValue = initialState(seed);
|
||||||
|
this.packetCapture.beginRun();
|
||||||
this.stateValue.phase = 'running';
|
this.stateValue.phase = 'running';
|
||||||
this.stateValue.currentTimeMilliseconds = input.initialTimeMilliseconds;
|
this.stateValue.currentTimeMilliseconds = input.initialTimeMilliseconds;
|
||||||
this.stateValue.simulationSpeedPercent = this.runtimeSpeed.percent;
|
this.stateValue.simulationSpeedPercent = this.runtimeSpeed.percent;
|
||||||
@@ -1143,6 +1170,7 @@ export class NetworkRuntimeEngine {
|
|||||||
layer: TraceLayer,
|
layer: TraceLayer,
|
||||||
): boolean {
|
): boolean {
|
||||||
if (!this.stateValue.globalPacketLossEnabled) return false;
|
if (!this.stateValue.globalPacketLossEnabled) return false;
|
||||||
|
this.packetCapture.recordDropped(this.stateValue.currentTimeMilliseconds, frame);
|
||||||
this.recordTrace({
|
this.recordTrace({
|
||||||
frameIdentity: frame.identity,
|
frameIdentity: frame.identity,
|
||||||
packetIdentity: packetIdentityInFrame(frame),
|
packetIdentity: packetIdentityInFrame(frame),
|
||||||
@@ -3730,6 +3758,7 @@ export class NetworkRuntimeEngine {
|
|||||||
|
|
||||||
/** The frame leaves on the cable (and shows in the packet log); it arrives one cable's delay later. */
|
/** The frame leaves on the cable (and shows in the packet log); it arrives one cable's delay later. */
|
||||||
private departEthernetFrame(fromNodeId: Id, outgoingPortId: Id, endpoint: { nodeId: Id; portId: Id } | undefined, frame: EthernetFrame): void {
|
private departEthernetFrame(fromNodeId: Id, outgoingPortId: Id, endpoint: { nodeId: Id; portId: Id } | undefined, frame: EthernetFrame): void {
|
||||||
|
this.captureOnCard(fromNodeId, outgoingPortId, frame);
|
||||||
this.recordTrace({
|
this.recordTrace({
|
||||||
frameIdentity: frame.identity,
|
frameIdentity: frame.identity,
|
||||||
packetIdentity: packetIdentityInFrame(frame),
|
packetIdentity: packetIdentityInFrame(frame),
|
||||||
@@ -3804,7 +3833,14 @@ export class NetworkRuntimeEngine {
|
|||||||
return this.stateValue.topologySnapshot.nodes.find((node) => node.id === nodeId);
|
return this.stateValue.topologySnapshot.nodes.find((node) => node.id === nodeId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Java logs a frame on a card; a switch has none. */
|
||||||
|
private captureOnCard(nodeId: Id, portId: Id, frame: EthernetFrame): void {
|
||||||
|
if (this.nodeSnapshot(nodeId)?.kind === 'networkSwitch') return;
|
||||||
|
this.packetCapture.record(portId, this.stateValue.currentTimeMilliseconds, frame);
|
||||||
|
}
|
||||||
|
|
||||||
private receiveEthernetFrame(frame: EthernetFrame, nodeId: Id, incomingPortId: Id): void {
|
private receiveEthernetFrame(frame: EthernetFrame, nodeId: Id, incomingPortId: Id): void {
|
||||||
|
this.captureOnCard(nodeId, incomingPortId, frame);
|
||||||
this.recordTrace({
|
this.recordTrace({
|
||||||
frameIdentity: frame.identity,
|
frameIdentity: frame.identity,
|
||||||
packetIdentity: packetIdentityInFrame(frame),
|
packetIdentity: packetIdentityInFrame(frame),
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import { dirname, join } from 'node:path';
|
|||||||
import { fileURLToPath } from 'node:url';
|
import { fileURLToPath } from 'node:url';
|
||||||
import { describe, expect, it } from 'vitest';
|
import { describe, expect, it } from 'vitest';
|
||||||
import { icmpMessage, type NetworkRuntimeEngine } from '../src/index.js';
|
import { icmpMessage, type NetworkRuntimeEngine } from '../src/index.js';
|
||||||
import { GAP_TOLERANCE_MILLISECONDS, gaps, javaFrames, watchedEngine, type JavaFrame } from './javaRun.js';
|
import { expectSameCaptures, withClientPortText, GAP_TOLERANCE_MILLISECONDS, gaps, javaFrames, watchedEngine, type JavaFrame } from './javaRun.js';
|
||||||
import type { Scenario } from './scenario.js';
|
import type { Scenario } from './scenario.js';
|
||||||
|
|
||||||
const scenarioDirectory = join(dirname(fileURLToPath(import.meta.url)), 'scenarios');
|
const scenarioDirectory = join(dirname(fileURLToPath(import.meta.url)), 'scenarios');
|
||||||
@@ -117,6 +117,7 @@ describe('ARP as Java FILIUS runs it', () => {
|
|||||||
expect(actual[index]?.text, `frame #${index + 1}`).toBe(expected[index]?.text);
|
expect(actual[index]?.text, `frame #${index + 1}`).toBe(expected[index]?.text);
|
||||||
expect(Math.abs(actual[index]!.gap - expected[index]!.gap), `gap before frame #${index + 1}`).toBeLessThanOrEqual(GAP_TOLERANCE_MILLISECONDS);
|
expect(Math.abs(actual[index]!.gap - expected[index]!.gap), `gap before frame #${index + 1}`).toBeLessThanOrEqual(GAP_TOLERANCE_MILLISECONDS);
|
||||||
}
|
}
|
||||||
|
expectSameCaptures(engine, scenario, java.frames, { text: withClientPortText });
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import { dirname, join } from 'node:path';
|
|||||||
import { fileURLToPath } from 'node:url';
|
import { fileURLToPath } from 'node:url';
|
||||||
import { describe, expect, it } from 'vitest';
|
import { describe, expect, it } from 'vitest';
|
||||||
import { stableMacAddress } from '../src/index.js';
|
import { stableMacAddress } from '../src/index.js';
|
||||||
import { GAP_TOLERANCE_MILLISECONDS, javaFrames, watchedEngine, type JavaFrame, type SeenFrame } from './javaRun.js';
|
import { expectSameCaptures, GAP_TOLERANCE_MILLISECONDS, javaFrames, watchedEngine, type JavaFrame, type SeenFrame } from './javaRun.js';
|
||||||
import { type Scenario } from './scenario.js';
|
import { type Scenario } from './scenario.js';
|
||||||
|
|
||||||
const scenarioDirectory = join(dirname(fileURLToPath(import.meta.url)), 'scenarios');
|
const scenarioDirectory = join(dirname(fileURLToPath(import.meta.url)), 'scenarios');
|
||||||
@@ -38,7 +38,7 @@ function runEngine(scenario: Scenario, milliseconds: number) {
|
|||||||
[device.ipAddress, device.subnetMask, device.defaultGateway, device.dnsServer],
|
[device.ipAddress, device.subnetMask, device.defaultGateway, device.dnsServer],
|
||||||
]),
|
]),
|
||||||
);
|
);
|
||||||
return { frames: frames(), devices };
|
return { engine, frames: frames(), devices };
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Consecutive frames without the other clients' own: the text, and the time since the one before. */
|
/** Consecutive frames without the other clients' own: the text, and the time since the one before. */
|
||||||
@@ -86,6 +86,10 @@ describe('DHCP as Java FILIUS runs it', () => {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Each card's capture, with one client: of two that start together, Java's
|
||||||
|
// log loses the DISCOVER of the one that sends second, and which sends
|
||||||
|
// first varies (javaRun.ts).
|
||||||
|
if (clients.length === 1) expectSameCaptures(engine.engine, scenario, java.frames, { text: (text) => text.replace(LINK_LOCAL, '169.254.1.x') });
|
||||||
const linkLocal = (devices: Record<string, string[]>) =>
|
const linkLocal = (devices: Record<string, string[]>) =>
|
||||||
Object.fromEntries(Object.entries(devices).map(([node, device]) => [node, device.map((value) => value.replace(LINK_LOCAL, '169.254.1.x'))]));
|
Object.fromEntries(Object.entries(devices).map(([node, device]) => [node, device.map((value) => value.replace(LINK_LOCAL, '169.254.1.x'))]));
|
||||||
expect(linkLocal(engine.devices)).toEqual(linkLocal(java.devices));
|
expect(linkLocal(engine.devices)).toEqual(linkLocal(java.devices));
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import { dirname, join } from 'node:path';
|
|||||||
import { fileURLToPath } from 'node:url';
|
import { fileURLToPath } from 'node:url';
|
||||||
import { describe, expect, it } from 'vitest';
|
import { describe, expect, it } from 'vitest';
|
||||||
import type { DnsAddressResolution, NetworkRuntimeEngine } from '../src/index.js';
|
import type { DnsAddressResolution, NetworkRuntimeEngine } from '../src/index.js';
|
||||||
import { GAP_TOLERANCE_MILLISECONDS, gaps, javaFrames, watchedEngine, type JavaFrame, type SeenFrame } from './javaRun.js';
|
import { expectSameCaptures, GAP_TOLERANCE_MILLISECONDS, gaps, javaFrames, watchedEngine, type JavaFrame, type SeenFrame } from './javaRun.js';
|
||||||
import type { Scenario } from './scenario.js';
|
import type { Scenario } from './scenario.js';
|
||||||
|
|
||||||
const scenarioDirectory = join(dirname(fileURLToPath(import.meta.url)), 'scenarios');
|
const scenarioDirectory = join(dirname(fileURLToPath(import.meta.url)), 'scenarios');
|
||||||
@@ -122,6 +122,7 @@ describe('DNS as Java FILIUS runs it', () => {
|
|||||||
expect(actual[index]?.text, `frame #${index + 1}`).toBe(expected[index]?.text);
|
expect(actual[index]?.text, `frame #${index + 1}`).toBe(expected[index]?.text);
|
||||||
expect(Math.abs(actual[index]!.gap - expected[index]!.gap), `gap before frame #${index + 1}`).toBeLessThanOrEqual(GAP_TOLERANCE_MILLISECONDS);
|
expect(Math.abs(actual[index]!.gap - expected[index]!.gap), `gap before frame #${index + 1}`).toBeLessThanOrEqual(GAP_TOLERANCE_MILLISECONDS);
|
||||||
}
|
}
|
||||||
|
expectSameCaptures(engine, scenario, java.frames, { text: (text) => normalized([{ time: 0, text }])[0]!.text, until });
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import {
|
|||||||
JavaCompatibleRandom,
|
JavaCompatibleRandom,
|
||||||
ripSeed,
|
ripSeed,
|
||||||
NetworkRuntimeEngine,
|
NetworkRuntimeEngine,
|
||||||
|
captureRetentionPolicy,
|
||||||
portSnapshot,
|
portSnapshot,
|
||||||
stableMacAddress,
|
stableMacAddress,
|
||||||
switchConfiguration,
|
switchConfiguration,
|
||||||
@@ -2385,3 +2386,121 @@ describe('Home router NAT', () => {
|
|||||||
expect(engine.state.natTablesByNodeId.size).toBe(0);
|
expect(engine.state.natTablesByNodeId.size).toBe(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe("packet capture (Java's Lauscher)", () => {
|
||||||
|
const hostA = uuid(0x2e01);
|
||||||
|
const portA = uuid(0x2e11);
|
||||||
|
const hostB = uuid(0x2e02);
|
||||||
|
const portB = uuid(0x2e12);
|
||||||
|
const switchId = uuid(0x2e04);
|
||||||
|
const switchPorts = [1, 2].map((index) => portSnapshot(uuid(0x2e20 + index), `sw${index}`));
|
||||||
|
const network = {
|
||||||
|
nodes: [pc(hostA, portA), pc(hostB, portB), { id: switchId, kind: 'networkSwitch' as const, ports: switchPorts }],
|
||||||
|
links: [link(hostA, portA, switchId, switchPorts[0]!.id), link(hostB, portB, switchId, switchPorts[1]!.id)],
|
||||||
|
deviceConfigurations: new Map([
|
||||||
|
[hostA, device('10.0.0.1')],
|
||||||
|
[hostB, device('10.0.0.2')],
|
||||||
|
]),
|
||||||
|
};
|
||||||
|
const kinds = (engine: NetworkRuntimeEngine, portId: string) =>
|
||||||
|
engine.capture.frames(portId).map(({ number, frame }) => {
|
||||||
|
const what = frame.payload.kind === 'arp' ? `arp ${frame.payload.packet.operation}` : frame.payload.packet.payload.kind;
|
||||||
|
return `${number} ${frame.sourceMacAddress === stableMacAddress(portId) ? 'sent' : 'received'} ${what}`;
|
||||||
|
});
|
||||||
|
const arpRequest = (engine: NetworkRuntimeEngine): EthernetFrame => ({
|
||||||
|
identity: engine.allocateFrameIdentity(),
|
||||||
|
sourceMacAddress: stableMacAddress(portA),
|
||||||
|
destinationMacAddress: ETHERNET_BROADCAST_MAC_ADDRESS,
|
||||||
|
payload: {
|
||||||
|
kind: 'arp',
|
||||||
|
packet: { operation: 'request', senderMacAddress: stableMacAddress(portA), senderIPAddress: '10.0.0.1', targetMacAddress: UNSPECIFIED_MAC_ADDRESS, targetIPAddress: '10.0.0.9' },
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
it('logs every frame a card sends or receives, numbered, and nothing on a switch', () => {
|
||||||
|
const engine = startedEngine(network);
|
||||||
|
engine.sendIcmpEcho(hostA, '10.0.0.2');
|
||||||
|
letFramesArrive(engine);
|
||||||
|
|
||||||
|
expect(kinds(engine, portA)).toEqual(['1 sent arp request', '2 received arp reply', '3 sent icmp', '4 received icmp']);
|
||||||
|
expect(kinds(engine, portB)).toEqual(['1 received arp request', '2 sent arp reply', '3 received icmp', '4 sent icmp']);
|
||||||
|
expect(switchPorts.map((port) => engine.capture.frames(port.id))).toEqual([[], []]);
|
||||||
|
// When the card sent it, when the other card received it: two cables later.
|
||||||
|
const [sent] = engine.capture.frames(portA);
|
||||||
|
const [received] = engine.capture.frames(portB);
|
||||||
|
expect(received!.timeMilliseconds - sent!.timeMilliseconds).toBe(2 * engine.simulationSpeed.linkTransmissionDelayMilliseconds);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('logs a frame on a card once, also a frame for another card', () => {
|
||||||
|
const engine = startedEngine(network);
|
||||||
|
const frame = { ...arpRequest(engine), destinationMacAddress: '02:00:00:00:00:FE' };
|
||||||
|
engine.sendEthernetFrame(hostA, portA, frame);
|
||||||
|
engine.sendEthernetFrame(hostA, portA, frame);
|
||||||
|
letFramesArrive(engine);
|
||||||
|
|
||||||
|
expect(kinds(engine, portA)).toEqual(['1 sent arp request']);
|
||||||
|
// The switch floods the unknown destination; B's card logs what is not addressed to it.
|
||||||
|
expect(kinds(engine, portB)).toEqual(['1 received arp request']);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('keeps the frames the packet loss dropped apart; the sender logged them', () => {
|
||||||
|
const engine = startedEngine(network);
|
||||||
|
engine.setGlobalPacketLossEnabled(true);
|
||||||
|
engine.sendEthernetFrame(hostA, portA, arpRequest(engine));
|
||||||
|
letFramesArrive(engine);
|
||||||
|
|
||||||
|
expect(kinds(engine, portA)).toEqual(['1 sent arp request']);
|
||||||
|
expect(engine.capture.frames(portB)).toEqual([]);
|
||||||
|
expect(engine.capture.droppedFrames().map((each) => each.timeMilliseconds)).toEqual([engine.simulationSpeed.linkTransmissionDelayMilliseconds]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('logs a frame flooded onto two cables once for each cable that drops it', () => {
|
||||||
|
const hostC = uuid(0x2e03);
|
||||||
|
const portC = uuid(0x2e13);
|
||||||
|
const ports = [1, 2, 3].map((index) => portSnapshot(uuid(0x2e30 + index), `sw${index}`));
|
||||||
|
const engine = startedEngine({
|
||||||
|
nodes: [pc(hostA, portA), pc(hostB, portB), pc(hostC, portC), { id: switchId, kind: 'networkSwitch', ports }],
|
||||||
|
links: [link(hostA, portA, switchId, ports[0]!.id), link(hostB, portB, switchId, ports[1]!.id), link(hostC, portC, switchId, ports[2]!.id)],
|
||||||
|
});
|
||||||
|
engine.sendEthernetFrame(hostA, portA, arpRequest(engine));
|
||||||
|
// The switch has it and floods it; then the loss begins.
|
||||||
|
engine.handle({ type: 'advance', toMilliseconds: engine.simulationSpeed.linkTransmissionDelayMilliseconds });
|
||||||
|
engine.setGlobalPacketLossEnabled(true);
|
||||||
|
letFramesArrive(engine);
|
||||||
|
|
||||||
|
expect(engine.capture.droppedFrames()).toHaveLength(2);
|
||||||
|
expect([portB, portC].map((port) => engine.capture.frames(port))).toEqual([[], []]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('outlives a stop and a new start, as in Java, until it is cleared', () => {
|
||||||
|
const engine = startedEngine(network);
|
||||||
|
engine.sendEthernetFrame(hostA, portA, arpRequest(engine));
|
||||||
|
letFramesArrive(engine);
|
||||||
|
engine.handle({ type: 'stop' });
|
||||||
|
expect(kinds(engine, portA)).toEqual(['1 sent arp request']);
|
||||||
|
|
||||||
|
engine.handle({ type: 'start', snapshot: topologySnapshot(network), seed: 14, initialTimeMilliseconds: 1_000 });
|
||||||
|
engine.setGlobalPacketLossEnabled(true);
|
||||||
|
engine.sendEthernetFrame(hostA, portA, arpRequest(engine));
|
||||||
|
letFramesArrive(engine);
|
||||||
|
expect(engine.capture.frames(portA).map((each) => [each.number, each.timeMilliseconds])).toEqual([
|
||||||
|
[1, 0],
|
||||||
|
[2, 1_000],
|
||||||
|
]);
|
||||||
|
expect(engine.capture.droppedFrames()).toHaveLength(1);
|
||||||
|
|
||||||
|
engine.clearCapture();
|
||||||
|
expect(engine.capture.portIds()).toEqual([]);
|
||||||
|
expect(engine.capture.droppedFrames()).toEqual([]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('keeps at most the retention, dropping the oldest at once; a frame keeps its number', () => {
|
||||||
|
const engine = new NetworkRuntimeEngine(14, undefined, { captureRetention: captureRetentionPolicy(3, 2) });
|
||||||
|
engine.handle({ type: 'start', snapshot: topologySnapshot(network), seed: 14, initialTimeMilliseconds: 0 });
|
||||||
|
for (let count = 0; count < 4; count += 1) engine.sendEthernetFrame(hostA, portA, arpRequest(engine));
|
||||||
|
letFramesArrive(engine);
|
||||||
|
|
||||||
|
expect(engine.capture.frames(portA).map((each) => each.number)).toEqual([3, 4]);
|
||||||
|
expect(() => captureRetentionPolicy(2, 3)).toThrow(RangeError);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
// time (250 ms) may not. A cable carries one frame after the other in both
|
// time (250 ms) may not. A cable carries one frame after the other in both
|
||||||
// (engine.test.ts checks that: one cable's delay is below this tolerance).
|
// (engine.test.ts checks that: one cable's delay is below this tolerance).
|
||||||
|
|
||||||
|
import { expect } from 'vitest';
|
||||||
import { NetworkRuntimeEngine, TCP_FLAG, type EthernetFrame } from '../src/index.js';
|
import { NetworkRuntimeEngine, TCP_FLAG, type EthernetFrame } from '../src/index.js';
|
||||||
import { snapshotOf, type Scenario } from './scenario.js';
|
import { snapshotOf, type Scenario } from './scenario.js';
|
||||||
|
|
||||||
@@ -154,3 +155,62 @@ export function javaFrames(framesByNode: Record<string, JavaFrame[]>): SeenFrame
|
|||||||
export function gaps(frames: readonly SeenFrame[]) {
|
export function gaps(frames: readonly SeenFrame[]) {
|
||||||
return frames.map((frame, index) => ({ text: frame.text, gap: index === 0 ? 0 : frame.time - frames[index - 1]!.time }));
|
return frames.map((frame, index) => ({ text: frame.text, gap: index === 0 ? 0 : frame.time - frames[index - 1]!.time }));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Each card's packet capture against Java's (the Lauscher's list of the
|
||||||
|
* card, as the oracle wrote it: under the node's id for its first card,
|
||||||
|
* `id#index` for the others): the same frames in the same order, each at
|
||||||
|
* about the same time (both counted from the run's first frame, or from
|
||||||
|
* `starts`). `text`
|
||||||
|
* puts placeholders in a frame's text (ports, IDs a test cannot predict),
|
||||||
|
* `normalized` does so for a card's whole list; with `until` (Java's time),
|
||||||
|
* only the frames before it; with `from`, only those from it.
|
||||||
|
*/
|
||||||
|
export function expectSameCaptures(
|
||||||
|
engine: NetworkRuntimeEngine,
|
||||||
|
scenario: Scenario,
|
||||||
|
java: Record<string, JavaFrame[]>,
|
||||||
|
options: {
|
||||||
|
text?: (text: string) => string;
|
||||||
|
normalized?: (frames: SeenFrame[]) => SeenFrame[];
|
||||||
|
from?: number | undefined;
|
||||||
|
until?: number | undefined;
|
||||||
|
tolerance?: number;
|
||||||
|
starts?: { java: number; engine: number };
|
||||||
|
} = {},
|
||||||
|
): void {
|
||||||
|
const text = options.text ?? ((each: string) => each);
|
||||||
|
const engineByCard = new Map<string, SeenFrame[]>();
|
||||||
|
for (const node of scenario.nodes) {
|
||||||
|
if (node.kind === 'networkSwitch') continue;
|
||||||
|
node.ports.forEach((port, index) => {
|
||||||
|
const frames = engine.capture.frames(port.id).map((each) => ({ time: each.timeMilliseconds, text: text(engineText(each.frame)) }));
|
||||||
|
engineByCard.set(index === 0 ? node.id : `${node.id}#${index}`, frames);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
const javaByCard = new Map(Object.entries(java).map(([card, frames]) => [card, frames.map((frame) => ({ time: frame.time, text: text(javaText(frame)) }))]));
|
||||||
|
expect([...engineByCard.keys()].sort()).toEqual([...javaByCard.keys()].sort());
|
||||||
|
const first = (byCard: Map<string, SeenFrame[]>) => Math.min(...[...byCard.values()].flat().map((frame) => frame.time));
|
||||||
|
const engineStart = options.starts?.engine ?? first(engineByCard);
|
||||||
|
const javaStart = options.starts?.java ?? first(javaByCard);
|
||||||
|
const from = (options.from ?? Number.NEGATIVE_INFINITY) - javaStart;
|
||||||
|
const until = (options.until ?? Number.POSITIVE_INFINITY) - javaStart;
|
||||||
|
const normalized = options.normalized ?? ((frames: SeenFrame[]) => frames);
|
||||||
|
const window = (frames: SeenFrame[], start: number) =>
|
||||||
|
frames.filter((frame) => frame.time - start >= from && frame.time - start < until).map((frame) => ({ time: frame.time - start, text: frame.text }));
|
||||||
|
for (const [card, javaList] of javaByCard) {
|
||||||
|
const expected = normalized(window(javaList, javaStart));
|
||||||
|
const actual = normalized(window(engineByCard.get(card)!, engineStart));
|
||||||
|
for (let index = 0; index < Math.max(expected.length, actual.length); index += 1) {
|
||||||
|
expect(actual[index]?.text, `${card} frame #${index + 1}`).toBe(expected[index]?.text);
|
||||||
|
expect(Math.abs(actual[index]!.time - expected[index]!.time), `${card} time of frame #${index + 1}`).toBeLessThanOrEqual(
|
||||||
|
options.tolerance ?? GAP_TOLERANCE_MILLISECONDS,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** A client's free port as "client": Java draws it at random, the engine from its seed. */
|
||||||
|
export function withClientPortText(text: string): string {
|
||||||
|
return text.replace(/:(\d{5})\b/g, (whole, port: string) => (Number(port) >= 49_152 ? ':client' : whole));
|
||||||
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import { dirname, join } from 'node:path';
|
|||||||
import { fileURLToPath } from 'node:url';
|
import { fileURLToPath } from 'node:url';
|
||||||
import { describe, expect, it } from 'vitest';
|
import { describe, expect, it } from 'vitest';
|
||||||
import type { Id, IPv4DeliveryResult, NetworkRuntimeEngine } from '../src/index.js';
|
import type { Id, IPv4DeliveryResult, NetworkRuntimeEngine } from '../src/index.js';
|
||||||
import { GAP_TOLERANCE_MILLISECONDS, javaFrames, watchedEngine, type JavaFrame, type SeenFrame } from './javaRun.js';
|
import { expectSameCaptures, GAP_TOLERANCE_MILLISECONDS, javaFrames, watchedEngine, type JavaFrame, type SeenFrame } from './javaRun.js';
|
||||||
import type { Scenario } from './scenario.js';
|
import type { Scenario } from './scenario.js';
|
||||||
|
|
||||||
const scenarioDirectory = join(dirname(fileURLToPath(import.meta.url)), 'scenarios');
|
const scenarioDirectory = join(dirname(fileURLToPath(import.meta.url)), 'scenarios');
|
||||||
@@ -144,6 +144,8 @@ const STORIES: Record<string, (engine: NetworkRuntimeEngine, call: Call) => void
|
|||||||
* end; the second server gets the datagram from the entry's WAN port, but its
|
* end; the second server gets the datagram from the entry's WAN port, but its
|
||||||
* answer finds no entry and stays at the router. The engine adds an entry for
|
* answer finds no entry and stays at the router. The engine adds an entry for
|
||||||
* the second remote end: its answer goes on to the PC, a cable later.
|
* the second remote end: its answer goes on to the PC, a cable later.
|
||||||
|
* (`answer` is the frame on the home router's WAN card, the first list it
|
||||||
|
* shows in.)
|
||||||
*/
|
*/
|
||||||
const JAVA_BUGS: Record<string, (java: JavaRun) => JavaRun> = {
|
const JAVA_BUGS: Record<string, (java: JavaRun) => JavaRun> = {
|
||||||
udpTwoRemotes: (java) => {
|
udpTwoRemotes: (java) => {
|
||||||
@@ -162,7 +164,8 @@ const JAVA_BUGS: Record<string, (java: JavaRun) => JavaRun> = {
|
|||||||
const wanPort = java.nat[0]!.match(/42\.0\.0\.20:(\d+)/)![1];
|
const wanPort = java.nat[0]!.match(/42\.0\.0\.20:(\d+)/)![1];
|
||||||
const received = java.events.find(([, event]) => event === 'other server received two')!;
|
const received = java.events.find(([, event]) => event === 'other server received two')!;
|
||||||
return {
|
return {
|
||||||
frames: { ...java.frames, [LAN_PC]: [...java.frames[LAN_PC]!, onLan] },
|
// The home router's LAN card sends it as it arrives on the WAN card; the PC's receives it a cable later.
|
||||||
|
frames: { ...java.frames, [`${GATEWAY}#1`]: [...java.frames[`${GATEWAY}#1`]!, { ...onLan, time: answer.time + 1 }], [LAN_PC]: [...java.frames[LAN_PC]!, onLan] },
|
||||||
events: java.events.map(([time, event], index) =>
|
events: java.events.map(([time, event], index) =>
|
||||||
index === java.events.length - 1 && event === 'empfangen returned null' ? [received[0] + 168, 'empfangen returned pong two'] : [time, event],
|
index === java.events.length - 1 && event === 'empfangen returned null' ? [received[0] + 168, 'empfangen returned pong two'] : [time, event],
|
||||||
),
|
),
|
||||||
@@ -171,8 +174,8 @@ const JAVA_BUGS: Record<string, (java: JavaRun) => JavaRun> = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Free ports as "port", initial sequence numbers by their order, ties sorted. */
|
/** Free ports as "port", initial sequence numbers by their order. */
|
||||||
function normalized(frames: readonly SeenFrame[]): SeenFrame[] {
|
function withPlaceholders(frames: readonly SeenFrame[]): SeenFrame[] {
|
||||||
const bases = new Map<number, number>();
|
const bases = new Map<number, number>();
|
||||||
const sequence = (value: string) => {
|
const sequence = (value: string) => {
|
||||||
const number = Number(value);
|
const number = Number(value);
|
||||||
@@ -180,10 +183,15 @@ function normalized(frames: readonly SeenFrame[]): SeenFrame[] {
|
|||||||
if (!bases.has(base)) bases.set(base, bases.size + 1);
|
if (!bases.has(base)) bases.set(base, bases.size + 1);
|
||||||
return `isn${bases.get(base)}+${number % 1_000_000}`;
|
return `isn${bases.get(base)}+${number % 1_000_000}`;
|
||||||
};
|
};
|
||||||
const texts = frames.map((frame) => ({
|
return frames.map((frame) => ({
|
||||||
time: frame.time,
|
time: frame.time,
|
||||||
text: withPorts(frame.text).replace(/(seq|ack)=(\d+)/g, (whole, name: string, value: string) => (value === '0' ? whole : `${name}=${sequence(value)}`)),
|
text: withPorts(frame.text).replace(/(seq|ack)=(\d+)/g, (whole, name: string, value: string) => (value === '0' ? whole : `${name}=${sequence(value)}`)),
|
||||||
}));
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** With placeholders, ties sorted: over all cards, Java's log writes frames that show together in any order. */
|
||||||
|
function normalized(frames: readonly SeenFrame[]): SeenFrame[] {
|
||||||
|
const texts = withPlaceholders(frames);
|
||||||
const result: SeenFrame[] = [];
|
const result: SeenFrame[] = [];
|
||||||
for (let start = 0; start < texts.length; ) {
|
for (let start = 0; start < texts.length; ) {
|
||||||
let end = start + 1;
|
let end = start + 1;
|
||||||
@@ -248,6 +256,12 @@ describe('NAT as Java FILIUS runs it', () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// A card's own list keeps its order.
|
||||||
|
expectSameCaptures(engine, scenario, java.frames, {
|
||||||
|
normalized: withPlaceholders,
|
||||||
|
tolerance: TCP_STORIES.has(name) ? TCP_TOLERANCE_MILLISECONDS : GAP_TOLERANCE_MILLISECONDS,
|
||||||
|
});
|
||||||
|
|
||||||
// The client's calls: Java's server threads write events of their own, which the engine's story has not.
|
// The client's calls: Java's server threads write events of their own, which the engine's story has not.
|
||||||
const javaCalls = java.events.filter(([, event]) => !event.startsWith('server') && !event.startsWith('other server'));
|
const javaCalls = java.events.filter(([, event]) => !event.startsWith('server') && !event.startsWith('other server'));
|
||||||
expect(events.map(([, event]) => event)).toEqual(javaCalls.map(([, event]) => event));
|
expect(events.map(([, event]) => event)).toEqual(javaCalls.map(([, event]) => event));
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ import { dirname, join } from 'node:path';
|
|||||||
import { fileURLToPath } from 'node:url';
|
import { fileURLToPath } from 'node:url';
|
||||||
import { describe, expect, it } from 'vitest';
|
import { describe, expect, it } from 'vitest';
|
||||||
import { RIP_FIRST_BEACON_DELAY_MILLISECONDS, type Id, type IPv4DeliveryResult, type NetworkRuntimeEngine } from '../src/index.js';
|
import { RIP_FIRST_BEACON_DELAY_MILLISECONDS, type Id, type IPv4DeliveryResult, type NetworkRuntimeEngine } from '../src/index.js';
|
||||||
import { GAP_TOLERANCE_MILLISECONDS, javaFrames, watchedEngine, type JavaFrame, type SeenFrame } from './javaRun.js';
|
import { expectSameCaptures, GAP_TOLERANCE_MILLISECONDS, javaFrames, watchedEngine, type JavaFrame, type SeenFrame } from './javaRun.js';
|
||||||
import type { Scenario } from './scenario.js';
|
import type { Scenario } from './scenario.js';
|
||||||
|
|
||||||
const scenarioDirectory = join(dirname(fileURLToPath(import.meta.url)), 'scenarios');
|
const scenarioDirectory = join(dirname(fileURLToPath(import.meta.url)), 'scenarios');
|
||||||
@@ -142,6 +142,9 @@ describe('RIP as Java FILIUS runs it', () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Each card's capture, after the startup.
|
||||||
|
expectSameCaptures(engine, scenario, java.frames, { from: STARTUP_MILLISECONDS, starts: { java: offset, engine: 0 } });
|
||||||
|
|
||||||
// Each router's table: the same state when the startup is over, then the same changes at about the same times.
|
// Each router's table: the same state when the startup is over, then the same changes at about the same times.
|
||||||
for (const router of routers) {
|
for (const router of routers) {
|
||||||
const settled = <T extends [number, Id, string]>(states: T[], until: number): T[] => {
|
const settled = <T extends [number, Id, string]>(states: T[], until: number): T[] => {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"frames": {
|
"frames": {
|
||||||
"00000000-0000-0000-0000-000000000101": [
|
"00000000-0000-0000-0000-000000000101": [
|
||||||
{
|
{
|
||||||
"time": 459,
|
"time": 453,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 464,
|
"time": 458,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
"payload": "DHCPOFFER\nyiaddr=192.168.0.100\nchaddr=02:00:00:00:01:12\nrouter=0.0.0.0\nsubnetmask=255.255.255.0\ndnsserver=0.0.0.0\nserverident=192.168.0.10"
|
"payload": "DHCPOFFER\nyiaddr=192.168.0.100\nchaddr=02:00:00:00:01:12\nrouter=0.0.0.0\nsubnetmask=255.255.255.0\ndnsserver=0.0.0.0\nserverident=192.168.0.10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 688,
|
"time": 682,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"arp": 1,
|
"arp": 1,
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
"targetIp": "192.168.0.100"
|
"targetIp": "192.168.0.100"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 801,
|
"time": 794,
|
||||||
"source": "02:00:00:00:01:13",
|
"source": "02:00:00:00:01:13",
|
||||||
"destination": "ff:ff:ff:ff:ff:ff",
|
"destination": "ff:ff:ff:ff:ff:ff",
|
||||||
"arp": 2,
|
"arp": 2,
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
"targetIp": "255.255.255.255"
|
"targetIp": "255.255.255.255"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 912,
|
"time": 905,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
"payload": "DHCPDECLINE\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12\nrequested=192.168.0.100\nserverident=192.168.0.10"
|
"payload": "DHCPDECLINE\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12\nrequested=192.168.0.100\nserverident=192.168.0.10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 968,
|
"time": 961,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -62,7 +62,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 3663,
|
"time": 3656,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -73,7 +73,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 6413,
|
"time": 6406,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -84,7 +84,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 9164,
|
"time": 9157,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -95,7 +95,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 11914,
|
"time": 11907,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -106,7 +106,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 11915,
|
"time": 11907,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
@@ -117,7 +117,7 @@
|
|||||||
"payload": "DHCPOFFER\nyiaddr=192.168.0.100\nchaddr=02:00:00:00:01:12\nrouter=0.0.0.0\nsubnetmask=255.255.255.0\ndnsserver=0.0.0.0\nserverident=192.168.0.10"
|
"payload": "DHCPOFFER\nyiaddr=192.168.0.100\nchaddr=02:00:00:00:01:12\nrouter=0.0.0.0\nsubnetmask=255.255.255.0\ndnsserver=0.0.0.0\nserverident=192.168.0.10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 12138,
|
"time": 12132,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -128,7 +128,7 @@
|
|||||||
"payload": "DHCPDECLINE\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12\nrequested=192.168.0.100\nserverident=192.168.0.10"
|
"payload": "DHCPDECLINE\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12\nrequested=192.168.0.100\nserverident=192.168.0.10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 12194,
|
"time": 12188,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -139,25 +139,25 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 14889,
|
"time": 14881,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"arp": 1,
|
"arp": 1,
|
||||||
"senderIp": "0.0.0.0",
|
"senderIp": "0.0.0.0",
|
||||||
"targetIp": "169.254.1.191"
|
"targetIp": "169.254.1.107"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 17640,
|
"time": 17632,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "ff:ff:ff:ff:ff:ff",
|
"destination": "ff:ff:ff:ff:ff:ff",
|
||||||
"arp": 2,
|
"arp": 2,
|
||||||
"senderIp": "169.254.1.191",
|
"senderIp": "169.254.1.107",
|
||||||
"targetIp": "255.255.255.255"
|
"targetIp": "255.255.255.255"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"00000000-0000-0000-0000-000000000102": [
|
"00000000-0000-0000-0000-000000000102": [
|
||||||
{
|
{
|
||||||
"time": 338,
|
"time": 331,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -168,7 +168,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 576,
|
"time": 569,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
@@ -179,7 +179,7 @@
|
|||||||
"payload": "DHCPOFFER\nyiaddr=192.168.0.100\nchaddr=02:00:00:00:01:12\nrouter=0.0.0.0\nsubnetmask=255.255.255.0\ndnsserver=0.0.0.0\nserverident=192.168.0.10"
|
"payload": "DHCPOFFER\nyiaddr=192.168.0.100\nchaddr=02:00:00:00:01:12\nrouter=0.0.0.0\nsubnetmask=255.255.255.0\ndnsserver=0.0.0.0\nserverident=192.168.0.10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 577,
|
"time": 570,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"arp": 1,
|
"arp": 1,
|
||||||
@@ -187,7 +187,7 @@
|
|||||||
"targetIp": "192.168.0.100"
|
"targetIp": "192.168.0.100"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 801,
|
"time": 794,
|
||||||
"source": "02:00:00:00:01:13",
|
"source": "02:00:00:00:01:13",
|
||||||
"destination": "ff:ff:ff:ff:ff:ff",
|
"destination": "ff:ff:ff:ff:ff:ff",
|
||||||
"arp": 2,
|
"arp": 2,
|
||||||
@@ -195,7 +195,7 @@
|
|||||||
"targetIp": "255.255.255.255"
|
"targetIp": "255.255.255.255"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 801,
|
"time": 794,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -206,7 +206,7 @@
|
|||||||
"payload": "DHCPDECLINE\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12\nrequested=192.168.0.100\nserverident=192.168.0.10"
|
"payload": "DHCPDECLINE\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12\nrequested=192.168.0.100\nserverident=192.168.0.10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 857,
|
"time": 850,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -217,7 +217,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 3552,
|
"time": 3545,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -228,7 +228,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 6302,
|
"time": 6295,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -239,7 +239,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 9052,
|
"time": 9045,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -250,7 +250,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 11802,
|
"time": 11795,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -261,7 +261,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 12026,
|
"time": 12019,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
@@ -272,7 +272,7 @@
|
|||||||
"payload": "DHCPOFFER\nyiaddr=192.168.0.100\nchaddr=02:00:00:00:01:12\nrouter=0.0.0.0\nsubnetmask=255.255.255.0\ndnsserver=0.0.0.0\nserverident=192.168.0.10"
|
"payload": "DHCPOFFER\nyiaddr=192.168.0.100\nchaddr=02:00:00:00:01:12\nrouter=0.0.0.0\nsubnetmask=255.255.255.0\ndnsserver=0.0.0.0\nserverident=192.168.0.10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 12027,
|
"time": 12019,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -283,7 +283,7 @@
|
|||||||
"payload": "DHCPDECLINE\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12\nrequested=192.168.0.100\nserverident=192.168.0.10"
|
"payload": "DHCPDECLINE\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12\nrequested=192.168.0.100\nserverident=192.168.0.10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 12082,
|
"time": 12076,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -294,25 +294,25 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 14778,
|
"time": 14770,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"arp": 1,
|
"arp": 1,
|
||||||
"senderIp": "0.0.0.0",
|
"senderIp": "0.0.0.0",
|
||||||
"targetIp": "169.254.1.191"
|
"targetIp": "169.254.1.107"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 17528,
|
"time": 17521,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "ff:ff:ff:ff:ff:ff",
|
"destination": "ff:ff:ff:ff:ff:ff",
|
||||||
"arp": 2,
|
"arp": 2,
|
||||||
"senderIp": "169.254.1.191",
|
"senderIp": "169.254.1.107",
|
||||||
"targetIp": "255.255.255.255"
|
"targetIp": "255.255.255.255"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"00000000-0000-0000-0000-000000000103": [
|
"00000000-0000-0000-0000-000000000103": [
|
||||||
{
|
{
|
||||||
"time": 459,
|
"time": 453,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -323,7 +323,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 576,
|
"time": 569,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
@@ -334,7 +334,7 @@
|
|||||||
"payload": "DHCPOFFER\nyiaddr=192.168.0.100\nchaddr=02:00:00:00:01:12\nrouter=0.0.0.0\nsubnetmask=255.255.255.0\ndnsserver=0.0.0.0\nserverident=192.168.0.10"
|
"payload": "DHCPOFFER\nyiaddr=192.168.0.100\nchaddr=02:00:00:00:01:12\nrouter=0.0.0.0\nsubnetmask=255.255.255.0\ndnsserver=0.0.0.0\nserverident=192.168.0.10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 688,
|
"time": 682,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"arp": 1,
|
"arp": 1,
|
||||||
@@ -342,7 +342,7 @@
|
|||||||
"targetIp": "192.168.0.100"
|
"targetIp": "192.168.0.100"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 690,
|
"time": 683,
|
||||||
"source": "02:00:00:00:01:13",
|
"source": "02:00:00:00:01:13",
|
||||||
"destination": "ff:ff:ff:ff:ff:ff",
|
"destination": "ff:ff:ff:ff:ff:ff",
|
||||||
"arp": 2,
|
"arp": 2,
|
||||||
@@ -350,7 +350,7 @@
|
|||||||
"targetIp": "255.255.255.255"
|
"targetIp": "255.255.255.255"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 912,
|
"time": 905,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -361,7 +361,7 @@
|
|||||||
"payload": "DHCPDECLINE\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12\nrequested=192.168.0.100\nserverident=192.168.0.10"
|
"payload": "DHCPDECLINE\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12\nrequested=192.168.0.100\nserverident=192.168.0.10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 968,
|
"time": 961,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -372,7 +372,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 3663,
|
"time": 3656,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -383,7 +383,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 6413,
|
"time": 6406,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -394,7 +394,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 9164,
|
"time": 9157,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -405,7 +405,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 11914,
|
"time": 11907,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -416,7 +416,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 12026,
|
"time": 12019,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
@@ -427,7 +427,7 @@
|
|||||||
"payload": "DHCPOFFER\nyiaddr=192.168.0.100\nchaddr=02:00:00:00:01:12\nrouter=0.0.0.0\nsubnetmask=255.255.255.0\ndnsserver=0.0.0.0\nserverident=192.168.0.10"
|
"payload": "DHCPOFFER\nyiaddr=192.168.0.100\nchaddr=02:00:00:00:01:12\nrouter=0.0.0.0\nsubnetmask=255.255.255.0\ndnsserver=0.0.0.0\nserverident=192.168.0.10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 12138,
|
"time": 12132,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -438,7 +438,7 @@
|
|||||||
"payload": "DHCPDECLINE\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12\nrequested=192.168.0.100\nserverident=192.168.0.10"
|
"payload": "DHCPDECLINE\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12\nrequested=192.168.0.100\nserverident=192.168.0.10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 12194,
|
"time": 12188,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -449,19 +449,19 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 14889,
|
"time": 14881,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"arp": 1,
|
"arp": 1,
|
||||||
"senderIp": "0.0.0.0",
|
"senderIp": "0.0.0.0",
|
||||||
"targetIp": "169.254.1.191"
|
"targetIp": "169.254.1.107"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 17640,
|
"time": 17632,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "ff:ff:ff:ff:ff:ff",
|
"destination": "ff:ff:ff:ff:ff:ff",
|
||||||
"arp": 2,
|
"arp": 2,
|
||||||
"senderIp": "169.254.1.191",
|
"senderIp": "169.254.1.107",
|
||||||
"targetIp": "255.255.255.255"
|
"targetIp": "255.255.255.255"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -474,7 +474,7 @@
|
|||||||
""
|
""
|
||||||
],
|
],
|
||||||
"00000000-0000-0000-0000-000000000102": [
|
"00000000-0000-0000-0000-000000000102": [
|
||||||
"169.254.1.191",
|
"169.254.1.107",
|
||||||
"255.255.0.0",
|
"255.255.0.0",
|
||||||
"",
|
"",
|
||||||
""
|
""
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"frames": {
|
"frames": {
|
||||||
"00000000-0000-0000-0000-000000000101": [
|
"00000000-0000-0000-0000-000000000101": [
|
||||||
{
|
{
|
||||||
"time": 466,
|
"time": 457,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 3199,
|
"time": 3189,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 5949,
|
"time": 5943,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 8699,
|
"time": 8690,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -46,7 +46,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 11450,
|
"time": 11440,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -57,25 +57,25 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 14201,
|
"time": 14191,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"arp": 1,
|
"arp": 1,
|
||||||
"senderIp": "0.0.0.0",
|
"senderIp": "0.0.0.0",
|
||||||
"targetIp": "169.254.1.72"
|
"targetIp": "169.254.1.174"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 16951,
|
"time": 16941,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "ff:ff:ff:ff:ff:ff",
|
"destination": "ff:ff:ff:ff:ff:ff",
|
||||||
"arp": 2,
|
"arp": 2,
|
||||||
"senderIp": "169.254.1.72",
|
"senderIp": "169.254.1.174",
|
||||||
"targetIp": "255.255.255.255"
|
"targetIp": "255.255.255.255"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"00000000-0000-0000-0000-000000000102": [
|
"00000000-0000-0000-0000-000000000102": [
|
||||||
{
|
{
|
||||||
"time": 342,
|
"time": 333,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -86,7 +86,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 3087,
|
"time": 3078,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -97,7 +97,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 5838,
|
"time": 5828,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -108,7 +108,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 8588,
|
"time": 8578,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -119,7 +119,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 11338,
|
"time": 11329,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -130,25 +130,25 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 14089,
|
"time": 14080,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"arp": 1,
|
"arp": 1,
|
||||||
"senderIp": "0.0.0.0",
|
"senderIp": "0.0.0.0",
|
||||||
"targetIp": "169.254.1.72"
|
"targetIp": "169.254.1.174"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 16840,
|
"time": 16830,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "ff:ff:ff:ff:ff:ff",
|
"destination": "ff:ff:ff:ff:ff:ff",
|
||||||
"arp": 2,
|
"arp": 2,
|
||||||
"senderIp": "169.254.1.72",
|
"senderIp": "169.254.1.174",
|
||||||
"targetIp": "255.255.255.255"
|
"targetIp": "255.255.255.255"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"00000000-0000-0000-0000-000000000103": [
|
"00000000-0000-0000-0000-000000000103": [
|
||||||
{
|
{
|
||||||
"time": 466,
|
"time": 457,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -159,7 +159,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 3199,
|
"time": 3189,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -170,7 +170,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 5949,
|
"time": 5943,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -181,7 +181,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 8699,
|
"time": 8690,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -192,7 +192,7 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 11450,
|
"time": 11440,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -203,19 +203,19 @@
|
|||||||
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
"payload": "DHCPDISCOVER\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 14201,
|
"time": 14191,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"arp": 1,
|
"arp": 1,
|
||||||
"senderIp": "0.0.0.0",
|
"senderIp": "0.0.0.0",
|
||||||
"targetIp": "169.254.1.72"
|
"targetIp": "169.254.1.174"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 16951,
|
"time": 16941,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "ff:ff:ff:ff:ff:ff",
|
"destination": "ff:ff:ff:ff:ff:ff",
|
||||||
"arp": 2,
|
"arp": 2,
|
||||||
"senderIp": "169.254.1.72",
|
"senderIp": "169.254.1.174",
|
||||||
"targetIp": "255.255.255.255"
|
"targetIp": "255.255.255.255"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -228,7 +228,7 @@
|
|||||||
""
|
""
|
||||||
],
|
],
|
||||||
"00000000-0000-0000-0000-000000000102": [
|
"00000000-0000-0000-0000-000000000102": [
|
||||||
"169.254.1.72",
|
"169.254.1.174",
|
||||||
"255.255.0.0",
|
"255.255.0.0",
|
||||||
"",
|
"",
|
||||||
""
|
""
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"frames": {
|
"frames": {
|
||||||
"00000000-0000-0000-0000-000000000101": [
|
"00000000-0000-0000-0000-000000000101": [
|
||||||
{
|
{
|
||||||
"time": 455,
|
"time": 454,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -67,7 +67,7 @@
|
|||||||
],
|
],
|
||||||
"00000000-0000-0000-0000-000000000102": [
|
"00000000-0000-0000-0000-000000000102": [
|
||||||
{
|
{
|
||||||
"time": 333,
|
"time": 332,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -97,7 +97,7 @@
|
|||||||
"targetIp": "192.168.0.100"
|
"targetIp": "192.168.0.100"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 627,
|
"time": 628,
|
||||||
"source": "02:00:00:00:01:13",
|
"source": "02:00:00:00:01:13",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "192.168.0.30",
|
"sourceIp": "192.168.0.30",
|
||||||
@@ -119,7 +119,7 @@
|
|||||||
"payload": "DHCPREQUEST\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12\nrequested=192.168.0.100\nserverident=192.168.0.10"
|
"payload": "DHCPREQUEST\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12\nrequested=192.168.0.100\nserverident=192.168.0.10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 3547,
|
"time": 3546,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
@@ -132,7 +132,7 @@
|
|||||||
],
|
],
|
||||||
"00000000-0000-0000-0000-000000000103": [
|
"00000000-0000-0000-0000-000000000103": [
|
||||||
{
|
{
|
||||||
"time": 455,
|
"time": 454,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "0.0.0.0",
|
"sourceIp": "0.0.0.0",
|
||||||
@@ -184,7 +184,7 @@
|
|||||||
"payload": "DHCPREQUEST\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12\nrequested=192.168.0.100\nserverident=192.168.0.10"
|
"payload": "DHCPREQUEST\nyiaddr=0.0.0.0\nchaddr=02:00:00:00:01:12\nrequested=192.168.0.100\nserverident=192.168.0.10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 3547,
|
"time": 3546,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"frames": {
|
"frames": {
|
||||||
"00000000-0000-0000-0000-000000000101": [
|
"00000000-0000-0000-0000-000000000101": [
|
||||||
{
|
{
|
||||||
"time": 852,
|
"time": 853,
|
||||||
"source": "02:00:00:00:01:13",
|
"source": "02:00:00:00:01:13",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"arp": 1,
|
"arp": 1,
|
||||||
@@ -18,13 +18,13 @@
|
|||||||
"targetIp": "192.168.0.30"
|
"targetIp": "192.168.0.30"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1081,
|
"time": 1083,
|
||||||
"source": "02:00:00:00:01:13",
|
"source": "02:00:00:00:01:13",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.30",
|
"sourceIp": "192.168.0.30",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 62251,
|
"sourcePort": 50448,
|
||||||
"destinationPort": 81,
|
"destinationPort": 81,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "S",
|
"tcpFlags": "S",
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
],
|
],
|
||||||
"00000000-0000-0000-0000-000000000102": [
|
"00000000-0000-0000-0000-000000000102": [
|
||||||
{
|
{
|
||||||
"time": 852,
|
"time": 853,
|
||||||
"source": "02:00:00:00:01:13",
|
"source": "02:00:00:00:01:13",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"arp": 1,
|
"arp": 1,
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
"targetIp": "192.168.0.10"
|
"targetIp": "192.168.0.10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 965,
|
"time": 966,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:13",
|
"destination": "02:00:00:00:01:13",
|
||||||
"arp": 2,
|
"arp": 2,
|
||||||
@@ -66,7 +66,7 @@
|
|||||||
"sourceIp": "192.168.0.30",
|
"sourceIp": "192.168.0.30",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 62251,
|
"sourcePort": 50448,
|
||||||
"destinationPort": 81,
|
"destinationPort": 81,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "S",
|
"tcpFlags": "S",
|
||||||
@@ -96,7 +96,7 @@
|
|||||||
"SYN_SENT"
|
"SYN_SENT"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
8979,
|
8978,
|
||||||
"CLOSED"
|
"CLOSED"
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"frames": {
|
"frames": {
|
||||||
"00000000-0000-0000-0000-000000000101": [
|
"00000000-0000-0000-0000-000000000101": [
|
||||||
{
|
{
|
||||||
"time": 857,
|
"time": 856,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"arp": 1,
|
"arp": 1,
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
"targetIp": "192.168.0.10"
|
"targetIp": "192.168.0.10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 858,
|
"time": 857,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"arp": 2,
|
"arp": 2,
|
||||||
@@ -18,13 +18,13 @@
|
|||||||
"targetIp": "192.168.0.20"
|
"targetIp": "192.168.0.20"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1086,
|
"time": 1084,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61961,
|
"sourcePort": 49357,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "S",
|
"tcpFlags": "S",
|
||||||
@@ -32,27 +32,27 @@
|
|||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1088,
|
"time": 1086,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 61961,
|
"destinationPort": 49357,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "SA",
|
"tcpFlags": "SA",
|
||||||
"sequence": 1000000,
|
"sequence": 1000000,
|
||||||
"acknowledgement": 2000001
|
"acknowledgement": 2000001
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1312,
|
"time": 1309,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61961,
|
"sourcePort": 49357,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "A",
|
"tcpFlags": "A",
|
||||||
@@ -60,13 +60,13 @@
|
|||||||
"acknowledgement": 1000001
|
"acknowledgement": 1000001
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1367,
|
"time": 1364,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61961,
|
"sourcePort": 49357,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": "GET /",
|
"payload": "GET /",
|
||||||
"tcpFlags": "P",
|
"tcpFlags": "P",
|
||||||
@@ -74,41 +74,41 @@
|
|||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1368,
|
"time": 1365,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 61961,
|
"destinationPort": 49357,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "A",
|
"tcpFlags": "A",
|
||||||
"sequence": 1000001,
|
"sequence": 1000001,
|
||||||
"acknowledgement": 2000006
|
"acknowledgement": 2000006
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1423,
|
"time": 1420,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 61961,
|
"destinationPort": 49357,
|
||||||
"payload": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
"payload": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
||||||
"tcpFlags": "",
|
"tcpFlags": "",
|
||||||
"sequence": 1000001,
|
"sequence": 1000001,
|
||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1646,
|
"time": 1643,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61961,
|
"sourcePort": 49357,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "A",
|
"tcpFlags": "A",
|
||||||
@@ -116,27 +116,27 @@
|
|||||||
"acknowledgement": 1001461
|
"acknowledgement": 1001461
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1647,
|
"time": 1644,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 61961,
|
"destinationPort": 49357,
|
||||||
"payload": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
"payload": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
||||||
"tcpFlags": "",
|
"tcpFlags": "",
|
||||||
"sequence": 1001461,
|
"sequence": 1001461,
|
||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1869,
|
"time": 1867,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61961,
|
"sourcePort": 49357,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "A",
|
"tcpFlags": "A",
|
||||||
@@ -144,27 +144,27 @@
|
|||||||
"acknowledgement": 1002921
|
"acknowledgement": 1002921
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1870,
|
"time": 1867,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 61961,
|
"destinationPort": 49357,
|
||||||
"payload": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
"payload": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
||||||
"tcpFlags": "P",
|
"tcpFlags": "P",
|
||||||
"sequence": 1002921,
|
"sequence": 1002921,
|
||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 2092,
|
"time": 2090,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61961,
|
"sourcePort": 49357,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "A",
|
"tcpFlags": "A",
|
||||||
@@ -172,13 +172,13 @@
|
|||||||
"acknowledgement": 1003001
|
"acknowledgement": 1003001
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 2148,
|
"time": 2145,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61961,
|
"sourcePort": 49357,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "F",
|
"tcpFlags": "F",
|
||||||
@@ -186,41 +186,41 @@
|
|||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 2148,
|
"time": 2145,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 61961,
|
"destinationPort": 49357,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "A",
|
"tcpFlags": "A",
|
||||||
"sequence": 1003001,
|
"sequence": 1003001,
|
||||||
"acknowledgement": 2000007
|
"acknowledgement": 2000007
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 2204,
|
"time": 2201,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 61961,
|
"destinationPort": 49357,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "F",
|
"tcpFlags": "F",
|
||||||
"sequence": 1003001,
|
"sequence": 1003001,
|
||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 2426,
|
"time": 2423,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61961,
|
"sourcePort": 49357,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "A",
|
"tcpFlags": "A",
|
||||||
@@ -230,7 +230,7 @@
|
|||||||
],
|
],
|
||||||
"00000000-0000-0000-0000-000000000102": [
|
"00000000-0000-0000-0000-000000000102": [
|
||||||
{
|
{
|
||||||
"time": 733,
|
"time": 731,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"arp": 1,
|
"arp": 1,
|
||||||
@@ -238,7 +238,7 @@
|
|||||||
"targetIp": "192.168.0.10"
|
"targetIp": "192.168.0.10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 970,
|
"time": 968,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"arp": 2,
|
"arp": 2,
|
||||||
@@ -246,13 +246,13 @@
|
|||||||
"targetIp": "192.168.0.20"
|
"targetIp": "192.168.0.20"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 972,
|
"time": 971,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61961,
|
"sourcePort": 49357,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "S",
|
"tcpFlags": "S",
|
||||||
@@ -260,27 +260,27 @@
|
|||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1200,
|
"time": 1197,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 61961,
|
"destinationPort": 49357,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "SA",
|
"tcpFlags": "SA",
|
||||||
"sequence": 1000000,
|
"sequence": 1000000,
|
||||||
"acknowledgement": 2000001
|
"acknowledgement": 2000001
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1200,
|
"time": 1198,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61961,
|
"sourcePort": 49357,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "A",
|
"tcpFlags": "A",
|
||||||
@@ -288,13 +288,13 @@
|
|||||||
"acknowledgement": 1000001
|
"acknowledgement": 1000001
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1256,
|
"time": 1253,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61961,
|
"sourcePort": 49357,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": "GET /",
|
"payload": "GET /",
|
||||||
"tcpFlags": "P",
|
"tcpFlags": "P",
|
||||||
@@ -302,41 +302,41 @@
|
|||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1479,
|
"time": 1476,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 61961,
|
"destinationPort": 49357,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "A",
|
"tcpFlags": "A",
|
||||||
"sequence": 1000001,
|
"sequence": 1000001,
|
||||||
"acknowledgement": 2000006
|
"acknowledgement": 2000006
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1535,
|
"time": 1532,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 61961,
|
"destinationPort": 49357,
|
||||||
"payload": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
"payload": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
||||||
"tcpFlags": "",
|
"tcpFlags": "",
|
||||||
"sequence": 1000001,
|
"sequence": 1000001,
|
||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1535,
|
"time": 1532,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61961,
|
"sourcePort": 49357,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "A",
|
"tcpFlags": "A",
|
||||||
@@ -344,27 +344,27 @@
|
|||||||
"acknowledgement": 1001461
|
"acknowledgement": 1001461
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1758,
|
"time": 1755,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 61961,
|
"destinationPort": 49357,
|
||||||
"payload": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
"payload": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
||||||
"tcpFlags": "",
|
"tcpFlags": "",
|
||||||
"sequence": 1001461,
|
"sequence": 1001461,
|
||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1758,
|
"time": 1756,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61961,
|
"sourcePort": 49357,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "A",
|
"tcpFlags": "A",
|
||||||
@@ -372,27 +372,27 @@
|
|||||||
"acknowledgement": 1002921
|
"acknowledgement": 1002921
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1981,
|
"time": 1978,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 61961,
|
"destinationPort": 49357,
|
||||||
"payload": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
"payload": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
||||||
"tcpFlags": "P",
|
"tcpFlags": "P",
|
||||||
"sequence": 1002921,
|
"sequence": 1002921,
|
||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1981,
|
"time": 1979,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61961,
|
"sourcePort": 49357,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "A",
|
"tcpFlags": "A",
|
||||||
@@ -400,13 +400,13 @@
|
|||||||
"acknowledgement": 1003001
|
"acknowledgement": 1003001
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 2037,
|
"time": 2034,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61961,
|
"sourcePort": 49357,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "F",
|
"tcpFlags": "F",
|
||||||
@@ -414,41 +414,41 @@
|
|||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 2259,
|
"time": 2256,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 61961,
|
"destinationPort": 49357,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "A",
|
"tcpFlags": "A",
|
||||||
"sequence": 1003001,
|
"sequence": 1003001,
|
||||||
"acknowledgement": 2000007
|
"acknowledgement": 2000007
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 2315,
|
"time": 2312,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 61961,
|
"destinationPort": 49357,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "F",
|
"tcpFlags": "F",
|
||||||
"sequence": 1003001,
|
"sequence": 1003001,
|
||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 2315,
|
"time": 2312,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61961,
|
"sourcePort": 49357,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "A",
|
"tcpFlags": "A",
|
||||||
@@ -458,7 +458,7 @@
|
|||||||
],
|
],
|
||||||
"00000000-0000-0000-0000-000000000103": [
|
"00000000-0000-0000-0000-000000000103": [
|
||||||
{
|
{
|
||||||
"time": 857,
|
"time": 856,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"arp": 1,
|
"arp": 1,
|
||||||
@@ -469,104 +469,116 @@
|
|||||||
},
|
},
|
||||||
"events": [
|
"events": [
|
||||||
[
|
[
|
||||||
216,
|
215,
|
||||||
"server oeffnen called"
|
"server oeffnen called"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
717,
|
716,
|
||||||
"client verbinden called"
|
"client verbinden called"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1218,
|
1217,
|
||||||
"client verbinden returned"
|
"client verbinden returned"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1218,
|
1217,
|
||||||
"client senden called"
|
"client senden called"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1319,
|
1318,
|
||||||
"server oeffnen returned"
|
"server oeffnen returned"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1319,
|
1318,
|
||||||
"server empfangen called"
|
"server empfangen called"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1368,
|
1365,
|
||||||
"server empfangen returned 5 characters"
|
"server empfangen returned 5 characters"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1368,
|
1365,
|
||||||
"server senden called"
|
"server senden called"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1479,
|
1476,
|
||||||
"client senden returned"
|
"client senden returned"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1479,
|
1476,
|
||||||
"client empfangen called"
|
"client empfangen called"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1981,
|
1979,
|
||||||
"client empfangen returned 3000 characters"
|
"client empfangen returned 3000 characters"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1981,
|
1979,
|
||||||
"client schliessen called"
|
"client schliessen called"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1981,
|
1979,
|
||||||
"client schliessen returned"
|
"client schliessen returned"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
2092,
|
2090,
|
||||||
"server senden returned"
|
"server senden returned"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
3146,
|
||||||
|
"server schliessen called"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
3146,
|
||||||
|
"server schliessen returned"
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"states": {
|
"states": {
|
||||||
"client": [
|
"client": [
|
||||||
[
|
[
|
||||||
717,
|
716,
|
||||||
"CLOSED"
|
"CLOSED"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
729,
|
727,
|
||||||
"SYN_SENT"
|
"SYN_SENT"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1202,
|
1199,
|
||||||
"ESTABLISHED"
|
"ESTABLISHED"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1982,
|
1981,
|
||||||
"FIN_WAIT_1"
|
"FIN_WAIT_1"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
2260,
|
2256,
|
||||||
"FIN_WAIT_2"
|
"FIN_WAIT_2"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
2315,
|
2312,
|
||||||
"TIME_WAIT"
|
"TIME_WAIT"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
10565,
|
10562,
|
||||||
"CLOSED"
|
"CLOSED"
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"server": [
|
"server": [
|
||||||
[
|
[
|
||||||
1319,
|
1318,
|
||||||
"ESTABLISHED"
|
"ESTABLISHED"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
2148,
|
2145,
|
||||||
|
"CLOSE_WAIT"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
2147,
|
||||||
"LAST_ACK"
|
"LAST_ACK"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
2428,
|
2423,
|
||||||
"CLOSED"
|
"CLOSED"
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"frames": {
|
"frames": {
|
||||||
"00000000-0000-0000-0000-000000000101": [
|
"00000000-0000-0000-0000-000000000101": [
|
||||||
{
|
{
|
||||||
"time": 854,
|
"time": 853,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"arp": 1,
|
"arp": 1,
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61897,
|
"sourcePort": 51723,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "S",
|
"tcpFlags": "S",
|
||||||
@@ -32,27 +32,27 @@
|
|||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1084,
|
"time": 1085,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 61897,
|
"destinationPort": 51723,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "SA",
|
"tcpFlags": "SA",
|
||||||
"sequence": 1000000,
|
"sequence": 1000000,
|
||||||
"acknowledgement": 2000001
|
"acknowledgement": 2000001
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1307,
|
"time": 1308,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61897,
|
"sourcePort": 51723,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "A",
|
"tcpFlags": "A",
|
||||||
@@ -60,13 +60,13 @@
|
|||||||
"acknowledgement": 1000001
|
"acknowledgement": 1000001
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 26579,
|
"time": 26578,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61897,
|
"sourcePort": 51723,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "F",
|
"tcpFlags": "F",
|
||||||
@@ -74,41 +74,41 @@
|
|||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 26579,
|
"time": 26578,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 61897,
|
"destinationPort": 51723,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "A",
|
"tcpFlags": "A",
|
||||||
"sequence": 1000001,
|
"sequence": 1000001,
|
||||||
"acknowledgement": 2000010
|
"acknowledgement": 2000010
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 26635,
|
"time": 26634,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 61897,
|
"destinationPort": 51723,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "F",
|
"tcpFlags": "F",
|
||||||
"sequence": 1000001,
|
"sequence": 1000001,
|
||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 26858,
|
"time": 26856,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61897,
|
"sourcePort": 51723,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "A",
|
"tcpFlags": "A",
|
||||||
@@ -118,7 +118,7 @@
|
|||||||
],
|
],
|
||||||
"00000000-0000-0000-0000-000000000102": [
|
"00000000-0000-0000-0000-000000000102": [
|
||||||
{
|
{
|
||||||
"time": 731,
|
"time": 729,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"arp": 1,
|
"arp": 1,
|
||||||
@@ -126,7 +126,7 @@
|
|||||||
"targetIp": "192.168.0.10"
|
"targetIp": "192.168.0.10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 967,
|
"time": 966,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"arp": 2,
|
"arp": 2,
|
||||||
@@ -140,7 +140,7 @@
|
|||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61897,
|
"sourcePort": 51723,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "S",
|
"tcpFlags": "S",
|
||||||
@@ -155,20 +155,20 @@
|
|||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 61897,
|
"destinationPort": 51723,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "SA",
|
"tcpFlags": "SA",
|
||||||
"sequence": 1000000,
|
"sequence": 1000000,
|
||||||
"acknowledgement": 2000001
|
"acknowledgement": 2000001
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1196,
|
"time": 1197,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61897,
|
"sourcePort": 51723,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "A",
|
"tcpFlags": "A",
|
||||||
@@ -176,13 +176,13 @@
|
|||||||
"acknowledgement": 1000001
|
"acknowledgement": 1000001
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1717,
|
"time": 1716,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61897,
|
"sourcePort": 51723,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": "verloren",
|
"payload": "verloren",
|
||||||
"tcpFlags": "P",
|
"tcpFlags": "P",
|
||||||
@@ -190,13 +190,13 @@
|
|||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 9967,
|
"time": 9966,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61897,
|
"sourcePort": 51723,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": "verloren",
|
"payload": "verloren",
|
||||||
"tcpFlags": "P",
|
"tcpFlags": "P",
|
||||||
@@ -204,13 +204,13 @@
|
|||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 18217,
|
"time": 18216,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61897,
|
"sourcePort": 51723,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": "verloren",
|
"payload": "verloren",
|
||||||
"tcpFlags": "P",
|
"tcpFlags": "P",
|
||||||
@@ -224,7 +224,7 @@
|
|||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61897,
|
"sourcePort": 51723,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "F",
|
"tcpFlags": "F",
|
||||||
@@ -232,41 +232,41 @@
|
|||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 26691,
|
"time": 26690,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 61897,
|
"destinationPort": 51723,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "A",
|
"tcpFlags": "A",
|
||||||
"sequence": 1000001,
|
"sequence": 1000001,
|
||||||
"acknowledgement": 2000010
|
"acknowledgement": 2000010
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 26746,
|
"time": 26745,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 61897,
|
"destinationPort": 51723,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "F",
|
"tcpFlags": "F",
|
||||||
"sequence": 1000001,
|
"sequence": 1000001,
|
||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 26747,
|
"time": 26745,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61897,
|
"sourcePort": 51723,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "A",
|
"tcpFlags": "A",
|
||||||
@@ -276,18 +276,32 @@
|
|||||||
],
|
],
|
||||||
"00000000-0000-0000-0000-000000000103": [
|
"00000000-0000-0000-0000-000000000103": [
|
||||||
{
|
{
|
||||||
"time": 854,
|
"time": 853,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"arp": 1,
|
"arp": 1,
|
||||||
"senderIp": "192.168.0.20",
|
"senderIp": "192.168.0.20",
|
||||||
"targetIp": "192.168.0.10"
|
"targetIp": "192.168.0.10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": 26578,
|
||||||
|
"source": "02:00:00:00:01:12",
|
||||||
|
"destination": "02:00:00:00:01:11",
|
||||||
|
"sourceIp": "192.168.0.20",
|
||||||
|
"destinationIp": "192.168.0.10",
|
||||||
|
"protocol": 6,
|
||||||
|
"sourcePort": 51723,
|
||||||
|
"destinationPort": 80,
|
||||||
|
"payload": null,
|
||||||
|
"tcpFlags": "F",
|
||||||
|
"sequence": 2000009,
|
||||||
|
"acknowledgement": 0
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"events": [
|
"events": [
|
||||||
[
|
[
|
||||||
215,
|
214,
|
||||||
"server oeffnen called"
|
"server oeffnen called"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
@@ -295,15 +309,15 @@
|
|||||||
"client verbinden called"
|
"client verbinden called"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1216,
|
1215,
|
||||||
"client verbinden returned"
|
"client verbinden returned"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1317,
|
1316,
|
||||||
"server oeffnen returned"
|
"server oeffnen returned"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1716,
|
1715,
|
||||||
"loss on"
|
"loss on"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
@@ -322,19 +336,19 @@
|
|||||||
"states": {
|
"states": {
|
||||||
"client": [
|
"client": [
|
||||||
[
|
[
|
||||||
715,
|
714,
|
||||||
"CLOSED"
|
"CLOSED"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
727,
|
725,
|
||||||
"SYN_SENT"
|
"SYN_SENT"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1197,
|
1198,
|
||||||
"ESTABLISHED"
|
"ESTABLISHED"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
26469,
|
26467,
|
||||||
"FIN_WAIT_1"
|
"FIN_WAIT_1"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
@@ -352,9 +366,13 @@
|
|||||||
],
|
],
|
||||||
"server": [
|
"server": [
|
||||||
[
|
[
|
||||||
1317,
|
1316,
|
||||||
"ESTABLISHED"
|
"ESTABLISHED"
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
26578,
|
||||||
|
"CLOSE_WAIT"
|
||||||
|
],
|
||||||
[
|
[
|
||||||
26580,
|
26580,
|
||||||
"LAST_ACK"
|
"LAST_ACK"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"frames": {
|
"frames": {
|
||||||
"00000000-0000-0000-0000-000000000101": [
|
"00000000-0000-0000-0000-000000000101": [
|
||||||
{
|
{
|
||||||
"time": 850,
|
"time": 855,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"arp": 1,
|
"arp": 1,
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
"targetIp": "192.168.0.10"
|
"targetIp": "192.168.0.10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 852,
|
"time": 857,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"arp": 2,
|
"arp": 2,
|
||||||
@@ -18,13 +18,13 @@
|
|||||||
"targetIp": "192.168.0.20"
|
"targetIp": "192.168.0.20"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1079,
|
"time": 1086,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61346,
|
"sourcePort": 63329,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "S",
|
"tcpFlags": "S",
|
||||||
@@ -32,27 +32,27 @@
|
|||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1081,
|
"time": 1088,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 61346,
|
"destinationPort": 63329,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "SA",
|
"tcpFlags": "SA",
|
||||||
"sequence": 1000000,
|
"sequence": 1000000,
|
||||||
"acknowledgement": 2000001
|
"acknowledgement": 2000001
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1305,
|
"time": 1311,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61346,
|
"sourcePort": 63329,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "A",
|
"tcpFlags": "A",
|
||||||
@@ -62,7 +62,7 @@
|
|||||||
],
|
],
|
||||||
"00000000-0000-0000-0000-000000000102": [
|
"00000000-0000-0000-0000-000000000102": [
|
||||||
{
|
{
|
||||||
"time": 729,
|
"time": 733,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"arp": 1,
|
"arp": 1,
|
||||||
@@ -70,7 +70,7 @@
|
|||||||
"targetIp": "192.168.0.10"
|
"targetIp": "192.168.0.10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 963,
|
"time": 969,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"arp": 2,
|
"arp": 2,
|
||||||
@@ -78,13 +78,13 @@
|
|||||||
"targetIp": "192.168.0.20"
|
"targetIp": "192.168.0.20"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 966,
|
"time": 972,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61346,
|
"sourcePort": 63329,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "S",
|
"tcpFlags": "S",
|
||||||
@@ -92,27 +92,27 @@
|
|||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1193,
|
"time": 1199,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 61346,
|
"destinationPort": 63329,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "SA",
|
"tcpFlags": "SA",
|
||||||
"sequence": 1000000,
|
"sequence": 1000000,
|
||||||
"acknowledgement": 2000001
|
"acknowledgement": 2000001
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1193,
|
"time": 1200,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61346,
|
"sourcePort": 63329,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "A",
|
"tcpFlags": "A",
|
||||||
@@ -120,13 +120,13 @@
|
|||||||
"acknowledgement": 1000001
|
"acknowledgement": 1000001
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1716,
|
"time": 1719,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 61346,
|
"sourcePort": 63329,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "F",
|
"tcpFlags": "F",
|
||||||
@@ -136,7 +136,7 @@
|
|||||||
],
|
],
|
||||||
"00000000-0000-0000-0000-000000000103": [
|
"00000000-0000-0000-0000-000000000103": [
|
||||||
{
|
{
|
||||||
"time": 850,
|
"time": 855,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"arp": 1,
|
"arp": 1,
|
||||||
@@ -147,56 +147,56 @@
|
|||||||
},
|
},
|
||||||
"events": [
|
"events": [
|
||||||
[
|
[
|
||||||
214,
|
216,
|
||||||
"server oeffnen called"
|
"server oeffnen called"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
715,
|
718,
|
||||||
"client verbinden called"
|
"client verbinden called"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1216,
|
1218,
|
||||||
"client verbinden returned"
|
"client verbinden returned"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1317,
|
1319,
|
||||||
"server oeffnen returned"
|
"server oeffnen returned"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1716,
|
1719,
|
||||||
"client schliessen called"
|
"client schliessen called"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1716,
|
1719,
|
||||||
"client schliessen returned"
|
"client schliessen returned"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1716,
|
1719,
|
||||||
"lost FIN"
|
"lost FIN"
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"states": {
|
"states": {
|
||||||
"client": [
|
"client": [
|
||||||
[
|
[
|
||||||
715,
|
717,
|
||||||
"CLOSED"
|
"CLOSED"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
725,
|
729,
|
||||||
"SYN_SENT"
|
"SYN_SENT"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1195,
|
1201,
|
||||||
"ESTABLISHED"
|
"ESTABLISHED"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1717,
|
1719,
|
||||||
"FIN_WAIT_1"
|
"FIN_WAIT_1"
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"server": [
|
"server": [
|
||||||
[
|
[
|
||||||
1317,
|
1319,
|
||||||
"ESTABLISHED"
|
"ESTABLISHED"
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"frames": {
|
"frames": {
|
||||||
"00000000-0000-0000-0000-000000000101": [
|
"00000000-0000-0000-0000-000000000101": [
|
||||||
{
|
{
|
||||||
"time": 856,
|
"time": 849,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"arp": 1,
|
"arp": 1,
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
"targetIp": "192.168.0.10"
|
"targetIp": "192.168.0.10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 858,
|
"time": 850,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"arp": 2,
|
"arp": 2,
|
||||||
@@ -18,13 +18,13 @@
|
|||||||
"targetIp": "192.168.0.20"
|
"targetIp": "192.168.0.20"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1086,
|
"time": 1078,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 54938,
|
"sourcePort": 59631,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "S",
|
"tcpFlags": "S",
|
||||||
@@ -32,27 +32,27 @@
|
|||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1088,
|
"time": 1079,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 54938,
|
"destinationPort": 59631,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "SA",
|
"tcpFlags": "SA",
|
||||||
"sequence": 1000000,
|
"sequence": 1000000,
|
||||||
"acknowledgement": 2000001
|
"acknowledgement": 2000001
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1311,
|
"time": 1303,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 54938,
|
"sourcePort": 59631,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "A",
|
"tcpFlags": "A",
|
||||||
@@ -60,13 +60,13 @@
|
|||||||
"acknowledgement": 1000001
|
"acknowledgement": 1000001
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1834,
|
"time": 1827,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 54938,
|
"sourcePort": 59631,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "F",
|
"tcpFlags": "F",
|
||||||
@@ -74,28 +74,28 @@
|
|||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1834,
|
"time": 1828,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 54938,
|
"destinationPort": 59631,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "A",
|
"tcpFlags": "A",
|
||||||
"sequence": 1000001,
|
"sequence": 1000001,
|
||||||
"acknowledgement": 2000002
|
"acknowledgement": 2000002
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1890,
|
"time": 1883,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 54938,
|
"destinationPort": 59631,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "F",
|
"tcpFlags": "F",
|
||||||
"sequence": 1000001,
|
"sequence": 1000001,
|
||||||
@@ -104,7 +104,7 @@
|
|||||||
],
|
],
|
||||||
"00000000-0000-0000-0000-000000000102": [
|
"00000000-0000-0000-0000-000000000102": [
|
||||||
{
|
{
|
||||||
"time": 734,
|
"time": 729,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"arp": 1,
|
"arp": 1,
|
||||||
@@ -112,7 +112,7 @@
|
|||||||
"targetIp": "192.168.0.10"
|
"targetIp": "192.168.0.10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 970,
|
"time": 962,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"arp": 2,
|
"arp": 2,
|
||||||
@@ -120,13 +120,13 @@
|
|||||||
"targetIp": "192.168.0.20"
|
"targetIp": "192.168.0.20"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 972,
|
"time": 964,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 54938,
|
"sourcePort": 59631,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "S",
|
"tcpFlags": "S",
|
||||||
@@ -134,27 +134,27 @@
|
|||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1199,
|
"time": 1191,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 54938,
|
"destinationPort": 59631,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "SA",
|
"tcpFlags": "SA",
|
||||||
"sequence": 1000000,
|
"sequence": 1000000,
|
||||||
"acknowledgement": 2000001
|
"acknowledgement": 2000001
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1200,
|
"time": 1191,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 54938,
|
"sourcePort": 59631,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "A",
|
"tcpFlags": "A",
|
||||||
@@ -162,13 +162,13 @@
|
|||||||
"acknowledgement": 1000001
|
"acknowledgement": 1000001
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1722,
|
"time": 1716,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 54938,
|
"sourcePort": 59631,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "F",
|
"tcpFlags": "F",
|
||||||
@@ -176,14 +176,14 @@
|
|||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1946,
|
"time": 1939,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 54938,
|
"destinationPort": 59631,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "A",
|
"tcpFlags": "A",
|
||||||
"sequence": 1000001,
|
"sequence": 1000001,
|
||||||
@@ -192,7 +192,7 @@
|
|||||||
],
|
],
|
||||||
"00000000-0000-0000-0000-000000000103": [
|
"00000000-0000-0000-0000-000000000103": [
|
||||||
{
|
{
|
||||||
"time": 856,
|
"time": 849,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"arp": 1,
|
"arp": 1,
|
||||||
@@ -203,64 +203,64 @@
|
|||||||
},
|
},
|
||||||
"events": [
|
"events": [
|
||||||
[
|
[
|
||||||
219,
|
214,
|
||||||
"server oeffnen called"
|
"server oeffnen called"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
720,
|
714,
|
||||||
"client verbinden called"
|
"client verbinden called"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1221,
|
1215,
|
||||||
"client verbinden returned"
|
"client verbinden returned"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1321,
|
1317,
|
||||||
"server oeffnen returned"
|
"server oeffnen returned"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1721,
|
1715,
|
||||||
"client schliessen called"
|
"client schliessen called"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1721,
|
1715,
|
||||||
"client schliessen returned"
|
"client schliessen returned"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1890,
|
1883,
|
||||||
"lost FIN"
|
"lost FIN"
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"states": {
|
"states": {
|
||||||
"client": [
|
"client": [
|
||||||
[
|
[
|
||||||
720,
|
714,
|
||||||
"CLOSED"
|
"CLOSED"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
731,
|
724,
|
||||||
"SYN_SENT"
|
"SYN_SENT"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1201,
|
1191,
|
||||||
"ESTABLISHED"
|
"ESTABLISHED"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1724,
|
1716,
|
||||||
"FIN_WAIT_1"
|
"FIN_WAIT_1"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1947,
|
1940,
|
||||||
"FIN_WAIT_2"
|
"FIN_WAIT_2"
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"server": [
|
"server": [
|
||||||
[
|
[
|
||||||
1322,
|
1317,
|
||||||
"ESTABLISHED"
|
"ESTABLISHED"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1835,
|
1829,
|
||||||
"LAST_ACK"
|
"LAST_ACK"
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"frames": {
|
"frames": {
|
||||||
"00000000-0000-0000-0000-000000000101": [
|
"00000000-0000-0000-0000-000000000101": [
|
||||||
{
|
{
|
||||||
"time": 855,
|
"time": 850,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"arp": 1,
|
"arp": 1,
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
"targetIp": "192.168.0.10"
|
"targetIp": "192.168.0.10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 856,
|
"time": 852,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"arp": 2,
|
"arp": 2,
|
||||||
@@ -18,13 +18,13 @@
|
|||||||
"targetIp": "192.168.0.20"
|
"targetIp": "192.168.0.20"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1083,
|
"time": 1079,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 52633,
|
"sourcePort": 52891,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "S",
|
"tcpFlags": "S",
|
||||||
@@ -32,28 +32,28 @@
|
|||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1085,
|
"time": 1081,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 52633,
|
"destinationPort": 52891,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "SA",
|
"tcpFlags": "SA",
|
||||||
"sequence": 1000000,
|
"sequence": 1000000,
|
||||||
"acknowledgement": 2000001
|
"acknowledgement": 2000001
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 17585,
|
"time": 17582,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 52633,
|
"destinationPort": 52891,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "F",
|
"tcpFlags": "F",
|
||||||
"sequence": 1000001,
|
"sequence": 1000001,
|
||||||
@@ -62,7 +62,7 @@
|
|||||||
],
|
],
|
||||||
"00000000-0000-0000-0000-000000000102": [
|
"00000000-0000-0000-0000-000000000102": [
|
||||||
{
|
{
|
||||||
"time": 733,
|
"time": 728,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"arp": 1,
|
"arp": 1,
|
||||||
@@ -70,7 +70,7 @@
|
|||||||
"targetIp": "192.168.0.10"
|
"targetIp": "192.168.0.10"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 968,
|
"time": 963,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"arp": 2,
|
"arp": 2,
|
||||||
@@ -78,13 +78,13 @@
|
|||||||
"targetIp": "192.168.0.20"
|
"targetIp": "192.168.0.20"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 970,
|
"time": 966,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "02:00:00:00:01:11",
|
"destination": "02:00:00:00:01:11",
|
||||||
"sourceIp": "192.168.0.20",
|
"sourceIp": "192.168.0.20",
|
||||||
"destinationIp": "192.168.0.10",
|
"destinationIp": "192.168.0.10",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 52633,
|
"sourcePort": 52891,
|
||||||
"destinationPort": 80,
|
"destinationPort": 80,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "S",
|
"tcpFlags": "S",
|
||||||
@@ -92,14 +92,14 @@
|
|||||||
"acknowledgement": 0
|
"acknowledgement": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 17697,
|
"time": 17694,
|
||||||
"source": "02:00:00:00:01:11",
|
"source": "02:00:00:00:01:11",
|
||||||
"destination": "02:00:00:00:01:12",
|
"destination": "02:00:00:00:01:12",
|
||||||
"sourceIp": "192.168.0.10",
|
"sourceIp": "192.168.0.10",
|
||||||
"destinationIp": "192.168.0.20",
|
"destinationIp": "192.168.0.20",
|
||||||
"protocol": 6,
|
"protocol": 6,
|
||||||
"sourcePort": 80,
|
"sourcePort": 80,
|
||||||
"destinationPort": 52633,
|
"destinationPort": 52891,
|
||||||
"payload": null,
|
"payload": null,
|
||||||
"tcpFlags": "F",
|
"tcpFlags": "F",
|
||||||
"sequence": 1000001,
|
"sequence": 1000001,
|
||||||
@@ -108,63 +108,81 @@
|
|||||||
],
|
],
|
||||||
"00000000-0000-0000-0000-000000000103": [
|
"00000000-0000-0000-0000-000000000103": [
|
||||||
{
|
{
|
||||||
"time": 855,
|
"time": 850,
|
||||||
"source": "02:00:00:00:01:12",
|
"source": "02:00:00:00:01:12",
|
||||||
"destination": "FF:FF:FF:FF:FF:FF",
|
"destination": "FF:FF:FF:FF:FF:FF",
|
||||||
"arp": 1,
|
"arp": 1,
|
||||||
"senderIp": "192.168.0.20",
|
"senderIp": "192.168.0.20",
|
||||||
"targetIp": "192.168.0.10"
|
"targetIp": "192.168.0.10"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": 17696,
|
||||||
|
"source": "02:00:00:00:01:11",
|
||||||
|
"destination": "02:00:00:00:01:12",
|
||||||
|
"sourceIp": "192.168.0.10",
|
||||||
|
"destinationIp": "192.168.0.20",
|
||||||
|
"protocol": 6,
|
||||||
|
"sourcePort": 80,
|
||||||
|
"destinationPort": 52891,
|
||||||
|
"payload": null,
|
||||||
|
"tcpFlags": "F",
|
||||||
|
"sequence": 1000001,
|
||||||
|
"acknowledgement": 0
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"events": [
|
"events": [
|
||||||
[
|
[
|
||||||
218,
|
213,
|
||||||
"server oeffnen called"
|
"server oeffnen called"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
719,
|
714,
|
||||||
"client verbinden called"
|
"client verbinden called"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1085,
|
1081,
|
||||||
"lost SYN+ACK"
|
"lost SYN+ACK"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
9025,
|
9019,
|
||||||
"client verbinden failed TimeOutException"
|
"client verbinden failed TimeOutException"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
17632,
|
17626,
|
||||||
"server oeffnen returned"
|
"server oeffnen returned"
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"states": {
|
"states": {
|
||||||
"server": [
|
"server": [
|
||||||
[
|
[
|
||||||
221,
|
215,
|
||||||
|
"CLOSED"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
217,
|
||||||
"LISTEN"
|
"LISTEN"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
1085,
|
1081,
|
||||||
"SYN_RCVD"
|
"SYN_RCVD"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
17585,
|
17582,
|
||||||
"FIN_WAIT_1"
|
"FIN_WAIT_1"
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"client": [
|
"client": [
|
||||||
[
|
[
|
||||||
719,
|
713,
|
||||||
"CLOSED"
|
"CLOSED"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
731,
|
724,
|
||||||
"SYN_SENT"
|
"SYN_SENT"
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
8980,
|
8974,
|
||||||
"CLOSED"
|
"CLOSED"
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import { fileURLToPath } from 'node:url';
|
|||||||
import { describe, expect, it } from 'vitest';
|
import { describe, expect, it } from 'vitest';
|
||||||
import { TCP_FLAG, type Id, type NetworkRuntimeEngine, type TcpSegment } from '../src/index.js';
|
import { TCP_FLAG, type Id, type NetworkRuntimeEngine, type TcpSegment } from '../src/index.js';
|
||||||
import { loseFirst } from './fixtures.js';
|
import { loseFirst } from './fixtures.js';
|
||||||
import { GAP_TOLERANCE_MILLISECONDS, gaps, javaFrames, watchedEngine, type JavaFrame, type SeenFrame } from './javaRun.js';
|
import { expectSameCaptures, GAP_TOLERANCE_MILLISECONDS, gaps, javaFrames, watchedEngine, withClientPortText, type JavaFrame, type SeenFrame } from './javaRun.js';
|
||||||
import type { Scenario } from './scenario.js';
|
import type { Scenario } from './scenario.js';
|
||||||
|
|
||||||
const scenarioDirectory = join(dirname(fileURLToPath(import.meta.url)), 'scenarios');
|
const scenarioDirectory = join(dirname(fileURLToPath(import.meta.url)), 'scenarios');
|
||||||
@@ -241,6 +241,17 @@ const JAVA_UNTIL: Record<string, (java: JavaRun) => number> = {
|
|||||||
lostSynAck: (java) => java.states.client!.find(([, state]) => state === 'SYN_SENT')![0] + JAVA_TIMEOUT_MILLISECONDS - GAP_TOLERANCE_MILLISECONDS,
|
lostSynAck: (java) => java.states.client!.find(([, state]) => state === 'SYN_SENT')![0] + JAVA_TIMEOUT_MILLISECONDS - GAP_TOLERANCE_MILLISECONDS,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Where each card's capture is compared only up to a time (Java's), beyond
|
||||||
|
* JAVA_UNTIL. closedPort: JAVA_BUGS adds the client's two later SYNs to its
|
||||||
|
* own card, not where else they show — the switch has forgotten the server
|
||||||
|
* by then and floods them to every card. Compared up to the second SYN.
|
||||||
|
*/
|
||||||
|
const CAPTURE_UNTIL: Record<string, (java: JavaRun) => number> = {
|
||||||
|
...JAVA_UNTIL,
|
||||||
|
closedPort: (java) => java.states.client!.find(([, state]) => state === 'SYN_SENT')![0] + JAVA_TIMEOUT_MILLISECONDS - GAP_TOLERANCE_MILLISECONDS,
|
||||||
|
};
|
||||||
|
|
||||||
describe('TCP as Java FILIUS runs it', () => {
|
describe('TCP as Java FILIUS runs it', () => {
|
||||||
it('corrects Java only where it errs', () => {
|
it('corrects Java only where it errs', () => {
|
||||||
for (const [name, correct] of Object.entries(JAVA_BUGS)) {
|
for (const [name, correct] of Object.entries(JAVA_BUGS)) {
|
||||||
@@ -250,7 +261,7 @@ describe('TCP as Java FILIUS runs it', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('cuts only where Java goes on with its error', () => {
|
it('cuts only where Java goes on with its error', () => {
|
||||||
for (const [name, until] of Object.entries(JAVA_UNTIL)) {
|
for (const [name, until] of Object.entries(CAPTURE_UNTIL)) {
|
||||||
const java = JSON.parse(readFileSync(join(scenarioDirectory, `tcp-java-${name}.java.json`), 'utf8')) as JavaRun;
|
const java = JSON.parse(readFileSync(join(scenarioDirectory, `tcp-java-${name}.java.json`), 'utf8')) as JavaRun;
|
||||||
const cut = until(java);
|
const cut = until(java);
|
||||||
const later = [...Object.values(java.frames).flat().map((frame) => frame.time), ...Object.values(java.states).flat().map(([time]) => time)];
|
const later = [...Object.values(java.frames).flat().map((frame) => frame.time), ...Object.values(java.states).flat().map(([time]) => time)];
|
||||||
@@ -288,13 +299,17 @@ describe('TCP as Java FILIUS runs it', () => {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
expectSameCaptures(engine, scenario, java.frames, { text: withClientPortText, until: CAPTURE_UNTIL[name]?.(measured) });
|
||||||
|
|
||||||
const shift = (states: [number, string][], syn: number): [number, string][] => before(states.map(([time, state]) => [time - syn, state]));
|
const shift = (states: [number, string][], syn: number): [number, string][] => before(states.map(([time, state]) => [time - syn, state]));
|
||||||
// From SYN_SENT: Java's first CLOSED is when the socket was made.
|
// From SYN_SENT: Java's first CLOSED is when the socket was made.
|
||||||
const javaClient = java.states.client!.filter(([, state], index) => !(index === 0 && state === 'CLOSED'));
|
const javaClient = java.states.client!.filter(([, state], index) => !(index === 0 && state === 'CLOSED'));
|
||||||
expectSameStates('client', shift(engineStates(engine, story.client, false), engineSyn), shift(javaClient, javaSyn));
|
expectSameStates('client', shift(engineStates(engine, story.client, false), engineSyn), shift(javaClient, javaSyn));
|
||||||
if (java.states.server !== undefined) {
|
if (java.states.server !== undefined) {
|
||||||
// A listening server from its first change: Java's first LISTEN is when it began to listen.
|
// A listening server from its first change: Java's first LISTEN is when it began to listen (its
|
||||||
const javaServer = story.serverListening === true ? java.states.server.slice(1) : java.states.server;
|
// poll may have seen the socket CLOSED before).
|
||||||
|
const listening = java.states.server.findIndex(([, state]) => state === 'LISTEN');
|
||||||
|
const javaServer = story.serverListening === true ? java.states.server.slice(listening + 1) : java.states.server;
|
||||||
expectSameStates('server', shift(engineStates(engine, SERVER, story.serverListening !== true), engineSyn), shift(javaServer, javaSyn));
|
expectSameStates('server', shift(engineStates(engine, SERVER, story.serverListening !== true), engineSyn), shift(javaServer, javaSyn));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import { dirname, join } from 'node:path';
|
|||||||
import { fileURLToPath } from 'node:url';
|
import { fileURLToPath } from 'node:url';
|
||||||
import { describe, expect, it } from 'vitest';
|
import { describe, expect, it } from 'vitest';
|
||||||
import type { Id, NetworkRuntimeEngine } from '../src/index.js';
|
import type { Id, NetworkRuntimeEngine } from '../src/index.js';
|
||||||
import { GAP_TOLERANCE_MILLISECONDS, gaps, javaFrames, watchedEngine, type JavaFrame } from './javaRun.js';
|
import { expectSameCaptures, GAP_TOLERANCE_MILLISECONDS, gaps, javaFrames, watchedEngine, type JavaFrame } from './javaRun.js';
|
||||||
import type { Scenario } from './scenario.js';
|
import type { Scenario } from './scenario.js';
|
||||||
|
|
||||||
const scenarioDirectory = join(dirname(fileURLToPath(import.meta.url)), 'scenarios');
|
const scenarioDirectory = join(dirname(fileURLToPath(import.meta.url)), 'scenarios');
|
||||||
@@ -76,6 +76,7 @@ describe('WLAN as Java FILIUS runs it', () => {
|
|||||||
expect(actual[index]?.text, `frame #${index + 1}`).toBe(expected[index]?.text);
|
expect(actual[index]?.text, `frame #${index + 1}`).toBe(expected[index]?.text);
|
||||||
expect(Math.abs(actual[index]!.gap - expected[index]!.gap), `gap before frame #${index + 1}`).toBeLessThanOrEqual(GAP_TOLERANCE_MILLISECONDS);
|
expect(Math.abs(actual[index]!.gap - expected[index]!.gap), `gap before frame #${index + 1}`).toBeLessThanOrEqual(GAP_TOLERANCE_MILLISECONDS);
|
||||||
}
|
}
|
||||||
|
expectSameCaptures(engine, scenario, java.frames);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -446,3 +446,26 @@ liest nur die Oberfläche):
|
|||||||
Swift verbindet zur Laufzeit jeden Rechner mit eingeschaltetem WLAN mit
|
Swift verbindet zur Laufzeit jeden Rechner mit eingeschaltetem WLAN mit
|
||||||
einem freien Port des Switches seiner SSID, auch ohne Kabel
|
einem freien Port des Switches seiner SSID, auch ohne Kabel
|
||||||
(`wirelessAssociations`). Der Kern folgt Java: Er kennt nur die Kabel.
|
(`wirelessAssociations`). Der Kern folgt Java: Er kennt nur die Kabel.
|
||||||
|
|
||||||
|
## Mitschnitt je Karte
|
||||||
|
|
||||||
|
Was `ScenarioNetwork.writeFrames` schreibt, ist Javas Mitschnitt selbst
|
||||||
|
(`Lauscher.datenEinheiten`): je Karte jeder Frame, den sie gesendet oder
|
||||||
|
empfangen hat. Seit F2.8a vergleicht der Kern seinen Mitschnitt Karte für
|
||||||
|
Karte damit (`expectSameCaptures` in `packages/core/test/javaRun.ts`), nicht
|
||||||
|
mehr nur jeden Frame dort, wo er zuerst auftaucht.
|
||||||
|
|
||||||
|
Dabei fiel auf (01.10.2026): `ScenarioNetwork` übernahm die Lernzeit eines
|
||||||
|
Switches (`switches.<id>.retention`) nicht; Java lief mit 300 s, der Kern
|
||||||
|
mit den 5 s der Szenarien `tcp-lan` und `dhcp-*`. Der alte Vergleich sah den
|
||||||
|
Unterschied nicht: Ein gefluteter Frame erscheint nur auf zusätzlichen
|
||||||
|
Karten. Seit F2.8a setzt das Werkzeug die Lernzeit
|
||||||
|
(`SwitchFirmware.setRetentionTime`), die TCP- und DHCP-Läufe sind neu
|
||||||
|
aufgenommen. Mit 5 s flutet auch Javas Switch in `lostData` den FIN nach
|
||||||
|
26 s an alle Karten, wie der Kern. `dhcp-lan` behält die alte Aufnahme: Die
|
||||||
|
neue unterscheidet sich nur darin, welcher der beiden Clients zuerst sendet;
|
||||||
|
nach 5 s gehen dort nur noch Broadcasts.
|
||||||
|
|
||||||
|
Javas Switch prüft seine Tabelle einmal je Sekunde ab dem Start
|
||||||
|
(`SwitchFirmware.checkSAT`), ein Eintrag verfällt also bis zu einer Sekunde
|
||||||
|
nach der Lernzeit; der Kern genau bei ihr. Noch nicht gemessen.
|
||||||
|
|||||||
@@ -144,10 +144,14 @@ public class ScenarioNetwork {
|
|||||||
cable.setAnschluesse(new Port[] { ports.get(link.get("sourcePort")), ports.get(link.get("targetPort")) });
|
cable.setAnschluesse(new Port[] { ports.get(link.get("sourcePort")), ports.get(link.get("targetPort")) });
|
||||||
cable.setWireless(Boolean.TRUE.equals(link.get("wireless")));
|
cable.setWireless(Boolean.TRUE.equals(link.get("wireless")));
|
||||||
}
|
}
|
||||||
// A switch's SSID, a host's wireless card and the SSID it joins: what the
|
// A switch's SSID and learning time; a host's wireless card and the SSID
|
||||||
// editor reads to lay a wireless cable; the simulation does not ask.
|
// it joins. The SSIDs only the editor reads, to lay a wireless cable.
|
||||||
for (Map.Entry<String, Object> entry : map(scenario.getOrDefault("switches", new HashMap<>())).entrySet()) {
|
for (Map.Entry<String, Object> entry : map(scenario.getOrDefault("switches", new HashMap<>())).entrySet()) {
|
||||||
((SwitchFirmware) nodes.get(entry.getKey()).getSystemSoftware()).setSSID((String) map(entry.getValue()).get("ssid"));
|
Map<String, Object> config = map(entry.getValue());
|
||||||
|
SwitchFirmware firmware = (SwitchFirmware) nodes.get(entry.getKey()).getSystemSoftware();
|
||||||
|
firmware.setSSID((String) config.get("ssid"));
|
||||||
|
// How long the switch keeps a learned MAC address (Java's default 300 s).
|
||||||
|
if (config.containsKey("retention")) firmware.setRetentionTime(((Number) config.get("retention")).longValue());
|
||||||
}
|
}
|
||||||
for (Map.Entry<String, Object> entry : map(scenario.getOrDefault("wireless", new HashMap<>())).entrySet()) {
|
for (Map.Entry<String, Object> entry : map(scenario.getOrDefault("wireless", new HashMap<>())).entrySet()) {
|
||||||
Betriebssystem os = (Betriebssystem) system(nodes.get(entry.getKey()));
|
Betriebssystem os = (Betriebssystem) system(nodes.get(entry.getKey()));
|
||||||
|
|||||||
Reference in New Issue
Block a user