Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Internet Allgemein Flatrates, Webspace, Protokolle und alles rund ums Internet hier rein.

Socketprogrammierung

Diskussion: Socketprogrammierung im Forum Internet Allgemein, in der Kategorie Web, Network & Multimedia Palace; Anzeige Abend, Ich hätte 2 Fragen: 1. Wie gefragt sind denn Netzwerkprogrammierer in C und C++ heutzutage? 2. Welche Rolle ...

Like Tree3Likes

Antwort
Alt 16.01.12, 21:57   #1 (permalink)
 
Registriert seit: 29.06.11
lightf Leistung: Facit NTK
Likes: 0
Standard Socketprogrammierung

Anzeige

Abend,

Ich hätte 2 Fragen:
1. Wie gefragt sind denn Netzwerkprogrammierer in C und C++ heutzutage?
2. Welche Rolle spielt Socketprogrammierung in C, C++ in der Security-Branche? Oder werden eher andere Programmiersprachen und Bibliotheken genutzt?

Auf Antworten würd ich mich freuen.

lightf ist offline   Mit Zitat antworten
Alt 16.01.12, 22:20   #2 (permalink)
 
Registriert seit: 15.01.12
POSSIBLE Leistung: Facit NTK
Likes: 0
Standard

hallo

deine Fragen kann ich zwar nicht direkt beantworten.
aber wenn du dich dafür interessierst kann ich dir das Tutoriel empfehlen:

Winsock Tutorial: Grundlagen und TCP

vieleicht hilft es dir ja^^
POSSIBLE ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 16.01.12, 22:48   #3 (permalink)
 
Registriert seit: 17.09.10
Stazer Leistung: Z3
Stazer eine Nachricht über ICQ schicken Stazer eine Nachricht über Skype™ schicken
Likes: 0
Standard

Du kannst auch gleich eine High Level Bibliothek benutzen.
Z.b. die SFML bietet hierfür ein Netzwerk Packet an.
sfml-dev.org

Freundliche Grüße
Stazer
Stazer ist gerade online   Mit Zitat antworten
Alt 17.01.12, 01:26   #4 (permalink)
 
Benutzerbild von Hackse
 
Registriert seit: 31.07.06
Hackse Leistung: 8086
Likes: 32
Standard

Prinzipiell gibt es für alle Standardaufgaben Bibliotheken. Ich rate Dir von ihnen ab. Warum? Weil Du nichts dabei lernst wenn Du eine fertige Funktion aufrufst. Wenn es Dir darum geht etwas bis ins Detail zu verstehen, solltest Du das Rad neu erfinden.

Für Sortieralgorithmen wie Heapsort, Quicksort, Selectionsort, Mergesort, Bubblesort, gibt es viele fertige Funktionen, die man einfach aufrufen kann. Dennoch wirst Du durch den Aufruf keine einzige davon verstehen, geschweige denn deren asymptotische Laufzeitkomplexität berechnen können. Es geht den Universitäten bei der Vermittlung solcher Inhalte natürlich nicht darum, dass Du irgend eine fertige Funktion aufrufen kannst, sondern Du selbst sollst eine solche Funktion entwickeln können. Du sollst also nicht bloß Anwender, sondern Denker/Entwickler sein, denn das ist es was den Hacker vom Skriptkiddy unterscheidet.

Niemand bewirbt sich als "Netzwerkprogrammierer in C". Firmen sind eher an Lösungen interessiert. Am Markt bist Du gut, wenn Du viele Technologien, Paradigmen und Sprachen drauf hast. Ansi-C ist da nur ein geringer Teil.

Zum Verständnis einer TCP-basierten Socketverbindung ist Ansi-C sehr geeignet, da Du hier eben nicht einfach eine fertige Funktion aufrufst, sondern jeden Teilschritt der Kommunikation verstehen und programmieren musst und nur so lernt man es.

Du fragtest noch nach Security. Nun, um einen DDOS-Angriff zu programmieren, sind das die Grundlagen.
Harry Boeck likes this.
Hackse ist offline   Mit Zitat antworten
Alt 17.01.12, 07:01   #5 (permalink)
Themenstarter
 
Registriert seit: 29.06.11
lightf Leistung: Facit NTK
Likes: 0
Standard AW

Aber heutzutage merkt man irgendwie, dass C und C++ sehr selten, vor allem in der Security-Branche verwendet werden. Viel mehr werden Python, Rubby, Perl verwendet (auch für Exploits..). Da fragt man sich dann ob es wirklich sinnvoll ist Socketprogrammierung in C zu lernen..
lightf ist offline   Mit Zitat antworten
Alt 17.01.12, 12:21   #6 (permalink)
 
Benutzerbild von Hackse
 
Registriert seit: 31.07.06
Hackse Leistung: 8086
Likes: 32
Standard

Deine Annahme ist nicht korrekt.

Es gibt weltweit sehr viel mehr Codezeilen in C als in Ruby, Perl oder Python, vermutlich sogar mehr Codezeilen in C als in den o.g. drei Skriptsprachen zusammen. Unix, Linux, Windows, ... Kernel und komplette Betriebssysteme sind in C geschrieben. Die meisten Anwendungen werden in C / C++ geschrieben (Winzip, Amarok, Ktorrent, ...) allein schon wegen der Performance. Seit ein paar Jahren macht sich auch Java ganz gut.

Versuche mal einen Web-Server wie den Apache in einer rein skriptbasierten Sprache zu schreiben. Das geht performancetechnisch gar nicht.

Du darfst auch eine Skriptsprache nicht mit einer Programmiersprache vergleichen, denn diese erfüllen einen anderen Zweck. Bitte nicht missverstehen, ich liebe Skriptsprachen und habe mehrere hundert Skripte in Form kleiner bis mittelgroßer Problemlösungen auf den unterschiedlichsten Systemen geschrieben. Für größere und komplexere Anwendungen muss jedoch eine Programmiersprache her, aus guten Grund.

Exploits kann man auch mit Skriptsprachen schreiben, das ist korrekt. IT-Security besteht jedoch nicht nur aus Exploits, sondern aus sehr viel mehr. Letzten Endes ist es irrelevant in welche Programmier- oder Skriptsprache man einen Exploit schreibt. Funktionieren muss er, nur darauf kommt es an. Ich für meinen Teil schreibe u.a. Crypto-Anwendungen und Decrypter. Da kommt es extrem auf die Performance an, die Du mit keiner Scriptsprache der Welt hinbekommst. Audit-Tools wie "John" sind daher selbstverständlich auch in C geschrieben.

Meine Empfehlung lautet das eigene Wissen nicht auf eine bestimmte Skript-Sprache zu beschränken, sondern sich mit vielen Dingen zu befassen, die gängig sind. Hierzu gehören Perl, Python, PHP ebenso wie C, C++ und Java.

... Keep an open mind ...
Harry Boeck and enkore like this.
Hackse ist offline   Mit Zitat antworten
Alt 18.01.12, 02:14   #7 (permalink)
Senior Member
 
Benutzerbild von t3rr0r.bYt3
 
Registriert seit: 07.01.03
t3rr0r.bYt3 Leistung: Z3
Likes: 19
Standard

Zitat:
Zitat von Hackse Beitrag anzeigen
Du darfst auch eine Skriptsprache nicht mit einer Programmiersprache vergleichen, denn diese erfüllen einen anderen Zweck. (..) Für größere und komplexere Anwendungen muss jedoch eine Programmiersprache her, aus guten Grund.
1. Warum sollte ich mir einen Vergleich verbieten lassen?
2. Was ist der gute Grund?
t3rr0r.bYt3 ist offline   Mit Zitat antworten
Alt 18.01.12, 08:43   #8 (permalink)
 
Benutzerbild von blue182
 
Registriert seit: 21.08.10
blue182 Leistung: Facit NTK
Likes: 10
Standard

Zitat:
Zitat von t3rr0r.bYt3 Beitrag anzeigen
1. Warum sollte ich mir einen Vergleich verbieten lassen?
2. Was ist der gute Grund?
Oh man... Performance ist das Zauberwort. Sorry, aber was ist da so schwer dran zu verstehen?

BTT. Socketprogrammierung gehört zum Standartrepertuar eines jeden Programmierers. Es gibt zig Kommunikationsprotokolle, aber alle Kommunizieren über einen Weg: Sockets.

Schau dir mal die Dokumentation vom Zotteljedi an btw.

/€1:
Nichts deato trotz, es gibt genügend Große Projekte die in Skriptsprachen umgesetzt sind. Heutige Rechner haben die Leistung. Schließlich lasse ich einfach mal so im Raum stehen, dass Java - die aktuell populärste Sprache - interpretiert wird.

Geändert von blue182 (18.01.12 um 09:07 Uhr)
blue182 ist offline   Mit Zitat antworten
Alt 18.01.12, 12:25   #9 (permalink)
Senior Member
 
Benutzerbild von t3rr0r.bYt3
 
Registriert seit: 07.01.03
t3rr0r.bYt3 Leistung: Z3
Likes: 19
Standard

Zitat:
Oh man... Performance ist das Zauberwort. Sorry, aber was ist da so schwer dran zu verstehen?
Ich versteh immer noch nicht, warum ein Vergleich verboten sein sollte. Vielleicht fällt er ja zuungunsten der Skriptsprache aus, aber dann sind sie ja vergleichbar.
Und "Skriptsprachen" von "Programmiersprachen" abzugrenzen, ist genauso Schwachsinn. Das sind keine disjunkten Mengen, sondern Unter- und Obermenge. Auch in einer Skriptsprache wird programmiert.
Zitat:
Heutige Rechner haben die Leistung. Schließlich lasse ich einfach mal so im Raum stehen, dass Java - die aktuell populärste Sprache - interpretiert wird.
Jein. Der gängige weg ist, Java zu Bytecode zu compilen und diesen dann von der VM interpretieren zu lassen. Die größeren VMs besitzen allerdings einen JIT, der stellenweise doch nativen Code erzeugt. Gerade bei langlebigen Prozessen führt das dazu, dass nach einer gewissen Zeit die kritischen Teile des Programm nativ ausgeführt werden.
t3rr0r.bYt3 ist offline   Mit Zitat antworten
Alt 18.01.12, 13:00   #10 (permalink)
 
Benutzerbild von Hackse
 
Registriert seit: 31.07.06
Hackse Leistung: 8086
Likes: 32
Standard

Zitat:
Ich versteh immer noch nicht, warum ein Vergleich verboten sein sollte. Vielleicht fällt er ja zuungunsten der Skriptsprache aus, aber dann sind sie ja vergleichbar.
Und "Skriptsprachen" von "Programmiersprachen" abzugrenzen, ist genauso Schwachsinn. Das sind keine disjunkten Mengen, sondern Unter- und Obermenge. Auch in einer Skriptsprache wird programmiert.
Wenn Du mengentheoretische Beschreibungsaspekte zum Vergleichen von Programmier- und Skriptsprachen verwendest, solltest Du auch einen gültigen Definitionsbereich angeben. Zwei Teilmengen einer gemeinsamen Obermenge können durchaus disjunkt sein. Um verifizieren (oder falsifizieren) zu können, ob dies auf Deine These zutrifft, bedarf es hier der Information in welcher Art Du Programmier- und Skriptsprachen vergleichst. Beziehst Du Dich auf die Syntax, die Semantik oder worauf genau?

Verbieten möchte ich nichts. Du kannst auch Äpfel mit Birnen vergleichen, wenn Du Spaß daran hast. Vielmehr wollte ich mit meiner Nachricht ausdrücken, dass es Teile der Informatik gibt, die man mit Programmiersprachen effizienter abbilden kann und Teile, die man mit Skriptssprachen effizienter abbilden kann. Sicherlich gibt es auch Dinge, die man mit beiden abbilden kann.

Ich habe das Ganze hier beschrieben, vielleicht wird's dann deutlicher.
Hackse ist offline   Mit Zitat antworten
Alt 18.01.12, 13:29   #11 (permalink)
Senior Member
 
Benutzerbild von t3rr0r.bYt3
 
Registriert seit: 07.01.03
t3rr0r.bYt3 Leistung: Z3
Likes: 19
Standard

Zitat:
Zwei Teilmengen einer gemeinsamen Obermenge können durchaus disjunkt sein.
Natürlich, aber wie kommt man auf die Idee, diese beide Teilmengen "Programmiersprachen" und "Skriptsprachen" zu nennen? Man kann sich natürlich vieles zusammendefinieren, aber so rein intuitiv klingt "Programmiersprache" nach einem allgemeineren Begriff. Und erzähl mal den php/python/ruby-Usern, dass sie keine Programmierer sind
Zitat:
Vielmehr wollte ich mit meiner Nachricht ausdrücken, dass es Teile der Informatik gibt, die man mit Programmiersprachen effizienter abbilden kann und Teile, die man mit Skriptssprachen effizienter abbilden kann.
Ja, eben. Das ist wohl die einzige wirklich allgemeingültige Aussage, die man hier treffen kann.
Ansonsten: Brauchen wir nen Mod, der hier wieder aufs Thema zurücklenkt? Ich versuchs mal.

>1. Wie gefragt sind denn Netzwerkprogrammierer in C und C++ heutzutage?
"Kaum", da "Netzwerkprogrammierer" und "C/C++" schon sehr einschränken. Es gibt sicher Leute, die nichts anderes machen, aber sich von vornherein nur auf Netzwerk und C/C++ darauf zu beschränken, klingt nicht sinnvoll (falls es überhaupt geht).
>2. Welche Rolle spielt Socketprogrammierung in C, C++ in der Security-Branche? Oder werden eher andere Programmiersprachen und Bibliotheken genutzt?
Das sind einfach zwei verschiedene Aspekte. Du kannst auch in vielen anderen Sprachen ein (raw) Socket aufmachen und deine Pakete selbst zusammenbauen, vermutlich sogar bequemer als in C/C++. Die Thematik ist sicher nicht unwichtig.
Die Sprachwahl sollte davon abhängen, ob das Ergebnis den Aufwand rechtfertigt. Ich möchte aber anmerken, dass jede größere Software aus unterschiedlichen Komponenten besteht, von denen nicht alle die gleichen Anforderungen an die Sprache stellen: Die Sprachwahl richtet sich also nicht zwingend nach den Gesamtpaket, sondern nach der Komponente - im Grunde genau das, was Hackse in seinem verlinkten Post schreibt.

Ansonsten zitier ich mal Hackse:
Zitat:
.. Keep an open mind ...
Man braucht zwar Spezialisten, aber keine Fachidioten.
t3rr0r.bYt3 ist offline   Mit Zitat antworten
Alt 18.01.12, 14:48   #12 (permalink)
 
Benutzerbild von Hackse
 
Registriert seit: 31.07.06
Hackse Leistung: 8086
Likes: 32
Standard

Zitat:
Natürlich, aber wie kommt man auf die Idee, diese beide Teilmengen "Programmiersprachen" und "Skriptsprachen" zu nennen? Man kann sich natürlich vieles zusammendefinieren (...)
Die Bezeichnung "Skriptsprache" ist der korrekte, gängige Begriff und keineswegs ausgedacht.

Sieh Dir mal folgende beiden Links an:

Universität Paderborn

Wikipedia

Geändert von Hackse (18.01.12 um 14:50 Uhr)
Hackse ist offline   Mit Zitat antworten
Alt 18.01.12, 14:50   #13 (permalink)
Senior Member
 
Benutzerbild von t3rr0r.bYt3
 
Registriert seit: 07.01.03
t3rr0r.bYt3 Leistung: Z3
Likes: 19
Standard

Sorry, vielleicht hab ich mich falsch ausgedrückt, der Begriff "Skriptsprache" ist natürlich etabliert. Aber der erste Satz des Wikipedia-Artikels bringt es doch auf den Punkt: "Skriptsprachen (häufig auch Scriptsprachen) sind Programmiersprachen".
t3rr0r.bYt3 ist offline   Mit Zitat antworten
Alt 18.01.12, 15:11   #14 (permalink)
 
Benutzerbild von Hackse
 
Registriert seit: 31.07.06
Hackse Leistung: 8086
Likes: 32
Standard

Zitat:
Zitat von t3rr0r.bYt3 Beitrag anzeigen
Aber der erste Satz des Wikipedia-Artikels bringt es doch auf den Punkt: "Skriptsprachen (häufig auch Scriptsprachen) sind Programmiersprachen".
Natürlich sind Skriptsprachen auch Programmiersprachen. Auch wollte ich nicht ausdrücken, dass Leute, die ausschließlich Skriptsprachen verwenden, keine Programmierer sind.

Der Grund meiner initialer Unterscheidung zwischen Programmiersprachen und Skriptsprachen unterlag meiner These, dass es Dinge gibt, die man nicht ausschließlich in Skriptsprachen schreiben kann, einfach weil die Performance es nicht zulässt oder weil es eben bestimmte Dinge gibt, die sich nur in Binärcode abbilden lassen (z.B. Kernelmodule).


Du kannst keinen performanten Web-Server in einer Skriptsprache abbilden. Ich meine hiermit nicht die Web-Applikation in PHP, sondern die Serversoftware, die die Anfragen von etlichen Usern annimmt und verarbeitet.

Du kannst keinen performanten Bruteforcer (z.B. für MD5) in einer rein skriptbasierten Sprache abbilden

Du kannst keine performante CAD-Applikation rein skriptbasiert schreiben

Skriptsprachen sind, so sehr ich sie schätze und täglich verwende, für manche Aufgaben zu langsam und aufgrund des zu interpretierenden Codes ungeeignet.


EDIT:
Solltest Du der Ansicht sein, dass meine These hinsichtlich Performance und Skriptsprachen nicht korrekt ist, können wir einen Performance-Vergleich durchführen. Hierzu wird es eine rechenintensive Aufgabenstellung geben, die ich z.B. in Ansi-C löse und Du in einer beliebigen Skriptsprache. Dann können wir fundiert bewerten, ob die These korrekt ist oder nicht. :-)

Geändert von Hackse (18.01.12 um 15:17 Uhr)
Hackse ist offline   Mit Zitat antworten
Alt 18.01.12, 16:15   #15 (permalink)
 
Registriert seit: 12.08.10
mime Leistung: Pentium Imime Leistung: Pentium I
Likes: 30
Standard

Zitat:
Zitat von Hackse Beitrag anzeigen
Du kannst keinen performanten Web-Server in einer Skriptsprache abbilden.
Tornado Web Server
nginx vs Tornado Web vs Apache Performance Benchmark

Micha
__________________
http://www.openvas.org
mime ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » Internet Allgemein » Socketprogrammierung
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Socketprogrammierung C,Problem mit accept() sw33tlull4by Code Kitchen 3 01.09.07 19:53
Socketprogrammierung mit Dev C++ - "ws2_32.lib" verlinken... link Code Kitchen 1 24.11.04 12:42


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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61