Gehe zu deutscher Webseite

News

Download description:

The nightly build of the GWhoIs fork by ViaThinkSoft !
Daniel Marschall
ViaThinkSoft Co-Founder
Download description:

Dieser inoffizielle Patch behebt einige Fehler in der deutschen Fassung des Spieleklassikers "Blown Away" aus dem Jahr 1994.

Der Patch ist für alle deutschen Fassungen (ALDI Spielebox und Einzelhandel) geeignet.
Daniel Marschall
ViaThinkSoft Co-Founder
Download description:

This patch fixes some smaller graphical issues of the English retail version of Blown Away.
Daniel Marschall
ViaThinkSoft Co-Founder
Project description:



VNag (ViaThinkSoft Nagios) is a framework for PHP which allows developing plguins for Nagios-compatible systems (e.g. Icinga2), following the development guidelines.

The download package contains documentation, examples and many new plugins, e.g. to check WordPress installations.

Beside developing normal Nagios/Icinga plugins (PHP will be called via CLI), you can develop plugins which are additionally served over HTTP.

  • The plugins can be shown via a HTTP-Demon (e.g. Apache) in user's browsers. Beside the output for Nagios (Summary, Verbose information, Performance data), user-defined HTML output can be added, e.g. to complete your Nagios output with more diagrams, pictures, etc. Only one code base is required!

  • The web-output contains a hidden machine readable part, which can be read out with the "WebReader" plugin of VNag. The WebReader plugins reads the machine readable part and outputs the data in the output format which can be read by Nagios. This way, you can monitor things like WordPress version at systems where you have no shell access and/or without Nagios installed.

  • It is also possible to create websites which only have a machine readable part (i.e. you include your VNag output in your existing website). This machine readable part can be optionally signed and/or encrypted.

VNag comes with following plugins pre-installed:

  • 4images_version: Checks 4images installations for updates.
  • file_timestamp: Warns when files are not modified withhin a specific interval/age.
  • ipfm: Checks the log files of the tool "ipfm" and warns when the measured traffic exceeds a given limit.
  • joomla_version: checks Joomla installations for updates.
  • last: Checks the output of the tool "last" and warns when logins from suspicious IP adresses are detected.
  • mdstat: Parses the output of "/proc/mdstat" and warns when drives inside a RAID array have failed.
  • mediawiki_version: Checks MediaWiki installations for updates.
  • net2ftp_version: Checks net2ftp installations for updates.
  • nocc_version: Checks NOCC webmail installations for updates.
  • phpbb_version: Checks phpBB installations for updates.
  • phpmyadmin_version: Checks phpMyAdmin installations for updates.
  • roundcube_version: Checks RoundCube installations for updates.
  • smart: Checks the SMART attributes of harddrives and warns when bad attributes are detected.
  • virtual_mem: Checks the amount of virtual memory (physical memory + swap).
  • webreader: Reads the output of another VNag plugin transferred over HTTP.
  • wordpress_version: Checks WordPress installations for updates.
  • x509_expire: Warns when X.509 (PEM) certificate files reach a specific age.
Daniel Marschall
ViaThinkSoft Co-Founder
Over many years, the software and web services developed by Daniel Marschall were licensed under the terms of LGPLv2 (for libraries and APIs) and GPLv3 (for programs). We are announcing that the licenses of all products by Daniel Marschall are now licensed under the terms of the Apache 2.0 License

Existing projects become implicitly dual-licensed, so you can still use them using the terms of the original GPL licenses.

We will update the license text files and copyright-headers in our packages / sourcecodes as soon as possible. The updated license terms come into force immediately, even if the copyright-headers or license text files are missing in the products / source codes.

The license terms for software and web services by other users of ViaThinkSoft stay unchanged.
Daniel Marschall
ViaThinkSoft Co-Founder
Following method of signing a value is vulnerable, because a Length Extension Attack can be performed:

<?php define('SECRET', ...);
if (
$_REQUEST['validation'] == sha1(SECRET.$_REQUEST['email'])) {
    echo 
"Logged in as ".$_REQUEST['email'];
} else {
    echo 
"Access denied";
?>

Following method is still vulnerable because the HTTP-argument 'email' can be passed as array (&email[]=...) which will result in hash_hmac returning NULL. Also, the comparison is vulnerable to type juggling and timing attack.

<?php define('SECRET', ...);
if (
$_REQUEST['validation'] == hash_hmac('sha256'$_REQUEST['email'], SECRET)) {
    echo 
"Logged in as ".$_REQUEST['email'];
} else {
    echo 
"Access denied";
?>

Following method is safe (as far as I know):

<?php define('SECRET', ...);
if (
hash_equals($_REQUEST['validation'], hash_hmac('sha256'$_REQUEST['email'], SECRET))) {
    echo 
"Logged in as ".$_REQUEST['email'];
} else {
    echo 
"Access denied";
?>
Daniel Marschall
ViaThinkSoft Co-Founder
Download description:

Includes MakeCall.dll, the source code in Delphi as well as a small demo application.
Daniel Marschall
ViaThinkSoft Co-Founder
Project description:

The CallLib API is a minimal API for Windows which initiates calls over the TAPI line. The library MakeCall.DLL contains only two functions:
- GetTapiDevices(buf: PAnsiChar): integer; stdcall;
- MakeCall(phoneNumber: PAnsiChar; deviceId: integer): integer; stdcall;
Daniel Marschall
ViaThinkSoft Co-Founder
Microsoft hat die Fotoanzeige, so wie sie in den vergangenen Windows Versionen zur Verfügung stand, in der neusten Version von Windows 10 versteckt.
Die Programmdateien (C:\Program Data (x86)\Windows Photo Viewer) sind derzeit noch vorhanden, jedoch fehlen die notwendigen Registry-Einträge. Sollten die Dateien fehlen, können Sie von einer alten Windows Installation kopiert werden.

Zum Verwenden der Fotoanzeige erstellen Sie eine Datei mit dem Namen PhotoViewer.reg mit folgendem Inhalt:
(Dieser Inhalt ist von einem Windows 7 System entnommen worden)

Windows Registry Editor Version 5.00

[hkey_classes_root\applications\photoviewer.dll]

[hkey_classes_root\applications\photoviewer.dll\shell]

[hkey_classes_root\applications\photoviewer.dll\shell\open]
"MuiVerb"="@photoviewer.dll,-3043"

[hkey_classes_root\applications\photoviewer.dll\shell\open\command]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
  00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,72,00,75,00,\
  6e,00,64,00,6c,00,6c,00,33,00,32,00,2e,00,65,00,78,00,65,00,20,00,22,00,25,\
  00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,46,00,69,00,6c,00,65,00,73,00,\
  25,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,20,00,50,00,68,00,6f,\
  00,74,00,6f,00,20,00,56,00,69,00,65,00,77,00,65,00,72,00,5c,00,50,00,68,00,\
  6f,00,74,00,6f,00,56,00,69,00,65,00,77,00,65,00,72,00,2e,00,64,00,6c,00,6c,\
  00,22,00,2c,00,20,00,49,00,6d,00,61,00,67,00,65,00,56,00,69,00,65,00,77,00,\
  5f,00,46,00,75,00,6c,00,6c,00,73,00,63,00,72,00,65,00,65,00,6e,00,20,00,25,\
  00,31,00,00,00

[hkey_classes_root\applications\photoviewer.dll\shell\open\droptarget]
"Clsid"="{FFE2A43C-56B9-4bf5-9A79-CC6D4285608A}"

[hkey_classes_root\applications\photoviewer.dll\shell\print]

[hkey_classes_root\applications\photoviewer.dll\shell\print\command]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
  00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,72,00,75,00,\
  6e,00,64,00,6c,00,6c,00,33,00,32,00,2e,00,65,00,78,00,65,00,20,00,22,00,25,\
  00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,46,00,69,00,6c,00,65,00,73,00,\
  25,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,20,00,50,00,68,00,6f,\
  00,74,00,6f,00,20,00,56,00,69,00,65,00,77,00,65,00,72,00,5c,00,50,00,68,00,\
  6f,00,74,00,6f,00,56,00,69,00,65,00,77,00,65,00,72,00,2e,00,64,00,6c,00,6c,\
  00,22,00,2c,00,20,00,49,00,6d,00,61,00,67,00,65,00,56,00,69,00,65,00,77,00,\
  5f,00,46,00,75,00,6c,00,6c,00,73,00,63,00,72,00,65,00,65,00,6e,00,20,00,25,\
  00,31,00,00,00

[hkey_classes_root\applications\photoviewer.dll\shell\print\droptarget]
"Clsid"="{60fd46de-f830-4894-a628-6fa81bc0190d}"

Doppelklicken Sie auf die Datei und bestätigen Sie die Sicherheitsabfragen.

Rechtsklicken Sie auf eine JPEG Datei, dann wählen Sie "Öffnen mit", dann "Andere App auswählen". Dort runterscrollen und auf "Weitere Apps" klicken. Anschließend weiter runterscrollen, bis der Eintrag "Windows Fotoanzeige" erscheint. Diesen Menüpunkt wählen und ggf. die Checkbox unten anhaken, wenn dies die Standard-Anwendung werden soll.

Anmerkung: Die Originaldaten von Windows 10 sind wie folgt:

Windows Registry Editor Version 5.00

[hkey_classes_root\applications\photoviewer.dll]

[hkey_classes_root\applications\photoviewer.dll\shell]

[hkey_classes_root\applications\photoviewer.dll\shell\print]
"NeverDefault"=""

[hkey_classes_root\applications\photoviewer.dll\shell\print\command]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
  00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,72,00,75,00,\
  6e,00,64,00,6c,00,6c,00,33,00,32,00,2e,00,65,00,78,00,65,00,20,00,22,00,25,\
  00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,46,00,69,00,6c,00,65,00,73,00,\
  25,00,5c,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,20,00,50,00,68,00,6f,\
  00,74,00,6f,00,20,00,56,00,69,00,65,00,77,00,65,00,72,00,5c,00,50,00,68,00,\
  6f,00,74,00,6f,00,56,00,69,00,65,00,77,00,65,00,72,00,2e,00,64,00,6c,00,6c,\
  00,22,00,2c,00,20,00,49,00,6d,00,61,00,67,00,65,00,56,00,69,00,65,00,77,00,\
  5f,00,46,00,75,00,6c,00,6c,00,73,00,63,00,72,00,65,00,65,00,6e,00,20,00,25,\
  00,31,00,00,00

[hkey_classes_root\applications\photoviewer.dll\shell\print\droptarget]
"Clsid"="{60fd46de-f830-4894-a628-6fa81bc0190d}"
Daniel Marschall
ViaThinkSoft Co-Founder
Project description:

Ein Bugtracker für Windows, entwickelt in Delphi.
Er kann MySQL und Microsoft SQL-Datenbanken ansteuern.

Derzeit noch im frühen Entwicklungs-Stadium.
Daniel Marschall
ViaThinkSoft Co-Founder
In den letzten Tagen hat der Webauftritt ViaThinkSoft zahlreiche Erweiterungen und Verbesserungen erhalten.

Neben codetechnischen Verbesserungen und kleinen Design-Anpassungen gibt es folgende große Neuerungen:
  • Allgemeines zur Seite:
    • Einbau einer Suchfunktion, um Informationen auf ViaThinkSoft schneller finden zu können (rechts oben)
    • URLs sind nun SEO-Optimiert und dadurch besser lesbar. Projekte können nun z.B. aufgerufen werden über https://www.viathinksoft.de/projects/colormanager
    • Die Webseite ist nun für Mobilgeräte optimiert.
  • In Bezug auf Projekte und Downloads:
    • Screenshotverwaltung wurde implementiert. Screenshots zu Projekten können nun im Mitgliederbereich hinzugefügt werden und werden auf der Projektseite für die Öffentlichkeit angezeigt. Mit Hilfe dieser neuen Funktionalität konnten die "ViaThinkSoft InfoPages" nun vollständig in die Projektseiten migriert werden. (Beispiel einer vollwertigen Projektseite)
    • Es kann nun für jeden Download eine Lizenz festgelegt werden, die auch öffentlich einsehbar ist. Der Endanwender erhält per Link auf eine externe Webseite nähere Informationen zu der Lizenz.
    • Sprache und Betriebssystem werden nun bei den Downloads angezeigt
  • Erweiterung der Benutzerprofile: Im Mitgliederbereich finden Community-Mitglieder nun die Möglichkeit, weitere Messenger und Dienste wie z.B. QQ, Teamspeak oder Discord hinzuzufügen.
  • Die Benutzersuche im Mitgliederbereich funktioniert nun wieder.
  • Die Parsing-Routinen für die ViaThinkSoft Textformatierung wurde komplett erneuert. Dabei sind nun einige neue Tags hinzugekommen, wie z.B. anklickbare, vor Spambots geschützte, E-Mail-Adressen oder das Einbinden von YouTube-Videos. Auch gibt es nun eine Möglichkeit, Smileys für gewisse Abschnitte per BB-Code zu deaktivieren. PHP-Code wird farbig angezeigt.
  • Diverse Bugfixes im Mitgliederbeich in Bezug auf Uploads von Downloads. Die Preload-Funktionalität ist nun wieder funktionell.

Die Multilingualität der Seite und der Projekte/Downloads wird sukzessive in den nächsten Monaten erfolgen.
Daniel Marschall
ViaThinkSoft Co-Founder
Download description:

This package contains php functions for backwards compatibility, which can be included as "prepend" script - this means, that all PHP scripts (called via Apache, CLI etc.) include these scripts and therefore offer the backwards compatibility functions.

Currently, the pack contains following units:
- Replacement of mysql-functions with PHP 7
- Replacement of register_globals
- Replacement for ereg-functions

If you need htmlentities(), htmlspecialchars() or html_entity_decode() with old semantics, you can download compatibility functions here
Daniel Marschall
ViaThinkSoft Co-Founder
Download description:

For the latest source code, please check the SVN repository.
Daniel Marschall
ViaThinkSoft Co-Founder
functions.inc.php

<?php

define
('SIGNED_FORMDATA_SECRET''(place secret here)');

function 
get_signed_fieldname($fieldname) {
        return 
'signed_'.bin2hex($fieldname).'_'.hash_hmac('sha256'$fieldnameSIGNED_FORMDATA_SECRET);
}

function 
get_signed_formdata() {
        
$out = array();
        foreach (
$_REQUEST as $name => $value) {
                list(
$head$enc_fieldname$hash) = array_pad(explode('_'$name3), 3null);
                if (
$head != 'signed') continue;
                
$fieldname hex2bin($enc_fieldname);
                
$expect_hash hash_hmac('sha256'$fieldnameSIGNED_FORMDATA_SECRET);
                if (
hash_equals($expect_hash$hash)) {
                        
$out[$fieldname] = $value;
                }
        }
        return 
$out;
}

page1.php

<?php

include 'functions.inc.php';

echo 
'<form method="POST" action="target.php">';
echo 
'Signed Field1: <input type="text" name="'.get_signed_fieldname('field1').'" value="abc"><br>';
echo 
'Signed Field2: <input type="text" name="'.get_signed_fieldname('field2').'" value="def"><br>';
echo 
'Unsigned Field: <input type="text" name="field3" value="xyz"><br>';
echo 
'<input type="submit">';
echo 
'</form>';

target.php

<?php

include 'functions.inc.php';

print_r(get_signed_formdata());

// Example usage:

foreach (get_signed_formdata() as $name => $value) {
        
mysql_query("UPDATE users SET `$name` = '".mysql_real_escape_string($value)."' where id = ".$_SESSION['user_id']);
}
Daniel Marschall
ViaThinkSoft Co-Founder
Szenario: Eine Anwendung oder App baut eine verschlüsselte Verbindung zu einem Webserver auf. Aufgrund der Verschlüsselung können Sie nicht mittels herkömmlichen Tools wie z.B. Wireshark die Daten mitlesen. Diese Anleitung zeigt, wie Sie mittels eines Linux-Systems (z.B. einem Raspberry Pi) die verschlüsselten Daten aufzeichnen können.

Dies funktioniert jedoch NUR unter folgenden Bedingungen:

1. Die Zielanwendung muss im selben Netzwerk wie die Linux-Maschine laufen. Eine Überwachung über das Internet ist nicht möglich.

2. Die Zielanwendung muss über eine bestimmte Schwachstelle verfügen. Sie muss SSL-Zertifikate akzeptieren, die von einer nicht-vertrauenswürdigen Zertifizierungsstelle (CA) ausgestellt wurden, bzw. es muss eine Möglichkeit geben, eine Zertifikatswarnung zu ignorieren und mit dem Programmablauf fortzufahren, oder dem Zertifikat durch das Hinzufügen in den Stammzertifikatsspeicher explizit zu vertrauen.

3. Die Zielanwendung darf keine zusätzlichen Sicherheitsmaßnahmen wie z.B. Public Key Pinning oder feste IP-Adressen verwenden.

Diese Anleitung ist gerichtet an technisch versierte Personen, die z.B. eine Schadware oder ein auffälliges Programm analysieren möchten. Die Analyse von verschlüsselten Verbindungen ermöglicht es z.B. Sicherheitsforschern, das Verhalten von Schadware zu analysieren. Es ist auch sinnvoll, Programme, die ungewöhnlich häufig Verbindungen zum Internet aufbauen, zu analysieren, um zu prüfen, welche Daten gesendet werden und ob z.B. ein Verstoß gegen den Datenschutz vorliegt.

Achtung: Diese Anleitung darf nicht dazu verwendet werden, um Daten von fremden Personen ohne deren Erlaubnis auszuspähen, oder Dinge wie z.B. einen Kopierschutz auszuhebeln. Die Verwendung erfolgt auf eigene Gefahr; ViaThinkSoft haftet nicht für entstandene Schäden.


Schritt 1: Bestimmung der Ziel-Domain

Im ersten Schritt müssen Sie bestimmen, welche Domain Sie überwachen möchten.

Es gibt verschiedene Möglichkeiten, z.B. können Sie Wireshark verwenden, um die DNS-Anfragen auszulesen.

Eine andere Möglichkeit ist es, in Windows den DNS-Cache zu leeren (ipconfig /flushdns), danach die Zielanwendung zu starten, und gleich danach den DNS Cache abzufragen (ipconfig /displaydns).

In unserem Beispiel möchten wir die Domain www.example.com analysieren.


Schritt 2: Erstellen eines Sicherheits-Zertifikats

Auf der Linux-Maschine erstellen Sie ein Verzeichnis, z.B. /daten/example

Dort geben Sie ein:

openssl req -x509 -newkey rsa:4096 -keyout private.key -out cert.crt -days 365 -nodes -subj '/CN=www.example.com'


Schritt 3: Apache auf der Linux-Maschine einrichten

Erstellen Sie /etc/apache2/sites-available/001-example.conf mit folgendem Inhalt:

<VirtualHost *:443>
        SSLEngine on
        SSLCertificateFile "/daten/example/cert.crt"
        SSLCertificateKeyFile "/daten/example/private.key"
        SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
        ServerName www.example.com
        DocumentRoot /daten/example
</VirtualHost>

<VirtualHost *:80>
        ServerName www.example.com
        DocumentRoot /daten/example
</VirtualHost>

Erstellen Sie einen Symlink

/etc/apache2/sites-available/001-example.conf -&gt; /etc/apache2/sites-enabled/001-example.conf

Starten Sie Apache dann neu:

service apache2 restart


Schritt 4: Überwachungs-Script einrichten

Erstellen Sie das Script /daten/example/proxy.php mit folgendem Inhalt:

<?php

$site 
'https://'.$_SERVER['http_host'];
$remoteDomain $_SERVER['http_host'];
$proxyDomain $_SERVER['http_host'];

# ----------------------------------------------------------------

error_reporting(E_ALL);
ini_set('display_errors'1);

$request $_SERVER['request_uri'];

$ch curl_init();

/* If there was a POST request, then forward that as well.*/
if ($_SERVER['request_method'] == 'POST')
{
    
curl_setopt($chCURLOPT_POSTTRUE);

    
$postvars = array();
    foreach (
$_POST as $key => $val) {
        
$postvars[] = urlencode($key).'='.urlencode($val);
    }
    
$postvars implode('&'$postvars);
    
curl_setopt ($chCURLOPT_POSTFIELDS$postvars);
}


//$url = 'http://whois.viathinksoft.de/req';
$url $site $request;

curl_setopt($chCURLOPT_URL$url);

curl_setopt($chCURLOPT_HEADERTRUE);

$headers getallheaders();

/* Translate some headers to make the remote party think we actually browsing that site. */
$extraHeaders = array();
if (isset(
$headers['referer'])) {
    
$extraHeaders[] = 'Referer: 'str_replace($proxyDomain$remoteDomain$headers['referer']);
}
if (isset(
$headers['origin'])) {
    
$extraHeaders[] = 'Origin: 'str_replace($proxyDomain$remoteDomain$headers['origin']);
}

/* Forward cookie as it came.  */
curl_setopt($chCURLOPT_HTTPHEADER$extraHeaders);
if (isset(
$headers['cookie']))
{
    
curl_setopt($chCURLOPT_COOKIE$headers['cookie']);
}
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);

curl_setopt($chCURLOPT_FOLLOWLOCATIONfalse);
$response curl_exec($ch);

$header_size curl_getinfo($chCURLINFO_HEADER_SIZE);
$headers substr($response0$header_size);
$body substr($response$header_size);

$headerArray explode(PHP_EOL$headers);

/* Process response headers. */
$xx '';
foreach(
$headerArray as $header) {
    
$colonPos strpos($header':');
    if (
$colonPos !== FALSE) {
        
$headerName substr($header0$colonPos);

        
/* Ignore content headers, let the webserver decide how to deal with the content. */
        
if (trim($headerName) == 'Content-Encoding') continue;
        if (
trim($headerName) == 'Content-Length') continue;
        if (
trim($headerName) == 'Transfer-Encoding') continue;
        
/* -- */
        /* Change cookie domain for the proxy */
        
if (trim($headerName) == 'Set-Cookie') {
            
$header str_replace('domain='.$remoteDomain'domain='.$proxyDomain$header);
        }
        
/* -- */
    
}
    
header($headerFALSE);
}

echo 
$body;

curl_close($ch);

// ----------------- Logging

if (substr($body,0,1) == '{') {
    
$body json_encode(json_decode($body), JSON_PRETTY_PRINT);
}

if (
isBinary($body)) {
    
$body "(Binary data)";
}

$logcontent $_SERVER['request_method']." ".$_SERVER['request_scheme'].'://'.$_SERVER['server_name'].':'.$_SERVER['server_port'].$_SERVER['request_uri']."\n";
$logcontent .= "\n";
$logcontent .= "REQUEST HEADERS:\n".print_r(getRequestHeaders(),true);
if (
$_SERVER['request_method'] == 'GET'$logcontent .= "GET FIELDS:\n" print_r($_GET,true);
if (
$_SERVER['request_method'] == 'POST'$logcontent .= "POST FIELDS:\n" print_r($_POST,true);
$logcontent .= "\n";
$logcontent .= "RESPONSE HEADERS:\n".print_r($headerArray,true);
$logcontent .= "RESPONSE BODY:\n$body\n";
$logcontent .= "\n\n\n---------\n\n";

$logcontent str_replace("\n""\r\n"$logcontent);
file_put_contents("log.txt"$logcontentFILE_APPEND);

// ----------------- Functions

function isBinary($str) {
    return 
preg_match('~[^\x20-\x7e\t\r\n]~'$str) > 0;
}

function 
getRequestHeaders() {
    
// https://stackoverflow.com/questions/541430/how-do-i-read-any-request-header-in-php
    
$headers = array();
    foreach(
$_SERVER as $key => $value) {
        if (
substr($key05) <> 'HTTP_') {
            continue;
        }
        
$header str_replace(' ''-'ucwords(str_replace('_'' 'strtolower(substr($key5)))));
        
$headers[$header] = $value;
    }
    return 
$headers;
}

Erstellen Sie /daten/example/.htaccess mit folgendem Inhalt:

RewriteEngine on
RewriteRule ^(.*)$ proxy.php [qsa,l]

Stellen Sie sicher, dass mod_rewrite aktiviert ist:

a2enmod rewrite

Erstellen Sie /daten/example/log.txt mit allen Berechtigungen:

touch /daten/example/log.txt

chmod 777 /daten/example/log.txt



Schritt 5: DNS-Eintrag umlenken

Auf dem Windows PC öffnen Sie die Eingabeaufforderung mit Administrator-Rechten. Dort eingeben:

notepad.exe drivers\etc\hosts

In dieser Datei fügen Sie folgende Zeile hinzu:

1.2.3.4    www.example.com

wobei Sie 1.2.3.4 mit der IP-Adresse Ihres Linux-Systems austauschen.

Alternativ können Sie den DNS-Eintrag auch für andere Geräte im Netzwerk umleiten, wenn Sie einen eigenen DNS-Server (z.B. mittels pihole/dnsmasq) besitzen. In diesem Falle können Sie dann auch Verbindungen von Apps aus Mobilgeräten im Netzwerk überwachen.

Starten Sie nun die Anwendung. Es sollte nun auf der Linux-Maschine die Datei log.txt mit den übertragenen Daten gefüllt werden. Die Anwendung müsste normal funktionieren, da die Daten durch das Proxy-Script ganz normal weitergericht werden ("Man in the middle").


Schritt 6: Hinzufügen des Zertifikats in den Stammzertifikatsspeicher

Sollte die Anwendung nicht funktionieren, kann es daran liegen, dass diese prüft, ob das Zertifikat von einer vertrauenswürdigen Stelle signiert wurde.

Sofern die Anwendung kein Public Key Pinning verwendet, können Sie versuchen, das selbst ausgestellte Zertifikat in dem Stammzertifikats-Speicher Ihres Betriebssystems oder Browsers hinzuzfügen.

Achtung: Dieses Vorgehen ist riskant. Da diese Anleitung keine besonderen Maßnahmen zur Sicherung des privaten Schlüssels (private.key) beschreibt, besteht die Gefahr, dass dieser private Schlüssel dazu verwendet wird, SIE auszuspionieren oder Verbindungen Ihres Computers zu kompomittieren. Sie sollten daher nachdem Sie Ihre Analyse abgeschlossen haben, das Zertifikat wieder aus Ihrem Stammzertifikatsspeicher entfernen.

Unter Windows fügen Sie das Zertifikat wie folgt hinzu:
- Öffnen Sie inetcpl.cpl
- Gehen Sie auf den Reiter Inhalte und dann auf Zertifikate.
- Klicken Sie auf "Importieren", dann auf Weiter.
- Wählen Sie die Datei cert.crt aus und klicken Sie auf Weiter.
- Wählen Sie den Speicher "Vertrauenswürdige Stammzertifizierungsstellen". Klicken Sie dann auf Weiter und Fertig stellen.
Daniel Marschall
ViaThinkSoft Co-Founder
def hms_string(sec_elapsed):
        h = int(sec_elapsed / (60 * 60))
        m = int((sec_elapsed % (60 * 60)) / 60)
        s = sec_elapsed % 60
        return "{}:{:>02}:{:>05.2f}".format(h, m, s)
Daniel Marschall
ViaThinkSoft Co-Founder
import sys
import traceback

try:
        # insert code here
except (KeyboardInterrupt, SystemExit):
        sys.stderr.write("Keyboard interrupt\n")
except Exception as e:
        sys.stderr.write("\n")
        sys.stderr.write("\n")
        sys.stderr.write("** ERROR **\n")
        #sys.stderr.write("Message: {}\n".format(e))
        traceback.print_exc()
        sys.stderr.write("\n")
Daniel Marschall
ViaThinkSoft Co-Founder
1. Bei t-online.de anmelden und ins E-Mail-Center gehen

2. Oben Zahnrad klicken

3. Registerkarte "Zusatzdienste": Prüfen ob der Dienst "SMS, MMS und Fax" aktiviert ist.

4. Registerkarte "Konto-Details": Prüfen, ob eine Fax-Nummer angelegt ist. Wenn nicht, dann eine Faxnummer erzeugen lassen.
Daniel Marschall
ViaThinkSoft Co-Founder
Download description:

This tool can pack and unpack images in the container file BLOWNAWY.ART of the game "Blown Away" by Imagination Pilots.

Following games are supported:
- "Blown Away" (1994)
- "Panic in the Park" (1995)
- "Where's Waldo? At the Circus" (1995)
- "Where's Waldo? Exploring Geography" (1996)
- "Eraser Turnabout" (1997)
- "Virtual K'Nex" (1998)

Included in this download:
- Linux binary files
- 32-Bit Windows binary files
- C source code
Daniel Marschall
ViaThinkSoft Co-Founder
#!/bin/bash
wget https://www.virtualhere.com/sites/default/files/usbserver/vhusbdarm
sudo chmod +x ./vhusbdarm
sudo mv vhusbdarm /usr/sbin
wget http://www.virtualhere.com/sites/default/files/usbserver/scripts/vhusbdpin
sudo chmod +x ./vhusbdpin
sudo mv vhusbdpin /etc/init.d
sudo update-rc.d vhusbdpin defaults

echo "AutoAttachToKernel=1" > /root/config.ini

#sudo reboot
Daniel Marschall
ViaThinkSoft Co-Founder