TrueCrypt – Something very Strange is going on!!!

I don’t know what is going on with TrueCrypt. If you are using TrueCrypt then you should remove it immediately from your computer (do NOT upgrade it either).

Late last week, TrueCrypt’s web site posted a very strange message:

WARNING: Using TrueCrypt is not secure as it may contain unfixed security issues

This page exists only to help migrate existing data encrypted by TrueCrypt.

All of the encryption source code has been removed from SourceForge but the decryption code remains. A source code diff of the two versions has been posted, and the new release appears to simply remove much of what the software was designed to do.

And someone posted the following very interesting comment:

Odd, 6 hours ago someone updated the TruCrypt-key.asc files, then 3 hours later posted all the new binaries. Also odd is whoever posted the new binaries completely yanked all the previous ones, leaving only the new and questionable binary available for download.

Of course, there are a million theories about what is going on:
– NSA has disabled TrueCrypt
– NSA has put in a backdoor to TrueCrypt
– The TrueCrypt team received a National Security Letter (NSL)
– The site has been hacked by the underworld/mob etc.

It really does not matter, about which crazy/wild theory is true, if you are using TrueCrypt, I would stop using it ASAP and switch to another product but whatever you do, do NOT upgrade to the latest release of TrueCrypt.

Finally, I have removed all links related to TrueCrypt from Capitalware’s web site.

Regards,
Roger Lacroix
Capitalware Inc.

Linux, macOS (Mac OS X), Open Source, Security, Unix, Windows Comments Off on TrueCrypt – Something very Strange is going on!!!

Downloading WebSphere MQ v8.0 from the Passport Advantage Web site

IBM has posted an article detailing the part number and description for downloading WebSphere MQ v8.0 from IBM’s Passport Advantage web site.
http://www.ibm.com/support/docview.wss?uid=swg24037501

The article has part numbers and descriptions for both MQ Server and MQ Client for AIX, HPUX, IBM i, Linux, Solaris and Windows.

Regards,
Roger Lacroix
Capitalware Inc.

IBM i (OS/400), IBM MQ, Linux, Unix, Windows Comments Off on Downloading WebSphere MQ v8.0 from the Passport Advantage Web site

New: Message Multiplexer v1.4.1

Capitalware Inc. would like to announce the official release of Message Multiplexer (MMX) v1.4.1.

Message Multiplexer is an application that will get a message from a queue and output it to one or more queues. The context information (MQMD) is maintained across the message put(s).

    Updates for this release:

  • Fixed an issue with being started by a triggered message

For more information on Message Multiplexer, please go to:
https://www.capitalware.com/mmx_overview.html

Regards,
Roger Lacroix
Capitalware Inc.

Capitalware, IBM i (OS/400), IBM MQ, Linux, Open Source, Unix, Windows, z/OS Comments Off on New: Message Multiplexer v1.4.1

Client-side Security Exit for DTCC – More Free MQ Software

Capitalware Inc. would like to announce new software called: Client-side Security Exit for Depository Trust Clearing Corporation (SX4DTC2) and Client-side Security Exit for DTCC for z/OS (z/SX4DTC2). SX4DTC2 and z/SX4DTC2 are ‘licensed as free’ software. i.e. Same as how IBM licenses MQ Client software.

SX4DTC2 and z/SX4DTC2 is a new solution that allows a company to perform verification with a DTCC (Depository Trust Clearing Corporation) queue manager.

  • SX4DTC2 is a client-side security exit that will operate with WebSphere MQ v6.0, v7.0, v7.1 or v7.5 in Windows, Unix, IBM i and Linux environments.
  • z/SX4DTC2 is a client-side security exit that will operate with WebSphere MQ v5.3.1, v6.0, v7.0 or v7.1 for z/OS environments.

Both SX4DTC2 and z/SX4DTC2 are licensed as a free product. They are free to use but support is not included. A support license may be purchased.

For more information about SX4DTC2, please go to:
https://www.capitalware.com/sx4dtc2_overview.html
Or for z/SX4DTC2, please go to:
https://www.capitalware.com/sx4dtc2_zos_overview.html

Regards,
Roger Lacroix
Capitalware Inc.

Capitalware, IBM i (OS/400), IBM MQ, Licensed As Free, Linux, Security, Unix, Windows, z/OS Comments Off on Client-side Security Exit for DTCC – More Free MQ Software

MQ Set UserID – More Free MQ Software

Capitalware Inc. would like to announce new software called: MQ Set UserID (MQSUI) and MQ Set UserID for z/OS (z/MQSUI). MQSUI and z/MQSUI are ‘licensed as free’ software. i.e. Same as how IBM licenses MQ Client software.

MQSUI and z/MQSUI provides the ability to explicitly set a UserID via a MQ Channel’s Send, Receive or Message Exit.

  • MQSUI is an MQ exit that will operate with WebSphere MQ v6.0, v7.0, v7.1 or v7.5 in Windows, Unix, IBM i and Linux environments.
  • z/MQSUI is an MQ exit that will operate with WebSphere MQ v5.3.1, v6.0, v7.0 or v7.1 for z/OS environments.

Both MQSUI and z/MQSUI are licensed as a free product. They are free to use but support is not included. A support license may be purchased.

For more information about MQSUI, please go to:
https://www.capitalware.com/mqsui_overview.html
Or for z/MQSUI, please go to:
https://www.capitalware.com/mqsui_zos_overview.html

Regards,
Roger Lacroix
Capitalware Inc.

Capitalware, IBM i (OS/400), IBM MQ, Licensed As Free, Linux, Security, Unix, Windows, z/OS Comments Off on MQ Set UserID – More Free MQ Software

New: MQ Channel Auto Creation Manager v1.0.1

Capitalware Inc. would like to announce the official release of MQ Channel Auto Creation Manager v1.0.1. This is a FREE upgrade for ALL licensed users of MQ Channel Auto Creation Manager. MQ Channel Auto Creation Manager is a solution that allows a MQAdmin to control and restrict who is accessing a WebSphere MQ resource.

For more information about MQ Channel Auto Creation Manager go to:
https://www.capitalware.com/mqcacm_overview.html

    Changes for MQ Channel Auto Creation Manager for z/OS v1.0.1:

  • Improved the IniFile processing speed.

Regards,
Roger Lacroix
Capitalware Inc.

Capitalware, IBM i (OS/400), IBM MQ, Licensed As Free, Linux, Security, Unix, Windows Comments Off on New: MQ Channel Auto Creation Manager v1.0.1

New: MQ Channel Auto Creation Manager for z/OS v1.0.1

Capitalware Inc. would like to announce the official release of MQ Channel Auto Creation Manager for z/OS v1.0.1. This is a FREE upgrade for ALL licensed users of MQ Channel Auto Creation Manager for z/OS. MQ Channel Auto Creation Manager for z/OS is a solution that allows a MQAdmin to control and restrict who is accessing a WebSphere MQ resource.

For more information about MQ Channel Auto Creation Manager for z/OS go to:
https://www.capitalware.com/mqcacm_zos_overview.html

    Changes for MQ Channel Auto Creation Manager for z/OS v1.0.1:

  • Improved the IniFile processing speed.

Regards,
Roger Lacroix
Capitalware Inc.

Capitalware, IBM MQ, Licensed As Free, Security, z/OS Comments Off on New: MQ Channel Auto Creation Manager for z/OS v1.0.1

Java Program to Send an MQSC Command to a z/OS Queue Manager

The other day I created a C program to send an MQSC command to a z/OS Manager and since I have done the same thing in Java, I thought I would publish a Java program to send an MQSC command to a z/OS queue manager.

You can download it as a zip file from here or you can copy from below:

/**
 * Program Name
 *  SendCmdTozOS.java
 *
 * Description
 * SendCmdTozOS is a simple MQ program that will send an MQSC command
 * to a z/OS queue manager's command queue and then wait for a response.
 *
 * Input Parameters:
 *    QMgrName ChlName hostname port "MQSC command"
 *
 * Where
 *    QMgrName is the queue manager name
 *    ChlName is the name of the channel to be used
 *    hostname is the hostname
 *    port is the port number
 *    "MQSC command" is the MQSC command you want to send to the z/OS queue manager
 * i.e.
 *    SendCmdTozOS MQT1 TEST.CHL 10.10.10.10 1415 "DIS QL(*)"
 *
 * @author Roger Lacroix, Capitalware Inc.
 * @return 0 for ok or 1 for failed.
 * @version 1.0.0
 * @license Apache 2 License
 */

import com.ibm.mq.*;

import java.io.IOException;
import java.util.Hashtable;

/**
 * ==================================================================
 *
 * Description
 *  This class will:
 *  - Connect to a remote z/OS queue manager
 *  - Open a temporary dynamic queue
 *  - Put a message on the queue manager's command queue
 *  - Get a reply message from the temporary dynamic queue
 *  - Close the temporary dynamic queue
 *  - Disconnect from the queue manager
 *
 * ------------------------------------------------------------------
 */
public class SendCmdTozOS
{
   private final static String VERSION = "1.0.0";

   private final static String SYSTEM_COMMAND_INPUT       = "SYSTEM.COMMAND.INPUT";
   private final static String SYSTEM_MODEL_REPLY_QUEUE   = "SYSTEM.COMMAND.REPLY.MODEL";
   private final static String TEMP_DYNAMIC_QUEUE_PREFIX  = "CSQ.*";

   /**
    * main entry point for this class. 
    *
    * Input parameters
    * @param args - pointer to a string array of input parameters
    */
   public static void main(String[] args)
   {
      if (args.length != 5)
      {
         System.out.println("Usage: java SendCmdTozOS QMgrName ChlName hostname port \"MQSC command\"");
         System.exit(1);
      }
      
      SendCmdTozOS sctz = new SendCmdTozOS(args[0],  /* z/OS queue manager name */
                                           args[1],  /* z/OS channel name */
                                           args[2],  /* z/OS hostname */
                                           args[3],  /* z/OS port # */
                                           args[4]); /* MQSC command for z/OS queue manager */
   }

   /**
    * The constructor
    * 
    * This routine will will send an MQSC command to a z/OS queue manager's 
    *  command queue and then wait for a response.
    * 
    * @param QMgrName   - Queue Manager name
    * @param chlName    - channel name to qeue manager
    * @param hostname   - hostname/IP address
    * @param port       - port #
    * @param MQSCCommand- MQSC command to be sent to the z/OS queue manager
    */
   public SendCmdTozOS(String qMgrName, String chlName, String hostname, String port, String MQSCCommand)
   {
      super();

      MQQueueManager  qMgr = null;
      MQQueue inQ = null;
      MQQueue cmdQ = null;
      int openInputOptions  = MQC.MQOO_INQUIRE + MQC.MQOO_FAIL_IF_QUIESCING + MQC.MQOO_INPUT_SHARED;
      int openOutputOptions = MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING;

      System.out.println("SendCmdTozOS v"+VERSION + " starting");
      
      try
      {
         qMgr = doConnect(qMgrName, chlName, hostname, port);     
         System.out.println("Connected to '" + qMgrName + "'");

         inQ = qMgr.accessQueue( SYSTEM_MODEL_REPLY_QUEUE,
                                 openInputOptions,
                                 null,         
                                 TEMP_DYNAMIC_QUEUE_PREFIX,
                                 null );      
         System.out.println("Opened temporary dynamic queue '" + inQ.name + "'");

         cmdQ = qMgr.accessQueue( SYSTEM_COMMAND_INPUT,
                                  openOutputOptions,
                                  null,
                                  null,
                                  null );
         System.out.println("Opened command queue '" + SYSTEM_COMMAND_INPUT + "'");

         sendMessage(qMgr, cmdQ, qMgrName, inQ.name, MQSCCommand);

         getCmdMessages(inQ);
      }
      catch (MQException e)
      {
         System.err.println("MQException: CC=" + e.completionCode + " : RC=" + e.reasonCode);
      }
      catch (IOException e)
      {
         System.err.println("IOException: " + e.getLocalizedMessage());
      }
      finally
      {
         handleClosingQ(inQ);
         handleClosingQ(cmdQ);
         handleDisconnecting(qMgr);
      }
      
      System.out.println("SendCmdTozOS ending");
   }
   
   /**
    *  This routine will establish a connection between this application 
    *  and a remote queue manager.
    *
    * @param QMgrName - Queue Manager name
    * @param chlName  - channel name to qeue manager
    * @param hostname - hostname/IP address
    * @param port     - port #
    *
    * @exception MQException
    *
    * @return qMgr - MQQueueManager object
    */
   private MQQueueManager doConnect(String qMgrName, String chlName, String hostname, String port) throws MQException
   {
      Hashtable mqht = new Hashtable();

      mqht.put(MQC.CHANNEL_PROPERTY, chlName);
      mqht.put(MQC.HOST_NAME_PROPERTY, hostname);
      mqht.put(MQC.PORT_PROPERTY, new Integer(port));

      return new MQQueueManager(qMgrName, mqht);
   }
   
   /**
    *  This routine will close the queue.
    *
    * @param q - queue object
    */
   private void handleClosingQ(MQQueue q)
   {
      String qName = null;
      try
      {
         if (q != null)
         {
            qName = q.name.trim();
            q.close();
            System.out.println("Closed queue '" + qName + "'");
         }
      }
      catch (MQException e)
      {
         System.err.println("MQException: close() '"+qName+"' CC=" + e.completionCode + " : RC=" + e.reasonCode);
      }
   }
   
   /**
    *  This routine will disconnect from the queue manager.
    *
    * @param qMgr - queue manager object
    */
   private void handleDisconnecting(MQQueueManager qMgr)
   {
      String qMgrName = null;
      try
      {
         if (qMgr != null)
         {
            qMgrName = qMgr.name;
            qMgr.disconnect();
            System.out.println("Disconnected from '" + qMgrName + "'");
         }
      }
      catch (MQException e)
      {
         System.err.println("MQException: qMgr.disconnect() CC=" + e.completionCode + " : RC=" + e.reasonCode);
      }
   }
   
   /**
    *  This routine will put the MQSC command on the queue manager's command queue.
    *
    * @param qMgr       - connection object
    * @param cmdQ       - Object command Q
    * @param qMgrName   - Q Manager Name
    * @param replyQName - Reply Q name
    * @param MQSCCommand- MQSC Command
    * 
    * @exception MQException
    * @exception IOException
    */
   private void sendMessage(MQQueueManager qMgr, MQQueue cmdQ, String qMgrName, String replyQName, String MQSCCommand) throws MQException, IOException
   {
      MQPutMessageOptions pmo = new MQPutMessageOptions();
      pmo.options = MQC.MQPMO_FAIL_IF_QUIESCING | MQC.MQPMO_NO_SYNCPOINT;

      MQMessage sendmsg                = new MQMessage();
      sendmsg.format                   = MQC.MQFMT_STRING;
      sendmsg.feedback                 = MQC.MQFB_NONE;
      sendmsg.messageType              = MQC.MQMT_REQUEST;
      sendmsg.replyToQueueName         = replyQName;
      sendmsg.replyToQueueManagerName  = qMgrName;
      sendmsg.messageId                = MQC.MQMI_NONE;
      sendmsg.correlationId            = MQC.MQCI_NONE;
      sendmsg.writeString(MQSCCommand);

      // put the message on the command queue
      cmdQ.put(sendmsg, pmo);
      System.out.println("Cmd Sent: " + MQSCCommand);
   }

   /**
    *  This routine will get all reply messages from our temporary dynamic queue.
    *
    * Input parameters
    * @param inQ - Object handle for reply Q
    *
    * Output
    *  Response messages will be written to stdout
    */
   private void getCmdMessages(MQQueue inQ)
   {
      MQMessage getMsg = null;
      MQGetMessageOptions getOptions = new MQGetMessageOptions();
      getOptions.options = MQC.MQGMO_WAIT + MQC.MQGMO_FAIL_IF_QUIESCING + MQC.MQGMO_CONVERT + MQC.MQGMO_NO_SYNCPOINT;
      getOptions.waitInterval = 5 * 1000; /* wait up to 5 seconds */ 
      boolean more = true;

      while (more)
      {
         getMsg = new MQMessage();
         try
         {
            inQ.get(getMsg, getOptions);
            byte[] b = new byte[getMsg.getMessageLength()];
            getMsg.readFully(b);
            String replyMsg = new String(b);
            System.out.println("Response: " + replyMsg);
            
            if (replyMsg.indexOf("CSQ9022I") != -1)
            {
               more = false; /* no more messages to follow */
            }
         }
         catch (IOException e)
         {
            System.err.println("IOException: " + e.getMessage());
            more = false;
         }
         catch (MQException e)
         {
            if ( (e.completionCode == MQException.MQCC_FAILED) && 
                 (e.reasonCode == MQException.MQRC_NO_MSG_AVAILABLE) )
            {
               // System.out.println("All messages read.");
            }
            else
            {
               System.err.println("MQException: CC=" + e.completionCode + " : RC=" + e.reasonCode);
            }
            more = false;
         }
      }
   }
}

Regards,
Roger Lacroix
Capitalware Inc.

IBM i (OS/400), IBM MQ, Java, Linux, macOS (Mac OS X), Open Source, Programming, Unix, Windows Comments Off on Java Program to Send an MQSC Command to a z/OS Queue Manager

Mark Taylor and Lyn Elkins Sessions at MQTC

I received the list of sessions for Mark Taylor and Lyn Elkins.

Here are Mark Taylor’s sessions:

  • What’s new in IBM Messaging
  • IBM MQ Disaster Recovery
  • IBM MQ Internals, Performance and Tuning for Distributed Platforms

Here is Mark Taylor’s and Lyn Elkins’ session:

  • IBM MQ: Are z/OS and distributed platforms like oil and water?

Here are Lyn Elkins’ sessions:

  • IBM MQ for z/OS: Latest Features Deep Dive
  • IBM MQ in a ‘plex: Shared queues and applications
  • New with MQ V8 on z/OS: Channel statistics and accounting

For more information about MQTC, please go to:
http://www.mqtechconference.com

Regards,
Roger Lacroix
Capitalware Inc.

Education, IBM MQ, MQ Technical Conference Comments Off on Mark Taylor and Lyn Elkins Sessions at MQTC

MQTC v2.0.1.4 Gold Sponsor: TxMQ

Capitalware would like to announce that TxMQ is a Gold Sponsor of MQ Technical Conference v2.0.1.4 (MQTC).

For more information, please go to: http://www.mqtechconference.com

Regards,
Roger Lacroix
Capitalware Inc.

Education, IBM MQ, MQ Technical Conference Comments Off on MQTC v2.0.1.4 Gold Sponsor: TxMQ