Gehe zu deutscher Webseite

News

Download description:

Das nightly build von GWhoIs von ViaThinkSoft !
Daniel Marschall
ViaThinkSoft Mitbegründer, Security Management
ViaThinkSoft Co-Founder, Security Management
Download description:

StackManager für Linux, insbesondere über SSH Verbindungen.

Verwendet MySQL als Datenbank.

Eine automatisierte Migration auf StackMan for Windows 5.1 ist geplant.
Daniel Marschall
ViaThinkSoft Mitbegründer, Security Management
ViaThinkSoft Co-Founder, Security Management
Umgebung:
Raspberry Pi 3 / Raspbian

Problem:

systemctl meldet:
* systemd-modules-load.service loaded failed failed Load Kernel Modules

journalctl meldet:
Dez 05 13:15:15 ras3 systemd-modules-load[117]: Failed to find module 'lp'
Dez 05 13:15:15 ras3 systemd-modules-load[117]: Failed to find module 'ppdev'
Dez 05 13:15:15 ras3 systemd-modules-load[117]: Failed to find module 'parport_pc'

Lösung:

Sofern kein cups (Drucken) verwendet wird:

1. aptitude remove cups
2. aptitude purge cups
3. Löschen der Datei /etc/modules-load.d/cups-filters.conf (Diese Datei wird bei "aptitude purge cups" nicht gelöscht!)
Daniel Marschall
ViaThinkSoft Mitbegründer, Security Management
ViaThinkSoft Co-Founder, Security Management
Protocols/IdFTP.pas

1. Find:

     IOHandler.DefAnsiEncoding := IIdTextEncoding.Default;

Replace:

     IOHandler.DefAnsiEncoding := IndyTextEncoding_Default;


System/IdGlobal.pas

2. Find:

     EnsureByteEncoding(LBytes, ASrcEncoding, ADestEncoding);

Replace:

     CheckByteEncoding(LBytes, ASrcEncoding, ADestEncoding); // see also http://www.devsuperpage.com/search/Articles.aspx?G=2&ArtID=28638


System\IdStackWindows.pas

3. Find:

     procedure GetSocketOption(ASocket: TIdStackSocketHandle; ALevel: TIdSocketOptionLevel;
       AOptName: TIdSocketOption; var AOptVal; var AOptLen: Integer); override;
     procedure SetSocketOption(ASocket: TIdStackSocketHandle; ALevel: TIdSocketOptionLevel;
       AOptName: TIdSocketOption; const AOptVal; const AOptLen: Integer); override;

Replace:

     procedure GetSocketOption(ASocket: TIdStackSocketHandle; ALevel: TIdSocketOptionLevel;
       AOptName: TIdSocketOption; out AOptVal: integer); override;
     procedure SetSocketOption(ASocket: TIdStackSocketHandle; ALevel: TIdSocketOptionLevel;
       AOptName: TIdSocketOption; AOptVal: integer); override;


4. Find:

     procedure TIdStackWindows.GetSocketOption(ASocket: TIdStackSocketHandle;
       ALevel: TIdSocketOptionLevel; AOptName: TIdSocketOption; var AOptVal;
       var AOptLen: Integer);
     begin
       CheckForSocketError(
         getsockopt(ASocket, ALevel, AOptName,
           {$IFNDEF HAS_PAnsiChar}
           // TODO: use TPtrWrapper here?
           {PAnsiChar}@AOptVal
           {$ELSE}
           PAnsiChar(@AOptVal)
           {$ENDIF},
           AOptLen
         )
       );
     end;

Replace:

     procedure TIdStackWindows.GetSocketOption(ASocket: TIdStackSocketHandle;
       ALevel: TIdSocketOptionLevel; AOptName: TIdSocketOption;
       out AOptVal: Integer);
     var LP : PAnsiChar;
       LLen : Integer;
       LBuf : Integer;
     begin
       LP := Addr(LBuf);
       LLen := SIZE_INTEGER;

       CheckForSocketError({WS}GetSockOpt(ASocket, ALevel, AOptName, LP, LLen));

       AOptVal := LBuf;
     end;


5. Find:

     procedure TIdStackWindows.SetSocketOption(ASocket: TIdStackSocketHandle;
       ALevel: TIdSocketOptionLevel; AOptName: TIdSocketOption; const AOptVal;
       const AOptLen: Integer);
     begin
       CheckForSocketError(
         setsockopt(ASocket, ALevel, Aoptname,
           {$IFNDEF HAS_PAnsiChar}
           // TODO: use TPtrWrapper here?
           {PAnsiChar}@AOptVal
           {$ELSE}
           PAnsiChar(@AOptVal)
           {$ENDIF},
           AOptLen
         )
       );
     end;

Replace:

     procedure TIdStackWindows.SetSocketOption(ASocket: TIdStackSocketHandle;
       ALevel: TIdSocketProtocol; AOptName: TIdSocketOption; AOptVal: Integer);
     begin
       CheckForSocketError(SetSockOpt(ASocket, ALevel, AOptName, PChar(@AOptVal), SIZE_INTEGER));
     end;


System\IdWinsock2.pas

6. Add after the first uses-block:

     type
       UINT32 = Cardinal;
       UINT8 = byte;
Daniel Marschall
ViaThinkSoft Mitbegründer, Security Management
ViaThinkSoft Co-Founder, Security Management
Systemumgebung
- Debian Stretch
- PHP 7
- Apache2 mit suEXEC

Die nachfolgenden Benutzernamen und Verzeichnisse sind Beispielhaft und können selbstverständlich geändert werden. In diesem Beispiel:
- Benutzername: example
- Gruppe: example
- Domain: icinga.example.com
- Heim-Verzeichnis /home/example
- IP-Adresse 123.123.123.123

Um das Beispiel einfach zu halten, wurde SSL nicht eingerichtet. Auch wurde auf die korrekte Symlink-Verknüpfung der Apache-Konfiguration (über sites-available) verzichtet.


Vorbedingungen (einmalig auszuführen)

aptitude update
aptitude install icinga2 icingaweb2

mkdir /home/example/usr_share_icingaweb2
mount --bind /usr/share/icingaweb2/ /home/example/usr_share_icingaweb2

In /etc/crontab hinzufügen:
@reboot  root  mount --bind /usr/share/icingaweb2/ /home/example/usr_share_icingaweb2


adduser example icingaweb2 (damit der Setup-Token gelesen werden kann)

chmod g+w /etc/icingaweb2/enabledModules (nur für das Setup-Modul)

Im Icinga Setup: Der Pipe-Befehlstransport funktioniert nicht, daher muss er über die API erfolgen (Zugangsdaten können eingestellt werden in /etc/icinga2/conf.d/api-users.conf )


Inhalt der Datei /etc/apache2/sites-enabled/icinga2.conf

<VirtualHost 123.123.123.123:80>
        DocumentRoot /home/example/usr_share_icingaweb2/public
        SuexecUserGroup example example

        ServerName icinga.example.com
</VirtualHost>

<Directory /home/example/usr_share_icingaweb2/public>
        Options SymLinksIfOwnerMatch
        AllowOverride None

        SetEnv ICINGAWEB_CONFIGDIR "/etc/icingaweb2"

        EnableSendfile Off

        <IfModule mod_rewrite.c>
                RewriteEngine on
                RewriteBase /
                RewriteCond %{REQUEST_FILENAME} -s [OR]
                RewriteCond %{REQUEST_FILENAME} -l [OR]
                RewriteCond %{REQUEST_FILENAME} -d
                RewriteRule ^.*$ - [NC,L]
                RewriteRule ^.*$ index.php [NC,L]
        </IfModule>

        <IfModule !mod_rewrite.c>
                DirectoryIndex error_norewrite.html
                ErrorDocument 404 /error_norewrite.html
        </IfModule>

        Options +Indexes +FollowSymLinks +ExecCGI -Includes
        AllowOverride All
        Require all granted

        FCGIWrapper /home/example/public_html/cgi-bin/php-fcgi .php
        <FilesMatch \.php$>
                SetHandler fcgid-script
        </FilesMatch>
</Directory>


Inhalt der Datei /home/example/public_html/cgi-bin/php-fcgi

#!/bin/sh
export PHPRC="/etc/php/7.0/cgi"
exec /usr/bin/php-cgi
Daniel Marschall
ViaThinkSoft Mitbegründer, Security Management
ViaThinkSoft Co-Founder, Security Management
Betroffen sind möglicherweise nur Epson Nadeldrucker.

Grund für den Ausfall des Druckers ist ein Windows Update.

Gehen Sie wie folgt vor:

1. Deinstallieren Sie das Update für Ihr jeweiliges Betriebssystem:
KB4048955 (Windows 10 Version 1709)
KB4048954 (Windows 10 Version 1703)
KB4048953 (Windows 10 Version 1607)
KB4048952 (Windows 10 Version 1511)
KB4048956 (Windows 10 Version 1507)
KB4048958 (Windows 8 und 8.1, Windows Server 2012 R2)
KB4048957 (Windows 7)

2. Blenden Sie das Update aus, sodass es nicht noch einmal installiert wird:
In Windows 7: Zuerst Updates suchen. Dann in der Update-Auswahl „Update ausblenden“ klicken.
In Windows 10 muss das Tool KB3073930 heruntergeladen werden, das das Ausblenden des Updates ermöglicht.

3. Starten Sie den PC neu. Der Drucker müsste danach wieder funktionieren.
Daniel Marschall
ViaThinkSoft Mitbegründer, Security Management
ViaThinkSoft Co-Founder, Security Management
You can check your server for common problems with SSL/TLS:

https://www.ssllabs.com/ssltest/

In case you get a lower grade because "Forward Secrecy" is not enabled for all browsers, you can do following configuration change in Apache:

Edit /etc/apache2/mods-enabled/ssl.conf :

1. Replace "SSLCipherSuite HIGH:!aNULL"
with
"SSLCipherSuite HIGH:!aNULL:!eNULL:!kECDH:!aDH:!RC4:!3DES:!CAMELLIA:!MD5:!PSK:!SRP:!KRB5:@STRENGTH"

2. Enable the line "SSLHonorCipherOrder on"

3. Additionally, you can add "SSLStaplingCache shmcb:/var/run/ssl_stapling(32768)"
Daniel Marschall
ViaThinkSoft Mitbegründer, Security Management
ViaThinkSoft Co-Founder, Security Management
Download description:

This editor let you edit the file GAME.BIN
Daniel Marschall
ViaThinkSoft Mitbegründer, Security Management
ViaThinkSoft Co-Founder, Security Management
Download description:

This engine replaces the original 16-bit engine. It is compatible with all Windows Operating Systems beginning with Windows 95.
Daniel Marschall
ViaThinkSoft Mitbegründer, Security Management
ViaThinkSoft Co-Founder, Security Management
Download description:

In the PC game, the "chase scene" (SC24) has a different soundtrack towards the 3DO version.
This patch adds the 3DO soundtrack, which was extended to fit into the longer scene of the PC version.
Daniel Marschall
ViaThinkSoft Mitbegründer, Security Management
ViaThinkSoft Co-Founder, Security Management
Project description:

In this project, you will find various downloads about the PC version of the ancient game "Plumber's Don't Wear Ties".
Daniel Marschall
ViaThinkSoft Mitbegründer, Security Management
ViaThinkSoft Co-Founder, Security Management
Systemkonfiguration:
- Notebook: Dell Precision M4600
- Festplatte: Samsung SSD 750 EVO 250G
- Windows 7 Professional (Problem ist möglicherweise unabhängig vom Betriebssystem)
- Vollverschlüsselung mit TrueCrypt (Problem ist möglicherweise unabhängig von der Verschlüsselung)

Problem:
- Windows bleibt beim Starten im pulsierenden Windows Start-Logo stehen.

Lösung:
- Beim Starten in die Boot-Auswahlliste gehen, dort den Diagnose-Modus aktivieren. Es startet ePSA (Pre-boot Self Assessment) und es wird automatisch eine Schnell-Diagnose durchgeführt.
- Nun die Festplatte auswählen und "Thorough Test" aktivieren
- Die Festplatte wird nun einem genauen Test unterzogen
- Nach Abschluss des Tests, der ohne Fehler abgeschlossen wird, sollte Windows wieder normal starten.

Das Problem ist bisher 2 Mal aufgetreten und wurde wie oben beschrieben gelöst.
Es ist derzeit ungewiss, ob es ein Fehler im Festplatten-Controller oder der Festplatte selbst ist. Der DST (Disk Self Test) scheint das Gerät aus einem Fehlerzustand herauszuholen.
Daniel Marschall
ViaThinkSoft Mitbegründer, Security Management
ViaThinkSoft Co-Founder, Security Management
procedure TForm14.IdHTTPServer1Command(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
  ctx: TMyContext;
begin
  ctx.Context := AContext;
  ctx.RequestInfo := ARequestInfo;
  ctx.ResponseInfo := AResponseInfo;
  ctx.Server := IdHTTPServer1;

  ...
end;


{ TMyContext }

type
  TMyContext = record
    Context: TIdContext;
    RequestInfo: TIdHTTPRequestInfo;
    ResponseInfo: TIdHTTPResponseInfo;
    Server: TIdHTTPServer;
    function GetSesVal(name: string): string;
    function SetSesVal(name, val: string): string;
    procedure SesLogout;
  end;

function TMyContext.GetSesVal(name: string): string;
begin
  if assigned(RequestInfo.Session) or
     (Server.CreateSession(Context, ResponseInfo, RequestInfo) <> nil) then
  begin
    RequestInfo.Session.Lock;
    try
      result := RequestInfo.Session.Content.Values[name];
    finally
      RequestInfo.Session.Unlock;
    end;
  end;
end;

procedure TMyContext.SesLogout;
begin
  if Assigned(RequestInfo.Session) then
  begin
    Server.EndSession(RequestInfo.Session.SessionID);
  end;
end;

function TMyContext.SetSesVal(name, val: string): string;
begin
  if assigned(RequestInfo.Session) or
     (Server.CreateSession(Context, ResponseInfo, RequestInfo) <> nil) then
  begin
    RequestInfo.Session.Lock;
    try
      RequestInfo.Session.Content.Values[name] := val;
    finally
      RequestInfo.Session.Unlock;
    end;
  end;
end;

Daniel Marschall
ViaThinkSoft Mitbegründer, Security Management
ViaThinkSoft Co-Founder, Security Management
The following record will cause memory corruptions (can be detected with FastMM4) because the reference counting of the string inside the record is not correctly handled anymore.

type
  TBuggy = record
    MyString: string;
  end;


Following change will fix the issue:

type
  TWorking = record
    Dummy: Cardinal;
    MyString: string;
  end;


Any additional member to the record will fix the issue.

Tested with Delphi 2007 Professional.
Daniel Marschall
ViaThinkSoft Mitbegründer, Security Management
ViaThinkSoft Co-Founder, Security Management
Folgender Hack sorgt für Abhilfe:

uses
  FastMM4, IdStack;

procedure IndyRegisterExpectedMemoryLeak; // for Indy 10
type
  PObject = ^TObject;
var
  bak: byte;
  m: pointer;
begin
  if DebugHook = 0 then exit;
  bak := DebugHook;
  DebugHook := 0; // AccessViolation nicht zeigen
  try
    // Wir müssen das Symbol GStackCriticalSection in IdStack.pas finden.
    // Leider ist es im implementation-Abschnitt versteckt.
    // Deshalb suchen wir die Adresse mit diesem ekelhaften Hack.

    (*
    TIdStack.DecUsage:
    00634BEC 55               push ebp
    00634BED 8BEC             mov ebp,esp
    00634BEF 51               push ecx
    00634BF0 8945FC           mov [ebp-$04],eax
    IdStack.pas.641: class procedure TIdStack.DecUsage;
    00634BF3 833D7C7B980000   cmp dword ptr [$00987b7c],$00  <---  $00987b7c = GStackCriticalSection  (DecUsage+$9)
    00634BFA 7514             jnz $00634c10
    00634BFC B981020000       mov ecx,$00000281
    00634C01 BA784C6300       mov edx,$00634c78
    00634C06 B8B04C6300       mov eax,$00634cb0
    00634C0B E8940DDDFF       call @Assert
    IdStack.pas.643: Assert(GStackCriticalSection<>nil);
    00634C10 A17C7B9800       mov eax,[$00987b7c]  <---  $00987b7c = GStackCriticalSection (DecUsage+$25)
    00634C15 8B10             mov edx,[eax]
    00634C17 FF12             call dword ptr [edx]
    00634C19 33C0             xor eax,eax
    00634C1B 55               push ebp
    00634C1C 68654C6300       push $00634c65
    00634C21 64FF30           push dword ptr fs:[eax]
    00634C24 648920           mov fs:[eax],esp
    *)

    m := @TidStack.DecUsage;
    m := Pointer(integer(m)+9);
    repeat
      try
        if PObject(PPointer(m)^)^.ClassName = 'TIdCriticalSection' then
        begin
          FastMM4.RegisterExpectedMemoryLeak(PPointer(PPointer(m)^)^);
          break;
        end;
      except
      end;
      m := Pointer(integer(m)+1);
    until false;
  finally
    DebugHook := bak;
  end;
end;
Daniel Marschall
ViaThinkSoft Mitbegründer, Security Management
ViaThinkSoft Co-Founder, Security Management
Project description:

ViaThinkSoft Currency Converter is a framework developed by Daniel Marschall which converts currencies. The latest exchange data is automatically downloaded and cached.

To use ViaThinkSoft Currency Converter, you need an API key from CurrencyLayer.com. Keys with limited access are available for free, and there are paid subscriptions available too.

Learn more about the Currency Converter!
Daniel Marschall
ViaThinkSoft Mitbegründer, Security Management
ViaThinkSoft Co-Founder, Security Management
Download description:

Download the source code for Delphi here
Daniel Marschall
ViaThinkSoft Mitbegründer, Security Management
ViaThinkSoft Co-Founder, Security Management
Project description:

ViaThinkSoft Currency Converter is a framework developed by Daniel Marschall which converts currencies. The latest exchange data is automatically downloaded and cached.

To use ViaThinkSoft Currency Converter, you need an API key from CurrencyLayer.com. Keys with limited access are available for free, and there are paid subscriptions available too.

Learn more about the Currency Converter!
Daniel Marschall
ViaThinkSoft Mitbegründer, Security Management
ViaThinkSoft Co-Founder, Security Management
Download description:

A guestbook for PHP and mySQL from ViaThinkSoft.

Some of the features are:
- Unlocking of entries via email
- Secured using ReCaptcha
- Smileys
Daniel Marschall
ViaThinkSoft Mitbegründer, Security Management
ViaThinkSoft Co-Founder, Security Management
ViaThinkSoft ist im August 2017 auf einen neuen, schnelleren und größeren Server umgezogen.

Die neuen IP-Adressen sind 37.48.104.196 und 2001:1af8:4700:a07e:1::1337 .
Daniel Marschall
ViaThinkSoft Mitbegründer, Security Management
ViaThinkSoft Co-Founder, Security Management