CN113992980B - Method, device and equipment for generating attack code stream - Google Patents
- ️Fri May 26 2023
Detailed Description
In order to better understand the technical solutions in the present application, the following description will clearly and completely describe the technical solutions in the embodiments of the present application with reference to the drawings in the embodiments of the present application, and it is obvious that the described embodiments are only some embodiments of the present application, not all embodiments. All other embodiments, which can be made by one of ordinary skill in the art based on the embodiments herein without making any inventive effort, shall fall within the scope of the present application.
Fig. 1 is a flow chart of a method for generating an attack code stream according to one or more embodiments of the present disclosure, referring to fig. 1, the method may specifically include the following steps:
102, obtaining a code stream sample to be processed;
the execution subject of the method for generating an attack code stream provided in the embodiments of the present disclosure may be an attack code stream generating device, an attack code stream generating apparatus, or the like, and the execution subject will be described below as an example of an attack code stream generating device. Optionally, the generating device of the attack code stream is in a networking state, and obtains a code stream sample played in real time from the network, for example, a video code stream played in real time in the network. Alternatively, the attack code stream generating device acquires a pre-stored code stream sample from a local designated position thereof, and the locally stored code stream sample has no real-time property compared with a code stream sample played in real time in a network, so that the attack code stream generating device can be called a historical code stream sample, such as a pre-stored certain audio code stream. Alternatively, the attack bit stream generating device receives a bit stream sample of the history uploaded by the user, and so on. In the present specification, the source of the code stream sample is not particularly limited, and it can be set according to the needs in practical application.
104, analyzing the code stream sample to obtain information of at least one key position of the code stream sample;
specifically, according to a code stream pattern defined in a multimedia related protocol, the acquired code stream sample is analyzed to obtain information of at least one key position of the code stream sample. Wherein, the key position is such as the data packet where the decoding parameter set is located, the data packet where the key frame is located, the encapsulated data, the coded data, etc.; information of the key position, such as a data packet identifier of a data packet where the key frame is located, and the like; related protocols for multimedia such as ISO/IEC 14496-12, etc.
And
step106, carrying out transformation processing on the code stream samples according to a preset code stream generation strategy and the obtained information of the key positions to obtain an attack code stream.
Specifically, according to a preset code stream generation strategy and the obtained information of the key position, a target position is selected from the key position, and code stream data of the target position is subjected to transformation processing to obtain an attack code stream. The code stream generation strategy can be set according to the needs in practical application.
In the embodiment of the application, at least one key position of the code stream sample is obtained by analyzing the code stream sample to be processed, and the code stream sample is subjected to transformation processing according to a preset code stream generation strategy and the obtained key position to obtain an attack code stream. Therefore, on the basis that the code stream generation strategy is configurable, the source of the code stream sample is not required to be paid attention to, the packaging format of the code stream sample is not required to be paid attention to, and the like, the generation of the attack code stream is realized; the generated attack code stream has universality, can be applied to security tests of various multimedia products, not only enables the test effect to be closer to real attack, but also can improve the security and stability of the corresponding multimedia products, thereby solving the problem of lower security and stability of the current multimedia products.
Considering that there is a difference between the real-time code stream and the historical code stream, for example, for the real-time code stream, the part of the code stream that is not yet played cannot be known, and thus the information of the complete code stream cannot be known, such as the total number of data packets, the data packet where the end frame is located, and the like. Whereas for a historical code stream, since it is a complete code stream, the information of the complete code stream can be known. Based on this, in order to ensure that high quality attack code streams can be generated, whether in real-time or historical, different code stream generation strategies are employed for different types of code stream samples in one or more embodiments of the present disclosure. Specifically, as shown in fig. 2,
step106 may include:
step 106-2, determining the type of the code stream sample, if the code stream sample is a real-time code stream sample, executing step 106-4, and if the code stream sample is a historical code stream sample, executing step 106-6;
106-4, carrying out transformation processing on the code stream sample according to a preset first code stream generation strategy and the obtained information of the key position to obtain an attack code stream;
and 106-6, carrying out transformation processing on the code stream samples according to a preset second code stream generation strategy and the obtained information of the key positions to obtain an attack code stream.
Specifically, in step 106-4, the transformation processing is performed on the code stream samples according to the preset first code stream generating strategy and the obtained information of the key position, including performing at least one of the following operations according to the preset first transformation parameters:
firstly, selecting a first target position from key positions of a code stream sample according to the obtained information of the key positions and a first preset mode, and performing interrupt processing on a data packet of the first target position;
selecting a second target position from the key positions of the code stream samples according to the obtained information of the key positions and a first preset mode, and retransmitting the data packet of the second target position;
and thirdly, selecting a third target position from the key positions of the code stream samples according to the obtained information of the key positions and a second preset mode, and performing replacement processing on the data packet of the third target position.
The interrupt processing is that the data packet at the first target position is discarded; retransmission processing, namely copying the data packet at the second target position; the replacement process, that is, the replacement process of the same length for the data packet at the third destination location, may also be a tamper process. The first transformation parameter may include a number of transformations, i.e. a total number of transformations performed on the samples of the code stream. When the conversion times are one time, randomly selecting one operation from the three operations and executing the operation; if the conversion times are multiple, one operation is selected from the three operations in turn, after the selected operation is executed, the current accumulated conversion times are counted, and if the accumulated conversion times are smaller than the preset conversion times, one operation is continuously selected from the three operations and executed until the accumulated conversion times are equal to the preset conversion times.
Further, for the first and second operations, in order to have a better test effect when the attack code stream is used for performing the security test on the multimedia product in the following, in one or more embodiments of the present disclosure, the probability that each key location is selected may be preset according to the importance degree of the data packet of each key location; the higher the importance of the data packet at the key position has a higher influence on the standardization of the code stream sample, so that the probability of being selected is set to be higher. Correspondingly, in the first operation, according to the obtained information of the key positions and the set selected probability, a first target position is selected from all key positions of the code stream samples, the data packet of the first target position is subjected to interrupt processing, namely the data packet of the first target position is discarded, and the code stream samples after the data packet is discarded are determined to be attack code streams. In the second operation, according to the obtained information of the key positions and the set probability of selection, a second target position is selected from the key positions of the code stream samples, and the data packet of the second target position is subjected to retransmission processing, namely the data packet of the second target position is duplicated, and the code stream samples comprising the duplicated data packet are determined as attack code streams. The first target position and the second target position may be the same or different, and the specific data value of the probability that each key position is selected may be set as required in practical application.
As an example, the code stream samples include a data packet 1, a data packet 2, a data packet 3, a data packet 4, and a data packet 5, and if the first target location is the data packet 3, the attack code stream obtained by performing the interrupt processing includes the data packet 1, the data packet 2, the data packet 4, and the data packet 5; if the second target location is the data packet 4, the attack code stream obtained by the retransmission processing includes the data packet 1, the data packet 2, the data packet 3, the data packet 4 and the data packet 5.
For operation three above, the key locations include the encapsulation layer and the encoding layer of the code stream samples, i.e., the encapsulated data and the encoded data. Wherein, the package data comprises a format identification field, a grammar structure identification field, a key grammar parameter field, a non-key grammar parameter number segment and the like, and the code data comprises key code data, non-key code data and the like. In order to ensure that the attack code stream obtained by performing the substitution processing maintains the original format characteristics of the code stream sample, that is, to ensure that the format type and the key grammar are not thoroughly destroyed, in one or more embodiments of the present disclosure, according to the influence degree of each field included in the encapsulation data and the encoding data on the code stream sample, the probability of each field being selected is preset, and the influence degree is also high, and the probability of being selected is lower; and quantifying the influence degree of each field on the code stream sample, and representing by adopting an attack weight, wherein after the field with larger attack weight is subjected to replacement treatment, the influence on the original code stream sample is larger, and the attack degree is stronger. Thus, the greater the attack weight, the lower the probability of being selected. In general, the format identification field plays an important role in parsing the code stream, and in order to ensure that the format identification field can be normally parsed when the security test is performed on the multimedia product by adopting the attack code stream, the probability of being selected by the format identification field can be set to be low, and the attack weight can be set to be high; the format identification field is, for example, "FLV" for FLV (Flash Video) format start, i.e., 0x464C56. The number of the grammar structure identification fields is generally small, the selected probability can be properly increased relative to the format identification fields, and the attack weight is properly reduced; the syntax structure identification field is e.g. "LIST" in AVI (Audio Video Interleaved, audio video interleave format) format, i.e. 0x495354. A key syntax parameter field, which is a main test object for performing security test of the multimedia product, so that the probability of being selected can be set to a high probability; key syntax parameter fields such as wide high bytes in MP4 format moov/trak/tkhd. Non-critical grammar parameter fields, the security problem is usually less, so the selected probability is set to be medium probability; non-critical syntax parameter fields such as the creation time field in MP4 format moov/trak/tkhd. The key coding field is also important in the security test of the multimedia product and is used for testing the stability and the security of the multimedia product in decoding and rendering, so that the selected probability can be set as a medium-high probability; key encoding fields such as I-frame data of H264 data. Non-critical coded data, because the data size is large and the occurrence frequency is high, the probability of being selected can be set to be low probability so as to reduce the resource consumption; non-critical encoded data such as P frames in H264 data.
By way of example, the probabilities and attack weights for the various fields described above are found in the following table:
it should be noted that the data in the above table is only for example and not for limitation, and the specific selected probability and attack weight may be set as needed in practical application.
In the generation process of the attack code stream by adopting the third operation, the replacement parameters of the replacement processing are preset. Optionally, the permutation parameter includes an attack weight, and accordingly, as shown in fig. 3, the third operation may include:
202, selecting a third target position from the key positions of the code stream sample according to the preset probability that each key position is selected;
204, performing the data substitution operation with the same length on the code stream data of the selected third target position;
specifically, determining the data length of the code stream data of the third target position, randomly intercepting the code stream data with the determined data length from a preset code stream sample to be replaced, and replacing the code stream data of the third target position with the intercepted code stream data. Or determining the data length of the code stream data of the third target position, intercepting the code stream data of the determined data length from any position except the third target position in the current code stream sample, and replacing the code stream data of the third target position with the intercepted code stream data.
206, determining attack weight corresponding to the selected third target position;
specifically, according to the third target position, the corresponding attack weight is obtained from the preset corresponding relation between the key position and the attack weight.
208, determining the current accumulated attack weight according to the attack weight;
specifically, initializing the accumulated attack weight to be 0, and marking the accumulated attack weight as W0, and updating the accumulated attack weight from W0 to W1 when the attack weight corresponding to the third target position is determined to be W1 after the first replacement operation is performed; and after the second replacement operation is performed, determining that the attack weight corresponding to the third target position is W2, updating the accumulated attack weight from W1 to W1+W2, and so on.
210, determining whether the current accumulated attack weight is smaller than the preset attack weight, if yes, returning to step 202, otherwise, ending.
The preset attack weight is, for example, 40%, and can be set according to the needs in practical application. It should be noted that, when the substitution operation is performed once, a corresponding attack code stream is obtained, and when the accumulated attack weight is smaller than the preset attack weight, the effect of performing the security test on the multimedia product by adopting the corresponding attack code stream is not optimal; when the accumulated attack weight is not smaller than the preset attack weight, the effect of carrying out security test on the multimedia product by adopting the corresponding attack code stream is better.
Therefore, by presetting the attack weight and carrying out replacement operation based on the attack weight corresponding to the selected third target position, the finally obtained attack code stream is ensured to keep the original format characteristic of the code stream sample, and the finally obtained attack code stream can be used for carrying out effective security test on the multimedia product.
In the generating process of the attack code stream by adopting the third operation, optionally, the replacement parameter includes attack times, and correspondingly, as shown in fig. 4, the third operation may include:
302, selecting a third target position from the key positions of the code stream samples according to the preset probability that each key position is selected;
304, performing a data replacement operation with the same length on the data of the selected third target position;
the specific manner of the conversion operation may be referred to the foregoing related description, and the repetition is not repeated here.
306, counting the current accumulated replacement times;
specifically, the cumulative number of permutations is initialized to 0, and after each permutation operation, the cumulative number of permutations is added to 1.
308, determining whether the current accumulated number of permutations is less than the preset number of permutations, if yes, returning to step 302, otherwise, ending.
The preset replacement times can be set according to the needs in practical application. It should be noted that, when the number of accumulated substitutions is smaller than the preset number of substitutions, the effect of performing security test on the multimedia product by using the corresponding attack code stream is not optimal; when the accumulated replacement times are not less than the preset attack times, the effect of carrying out security test on the multimedia product by adopting the corresponding attack code stream is better.
Therefore, by presetting the replacement times and counting the accumulated replacement times, and executing the replacement operation based on the preset replacement times and the counted accumulated replacement times, the finally obtained attack code stream is ensured to keep the original format characteristics of the code stream sample, and the finally obtained attack code stream can be used for effectively testing the safety of the multimedia product.
In the generating process of the attack code stream by adopting the operation three, optionally, the replacement parameters include attack weights and attack times, and accordingly, as shown in fig. 5, the operation three may include:
402, selecting a third target position from the key positions of the code stream samples according to the preset probability that each key position is selected;
404, performing a data replacement operation with the same length on the data of the selected third target position;
406, determining an attack weight corresponding to the selected third target position;
408, determining the current accumulated attack weight according to the attack weight, and counting the current accumulated replacement times;
410, if it is determined that the accumulated attack weight is smaller than the preset attack weight and the accumulated number of permutations is smaller than the preset number of permutations, the
step402 is returned.
Specifically, determining whether the accumulated attack weight is smaller than a preset attack weight, if not, ending; if yes, it is determined whether the accumulated number of permutations is less than the preset number of permutations, if not, it is ended, if yes, it is returned to step 402.
It should be noted that, for the specific implementation of
steps404 to 408, reference may be made to the foregoing related description, and the repetition is not repeated here.
Therefore, the substitution processing is carried out based on the preset attack weight and the preset substitution times, so that the original format characteristics of the code stream sample are kept by the finally obtained attack code stream, and the multimedia product can be effectively tested for safety based on the finally obtained attack code stream.
It should be noted that, in one or more embodiments of the present disclosure, the first transformation parameter may further include a total attack weight, and the attack weights corresponding to the processing performed on different key positions in the first operation and the second operation are preset, and the transformation processing is performed by counting the accumulated transformation times and the accumulated total attack weights; the above-mentioned process of performing the replacement process according to different replacement parameters may be referred to, and will not be described herein.
In summary, when the code stream sample is a real-time code stream sample, based on a preset first transformation parameter, performing any one or more of interrupt processing, retransmission processing and replacement processing on the code stream sample to obtain an attack code stream; the method not only ensures that the finally obtained attack code stream keeps the original format characteristic of the code stream sample, but also can carry out effective security test on the multimedia product based on the finally obtained attack code stream.
Further, in the foregoing step 106-6, the transformation processing is performed on the code stream samples according to the preset second code stream generating strategy and the obtained information of the key position, including performing at least one of the following according to the preset second transformation parameters:
Thirdly, selecting a third target position from key positions of the code stream samples according to a second preset mode, and performing replacement processing on data packets of the third target position;
fourthly, adding code stream data with any length within a first preset length range at any position of the code stream sample;
and fifthly, deleting the code stream data with any length within the second preset length range at any position of the code stream sample.
Wherein the second transformation parameter may be the same as or different from the first transformation parameter. When the second transformation parameter comprises the total transformation times and the transformation times are one time, randomly selecting one operation from the three operations of the third operation, the fourth operation and the fifth operation, and executing corresponding processing; if the number of times of transformation is multiple, one operation is selected from three operations of operation three, operation four and operation five in turn, and corresponding processing is executed. Further, the specific manner of the third operation may be referred to the foregoing related description, and will not be repeated here. In operation four, in order to ensure that the attack code stream after adding the code stream data maintains the original format characteristics of the code stream sample, a first preset length range is preset. Similarly, in operation five, the second preset length range is preset. The first preset length range and the second preset length range may be the same or different. It should be noted that the code stream data added in the fourth operation may be code stream data extracted from the code stream samples, or may be code stream data extracted from preset code stream data.
Therefore, when the code stream sample is a historical code stream sample, based on a preset second transformation parameter, the attack code stream is obtained by performing any one or more operations of adding code stream data, deleting code stream data and replacing the code stream sample, so that the finally obtained attack code stream is ensured to keep the original format characteristic of the code stream sample, and the multimedia product can be effectively tested for safety based on the finally obtained attack code stream.
After the attack code stream is obtained, security test processing can be performed on the multimedia product based on the attack code stream, specifically, as shown in fig. 6, step 106 further includes:
and step 108, carrying out security test processing on the multimedia product to be tested according to the obtained attack code stream.
Specifically, the obtained attack code stream is input to a multimedia product to be tested so as to test whether the multimedia product can normally play the attack code stream. The input mode of the attack code stream may be a network transmission mode or a mode of opening a local file.
In the embodiment of the application, at least one key position of the code stream sample is obtained by analyzing the code stream sample to be processed, and the code stream sample is subjected to transformation processing according to a preset code stream generation strategy and the obtained key position to obtain an attack code stream. Therefore, on the basis that the code stream generation strategy is configurable, the source of the code stream sample is not required to be paid attention to, the packaging format of the code stream sample is not required to be paid attention to, and the like, the generation of the attack code stream is realized; the generated attack code stream has universality, can be applied to security tests of various multimedia products, not only enables the test effect to be closer to real attack, but also can improve the security and stability of the corresponding multimedia products, and solves the problem of lower security and stability of the current multimedia products.
Based on the same technical concept, one or more embodiments of the present disclosure further provide an apparatus for generating an attack code stream, and fig. 7 is a schematic block diagram of the apparatus for generating an attack code stream according to one or more embodiments of the present disclosure, where as shown in fig. 7, the apparatus includes:
an obtaining
module501, configured to obtain a code stream sample to be processed;
the
parsing module502 is configured to parse the code stream sample to obtain information of at least one key position of the code stream sample;
and a
generating module503, configured to transform the code stream sample according to a preset code stream generating policy and the information of the key position, so as to obtain an attack code stream.
Optionally, the
generating module503 is specifically configured to:
determining the type of the code stream sample;
if the code stream sample is a real-time code stream sample, carrying out transformation processing on the code stream sample according to a preset first code stream generation strategy and the information of the key position to obtain an attack code stream;
and if the code stream sample is a historical code stream sample, carrying out transformation processing on the code stream sample according to a preset second code stream generation strategy and the information of the key position to obtain an attack code stream.
Optionally, the
generating module503 is further specifically configured to perform at least one of the following operations according to a preset first transformation parameter:
according to the information of the key positions, a first target position is selected from the key positions of the code stream samples according to a first preset mode, and the data packet of the first target position is subjected to interrupt processing;
selecting a second target position from the key positions of the code stream samples according to the information of the key positions and the first preset mode, and retransmitting a data packet of the second target position;
and selecting a third target position from the key positions of the code stream samples according to the information of the key positions in a second preset mode, and performing replacement processing on the data packet of the third target position.
Optionally, the
generating module503 is further specifically configured to perform at least one of the following operations according to a preset second transformation parameter:
adding code stream data of any length within a first preset length range at any position of the code stream sample;
deleting the code stream data with any length within a second preset length range at any position of the code stream sample;
And selecting a third target position from the key positions of the code stream samples according to the information of the key positions in a second preset mode, and performing replacement processing on the data packet of the third target position.
Optionally, the
generating module503 is further specifically configured to:
selecting a third target position from the key positions of the code stream samples according to the preset probability that each key position is selected;
performing data replacement operation with the same length on the code stream data of the selected third target position;
determining attack weights corresponding to the selected third target positions;
determining the current accumulated attack weight according to the attack weight;
and if the accumulated attack weight is smaller than the preset attack weight, continuing to execute the replacement processing.
Optionally, the
generating module503 is further specifically configured to:
selecting a third target position from the key positions of the code stream samples according to the preset probability that each key position is selected;
performing data replacement operation with the same length on the data of the selected third target position;
counting the current accumulated replacement times;
And if the accumulated replacement times are smaller than the preset replacement times, continuing to execute the replacement processing.
Optionally, the
generating module503 is further specifically configured to:
selecting a third target position from the key positions of the code stream samples according to the preset probability that each key position is selected;
performing data replacement operation with the same length on the data of the selected third target position;
determining attack weights corresponding to the selected third target positions;
determining the current accumulated attack weight according to the attack weight, and counting the current accumulated replacement times;
and if the accumulated attack weight is smaller than the preset attack weight and the accumulated replacement times are smaller than the preset replacement times, continuing to execute the replacement processing.
Optionally, the apparatus further comprises: a test module;
and the test module is used for carrying out security test processing on the multimedia product to be tested according to the attack code stream.
According to the generating device of the attack code stream, at least one key position of the code stream sample is obtained by analyzing the code stream sample to be processed, and the code stream sample is subjected to transformation processing according to the preset code stream generating strategy and the obtained key position to obtain the attack code stream. Therefore, on the basis that the code stream generation strategy is configurable, the source of the code stream sample is not required to be paid attention to, the packaging format of the code stream sample is not required to be paid attention to, and the like, the generation of the attack code stream is realized; the generated attack code stream has universality, can be applied to security tests of various multimedia products, not only enables the test effect to be closer to real attack, but also can improve the security and stability of the corresponding multimedia products, and solves the problem of lower security and stability of the current multimedia products.
In addition, for the above-described apparatus embodiments, since they are substantially similar to the method embodiments, the description is relatively simple, and reference should be made to the description of the method embodiments for relevant points. Also, it should be noted that, among the respective components of the apparatus of the present invention, the components thereof are logically divided according to functions to be realized, but the present invention is not limited thereto, and the respective components may be re-divided or combined as needed.
Fig. 8 is a schematic structural diagram of an electronic device according to an embodiment of the present disclosure, and referring to fig. 8, the electronic device includes a processor, an internal bus, a network interface, a memory, and a nonvolatile memory, and may include hardware required by other services. The processor reads the corresponding computer program from the nonvolatile memory into the memory and then runs the computer program to form the access restriction window adjusting device on a logic level. Of course, other implementations, such as logic devices or combinations of hardware and software, are not excluded from the present application, that is, the execution subject of the following processing flows is not limited to each logic unit, but may be hardware or logic devices.
The network interface, processor and memory may be interconnected by a bus system. The bus may be an ISA (Industry Standard Architecture ) bus, a PCI (Peripheral Component Interconnect, peripheral component interconnect standard) bus, or EISA (Extended Industry Standard Architecture ) bus, among others. The buses may be classified as address buses, data buses, control buses, etc. For ease of illustration, only one bi-directional arrow is shown in FIG. 8, but not only one bus or type of bus.
The memory is used for storing programs. In particular, the program may include program code including computer-operating instructions. The memory may include read only memory and random access memory and provide instructions and data to the processor. The Memory may comprise a Random-Access Memory (RAM) or may further comprise a non-volatile Memory (non-volatile Memory), such as at least 1 disk Memory.
The processor is used for executing the program stored in the memory and specifically executing:
acquiring a code stream sample to be processed;
analyzing the code stream sample to obtain information of at least one key position of the code stream sample;
And carrying out transformation processing on the code stream samples according to a preset code stream generation strategy and the information of the key positions to obtain an attack code stream.
The method executed by the apparatus for generating an attack code stream disclosed in the embodiment shown in fig. 8 of the present application may be applied to a processor or implemented by a processor. The processor may be an integrated circuit chip having signal processing capabilities. In implementation, the steps of the above method may be performed by integrated logic circuits of hardware in a processor or by instructions in the form of software. The processor may be a general-purpose processor, including a central processing unit (Central Processing Unit, CPU), a network processor (Network Processor, NP), etc.; but also digital signal processors (Digital Signal Processor, DSP), application specific integrated circuits (Application Specific Integrated Circuit, ASIC), field programmable gate arrays (Field-Programmable Gate Array, FPGA) or other programmable logic devices, discrete gate or transistor logic devices, discrete hardware components. The disclosed methods, steps, and logic blocks in the embodiments of the present application may be implemented or performed. A general purpose processor may be a microprocessor or the processor may be any conventional processor or the like. The steps of a method disclosed in connection with the embodiments of the present application may be embodied directly in hardware, in a decoded processor, or in a combination of hardware and software modules in a decoded processor. The software modules may be located in a random access memory, flash memory, read only memory, programmable read only memory, or electrically erasable programmable memory, registers, etc. as well known in the art. The storage medium is located in a memory, and the processor reads the information in the memory and, in combination with its hardware, performs the steps of the above method.
Based on the same technical concept, the embodiments of the present application also provide a computer-readable storage medium storing one or more programs that, when executed by an electronic device including a plurality of application programs, cause the electronic device to execute the method for generating an attack code stream provided by any of the corresponding embodiments of fig. 1 to 6.
In this specification, each embodiment is described in a progressive manner, and identical and similar parts of each embodiment are all referred to each other, and each embodiment mainly describes differences from other embodiments. In particular, for system embodiments, since they are substantially similar to method embodiments, the description is relatively simple, as relevant to see a section of the description of method embodiments.
The foregoing describes specific embodiments of the present disclosure. Other embodiments are within the scope of the following claims. In some cases, the actions or steps recited in the claims can be performed in a different order than in the embodiments and still achieve desirable results. In addition, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In some embodiments, multitasking and parallel processing are also possible or may be advantageous.
It will be appreciated by those skilled in the art that embodiments of the present invention may be provided as a method, system, or computer program product. Accordingly, the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment combining software and hardware aspects. Furthermore, the present invention may take the form of a computer program product embodied on one or more computer-usable storage media (including, but not limited to, disk storage, CD-ROM, optical storage, and the like) having computer-usable program code embodied therein.
The present invention is described with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each flow and/or block of the flowchart illustrations and/or block diagrams, and combinations of flows and/or blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, embedded processor, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions specified in the flowchart flow or flows and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the function specified in the flowchart flow or flows and/or block diagram block or blocks.
These computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the flowchart flow or flows and/or block diagram block or blocks.
In one typical configuration, a computing device includes one or more processors (CPUs), input/output interfaces, network interfaces, and memory.
The memory may include volatile memory in a computer-readable medium, random Access Memory (RAM) and/or nonvolatile memory, such as Read Only Memory (ROM) or flash memory (flash RAM). Memory is an example of computer-readable media.
Computer readable media, including both non-transitory and non-transitory, removable and non-removable media, may implement information storage by any method or technology. The information may be computer readable instructions, data structures, modules of a program, or other data. Examples of storage media for a computer include, but are not limited to, phase change memory (PRAM), static Random Access Memory (SRAM), dynamic Random Access Memory (DRAM), other types of Random Access Memory (RAM), read Only Memory (ROM), electrically Erasable Programmable Read Only Memory (EEPROM), flash memory or other memory technology, compact disc read only memory (CD-ROM), digital Versatile Discs (DVD) or other optical storage, magnetic cassettes, magnetic tape magnetic disk storage or other magnetic storage devices, or any other non-transmission medium, which can be used to store information that can be accessed by a computing device. Computer-readable media, as defined herein, does not include transitory computer-readable media (transmission media), such as modulated data signals and carrier waves.
It should also be noted that the terms "comprises," "comprising," or any other variation thereof, are intended to cover a non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements does not include only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. Without further limitation, an element defined by the phrase "comprising one … …" does not exclude the presence of other like elements in a process, method, article or apparatus that comprises the element.
It will be appreciated by those skilled in the art that embodiments of the present application may be provided as a method, system, or computer program product. Accordingly, the present application may take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment combining software and hardware aspects. Furthermore, the present application may take the form of a computer program product embodied on one or more computer-usable storage media (including, but not limited to, disk storage, CD-ROM, optical storage, and the like) having computer-usable program code embodied therein.
The foregoing is merely exemplary of the present application and is not intended to limit the present application. Various modifications and changes may be made to the present application by those skilled in the art. Any modifications, equivalent substitutions, improvements, etc. which are within the spirit and principles of the present application are intended to be included within the scope of the claims of the present application.