# Patent

## Title
System, method and computer program product for reconstructing data received by a computer in a manner that is independent of the computer

## Abstract

A data reconstruction system, method and computer program product are provided. In use, one of a plurality of computers receiving data over a network is identified. In addition, the data received by the computer is reconstructed in a manner that is independent of the computer.

## Background
RELATED APPLICATION
This patent application is a continuation (and claims the benefit of priority under 35 U.S.C. §120) of U.S. application Ser. No. 13/627,801, filed Sep. 26, 2012, entitled, “SYSTEM, METHOD AND COMPUTER PROGRAM PRODUCT FOR RECONSTRUCTING DATA RECEIVED BY A COMPUTER IN A MANNER THAT IS INDEPENDENT OF THE COMPUTER,” which is a continuation (and claims the benefit of priority under 35 U.S.C. §120) of U.S. application Ser. No. 11/564,727, filed Nov. 29, 2006, issued as U.S. Pat. No. 8,312,075 on Nov. 13, 2012, entitled, “SYSTEM, METHOD AND COMPUTER PROGRAM PRODUCT FOR RECONSTRUCTING DATA RECEIVED BY A COMPUTER IN A MANNER THAT IS INDEPENDENT OF THE COMPUTER.” The disclosures of the prior applications are considered part of (and are incorporated by reference in) the disclosure of this application.


FIELD OF THE INVENTION
the present invention relates to reconstructing data, and more particularly to reconstructing data received by computers.
BACKGROUND
Traditionally, monitoring data accessed over a network has been performed utilizing agents. Such agents have enabled the tracking of data sent and/or received via the network. However, in such systems, these agents must be installed in association with a computer, in order for such monitoring to take place. Without the use of such agents, monitoring may, in some systems, be limited to the identification of Uniform Resource Locators (URLs) associated with data being received by the computer, etc. Thus, since web pages often include advertisements, links to other web pages, etc., it is sometimes difficult to ascertain the actual data being accessed, based on such URLs.
There is thus a need for overcoming these and/or other problems associated with the prior art.
SUMMARY
A data reconstruction system, method and computer program product are provided. In use, one of a plurality of computers receiving data over a network is identified. In addition, the data received by the computer is reconstructed in a manner that is independent of the computer.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 illustrates a network architecture accordance with one embodiment.
FIG. 2 shows a representative hardware environment, that may be associated with the servers aid/or clients of FIG. 1, in accordance with one embodiment.
FIG. 3 shows a method for reconstructing data received by a computer in a manner that is independent of the computer, in accordance with one embodiment.
FIG. 4 shows a method for adding a user to a user list, in accordance with another embodiment.
FIGS. 5A-B show a method for reconstructing a web page received by a user selected from a user list, in accordance with yet another embodiment.
FIG. 6 shows a system for reconstructing data received by a computer in a manner that is independent of the computer, in accordance with still yet another embodiment.
FIG. 7 shows a graphical user interface (GUI) for displaying reconstructed data, in accordance with another embodiment.



DETAILED DESCRIPTION
FIG. 1 illustrates a network architecture 100, in accordance with one embodiment. As shown, a plurality of networks 102 is provided, in the context of the present network architecture 100, the networks 102 may each take any form including, but not limited to a local area network (LAN), a wireless network, a wide area network (WAN) such as the Internet, peer-to-peer network, etc.
Coupled to the networks 102 are servers 104 which are capable of communicating over the networks 102. Also coupled to the networks 102 and the servers 104 is a plurality of clients 106. Such servers 104 and/or clients 106 may each include a desktop computer, lap-top computer, hand-held computer, mobile phone, personal digital assistant (PDA), peripheral (e.g., printer, etc.), any component of a computer/device, and/or any other type of logic, for that mater. In order to facilitate communication among the networks 102, at least one gateway 108 is optionally coupled therebetween.
FIG. 2 shows a representative hardware environment that may be associated with the servers 104 and/or clients 106 of FIG. 1, in accordance with one embodiment. Such figure illustrates a typical hardware configuration of a workstation in accordance with one embodiment having a central processing unit 210, such as a microprocessor, and a number of other units interconnected via a system bus 2.12.
The workstation shown in FIG. 2 includes a Random Access Memory (RAM) 214, Read Only Memory (ROM) 216, an I/O adapter 218 for connecting peripheral devices such as disk storage units 220 to the bus 212, a user interface adapter 222 for connecting a keyboard 224, a mouse 226, a speaker 228, a microphone 232, and/or other user interface devices such as a touch screen (not shown) to the bus 212, communication adapter 234 for connecting the workstation to a communication network 235 (e.g., a data processing network) and a display adapter 236 for connecting the bus 212 to a display device 238.
The workstation may have resident thereon any desired operating system. It will be appreciated that an embodiment may also be implemented on platforms and operating systems other than those mentioned. One embodiment may be written using JAVA, C, and/or C++ language, or other programming languages, along with an object oriented programming methodology. Object oriented programming (OOP) has become increasingly used to develop complex applications.
Of course, the various embodiments set forth herein may be implemented utilizing hardware, software, or any desired combination thereof. For that matter, any type of logic may be utilized which is capable of implementing the various functionality set forth herein.
FIG. 3 shows a method 300 for reconstructing data received by a computer in a manner that is independent of the computer, in accordance with one embodiment. As an option, the method 300 may be implemented in the context of the architecture and environment of FIGS. 1 and/or 2. Of course, however, the method 300 may be carried out in any desired environment.
As shown in operation 302, one of a plurality of computers receiving data over a network is identified. In one embodiment, the network may include the Internet, but, of course, may also include any of the networks described above with respect to FIG. 1. In addition, the plurality of computers may include any devices capable of receiving data over a network. Just by way of example, the computers may include any of the servers and/or clients described above with respect to FIGS. 1 and/or 2.
Further, in the context of the present description, the data may include any data capable of being received over a network. In one optional embodiment, the data may include data traffic received over the network. Such traffic may include data packets, for example.
In another optional embodiment, the data may be associated with a web page. For example, the data may include computer code [e.g. hypertext markup language (HTML), scripts, Java, ActiveX, etc.] included within the web page. Thus, the data may optionally include functions. As another example, the data may include images included within the web page. In still other embodiments, the data may include electronic messages, application-specific data, and/or any other data, for that matter.
Moreover, in one embodiment, the computer may be identified based on a selection of the computer from a list of computers. Such list may optionally be displayed via a graphical user interface (GUI). For example, the selection may include a user selection.
In another embodiment, the computer may be identified utilizing a cookie. For example, a cookie may exist which is associated with the computer. Accordingly, identifying, the computer may include identifying the associated cookie. Of course, however, it should be noted that the computer may be identified in any desired manner.
In addition, the data received by the computer is reconstructed in a manner that is independent of the computer, as shown in operation 304. In one embodiment, the data may be reconstructed by generating an image associated with the data received by the computer. Just by way of example, a browser image received by the computer may be reconstructed. Furthermore, such browser image may be reconstructed utilizing computer code (embodying functions, etc.) in association with the data.
In another embodiment, the data may be reconstructed utilizing a copy of the data received by the computer. In particular, the copy of the data may be reconstructed. It should be noted, however, that the data may be reconstructed in any desired manner insofar as it is independent, of the computer.
Just by way of example, in one embodiment, the data may be reconstructed independent, of the computer by reconstructing the data utilizing a device that is separate from the computer. For example, such device may include another computer (e.g. administrator computer, etc.). Of course, such separate device may, in various embodiments, include any of the servers and/or clients described above with respect to FIGS. 1 and/or 2, for example. In another optional embodiment, the data may be reconstructed without necessarily utilizing an agent installed on the computer.
More illustrative information will now be set forth regarding various optional architectures and features of different embodiments with which the foregoing framework may or may not be implemented, per the desires of the user. It should be strongly noted that the following information is set forth for illustrative purposes and should not be construed as limiting in any manner. Any of the following features may be optionally incorporated with or without the exclusion of other features described.
FIG. 4 shows a method 400 for adding a user to a user list, in accordance with another embodiment. As an option, the method 400 may be implemented in the context of the architecture and environment of FIGS. 1-3. Of course, however, the method 400 may be carried out in any desired environment. It should also be noted that the aforementioned definitions may apply during the present description.
As shown in operation 402, network traffic is monitored. The network traffic may be monitored utilizing a device located on an associated network, for example. In one optional embodiment, such device may include a device capable of filtering the network traffic. In another embodiment, the device may include a secure content management device and/or any other device equipped with security-related functionality. In addition, the network traffic may include any data received by one or more computers located on the network.
Optionally, the information associated with the monitored network traffic may be recorded and/or modified (not shown). For example in one embodiment an administrator may define a pop-up text box that includes a message such that when the user next requests a web page the pop-up box is included in and/or with the returned data (e.g. web page). In this way, the administrator may cause a message to be displayed to the user.
In another embodiment, a rule may define a string associated with network traffic to be replaced with a string configured by the administrator. In this way, if network traffic presented to the user includes the string, then such string may be replaced with the string configured by the administrator. Of course it should be noted that any information associated with the monitored network traffic may be modified in any desired manner.
It is then determined whether a web page has been requested, as shown in operation 403. The request may include any request made by a computer located on the network. For example, the web page may be requested utilizing a URL associated therewith. As another example, the web page may be requested utilizing a browser installed on the computer.
In one embodiment, a user may be associated with the computer utilized in requesting the web page. For example, the computer may be assigned an identifier representative of the user. If it is determined that a web page has been requested, the user associated with the computer that requested the web page is added to a user list. Note operation 404. It is also contemplated that multiple users may be associated with the computer, and a user currently logged on is added to the list in operation 404.
In various embodiments, the user may be associated with user information. For example, such user information may include a username, contact information, etc. In this way, the user may be added to the user list by adding at least a portion of the user information (e.g. username, etc.) to the user list.
Of course, the user list may include any data structure capable of storing users that have requested web pages. In one embodiment, the user list may only include information associated with users that have requested a web page within a predetermined amount of time (e.g. 5 minutes, etc.). In this way, it is possible to ensure that only users with a current connection to the network are included in the user list.
In different embodiments, the user may be identified in any desired manner for adding such user to the user list. In one optional embodiment, the user may be identified utilizing cookies. Thus, a cookie associated with the requested web page may be identified, such that a user associated therewith may be identified based on the cookie. If, however, a cookie is not associated with the requested web page, a browser utilized by the user to request the web page may be redirected from the requested web page and required to provide authentication in order to be assigned a cookie. The user's browser may then respond with a cookie that identifies the user, and the user may be directed to the requested web page.
FIGS. 5A-B show a method 500 for reconstructing a web page received by a user selected from a user list, in accordance with yet another embodiment. As an option, the method 500 may be implemented in the context of the architecture and environment of FIGS. 1-4. Of course, however, the method 500 may be carried out in any desired environment. It should also be noted that the aforementioned definitions may apply during the present description.
As shown in operation 502, a user list is displayed. The user list may be displayed at another computer that is separate from the computer from which a web page was requested. For example, the user list may be displayed at an administrator computer.
Moreover, the user list may be displayed utilizing a GUI. It is then determined whether a user has been selected from the user list, as shown in decision 504. In this way, an administrator and/or any other user that is different than at least one user in the user list may select a user from the user list.
Based on such selection, an application is started. Note operation 506. Such application may include any application (e.g. program, etc.) capable or receiving a copy of network traffic. As another option, the application may be started on the other computer that is separate from the computer associated with the selected user, such as that described above.
As shown in FIG. 5B, and particularly operation 508, a copy of network traffic is received utilizing the application. In one embodiment, the network traffic may include any network traffic received by the selected user. Thus, the network traffic may include web pages received (e.g. requested, etc.) by the selected user, etc.
In another embodiment, the network traffic may include any network traffic received by the selected user subsequent to a particular requested web page that was received by such user. Specifically, such particular requested web page may include the requested web page that initiated placing the user on the user list, as described above with respect to operation 404 in FIG. 4. In still yet another embodiment, only network traffic received by the selected user subsequent to the selection of the user (operation 504) may be utilized.
As shown in operation 510, the copy of the network traffic may optionally be stored in a log file. Thus, the copy of the network traffic may be logged in response to the receipt thereof. In one embodiment, the copy of the network traffic may be stored on the aforementioned computer that is separate from the computer on which the web page was requested.
Further, reconstruction of a browser image associated with the network traffic is started, as shown in operation 512. Optionally, the browser image may be associated with at least a portion of the network traffic received by the selected user (e.g. a single web page requested by the selected user, etc.). Moreover, the browser image may be with a replica of a browser image displayed to the selected user. In addition, such reconstruction may be performed utilizing the application described above, for example.
It is then determined whether functions within the network traffic are identified, as shown in decision 514. If no functions are identified within the network traffic, the browser image is displayed based on such network traffic (operation 522). However, if it is determined that there are functions within the network traffic, such functions are executed within a sandbox, as shown in operation 516. The sandbox may include any portion of memory, etc. capable of allowing the functions to execute, without the ability to harm or negatively affect the associated computer. Again, the sandbox may be located on the abovementioned computer that is separate from the user, as described above.
Next, results of the execution of the functions may be identified. Specifically, it is then determined whether an error has occurred in association with any of the executed functions, as shown in operation 518. Such error may occur, for example, if the function is unable to run correctly. For instance, if the computer with the sandbox does not have an application, capacity, etc. required for handling a portion of the network traffic, such an error may occur. The error may also occur for predefined conditions. In another embodiment, an error may occur if the function requires user input. Optionally, such predefined conditions may be user-configured.
In one exemplary embodiment, a function associated with a web page may not run correctly if information required by the function is stored in a cache of the computer associated with the selected user. Such information may include, for example, applications, jobs, etc. Thus, the function may be unable to run in the sandbox, since such sandbox is independent of, and therefore unable to access, information stored in the selected user's cache.
If it is determined that no error has occurred with respect to at least a portion of the functions, such functions that did not generate errors are utilized in reconstructing, the browser image. In this way, functions that will not create an error are allowed to be included in such reconstructed browser image. Further, the reconstructed browser image is displayed, as shown in operation 522. Again, the reconstructed browser image may optionally be displayed utilizing the aforementioned computer that is separate from the selected user's computer, for example. Thus, as described above, the reconstructed browser image may be associated with (e.g. mimic at least in part, etc.) a browser image displayed on the user's computer.
The reconstructed browser image may additionally be stored in a log file, as shown in operation 524. Such log file may include any data structure capable of storing the reconstructed browser image. Accordingly, the reconstructed browser image may be subsequently displayed during any number of different instances, as desired, utilizing the log file.
However, if it is determined in decision 518 that an error has occurred, any functions associated with such error are displayed in a window that is separate from a window in which the reconstructed browser image is displayed. Note operation 520. As another option, such functions associated with an error may be displayed in a separate pane of a window in which the reconstructed browser is displayed. One example of such a window will be described in more detail with respect to FIG. 7.
Still yet, the displayed functions associated with an error may be selectable. Selection of a function may therefore allow details of such function to be displayed, such as for example, computer code associated with such function. In this way, an administrator and/or any other user viewing the details of the function may generate data (e.g. other code, download a required application, etc.) in order to enable the function to execute without error. As an option, any previously error-ridden functions that have been subsequently enabled to execute without generating an error may then be included in the reconstructed browser image (not shown).
Thus, network traffic received by a user's computer may be copied and reconstructed in a manner that is independent of such user's computer. Moreover, the reconstruction may be based on functions that are available (e.g. capable of executing without generating an error, etc.). In this way, the network traffic may be reconstructed without creating any errors associated therewith.
In one exemplary embodiment, the network traffic may be reconstructed in the context of providing secure content management. For example, network traffic associated with a user may be reconstructed if it is determined that the user is browsing in a suspicious manner. In particular, such suspicion may optionally be based on network traffic that matches predefined criteria (e.g. a predetermined web page is requested, etc.). Accordingly, in response to the aforementioned trigger, the user's browsing may be verified visually utilizing the reconstructed network traffic.
FIG. 6 shows a system 600 for reconstructing data received by a computer in a manner that is independent of the computer, in accordance with yet another embodiment. As an option, the system 600 may be implemented in the context of the architecture and environment of FIGS. 1-5B. Of course, however, the system 600 may be carried out in any desired environment. It should also be noted that the aforementioned definitions may apply during the present description.
As shown, a user computer 602 may receive network traffic 604 via a device 606. Of course, it should be noted that a plurality of user computers may be connected to the device, for receiving network traffic. In one embodiment, the device 606 may include any device capable of being located on a network.
In another embodiment, the device 606 may be capable of filtering the network traffic 604. For example, the device 606 may include a computer, a firewall, etc. As shown, the device 606 ma be separate from the user computer 602.
The device 606 may therefore copy network traffic 604 received by the user computer 602. The device 606 may then transmit the copy of such network traffic 604 to an administrator computer 608. As shown, the administrator computer 608 may be separate from the user computer 602.
The administrator computer 608 may include an application 610 for reconstructing the copy of the network traffic 604. In this way, the administrator computer 608 may display the reconstructed copy of the network traffic 604 utilizing a reconstructed display 614, as described below. Further, the administrator computer 608 may include a sandbox 612 for executing functions associated with the copy of the network traffic 604.
In one embodiment, such functions may be executed in the sandbox 612 prior to reconstructing such functions as a part of the reconstruction of the copy of the network traffic 604. Thus, any results of the execution of the functions in the sandbox 612 may be utilized for determining whether such functions can be reconstructed. Once the application 610 reconstructs the copy of the network traffic 604, including any available (e.g. errorless, etc.) functions associated therewith, such reconstructed copy of the network traffic 604 is displayed utilizing the reconstructed display 614 of the administrator computer 608.
Furthermore, any errors 616 generated from the execution of functions within the sandbox 612 may be displayed separately from the reconstructed display 614. Thus, information associated with functions that generate errors may be displayed, while not including such functions within the reconstructed network traffic. As another option, the functions that generate errors may be displayed, such that they may be edited e.g. fixed, etc.) by the administrator. In this way, the functions may be enabled, such that errors are not generated, and may therefore optionally be included within the reconstructed network traffic.
In another embodiment, the reconstruction of the copy of the network traffic 604 may be performed on the device 606 (not shown). In addition, the identification of errors and the decision as to whether to include associated functions in the reconstructed network traffic 604 may also be performed on the device 606. The device may then transmit any reconstructed network traffic to any desired computer that is separate from the user computer 602, such that any such computer may display the reconstructed network traffic 604. In such web-based embodiment, the administrator may access the aforementioned functionality from any remote terminal.
FIG. 7 shows a GUI 700 for displaying reconstructed data, in accordance with still yet another embodiment. As an option, the GUI 700 may be implemented in the context of the architecture and environment of FIGS. 1-6. Of course, however, the GUI 700 may be used in any desired environment. It should also be noted that the aforementioned definitions may apply during the present description.
As shown, the GUI 700 may be utilized for displaying reconstructed data (e.g. network traffic, etc.) that has been received by a user. For example, the GUI 700 may include a window. Further, such window may include a plurality of panes.
In particular, the GUI 700 may include a first pane 702 for displaying the reconstructed data. Thus, for example, the GUI 700 may be utilized for displaying a browser image that, at least in part, mimics a browser image presented to the user. In addition, the GUI 700 may include a second pane 704 for displaying functions associated with the reconstructed browser.
In one embodiment, the displayed functions may include functions which are not included in the reconstructed browser, but which are included in the associated data that has been received by the user. For example, such displayed functions may include functions that generate at least one error when executed by a computer other than that associated with the user. In this way, the reconstructed browser may be displayed without generating any errors, while still presenting a complete view of the data received by the user.
As also shown, functions within the second pane 704 may optionally be selectable. In one embodiment, selection of a function may result in the display of a second window 706 that is separate from the GUI 700 that displays the reconstructed data. The second window 706 may be utilized for displaying detailed information associated with the selected function.
For example, such detailed information may include a name of the function, computer code utilized by the function, etc. As an option, the second window 706 may allow an administrator and/or any other user viewing the second window 706 to edit the detailed information. Thus, in one embodiment, computer code associated with a selected function may be edited for enabling such computer code to execute without generating an error. In another embodiment, an option to re-attempt to reconstruct the data may be provided, such that the network traffic may be reconstructed with the enabled function.
While various embodiments have been described above, it should be understood that they have been presented by way of example only, and not limitation. Thus, the breadth and scope of a preferred embodiment 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.

## Claims

1. At least one non-transitory computer-readable medium comprising one or more instructions that when executed by a processor, cause the processor to:
receive a copy of data on a network device, wherein the network device is separate from a computer that receives the data over a network;
reconstruct the copy of the data into reconstructed data, the reconstructing the copy of the data including:
identifying one or more functions within the copy of the data; and
executing the one or more functions within a sandbox that operates outside the computer; and

provide information to an administrator device that is separate from the computer, the information comprising at least a portion of the reconstructed data and an indication of at least one function that returns an error in response to being executed within the sandbox.

2. The at least one computer-readable medium of claim 1, wherein the computer is a mobile phone.

3. The at least one computer-readable medium of claim 1, wherein the administrator device and the network device are the same.

4. The at least one computer-readable medium of claim 1, wherein the portion of the reconstructed data does not include particular reconstructed data generated from the at least one function that generated an error when executed in the sandbox.

5. The at least one computer-readable medium of claim 1, wherein the portion of the reconstructed data includes particular reconstructed data generated from a certain function that is errorless when executed in the sandbox.

6. The at least one computer-readable medium of claim 1, wherein the portion of the reconstructed data is a browser image.

7. The at least one computer-readable medium of claim 1, wherein the one or more instructions when executed by the processor, further cause the processor to:
display the portion of the reconstructed data on a graphical user interface of the administrator device.

8. The at least one computer-readable medium of claim 1, wherein the one or more instructions when executed by the processor, further cause the processor to:
display the at least one function on a graphical user interface of the administrator device.

9. The at least one computer-readable medium of claim 8, wherein the at least one function is selectable to generate other data associated with the at least one function to enable errorless execution of the at least one function within the sandbox.

10. The at least one computer-readable medium of claim 9, wherein the one or more instructions when executed by the processor, further cause the processor to:
include, in the portion of the reconstructed data, particular reconstructed data generated from the at least one function when the other data is generated to enable errorless execution of the at least one function.

11. A method, comprising:
receiving a copy of data on a network device, wherein the network device is separate from a computer that receives the data over a network;
reconstructing the copy of the data into reconstructed data, the reconstructing the copy of the data including:
identifying one or more functions within the copy of the data; and
executing the one or more functions within a sandbox that operates outside the computer; and

providing information to an administrator device that is separate from the computer, the information comprising at least a portion of the reconstructed data and an indication of at least one function that returns an error in response to being executed within the sandbox.

12. The method of claim 11, wherein the administrator device and the network device are the same.

13. The method of claim 11, wherein the portion of the reconstructed data does not include particular reconstructed data generated from the at least one function that generated an error when executed in the sandbox.

14. A system, comprising:
a processor and a memory, wherein the system is configured to:
receive a copy of data on a network device, wherein the network device is separate from a computer that receives the data over a network;
reconstruct the copy of the data into reconstructed data, the reconstructing the copy of the data including:
identifying one or more functions within the copy of the data; and
executing the one or more functions within a sandbox that operates outside the computer; and

provide information to an administrator device that is separate from the computer, the information comprising at least a portion of the reconstructed data and an indication of at least one function that returns an error in response to being executed within the sandbox.

15. The system of claim 14, wherein the administrator device and the network device are the same.

16. The system of claim 14, wherein the at least one function returns an error when executed in the sandbox based on at least one pre-defined condition.

17. The system of claim 14, wherein the at least one function returns an error when executed in the sandbox if the at least one function requires certain information from a cache on the computer that receives the data over a network.

18. The system of claim 14, wherein the system is further configured to:
display the at least one function on a graphical user interface of the administrator device.

19. The system of claim 18, wherein the at least one function is selectable to generate other data associated with the at least one function to enable errorless execution of the at least one function within the sandbox.

20. The system of claim 19, wherein the system is further configured to:
include, in the portion of the reconstructed data, particular reconstructed data generated from the at least one function when the other data is generated to enable errorless execution of the at least one function.