IP Library Granted Patent US 12,314,227
Granted Patent B2
US 12,314,227 · App. 18/382,621 · Granted May 27, 2025

Forensic file service

Inventors: Christopher Michael Montgomery (Blaine, MN); Peter John Lindquist (St. Paul, MN); Brent Aethon McCullough (Saint Paul, MN); Vijay Ramanathan (Eden Prairie, MN); Daniel Louis Sullivan (Denver, CO)
Assignee: Code42 Software, Inc.
G06F16/1734G06F16/128G06F16/13G06F16/148G06F16/212
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 12,314,227
App. No.
18/382,621
Granted
May 27, 2025
Kind
B2
Abstract

A system for forensic file services is configured to receive data indicative of operations executed on a filesystem element stored on a computing resource associated with a first tenant, to and adjust the data according to an indicated database schema. The system is also configured to store the adjusted data in a record of a partition of a database, where the partition configured to store a history of operations executed on filesystem elements of computing resources associated with the first tenant. The system is further configured to receive a search request to search the database and to execute the search request on a second partition of the database to identify one or more matching records. The system is additionally configured to provide the identified records in response to the search request.

Claims (43)

1. A system for forensic file services, the system comprising:

a computing device, comprising a hardware processor and a memory, the memory, storing instructions, which when executed by the hardware processor, causes the system to perform operations comprising:

receiving, over a network and from a monitoring application executing on a computing resource associated with a first tenant for forensic file services, data describing a filesystem element event corresponding to a particular filesystem element on the computing resource associated with the first tenant, the filesystem element event data describing a change to the particular filesystem element on a filesystem of the computing resource associated with the first tenant, and the filesystem element data including metadata of the particular filesystem element;

allocating the filesystem element event data to one of a plurality of parallel processing queues based upon an identifier of the computing resource;

determining that the filesystem element event corresponds to a deletion event;

responsive to determining that the filesystem element event corresponds to the deletion event, searching an event database for a last filesystem element event corresponding to that filesystem element and extracting a filesystem element signature including a hash of content of the particular filesystem element;

adding the filesystem element signature to the filesystem element event data to create enhanced filesystem element event data;

store the enhanced filesystem element event data in a database record of the event database in a partition configured to store a history of filesystem element events of a plurality computing resources associated with the first tenant;

receive a search request from a second computing device to search the event database, the search request comprising a search query and a tenant identifier of a second tenant;

execute the search query on a second partition of the event database to identify records that satisfy the search query, the second partition configured to store a history of filesystem element events of a plurality of computing resources associated with the second tenant; and

provide the identified records in response to the search request.

2. The system of claim 1 , wherein the metadata of the particular filesystem element comprises at least one of: a filename, a filepath, a timestamp, a file size, a checksum, or a file type.

3. The system of claim 1 , wherein allocating the filesystem element event data to one of the plurality of parallel processing queues comprises allocating the filesystem element event data to a processing queue based on a network identifier of the computing resource.

4. The system of claim 1 , wherein the operations further comprise: receiving data describing a second filesystem element event corresponding to a second filesystem element on a second computing resource associated with the first tenant; and allocating the second filesystem element event data to a second one of the plurality of parallel processing queues based upon an identifier of the second computing resource, wherein the second filesystem element event and the filesystem element event are processed in parallel.

5. The system of claim 1 , wherein the operations further comprise: pruning the event database by removing records older than a threshold time period.

6. The system of claim 5 , wherein pruning the event database comprises retaining a record when it is an only record corresponding to a particular filesystem element.

7. A method comprising:

receiving, over a network and from a monitoring application executing on a computing resource associated with a first tenant for forensic file services, data describing a filesystem element event corresponding to a particular filesystem element on the computing resource associated with the first tenant, the filesystem element event data describing a change to the particular filesystem element on a filesystem of the computing resource associated with the first tenant, and the filesystem element data including metadata of the particular filesystem element;

allocating the filesystem element event data to one of a plurality of parallel processing queues based upon an identifier of the computing resource;

determining that the filesystem element event corresponds to a deletion event;

responsive to determining that the filesystem element event corresponds to the deletion event, searching an event database for a last filesystem element event corresponding to that filesystem element and extracting a filesystem element signature including a hash of content of the particular filesystem element;

adding the filesystem element signature to the filesystem element event data to create enhanced filesystem element event data;

storing the enhanced filesystem element event data in a database record of the event database in a partition configured to store a history of filesystem element events of a plurality computing resources associated with the first tenant;

receiving a search request from a second computing device to search the event database, the search request comprising a search query and a tenant identifier of a second tenant;

executing the search query on a second partition of the event database to identify records that satisfy the search query, the second partition configured to store a history of filesystem element events of a plurality of computing resources associated with the second tenant; and

providing the identified records in response to the search request.

8. The method of claim 7 , wherein the metadata of the particular filesystem element comprises at least one of: a filename, a filepath, a timestamp, a file size, a checksum, or a file type.

9. The method of claim 7 , wherein allocating the filesystem element event data to one of the plurality of parallel processing queues comprises allocating the filesystem element event data to a processing queue based on a network identifier of the computing resource.

10. The method of claim 7 , further comprising: receiving data describing a second filesystem element event corresponding to a second filesystem element on a second computing resource associated with the first tenant; and allocating the second filesystem element event data to a second one of the plurality of parallel processing queues based upon an identifier of the second computing resource, wherein the second filesystem element event and the filesystem element event are processed in parallel.

11. The method of claim 7 , further comprising: pruning the event database by removing records older than a threshold time period.

12. The method of claim 11 , wherein pruning the event database comprises retaining a record when it is an only record corresponding to a particular filesystem element.

13. A machine-readable medium, storing instructions, which when executed by a machine, cause the machine to perform operations comprising:

receiving, over a network and from a monitoring application executing on a computing resource associated with a first tenant for forensic file services, data describing a filesystem element event corresponding to a particular filesystem element on the computing resource associated with the first tenant, the filesystem element event data describing a change to the particular filesystem element on a filesystem of the computing resource associated with the first tenant, and the filesystem element data including metadata of the particular filesystem element;

allocating the filesystem element event data to one of a plurality of parallel processing queues based upon an identifier of the computing resource;

determining that the filesystem element event corresponds to a deletion event;

responsive to determining that the filesystem element event corresponds to the deletion event, searching an event database for a last filesystem element event corresponding to that filesystem element and extracting a filesystem element signature including a hash of content of the particular filesystem element;

adding the filesystem element signature to the filesystem element event data to create enhanced filesystem element event data;

storing the enhanced filesystem element event data in a database record of the event database in a partition configured to store a history of filesystem element events of a plurality computing resources associated with the first tenant;

receiving a search request from a second computing device to search the event database, the search request comprising a search query and a tenant identifier of a second tenant;

executing the search query on a second partition of the event database to identify records that satisfy the search query, the second partition configured to store a history of filesystem element events of a plurality of computing resources associated with the second tenant; and

providing the identified records in response to the search request.

14. The machine-readable medium of claim 13 , wherein the metadata of the particular filesystem element comprises at least one of: a filename, a filepath, a timestamp, a file size, a checksum, or a file type.

15. The machine-readable medium of claim 13 , wherein the operations of allocating the filesystem element event data to one of the plurality of parallel processing queues comprises allocating the filesystem element event data to a processing queue based on a network identifier of the computing resource.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 16, 2026
From: CODE42 SOFTWARE, INC.
To: MIMECAST NORTH AMERICA, INC.
Reel/Frame 073501/0393 →
CERTIFICATE OF AMENDMENT TO THE FOURTH AMENDED AND RESTATED CERTIFICATE OF INCORPORATION Recorded Dec 12, 2023
From: CODE 42 SOFTWARE, INC.
To: CODE42 SOFTWARE, INC.
Reel/Frame 065881/0140 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 12, 2023
From: MONTGOMERY, CHRISTOPHER MICHAEL; LINDQUIST, PETER JOHN; MCCULLOUGH, BRENT AETHON; RAMANATHAN, VIJAY; SULLIVAN, DANIEL LOUIS
To: CODE 42 SOFTWARE, INC.
Reel/Frame 065840/0745 →
Continuity (2)
Continuation 16360273 · Mar 21, 2019
Related Publication 20240054105A1 · Feb 15, 2024
References Cited (22)
US 9086917B1 · Fitzgerald et al. · 2015 [cited by applicant]
US 10079842B1 · Brandwine et al. · 2018 [cited by applicant]
US 10148675B1 · Brandwine · 2018 [cited by examiner]
US 10515212B1 · Mcclintock et al. · 2019 [cited by applicant]
US 20020152305A1 · Jackson et al. · 2002 [cited by applicant]
US 20090292745A1 · Bose · 2009 [cited by examiner]
US 20110145216A1 · Subramanya · 2011 [cited by examiner]
US 20140181047A1 · Pawar · 2014 [cited by examiner]
US 20170344618A1 · Horowitz et al. · 2017 [cited by applicant]
US 20180091559A1 · Luger · 2018 [cited by examiner]
US 20180349385A1 · Oliver et al. · 2018 [cited by applicant]
US 20200301888A1 · Montgomery et al. · 2020 [cited by applicant]
“U.S. Appl. No. 16/360,273, Appeal Brief filed Oct. 18, 2021”, 27 pgs. [cited by applicant]
“U.S. Appl. No. 16/360,273, Appeal Decision mailed Mar. 17, 2023”, 18 pgs. [cited by applicant]
“U.S. Appl. No. 16/360,273, Examiner's Answer mailed Mar. 3, 2022”, 11 pgs. [cited by applicant]
“U.S. Appl. No. 16/360,273, Final Office Action mailed Apr. 29, 2021”, 39 pgs. [cited by applicant]
“U.S. Appl. No. 16/360,273, Non Final Office Action mailed Oct. 19, 2020”, 35 pgs. [cited by applicant]
“U.S. Appl. No. 16/360,273, Notice of Allowance mailed Jul. 19, 2023”, 9 pgs. [cited by applicant]
“U.S. Appl. No. 16/360,273, Notice of Non-Compliant Appeal Brief Received Oct. 22, 2021”, 2 pgs. [cited by applicant]
“U.S. Appl. No. 16/360,273, Response filed Jan. 19, 2021 to Non Final Office Action mailed Oct. 19, 2020”, 11 pgs. [cited by applicant]
“U.S. Appl. No. 16/360,273, Response Filed Nov. 22, 2021 to Notice of Non-Compliant Appeal Brief Received Oct. 22, 2021”, 27 pgs. [cited by applicant]
IBM, “Partitioned Database Environments”, [Online]. Retrieved from the Internet: <URL: https://www.ibm.com/docs/en/db2/11.5?topic=partitions-partitioneddatabase-environments>, (Oct. 20, 2022). [cited by applicant]