bRAWcap 1.0.1
b-plus Technologies - Ethernet Performance Transmitter Receiver
Loading...
Searching...
No Matches
Main Page

bRAWcap

Manual
Version 1.0.1
Date 2024-11-12

b-plus technologies GmbH
Ulrichsberger Str. 17
94469 Deggendorf
Phone +49 991 270302-0
Fax +49 991 270302-99
E-Mail servi.nosp@m.ces@.nosp@m.b-plu.nosp@m.s.co.nosp@m.m
www.b-plus.com


Legal Notice

Copyright © 2024 b-plus technologies GmbH All contents in this document, in particular texts and graphics, are protected by copyright (all rights reserved). Duplication (copy, print or any other form) as well as electronic distribution of this document is only permitted within statutory provisions or the written permission of b-plus technologies GmbH. b-plus technologies GmbH reserves the right to change technical data without prior notice. Names of products, companies, brands and so forth which are mentioned in this document are trademarks or registered trademarks of their respective owners. The general terms and conditions as well as the provisions of the license agreements apply. See general terms and conditions for more information. This document has been created with due care. b-plus technologies GmbH is not liable for damages which results directly or indirectly from errors, omissions or discrepancies between the product and the document.


Software Copyright

bRAWcap © 2024 b-plus technologies GmbH. All rights reserved! This software, including all code, text, and graphics, is the property of b-plus technologies GmbH or its licensors and is protected by international copyright laws. Unauthorized use, reproduction, or distribution of this software or any portion of it may result in severe civil and criminal penalties, and will be prosecuted to the maximum extent possible under the law. For general terms and Conditions for Software please go to General Terms & Conditions on our Website b-plus.com and download it there: general terms and conditions

Contents

List of Figures

List of Tables

1. General Information

Bitte beachten Sie, dass die folgenden Informationen in englischer Sprache verfasst wurden. Sofern Sie deutsche Unterstützung benötigen, wenden Sie sich bitte an suppo.nosp@m.rt@b.nosp@m.-plus.nosp@m..com.

NOTE This document is in english language

1.1. Technical Support

The technical experts and engineers of b-plus technologies GmbH (“b-plus”) will be glad to offer technical support. b-plus has set itself the objective to develop products that are easy to use and to support you if you want to integrate the b-plus products in your system.

b-plus reserves the right to implement technical modifications without prior notice.

1.2. Error Reporting

If you experience problems, errors, or any blue screens due to bRAWcap or NDIS (Network Driver Interface Specification) (while bRAWcap is used), please contact suppo.nosp@m.rt@b.nosp@m.-plus.nosp@m..com and attach your bRAWcap log files.

Default location for the generated log files is C:\ProgramData\bplus\brawcap\. If the environment variable AVETOSYS_CFG_LOG_PATH exists and is set to a valid path, the log files will be stored there. To get a more detailed logging it is possible to adjust the bRAWcap log level and type via API (Application Programming Interface).

In case of a blue screen, we would prefer that you additionally attach a full or at least default memory dump. The type of memory dump can be configured in Windows - please refer to the official Microsoft documentation. Per default, memory dumps are stored at C:\Windows\MEMORY.DMP.

1.3. Meaning of Symbols

Table 1: Description of used Symbols

Symbol Meaning
CAUTION (yellow):
Instructions that, if ignored, could result in a injury, failure or crash.
ATTENTION (blue):
Instructions that, if ignored, could result in malfunction.
NOTE (grey):
This symbol refers to a note which can clarify a detail or expand on something mentioned. It provides additional context and more details.
TIP (green):
This symbol refers to a tip which can offer a suggestion or give a best practice to follow. It offers something instructional to the reader.
List
Task
Cross Reference
Result

1.4. Disclaimer

CAUTION Interference in network communication
Use of bRAWcap (hereafter called "product") could cause communication issues in the network infrastructure.

  • Read the product documentation and the terms that follow carefully.

THIS PRODUCT MUST BE USED IN SUITABLE TEST ENVIRONMENTS AND BY TRAINED, QUALIFIED AND EXPERIENCED PERSONS WHO ARE AWARE OF THE POSSIBLE EFFECTS OF THE ACTIONS WHICH MAY BE CAUSED BY THE PRODUCT.

This product potentially can alter, modify or jam operational and security-related data of a networked infrastructure.

This product must be used by trained, qualified and experienced persons who possess the required technical skills and sufficient information about manipulation scenarios to assess the consequences of manipulating network communication. Pay attention to exercise the necessary caution when using this product as well as when using any similar product.

Due to its essential role in network communication, it is recommended to only use official release versions of the product. Pre-release or trial versions should never be used, especially in critical environments. Instead, those should only be used for evaluation under test conditions.

1.5. Intended Use and Target Groups

This product is intended to be installed on Windows devices with Ethernet network connections.

  • Take appropriate actions and measures to determine the suitability of the products for any intended purpose beyond the use for which the products have been released (e.g., different stresses/strains or technical conditions) on your own responsibility.
  • Only install and use this product on Windows machines.

Table 2: Description of the Target Groups

Task Target Group Minimum Qualifications
Integration C Software Developer Knowledge in Ethernet communication; networking and experience in C programming.
Installation IT-user Basic knowledge in configuring and using Windows.
Maintenance IT-specialist Deeper knowledge in Windows; including filesystem, error handling and monitoring, command line and power shell usage.
Deinstallation IT-user Basic knowledge in configuring and using Windows.

1.6. Safety Notes and Warning Messages

As stipulated by law, b-plus provides safety information (in this chapter). Warning messages and advices how to avoid malfunction and crashes to the target machine are in the related chapters. Trained specialists made the manual, the explanatory notes and the documentation for the use of the products.

  • Keep the documents for future reference or download the newest version on b-plus.com.
  • For safe and correct operation, obey the instructions in this document before you use the product.

  • If aid is necessary, contact the support of b-plus.

2. Glossary

NDIS
Network Driver Interface Specification
API
Application Programming Interface
CPU
Central Processing Unit
SDK
Software Development Kit
GUI
Graphical User Interface
DLL
Dynamic Linked Library
SC
Service Control Manager
PS
Power Shell

3. Product Description

bRAWcap can be used for low level communication with Ethernet adapters. It makes it possible to send and receive raw Ethernet packets on Windows machines. bRAWcap is optimized for performance. Therefore it tries to consume less CPU (Central Processing Unit) load compared to other drivers. This enables high throughput, which is required for 10G Ethernet adapters, for example. To fit perfectly into user environments, bRAWcap comes with a wide range of configuration options.

3.1. License

For complete functionality bRAWcap requires a license. Such a license can be requested from b-plus.

After requesting a license you will receive an offer of the supported licensing types and their pricing.

To get in touch with bRAWcap, it can also be used without a valid license, but with some limitations (see Demo).

3.2. Demo Mode

If you want to evaluate or test bRAWcap before ordering a licensed version, it is possible to use bRAWcap without a license but with limitations.

The limitations of the demo version are:

  • Receiving/transmitting is allowed for 5 minutes, starting at the first initiated receive/transmit.
  • When the 5 minutes have elapsed, all further receives/transmits will be blocked for 10 minutes. After those 10 minutes have elapsed again, receive/transmit can be initiated again for up to 5 minutes. And so on...
  • Adapter change notifications and requesting additional adapter information is not supported in demo mode. It is only possibly to resolve the adapter name for all available adapters on the current machine.

If this restrictions are not acceptable for your tests and you want to test without any limitation, you can contact servi.nosp@m.ces@.nosp@m.b-plu.nosp@m.s.co.nosp@m.m and request a test license. Test licenses are only valid for a short period of time and should be used only for evaluation purposes.

4. Product Identification

4.1. Scope of Delivery

  • bRAWcap archive containing:
    • This manual.
    • The bRAWcap setup (installer), which contains:
      • This manual, again.
      • bRAWcap driver.
      • bRAWcap library.
      • bRAWcap demo application.
      • bRAWcap uninstaller.
      • The bRAWcap SDK (Software Development Kit).
      • The WIBU Codemeter Runtime.

5. Important Information

5.1. Installation

bRAWcap comes with it´s own setup, which should be the preferred tool for installing/updating bRAWcap. In general, it is not allowed to install multiple instances of bRAWcap at the same time. Therefore, previous installations should always be uninstalled before installing a new version. If you use the bRAWcap setup, it takes care of such an update process and no further action is required.

ATTENTION Manual installation

If you still want to install bRAWcap manually (without using the setup), make sure that the previous bRAWcap version is completely removed before deploying a new version.

In general, it is not allowed to mix up driver and library versions of bRAWcap. If this is the case, the communication between driver and library may be incompatible. In the worst case this can lead to a system crash.

It is allowed and supported to install bRAWcap on a device where winpcap, npcap or another similar filter driver is already installed.

5.1.1. User Guided Setup

5.1.1.1. Installing Guided

First of all the bRAWcap setup checks if bRAWcap is already installed.

NOTE Already installed

If a bRAWcap installation is found, it will ask you if the previous version shall be removed.

Figure 1: Installer Update Message

When going ahead, the bRAWcap uninstaller of the currently installed bRAWcap version will be started. Follow it´s instructions to uninstall the previous version (see Uninstall for detailed information).

The first installer page will be the welcome page. In the next step you have to accept the license terms for bRAWcap to go ahead. Now the component page will appear, which allows to select specific parts of bRAWcap to be installed or skipped.

Figure 2: Installer Component Page

Some components are required and have to be installed always. Those are the driver itself, it´s library, the documentation and the Codemeter runtime. The driver and library are the core features of bRAWcap and their versions shall always be equal to each other. Codemeter runtime is required for licensing and always installed if it is not yet available. When the installed Codemeter version is equal or newer, it will be skipped. If an older version of the Codemeter runtime is detected it will be updated. The bRAWcap demo application(s) are only installed if selected, which is the default case. Same applies to the SDK which is only required for developing applications which want to make use of bRAWcap. Therefore the SDK is not installed per default.

Figure 3: Installer Install Path

After selecting the components you will be asked were to install bRAWcap. The given path will contain bRAWcap components like the documentation, demo(s), SDK and the uninstaller. Some components like the library and the driver instead, are always deployed directly to the system. The next page allows to set some specific settings for bRAWcap, which will be applied during the installation.

Figure 4: Installer Settings Page

Only one setting is currently available. This setting lets you choose whether to enable bRAWcap by default on every supported adapter on the current machine. If this setting is active (default), bRAWcap is enabled on all supported adapters. If it is not active, bRAWcap is not activated on any adapter after installation and must first be activated manually per adapter. In the next step the setup will install all specified components. When the installation has finished the finish page appears.

Figure 5: Installer Finish Page

If the demo was installed you can directly choose to start the demo in receive mode when closing the setup. It is also possible to always open up this documentation directly after closing the setup.

TIP Setup Logging

If the setup was corrupted somehow or something during installation went wrong, you can find a generated log file for each install in the bRAWcap logging path. The default logging path is C:\ProgramData\bplus\brawcap\ (see Support & Error Reporting). Setup log files are named with bRAWcap_installer_year_month_day.log.

If you are looking for an older log file have a look into C:\ProgramData\bplus\brawcap\archive.

5.1.1.2. Uninstalling Guided

It is recommended to use the bRAWcap uninstaller to remove bRAWcap. The uninstaller can be started via Control Panel\All Control Panel Items\Programs and Features\bRAWcap. This entry will be linked to the uninstaller location, which is the bRAWcap installation directory which was selected during installation.

After starting the uninstaller it will show up with a component page. Here you can select which parts of bRAWcap shall be removed.

Figure 6: Uninstaller Component Page

NOTE Codemeter Runtime
The Codemeter Runtime is not removed by default. The reason for this is that other applications on the machine may also use Codemeter. Therefore, removing it may effect other applications, and you will have to check for yourself if this is the case. If you want to remove it anyway, select it explicitly.

The next page depends on the current usage of bRAWcap. If there is any application which has bRAWcap loaded the uninstaller will display a usage page.

Figure 7: Uninstaller Usage Page

When bRAWcap is not in use by any application this page will be skipped. On the usage page you get a list of all applications which have bRAWcap loaded. This list can be refreshed and you also have the ability to try stopping all applications which use bRAWcap.

ATTENTION Uninstaller kills processes
Stopping the applications via the uninstaller is done by a forced kill command. Therefore, it is always recommended to close the applications directly instead.

To proceed with the uninstall of bRAWcap, you must close all applications that use bRAWcap. The next uninstall step is disabled until then. Now you can start the uninstall on the next page. The uninstaller writes to the same log file where the installer writes to. To check if there are any problems with the uninstall, please have a look into this file.

5.1.2. Automated Setup

The bRAWcap setup (installer and uninstaller) supports command line usage. The command line interface allows to configure each option which is available by the guided installation. Therefore the installer/uninstaller has to be called with those command line parameters.

TIP Command line help
To get a complete list of available parameters call the installer/uninstaller executable with /help.

This kind of installation allows you to embed the bRAWcap setup into your own deployment process. With this the bRAWcap setup can be executed completely in the background without any user interaction.

TIP Wait until finished
Per default Windows starts GUI (Graphical User Interface) applications always detached. This means if you just call the bRAWcap installer/uninstaller executable from command line (or batch) it will start the process detached and not wait until the started process has finished. If you want to block/wait until the bRAWcap setup has finished, you have to start it explicitly with the following syntax: start "" /WAIT bRAWcap_Setup_*.exe /S

5.1.2.1. Installing Automated

To get a list of all available command line parameters for the installer use the /help parameter. The installer will then appear with a single dialog showing parameter descriptions and quit after that.

For selecting which components of bRAWcap should be installed use the section switch command line parameters. Section switches are always prefixed with "/" and must be activated/deactivated with "=true/false".

Available section switches are:

  • /demos=true/false (default: true): Preselects if the bRAWcap demo(s) should be installed.
  • /sdk=true/false (default: false): Preselects if the bRAWcap Software Development Kit should be installed.

The following command shows how to preselect all components for installation, before showing the installer GUI.

bRAWcap_Setup_*.exe /demos=true /sdk=true

To configure additional settings or change the installer behavior use the command line options. Command line options are always prefixed with "/". If the option requires a value (not only a flag) the value must be set behind a equal sign (=).

Available option(s) are:

  • /help: Shows the installer command line help.
  • /detachAll=true/false (default: false): If true, it detaches bRAWcap driver from each supported interface after installation.
  • /uninstallParams="Param1 ... ParamN" (default= " "): If bRAWcap is currently installed (update procedure), this parameter allows to specify the parameters passed to the available bRAWcap uninstaller. It is important that the parameters for the uninstaller must be encapsulated in quotes. For available uninstaller parameters see Uninstalling Automated.
  • /S: Use this flag for silent installation, which means that the installer will be executed in the background. This should be the preferred execution if you want to embed bRAWcap into your application setup.
  • /D=Absolute Path (default: C:\Program Files\b-plus\brawcap): Allows to change the installation path. It is important that this is the last command line parameter. The path must be given as "absolute path" and should not be placed in any quotes (even if it contains any whitespace). Whats also important is that the path only contains \ and no /.

If any of the available command line parameters is not explicitly set, it´s default value will be used.

The following command shows how to install bRAWcap

  1. in silent mode
  2. with demos but
  3. without SDK,
  4. detached bRAWcap on all supported interface,
  5. uninstall Codemeter Runtime (on update process and if installed),
  6. and force stopping applications which have bRAWcap loaded (on update process)
  7. to install path C:\Program Files\MyAmazingApplication\bRAWcap
  8. and wait until installer has finished.

    start "" /WAIT "bRAWcap_Setup_*.exe /S /demos=true /sdk=false /detachAll=true /uninstallParams="/cmruntime=true /forceStop=true" /D=C:\Program Files\MyAmazingApplication\bRAWcap"

5.1.2.2. Uninstalling Automated

The uninstaller has the same command line /help parameter for showing a dialog with all it´s supported command line parameters. If set, the uninstaller will exit after showing the help dialog.

For selecting which components shall be removed by the uninstaller use the section switch command line parameters. Section switches are always prefixed with "/" and must be activated/deactivated with "=true/false".

Available section switches are:

  • /cmruntime=true/false (default: false): Preselects if the Codemeter Runtime shall be uninstalled.

The following command shows how to preselect all components for uninstall, before showing the uninstaller GUI.

bRAWcap_Uninstall_*.exe /cmruntime=true

To configure additional settings or change the uninstaller behavior use the command line options. Command line options are always prefixed with "/". If the option requires a value (not only a flag) the value must be set behind a equal sign (=).

Available option(s) are:

  • /help: Shows the installer command line help.
  • /forceStop=true/false (default: false): If true the uninstaller tries to stop all applications which have bRAWcap loaded. This option is only used if the silent flag is set. When the uninstaller fails to stop any application it will abort execution and return an error.
  • /S: Use this flag for silent uninstall, which means that the uninstaller will be executed in the background. This should be the preferred execution if you want to embed bRAWcap into your application setup.

The following command shows how to uninstall bRAWcap

  1. in silent mode
  2. removing Codemeter Runtime
  3. trying to stop all applications which have bRAWcap loaded
  4. and wait until uninstaller has finished.

    start "" /WAIT "bRAWcap_Uninstall_*.exe /S /cmruntime=true /forceStop=true"

TIP Updating
If there is already another bRAWcap installation available on the current machine, you can use the installer parameter /uninstallParams for passing command line parameters to the currently installed bRAWcap uninstaller. Therefore, in case of an update, it is not required to start the uninstaller on your own. The /S flag for silent uninstall is not required and will be used depending on the installer execution. If the installer is executed in background it will also start the uninstaller in background.

5.2. Getting Started

To evaluate bRAWcap and familiarize yourself with its features, it is recommended to have a look at the provided command line demo application. The demo application supports different modes, each one for a specific feature of bRAWcap.

A complete list of all available modes will be shown if the demo is called without any parameter or -h/–help/help.

brawcap-demo.exe <mode> [OPTIONS | help]

Example

brawcap-demo.exe help

Figure 8: Demo Help Output

To select a mode call the bRAWcap demo with one of the supported modes as first argument. Further you can modify each mode with nearly every setting which is provided by the bRAWcap C-API.

To get a list of each setting add a -h/–help behind the selected mode parameter.

brawcap-demo.exe <mode> -h/--help

Example

brawcap-demo.exe receive -h

5.3. Software Development Kit

For integrating bRAWcap into applications use the bRAWcap SDK. The SDK can be selected for installation during the setup and can be copied directly into your project.

5.3.1. Documentation

The API documentation is grouped into different modules. Each module is describing a specific part of the API.

5.3.2. Including

bRAWcap API is written in C and fully compatible to C99. All header files describing the API can be found in sdk\c\include. bRAWcap has in general four header files. It is recommended to always include the base header sdk\c\include\libbrawcap.h, which will than include all other headers for you.

Here is a list of the other headers and a short description of their content:

5.3.3. Linking

The bRAWcap library is only available for x64 architectures. For linking against bRAWcap the SDK contains a dynamic library which can be found in sdk\c\lib. Use the sdk\c\lib\libbrawcap64.lib for linking.

Static linking is currently not supported and therefore a static library is not part of the SDK.

5.3.4. Loading

On each machine where bRAWcap is installed the sdk\c\lib\libbrawcap64.dll will always be deployed to the system directory. This ensures that it is found for loading and that the driver version always corresponds to the library version. Therefore it is not required and recommended to deploy the DLL (Dynamic Linked Library) again with your application. If you deploy the DLL with your application, your deployed DLL (version) will be loaded, instead of the DLL (version) deployed during bRAWcap installation. This results in a different driver and library version.

ATTENTION Different driver and DLL version
Different versions may lead to issues between driver an library communication.

6. Specifications and Requirements

6.1. Windows and NDIS Version

bRAWcap requires at least NDIS version 6.50 which was released with Windows 10 build 1507 (July 2015). Therefore bRAWcap can be used with Windows 10 versions higher or equal to the 1507 build.

7. Third-Party Legal Notice

  • Driver
    [none]
  • Library
    [none]
  • Demo

    cxxopts

    Copyright (c) 2014 Jarryd Beck
    Permission is hereby granted, free of charge, to any person obtaining a copy
    of this software and associated documentation files (the "Software"), to deal
    in the Software without restriction, including without limitation the rights
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    copies of the Software, and to permit persons to whom the Software is
    furnished to do so, subject to the following conditions:
    The above copyright notice and this permission notice shall be included in
    all copies or substantial portions of the Software.
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    THE SOFTWARE.

    PDCursesMod

    The core package is in the public domain, but small portions of PDCursesMod are subject to copyright under various
    licenses. Each directory contains a README file, with a section titled "Distribution Status" which describes the
    status of the files in that directory.
    If you use PDCursesMod in an application, an acknowledgement would be appreciated, but is not mandatory.
    If you make corrections or enhancements to PDCursesMod, please forward them to the current maintainer
    for the benefit of other users.
    This software is provided AS IS with NO WARRANTY whatsoever.

  • Setup

    NSIS

    Copyright
    Copyright (C) 1999-2023 Contributors
    More detailed copyright information can be found in the individual source code files.
    Applicable licenses
    All NSIS source code, plug-ins, documentation, examples, header files and graphics,
    with the exception of the compression modules and where otherwise noted, are licensed under the zlib/libpng license.
    The zlib compression module for NSIS is licensed under the zlib/libpng license.
    The bzip2 compression module for NSIS is licensed under the bzip2 license.
    The lzma compression module for NSIS is licensed under the Common Public License version 1.0.
    zlib/libpng license
    This software is provided 'as-is', without any express or implied warranty.
    In no event will the authors be held liable for any damages arising from the use of this software.
    Permission is granted to anyone to use this software for any purpose, including commercial applications,
    and to alter it and redistribute it freely, subject to the following restrictions:
    The origin of this software must not be misrepresented; you must not claim that you wrote the original software.
    If you use this software in a product, an acknowledgment in the product documentation would be appreciated
    but is not required.
    Altered source versions must be plainly marked as such, and must not be misrepresented as being the original
    software.
    This notice may not be removed or altered from any source distribution.
    bzip2 license
    Redistribution and use in source and binary forms, with or without modification, are permitted provided that
    the following conditions are met:
    Redistributions of source code must retain the above copyright notice, this list of conditions and
    the following disclaimer.
    The origin of this software must not be misrepresented; you must not claim that you wrote the original software.
    If you use this software in a product, an acknowledgment in the product documentation would be appreciated
    but is not required.
    Altered source versions must be plainly marked as such, and must not be misrepresented as being the original
    software.
    The name of the author may not be used to endorse or promote products derived from this software without specific
    prior written permission.
    THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
    TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
    IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
    OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
    OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    Julian Seward, Cambridge, UK.
    jseward@acm.org
    Common Public License version 1.0
    THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT").
    ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
    1. DEFINITIONS
    "Contribution" means:
    a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
    b) in the case of each subsequent Contributor:
    i) changes to the Program, and
    ii) additions to the Program;
    where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
    A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
    acting on such Contributor's behalf. Contributions do not include additions to the Program which:
    (i) are separate modules of software distributed in conjunction with the Program under their own license agreement,
    and (ii) are not derivative works of the Program.
    "Contributor" means any person or entity that distributes the Program.
    "Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or
    sale of its Contribution alone or when combined with the Program.
    "Program" means the Contributions distributed in accordance with this Agreement.
    "Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
    2. GRANT OF RIGHTS
    a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
    royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform,
    distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code
    and object code form.
    b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
    royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer
    the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply
    to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor,
    such addition of the Contribution causes such combination to be covered by the Licensed Patents.
    The patent license shall not apply to any other combinations which include the Contribution.
    No hardware per se is licensed hereunder.
    c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein,
    no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual
    property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any
    other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the
    rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other
    intellectual property rights needed, if any. For example, if a third party patent license is required to allow
    Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing
    the Program.
    d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any,
    to grant the copyright license set forth in this Agreement.
    3. REQUIREMENTS
    A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
    a) it complies with the terms and conditions of this Agreement; and
    b) its license agreement:
    i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
    warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
    fitness for a particular purpose;
    ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect,
    special, incidental and consequential damages, such as lost profits;
    iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and
    not by any other party; and
    iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain
    it in a reasonable manner on or through a medium customarily used for software exchange.
    When the Program is made available in source code form:
    a) it must be made available under this Agreement; and
    b) a copy of this Agreement must be included with each copy of the Program.
    Contributors may not remove or alter any copyright notices contained within the Program.
    Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably
    allows subsequent Recipients to identify the originator of the Contribution.
    4. COMMERCIAL DISTRIBUTION
    Commercial distributors of software may accept certain responsibilities with respect to end users, business partners
    and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who
    includes the Program in a commercial product offering should do so in a manner which does not create potential
    liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering,
    such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor
    ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims,
    lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused
    by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a
    commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any
    actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must:
    a) promptly notify the Commercial Contributor in writing of such claim, and
    b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and
    any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own
    expense.
    For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor
    is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
    related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
    Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
    those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a
    result, the Commercial Contributor must pay those damages.
    5. NO WARRANTY
    EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
    CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF
    TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible
    for determining the appropriateness of using and distributing the Program and assumes all risks associated with its
    exercise of rights under this Agreement, including but not limited to the risks and costs of program errors,
    compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or
    interruption of operations.
    6. DISCLAIMER OF LIABILITY
    EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
    ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
    PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY
    RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
    7. GENERAL
    If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the
    validity or enforceability of the remainder of the terms of this Agreement, and without further action by the
    parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid
    and enforceable.
    If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software
    (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such
    Recipient under this Agreement shall terminate as of the date such litigation is filed. In addition, if Recipient
    institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that
    the Program itself (excluding combinations of the Program with other software or hardware) infringes such
    Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
    litigation is filed.
    All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
    conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of
    such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and
    distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement
    and any licenses granted by Recipient relating to the Program shall continue and survive.
    Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the
    Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right
    to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement
    Steward has the right to modify this Agreement. IBM is the initial Agreement Steward. IBM may assign the
    responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement
    will be given a distinguishing version number. The Program (including Contributions) may always be distributed
    subject to the version of the Agreement under which it was received. In addition, after a new version of the
    Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new
    version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the
    intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
    otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
    This Agreement is governed by the laws of the State of New York and the intellectual property laws of the
    United States of America. No party to this Agreement will bring a legal action under this Agreement more than one
    year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.
    Special exception for LZMA compression module
    Igor Pavlov and Amir Szekely, the authors of the LZMA compression module for NSIS, expressly permit you to
    statically or dynamically link your code (or bind by name) to the files from the LZMA compression module for
    NSIS without subjecting your linked code to the terms of the Common Public license version 1.0. Any modifications
    or additions to files from the LZMA compression module for NSIS, however, are subject to the terms of the
    Common Public License version 1.0.

  • Doc

    doxygen-awesome-css

    MIT License
    Copyright (c) 2021 - 2023 jothepro
    Permission is hereby granted, free of charge, to any person obtaining a copy
    of this software and associated documentation files (the "Software"), to deal
    in the Software without restriction, including without limitation the rights
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    copies of the Software, and to permit persons to whom the Software is
    furnished to do so, subject to the following conditions:
    The above copyright notice and this permission notice shall be included in all
    copies or substantial portions of the Software.
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    SOFTWARE.

8. Appendix

8.1. Frequently Asked Questions

8.1.1. Check Driver Status

Per default, bRAWcap will be started during system boot. To see if bRAWcap driver is running or not use the Windows Service Control Manager (SC (Service Control Manager)).

Therefore open a command line and type:

sc query brawcap

This will give you a similar output to the screenshot below.

Figure 9: Query Driver State

If you want to stop bRAWcap, close all applications which have loaded the bRAWcap library and then use the following command.

sc stop brawcap

NOTE Entering stop state
The driver will only initiate it´s stopping after all open bRAWcap handles are closed.

NOTE Stopping in demo mode
If bRAWcap is running in demo mode (without valid license), stopping the driver is delayed. During this period the driver will be in the STOP_PENDING state.

To manually start bRAWcap the following command can be used.

sc start brawcap

8.1.2. De-Activate Driver on Adapters

bRAWcap supports all Ethernet adapters and will automatically attach to each detected Ethernet adapter during installation. It is also possible to deactivate bRAWcap for all detected Ethernet adapters per default by using the setup (see setup settings).

To (de)activate bRAWcap after installation on some adapters you can (un)check the bRAWcap entry for each adapter via it´s property page (Control Panel/Network and Internet/Network Connections/Properties).

Figure 10: Network Adapter Properties

There is another way of deactivating bRAWcap on specific adapters by using the PowerShell (PS (Power Shell)) NetAdapter cmdlet. The following command lists the activated drivers on the given adapter.

Powershell:

Get-NetAdapterBinding -Name [...]

Example output:

Figure 11: Read Network Adapter Bindings

To (de)activate bRAWcap via PowerShell use the following command.

Powershell:

Set-NetAdapterBinding -Name [...] -ComponentID bplus_rawcap -Enabled true/false

Example output:

Figure 12: Set Network Adapter Bindings

8.1.3. High CPU Load

First of all bRAWcap is handle based, which means that there can be several handles attached to the same adapter. This makes it possible that several processes (applications) can use bRAWcap independent from each other. If several applications use bRAWcap with the same receive filter for example, the CPU load will increase. Especially if the handles use no filtering (all packets are processed) the resulting CPU load have to be multiplied by the number of handles (for example if one handle produces 3% CPU load, than three handles will result in 9% CPU load).

In general it is recommended to set the receive filter very precisely, that only packets which are really required are processed by bRAWcap. Overlapping filters on the same adapter should be avoided, if possible.

bRAWcap also allows to only process a subpart of each packet and not always the hole packet (see brawcap_filter_bytes_to_capture_set API function documentation). So if you are not interested in headers for example, configure bRAWcap to only supply the payload without headers.

NOTE Filtering vs Supplying
If you set bRAWcap to only process a subpart of the packet, it is still possible to set the filter for the hole packet. For example if you do not want the header bytes to be part of the packet, you can still set a filter on those header bytes.

8.2. Version History

Update history of bRAWcap and all of it´s components.

8.2.1. Version 0.1.0

Release Date: 2022-12-15

‍Highlights

  • Initial release - only demo mode supported.

‍Changes

  • Driver & Library
    • Adapter
      • Possibility to scan the target for supported adapters.
      • Translation between several adapter information (GUID, MAC, Description, FriendlyName).
      • Reading current adapter properties/states (Speed Rx/Tx, MTU, IPv4/6, Operation, Connection).
      • Event notification on adapter changes.
    • Receiving
      • Single packets without additional buffer handling.
      • Multiple packets by configurable API buffer(s), with callback registration.
      • VLAN tagging support.
      • Filtering packets with user defined byte mask filter.
      • (De)activate packet indication - forwarding to network stack.
      • Dynamic configuration of driver receive buffers.
      • Configuration of adapter/hardware filters (which will be applied directly on the NIC), e. promiscuous mode.
      • Choose between several receive timestamp modes (system time, QPC or hardware timestamp), depending on adapter capabilities.
      • Direction configuration, which allows to select different receive modes. Only received packets from NIC, only transmitted packets on the NIC - from upper network stack, or both.
    • Monitoring
      • Multiple receive packet drop counters, for different drop reasons and locations.
      • Multiple receive packet counters, for different locations, e.g. at NIC level, driver before/after filtering.
      • Receive packet counters, for user space exchange.
    • Generic
      • Configurable (detailed) file logging, which allows to select log levels for different (sub parts).
      • Support of several concurrent bRAWcap handles to the same adapter.
  • Demo App
    • Added modes for demo application (only receive mode is currently supported).
    • Receive demo command line parameters for setting available bRAWcap receive configuration.
    • Detailed help command describing each command line parameter.
    • Structured console output to get a overall feedback about the current status.
  • Setup
    • Select between components which you want to install.
    • Detailed file logging.
    • Choose if bRAWcap should be (de)activated per default, on all supported adapters after installation.

‍Bugfixes

  • Driver & Library
  • Demo App
  • Setup

‍Open Issues

  • Driver & Library
  • Demo App
    • Console output formatting issues if running in Windows Terminal.
  • Setup

8.2.2. Version 0.2.0

Release Date: 2023-03-31

‍Highlights

  • We are still in a "PRE-RELEASE" state.
  • This version supports DEMO mode only. Licensing is still under development.
  • Added packet transmission feature.
  • A lot of changes to the API. This was required to increase usability and compatibility for later modifications. API should be in a productive state now and we try to keep further changes to a absolute minimum.
  • Extended and redesigned documentation.

‍Changes

  • Driver & Library
    • Adapter
    • Receiving
      • A lot of refactoring in receive resource handling.
    • Transmitting
      • Introduced transmit feature.
    • Monitoring
      • Restructured statistics to allow extensions in upcoming releases without breaking the compatibility.
    • Generic
      • Removed own datatype definitions, instead bRAWcap now always includes the required Windows headers.
      • Reduced public structures to a absolute minimum, to increase API compatibility.
      • Added a lot of API documentation (not yet completely finished).
      • Some examples are now available, more will be added with the next version.
  • Demo App
    • Supports transmit mode now (to get all parameters for this mode use "brawcap-demo.exe transmit -h").
    • Improved console output (better readability and highlighting).
    • Specified start parameters are now visible during runtime, for each mode.
  • Setup
    • Added usage check to uninstaller.
    • Made setup fully compatible with silent mode (background execution), via command line parameters. This makes it possible to embed the bRAWcap setup into any deployment process.
    • Added Codemeter Runtime to setup (for later licensing purposes).

‍Bugfixes

  • Driver & Library
    • Generic
      • Fixed library unloading.
      • Fixed driver crash happening when driver is deactivated on a adapter while IO controls are pending.
  • Demo App
    • Console output fixed for Windows "Terminal".
  • Setup

‍Open Issues

  • Driver & Library
  • Demo App
  • Setup

8.2.3. Version 0.3.0

Release Date: 2023-06-02

‍Highlights

  • We are still in a "PRE-RELEASE" state.
  • Now licensing is supported - unlimited use with all features possible

‍Changes

  • Driver & Library
    • Generic
      • Added more examples to SDK.
      • Improved SDK and manual documentation.
      • Added codemeter licensing.
  • Demo App
  • Setup

‍Bugfixes

  • Driver & Library
    • Generic
      • Could not apply no timestamp mode.
  • Demo App
  • Setup

‍Open Issues

  • Driver & Library
  • Demo App
  • Setup

8.2.4. Version 1.0.0

Release Date: 2024-02-01

‍Highlights

  • This is the first official version of our bRAWcap.
  • Stable reception and transmission.
  • API is now fixed and will be kept compatible by future minor/patch releases.

‍Changes

  • Driver & Library
    • Generic
      • Improved driver IO controls to allow asynchronous calls (e.g. for requesting stats while transmitting/receiving).
    • Receiving/Filtering
      • Filters are now a submodule of receiving (because they are only applicable for reception).
    • Monitoring/Statistics
      • Checking for supported adapter stats is now possible via macro.
    • Time Stamping
      • Improved fallback time stamping behavior if selected mode is unavailable.
    • Adapter
      • 5G uplink speeds are known now - they was reported as "unknown" before.
  • Demo App
    • Generic
      • Improved command line parameter descriptions.
      • It is now possible to adjust display refresh rate with +/- during runtime.
      • Console output now signals, if demo is going to be stopped (stop pending).
      • Demo can be stopped now (gracefully and immediately) by using the ESC key.
      • For each mode the displayed adapter statistics will show if the corresponding counter is supported.
      • It is now possible to generate a log file for each used adapter containing the statistic counters (–log-stats).
      • Improved accuracy of displayed transmit/receive rates.
    • Receive
      • It is now possible to specify a receive filter via command line parameter (–filter)
      • Added column for adapter dropped packets.
    • Transmit
      • Added new parameter (–dummy-packet-dest-mac) which allows to specify a target Ethernet MAC for the generate dummy packet.
  • CPP Wrapper
    • Initial release of bRAWcap C++ wrapper for the SDK contained C API (also available at GitHub).
  • Setup
    • Now supports german language

‍Bugfixes

  • Driver & Library
    • Generic
      • Could not apply no timestamp mode.
    • Receiving/Transmitting
      • Fixed possible crash when stopping process while transmission/reception is still active.
    • Adapter
      • brawcap_adapter_description_by_handle could crash if description pointer was invalid.
      • Changed internal Windows API call to support old Windows 10 versions (< 1709).
    • Monitoring/Statistics
      • Fixed macro BRAWCAP_STATS_RX_ADAPTER_DROPPED_PACKETS_TOTAL_VALID - syntax issue.
      • Driver now saves statistics of already closed handles and adds them to the total "driver" stats since driver start.
  • Demo App
    • Generic
      • Improved stop handling when demo is killed with CTRL+C (by resetting the original console attributes, e.g. font size...).
    • Transmit
      • Time gap for dummy frames was not used anymore if a transmission buffer was transmitted once.
  • Setup
    • Added required VC re-distributable to installer, will be automatically installed if no supported version is already available.

‍Open Issues

  • Driver & Library
  • Demo App
  • Setup

8.2.5. Version 1.0.1

Release Date: 2024-11-05

‍Highlights

  • Updated driver signature method to Microsoft Attestation signature. Driver can no be installed and executed on Windows 10 & 11 with Secure Boot activated.

‍Changes

  • Driver & Library
    • Generic
      • Added new API function for activating several log types and log levels at once (brawcap_log_levels_set)
  • Demo App
    • Generic
      • Command line parameter to adjust demo log levels.
  • CPP Wrapper
    • Added new API function for activating several log types and log levels at once (BRAWcap::LogLevelsSet)
  • Setup
    • Improved driver installation-file to isolate driver in Windows driver store depending on Windows version
    • All b-plus and third party licenses will be available in installation directory ./licenses subpath

‍Bugfixes

  • Driver & Library
    • [none]
  • Demo App
    • [none]
  • Setup
    • [none]

‍Open Issues

  • Driver & Library
    • [none]
  • Demo App
    • [none]
  • Setup
    • [none]