INetGet - Lightweight CLI front-end to the WinINet API

Please visit http://muldersoft.com/ for news and updates!

Introduction

INetGet is a simple command-line interface to the WinINet API. In other words, it is a program for downloading files via the HTTP (Hypertext Transfer Protocol) or FTP (File Transfer Protocol) protocols. It provides full support for HTTPS (HTTP over TLS) as well as IPv6.

This program provides a similar functionality as the well-known WGet and cURL tools. However, in contrast to those, INetGet is based directly on the "native" Windows Internet programming interface (WinINet). This comes at the advantage that INetGet is very small and lightweight, as it uses the HTTP(S) and FTP services provided by the operating system, instead of having to implement these protocols on its own. There are no external dependencies (e.g. OpenSSL or GnuTLS), except for standard system libraries that are present on every Windows system anyway. Still, advanced features, such as HTTPS and IPv6, are supported. Furthermore, since INetGet is based on the Windows crypto libraries, it uses the Windows certificate store. This means that, in contrast the aforementioned tools, you do not need to provide and maintain your own certificate bundle for HTTPS. Certificate updates as well as security fixes for the underlying cryptographic routines are automatically provided, via Windows Update. On the downside, you will have to trust Microsoft's protocol implementations. And the availability of some features depends on the Windows version.

See here for more details:
http://blogs.technet.com/b/askperf/archive/2007/08/21/under-the-hood-wininet.aspx

System Requirements

INetGet works on Windows Vista or any later Windows version. Windows XP should work too, but is not recommended these days! The 32-Bit version of INetGet runs on all 32-Bit and 64-Bit Windows versions, while the 64-Bit version of INetGet requires a 64-Bit Windows version.

IPv6 support requires Internet Explorer 7 or later. Note that all supported Windows versions (Vista or later) already meet this requirement. Windows XP requires manual update to IE7 in order to enable IPv6 support.

As far as HTTPS support is concerned, all relevant Windows versions (XP or later) support TLS 1.0 as well as the deprecated SSL 2.0 and SSL 3.0 protocols. Support for TLS 1.1 has finally been introduced in Windows 7. And support for TLS 1.2 has been introduced in Windows 8.

See here for more details:
http://blogs.msdn.com/b/kaushal/archive/2011/10/02/support-for-ssl-tls-protocols-on-windows.aspx

Command-Line Usage

The basic command-line syntax of INetGet is extremely simple:

INetGet.exe [options] <target_address> <output_file>

Parameters

The following required parameters must always be included:

Options

The following options may be included, in an arbitrary order:

Exit Codes

If the download completed successfully, INetGet returns a zero (0) exit code. Otherwise, if something went wrong (connection to server failed, file not found, etc), it return a non-zero (1) error code.

Note that only HTTP status codes in the 2xx range will be considered a successful transfer. If the server returns a different status code, e.g. in the 4xx or 5xx range, the transfer has failed.

Examples

Here are some basic examples that show the command-line usage of INetGet:

Configuration Files

INetGet supports reading options from a configuration file. Configuration files can be loaded explicitly by using the --config=<cf> option on the command-line. In addition, INetGet will implicitly load a configuration file that is located in the same directory as the INetGet executable file and that has the same basename as the NetGet executable, but with a .cfg file extension. So, e.g., if the INetGet executable file is called INetGet.exe, then the configuration file called INetGet.cfg (and located in the same directory) will be loaded implicitly, if existing.

Configuration files support the same options that can be specified on the command-line. Furthermore, the option syntax for configuration files is the same as on the command-line, except that configuration files do not require or support the -- option prefix. This means that, e.g., instead of --agent=Foo, the configuration file has to contain agent=Foo. Finally, INetGet expects that there is exactly one option per line in the configuration file. Any lines starting with a "hash" (#) symbol are considered to be comments and will be ignored. Blank lines are ignored too.

Note: If a configuration file is loaded implicitly, this occurs before processing the options given on the command-line. Consequently, you can use the implicitly-loaded configuration file to set up some default options, which then may be overwritten on the command-line.

Anti-Virus Notes

Occasionally, it may happen that your so-called "anti-virus" software mistakenly detects malware (virus, trojan horse, worm, etc.) while you are trying to run the legitimate INetGet application. This is called a false positive and the file actually is not malware! Instead, this is a defect (bug) in your particular anti-virus software! In case that you encounter this kind problem, we highly recommend using VirusTotal.com, Virscan.org or a similar web-service to check the file in question with multiple anti-virus engines. Unless the majority of the anti-virus engines detect malware, it can safely be assumed that the file is indeed clean. Also, please take care with heuristic scan results, such as "suspicious", "generic" or "packed". Those results are not confirmed malware detections – they are highly speculative and (almost certainly) do not indicate a real infection.

An important fact to consider is that, for the developer of a legitimate application, it is impossible to know why a specific "anti-virus" software is defaming her application as malware. That is because anti-virus programs generally are commercial ClosedSource software – and the anti-virus companies do not publish their source codes or reveal their algorithms. Moreover, a zillion of different so-called "anti-virus" programs exist nowadays. Therefore, the application developer can not know what is going on "behind the scenes" in a particular anti-virus software. Consequently, any assumptions on the reasons that trigger the false positive would be nothing but pure speculation! Even worse, anti-virus software is updated frequently, so the reasons why the so-called "anti-virus" software is defaming our application as malware may change constantly.

At this point, it should be clear that implementing workarounds for defective anti-virus software is not a viable option for application developers. Since the false positive is a defect (bug) in the particular "anti-virus" software, it can be fixed only by the developer of the anti-virus software. For this reason, it is important that you, the (paying) customer, contact the support team of the anti-virus company and report the serious problem that exists in their software! Most anti-virus companies provide ways to report false positives in a standardized way, e.g. by means of a webform or an e-mail portal. So please refer to the anti-virus developer's web-site for help and support. Also, when reporting false positives, please be self-confident: As a paying customer, you can demand that false positives get fixed in a timely manner. Otherwise, just get your money back!

Last but not least: Keep in mind that INetGet is free software. This means that source codes of INetGet are freely available to everybody! Thus, in case that you do not trust the provided pre-compiled binaries of INetGet, you may compile your own binaries directly from the source code…

Download

Pre-compiled binaries of INetGet are available from the official download mirrors:

Source Codes

The source codes of INetGet are available from the official Git repository:

Help & Support

For bug reports, feature requests and patch submissions, please refer to the issue tracker on our GitHub project site:

https://github.com/lordmulder/INetGet/issues

License

INetGet is Copyright © 2015 LoRd_MuldeR <>. Some rights reserved.
This software is released under the GNU General Public License (“GPL”), version 2.

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

See also:
http://www.gnu.org/licenses/gpl-2.0-standalone.html

Changelog

Version 1.02 (2015-10-xx)

Version 1.01 (2015-09-26)

Version 1.00 (2015-09-21)

 

e.o.f.