Entwickler-Ecke

Algorithmen, Optimierung und Assembler - Mauscode generator?!


huhn - So 03.04.05 14:55
Titel: Mauscode generator?!
Hi leute! :D
hab mal ne frage bezüglich der programme, die einen code erstellen bei dem man die maus bewegen muss. Meine frage ist jetzt wie die mauskoordinaten verarbeitet werten (bsp,oder link,methoden etc) .ich hab schon gegoogelt und hier im forum geguckt,aber nicht so des richtige gefunden(weiß net wie des heißt).
des habich mal gefunden

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
var gone:boolean=false;

procedure tform1.onmousemove;
begin
Goon:=true;
end;

procedure tform1.button1click();
var  i: Integer;
     b,c: Byte;
     S: String;
begin
S:=Memo1.Text;
Button1.Caption:='Bitte Maus bewegen';
//while i <= Length(S) do begin
for i:=1 to Length(S) do
 begin
  repeat
    Application.ProcessMessages;
  until Goon;
   Goon:=false;
  for j:=0 to Mouse.CursorPos.X div Mouse.CursorPos.Y do
      b:=Random(255);
    WriteLn(f,b);
    c:=Ord(S[1]);
    Delete(S,1,1);
    Memo2.Text:=Memo2.Text+'#'+IntToHex(c xor b,2);
    Progress.Position:=Progress.Position+1;
 end;
end;

da wird man aber doof wenn man en größeren schlüssel braucht :lol:

mfg huhn


uall@ogc - So 03.04.05 15:26

teil doch einfach x durch y sollte ein rest bleiben, nimmste die nachkommastellen dazu

bsp.:

233/51 = 4,5686274509803921568627450980392 -> da haste dann genug zahlen

ich wieß jetzt net genau wie du das gemacht hast aber denke mal so ähnlich funktioniert das ;>
wird jetzt die maus nach oben bewegt ->

233/52 = 4,4807692307692307692307692307692 -> man sollte dann halt nur die nachkommstellen nehmen, die 4 ist gleib geblieben ^^


toms - So 03.04.05 15:47

Für Fortgeschrittene ist ein Journal Record Hook geeigneter.


huhn - So 03.04.05 20:31

@uall@ogc:Danke is ne gute idee, :D leider will ich später zufalls bytes generiern und da helfen mir die nachkommastellen net so viel(auser wenn ich irgendwie die wieder weiter bearbeite) :(

@toms:gut danke!Kannste mal en Link zu einen kurzen hook tutorial posten
die wo ich hatte waren immer sehr lang(bei nem maushook kann ich ja dann auch über den gesammten bildschirm die maus abfragen)*g*

mfg huhn


MSCH - So 03.04.05 20:39

user profile iconhuhn hat folgendes geschrieben:
@uall@ogc:Danke is ne gute idee, :D leider will ich später zufalls bytes generiern und da helfen mir die nachkommastellen net so viel(auser wenn ich irgendwie die wieder weiter bearbeite) :(
...
mfg huhn


tja, dann eliminierst du die Nachkommastellen, z.b. durch Multiplikation mit 10 * (anzahl der Nachkommastellen) und schon haste eine nette Ganzzahl.
grez
msch


huhn - Mo 04.04.05 15:42

@toms:mmh hab mir des tutorial durchgelesen und ich muss zugeben dass es mir zu viel text und dass es mir zu umständlich ist :) .trotzdem danke!

So hab mal en bissle geproggt und des is herrausgekommen(ist schon besser und man kann über den gesamten Bildschirm):

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var   Form1: TForm1;
      last:integer;

procedure TForm1.Timer1Timer(Sender: TObject);
var z:integer;
begin
  label1.Caption:=inttostr(mouse.CursorPos.X)+'-'+inttostr(mouse.CursorPos.y);
  z:=(mouse.cursorpos.X) mod (mouse.CursorPos.y+1);
  if z>255 then z:=z div 10;
  if z=last then exit;
  label2.Caption:=inttostr(z);
  last:=z;
end;

vielleicht hat einer noch en optimierungsvorschlag? zb wie ich nochmehr zahlen bekomme? :D
mfg huhn


BenBE - Mo 04.04.05 20:45

QPC (QueryPerformanceCounter) abfragen, QPF (QueryPerformanceFrequency) einmalig, Auslesen von RAM-Adresszellen (wenn ungleich 0 weiternutzen), http://www.random.org (wenn Inet-Verbindung nutzbar\Reaktionszeiten einbeziehen), Aktive Prozesse, Prüfsummen zufällig gewählter Festplattensektoren, Hardware-Seriennummern, ...

Lass Dir einfach neue Dinge einfallen ;-)


huhn - Di 05.04.05 16:46

Jo danke war schon auf random.org habt ihr noch mehr(werd mal nach den sachen gucken wo du gesagt hast!)
@BenBe:kannste noch mehr über die sachen sagen(QPC (QueryPerformanceCounter) abfragen, QPF (QueryPerformanceFrequency))?

mfg huhn


BenBE - Di 05.04.05 19:29

QPC und QPF sind zwei Funktionen zur Präzisionszeitmessung, die man zum Gewinnen zusätzlicher Bytes nutzen kann, da (z.B. besonders bei Rechnern mit ner QPF von 1.4 GHz wie meiner) die letzen Beiden Bytes sehr unberechenbar sind, d.h. zumindest sehr schlecht manuell nachgebaut werden können, da hier Microzeiten reinspielen. QPF nimmt zwar immer (auf jedem Rechner) nur einen Wert an (entweder die CPU Taktung oder einen Wert um 30MHz, wenn kein QPC vorhanden), kann aber trotzdem als einer der Initialisierungswerte mit genutzt werden. Hinweis: QPC pro Mausbewegungsabfrageereignis NUR selten anwenden, da sonst das Delta der Werte bestimmten Gesetzmäßigkeiten (nämlich den Taktzyklen der Routine zwischen den Aufrufen) folgt.

Für Initialisierungen von kryptographisch sicheren Systemen muss man einfach etwas kreativ sein ... (und kombinieren und ineinader verschlingen sollte man die Dinge auch möglichst gut).


huhn - Do 07.04.05 14:29

Danke!
dann mich ich mal ans werk (*kreativarbeit*)!
werd wahrscheinlich au en pseudozufallscode von random.org benützen!
mfg huhn