1. Field of the Invention
The present invention relates to techniques for generating CAPTCHAs.
2. Background
A CAPTCHA is a type of challenge-response test that a content provider may present to users of a networked computer system for authorizing the users to access content that is hosted by the content provider. A content provider may be a webmail provider, a blog, a forum, a wiki, etc. For instance, a provider of a Web site may present a CAPTCHA to users who attempt to access the Web site, so that the provider may determine whether the users are humans or automated systems (a.k.a. bots). Automated systems often execute attacks that attempt to bypass the CAPTCHAs that are provided by content providers. If the automated systems are able to bypass the CAPTCHAs, the automated systems typically abuse the privileges that are offered by the content providers by sending SPAM emails, providing offensive posts, etc. and/or by consuming substantial resources of the content providers. Accordingly, such attacks often degrade the quality of service of the content providers, which may result in monetary and/or reputational losses for the providers.
Efforts have been made to develop CAPTCHAs that are capable of resisting attacks that are initiated by automated systems but that are solvable by humans without undue difficulty. The more resilient a CAPTCHA is to such attacks while remaining reasonably solvable by humans, the more effective the CAPTCHA is said to be. CAPTCHAs typically include a string of characters (e.g., letters and/or numbers) that a user is asked to transcribe. Traditional techniques for generating CAPTCHAs often add noise to the characters and/or to an area that surrounds the characters and maintain a relatively close spacing between the characters to increase the effectiveness of the CAPTCHAs.
However, automated systems are becoming increasingly sophisticated, such that the success rate of the automated systems for solving CAPTCHAs that are generated using traditional techniques may be substantially the same as the success rate of humans for solving the CAPTCHAs. For instance, automated systems may attempt to solve a CAPTCHA by segmenting a string of characters that is included in the CAPTCHA into individual characters. Each character then may be identified using a technique such as optical character recognition (OCR).
Thus, systems, methods, and computer program products are needed that address one or more of the aforementioned shortcomings of conventional techniques for generating CAPTCHAs.
Various approaches are described herein for, among other things, generating CAPTCHAs that include overlapped characters, projections on virtual three-dimensional (3D) surfaces, and/or virtual 3D objects. A CAPTCHA is a type of challenge-response test that a content provider may present to users of a networked computer system for authorizing the users to access content that is hosted by the content provider. For example, when a user attempts to access content, a CAPTCHA may be generated in accordance with any one or more of the approaches described herein. The CAPTCHA may be provided to the user, and the user may be asked to identify characters that overlap in the CAPTCHA, characters that are projected on a virtual 3D surface, and/or a designated virtual 3D object, so that the user may be authorized to access the content. The user may enter the characters and/or select the designated virtual 3D object that is identified in the CAPTCHA using an input device, such as a keyboard, touch screen, pointing device, etc.
An example method is described for generating a CAPTCHA that includes overlapped characters. In accordance with this example method, a first character is generated that has a first outer boundary. A second character is generated that has a second outer boundary. The second outer boundary intersects the first outer boundary to provide an overlapping region with respect to the first and second characters. A determination is made that the overlapping region is to be attributable to a specified character. The specified character is the first character or the second character. A CAPTCHA is provided to a user. The CAPTCHA includes the first character and the second character arranged such that the overlapping region is attributable to the specified character.
An example method is described for generating a CAPTCHA that includes a projection on a virtual 3D surface. In accordance with this example method, a string of characters is generated. A virtual 3D surface is generated. The string of characters is projected on the virtual 3D surface to provide a 3D scene. The 3D scene includes the virtual 3D surface having a projection of the string of characters thereon. A CAPTCHA that includes the 3D scene is provided to a user.
An example method is described for generating a CAPTCHA that includes virtual 3D objects. In accordance with this example method, virtual 3D objects are randomly selected. The virtual 3D objects are randomly combined to generate a virtual 3D structure. A CAPTCHA that includes the virtual 3D structure is provided to a user. A request is made for the user to identify a designated virtual 3D object of the virtual 3D objects in the virtual 3D structure.
Example systems are also described. A first example system includes a character generator, an attribution module, and a CAPTCHA provider. The character generator is configured to generate a first character that has a first outer boundary. The character generator is further configured to generate a second character that has a second outer boundary. The second outer boundary intersects the first outer boundary to provide an overlapping region with respect to the first and second characters. The attribution module is configured to determine that the overlapping region is to be attributable to a specified character. The specified character is the first character or the second character. The CAPTCHA provider is configured to provide a CAPTCHA to a user. The CAPTCHA includes the first character and the second character arranged such that the overlapping region is attributable to the specified character.
A second example system includes a character generator, a surface generator, a projector module, and a CAPTCHA provider. The character generator is configured to generate a string of characters. The surface generator is configured to generate a virtual 3D surface. The projector module is configured to project the string of characters on the virtual 3D surface to provide a 3D scene. The 3D scene includes the virtual 3D surface having a projection of the string of characters thereon. The CAPTCHA provider is configured to provide a CAPTCHA that includes the 3D scene to a user.
A third example system includes an object selector, an object combiner, a
CAPTCHA provider, and a request module. The object selector is configured to randomly select virtual 3D objects. The object combiner is configured to randomly combine the virtual 3D objects to generate a virtual 3D structure. The CAPTCHA provider is configured to provide a CAPTCHA that includes the virtual 3D structure to a user. The request module is configured to request that the user identify a designated virtual 3D object of the virtual 3D objects in the virtual 3D structure.
Example computer program products are also described. A first computer program product includes a computer-readable medium having computer program logic recorded thereon for enabling a processor-based system to generate a CAPTCHA that includes overlapped characters. The computer program logic includes first, second, third, and fourth program logic modules. The first program logic module is for enabling the processor-based system to generate a first character that has a first outer boundary. The second program logic module is for enabling the processor-based system to generate a second character that has a second outer boundary. The second outer boundary intersects the first outer boundary to provide an overlapping region with respect to the first and second characters. The third program logic module is for enabling the processor-based system to determine that the overlapping region is to be attributable to a specified character. The specified character is the first character or the second character. The fourth program logic module is for enabling the processor-based system to provide a CAPTCHA to a user. The CAPTCHA includes the first character and the second character arranged such that the overlapping region is attributable to the specified character.
A second computer program product includes a computer-readable medium having computer program logic recorded thereon for enabling a processor-based system to generate a CAPTCHA that includes a projection on a virtual 3D surface. The computer program logic includes first, second, third, and fourth program logic modules. The first program logic module is for enabling the processor-based system to generate a string of characters. The second program logic module is for enabling the processor-based system to generate a virtual 3D surface. The third program logic module is for enabling the processor-based system to project the string of characters on the virtual 3D surface to provide a 3D scene. The 3D scene includes the virtual 3D surface having a projection of the string of characters thereon. The fourth program logic module is for enabling the processor-based system to provide a CAPTCHA that includes the 3D scene to a user.
A third computer program product includes a computer-readable medium having computer program logic recorded thereon for enabling a processor-based system to generate a CAPTCHA that includes virtual 3D objects. The computer program logic includes first, second, third, and fourth program logic modules. The first program logic module is for enabling the processor-based system to randomly select virtual 3D objects. The second program logic module is for enabling the processor-based system to randomly combine the virtual 3D objects to generate a virtual 3D structure. The third program logic module is for enabling the processor-based system to provide a CAPTCHA that includes the virtual 3D structure to a user. The fourth program logic module is for enabling the processor-based system to request that the user identify a designated virtual 3D object of the virtual 3D objects in the virtual 3D structure.
Further features and advantages of the disclosed technologies, as well as the structure and operation of various embodiments, are described in detail below with reference to the accompanying drawings. It is noted that the invention is not limited to the specific embodiments described herein. Such embodiments are presented herein for illustrative purposes only. Additional embodiments will be apparent to persons skilled in the relevant arts) based on the teachings contained herein.
The accompanying drawings, which are incorporated herein and form part of the specification, illustrate embodiments of the present invention and, together with the description, further serve to explain the principles involved and to enable a person skilled in the relevant art(s) to make and use the disclosed technologies.
The features and advantages of the disclosed technologies will become more apparent from the detailed description set forth below when taken in conjunction with the drawings, in which like reference characters identify corresponding elements throughout. In the drawings, like reference numbers generally indicate identical, functionally similar, and/or structurally similar elements. The drawing in which an element first appears is indicated by the leftmost digit(s) in the corresponding reference number.
The following detailed description refers to the accompanying drawings that illustrate exemplary embodiments of the present invention. However, the scope of the present invention is not limited to these embodiments, but is instead defined by the appended claims. Thus, embodiments beyond those shown in the accompanying drawings, such as modified versions of the illustrated embodiments, may nevertheless be encompassed by the present invention.
References in the specification to “one embodiment,” “an embodiment,” “an example embodiment,” or the like, indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Furthermore, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to implement such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
Example embodiments are capable of generating CAPTCHAs that include overlapped characters, projections on virtual three-dimensional (3D) surfaces, and/or virtual 3D objects. A CAPTCHA is a type of challenge-response test that a content provider may present to users of a networked computer system for authorizing the users to access content that is hosted by the content provider. For example, when a user attempts to access content, a CAPTCHA may be generated in accordance with any one or more of the approaches described herein. The CAPTCHA may be provided to the user, and the user may be asked to identify characters that overlap in the CAPTCHA, characters that are projected on a virtual 3D surface, and/or a designated virtual 3D object, so that the user may be authorized to access the content. The user may enter the characters and/or select the designated virtual 3D object that is identified in the CAPTCHA using an input device, such as a keyboard, touch screen, pointing device, etc.
Techniques described herein for generating CAPTCHAs have a variety of benefits as compared to conventional techniques for generating CAPTCHAs. For example, the techniques described herein may generate CAPTCHAs that are more resilient to attacks by automated systems. For instance, the automated systems may be unable to solve the CAPTCHAs using traditional segmentation and character identification techniques. Embodiments in which CAPTCHAs that include overlapped characters are generated may take advantage of the innate human capacity for reasoning about solid objects by treating the characters as solid 3D objects that follow common laws of overlap among solid objects. In accordance with these embodiments, humans may be able to mentally disentangle the characters by reasoning about character behaviors in the third dimension. Embodiments in which CAPTCHAs that include projections on virtual 3D surfaces and/or virtual 3D objects may take advantage of the ability of humans to understand perspective. For instance, the projections and/or virtual 3D objects may have physical interpretations that automated systems are unable (or less likely) to understand.
As shown in
User systems 102A-102M are computers or other processing systems, each including one or more processors, that are capable of communicating with servers 106A-106N. User systems 102A-102M are capable of accessing sites (e.g., Web sites) hosted by servers 104A-104N, so that user systems 102A-102M may access information that is available via the sites. User systems 102A-102M are configured to provide requests (e.g., hypertext transfer protocol (HTTP) requests) to servers 106A-106N for requesting information stored on (or otherwise accessible via) servers 106A-106N. For instance, a user may initiate a request for information using a client (e.g., a Web crawler, a Web browser, a non-Web-enabled client, etc.) deployed on a user system 102 that is owned by or otherwise accessible to the user.
Servers 106A-106N are computers or other processing systems, each including one or more processors, that are capable of communicating with user systems 102A-102M. Servers 106A-106N are configured to host respective sites (e.g., Web sites), so that the sites are accessible to users of computer system 100. Servers 106A-106N are further configured to provide information to users in response to receiving requests (e.g., HTTP requests) from the users.
First server(s) 106A includes a CAPTCHA generator 108. CAPTCHA generator 108 is configured to generate CAPTCHAs that include overlapped characters, projections on virtual 3D surfaces, and/or virtual 3D objects. Further detail regarding techniques for generating CAPTCHAs that include overlapped characters, projections on virtual 3D surfaces, and/or virtual 3D objects is provided in the following discussion. CAPTCHA generator 108 is further configured to provide such CAPTCHAs to users who attempt to access information that is stored on (or otherwise accessible via) first server(s) 106A, so that the users may be authorized to receive the information. For example, CAPTCHA generator 108 may provide the information to the users only if the users solve the CAPTCHAs that are provided to the users. In accordance with this example, a user may solve a CAPTCHA by identifying characters and/or a 3D object that is included in the CAPTCHA.
First server(s) 106A is shown to include CAPTCHA generator 108 for illustrative purposes. It will be recognized that any one or more of servers 106A-106N may include a CAPTCHA generator, such as CAPTCHA generator 108. It will be further recognized that any one or more user systems 102A-102M may communicate with any one or more servers 106A-106N. Although user systems 102A-102M are depicted as desktop computers in
A. CAPTCHAs that Include Overlapped Characters
As shown in
At step 204, a Yth character is generated that has a Yth outer boundary. For example, the Yth character may be randomly generated, though the scope of the example embodiments is not limited in this respect. In accordance with this example, the Yth character may be randomly generated from a predetermined set of characters (e.g., lower case letters a through z, upper case letters A through Z, letters of languages other than English, numbers 0 through 9, punctuation characters, etc.). In an example implementation, character generator 504 generates the Yth character.
At step 206, a determination is made whether the Yth character is to be distorted. In an example implementation, distortion determination module 506 determines whether the Yth character is to be distorted. If the Yth character is to be distorted, flow continues to step 208. Otherwise, flow continues to step 210.
At step 208, the Yth character is distorted. For example, the Yth character may be stretched, twisted, compressed, rotated, sheared, curved (e.g., squiggled), blurred, obscured, etc. In another example, an angle between lines of the Yth character may be changed. For instance, the angle between two lines that form an “L” may be reduced so that the L is slanted. In accordance with this example, the lines need not necessarily be straight lines. For instance, one or both of the lines between which the angle is defined may be curved. In an example implementation, character distorter distorts the Yth character.
At step 210, a (Y+1)th character is generated that has a (Y+1)th outer boundary. For instance, the (Y+1)th character may be randomly generated, though the scope of the example embodiments is not limited in this respect. The (Y+1)th outer boundary intersects the Yth outer boundary to provide one or more Yth overlapping regions with respect to the Yth and (Y+1)th characters. In an example implementation, character generator 504 generates the (Y+1)th character.
At step 212, a determination is made whether the (Y+1)th character is to be distorted. In an example implementation, distortion determination module 506 determines whether the (Y+1)th character is to be distorted.
At step 214, the (Y+1)th character is distorted. In an example implementation, character distorter distorts the (Y+1)th character.
At step 216, a determination is made that the one or more Yth overlapping regions are to be attributable to one or more respective Yth specified characters. Each of the one or more Yth specified characters is the Yth character or the (Y+1)th character. For example, some Yth overlapping regions may be attributable to the Yth character, while other Yth overlapping regions may be attributable to the (Y+1)th character. In accordance with this example, the Yth character and the (Y+1)th character may be intertwined. In an example implementation, attribution module 510 determines that the one or more Yth overlapping regions are to be attributable to the one or more respective Yth specified characters.
At step 218, a determination is made whether Y+1=Z. Z represents a number of characters that are to be included in a CAPTCHA. In an example implementation, comparison module 512 determines whether Y+1=Z. If Y+1=Z, flow continues to step 222. Otherwise, flow continues to step 220.
At step 220, the variable Y is incremented by one. In an example implementation, counter module 502 increments the variable Y by one. Upon completion of step 220, flow returns to step 210.
At step 222, the CAPTCHA is provided to a user. The CAPTCHA includes the first character through the Zth character, arranged such that the overlapping region(s) are attributable to the respective specified character(s). For instance, the first overlapping region is attributable to the first specified character; the second overlapping region is attributable to the second specified character; and so on. The first through Zth characters may be arranged substantially horizontally (e.g., from left to right or from right to left), substantially vertically (e.g., from top to bottom or from bottom to top), diagonally, or in another arrangement. In an example implementation, CAPTCHA provider 514 provides the CAPTCHA to the user.
Attributes (e.g., character size, font, etc.) of the Z characters may have any suitable values. For instance, the values of the attributes may be selectable. In accordance with an example embodiment, one or more attribute values of each character are randomly selected. In accordance with this example embodiment, such attribute values may be randomly selected from a predetermined set of attribute values.
In some example embodiments, one or more steps 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, and/or 222 of flowchart 200 may not be performed. Moreover, steps in addition to or in lieu of steps 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, and/or 222 may be performed.
In an example embodiment, instead of performing step 210 of flowchart 200, the steps of flowchart 300 in
At step 304, a (Y+1)th character that has a (Y+1)th outer boundary is generated in response to determining that the designated character is not to be generated next to the Yth character. The (Y+1)th outer boundary intersects the Yth outer boundary to provide one or more Yth overlapping regions with respect to the Yth and (Y+1)th characters. In an example implementation, character generator 504 generates the (Y+1)th character.
In another example embodiment, instead of performing steps 216, 218, and 222 of flowchart 200, the steps of flowchart 400 in
At step 404, for each Yth non-specified character, a maximum proportion of an area of the Yth non-specified character that the respective Yth specified character is capable of overlapping is specified. In an example implementation, restriction module 516 specifies, for each Yth non-specified character, the maximum proportion of the area of the Yth non-specified character that the respective Yth specified character is capable of overlapping.
At step 406, a determination is made whether Y+1=Z. In an example implementation, comparison module 512 determines whether Y+1=Z. If Y+1=Z, flow continues to step 408. Otherwise, flow continues to step 222 of flowchart 200.
At step 408, the CAPTCHA is provided to a user. The CAPTCHA includes the 1st-Zth characters arranged such that the overlapping region(s) are attributable to the respective specified character(s) and such that the specified character(s) overlap designated proportion(s) of the area(s) of the respective non-specified character(s). The designated proportion(s) are less than or equal to the respective maximum proportion(s). In an example implementation, CAPTCHA provider 514 provides the CAPTCHA to the user.
In accordance with an example embodiment, if a (Y+1)th character is distorted at step 214 such that a relationship between an area of a respective Yth overlapping region and an area of a respective Yth non-specified character exceeds the maximum proportion of the area of the Yth non-specified character that a respective Yth specified character is capable of overlapping, the area of the Yth overlapping region is reduced so that a respective designated proportion of the area of the Yth non-specified character is less than or equal to the maximum proportion. In accordance with this example embodiment, providing the CAPTCHA to the user at step 408 is performed in response to reducing the area of the Yth overlapping region.
It will be recognized that server 500 may not include one or more of counter module 502, character generator 504, distortion determination module 506, character distorter 508, attribution module 510, comparison module 512, CAPTCHA provider 514, and/or restriction module 516. Furthermore, server 500 may include modules in addition to or in lieu of counter module 502, character generator 504, distortion determination module 506, character distorter 508, attribution module 510, comparison module 512, CAPTCHA provider 514, and/or restriction module 516. Moreover, server 500 may be implemented as one or more servers.
The “U” and the “V” overlap to provide overlapping region 604. Overlapping region 604 is said to be attributable to the “U” because the “U” overlaps the “V” with respect to overlapping region 604.
The “V” and the “7” overlap to provide overlapping region 606. Overlapping region 606 is said to be attributable to the “V because the “V” overlaps the “7” with respect to overlapping region 606.
The “7” and the “6” overlap to provide overlapping region 608. Overlapping region 608 is said to be attributable to the “6” because the “6” overlaps the “7” with respect to overlapping region 608.
The “6” and the “1” overlap to provide overlapping regions 610A and 610B. Overlapping region 610A is said to be attributable to the “6” because the “6” overlaps the “1” with respect to overlapping region 610A. Overlapping region 610B is said to be attributable to the “1” because the “1” overlaps the “6” with respect to overlapping region 610B.
CAPTCHA 600 is shown to include six characters for illustrative purposes and is not intended to be limiting. It will be recognized that CAPTCHA 600 may include any number of characters arranged in any order. Moreover, each of the characters in CAPTCHA 600 is shown to provide at least one overlapping region with an adjacent character. Persons skilled in the relevant art(s) will recognize that one or more of the characters in a CAPTCHA (e.g., CAPTCHA 600) may not necessarily provide an overlapping region with another character. For example, as shown in
As shown in
B. CAPTCHAs that Include Projections on Virtual 3D Surfaces
As shown in
At step 904, a string of characters is generated. For instance, the string of characters may be randomly generated, though the scope of the example embodiments is not limited in this respect. In an example implementation, character generator 1104 generates the string of characters.
At step 906, a virtual three-dimensional (3D) surface is generated. For instance, the virtual 3D surface may be randomly generated, though the scope of the example embodiments is not limited in this respect. In an example implementation, surface generator 1106 generates the virtual 3D surface.
At step 908, an orientation of a virtual light source is selected from a plurality of orientations to project the string of characters on the virtual 3D surface. For instance, the orientation of the virtual light source may include a distance of the virtual light source from the virtual 3D surface, a distance of the virtual light source from the string of characters, a direction in which the virtual light source is directed, etc. In an example implementation, light orientation selector 1108 selects the orientation of the virtual light source.
At step 910, an orientation of the string of characters between the virtual 3D surface and the virtual light source is determined For instance, the orientation of the string of characters may include a distance of the string of characters from the virtual 3D surface; a distance of the string of characters from the virtual light source; a yaw, a pitch, and/or a roll of the string of characters; etc. In an example implementation, character orientation selector 1110 determines the orientation of the string of characters.
At step 912, the string of characters is projected on the virtual 3D surface to provide a virtual 3D scene that includes the virtual 3D surface having a projection of the string of characters thereon. In an example implementation, projector module 1112 projects the string of characters on the virtual 3D surface to provide the virtual 3D scene.
At step 914, a CAPTCHA that includes the virtual 3D scene is provided to the user. In an example implementation, CAPTCHA provider 1114 provides the CAPTCHA that includes the virtual 3D scene to the user. Upon completion of step 914, flow continues to step 916, which is shown in
In accordance with an example embodiment, the CAPTCHA that is provided to the user includes a request that the user provide a proposed solution for the CAPTCHA. For instance, the CAPTCHA may include a request that the user identify (e.g., transcribe) the string of characters. In accordance with another example embodiment, a request that the user provide a proposed solution for the CAPTCHA is provided to the user in addition to (e.g., separately from) the CAPTCHA.
At step 916, a determination is made whether a request is received from the user to rotate the virtual 3D scene about an axis. In an example implementation, rotation request determination module 1116 determines whether a request to rotate the virtual 3D scene about an axis is received from the user. If such a request is received from the user, flow continues to step 918. Otherwise, flow continues to step 920.
At step 918, the virtual 3D scene is rotated about the axis. For instance, the axis about which the virtual 3D scene is rotated may be specified from among a plurality of axes by the request that is received from the user. In an example implementation, scene rotator 1118 rotates the virtual 3D scene about the axis. Upon completion of step 918, flow returns to step 916.
At step 920, a determination is made whether the user provides a proposed solution for the CAPTCHA. For instance, the proposed solution may include a string of characters that is intended to be the same as the string of characters that is included in the CAPTCHA. In an example implementation, proposed solution determination module 1120 determines whether the user provides a proposed solution for the CAPTCHA. If the user provides a proposed solution for the CAPTCHA, flow continues to step 922. Otherwise, flow returns to step 916.
At step 922, a determination is made whether the proposed solution is a correct solution. For instance, a determination may be made whether a string of characters that is entered by the user is the same as the string of characters that is included in the CAPTCHA. In an example implementation, correctness determination module 1122 determines whether the proposed solution is a correct solution. If the proposed solution is a correct solution, flow continues to step 924. Otherwise, flow continues to step 926.
At step 924, the content is provided to the user. In an example implementation, access provider 1124 provides the content to the user. Upon completion of step 924, flowchart 900 ends.
At step 926, the content is not provided to the user. In an example implementation, access provider 1124 does not provide the content to the user. Upon completion of step 926, flowchart 900 ends.
In some example embodiments, one or more steps 902, 904, 906, 908, 910, 912, 914, 916, 918, 920, 922, 924, and/or 926 of flowchart 900 may not be performed. Moreover, steps in addition to or in lieu of steps 902, 904, 906, 908, 910, 912, 914, 916, 918, 920, 922, 924, and/or 926 may be performed.
In an example embodiment, instead of performing steps 916, 918, 920, 922, 924, and 926 of flowchart 900 (i.e., the steps shown in
At step 1004, a variable Y is set to equal zero. In an example implementation, counter module 1128 sets the variable Y to equal zero.
At step 1006, a determination is made whether a request is received from the user to rotate the virtual 3D scene about an axis. In an example implementation, rotation request determination module 1116 determines whether a request to rotate the virtual 3D scene about an axis is received from the user. If such a request is received from the user, flow continues to step 1008. Otherwise, flow continues to step 1016.
At step 1008, a determination is made whether the variable Y is greater than or equal to the threshold number of times, Z. In an example implementation, comparison module 1130 determines whether the variable Y is greater than or equal to the threshold number of times, Z. If the variable Y is greater than or equal to the threshold number of times, Z, flow continues to step 1010. Otherwise, flow continues to step 1012.
At step 1010, the virtual 3D scene is not rotated. In an example implementation, scene rotator 1118 does not rotate the virtual 3D scene. Upon completion of step 1010, flow continues to step 1014.
At step 1012, the virtual 3D scene is rotated about the axis. In an example implementation, scene rotator 1118 rotates the virtual 3D scene about the axis. Upon completion of step 1012, flow continues to step 1014.
At step 1014, the variable Y is incremented by one. In an example implementation, counter module 1128 increments the variable Y by one. Upon completion of step 1014, flow returns to step 1006.
At step 1016, a determination is made whether the user provides a proposed solution for the CAPTCHA. In an example implementation, proposed solution determination module 1120 determines whether the user provides a proposed solution for the CAPTCHA. If the user provides a proposed solution for the CAPTCHA, flow continues to step 1018. Otherwise, flow returns to step 1006.
At step 1018, a determination is made whether the proposed solution is a correct solution. In an example implementation, correctness determination module 1122 determines whether the proposed solution is a correct solution. If the proposed solution is a correct solution, flow continues to step 1020. Otherwise, flow continues to step 1022.
At step 1020, the content is provided to the user. In an example implementation, access provider 1124 provides the content to the user. Upon completion of step 1020, flowchart 1000 ends.
At step 1022, the content is not provided to the user. In an example implementation, access provider 1124 does not provide the content to the user. Upon completion of step 1022, flowchart 1000 ends.
In some example embodiments, one or more steps 1002, 1004, 1006, 1008, 1010, 1012, 1014, 1016, 1018, 1020, and/or 1022 of flowchart 1000 may not be performed. Moreover, steps in addition to or in lieu of steps 1002, 1004, 1006, 1008, 1010, 1012, 1014, 1016, 1018, 1020, and/or 1022 may be performed.
It will be recognized that server 1100 may not include one or more of content request receipt module 1102, character generator 1104, surface generator 1106, light orientation selector 1108, character orientation selector 1110, projector module 1112, CAPTCHA provider 1114, rotation request determination module 1116, scene rotator 1118, proposed solution determination module 1120, correctness determination module 1122, access provider 1124, threshold module 1126, counter module 1128, and/or comparison module 1130. Furthermore, server 1100 may include modules in addition to or in lieu of content request receipt module 1102, character generator 1104, surface generator 1106, light orientation selector 1108, character orientation selector 1110, projector module 1112, CAPTCHA provider 1114, rotation request determination module 1116, scene rotator 1118, proposed solution determination module 1120, correctness determination module 1122, access provider 1124, threshold module 1126, counter module 1128, and/or comparison module 1130. Moreover, server 1100 may be implemented as one or more servers.
As shown in
At step 1204, the virtual 3D objects are randomly combined to generate the virtual 3D surface. In an example implementation, object combiner 1304 randomly combines the virtual 3D objects.
In accordance with some example embodiments, a user is given an opportunity to provide instruction(s) that enable a CAPTCHA generator (e.g., CAPTCHA generator 108) to rotate a virtual 3D scene that is included in a CAPTCHA. For instance, rotating the virtual 3D scene may facilitate identification of characters that are included in the virtual 3D scene. For example, as shown in
As shown in
In another example, a character 1612 of character string 1604 is hidden behind a portion 1614 of virtual 3D surface 1606. Accordingly, portion 1614 of virtual 3D surface 1606 obscures a portion of character 1612.
In yet another example, a character 1616 of character string 1604 is sheared at a boundary 1618 that defines an outer perimeter of CAPTCHA 1600. Character string 1604 may include characters that are beyond boundary 1618, though the scope of the example embodiments is not limited in this respect. For instance, characters of character string 1604 that are beyond boundary 1618 may be identifiable only if virtual 3D scene 1602 is rotated to bring those characters within the outer perimeter of CAPTCHA 1600 (e.g., to the left of boundary 1618). For instance, a user may rotate virtual 3D scene downward and/or to the left so that all characters of character string 1604 may be identified.
In accordance with other example embodiments, a user is not given an opportunity to provide instruction(s) that enable a CAPTCHA generator to rotate a virtual 3D scene that is included in a CAPTCHA. For example, as shown in
C. CAPTCHAs that Include Virtual 3D Objects
As shown in
At step 1804, a variable Y is set to equal one. In an example implementation, counter module 1904 sets the variable Y to equal one.
At step 1806, a determination is made whether at least one characteristic of a Yth virtual 3D object of the Z virtual 3D objects is to be modified. In an example implementation, modification determination module 1906 determines whether at least one characteristic of the Yth virtual 3D object is to be modified. If at least one characteristic of the Yth virtual 3D object is to be modified, flow continues to step 1808. Otherwise, flow continues to step 1810.
At step 1808, at least one characteristic of the Yth virtual 3D object is modified. For example, the Yth virtual 3D object may be twisted, rotated, sheared, curved, blurred, etc. In another example, the height, width, and/or length of the Yth virtual 3D object may be changed. In yet another example, characteristic(s) of the Yth virtual 3D object may be randomly modified, though the scope of the example embodiments is not limited in this respect. In accordance with this example, the characteristic(s) that are modified may be randomly selected from a predetermined set of characteristics. In an example implementation, characteristic modifier 1908 modifies the at least one characteristic of the Yth virtual 3D object.
At step 1810, the variable Y is incremented by one. In an example implementation, counter module 1904 increments the variable Y by one.
At step 1812, a determination is made whether Y=Z. In an example implementation, comparison module 1910 determines whether Y=Z. If Y=Z, flow continues to step 1814. Otherwise, flow returns to step 1806.
At step 1814, the Z virtual 3D objects are randomly combined to generate a virtual 3D structure. In an example implementation, object combiner 1912 randomly combines the Z virtual 3D objects to generate the virtual 3D structure.
In accordance with an example embodiment, randomly combining the Z virtual 3D objects includes obscuring at least a portion of a virtual 3D object by another virtual 3D object. It will be recognized that any number of virtual 3D objects may be partially or entirely obscured by any number of other virtual 3D objects in any manner.
At step 1816, an orientation of a virtual light source is selected from a plurality of orientations. For instance, the orientation of the virtual light source may be randomly selected from the plurality of orientations, though the scope of the example embodiments is not limited in this respect. In an example implementation, light orientation selector 1914 selects the orientation of the virtual light source.
At step 1818, the virtual light source is used to generate a shadow of a designated virtual 3D object of the Z virtual 3D objects. In an example implementation, shadow generator 1916 uses the virtual light source to generate the shadow of the designated virtual 3D object.
At step 1820, a CAPTCHA that includes the virtual 3D structure is provided to a user. For instance, the CAPTCHA may further include the shadow that the virtual light source is used to generated at step 1818. In an example implementation, CAPTCHA provider 1918 provides the CAPTCHA that includes the virtual 3D structure to the user.
At step 1822, a request is made that the user identify the designated virtual 3D object in the virtual 3D structure. In an example implementation, request module 1920 requests that the user identify the designated virtual 3D object in the virtual 3D structure.
In some example embodiments, one or more steps 1802, 1804, 1806, 1808, 1820, and/or 1822 of flowchart 1800 may not be performed. Moreover, steps in addition to or in lieu of steps 1802, 1804, 1806, 1808, 1820, and/or 1822 may be performed.
It will be recognized that server 1900 may not include one or more of object selector 1902, counter module 1904, modification determination module 1906, characteristic modifier 1908, comparison module 1910, object combiner 1912, light orientation selector 1914, shadow generator 1916, CAPTCHA provider 1918, and/or request module 1920. Furthermore, server 1900 may include modules in addition to or in lieu of object selector 1902, counter module 1904, modification determination module 1906, characteristic modifier 1908, comparison module 1910, object combiner 1912, light orientation selector 1914, shadow generator 1916, CAPTCHA provider 1918, and/or request module 1920. Moreover, server 1900 may be implemented as one or more servers.
It should be noted that CAPTCHA generator 108 of
CAPTCHA generator 108, counter module 502, character generator 504, distortion determination module 506, character distorter 508, attribution module 510, comparison module 512, CAPTCHA provider 514, restriction module 516, content request receipt module 1102, character generator 1104, surface generator 1106, light orientation selector 1108, character orientation selector 1110, projector module 1112, CAPTCHA provider 1114, rotation request determination module 1116, scene rotator 1118, proposed solution determination module 1120, correctness determination module 1122, access provider 1124, threshold module 1126, counter module 1128, comparison module 1130, object selector 1302, object combiner 1304, object selector 1902, counter module 1904, modification determination module 1906, characteristic modifier 1908, comparison module 1910, object combiner 1912, light orientation selector 1914, shadow generator 1916, CAPTCHA provider 1918, and request module 1920 may be implemented in hardware, software, firmware, or any combination thereof.
For example, CAPTCHA generator 108, counter module 502, character generator 504, distortion determination module 506, character distorter 508, attribution module 510, comparison module 512, CAPTCHA provider 514, restriction module 516, content request receipt module 1102, character generator 1104, surface generator 1106, light orientation selector 1108, character orientation selector 1110, projector module 1112, CAPTCHA provider 1114, rotation request determination module 1116, scene rotator 1118, proposed solution determination module 1120, correctness determination module 1122, access provider 1124, threshold module 1126, counter module 1128, comparison module 1130, object selector 1302, object combiner 1304, object selector 1902, counter module 1904, modification determination module 1906, characteristic modifier 1908, comparison module 1910, object combiner 1912, light orientation selector 1914, shadow generator 1916, CAPTCHA provider 1918, and/or request module 1920 may be implemented as computer program code configured to be executed in one or more processors.
In another example, CAPTCHA generator 108, counter module 502, character generator 504, distortion determination module 506, character distorter 508, attribution module 510, comparison module 512, CAPTCHA provider 514, restriction module 516, content request receipt module 1102, character generator 1104, surface generator 1106, light orientation selector 1108, character orientation selector 1110, projector module 1112, CAPTCHA provider 1114, rotation request determination module 1116, scene rotator 1118, proposed solution determination module 1120, correctness determination module 1122, access provider 1124, threshold module 1126, counter module 1128, comparison module 1130, object selector 1302, object combiner 1304, object selector 1902, counter module 1904, modification determination module 1906, characteristic modifier 1908, comparison module 1910, object combiner 1912, light orientation selector 1914, shadow generator 1916, CAPTCHA provider 1918, and/or request module 1920 may be implemented as hardware logic/electrical circuitry.
In accordance with an example embodiment, a CAPTCHA generator (e.g., CAPTCHA generator 108) generates a CAPTCHA when a user attempts to access content (e.g., when a Web page is rendered). In accordance with another example embodiment, a CAPTCHA generator generates a CAPTCHA before a user attempts to access content. For instance, the CAPTCHA may be generated when usage of a Web site is relatively low. In accordance with this example embodiment, the CAPTCHA generator may store the CAPTCHA in a store (e.g., database) and cross-reference the CAPTCHA with an indicator that specifies a solution for the CAPTCHA. For instance, the indicator may specify a string of characters, a designated virtual 3D object, etc. In further accordance with this example embodiment, the CAPTCHA generator may retrieve the CAPTCHA to be provided to a user when the user attempts to access the content (e.g., when usage of the Web site is relatively high).
The embodiments described herein, including systems, methods/processes, and/or apparatuses, may be implemented using well known servers/computers, such as computer 2000 shown in
Computer 2000 can be any commercially available and well known computer capable of performing the functions described herein, such as computers available from International Business Machines, Apple, Sun, HP, Dell, Cray, etc. Computer 2000 may be any type of computer, including a desktop computer, a server, etc.
As shown in
Computer 2000 also includes a primary or main memory 2008, such as a random access memory (RAM). Main memory has stored therein control logic 2024A (computer software), and data.
Computer 2000 also includes one or more secondary storage devices 2010. Secondary storage devices 2010 include, for example, a hard disk drive 2012 and/or a removable storage device or drive 2014, as well as other types of storage devices, such as memory cards and memory sticks. For instance, computer 2000 may include an industry standard interface, such as a universal serial bus (USB) interface for interfacing with devices such as a memory stick. Removable storage drive 2014 represents a floppy disk drive, a magnetic tape drive, a compact disk drive, an optical storage device, tape backup, etc.
Removable storage drive 2014 interacts with a removable storage unit 2016. Removable storage unit 2016 includes a computer useable or readable storage medium 2018 having stored therein computer software 2024B (control logic) and/or data. Removable storage unit 2016 represents a floppy disk, magnetic tape, compact disc (CD), digital versatile disc (DVD), Blue-ray disc, optical storage disk, memory stick, memory card, or any other computer data storage device. Removable storage drive 2014 reads from and/or writes to removable storage unit 2016 in a well known manner.
Computer 2000 also includes input/output/display devices 2004, such as monitors, keyboards, pointing devices, etc.
Computer 2000 further includes a communication or network interface 2020. Communication interface 2020 enables computer 2000 to communicate with remote devices. For example, communication interface 2020 allows computer 2000 to communicate over communication networks or mediums 2022 (representing a form of a computer useable or readable medium), such as local area networks (LANs), wide area networks (WANs), the Internet, etc. Network interface 2020 may interface with remote sites or networks via wired or wireless connections. Examples of communication interface 2022 include but are not limited to a modem, a network interface card (e.g., an Ethernet card), a communication port, a Personal Computer Memory Card International Association (PCMCIA) card, etc.
Control logic 2024C may be transmitted to and from computer 2000 via the communication medium 2022.
Any apparatus or manufacture comprising a computer useable or readable medium having control logic (software) stored therein is referred to herein as a computer program product or program storage device. This includes, but is not limited to, computer 2000, main memory 2008, secondary storage devices 2010, and removable storage unit 2016. Such computer program products, having control logic stored therein that, when executed by one or more data processing devices, cause such data processing devices to operate as described herein, represent embodiments of the invention.
For example, each of the elements of example servers 106A-106N, including CAPTCHA generator 108 depicted in
While various embodiments have been described above, it should be understood that they have been presented by way of example only, and not limitation. It will be apparent to persons skilled in the relevant art(s) that various changes in form and details can be made therein without departing from the spirit and scope of the invention. Thus, the breadth and scope of the present invention should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.