Posts by onkel_keks

    danke für die ratschläge, das problem war dass die register für die parameter in der falschen reihenfolge belegt wurden. es sollte heißen "imulq $8, %rsi, %rdx" und nicht "imulq $8, %rdi, %rdx"

    danke für die rückmeldung. das imulq passt aber ("normale" multiplikationen funktionieren; außerdem würde dann ja der assembler schreien und es gar nicht erst zum sigsegv kommen.) es gibt afaik imul mit einem, zwei oder drei operanden (siehe referenz).
    andere ideen? :confused:

    ich hab auch probleme bei speicherzugriff -- was ist hier falsch:


    jetzt mal abgesehen davon dass meine registerbelegung ineffizient ist: der ausdruck "return *(x+(y*8)+8);" heißt doch "gib den inhalt der adresse x+(y*8)+8 zurück". oder? und macht mein erzeugter code nicht genau das, auf seine eigene, ineffiziente doch charmante art?
    (wahrscheinlich ein at&t-syntax-problem...wie ich diese syntax hasse. warum nicht die viel einfachere und übersichtliche intel-syntax, ganz abgesehen davon dass assembler-referenzen und -handbücher sowie ich seit einigen jahren üblicherweise diese verwenden?)

    Hallo allseits,


    ich hab eine etwas prekäre Situation bezüglich einer Anrechnung und wollte mal schauen, ob hier jemd was dazu sagen kann.
    Nämlich geht es dabei um eine Übung, die ich mir aus meinem Elektrotechnik-Studium anrechnen lassen will. Die ET-LVA hat 3 ECTS, die Inf-LVA 1.5 ECTS. Von daher eigtl kein Problem. Jetzt hab ich mal vorsichtig gefragt, ob die Anrechnung denn machbar ist. Kommentar des Dekanats: Die LVAs seien inhaltlich nicht ident daher sei eine Anrechnung nur in Ausnahmefällen möglich.
    Da mir die Zeit ausgeht (letztes Semester im Bakk) und die betreffende UE nur im SS angeboten wird, hab ich mich mal für die Inf-UE angemeldet und parallel dazu das Ansuchen auf Anerkennung abgegeben in der Hoffnung, bei mir sei so ein "Ausnahmefall" zutreffend. Uni-typisch dauert die Anrechnung ja einige Monate. Das heißt, ich mach jetzt eine UE von der ich nicht weiß ob sie mir vielleicht nächstes Monat eh angerechnet wird.


    Mittlerweile hab ich aber erfahren, dass genau diese LVA-Kombination schon einmal angerechnet wurde. Und soweit ich mich erinnern kann, muss eine in einem Fall durchgeführte Anrechnung auch für andere Studierende möglich sein. Das heißt, die Chance, dass die Anrechnung durchgeht, ist auf einmal stark gestiegen.


    Schließlich zu meiner eigentlichen Frage: Angenommen, die Anrechnung geht durch aber ich kann mich nicht mehr von der Inf-UE abmelden und bekomme dort ein negatives Zeugnis. Gilt dann die letzte Note (also der 5er) oder die Anrechnung?



    Danke für Eure Hilfe!
    onkel_keks

    0%.
    NUR WEIL ICH IDIOT RDI STATT RSI ZURÜCKGEGEBEN HAB. :sudern::distur::mad:
    (oder war's rsi statt rdi? ich hatte schon immer meine eigenen registerkonventionen. und jetzt kommt amd und sagt mir was ich wohin schreiben darf. pah. :sudern: und überhaupt. wer verwendet schon die gas syntax? sorry, musste mal raus :tongue1:)

    hallo, ich hab mal versucht, mit /usr/ftp/pub/ublu/test09/asmb/* meinen code zu testen (also die dortigen quelldateien ins eigene verz. kopiert und kompiliert). allerdings, wenn ich das dann tue, bekomme ich

    Code
    1. [u0000000:~/task2:401] ./tst
    2. Calling asmb(0x7fffffffe9b2,0x7fffffffe971,17) with
    3. 0x7fffffffe9b0=6162[636465666768696a6b6c6d6e6f70717273]7475767778797a303132333435363738
    4. Result:
    5. Bus error

    so, und das seltsame daran: ich hab den call, der meinen code aufruft, dabei auskommentiert, der fehler müsste also in der callingconvention.c liegen, die zur verfügung gestellt wird.


    ideen/hinweise/"eh klar, das ist weil..."?


    danke,
    onkel_keks

    Hallo,


    da ich leider nicht zur 1. VO kommen kann: Soweit ich gesehen habe ist im Zuge der LVA ein Übungsbeispiel als Gruppe zu lösen. Wie/wann findet die Gruppeneinteilung statt?
    Und wo gibt man diese SHARPE-Benutzungserklärung ab?
    Wurde sonst etwas wichtiges, nicht auf den Folien auffindbares in der Vorbesprechung gesagt?


    Danke,
    onkel_keks

    Quote


    9. Ortskurve von F0(jw)=1/jw und wieso ist das so ..


    könnte jemand andeuten wie die ortskurve für f0(jw)=1/jw ausschaut? (ist wahrscheinlich offensichtlich wenn man's verstanden hat, aber den punkt muss ich erst erreichen...)
    und wieso ist was so?


    danke,
    onkel_keks

    Cool :verycool:


    Danke für die Klarstellung.


    Off-topic, aber irgendwo muss ich mich darüber aufregen: Medizinische Informatiker können Vertiefungsfächer aller anderen Bachelorstudien machen (also große Auswahl) und technische Informatiker müssen sich aus FÜNF verschiedenen LVAs zwei aussuchen!? :sudern:grml :mad:
    Ach, das Leben ist ungerecht...

    Hallo allseits,


    mittlerweile ist es für mich Zeit, mir Gedanken um meine Bachelorarbeit zu machen. Im Studienplan ist ja das "Projektpraktikum" und ein "Seminar (mit Bachelorarbeit)" vorgeschrieben.
    Jetzt stellt sich mir die Frage, welche Praktika und Seminare eigentlich "zählen". Im Studienplan findet man folgende Erläuterungen:


    Quote


    Seminar (mit Bachelorarbeit) 6.0/4.0 SE
    Erarbeiten eines wissenschaftlichen Themas aus einem der Prüfungsfächer des Bachelorstudiums; die Ergebnisse sind im Seminar zu präsentieren und in einer Bachelorarbeit darzustellen.

    Wenn ich jetzt über TUWIS nach Seminaren aus Studienplan 535 suche, die Prüfungsfächer sind, sind das jetzt alle Seminare die ich machen kann oder kann man auch eigene Themen bearbeiten? Wenn ja, wie weiß ich, ob das Thema einem Prüfungsfach zuzuordnen ist (abgesehen von meinem Bauchgefühl)? Und wie ist das bei Praktika?


    Danke,
    onkel_keks



    EDIT: nachdem ich mir jetzt einige "Seminare" in TUWIS angesehen hab, bin ich noch verwirrter -- meist sind gar keine Themen angegeben oder nur eine bestimmte "Richtung". Und warum sind Seminare aus Computergraphik auch ein "Prüfungsfach aus Technischer Informatik"??? CG ist doch Medieninformatik...hilfe *schluchz*

    genau weiss ich's nicht mehr aber hier ein paar sachen an die ich mich erinnern kann:


    - der sourcecode eines virus (ich bin mir jetzt nicht mehr sicher ob c oder assembler...) war gegeben (zumindest teile davon). gefragt war, was der virus denn so macht. das war übrigens nicht eindeutig zu beantworten, da nicht klar war, was zb interrupt 21h macht; es waren auch wie gesagt nicht der vollständige code in der angabe, es lief also auf vermutungen hinaus.


    - ein kurzes assembler-snippet analysieren (eine routine die eine lokale variable wiederholt ändert und danach ausgibt)


    - ansonsten halt faktenwissen von den folien. an spezielle sachen kann ich mich grad nicht erinnern. aber vielleicht fällt mir ja noch was ein. es waren gar nicht wenige fragen, 14 oder 15 vielleicht? alles vergessen. kinder, ich, sag's euch, lasst die finger vom alkohol.


    unterm strich war die prüfung aber recht einfach. man sollte sich halt die folien gut angesehen (und verstanden) haben.

    guter hinweis (leibnizkriterium), aber man beachte auch

    Quote


    Man beachte, dass sich aus dem Leibniz-Kriterium nur ergibt, dass diese Reihen konvergieren, über den genauen Grenzwert macht es keine Aussagen.

    ich denke, mit der taylorreihe wird der grenzwert, nämlich ln 2, errechnet.
    allerdings ist das natürlich irgendwie verkehrt, da man nicht sagt "ich hab da eine folge und such den grenzwert" sondern "ich hab da einen grenzwert und such eine folge". aber gut. evtl hat ja jemand eine bessere erklärung :p

    BruceBerry: danke, du hast recht :thumb:
    ich habe wirklich zu kompliziert gedacht.


    Paladin_FRW:
    zwei pfade es nun gibt, die du einschlagen kannst, junger paladin. :ausheck: der eine voll der hürden und gefahren, doch ist die belohnung, die an seinem ende dich erwartet, das licht der ELFen.
    der andere, nicht minder erfolgbehaftet, zwar recht einfach ist zu gehen, doch nicht leicht ist's, ihn zu sehen.
    ich muss mich an dieser stelle für den extensiven schwachsinn entschuldigen, den ich an obiger stelle verlautbart habe. ich bin mittlerweile seit 36 stunden wach.


    zum thema: von wegen zwei pfade und so: ja, du kannst dir alle möglichen ELF dokus reinziehen, versuchen, die größe von einem segment zu verändern usw. usf. Das bringt Erfahrung mit sich und ist daher schon per se eine gute Sache.
    Du kannst aber auch anfangen zu überlegen: eigentlich willst du, dass sich dein programm (der virus)


    • unter einem anderen namen (dem namen des wirten) dupliziert und
    • nachdem die ausführung dieses duplikats beendet ist, soll der code eines anderen programms aufgerufen werden (nämlich das original-programm)


    leider kann ich nicht viel konkreter werden ohne die lösung (oder bessergesagt: meine lösung) vorwegzunehemen. nur noch soviel mehr: eigentlich musst du nicht mal wissen, was ein elf header überhaupt ist um die challenge lösen zu können. (besser wäre es aber, so von wegen allgemeinbildung und lernziele :p)


    Und noch ein Tip: es hilft, sich andere Viren anzusehen. Meistens lernt man von einem Source Code mehr als von irgend einem Tutorial eines Script Kiddies in zweifelhaftem Englisch :rolleyes:


    Viel Erfolg
    onkel_keks

    So, ich hab beschlossen, das Teil erstmal in Assembler zu schreiben und mir danach die Frage zu stellen, wie ich das in ein C Programm migrieren kann.
    In der Zwischenzeit eine andere Frage: Es gibt da eine Infektionsmethode, die mir ganz praktikabel scheint, nämlich die Tatsache auszunutzen, dass das Alignment der LOAD-Segments üblicherweise 0x1000 ist und daher meist genug Platz am Ende eines solchen Segments für den viralen Code bleibt. Nachteil ist allerdings, dass sich damit nicht alle Programme infizieren lassen (aber immer noch die meisten), da in ungünstigen Fällen zuwenig Platz für den viralen Code da ist oder das Alignment nicht 0x1000 ist.
    Muss der Virus jedes Programm infizieren können oder reicht es, die meisten infizieren zu können? :lauscher:


    Danke,
    onkel_keks

    Hallo,


    leider kann ich dir dazu keine konkrete Hilfestellung geben (weil ich nicht weiß was du falsch machst).
    Ich bilde mir aber ein, ich habe auch versucht, diese Routine zu verwenden - ebenfalls erfolglos. Das muss jetzt nicht heißen, dass die Routine nicht funktioniert, ich glaube eher ich hab sie falsch benutzt.
    Meine Erfahrung ist, dass es wesentlich einfacher ist, die Routine selbst zu schreiben. Denn dann hat man wenigstens eine Idee wo der Fehler liegen könnte und muss sich nicht stundenlang fragen, ob die Methode überhaupt richtig aufgerufen wird.
    Nun möchte ich aber auch nicht Wasser predigen und Wein trinken: Ich hab auch nicht alles selbst geschrieben. Mein Tip: such dir eine Funktion, die dir die 1er-Komplement-Summe eines Buffers berechnet. Da kann man beim Aufruf nicht viel falsch machen und der Algorithmus ist leicht nachvollziehbar. Dann konstruiere eine Methode, die dir den Pseudo-Header plus UDP-Header und Daten in einen Buffer schreibt (ich nehme an die fertige Checksum-Routine hat Probleme mit dem Pseudoheader, ist aber nur so ein Bauchgefühl :p) und lass die 1er-Kompliment-Summen-Funktion drüber laufen - invertieren - volià est la Checksum.
    Zumindest bei mir hat das wunderbar funktioniert und war unterm Strich weniger Aufwand als das herumprobieren mit der komplett fertigen Methode.


    Viel Erfolg,
    onkel_keks

    Ja, der Virus soll sich selbst duplizieren.
    Folgendes Szenario:
    In einem Verzeichnis gibt es die ausführbare Datei "program", das folgendes ausgibt:


    Code
    1. $ ./program
    2. I'm the program
    3. $


    Außerdem gibt es die Datei "virus", nämlich unser Virus. Führt man virus aus, so wird program infiziert:

    Code
    1. $ ./virus
    2. $ ./program
    3. Hello world! I'm the InetSec virus bla bla...
    4. I'm the program
    5. $


    verschiebt man jetzt program in ein anderes verzeichnis, in dem die ausführbare datei application liegt und führt program dort aus, so wird application von program infiziert:

    Code
    1. $ ./application
    2. I'm the application
    3. $ ./program
    4. Hello world! I'm the InetSec virus bla bla...
    5. I'm the program
    6. $ ./application
    7. Hello world! I'm the InetSec virus bla bla...
    8. I'm the application
    9. $


    So hab ich die Angabe verstanden. Und jetzt nochmal die Frage: Wie soll das denn in C funktionieren? Ich bin schon drauf und dran, vorkompilierten Bytecode in ein C-File zu packen und den dann ausführen zu lassen.

    Hallo,


    so sind wir mitten im Prüfungsstress bei Challenge 7 angelangt; als hätten wir nichts besseres zu tun :rolleyes:. Na, lustig klingen tut's ja.
    Was ich mich allerdings frage: In der Angabe steht irgendwo, wir könnten entscheiden, in welcher Sprache wir den Virus schreiben. Aber das Makefile ist nur für eine .c-Datei; der Abgabe-Bot erwartet sich auch eine .c.
    Also was jetzt? Einen Virus in C schreiben...pah...da kann ich gleich Visual Basic nehmen :sudern:.
    Und den ganzen Virus in Inline Assembler schreiben kommt ja wohl einem Overkill gleich.


    Wie macht ihr das? Schreibt ihr den Virus, der die Welt ins Chaos stürzen wird, in C? Wie macht man das, ohne irgendwo absolute Adressen vom Compiler reingesetzt zu bekommen?



    Danke,
    onkel_keks

    Drago:

    Quote


    Woher aber kenne ich dann die genauen UDP Daten (bspw. den hostname nach dem der dns server gefragt worden ist)?


    musst du gar nicht kennen. wie gesagt geht es hier nur darum, ein dns reply packet zu generieren; du musst kein ganzes dns hijacking durchziehen. du schickst quasi eine antwort ohne jemals eine frage bekommen zu haben. wie manche leute das auch im alltag tun...:p
    und ja, mit ID mein ich die transaction id.


    Quote


    Woher kenne ich die ID des IP Headers?


    Meinst du das identification feld? das dient nur zur identifikation bei fragmentierung, die hier nicht auftritt. siehe beliebige ip-header-doku.



    BruceBerry:
    well there must be some reason why the bot rejects your solution (at least i hope so). have you tried compiling with -Wall option? no warnings?
    if there are indeed no warnings, you might want to consider contacting one of those "gurus" at iseclab.


    Mulambo:
    ich hab bei beiden den gleichen algorithmus bei udp und ip checksum (~(1's complement)). hast du auf die endianness geachtet?