Device and method for data interception and updating
Claim Score by NHIP
Abstract
Apparatus for intercepting data communicated between a sender and a receiver, and conditionally altering that data, the apparatus comprising: an interception unit, capable of intercepting said data, setting information for storing predetermined device settings, access functionality, associated with said interception unit operable to access information within said intercepted data, and a search and replace unit, associated with both said interception unit and said access functionality, for conditionally altering the intercepted data in response to said accessed information and said device settings. The device is useful for dynamically updating web pages and the like and said updating may be made conditional on communication control information such as the identity of an intended recipient as well as data content.

Term
Term ended
Projected expiry passed 10 July 2021, 5.2 years ago.
- Priority
- Filed
- Published
- Projected expiry
- Today
62 claims: 4 independent, 58 dependent
- 1Apparatus for intercepting data communicated between a sender and a receiver, and conditionally altering that data, the apparatus comprising:(a) an interception unit, capable of intercepting said communication, (b) a memory for storing predetermined device settings, (c) access functionality, associated with said interception unit, operable to access data with said intercepted communication, and (d) a search and replace unit, associated with both said interception unit and said access functionality, being operable to conditionally alter the intercepted communication in response to said accessed data and said device settings.
- 42A Server on a network with (a) functionality to intercept data being sent, (b) memory for storing, predetermined settings, (c) access functionality associated with said interception functionality operable to access data within said intercepted communication (d) a search and replace unit, associated with both said interception unit and said access functionality being operable to conditionally alter the intercepted communication in response to said access data settings.
- 43A data carrier carrying data usable in combination with a general purpose computer to provide (a) functionality to intercept data being sent, (b) memory for storing predetermined settings, (c) access functionality associated with said interception functionality operable to access data within said intercepted communication (d) a search and replace unit, associated with both said interception unit and said access functionality being operable to conditionally alter the intercepted communication in response to said access data and settings.
- 44Broadest claimClaim Score 91, very broad(NHIP)A method for intercepting communications between a sender and a receiver, and conditionally altering the intercepted data comprising:(a)intercepting the communication, (b)accessing data from within the intercepted communication, (c)searching through and conditionally altering the communication and, (d)forwarding said conditionally altered data onto the intended receiver.
Independent claims4
328 paragraphs in 6 sections, as filed
RELATIONSHIP TO EXISTING APPLICATIONS
[0001] This application claims priority from:
[0002] U.S. provisional application No. 60/216,952 and Filed Jul. 10, 2000
[0003] U.S. provisional application No. 60/269,680, Filed Feb. 20, 2001
FIELD OF THE INVENTION
[0004] The present invention relates to systems and methods of dynamically updating data sent from a server to a client, specifically data sent over a network.
BACKGROUND OF THE INVENTION
[0005] The Internet has created a demand for customized, up-to-date, content.
[0006] Advertisers want specific users to get their advertisements. Corporations have grown whose business is to deliver commercial advertisements to users who are most likely to want the products advertised. These corporations compile huge data repositories of users' browsing habits, and based on those habits, target particular commercial campaigning at those users. These companies are paid by advertisers, and give a percentage of the advertising revenue to the site serving the page containing the advertisement. In order for centralized advertising to work the site serving the page containing the advertisement must have references to the advertising serving company. These references must be maintained. If the content-server wishes to use a different advertisement company, or not use any advertisement company but sell their own space, their web sites have to be manually updated.
[0007] Further, banner advertisements are working less and less. Typical “click through” rates on advertisements are low and getting lower as banner advertisements are commonly ignored. Companies are moving away from the once-common banner advertisement, and replacing them with larger ads appearing more prominently in the content.
[0008] Free ISP's deliver internet content in exchange for some of the users screen space, on which they place advertisements. These ISP's are paid by companies who advertise products on the user's screen space. Users generally ignore this space, rarely “clicking through” on advertisements.
[0009] Web hosts create interconnecting pages that have many links. Objects within those sites move around as sites change, creating the common phenomenon of broken links. Whichever a foreign object changes its location, references must be changed. This can be time consuming and expensive for the site owner. Dynamically generated pages help alleviate this problem, by allowing a server to generate pages on the fly, and to generate the links on the fly. In well-constructed dynamically generated pages the links may be a reference to a variable, and changing that variable only once will change all the links on that site. Dynamically-generated pages do nothing to help with the millions of sites that have already be created, nor do they help any sites that are being created as static HTML pages, or that are written with the links hard-coded into the page.
[0010] Many sites wish to tailor their content to their individual users. These sites compile data stores of their users, tracking where the user goes within their site. This data is used to create a site that is more tailored to a user's requirements. A site cannot start generating individualized content until a user has visited the site repeatedly. When a user first comes to the site, that user is served a generic page. In order for a site to track a user to generate these individualized sites, the site either has to force the user to log in, which many users are reluctant to do, place cookies on a users machine, which many users don't allow or may erase regularly, or try to track the user by IP addresses, which can be meaningless as many users do not have fixed IP addresses.
[0011] ISP's have access to a users surfing habits, but do not give that information out to site owners. Users are becoming more and more conscious and concerned about their privacy, and do not want their (the users) ISP's divulging information about them (the user).
[0012] A means is therefore needed of automatically updating Internet content. Likewise a means is required of providing personalized content updating, advantageously without providing personal information to the content provider.
SUMMARY OF THE INVENTION
[0013] Embodiments of the present invention thus provide a device that can intercept data transmitted from one source to another, alter that data based on: who the sender of that data is, who the receiver of that data is, what the data is, and information held in a data store. The device can be a hardware or software device, and can reside at any of a number of locations, from the computer serving content, to the computer receiving content, and including various computers in between these two. The device can intercept and alter data whether that data is sent all at once, or in multiple distinct packets which the device could collect, compile, alter, and sent on.
[0014] According to a first aspect of the present invention there is provided apparatus for intercepting data communicated between a sender and a receiver, and conditionally altering that data, the apparatus comprising:
[0015] (a) an interception unit, capable of intercepting the communication,
[0016] (b) a memory for storing predetermined device settings,
[0017] (c) access functionality, associated with the interception unit, operable to access data within the intercepted communication, and
[0018] (d) a search and replace unit, associated with both the interception unit and the access functionality, being operable to conditionally alter the intercepted communication in response to the accessed data and the device settings.
[0019] Preferably, the access functionality is operable to access a selection from the group consisting of:
[0020] (a)sender identification
[0021] (b)information about the sender
[0022] (c)receiver identification
[0023] (d)information about the receiver, and
[0024] (e)data type identification.
[0025] Preferably, the settings include any one of a group comprising:
[0026] (a)information about data types the apparatus may intercept,
[0027] (b)users for whom data should be changed.
[0028] (c)data to be changed, and
[0029] (d)at least one way in which given data is to be changed for at least one user.
[0030] Preferably, the interception unit is connectable to intercept data from a computer network.
[0031] Preferably, the sender of data and receiver of the data are respectively remotely located.
[0032] Preferably, the computer network is a packet based network.
[0033] Preferably, the network is a network selected from the group consisting of a
[0034] (a) TCP/IP based network
[0035] (b) UDP based transmission
[0036] (c) ICMP based transmission
[0037] (d) IGMP based transmission
[0038] (e) TCP based transmission
[0039] (f) mobile device based network
[0040] (g) Ipv6 based network
[0041] (h) Ipv4 based network
[0042] (i) SMP based network.
[0043] Preferably, the apparatus further comprises a message assembler operable to assemble complete messages from assorted packets.
[0044] Preferably, the interception unit is locatable on a sending computer.
[0045] Preferably, the search and replace unit is operable to determine a structure of input data and to carry out the alteration within the framework of the determined structure.
[0046] Preferably, the structure is a text data structure.
[0047] Preferably, the structure defines content text, and tag data.
[0048] Preferably, the search and replace unit is operable to selectively do one of adding, altering or deleting data found in a selection from data in and around at least one of the group consisting of:
[0049] (a) the text
[0050] (b) and tags.
[0051] Preferably, the structure is one of a group consisting of:
[0052] (a) the SGML format
[0053] (b) the HTML format
[0054] (c) the XML format
[0055] (d) the XHTML format
[0056] (e) the WAP format, and
[0057] (f) SMTP.
[0058] Preferably, the search and replace unit is operable to find a selection from the group consisting of words and tags, and is further operable to do at least one of adding data, deleting data, and altering data that is part of the group of data in and data around that selection.
[0059] Preferably, the apparatus is capable of selectively doing at least one of adding, removing and altering data around and in the selection, wherein that data consists of at least one of the group consisting of:
[0060] (a)JavaScript
[0061] (b)VB Script
[0062] (c)Ecma Script
[0063] (d)links
[0064] (e)color
[0065] (g)images
[0066] (h)sounds
[0067] (j)fonts
[0068] (k)Flash
[0069] (l)tags
[0070] (m)pop-up menus
[0071] (n)pop-up windows.
[0072] Preferably, the structured data is selected from the group consisting of
[0073] (a) image data,
[0074] (b) sound data, and
[0075] (c) multimedia data.
[0076] Preferably, the data alteration consists of altering a selection from the group consisting of:
[0077] (a) the resolution of the data and
[0078] (b) the compression of the data.
[0079] Preferably, the interception unit is locatable on a receiving computer.
[0080] Preferably, the search and replace unit is operable to determine a structure of input data and to carry out a replacement within the framework of the determined structure.
[0081] Preferably, the structure is a text data structure.
[0082] Preferably, the structure defines content text, find tag data.
[0083] Preferably, the search and replace unit is operable to selectively do one of adding, altering or deleting data found in a selection from data in and around a selection from the group consisting of:
[0084] (a) the text
[0085] (b) and tags
[0086] Preferably, the structure is selected from the group comprising:
[0087] (a) the SGML format
[0088] (b) the HTML format
[0089] (c) the XML format
[0090] (d) the XHTML format
[0091] (e) the WAP format, and
[0092] (f) SMTP.
[0093] Preferably, the search and replace unit is operable to find a selection from the group consisting of words and tags, and is capable of doing at least one of adding data, removing data, and altering data from any of a group comprising data in, and data around the selection,
[0094] Preferably the apparatus is capable of carrying out at least one of adding, removing and altering data from any of data in and data around the selection, wherein the data consists of at least one of the group consisting of:
[0095] (a)JavaScript
[0096] (b)VB Script
[0097] (c)Ecma Script
[0098] (d)links
[0099] (e)color
[0100] (h)sounds
[0101] (i)multimedia
[0102] (j)fonts
[0103] (k)Flash
[0104] (l)tags
[0105] (m)pop-up menus
[0106] (n)pop-up windows.
[0107] Preferably, the structured data is selected from the group consisting of
[0108] (a) image data,
[0109] (b) sound data, and
[0110] (c) multimedia data.
[0111] Preferably, the data alteration consists of altering a selection from the group consisting of:
[0112] (a) the resolution of the data and
[0113] (b) the compression of the data.
[0114] Preferably, the intercepting unit is locatable on an intermediate network mode, between the computer sending the data and the computer receiving the data.
[0115] Preferably, the node is a gateway node.
[0116] Preferably, the node is a proxy node.
[0117] Preferably, the node is an ISP node.
[0118] Preferably, the search and replace unit is operable to determine a structure of input data and to carry out a replacement within the framework of the determined structure.
[0119] Preferably, the structure is a text data structure.
[0120] Preferably, the data structure comprises content text, and tag, data.
[0121] Preferably, the search and replace unit is operable to carry out at least one of adding, altering and deleting data found in any one of a group of data in and data around a selection from the group consisting of:
[0122] (a) the text and
[0123] (b) the tags.
[0124] Preferably, the structure is one of a group consisting of:
[0125] (a) the SGML format
[0126] (b) the HTML format
[0127] (c) the XML format
[0128] (d) the XHTML format
[0129] (e) the WAP format, and
[0130] (f) SMTP.
[0131] Preferably, the search and replace unit is operable to find a selection from the group consisting of words and tags, and is further operable to do at least one of add data, removing data and altering data, which can be found in and around the selection.
[0132] Preferably, the apparatus is capable of selectively doing at least one of adding, removing and altering data around and in the selection, wherein that data consists of a at least one of the group consisting of:
[0133] (a)JavaScript,
[0134] (b)VB Script,
[0135] (c)Ecma Script,
[0136] (d)links,
[0137] (e)color,
[0138] (g)images,
[0139] (h)sounds,
[0140] (i)multimedia,
[0141] (j)fonts,
[0142] (k)Flash,
[0143] (l)tags,
[0144] (m)pop-up menus, and
[0145] (n)pop-up windows.
[0146] Preferably, the structured data is selected from the group consisting of
[0147] (a) image data,
[0148] (b) sound data, and
[0149] (c) multimedia data.
[0150] Preferably, the data alteration consists of altering a selection form the group consisting of:
[0151] (a) the resolution of the data, and
[0152] (b) the compression of the data.
[0153] According to a second aspect of the present invention there is provided a server on a network with
[0154] (a) functionality to intercept data being sent,
[0155] (b) memory for storing predetermined settings,
[0156] (c) access functionality associated with the interception functionality operable to access data within the intercepted communication
[0157] (d) a search and replace unit, associated with both the interception unit and the access functionality being operable to conditionally alter the intercepted communication in response to the access data settings.
[0158] According to a third aspect of the present invention there is provided a data carrier carrying data usable in combination with a general purpose computer to provide
[0159] (a) functionality to intercept data being sent,
[0160] (b) memory for storing predetermined settings,
[0161] (c) access functionality associated with the interception functionality operable to access data within the intercepted communication
[0162] (d) a search and replace unit, associated with both the interception unit and the access functionality being operable to conditionally alter the intercepted communication in response to the access data and settings.
[0163] According to a fourth aspect of the present invention there is provided a method for intercepting communications between a sender and a receiver, and conditionally altering the intercepted data comprising:
[0164] (a)intercepting the communication,
[0165] (b)accessing data from within the intercepted communication,
[0166] (c)searching through and conditionally altering the communication and,
[0167] (d)forwarding the conditionally altered data on to the intended receiver.
[0168] Preferably, the data within the intercepted communication is a selection from the group consisting of:
[0169] (a) sender identification,
[0170] (b) information about the sender,
[0171] (c) receiver identification,
[0172] (d) information about the receiver, and
[0173] (e) data type information.
[0174] Preferably, the method comprises intercepting a communication on a computer network.
[0175] Preferably, the sender of data and receiver of the communication are respectively remotely located.
[0176] Preferably, the method comprises intercepting a communication from a packet-switched network.
[0177] Preferably, the method comprises intercepting communication wherein the network is one of a:
[0178] (a) TCP/IP based network,
[0179] (b) UDP based transmission,
[0180] (c) ICMP based transmission
[0181] (d) IGMP based transmission,
[0182] (f) mobile device based network,
[0183] (g) Ipv6 based network,
[0184] (h) Ipv4 based network, and
[0185] (i) an SMP based network.
[0186] Preferably, the method comprises receiving message parts in separate packets and assembling the packets to form at least one entire message.
[0187] Preferably, the method comprises detecting a data structure and altering data within in such a way as to conform to the detected structure.
[0188] Preferably, the method comprises altering text data.
[0189] Preferably, the text data comprises content text, and tag data.
[0190] Preferably, conditionally altering comprises adding data around a selection from the text and the tags.
[0191] Preferably, the structure is any one of a selection from the group consisting of
[0192] (a) the SGML format
[0193] (b) the HTML format
[0194] (c) the XML format
[0195] (d) the XHTML format
[0196] (e) the WAP format, and
[0197] (f) SMTP.
[0198] Preferably, the searching through and conditionally altering comprises finding a selection from the group consisting of words and tags, and selectively carrying out at least one of adding, removing and altering data which is at least one of in, and data around the selection.
[0199] Preferably, the data is selected from the group consisting of:
[0200] (a)JavaScript
[0201] (b)VB Script
[0202] (c)Ecma Script
[0203] (d)links
[0204] (e)color
[0205] (g)images
[0206] (h)sounds
[0207] (i)multimedia
[0208] (i)fonts
[0209] (k)Flash
[0210] (l)tags
[0211] (m)pop-up menus
[0212] (n)pop-up windows.
[0213] Preferably, the step of conditionally altering comprises altering the communication in accordance with predetermined settings.
[0214] Preferably, the step of conditionally altering comprises altering the communication in accordance with the accessed data.
[0215] Preferably, the conditionally altering, comprises altering the communication in accordance with the accessed data taken together with predetermined settings.
[0216] Preferably, the structured data is selected from the group consisting of
[0217] (a) image data,
[0218] (b) sound data, sound
[0219] (c) multimedia data.
[0220] Preferably, the data alteration consists of altering a selection form the group consisting of:
[0221] (a) the resolution of the data, and
[0222] (b) the compression of the data
[0223] Several objects and advantages of the present embodiment are:
[0224] (a) allowing advertising to be more fully integrated into the users browsing experience
[0225] (b) allowing advertising to be incorporated in existing documents without having to have those document manually changed
[0226] (c) allowing accurately targeted advertising to be seen by a user
[0227] (d) allowing elements of a document that change regularly to be updated for any, page, static, or dynamically generated, without the page having to be manually updated
[0228] (e) allowing for individually tailored content to be displayed for a user, even if it is the first time the user is visiting a particular site
[0229] (f) allowing the above advantages without necessarily having to compromise a users privacy
[0230] Further objects and advantage are to provide for dynamic content without necessarily having to use the content servers resources to generate the dynamic contest, to allow machines other than the content server to add content to the pages being viewed by the user, and to allow a greater information pool to go into generating the dynamic content. Further objects and advantages will become apparent from a consideration of the ensuing description and drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
[0231] For a better understanding of the invention and to show how the same may be carried into effect, reference will now be made, purely by way of example to the accompanying drawings.
[0232] With specific reference to the drawings in detail, it is stressed that the particulars shown are by way of example and for purposes of illustrative discussion of the preferred embodiments of the invention only, and are presented in the cause of providing what is believed to be the most useful and readily understood description of the principles and conceptual aspects of the invention. In this regard, no attempt is made to show the structural details of the invention in more detail than is necessary for a fundamental understanding of the invention. The description taken with the drawings making apparent to those skilled in the art how several forms of the invention may be embodied in practice. In the accompanying drawings:
[0233]FIGS. 1<i>a </i>and <b>1</b><i>b </i>are schematic diagrams showing a first preferred embodiment of the present inventors embodiment. Both show a general model of how the device works. The device intercepts the data going from a sender to a receiver. The device can alter that data, and send that data on to the receiver. FIG. 1<i>a </i>shows the device altering data based on an external data store, and FIG. 1<i>b </i>shows the device altering data based on a data store internal to the device
[0234]FIG. 2 is a more detailed view of a data store <b>44</b> in FIG. 1, showing some of the possible data the embodiment of FIG. 1 may have access to in determining what data to alter and how to alter that data
[0235]FIG. 3 is a more detailed overview of the operation of the embodiment of FIG. 1, having access to the data of FIG. 2
[0236]FIG. 4 is a generalized flow chart showing the process of altering data, according to an embodiment of the present invention.
[0237]FIG. 5 is a simplified flow chart of an embodiment of the present invention.
[0238]FIG. 6 is a simplified flow chart of an embodiment of the present invention that accepts and recognizes the TCP/IP protocol, and determines if the sender is a sender the device has been set to alter data from.
[0239]FIG. 7 is a continuation of the flow chart of the device of FIG. 6.
[0240]FIG. 8 is a simplified flow chart showing HTML page alteration according to a preferred embodiment of the present invention.
[0241]FIG. 9 is a simplified flow chart showing bow the device may search through a directory structure, and find files and data in those files, for alteration.
[0242]FIG. 10 is a simplified flow chart showing operation of the device as it may be implemented on a receiver, where the receiver would do most of the work in collecting and assembling the packets, and the device world only need to alter data, based on the data store.
[0243]FIG. 11 is a simplified flow chart showing operation of the device as it may be implemented on a machine sending the data.
[0244]FIG. 12 is a simplified flow chart which determines if the packet data is in the correct protocol for alteration, and is from a sender the device is set to alter data from, on any network node.
[0245]FIG. 13 is a simplified flow chart showing how the unit may modify individual packet, coven when the unit is not given an entire object, only individual packets thereof.
DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0246] Before explaining at least one embodiment of the invention in detail, it is to be understood that the invention is not limited in its application to the details of construction and the arrangement of the components set forth in the following description or in the illustrated drawings. The invention is applicable to other embodiments or of being practiced or carried out in various ways. Also it is to be understood that the phraseology and terminology employed herein is for the purpose of description and should not be viewed as limiting.
[0247] Reference is now made to FIG. 1 which is a generalized block diagram showing a first preferred embodiment of the present invention incorporated within a computer link. A sender of data (the Sender) <b>30</b> that normally communicates directly with a receiver of data (the Receiver) <b>46</b> via a channel <b>32</b>,<b>34</b>,<b>40</b> has its communications intercepted by functionality to intercept the communication and conditionally alter the data, hereafter called the intercept-alter device. In FIG. 1<i>a </i>the intercept-alter device <b>42</b> has access to an external data store <b>44</b>. Depending on the data store <b>44</b>, the intercept-alter device may alter the data and then forward the data on to the receiver. In FIG. 1<i>b </i>the data store is internal to the intercept-alter device. One skilled in the art may see how the data store may be completely internal to the intercept-alter device, completely external to the intercept-alter device, or have one or more data stores that are internal, and one or more data stores that are external.
[0248] Reference is now made to FIG. 2, which is a generalized block diagram showing the embodiment of FIG. 1, and in particular, showing types of information that nay be used in the alteration process. The intercept-alter device <b>42</b> may be connected to a data store of some sort <b>44</b>. The data store <b>44</b> may contain information about:
[0249] (a) protocols the intercept-alter device recognizes and can alter <b>50</b>, a protocol table,
[0250] (b) information about data the intercept-alter device may receive, what data to alter, and how to alter that data <b>52</b>, a data information table,
[0251] (c) information about various receivers of data that is used in determining how to alter data for those receivers, and which receivers to alter data for <b>54</b>, a receiver's table,
[0252] (d) and information about the senders of data, how to alter data from those senders of data, and which of those senders to alter data from <b>56</b>, a sender's table.
[0253] The intercept-alter device has access to the data the sender is sending, which comes in on a communication channel <b>36</b>. The intercept alter device may have access to an internal table of previously received data <b>62</b>, a previously received data table, which may include information about the destination address, possible on IP address of 32 bits, possibly any other address (a System V name, a Corba Name, a 48 bit IP address, or any other address), a destination port, a flag indicating if the protocol is HTTP, the size of the expected incoming data, and a pointer to the buffer containing the incoming data. The previously received data table may contain other information about the previously received data as is necessary for the device. The intercept-alter device keeps this table in the event that the intercept alter device needs to compile a complete object for processing. After the intercept-alter device has done whatever the intercept-alter device has to do to the intercepted data (see FIGS. <b>3</b>-<b>13</b>) the intercept-alter device may forward the processed intercepted data on to the original receiver via a data channel <b>38</b>. It should be clear that the intercepted data may or may nor have been altered.
[0254] In FIG. 2 the data store <b>44</b> is shown to be external to the intercept-alter device, but it could easily be internal to the intercept-alter device. In this diagram, there is only one data store containing information the intercept-alter device <b>42</b> may reference, but there could easily be implementations where the intercept-alter device <b>42</b> has access to multiple data stores that contained information. It should be clear that the data store may have information relating the data to the sender or receiver as well. That the data information table may have data relating changes to particular senders or receivers.
[0255] Reference is now made to FIG. 3 which is a simplified flow chart of a first embodiment of the present invention, showing the processing of intercepted data by the intercept-alter device <b>42</b>. Upon initially intercepting data <b>64</b>, the intercept-alter device checks to see if the data is from a protocol the intercept-alter device recognizes <b>66</b>, i.e. if the data is in a protocol in the protocol table <b>50</b>. It should be seen that if the intercept-alter device only recognizes one protocol or if the intercept-alter device recognizes all protocols, step <b>66</b> may not be necessary. If the data that was intercepted is not from a protocol the intercept-alter device recognizes <b>66</b>, the intercept-alter device sends the data directly on to the receiver <b>84</b> without further processing.
[0256] If the intercepted data is from a protocol the intercept-alter device recognizes <b>66</b>, the intercept-alter device checks if the data is from a sender the intercept-alter device should alter data from <b>68</b> i.e. if the sender of the data is in the sender's table <b>56</b>. If the intercept-alter device is set up to alter data from only one sender, from all senders, or if the intercept alter device resides on the server, step <b>68</b> may be skipped. If the data is not from a sender in the sender's table <b>56</b> the intercept-alter device forwards the data on to the receiver <b>84</b> without further processing.
[0257] If the sender is a sender the intercept-alter device has been instructed to alter data from, i.e. is in the senders table <b>56</b>, the intercept-alter device checks to see if the data is going to a receiver the intercept-alter device alters data for <b>70</b> i.e. if the receiver in the receiver's table <b>54</b>. If the intercept-alter device is set up to alter data for only one receiver, for all receivers, or if the intercept alter device is residing on the client, step <b>70</b> may be skipped. If the data is not to a receiver the intercept-alter device is set up to alter data for, the intercept-alter device sends the data directly onto the receiver <b>84</b> without further processing.
[0258] If the data is going to a receiver the intercept-alter device is set up to alter data for, the intercept-alter device checks if the data it received is a sub-part of a larger object, where the intercept alter device needs to accumulate the entire object for processing. If the intercept-alter device is guaranteed, to have obtained an entire object, or the intercept-alter device can process partial objects, the intercept-alter device may skip steps <b>72</b> through <b>80</b>, and immediately go to processing the data, step <b>82</b>. If the intercept-alter device needs to accumulate an entire object before pressing that object and the device is not guaranteed to receive a complete object each time, the intercept-alter device checks if the data is part of a previously received object <b>72</b>, i.e. if there is an entry for this data object in the table of previously received data <b>62</b>. If the data is part of some object that the intercept-alter device has already received data from, the intercept-alter device combines the new data with the previously received data <b>76</b> to reconstruct the larger object. If the data is not part of a previously received data object, the intercept-alter device creates a new entry in the table of previously received data <b>62</b> and fills in the information the intercept-alter device has about the received data <b>74</b>, possibly including, but not limited to:
[0259] (a) who the sender is,
[0260] (b) who the receiver is,
[0261] (c) what protocol the data is in,
[0262] (d) identification information relating to what data object the data is from,
[0263] (e) what the data is.
[0264] After either creating space for the new data, step <b>74</b> or combining the data with the previously received data, step <b>76</b>, the intercept-alter device checks to see if the object it has been manipulating in the previously received data table is complete or not <b>78</b>. If the object is not complete, the intercept-alter device waits for more data <b>80</b>, until it has a complete object. If the object is complete, the intercept-alter device processes the data, and alters it <b>82</b> as will be seen in greater detail with respect to FIGS. 4 and 8. After processing the data, the intercept-alter device sends the altered data on to the receiver <b>84</b>.
[0265] Reference is now made to FIG. 4, which is a flow chart showing how a device according to a preferred embodiment of the present invention may alter data. The intercept-alter device obtains data capable of being processed <b>88</b>, be it from a determination the mechanism has made, possibly from step <b>82</b> in FIG. 3, being handed a file from step <b>248</b> in FIG. 9 or any of a variety of other ways. The intercept-alter device then scans through the data until it finds data the intercept-alter device should alter <b>90</b>. Determining what the intercept-alter device should alter may be done by running the data under image recognition software, by semantic based software that recognizes meaning, or by simply finding matches between small sections of data (like words) in the data object and in the data store about data to be altered <b>52</b> or by some other data recognition functionality. The data store may be organized to have specific words that the intercept alter-device could recognize and replace with pre-specified words or character streams, or the intercept-alter device may use dynamic techniques in its recognition and replacement functionality. Depending on the information available to the intercept-alter device (possibly consisting of, but not limited to, information about the sender, who the sender is, information about the receiver, who the receiver is, what the data is, what information the intercept-alter device can access about the data, what protocols the data is in, what information, the intercept-alter device has about those protocols) the intercept-alter device alters the data <b>92</b>. The intercept-alter device then checks if the intercept-alter device has reached the end of the data <b>94</b>. If the intercept-alter device has reached the end of the data, it ends the procedure <b>96</b>. Otherwise, the intercept-alter device continues to scan through the data (the intercept-alter device returns to <b>88</b>).
[0266] FIGS. <b>1</b>-<b>4</b> show abstract implementations of the intercept-alter device. The intercept-alter device <b>42</b> is located between a sender of information <b>30</b> and a receiver of information <b>46</b>. The intercept-alter device intercepts data passed between the sender <b>30</b> and the receiver <b>46</b>. The intercept-alter device may have access to many different pieces of information <b>44</b>. The information may be stored internally to the intercept-alter device, or stored externally, and may include (FIG. 2):
[0267] a. who the sender of the data is,
[0268] b. information about the sender, <b>56</b>
[0269] c. who the receiver of the data is,
[0270] d. information about the receiver, <b>54</b>
[0271] e. what the data is,
[0272] f. what protocols send the data, and what format the data is in
[0273] g. which protocols and formats the intercept-alter device is to alter <b>50</b>
[0274] h. information about what data to alter, <b>52</b>
[0275] i. how to alter it, <b>52</b>
[0276] Some of the above information may be part of the data being sent (for example: what the data is) and some may be other information the intercept-alter device has access to, either from an internal data store, or from some external source the intercept-alter device has access to. As examples, the device may keep a completely internal data store about a single user which the intercept alter device may alter data for. The intercept-alter device may have access to a central repository, external to the intercept-alter device with similar information. The device may have data that determines changes only for particular receivers. The intercept alter device may have data that determines changes only from particular senders.
[0277] A preferred embodiment of the invention is described with reference to FIGS. <b>5</b>-<b>9</b>. The skilled person will appreciate that, wherever reference is made to HTML, reference is intended to HTML or variations thereof however generated, and may include HTML obtained directly from a static page, generated on the fly by a JSP, an ASP, a JHTML page, DHTML, XHTML, or an XML repository, by way of example.
[0278] Reference is now made to FIG. 5 which is a simplified flowchart of a preferred embodiment of the present invention. The intercept-alter device intercepts a packet sent from the sender to the receiver <b>304</b>. The intercept-alter device finds the header information of the packet <b>306</b>. If the packet, and its data are not of a type the intercept-alter device alters <b>308</b>(if it not any of TCP/IP, TCP, HTTP, and HTML, or is not from a sender the intercept-alter device is set to alter data from, or is not to a receiver the intercept-alter device is set to alter data for) the intercept-alter device sends the packet straight on to the receiver <b>316</b>. If the packet and packet data are of a type the intercept-alter device alters (It is TCP/IP, TCP, HTTP, and HTML, and is from a sender and receiver the intercept-alter device alters data from and for), the intercept-alter device identifies the data area <b>310</b>, i.e., finds the body tag, searches for text data to be altered <b>312</b> and processes the text <b>314</b>. HTML consists of text segments, and formatting information. The formatting information is in tags, specific words that are surrounded by the characters “<” and “>”. The formatting information may be information about the spacing of words, links to other web sites, or a wide variety of other data, including programs that alter the web page, The mechanism may find particular words in the text, and replace those words with some combination of words and tags. The intercept-alter device preferably sends the data, with the replacements, on to the receiver <b>316</b>.
[0279] Reference is now made to FIG. 6 which is a simplified flow chart showing a preferred embodiment of the present invention for recognizing and processing data using the TCP/IP protocol. In the embodiment of FIG. 6, the intercept-alter device intercepts a packet <b>102</b> between the sender and receiver (possible locations of the intercept-alter device include but are not limited to an ISP, a gateway, a content distribution network, a proxy server, and any other network or internet node). The intercept-alter device determines the IP header location from the TCP header <b>104</b>. The intercept-alter device identifies from the header information which protocol is sending the packet <b>106</b>, and determines if that protocol is one the intercept-alter device accepts <b>108</b>, in this case just TCP/IP. If the packet is not from a protocol the intercept-alter device accepts, the intercept-alter device sends the packet on to the receiver untouched <b>120</b>. Otherwise, the intercept-alter device determines the sender from the Its TCP/IP headers <b>110</b>. If the sender cannot be matched with a sender in the sender's table <b>56</b>,<b>112</b> the intercept-alter device sends the packet on untouched <b>120</b>. If the sender is matched in the sender's table, the intercept-alter device checks which port of the sender the data comes from <b>114</b>. The intercept-alter device checks if the packet is from a port that the intercept-alter device is set to alter data from <b>116</b>. If the port is not recognized the intercept-alter device sends the data on untouched <b>120</b>. Otherwise the intercept-alter device continues with the packet processing <b>118</b> as described now with respect to FIG. 7.
[0280] Reference is now made to FIG. 7 which is a simplified flow chart showing a continuation of the process of FIG. 6.
[0281] The intercept-alter device has a table of destination addresses and ports that it has received packets for, the previously received data table <b>62</b>. For each entry in the previously received data table <b>62</b> the intercept-alter device has a pointer to a buffer containing all the data in previous packets for that receiver, and a field for indicating how large the data is.
[0282] The intercept-alter device looks at the IP address of the receiver of the data <b>122</b>. The intercept-alter device looks at the port that the packet is going to <b>124</b>. If the receivers IP address and port number are not already in the intercept-alter device's previously received data table <b>62</b>, <b>126</b>, the intercept-alter device creates an entry for that receiver <b>128</b> in the previously received data table, and inserts the received data into the previously received data table <b>62</b>. If the packet indicates that the receiver is either requesting a disconnect or acknowledging a disconnect <b>129</b><i>a, </i>the intercept-alter device removes the specific entry with this destination address and destination port in table <b>62</b><b>129</b><i>b, </i>sends the packet onto the receiver untouched <b>132</b>, and waits for additional packets FIG. 6, 100. The intercept-alter device checks if the already recognized packets going to the receiver and port are, or are not, from a protocol the intercept-alter device deals with (in this case HTTP) <b>130</b>. If the packet is not from a protocol the intercept-alter device deals with, the intercept-alter device sends the packet on untouched <b>132</b>, and returns to <b>100</b> in FIG. 6 <b>134</b>. If the packet is HTTP (non-HTTP flag is 0), the intercept-alter device appends the packet to the end of the previously received packet(s) <b>136</b> in the previously received data table <b>62</b>. The intercept-alter device checks if the HTML flag is set <b>138</b>. If the HTML flag is set, and the buffer size is equal to the expected size <b>160</b>, then the intercept-alter device processes the HTML (FIG. 8), and removes the specific entry with this destination address and destination port in table <b>62</b><b>164</b>. If the HTML flag is set <b>138</b>, and the buffer is not equal to the expected size <b>160</b>, the intercept-alter device waits for additional packets <b>162</b>.
[0283] If the HTML flag is not set, and the buffer contains a complete HTTP header <b>140</b>, the intercept-alter device finds the field, content-type in the HTTP header <b>152</b>. If the content type is HTML <b>154</b>, the intercept-alter device sets the HTML flag <b>156</b>, finds the content length, and stores the data in a buffer <b>158</b> in the table of previously received data <b>62</b>. If the buffer is the expected size <b>160</b>, the intercept-alter device processes the buffer (FIG. 8) <b>164</b>. Otherwise, the intercept-alter device waits for additional packets <b>162</b>, FIG. 6, 100.
[0284] If the HTML flag is not set <b>138</b>, and the packet does not contain an HTTP header <b>140</b>, the intercept-alter device checks if the buffer has more than a pre-determined number of bytes <b>142</b>. If the buffer does not have more than a pre-determined number of bytes, and the HTTP header is incomplete or missing, the intercept-alter device waits for a complete HTTP header (waits for additional packets) <b>143</b>. If the buffer has more than a pre-determined number of bytes, the intercept-alter device sets the NonHTTP flag <b>144</b>, sends the buffer on to the destination untouched <b>150</b>, and waits for additional packets <b>143</b>, FIG. 6, 100.
[0285] Reference is now made to FIG. 8, which is a simplified flow chart of how the intercept-alter device may alter HTML pages. The intercept-alter device assumes it has either a complete HTML page to deal with at this stage, and was called from FIG. 6, FIG. 7, FIG. 9, FIG. 10 or FIG. 11. One skilled in the art will see how when the process is ended in the middle by not finding certain expected results (not finding a closing tag, or an /script, for example), the intercept-alter device may send on either the modified, or unmodified version of what it had received.
[0286] The intercept-alter device starts processing a page <b>166</b>. The intercept-alter device initializes 3 internal variables, it sets a closing flag to false (0), a body flag to false (0), and sets a pointer to the start of the HTML page <b>168</b>. The intercept alter device then enters into a loop <b>169</b>.
[0287] At the start of the loop, the intercept-alter device checks if the pointer is pointing to the sequence of characters indicating the beginning of a comment: “←” <b>170</b>.
[0288] If the pointer is currently indicating the beginning of a comment, the intercept-alter device checks if the body flag is set to true (1) <b>172</b>. If the body flag is set, the intercept-alter device checks if the sentence buffer is clear <b>174</b>. If the sentence buffer is clear, the intercept-alter device scans through the HTML page until it finds an end comment <b>180</b> “->”. If the sentence buffer is non-empty, the intercept-alter device processes the sentence buffer, <b>178</b>, and searches for an end comment <b>180</b>. Processing of the sentence buffer consists of finding terms keywords or phrases in the sentence buffers, altering those terms, keywords or phrases, and adding a prefix and suffix to those terms, keywords and phrases. The prefix and suffix may be part of an HTML tag, and may have links, images, formatting information, Scripts, and other effects.
[0289] The intercept-alter device checks if it has found an end comment <b>182</b>. If it has found an end comment, the intercept-alter device increments the pointer to just past that end comment <b>183</b> and goes back to the start of the loop <b>186</b>. If no end comment was found, then the intercept-alter device stops processing the current page <b>188</b>.
[0290] If the pointer is not pointing to the beginning of a comment, the intercept-alter device checks if the next character is the start of a tag, i.e. If the next character is “<” <b>190</b>. If the intercept-alter device is pointing to the start of a tag, the intercept-alter device skips any white-space <b>196</b>, until it finds a character. If the first character the intercept-alter device sees is a forward slash <b>198</b> “/”, indicating a closing tag, the intercept-alter device sets the closing flag <b>200</b>, and finds the next word after the forward slash <b>203</b>. If the next letter is not a forward slash <b>198</b>, the intercept-alter device clears the closing flag <b>202</b>, and finds the next word <b>203</b>.
[0291] The intercept-alter device checks to see if the next word is on a list of legal HTML tags <b>204</b> that list possibly found in the data information table <b>52</b>, or the protocols table <b>50</b>. If the word is on the intercept-alter devices list of tags, the intercept-alter device checks if the closing flag is set <b>208</b>. If the closing flag is set, the intercept-alter device checks if the next word is “body” <b>216</b> indicating the end of the document. If the next word is “body”, the intercept-alter device is finished processing the current page <b>220</b>. If the closing flag is not set, the intercept-alter device checks if the next word is “body” <b>210</b>. If the next word is “body” the intercept-alter device sets the body flag <b>212</b>. If the next word is not body the intercept-alter device checks if the next word is “script” indicating an embedded program, which the present embodiment does not alter <b>214</b>. If the next word is “script” the intercept-alter device scans until it finds “/script”, indicating the end of the program imbedded in the HTML <b>218</b>, <b>219</b><i>b. </i>If the closing “/script” was not found, the intercept alter device stops processing the page <b>223</b><i>b. </i>
[0292] After the intercept-alter device has either
[0293] (a) set the body flag <b>212</b>, or
[0294] (b) found the closing flag set, when the closing flag does not close a “body” <b>216</b>,
[0295] (c) found “/script” <b>218</b>, or
[0296] (d) failed to find a script <b>214</b>,
[0297] the intercept-alter device scans the current document until it finds a “>” <b>222</b>. The intercept alter device checks to see if the “>” was found <b>223</b><i>a. </i>If “>” was not found, the intercept-alter device stops the page processing <b>223</b><i>b. </i>If “>” was found The intercept-alter device increments the pointer to just after the “>” <b>223</b>. The intercept-alter device checks if the sentence buffer is clear <b>224</b>, and if it is, goes back to the start of the loop <b>234</b>. If the sentence buffer is not clear, the intercept-alter device processes the sentence buffer <b>228</b>, and then returns to the start of the loop <b>234</b>.
[0298] If, having found the next word after the “<”, the word not being on the list of tags <b>204</b>, then the device checks whether the body flag has been set <b>206</b>.
[0299] If the character the intercept-alter device is looking at, at the start of the loop <b>190</b>, is not “<”, the intercept-alter device checks if the pointer is pointing to the end of the buffer <b>192</b>. If the pointer is pointing to the end of the buffer, the intercept-alter device ends the procedure <b>194</b>. Otherwise, the intercept-alter device checks if the body flag is set <b>206</b>.
[0300] If the body flag is set, the intercept-alter device adds the current character to the sentence buffer <b>230</b>.
[0301] The intercept-alter device then preferably increments the pointer <b>232</b>, and returns to the start of the loop <b>234</b>.
[0302] One skilled in the art will see that in this embodiment the device will never alter data that is found within HTML tags. It should be seen by one skilled in the art that this is not limiting, that the device may alter data inside of tags as well. This may be accomplished by any number of means, including by having step <b>203</b> check the contents of the tag, and then alter the contents of the tag.
[0303] Reference is now made to FIG. 9 which is a simplified flow chart showing how the intercept-alter device may be used to scan a directory structure, find files in those directories to be altered, and alter those files.
[0304] In FIG. 9 the files are assumed to be static files of a type the intercept alter device is set to alter.
[0305] The intercept-alter device preferably finds a file, on the given directory structure, matching a type the intercept alter device is set to alter <b>238</b>. Preferably, the device searches for all files and then matches the file name or file type against the predetermined settings. The intercept alter device checks the file type <b>240</b>. If that file is a directory <b>242</b>, the intercept-alter device recursively calls itself on that directory <b>244</b>.
[0306] If that file is an actual file, the intercept-alter device checks to see if that file is of a format that the intercept-alter device handles <b>246</b>. If the file is of a type that the intercept-alter device handles, the intercept-alter device processes the file, c.f. FIGS. 4. <b>8</b><b>248</b>, in either case, that is to say if it is or isn't a type the intercept-alter device handles, the intercept-alter device searches for the next file in the directory <b>250</b>. If it was the last file in the directory <b>252</b>, the process ends <b>254</b>. Otherwise processing returns to step <b>240</b>.
[0307] Reference is now made to FIG. 10 which is a simplified flow chart showing a preferred embodiment of how the intercept-alter device may operate on a receiver's machine. The intercept-alter device sits on a receiver's machine. After the receiver has received an entire data object <b>256</b> the computer checks that data object. If it is in a format the intercept-alter device is set to alter <b>258</b> (in this case HTML) the intercept-alter device checks it, alters it <b>260</b>, FIGS. 4, 8, and sends the data onto whatever program is supposed to use it <b>262</b>.
[0308] Reference is now made to FIG. 11 which is a simplified flow chart illustrating a preferred embodiment of how the device may work on a computer serving an HTML page.
[0309] When the computer is about to send a piece of data onto a new receiver, the intercept-alter device preferably creates a new instance of itself specifically for this data object (before <b>266</b>) that intercepts the data being sent, and handles all further communication for that particular data object, regardless of how many pieces or packets this data object is sent in. The new instance of the intercept-alter device initially sets itself to a state indicating it has not received any data <b>268</b>. The intercept alter device then enters into a loop <b>270</b>. The intercept-alter device receives a piece of data <b>272</b>, and checks if the data object or part being sent is in a format the intercept-alter device does not accept <b>274</b>. In this case the device accepts only HTML. If the format is not of an acceptable type, then the new instance sends the data object or part on as well <b>274</b>, <b>302</b>. The intercept alter mechanism checks to see if the object is known to be of a type the intercept-alter mechanism accepts <b>276</b>. If the data object or part is in a format that the intercept-alter device handles (HTML in this case), then in the case of an object part the new instance appends the part to any previously received part <b>292</b>. If this is the first part for the current object, the process checks to see if the format of the data is a format that the intercept-alter device is supposed to alter <b>278</b>. If the data object is not in a format the intercept alter device is set to handle, the new instance marks the object as not being in a format the intercept-alter device recognizes, the device indicates that this instance does not deal with data the device accepts (this instance alters it's own state) <b>280</b> and sends the data on untouched <b>302</b> and returns to the start of the loop <b>303</b>.
[0310] If the data is a format the intercept-alter device handles, the new instance marks it as such <b>282</b>, checks to see the expected data length <b>284</b>, checks if the expected length was found <b>286</b>. If the expected data length was found, the intercept alter device stores that length <b>288</b>, creates a buffer with the correct data length <b>290</b>, and puts the packet into the newly created buffer <b>292</b> to be joined by later to-be-received parts of the same object. If the expected data length was not found, the intercept alter device sets its state to indicate it is dealing with a format the device does not handle <b>280</b> (in this case, invalid HTML) and continues from step <b>280</b> on.
[0311] If the data buffer for the current client and port destination is completely <b>294</b>, the process processes the data object looking for data the intercept-alter device is set to alter, and alters that data according to its (the intercept-alter device's) settings <b>296</b>.
[0312] Otherwise, if the object is not complete, the new instance waits for new object parts <b>298</b><b>300</b>.
[0313] Reference is now made to FIG. 12 which is a simplified flow chart showing a preferred embodiment of the present invention for recognizing and processing data using the TCP/IP protocol on any network node, even a n node not guaranteed to receive an entire HTML document, but only individual packets thereof. In the embodiment of FIG. 12, the intercept-alter device intercepts a packet <b>322</b> between the sender and receiver (possible locations of the intercept-alter device include but are not limited to an ISP, a gateway, a content distribution network, a proxy server, and any other network or internet node). The intercept-alter device determines the IP header location from the TCP header <b>324</b>. The intercept-alter device identifies from the header information which protocol is sending the packet <b>326</b>, and determines if that protocol is one the intercept-alter device accepts <b>328</b>, in this case just TCP/IP. If the packet is not from a protocol the intercept-alter device accepts, the intercept-alter device sends the packet on to the receiver untouched <b>340</b>. Otherwise, the intercept-alter device determines the sender from the TCP/IP headers <b>330</b>. If the sender cannot be matched with a sender in the sender's table <b>56</b> the intercept-alter device sends the packet on untouched <b>340</b>. The intercept alter device checks if the sender is matched in the sender's table <b>332</b>, if the sender is not in the senders table, the intercept-alter device sends the packet on untouched <b>340</b>. If the sender is matched in the senders table, the intercept-alter device checks which port of the sender the data comes from <b>334</b>. The intercept-alter device checks if the packet is from a port that the intercept-alter device is set to alter data from <b>336</b>. If the port is not recognized the intercept-alter device sends the data on untouched <b>340</b>. Otherwise the intercept-alter device continues with the packet processing <b>338</b> as described now with respect to FIG. 13.
[0314] Reference is now made to FIG. 13, which is a simplified flow chart of packet processing as it may occur on any network node regardless of if the particular node the present embodiment resides on is guaranteed to receive an entire document. The intercept alter device scans through the entire packet, searching for non-ASCII characters <b>344</b>. If there are any non-ASCII characters <b>346</b>, the device sends the packet on unmodified <b>360</b>. If there are no non-ASCII characters, the device determines the total number of extra white-space <b>348</b>. The device checks if there is more than 0 extra white-spaces <b>350</b>. If there is no extra white-space the intercept alter device sends the packet on untouched <b>360</b>. If there is any extra white-space in the packet, the intercept alter device searches for any indicators that the packet is an HTML packet (HTML tags, HTML headers . . . ) <b>352</b>. If none were found <b>354</b> the intercept alter device sends the packet on untouched <b>360</b>. If HTML indicators were found, the intercept alter device searches through the packet, finding terms or keywords from a data store <b>52</b> that the device is set to alter <b>356</b>. If none were found <b>358</b>, the device sends the packet on untouched <b>360</b>. If there are such terms or keywords the device is set to alter <b>358</b>, the device calculates the amount of space needed for the modifications <b>362</b>. If there is insufficient white-space for even one modification <b>364</b>, the device sends the packet on untouched <b>360</b>. Otherwise, the device removes the amount of white-space needed for the modification <b>366</b>, performs the modification <b>368</b>, changes whatever fields are necessary to be changes in the header of the packet, <b>370</b>, and sends the modified packet on to the receiver <b>372</b>.
[0315] It will be noted by one skilled in the art that if there is no extra white-space, in this embodiment, the device sends the data on untouched. This is not necessarily so, the device may be set to make changes which would increase the extra white-space in the packet, for example, by deleting certain words, or exchanging certain words with smaller words. If this device were set to do this, step <b>350</b> may be skipped, and the device may also alter packets with no extra white-space. It will be further noted that while this diagram shows how to do alterations on individual packet of HTML documents, this method would work for any text based packet, and with necessary protocol information, for any packet, with a protocol that the intercept alter device may alter.
Examples
[0316] An internet based content server (a web server) may have thousands or hundreds of thousands of static web pages. Some of those pages may have links to a given other internet site. Assuming that the other Internet site's location has changed, in the normal course of events, the web server operator would have to go through all his documents and find the links, and change them. Automated tools exist that will make this job faster, but the Web-Server may have to tell those tools which directories to scan. If the content is in different locations, it may be difficult to remember where all the references to be changed are. Using a device according to the present embodiments, all the web-server would have to do would be to make a single entry in a data information table <b>52</b>, and automatically any place where the original, now changed site reference appears, may be automatically replaced by a reference to the new site. It is pointed out that in the case where the intercept-alter device is installed on the server itself there is no need to have the intercept-alter device check the source or the destination of the data. If the intercept-alter device is on an ISP, then the intercept-alter device may have to be configured to check references from only the particular web server in question to make alterations to references to the old site. If the ISP has the intercept-alter device in place, then any servers that the ISP provides service to could have their own data information table <b>52</b>. The same process may work if a Web-Server has many images imbedded in its pages, and the image directories are moved. Changing names of files that have moved in a directory structure can require time to find and replace all the references, but with the present embodiments, all that is required is putting an entry, for each image, in the data information table <b>52</b> indicating the alteration to be made.
[0317] An article has a reference to a hand held computing device. The intercept-alter device intercepts the article somewhere on the way to a user. The intercept-alter device recognizes hand held computing as something it may alter, either because a corresponding setting has been manually placed in its data information table <b>52</b>, or because it has a semantic based unit that recognizes references to hand held computing. References to a product in an article are likely to be a good place to advertise that product. A free ISP that gives away Internet service, may, instead of taking up space on the end-users screen, wish to have the intercept-alter device embed a link to a hand held computing device store. If the user clicks on the link in the article, that “click through” may thus be used to obtain benefit for the ISP.
[0318] If the intercept-alter device is located on the users machine, then the intercept-alter device may assemble data about the user, and the user's surfing habits. The intercept-alter device, based on that user's surfing habits, may choose if the link to create would be to a page advertising a PalmPilot, a Windows CE machine, a Linux-based system or a BSD based hand held computing device. For instance: if the device had created a profile of the user indicating technical preferences, the intercept alter device may create a link to a Linux, or BSD based hand held computing device. The profile mechanism could be part of the receivers table that the intercept alter device may generate, or add information to, based on the users browsing habits, or other user information available to the intercept alter device. Furthermore, as the intercept-alter device is on the user's machine the intercept-alter device could keep the list of user preferences on the users machine, accessing an external data store of information to find a data information table <b>52</b>, and generate targeted user advertising without compromising the users privacy. In this manner targeted advertising may be generated even if a user has never been to a particular site before. One skilled in the art can see how the targeting would work equally well on the ISP of users, or on the ISP of many websites, such that user profiles could be generated and used by many different sites.
[0319] The intercept alter device may be used to alter text strings sent from chat servers to clients. Likewise it could be used in conjunction with newsgroups, electronic mail sent through SMTP, and instant messaging. It has information in a data store concerning the various protocols of these utilities and based on that information can alter the data transmitted.
[0320] The intercept-alter device may be used by a receiver, or be used by an ISP in front of a receiver, to edit out objectionable material. The intercept-alter device may be configured with words or phrases to be deleted from a document, or the intercept-alter device could be equipped with image recognition that may alter areas that are seen as having too much skin tone into a non-offensive graphic. The intercept-alter device may be more refined than merely blocking access to pages with too much skin tone. Rather it may have a facility to render such pages inoffensive by understanding the various image formats, and being able to alter the images so they are no longer offensive.
[0321] A content-server may have many different articles, but wish to have users see articles that are relevant to them. If the intercept-alter device has been able to track certain of the users preferences, then even if the user has never been to the content-server before, the intercept-alter device could choose which articles to place in the content servers sites based on previously defined user preferences.
[0322] The intercept-alter device may have a particular trademark image stored in some data store. For example assume the trademark is stored in a bitmap format. If the intercept-alter device intercepted an image where the intercept-alter device had sufficient information in the protocols table <b>50</b> to translate the intercepted image into a bitmap, the intercept-alter device may be able to compare each intercepted image to its (the intercept alter device's data store) stored bitmap image. In the event that the two images show a match, the intercept-alter device may replace the trademark with a newer, updated trademark. With an adequate knowledge of any data format, the intercept-alter device may thus be able to intercept and alter any data format appropriately.
[0323] Thus the reader will see how the embodiments provide easily configurable tools to allow for dynamic alteration of data, that may be used to update data easily, and to generate individualized content for the receivers of data, even when the sender of data may not have access to highly detailed information about the receiver.
[0324] Implementations that depend on the TCP/IP protocol have been shown. One skilled in the art will see how the descriptions may easily be altered to use UDP, by recognizing some ordering protocol, and having the intercept-alter device be able to re-request dropped packets. The skilled person will also appreciate how the intercept-alter device will work with any transmission protocol, with appropriate alterations necessary for that protocol.
[0325] It has been shown how the intercept-alter device will work with text data. It should be clear that the intercept-alter device may work equally well with any data format, provided that the intercept-alter device has the information necessary to decode and find matches in that data to other data the intercept-alter device has access to, and the intercept-alter device may alter the data being sent in some appropriate fashion. Accordingly, the scope of the invention should be determined not by the embodiments illustrated, but by the appended claims and their legal equivalents.
[0326] It is appreciated that certain features of the invention, which are for clarity, described in the context of separate embodiments may also be provided in combination in a single embodiment. Conversely, various features of the invention, which are, for brevity, described in the context of a single embodiment, may also be provided separately or in any suitable combination.
[0327] It will be appreciated by persons skilled in the art that the present invention is not limited to what has been particularly shown and described herein and above. Rather the scope of the present invention is defined by the appended claims and includes both combinations and sub-combinations of the various features described herein and above, as well as various modifications thereof which would occur to persons skilled in the art upon reading the foregoing description.
Contents6
14 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US2011170772A1 | Cited by | United States of America | Pre-grant |
| US9578067B2 | Cited by | United States of America | Applicant |
| US9442916B2 | Cited by | United States of America | Applicant |
| US7917744B2 | Cited by | United States of America | Applicant |
| US9711182B2 | Cited by | United States of America | Applicant |
| US7505996B2 | Cited by | United States of America | Search report |
| US8819111B2 | Cited by | United States of America | Search report |
| US7404212B2 | Cited by | United States of America | Applicant |
| US2004103085A1 | Cited by | United States of America | Pre-grant |
| US7389540B2 | Cited by | United States of America | Applicant |
| US2008281905A1 | Cited by | United States of America | Pre-grant |
| US2004049564A1 | Cited by | United States of America | Pre-grant |
| US9710236B2 | Cited by | United States of America | Search report |
| US2014082588A1 | Cited by | United States of America | Pre-grant |
| US2003023631A1 | Cited by | United States of America | Pre-grant |
| US10051092B2 | Cited by | United States of America | Search report |
| US9485321B2 | Cited by | United States of America | Search report |
| US7046663B1 | Cited by | United States of America | Search report |
| US2013125206A1 | Cited by | United States of America | Pre-grant |
| US2007174469A1 | Cited by | United States of America | Pre-grant |
| US2003200230A1 | Cited by | United States of America | Pre-grant |
| US8024785B2 | Cited by | United States of America | Applicant |
| US2015277859A1 | Cited by | United States of America | Pre-grant |
| US7725568B2 | Cited by | United States of America | Search report |
| US2002107915A1 | Cited by | United States of America | Pre-grant |
| US9712852B2 | Cited by | United States of America | Search report |
| US8863081B2 | Cited by | United States of America | Search report |
| US8914480B1 | Cited by | United States of America | Search report |
| US2013203380A1 | Cited by | United States of America | Pre-grant |
| US10394530B1 | Cited by | United States of America | Search report |
| US9460082B2 | Cited by | United States of America | Applicant |
| US7457799B2 | Cited by | United States of America | Search report |
| US2012269196A1 | Cited by | United States of America | Pre-grant |
| US2005044070A1 | Cited by | United States of America | Pre-grant |
| US2003084121A1 | Cites | United States of America | Pre-grant |
| US2005198334A1 | Cites | United States of America | Pre-grant |
| US6173316B1 | Cites | United States of America | Pre-grant |
| US6585778B1 | Cites | United States of America | Pre-grant |
| US6615212B1 | Cites | United States of America | Pre-grant |
1 member in 1 office
Priority claims10
| Document | Office | Kind | Date |
|---|---|---|---|
| 21695200 | United States of America | P | |
| 21695200 | United States of America | P | |
| 26968001 | United States of America | P | |
| 26968001 | United States of America | P | |
| 90085901 | United States of America | A | |
| 60216952 | – | – | – |
| 60269680 | – | – | – |
| US20000216952P | – | – | – |
| US20010269680P | – | – | – |
| US20010900859 | – | – | – |
Members1
| Document | Office | Kind | |
|---|---|---|---|
| US2002004819A1 | United States of America | A1 |
13 transactions on the USPTO file
Abandoned after 1 non-final rejection.
- Non-final rejections
- 1
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | |
|---|---|
| Mail Abandonment for Failure to Respond to Office ActionAbandoned | |
| Aband. for Failure to Respond to O. A. | |
| Mail Non-Final RejectionNon-final rejection | |
| Non-Final RejectionNon-final rejection | |
| Case Docketed to Examiner in GAU | |
| IFW TSS Processing by Tech Center Complete | |
| Case Docketed to Examiner in GAU | |
| Case Docketed to Examiner in GAU | |
| Case Docketed to Examiner in GAU | |
| Application Dispatched from OIPE | |
| Correspondence Address Change | |
| IFW Scan & PACR Auto Security Review | |
| Initial Exam Team nn |
1 legal event, as the office reported them to INPADOC
Events
| Event | Code | |
|---|---|---|
| Information on status: application discontinuationABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTIONSTCB | STCB |
Numbers
- Publication, DOCDB
- 2002004819
- Publication, EPODOC
- US2002004819
- Application
- 9900859
- Application, DOCDB
- 90085901
- Application, EPODOC
- US20010900859
Titles
- English
- Device and method for data interception and updating
Classification
- CPC, 2
- G06F16/2308
- G06F16/23
- IPC, 1
- G06F17 30
- USPC, 3
- 709203000
- 707E17007
- 709246000