IP Library Granted Patent US 11,665,135
Granted Patent B2
US 11,665,135 · App. 17/539,924 · Granted May 30, 2023

Domain name processing systems and methods

Inventors: Harold Nguyen (Burlingame, CA); Ali Mesdaq (San Jose, CA); Kevin Dedon (Austin, TX); Michael Fox (Lago Vista, TX); Gaurav Dalal (Fremont, CA)
Assignee: PROOFPOINT, INC.
H04L61/5046G06F16/9535H04L61/3025H04L61/4511
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 11,665,135
App. No.
17/539,924
Granted
May 30, 2023
Kind
B2
Abstract

Disclosed is a domain filter capable of determining an n-gram distance between a seed domain and each of a plurality of candidate domains. The domain filter loads a seed domain n-gram for the seed domain and a candidate domain n-gram for each candidate domain in memory, compares the seed domain n-gram and the candidate domain n-gram to identify any identical grams, removes any identical grams from the seed domain n-gram, and determines how many grams are left in the seed domain n-gram, representing the n-gram distance between the seed domain and the candidate domain. The domain filter then compares n-gram distances thus determined with a predetermined threshold, eliminates any candidate domain having an n-gram distance from the seed domain that exceeds the predetermined threshold, and provides remaining candidate domains to a downstream computing facility such as a user interface or an analytical module operating in an enterprise computing environment.

Claims (71)

1. A method, comprising:

parsing, by a computer, a string corresponding to a domain of interest into n-grams;

for each of the n-grams parsed from the string corresponding to the domain of interest, performing, by the computer:

storing an n-gram for the domain of interest in a memory of the computer;

for each respective candidate domain of a plurality of candidate domains:

comparing the n-gram for the domain of interest with n-grams of the respective candidate domain;

determining whether the n-gram for the domain of interest is found in the n-grams of the respective candidate domain; and

responsive to finding the n-gram for the domain of interest in the n-grams of the respective candidate domain, eliminating the n-gram for the domain of interest from the n-grams parsed from the string corresponding to the domain of interest;

determining, by the computer, an n-gram distance between the domain of interest and each respective candidate domain of the plurality of candidate domains based on a number of n-grams left in the n-grams parsed from the string corresponding to the domain of interest after eliminating any identical n-grams in the domain of interest and the respective candidate domain of the plurality of candidate domains;

determining, by the computer, whether any n-gram distance between the domain of interest and a respective candidate domain of the plurality of candidate domains exceeds a threshold; and

eliminating, by the computer from the plurality of candidate domains, any candidate domains having an n-gram distance that exceeds the threshold.

2. The method according to claim 1 , further comprising:

determining a position of the n-gram for the domain of interest in the string, wherein determining whether the n-gram for the domain of interest is found in the n-grams of the respective candidate domain comprises determining whether an n-gram identical to the n-gram for the domain of interest is found at same position in a string corresponding to the respective candidate domain.

3. The method according to claim 1 , further comprising:

determining whether the n-grams parsed from the string corresponding to the domain of interest contain any duplicates; and

responsive to finding the n-gram for the domain of interest in the n-grams of the respective candidate domain, eliminating only one of the duplicates from the n-grams parsed from the string corresponding to the domain of interest, thereby preserving duplicity of the n-gram for the domain of interest.

4. The method according to claim 1 , further comprising:

parsing each of the plurality of candidate domains into a plurality of n-grams; and

storing the plurality of n-grams in the memory.

5. The method according to claim 1 , wherein a candidate domain of the plurality of candidate domains contains the string corresponding to the domain of interest.

6. The method according to claim 1 , wherein a candidate domain of the plurality of candidate domains comprises a version or variation of the domain of interest.

7. The method according to claim 1 , further comprising:

retrieving the plurality of candidate domains from a database, wherein the retrieving comprises reading character strings stored in a block of rows of the database and wherein the character strings correspond to the plurality of candidate domains.

8. A system, comprising:

a processor;

a non-transitory computer-readable medium; and

stored instructions translatable by the processor for:

parsing a string corresponding to a domain of interest into n-grams;

for each of the n-grams parsed from the string corresponding to the domain of interest, performing:

storing an n-gram for the domain of interest in a memory;

for each respective candidate domain of a plurality of candidate domains:

comparing the n-gram for the domain of interest with n-grams of the respective candidate domain;

determining whether the n-gram for the domain of interest is found in the n-grams of the respective candidate domain; and

responsive to finding the n-gram for the domain of interest in the n-grams of the respective candidate domain, eliminating the n-gram for the domain of interest from the n-grams parsed from the string corresponding to the domain of interest;

determining an n-gram distance between the domain of interest and each respective candidate domain of the plurality of candidate domains based on a number of n-grams left in the n-grams parsed from the string corresponding to the domain of interest after eliminating any identical n-grams in the domain of interest and the respective candidate domain of the plurality of candidate domains;

determining whether any n-gram distance between the domain of interest and a respective candidate domain of the plurality of candidate domains exceeds a threshold; and

eliminating, from the plurality of candidate domains, any candidate domains having an n-gram distance that exceeds the threshold.

9. The system of claim 8 , wherein the stored instructions are further translatable by the processor for:

determining a position of the n-gram for the domain of interest in the string, wherein determining whether the n-gram for the domain of interest is found in the n-grams of the respective candidate domain comprises determining whether an n-gram identical to the n-gram for the domain of interest is found at same position in a string corresponding to the respective candidate domain.

10. The system of claim 8 , wherein the stored instructions are further translatable by the processor for:

determining whether the n-grams parsed from the string corresponding to the domain of interest contain any duplicates; and

responsive to finding the n-gram for the domain of interest in the n-grams of the respective candidate domain, eliminating only one of the duplicates from the n-grams parsed from the string corresponding to the domain of interest, thereby preserving duplicity of the n-gram for the domain of interest.

11. The system of claim 8 , wherein the stored instructions are further translatable by the processor for:

parsing each of the plurality of candidate domains into a plurality of n-grams; and

storing the plurality of n-grams in the memory.

12. The system of claim 8 , wherein a candidate domain of the plurality of candidate domains contains the string corresponding to the domain of interest.

13. The system of claim 8 , wherein a candidate domain of the plurality of candidate domains comprises a version or variation of the domain of interest.

14. The system of claim 8 , wherein the stored instructions are further translatable by the processor for:

retrieving the plurality of candidate domains from a database, wherein the retrieving comprises reading character strings stored in a block of rows of the database and wherein the character strings correspond to the plurality of candidate domains.

15. A computer program product comprising a non-transitory computer-readable medium storing instructions translatable by a processor for:

parsing a string corresponding to a domain of interest into n-grams;

for each of the n-grams parsed from the string corresponding to the domain of interest, performing:

storing an n-gram for the domain of interest in a memory;

for each respective candidate domain of a plurality of candidate domains:

comparing the n-gram for the domain of interest with n-grams of the respective candidate domain;

determining whether the n-gram for the domain of interest is found in the n-grams of the respective candidate domain; and

responsive to finding the n-gram for the domain of interest in the n-grams of the respective candidate domain, eliminating the n-gram for the domain of interest from the n-grams parsed from the string corresponding to the domain of interest;

determining an n-gram distance between the domain of interest and each respective candidate domain of the plurality of candidate domains based on a number of n-grams left in the n-grams parsed from the string corresponding to the domain of interest after eliminating any identical n-grams in the domain of interest and the respective candidate domain of the plurality of candidate domains;

determining whether any n-gram distance between the domain of interest and a respective candidate domain of the plurality of candidate domains exceeds a threshold; and

eliminating, from the plurality of candidate domains, any candidate domains having an n-gram distance that exceeds the threshold.

16. The computer program product of claim 15 , wherein the instructions are further translatable by the processor for:

determining a position of the n-gram for the domain of interest in the string, wherein determining whether the n-gram for the domain of interest is found in the n-grams of the respective candidate domain comprises determining whether an n-gram identical to the n-gram for the domain of interest is found at same position in a string corresponding to the respective candidate domain.

17. The computer program product of claim 15 , wherein the instructions are further translatable by the processor for:

determining whether the n-grams parsed from the string corresponding to the domain of interest contain any duplicates; and

responsive to finding the n-gram for the domain of interest in the n-grams of the respective candidate domain, eliminating only one of the duplicates from the n-grams parsed from the string corresponding to the domain of interest, thereby preserving duplicity of the n-gram for the domain of interest.

18. The computer program product of claim 15 , wherein the instructions are further translatable by the processor for:

parsing each of the plurality of candidate domains into a plurality of n-grams; and

storing the plurality of n-grams in the memory.

19. The computer program product of claim 15 , wherein a candidate domain of the plurality of candidate domains contains the string corresponding to the domain of interest or comprises a version or variation of the domain of interest.

20. The computer program product of claim 15 , wherein the instructions are further translatable by the processor for:

retrieving the plurality of candidate domains from a database, wherein the retrieving comprises reading character strings stored in a block of rows of the database and wherein the character strings correspond to the plurality of candidate domains.

Assignments (3)
INTELLECTUAL PROPERTY AGREEMENT SUPPLEMENT Recorded Dec 9, 2025
From: PROOFPOINT, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 073910/0027 →
SECOND LIEN INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Dec 8, 2025
From: PROOFPOINT, INC.
To: U.S. BANK TRUST COMPANY, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 073889/0677 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 27, 2021
From: NGUYEN, HAROLD; MESDAQ, ALI; DEDON, KEVIN; FOX, MICHAEL; DALAL, GAURAV
To: PROOFPOINT, INC.
Reel/Frame 058485/0736 →
Continuity (3)
Continuation 17027575 · Sep 21, 2020
Continuation 15986585 · May 22, 2018
Related Publication 20220094662A1 · Mar 24, 2022
Cited By (1)
US 12,438,911