Open-source Android VPN Stack Suite 0.0.1.1

Open-source Android VPN Stack Suite 0.0.1.1 has been released.

Supported platforms:

  • Android (sdk >= 26)
  • Examples (demo files, result files, log files), screenshots:
    Examples

Verification of downloaded files:
—————-

GPG Public Key (SManSoft ECDSA Key) <info@smansoft.com> has been published here: http://smansoft.com/gpg/smansoft.pub.asc.
Android VPN Stack Suite – 0.0.1.1 contains suite of [some_install_file].asc files.
Please, use:
gpg --import ./smansoft.pub.asc
for importing of key and
gpg --verify ./[some_install_file].asc ./[some_install_file]
or
gpg --verify ./[some_install_file].asc
for verification of files, published on this site.
Public GPG ECDSA Key can be imported, using
gpg --keyserver hkp://pgp.mit.edu --recv-keys A408B0FCFD774649
too.

Features of the Android VPN Stack Suite:

  • Simple TCP/UDP socket server (with multi-thread support) (Linux platform), that implements open simple communication protocol (application level):
    • TCP:
      • The Client connects to the TCP Server;
      • The Client sends “socket_client: Hello” to the Server;
      • The Server reads message from the Client;
      • The Server sends “socket_server: Hello” to the Client;
      • The Client reads message from the Server;
      • The Client sends some text message (size 1024 with ‘\0’ symbol)  to the Server;
      • The Server reads text message from the Client and generates inverted message (src: “1234567890” -> inverted: “0987654321”);
      • The Server sends inverted message to the Client;
      • The Client reads message from the Server;
      • The Client send read message to the Server;
      • The Server reads text message from the Client and generates inverted message (src: “0987654321” -> inverted: “1234567890”);
      • The Server sends inverted message to the Client;
      • The Client reads message from the Server;
      • Last received message by the Client should be similar to the first message sent by Client to the Server;
    • UDP:
      • The Client connects to the TCP Server;
      • The Client sends “socket_client: Hello” to the Server;
      • The Server reads message from the Client;
      • The Server opens new UDP connection on new socket port;
      • The Server sends new UDP port number to the Client (using first connection);
      • The Client reads the UDP port number and closes first connection;
      • The Client creates new UDP connection, using received from Server port number;
      • The Client sends “socket_client: Hello” to the Server;
      • The Server reads message from the Client;
      • The Server sends “socket_server: Hello” to the Client;
      • … Then communication protocol (application level) is same as described in TCP section;
  • Simple TCP/UDP socket client (Microsoft Visual Studio C++, Windows platform), that implements previous described protocol;
  • Simple TCP/UDP socket client (Android Studio/Android SDK, Android platform), that implements previous described protocol;
  • VPN Stack Application, that (Android Studio/Android SDK/Android NDK/C, Android platform), that is based on VpnService (Android platform) and implements intermediate IP/TCP/UDP stack (JNI/C/Sockets);
  • VPN Stack Application provides catching, monitoring and processing TCP/UDP/ICMP/IP packages; Then these packages are processed (via JNI) at the Native API level;
  • VPN Stack Application can catch packages from some defined application (if text edit “Filtered Package Name” is defined) or from all applications (if text edit “Filtered Package Name” is empty);
  • VPN Stack Application creates tun0 device (after launching), which is used for catching TCP/UDP/ICMP/IP packages;
  • VPN Stack Application reads packages, sent from Android application(s) from tun0 device, provides processing these packages and creates new or uses saved (sessions) TCP connections (if Android Application sends TCP package) or just uses sendto (if Android Application sends TCP package);
  • VPN Stack Application receives all packages from network, provides processing these packages and writes packages to tun0 device, then packages will be received by Android application(s);
  • VPN Stack Application doesn’t use Raw Sockets;
  • VPN Stack Application writes detailed log to Logcat and to the file
    /data/data/com.smansoft.vpn_stack/files/logs/vpn_stack.log;
  • Follow applications from this suite:
    • Simple TCP/UDP socket server (with multi-thread support) (Linux platform);
    • Simple TCP/UDP socket client (Microsoft Visual Studio C++, Windows platform);
    • Simple TCP/UDP socket client (Android Studio/Android SDK, Android platform) have been created and have been used for testing network connections and for testing the VPN Stack Application;

VPN Stack Application implements follow schema of network stack processing:
vpn_stack.png

Demo of the sm_vpn_stack_suite (Open-source Android VPN Stack Suite):
—————-

Here are results of the execution (log files and screenshots) of the socket_client_vs on Windows 10 x64.

socket_client_vs.1.log
socket_client_vs.2.log

socket_client_vs (Windows 10 x64)
socket_client_vs.1.jpg

Here are results of the execution  (log files and screenshots) of the socket_server on Linux Debian 10 x64.

socket_server.1.log
socket_server.2.log

socket_server (Debian 10 x64)
socket_server.1.jpg
socket_server.2.jpg

Here are results of the execution (screenshot) of the socket_client on Android 8.0 (API 26) x64.

socket_client.1.jpg

Here are results of the execution  (log files and screenshots) of the vpn_stack on Android 8.0 (API 26) x64.

vpn_stack.1.log
vpn_stack.2.log

socket_server (Debian 10 x64)
vpn_stack.1.jpg
vpn_stack.2.jpg
vpn_stack.3.jpg
vpn_stack.4.jpg

Here is list of network interfaces before launching the VPN Service.
ip_addr.1.jpg
Here is list of network interfaces after launching the VPN Service. Device tun0 (is used for catching the network traffic) has been added.
ip_addr.2.jpg

Here are selected results (from vpn_stack.1.log and vpn_stack.2.log):

vpn_stack.1.txt
vpn_stack.2.txt

vpn_stack.5.jpg
vpn_stack.6.jpg

sm_vpn_stack_suite (Android VPN Stack Suite) 0.0.1.1 ® Copyright © 2021 by SManSoft.

Open-source multi-thread demo/template resolving the producer–consumer (bounded-buffer) problem (SM Producer Consumer) 0.0.1.1

Open-source multi-thread demo/template resolving the producer–consumer (bounded-buffer) problem (SM Producer Consumer) 0.0.1.1 has been released.

Supported platforms:

  • Linux (x86_64)
  • Examples (result file, log file), screenshots:
    Examples

Verification of downloaded files:
—————-

GPG Public Key (SManSoft ECDSA Key) <info@smansoft.com> has been published here: http://smansoft.com/gpg/smansoft.pub.asc.
SM Producer Consumer – 0.0.1.1 contains suite of [some_install_file].asc files.
Please, use:
gpg --import ./smansoft.pub.asc
for importing of key and
gpg --verify ./[some_install_file].asc ./[some_install_file]
or
gpg --verify ./[some_install_file].asc
for verification of files, published on this site.
Public GPG ECDSA Key can be imported, using
gpg --keyserver hkp://pgp.mit.edu --recv-keys A408B0FCFD774649
too.

Features of the SM Producer Consumer:
—————-

  • Multi-thread demo/template, that resolves producer-consumer problem (bounded-buffer problem);
  • Using thread support primitives (classes, api), which are parts of the C++ (C++11) language, defined by the standard ISO/IEC 14882:2011;
  • Using several producer-consumer objects, which use suite of limited-size queues shared by various number of threads with various productivity/periodicity/frequency;
  • Writing processed results into the text file (in the special directory);
  • Logging results and applications workflow;
  • Multi-thread (thread-safe) log library, that supports output to the log file and/or console;
  • Multi-thread (thread-safe) log library, supports log level output (TRACE, DEBUG, INFO, WARN, ERROR, FATAL);
  • Usage string secure library in some C-language functions;
  • Self-stopping support, when file ‘.stop‘ is placed in the special directory;

Supported platforms:
—————-

Linux (x64 only):
  • Debian 10;
  • Debian 9;
  • openSUSE 15.1;
  • openSUSE 15.2;
  • Ubuntu 20.04 LTS;
  • Mint 19.3;
  • Mint 20.1;

Demo of the sm_producer_consumer (SM Producer Consumer) tool (Linux):
—————-

Here are the results of the execution of the sm_producer_consumer (SM Producer Consumer) tool on Linux Debian 10 (Buster) x64.

Results of execution (result file, log file and screenshots) below:
sm_producer_consumer.log
sm_producer_consumer.out.txt

sm_producer_consumer.lnx.01.jpg

sm_producer_consumer.lnx.02.jpg

sm_producer_consumer.lnx.03.jpg

sm_producer_consumer.lnx.04.jpg

sm_producer_consumer.lnx.05.jpg

sm_producer_consumer.lnx.06.jpg

sm_producer_consumer (SM Producer Consumer) 0.0.1.1 ® Copyright © 2021 by SManSoft.

Multi-Platform Open-Source sm_calculator (SM Calculator) tool 0.2.0.4

Multi-Platform Open-Source sm_calculator (SM Calculator) tool 0.2.0.4 has been released.

New features of the SM Calculator (0.2.0.4):
—————-

  • Multi-thread (reentrant) version of the parser;
  • Unit tests for testing the multi-thread (reentrant) parser;
  • Multi-thread synchronized mode is used in log_lib;
  • Mutexes api from threads.h (C11 ISO/IEC 9899:2011) has been updated to mutexes api from pthread.h (POSIX);
  • Some bugs have been fixed;

Supported platforms:

  • Windows (x86, x86_64)
  • Linux (x86, x86_64)
  • Examples, the suite of sm_calc_test.in.XX.txt and sm_calc_test.out.XX.txt (also you can find the suite of sm_calc_test.in.XX.txt and sm_calc_test.out.XX.txt in directory /tests in sources):
    Examples

Verification of downloaded files:
—————-

GPG Public Key (SManSoft ECDSA Key) <info@smansoft.com> has been published here: http://smansoft.com/gpg/smansoft.pub.asc.
SM Calculator – 0.2.0.4 contains suite of [some_install_file].asc files.
Please, use:
gpg --import ./smansoft.pub.asc
for importing of key and
gpg --verify ./[some_install_file].asc ./[some_install_file]
or
gpg --verify ./[some_install_file].asc
for verification of files, published on this site.
Public GPG ECDSA Key can be imported, using
gpg --keyserver hkp://pgp.mit.edu --recv-keys A408B0FCFD774649
too.

File Exchanger Tool 0.0.11.11

File Exchanger Tool 0.0.11.11 has been released.

Supported platforms:

  • Windows (x86, x86_64)
  • Linux (x86_64)

File Exchanger – 0.0.11.11 – Linux
File Exchanger Tool – 0.0.11.11 – Windows

Please, see screenshots here: screenshots.
Here are: demo (screenshots (.jpg), video demo (install, run) (.mp4)).

File Exchanger (file_exchanger) Tool is a peer-to-peer files exchanger for Windows/Linux platform.

Overview
—————-
The main features of File Exchanger (file_exchanger) Tool:

  • transfer of files from client to server, using open socket connections;
  • transfer of files from client to server, using SSL connections;
  • control of entirety of received files, comparing of checksum values sent and received files, using CRC-32 algorithm;
  • using transfer of files from client to server, using SSL connections;
  • using follow SSL mode/algorithms (TLSv1.2), if SSL connection is used:
    • ECDHE-ECDSA-AES256-GCM-SHA384
    • TLSv1.2 – version
    • TLS – the protocol used
    • ECDHE – the key exchange mechanism
    • ECDSA – the algorithm of the authentication key
    • AES – the symmetric encryption algorithm
    • 256 – the key size of AES
    • GCM – the mode of AES
    • SHA384 – the MAC used by the algorithm
    • prime256v1 (NIST P-256, secp256r1) – Elliptic Curve, that is used by ECDHE and ECDSA
  • using unique CA of client and server certificates;
  • user can update CA, client/server/gui keys/certificates, using suite of scripts ssl.ecdsa.tar.gz (ReadMe.txt in ssl.ecdsa.tar.gz);
  • using of xml configuration files, which can be updated by user and will be applied without restart of processes (sm_file_send_clns, sm_file_send_srvs);
  • scanning of configured directories, where sent files can be copied;
  • copying of sub-directories with files, saving of sub-directories tree at the server side;
  • support of unicode symbols in file/directory names;
  • backup (with rolling) of sent/received files;
  • server and client modules can be launched as Services (Windows)/Daemons (Linux);
  • console command line control application (only Windows) of client/server Services (requires Administrator permissions);
  • Windows gui application (asynchronous multi-thread GUI), that allows to monitor states of client/server Services, control of client/server Services and change parameters of client/server Services;
  • Linux gui application (Qt-based) (asynchronous multi-thread GUI), that allows to monitor states of client/server Daemons, control of client/server Daemons (when it’s possible, according to users permissions) and change parameters of client/server Deamons;
  • using ECDSA (NIST P-256, secp256r1) for signing/verification parameters, which are sent between client/server and gui applications (Windows/Linux);
  • tool applications don’t use any intermediate servers and transfer files directly between client and server;

Windows gui application: Screenshot 1
Windows gui application: Screenshot 2
Linux gui application (Qt-based): Screenshot 1
Linux gui application (Qt-based): Screenshot 2

Please, see more screenshots here: screenshots.

Read ReadMe.txt for more info.

File Exchanger (file_exchanger) Tool is a free software distributed under the MIT.
Read License.txt for more information about license.

Please, send your notes and questions to info@smansoft.com.

File Exchanger (file_exchanger) Tool ® Copyright © 2018-2019 by SManSoft.

File Exchanger Tool 0.0.9.9

File Exchanger Tool 0.0.9.9 has been released.

Supported platforms:

  • Windows (x86, x86_64)
  • Linux (x86_64)

File Exchanger – 0.0.9.9 – Linux
File Exchanger Tool – 0.0.9.9 – Windows

File Exchanger (file_exchanger) Tool is a peer-to-peer files exchanger for Windows/Linux platform.

Overview
—————-
The main features of File Exchanger (file_exchanger) Tool:

  • transfer of files from client to server, using open socket connections;
  • transfer of files from client to server, using SSL connections;
  • control of entirety of received files, comparing of checksum values sent and received files, using CRC-32 algorithm;
  • using transfer of files from client to server, using SSL connections;
  • using follow SSL mode/algorithms (TLSv1.2), if SSL connection is used:
    • ECDHE-ECDSA-AES256-GCM-SHA384
    • TLSv1.2 – version
    • TLS – the protocol used
    • ECDHE – the key exchange mechanism
    • ECDSA – the algorithm of the authentication key
    • AES – the symmetric encryption algorithm
    • 256 – the key size of AES
    • GCM – the mode of AES
    • SHA384 – the MAC used by the algorithm
    • prime256v1 (NIST P-256, secp256r1) – Elliptic Curve, that is used by ECDHE and ECDSA
  • using unique CA of client and server certificates;
  • user can update CA, client/server keys/certificates, using suite of scripts ssl.ecdsa.tar.gz (ReadMe.txt in ssl.ecdsa.tar.gz);
  • using of xml configuration files, which can be updated by user and will be applied without restart of processes (sm_file_send_clns, sm_file_send_srvs);
  • scanning of configured directories, where sent files can be copied;
  • copying of sub-directories with files, saving of sub-directories tree at the server side;
  • support of unicode symbols in file/directory names;
  • backup (with rolling) of sent/received files;
  • server and client modules can be launched as Services (Windows)/Daemons (Linux);
  • tool applications don’t use any intermediate servers and transfer files directly between client and server;

Read ReadMe.txt for more info.
File Exchanger (file_exchanger) Tool is a free software distributed under the MIT.
Read License.txt for more information about license.

Please, send your notes and questions to info@smansoft.com.

File Exchanger (file_exchanger) Tool ® Copyright © 2018-2019 by SManSoft.