You can enable the CreditCardRecognized event to fire when unredacted Primary Account Number (PAN) data (such as a credit card number) is recognized and handle this event to create logs or perform other actions required for compliance.
When the event is enabled, it is fired when unredacted PAN data is copied from the terminal to the clipboard or to a productivity tool. For IBM systems, the event is also fired when unredacted PAN data is displayed on the screen.
Note: This event is fired only when a PAN is copied or displayed in its entirety ("in the clear"). It is not fired when only redacted PANs are copied or displayed.
Monitor Credit Card Access |
Copy Code
|
---|---|
using System; using System.Collections.Generic; using System.Text; using Attachmate.Reflection.UserInterface; using Attachmate.Reflection.Framework; using Attachmate.Reflection.Emulation.IbmHosts; using Attachmate.Reflection.Emulation.OpenSystems; using IBMCreditCardRecognizedEventArgs = Attachmate.Reflection.Emulation.IbmHosts.CreditCardRecognizedEventArgs; using OSCreditCardRecognizedEventArgs = Attachmate.Reflection.Emulation.OpenSystems.CreditCardRecognizedEventArgs; using System.IO; namespace SaveScreens { class Program { //Set up the event handlers to get the data you want to collect static void terminalIBM_CreditCardRecognized(object sender, IBMCreditCardRecognizedEventArgs args) { Console.Write(("\n" + "Credit Card Number Viewed on Screen \n" + "Date and Time: " + args.DateTime.ToString() + " \n" + "Machine name: " + args.MachineName.ToString() + " \n" + "User ID: " + args.UserId.ToString() + " \n" + "Card number: " + args.RedactedAccountNumber + "\n")); } static void terminalOS_CreditCardRecognized(object sender, OSCreditCardRecognizedEventArgs args) { Console.Write(("\n" + "Credit Card Number Viewed on Screen \n" + "Date and Time: " + args.DateTime.ToString() + " \n" + "Machine name: " + args.MachineName.ToString() + " \n" + "User ID: " + args.UserId.ToString() + " \n" + "Card number: " + args.RedactedAccountNumber + "\n")); } static void Main(string[] args) { //Get the last activated instance of InfoConnect Application app = MyReflection.ActiveApplication; //Make sure is running if (app != null) { IFrame frame = (IFrame)app.GetObject("Frame"); IView view = (IView)frame.SelectedView; //Check for the terminal type and create event handlers if (view.Control.ToString() == "Attachmate.Reflection.Emulation.IbmHosts.IbmTerminal") { IIbmTerminal terminalIBM = (IIbmTerminal)view.Control; terminalIBM.CreditCardRecognized += terminalIBM_CreditCardRecognized; } if (view.Control.ToString() == "Attachmate.Reflection.Emulation.OpenSystems.Terminal") { ITerminal terminalOS = (ITerminal)view.Control; terminalOS.CreditCardRecognized += terminalOS_CreditCardRecognized; } } else { Console.WriteLine("Cannot find instance of InfoConnect running"); } Console.ReadKey(); } } } |