IP Library Granted Patent US 9,154,365
Granted Patent B1
US 9,154,365 · App. 11/556,968 · Granted Oct 6, 2015

Replaying events collected from a client computer

Inventor: Brent E. Henry (Salt Lake City, UT)
Assignee: Raytheon Oakley Systems, LLC
H04L29/08072
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,154,365
App. No.
11/556,968
Granted
Oct 6, 2015
Kind
B1
Abstract

Embodiments of the invention provide novel systems, methods and software for replaying one or more events occurring on a monitored computer (or elsewhere). Such solutions can provide the ability for an operator to easily determine the exact user behavior that produced the event and can, in some cases, and provide evidence of what the user did, and the order in which the user performed the various activities. Various embodiments of the invention organize various pieces of information captured from the user's client workstation behavior, reassemble of the pieces into a complete session of the users' activities and/or replay the exact user behavior for the observer, in some cases using a web browser and JavaScript to replay the activities just as they were performed by the original user.

Claims (75)

1. A method comprising:

collecting a plurality of events in response to user interactions with a client computer;

generating a plurality of event objects each comprising data usable in replaying one of the plurality of events, the plurality of event objects comprising:

a first event object corresponding to a first event of the plurality of events; and

a second event object corresponding to a second event of the plurality of events; and

modifying the second event object by replacing a first reference to a first resource at a first address with a second reference to a second resource at a second address different from the first address, the second resource being a representation of the first resource;

storing the second event object in computer-readable memory accessible to a replay server; and

storing the second resource in the computer-readable memory accessible to the replay server, such that the second resource is addressable by the replay server using the second address for replay at a replay workstation of a representation of the second event.

2. The method of claim 1 , wherein:

the first address comprises a first URL;

the second address comprises a second URL; and

the first resource comprises an image file.

3. The method of claim 1 , further comprising:

determining that the first event object comprises extraneous code;

modifying the first event object by removing the extraneous code from the first event object; and

storing the first event object in computer-readable memory accessible to the replay server.

4. The method of claim 1 , further comprising streaming the first event object to the replay workstation before storing the second event object, the first event object comprising data used to replay a representation of the first event at the replay workstation.

5. The method of claim 1 , further comprising receiving comprising:

receiving a selection of the plurality of events for replay;

in response to the selection, accessing the plurality of event objects from the computer-readable memory accessible to the replay server; and

transmitting the accessed plurality of event objects for replay at the replay workstation of a representation of the plurality of events.

6. The method of claim 1 , further comprising:

determining that a subset of the plurality of events are each related to particular user interactions with the client computer;

logically grouping the subset of the plurality of events as an event collection; and

storing data representing the logical grouping of the subset of the plurality of events as the event collection, the data stored in computer-readable memory accessible to the replay server.

7. The method of claim 1 , wherein the user interactions with the client computer comprise interactions with an object of the client computer that is not part of a web browser.

8. The method of claim 1 , wherein the replay server comprises the replay workstation.

9. The method of claim 1 , further comprising:

identifying the plurality of events as events to replay;

instantiating at the replay workstation a control window for requesting the plurality of event objects;

requesting, via the control window, the plurality of event objects;

instantiating an event window for storing the plurality of event objects;

storing each of the plurality of event objects in the event window;

instantiating a content window configured to replay a representation of the plurality of events; and

replaying the representation of the plurality of events using the plurality of event objects stored in the event window.

10. The method of claim 9 , wherein replaying the representation of the plurality of events comprises compressing a set of chronological gaps between the plurality of events, such that the replay of the plurality of events occurs in a relatively shorter span of time than a span of time in which the events occurred on the client computer.

11. The method of claim 9 , wherein each of the plurality of events originally occurred within a single application on the client computer.

12. The method of claim 9 , wherein the control window is configured to detect that a particular event object stored in the event window is being used to replay an associated event, and to request an additional event object in response to detecting that the particular event object stored in the event window is being used.

13. The method of claim 9 , wherein the event window comprises an ordered list descriptive of the user interactions to which the plurality of events are responsive.

14. A non-transitory computer-readable medium encoded with logic, the logic operable when executed to:

collect a plurality of events in response to user actions;

generate a plurality of event objects each comprising data usable in replaying one of the plurality of events, the plurality of event objects comprising:

a first event object corresponding to a first event of the plurality of events; and

a second event object corresponding to a second event of the plurality of events; and

modify the second event object by replacing a first reference to a first resource at a first address with a second reference to a second resource at a second address different from the first address, the second resource being a representation of the first resource;

store the second event object in computer-readable memory accessible to a replay server; and

store the second resource in the computer-readable memory accessible to the replay server, such that the second resource is addressable by the replay server using the second address for replay at a replay workstation of a representation of the second event.

15. The medium of claim 14 , the logic further operable when executed to:

determine that the first event object comprises extraneous code;

modify the first event object by removing the extraneous code from the first event object; and

store the first event object in computer-readable memory accessible to the replay server.

16. The medium of claim 14 , the logic further operable when executed to:

stream the first event object to the replay workstation before the second event object is generated, the first event object comprising data used to replay a representation of the first event at the replay workstation.

17. The medium of claim 14 , the logic further operable when executed to:

receive a selection of the plurality of events for replay;

in response to the selection, access the plurality of event objects from non-transitory computer-readable memory accessible to the replay server; and

output the accessed plurality of event objects for replay at the replay workstation of a representation of the plurality of events.

18. The medium of claim 14 , the logic further operable when executed to:

determine that a subset of the plurality of events are each related to one of the user actions;

logically group the subset of the plurality of events as an event collection; and

store data representing the logical grouping of the subset of the plurality of events as the event collection, the data stored in non-transitory computer-readable memory accessible to a replay server.

19. The medium of claim 14 , wherein the user interactions with the client computer comprise interactions with an object of the client computer that is not part of a web browser.

20. The medium of claim 14 , wherein the replay server comprises the replay workstation.

21. The medium of claim 14 , wherein each of the plurality of events originally occurred within a single application on a client computer.

22. The medium of claim 14 , the logic further operable when executed to:

identify the plurality of events as events to replay;

instantiate at the replay workstation a control window for requesting the plurality of event objects;

request, via the control window, the plurality of event objects;

instantiate an event window for storing the plurality of event objects;

store each of the plurality of event objects in the event window;

instantiate a content window configured to replay a representation of the plurality of events; and

replay the representation of the plurality of events using the plurality of event objects stored in the event window.

23. The medium of claim 22 , wherein the logic is operable to replay the representation of the plurality of events by compressing a set of chronological gaps between the plurality of events, such that a replay of the plurality of events occurs in a relatively shorter span of time than a span of time in which the events occurred on the client computer.

24. The medium of claim 22 , wherein the logic is further operable when executed to detect that a particular event object stored in the event window is being used to replay an associated event, and to request an additional event object in response to detecting that the particular event object stored in the event window is being used.

25. The medium of claim 22 , wherein the event window comprises an ordered list descriptive of the user interactions to which the plurality of events are responsive.

Assignments (16)
CHANGE OF NAME Recorded Mar 21, 2025
From: FORCEPOINT FEDERAL HOLDINGS LLC
To: EVERFOX HOLDINGS LLC
Reel/Frame 070585/0524 →
PARTIAL PATENT RELEASE AND REASSIGNMENT AT REEL/FRAME 055052/0302 Recorded Oct 3, 2023
From: CREDIT SUISSE, AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: FORCEPOINT FEDERAL HOLDINGS LLC (F/K/A FORCEPOINT LLC)
Reel/Frame 065103/0147 →
SECURITY INTEREST Recorded Sep 29, 2023
From: FORCEPOINT FEDERAL HOLDINGS LLC
To: APOLLO ADMINISTRATIVE AGENCY LLC, AS COLLATERAL AGENT
Reel/Frame 065086/0822 →
CHANGE OF NAME Recorded May 12, 2021
From: FORCEPOINT LLC
To: FORCEPOINT FEDERAL HOLDINGS LLC
Reel/Frame 056216/0309 →
PATENT SECURITY AGREEMENT Recorded Jan 20, 2021
From: REDOWL ANALYTICS, INC.; FORCEPOINT LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 055052/0302 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Jan 8, 2021
From: RAYTHEON COMPANY
To: WEBSENSE, INC.; PORTAUTHORITY TECHNOLOGIES, LLC (FKA PORTAUTHORITY TECHNOLOGIES, INC.); RAYTHEON OAKLEY SYSTEMS, LLC; FORCEPOINT FEDERAL LLC (FKA RAYTHEON CYBER PRODUCTS, LLC, FKA RAYTHEON CYBER PRODUCTS, INC.)
Reel/Frame 055492/0146 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 1, 2017
From: FORCEPOINT FEDERAL LLC
To: FORCEPOINT LLC
Reel/Frame 043397/0460 →
CHANGE OF NAME Recorded Feb 16, 2016
From: RAYTHEON CYBER PRODUCTS, LLC
To: FORCEPOINT FEDERAL LLC
Reel/Frame 037821/0818 →
PATENT SECURITY AGREEMENT Recorded Jun 9, 2015
From: WEBSENSE, INC.; RAYTHEON OAKLEY SYSTEMS, LLC; RAYTHEON CYBER PRODUCTS, LLC (FORMERLY KNOWN AS RAYTHEON CYBER PRODUCTS, INC.); PORT AUTHORITY TECHNOLOGIES, INC.
To: RAYTHEON COMPANY
Reel/Frame 035859/0282 →
CHANGE OF NAME Recorded Jun 2, 2015
From: RAYTHEON CYBER PRODUCTS, INC.
To: RAYTHEON CYBER PRODUCTS, LLC
Reel/Frame 035806/0367 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 28, 2015
From: RAYTHEON OAKLEY SYSTEMS, LLC
To: RAYTHEON CYBER PRODUCTS, INC.
Reel/Frame 035774/0146 →
RELEASE OF SECURITY INTEREST Recorded Apr 9, 2015
From: SILICON VALLEY BANK
To: OAKLEY NETWORKS, INC. (NOW KNOWN AS RAYTHEON OAKLEY SYSTEMS, LLC)
Reel/Frame 035366/0044 →
CHANGE OF NAME Recorded Jan 8, 2014
From: RAYTHEON OAKLEY SYSTEMS, INC.
To: RAYTHEON OAKLEY SYSTEMS, LLC
Reel/Frame 031936/0543 →
MERGER Recorded Jan 10, 2012
From: OAKLEY NETWORKS, INC.
To: RAYTHEON OAKLEY SYSTEMS, INC.
Reel/Frame 027507/0920 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 5, 2008
From: HENRY, BRENT E.
To: OAKLEY NETWORKS
Reel/Frame 021975/0730 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 18, 2007
From: OAKLEY NETWORKS, INC.
To: SILICON VALLEY BANK
Reel/Frame 019326/0865 →
Continuity (1)
Provisional Application 60734811 · Nov 8, 2005