Laden...
N
NilsA myCSharp.de - Member
Bamberg in Oberfranken Dabei seit 11.03.2006 89 Beiträge
Benutzerbeschreibung

Forenbeiträge von NilsA Ingesamt 89 Beiträge

24.01.2012 - 09:57 Uhr

Hallo zusammen,

ich tüftel schon seit längerem an einem Problem und weiß nun echt nicht mehr weiter.
Folgendes:
Ich habe ein ByteArray und brauche von jedem Byte in diesem Array die Bits bzw. die Zahl in diesem Array als BinärCode.
Mein ByteArray sieht wie folgt aus:
myBa[0] = 56
myBa[0] = 50
myBa[0] = 50
myBa[0] = 48
myBa[0] = 48
myBa[0] = 48
myBa[0] = 48
myBa[0] = 49

was, wenn ich über System.Text.Encoding.ASCII.GetString(myBa) gehe, folgenden String ergibt:
"82200001"

Was ich nun brauche ist quasi folgendes:
8 = 1000
2 = 0010
usw.

Mein Ansatz war u.A. folgender: (ich wollte erstmal nur die "8" als bits)


byte[] temp = new byte[1];
temp[0] = myBa[0]; // temp[0] bekommt hier den Hex wert 0x38 = 8
BitArray bitarr = new BitArray(temp);

Wenn ich das ganze jetzt aber in einer Schleife durchlaufe (um zu sehen welches Byte gesetzt ist) kommt totaler misst dabei raus.


for (i = 7; i >= 0; i--)
{
    if (bits[i])
       //Do work
}

Erwartet hätte ich, das die 8 eigentlich so umgesetzt wird:
00001000

wenn ich jetzt aber die Schleife durchlaufe, kommt folgendes:
False, False, True, True, True, False, False, False
00111000 (ACHTUNG: Schleife wird rückwärts durchlaufen)
D.h. ich hätte doch eigentlich
00010000 bekommen müssen, oder?

Könnt ihr mir hier weiterhelfen? Was kann ich tun um das ganze jetzt vernünftig hin zu bekommen? Und am besten auch so, dass es weiterhin funktioniert, wenn sich myBa verändert. Das wird es nämlich sicher immer wieder 😉

Ich danke euch!
Gruß
Nils

Edit: Vermutlich müsste ich hier mit Bitverschiebung arbeiten, allerdings blick ich da nicht wirklich durch :-\

30.11.2010 - 09:54 Uhr

Hallo Rainbird,

vielen Dank für deine Hilfe!
Datenkontrakt scheint schonmal richtig zu sein. Das hilft mir dann auch schon etwas bei google weiter, denke ich 😃

Mit dem WebClient werde ich mich jetzt auch noch etwas genauer befassen.

Aber sehe ich das richtig, dass der XML-Request bei WebClient auch nur als String übertragen wird? Ich habe die Requests nämlich schon über Hauseigene Klassen fertig als String.
Dann könnte ich mir das erzeugen der x Klassen in der Proxyklasse ersparen und direkt den String an die WebClient klasse übergeben. Richtig?

Bisher war es so, dass ich den String per HTTP-Post versucht habe an die Seite zu senden, jedoch nur einen HTTP500er erhalten habe. Ich hatte gehofft, dass es auch so, ohne Webservice gehen würde. Jetzt komme ich aber irgendwie ja schon wieder in die richtung wie ich es vorher hatte, nur das ich nicht die HTTPWebRequest Klasse, sondern die WebClient klasse zum Übertragen nutze.

Gruß
Nils

29.11.2010 - 10:52 Uhr

Hallo zusammen,

ich habe in einem Projekt die Aufgabe daten an einen Webservice zu schicken. Die Informationen zu diesem Webservice sind folgende:
Es handelt sich um einen XML over HTTP webservice (via SSL).
Ich habe die Ziel URL (keine angabe einer .asmx seite)
Zusätzlich wurden mir die XSD Files geschickt.

Eine kollegin erstellte mir bereits die Proxyklasse anhand der XSDs. Jetzt kommen aber auch schon direkt meine Probleme.

  1. Es handelt sich um ca. 30 einzelne Klassen.
    Hier gibt es Klassen wie z.B. "requestcontent" die properties vom typ der Klasse "gender" haben. Da bin ich ja nur noch am instanzieren der Klassen.

  2. Es gibt keine Klasse / Propertie, die das Senden übernimmt. Da frage ich mich doch, wie verschicke ich das ganze an die URL? Ich kann ja nicht zig Klassen gleichzeitig an die URL senden.

Das ist das erste mal, dass ich mit Webservices arbeite. Und ich finde mich da so garnicht zurecht. Ist das vielleicht gar keine richtige Proxyklasse?

Es dankt der Verzweifelte Nils 😉

06.05.2010 - 11:23 Uhr

K'naan - Wavin Flag (das ist der WM 2010 Song)

12.04.2010 - 11:17 Uhr

also ich kümmere mich auch hin und wieder um die PCs von freunden und bekannten. das hält sich allerdings in den letzten 2 jahren in Grenzen. dafür verlange ich nichts. wenn mir jemand etwas dafür gibt ist das ok, wenn nicht, dann auch 😃
ich erwarte keine gegenleistung oder sonstiges dafür.

und zusätzlich gehen ich seit kurzem regelmäßig blut-spenden 😃

09.04.2010 - 14:57 Uhr

Huhu!

Also bei mir ist es immer so. also das ganz normale verhalten.

Wenn du das unterbinden willst, kannst du mir SHIFT+F6 ausschließlich das aktuelle Projekt erstellen.

Oder machst du es so, und die SLN wird trotzdem komplett erstellt?

Gruß
Nils

23.03.2010 - 17:12 Uhr

Hallo frisch,

danke für die Antwort.
Na ja, im prinzip sind es ja nicht viele Einträge. Ein forum oder etwas in dieser Größe plane ich nicht.
Es ist eigentlich eine Multi-User Film und Spiele Archivierung, bei der es halt die möglichkeit gibt einen Film auszuleihen.

Die kommunikation zwischen Usern ala "kannst du mir film x und spiel y ausleihen? ich hol die sachen ab" würde per Mail zwischen den leuten selber erfolgen.
Meine Webseite/Anwendung zeigt nur an, wer welches spiel hat und ob es gerade verliehen ist. D.h. Theoretisch könnten es ja Millionen verschiedener Filme und Spiele beinhalten. Aber wie gesagt die Anwendung ist nur für meinen "Erweiterten Freundeskreis gedacht.

Bsp.:
20 User
je 15 Spiele = 300 spiele
je 40 Filme = 800 filme

= 1100 Nodes (hinzu kommen noch Childnodes für Status, Beschreibung usw.)
sagen wir mal es wären 11000 Nodes, alle mit wenig Text. Hier hab ein XML mit 330 Nodes und insgesamt 17kb. Die menge an Infos pro Node ist ähnlich, aber ich kann ja als Beispiel 300 Nodes = 20kb nehmen, dann komme ich bei 11000 Nodes auf knapp 734kb. Die größe dürfte also schon ok sein, oder?

Ich tippe aber eh mal auf ca 6 Leute die es wirklich aktiv nutzen, die Andern tragen ihre Spiele ein (wenn überhaupt) und das wars.

Gruß
Nils

Edit: Rechtschreibung ein weinig korrigiert 😉

23.03.2010 - 16:54 Uhr

Hallo rainman,

also ich würde erst beim Speichern die unterschiede prüfen. Es kann ja auch durchaus vorkommen das man mal wild im Formular rum klickt und einen Wert mehrfach (und letzendlich wieder auf den Originalwert) ändert. Das wäre dann doch sehr unübersichtlich biem auswerten und am Schluss hätte sich ja effektiv nix geändert.

Von daher. Vergleiche die Werte vor dem Speichern mit denen die gespeichert werden sollen.

Gruß
Nils

23.03.2010 - 16:21 Uhr

verwendetes Datenbanksystem: noch unklar

Hallo,

ich habe vor, in kürze eine kleine Web- und Formularanwendung zu schreiben. Prinzipiell geht es um eine Art Tauschbörse für Spiele und DVDs für meinen Freundeskreis.

Jeder hat seine eigene Webseite auf der er spiele verwalten (anlegen, status ändern usw.) und bei anderen "Ausleih-Anfragen" stellen kann.
Das ganze wird noch etwas umfangreicher.

Meine Frage ist aber:
Kann ich hierfür ein / mehrere XML-Dokumente als Datenbank nutzen, bzw. ist dies überhaupt sinnvoll, oder sollte es schon eine MS-SQL Datenbank sein?
Ich hätte grundsätzlich die möglichkeit eine SQLDB zu nutzen, jedoch mag ich XML lieber und möchte mit auch gerne weiter in LINQ einarbeiten.

Wenn ja:

  • Ist es überhaupt möglich zuverlässig das gleichzeitige Schreiben von mehreren Usern zu unterbinden / nacheinander ablaufen zu lassen?
  • Und kann man überhaupt sinnvoll mehrere XML-Files als Datenbank verwenden? (ich dachte da an z.B. dvd.xml, spiele.xml, user.xml)

Danke schonmal
Gruß

Nils

19.03.2010 - 10:45 Uhr

Hallo,

ich habe ein problem mit HttpWebRequest.Timeout.

Ich setze diesen Timeout auf 30sek und möchte diesen Nach erfolgreicher Connection, vor empfang der Daten noch ändern (z.B. auf 60sek.).

Leider wird diese Änderung nicht übernommen und der Timeout bleibt bei 30 sekunden. Ist das was ich hier verusche evtl. garnicht möglich?
Und gibt es vielleicht eine Alternative?

Danke im Voraus

Gruß
Nils

09.03.2010 - 09:32 Uhr

Hallo Siassei,

ich bin momentan auch auf der Suche nach einem Laptop und bisher von diesem Modell recht angetan: Acer Aspire 5740G-434G32Mn (597,99 euro bei Amazon)

Das würde zumindest die meißten deiner Kriterien erfüllen. Eigentlich bin ich was HDDs angeht auch ein speed-freak. In meinem PC hab ich bisher auf 2x WD Raptor im Raid0 gesetzt, was schon wahnsinnig schnell ist. Trotzdem bin ich bei SSD Platten noch etwas zurückhaltend. Ich persönlich würde da lieber noch etwas warten bis mehr leute die Platten nutzen um dann eine zuverässige Aussage über den Langzeitbetrieb einzuholen.
Vermutlich wird es auch schwer sein einen Laptop mit SSD zu finden. Evtl. ist es da sinnvoller diese platte einzeln nach zu kaufen.

Bei meinem oben gelisteten Modell ist allerdings ein Win7 installiert. Schadet ja aber nicht. Linux kannste immernoch Installieren. Laptops ohne OS gibts ja nicht wirklich viele (wenn überhaupt).

Gruß
Nils

19.01.2010 - 16:33 Uhr

das meinte ich nicht.
mach doch mal folgendes:


try
{
DEIN CODE
}
catch (exception ex)
{
string fehler = ex.Message
}

dann wird dir beim debuggen in der Variable "fehler" die Fehlernachrit ausgegeben. Da steht dann, warum es zu dem Fehler kam.

Das mit den zugriffsrechten kann schon gut sein, du schreibst ja selber

...den laufenden Prozess... zu kopieren

So ein laufender Prozess kann durchaus auch für das Kopieren "gesperrt" sein, da er ja gerade verwendet wird.

Gruß
Nils

EDIT:
Oh ja, bitte den Hinweis von JAck30lena beachten!

19.01.2010 - 16:22 Uhr

Hallo inexcussus,

was steht denn in der exception?

Gruß
Nils

04.01.2010 - 10:12 Uhr

Hallo und ein gutes neues Jahr an alle!

Pünktlich zum 1.1. wurde ich mit einem Problem konfrontiert und hoffe ihr mir weiter helfen könnt 😃

Es geht um das Verzeichnis
C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys
auf Webservern.

Hier wird immer, wenn mit einem Zertifikat gearbeitet wird ein privater schlüssel erstellt und abgelegt. Leider kommt über die Jahre eine beachtliche Anzahl an Dateien zusammen. In meinem Fall fast 300.000, was auf dauer >1GB Speicherplatz auf der HDD belegt.

Leider ist es nun so, dass man hier nicht wild herum löschen kann / darf. Da einige Keys (vorallem auch ein teil der -vom Datum her- ältesten) noch in Verwendung sind. Diese werden z.B. beim start des IIS-Admin Dienstes benötigt.

Meine Frage ist jetzt, habt ihr das selbe "Problem" auch? Oder kennt ihr vielleicht sogar wege, wie diese erstellten Keys direkt nach Benutzung gelöscht werden? Denn ein Teil der Keys ist durchaus problemlos zu löschen.

Habt ihr hier Tipps? Am liebsten wäre mir hier eine Lösung (falls es diese gibt) bei der Windows selber diese Files verwaltet, da ich dieses Verzeichnis nieeeeee wieder anfassen möchte 😉
Das letzte Google-Wochenende konnte mir leider keine solche Lösung anbieten.

Danke und Gruß
Nils

02.12.2009 - 09:20 Uhr

Hallo c#fejker,

ich verstehe jetzt das Problem nicht ganz. Wenn ein Fehler auftritt ist es doch normal, dass dein Programm nicht weiter läuft. Oder möchtest du genau das?

Wenn dir z.B. eine Berechtigung auf einen Ordner fehlt und du willst eine Datei schreiben. So bricht das Script logischer Weise ab. Es würde ja auch nichts bringen dann weiter zu machen (mit z.B. dem Befüllen einer Datei), da ja die Datei gar nicht erzeugt wurde.

Gruß
Nils

EDIT:
Oder möchtest du mit dem nächsten durchlauf der For-Schleife weiter machen? dazu müsstest du das Try-Catch aber in die For-Schleife packen.

29.10.2009 - 08:35 Uhr

so, ich habe mir gestern die Home Premium 64bit OEM Version installieren wollen und musste feststellen, dass es für mein Mainboard MSI K9A2 Premium V1 keinen SATA-Raidtreiber gibt, der mit Win7 funktioniert.
Daher bin ich quasi schon beim vorbereiten der Installation gescheitert... sehr schade 😦

20.10.2009 - 09:15 Uhr

Hallo JAck30lena,

gibt es denn so eine Art "Merksatz" der einem dabei hilft, zu unterscheiden was gerade eine unmanaged ressource ist und was nicht?

Danke
Gruß

Nils

10.09.2009 - 14:03 Uhr

Hi markus111,

das ganze ist natürlich sehr unangenehm und -auch wenn als scherz gedacht- völlig inakzeptabel.

Aber ich denke das wichtigste ist jetzt erstmal das ding los zu werden und dir erst danach zu überlegen wie/ob du weiter vorgehst.

Zur svchost.exe kannst du dich u.A. hier etwas schlau machen: http://www.neuber.com/taskmanager/deutsch/prozess/svchost.exe.html

In dem Artikel wird auch auf einen svchost-analyzer verwiesen:
http://www.neuber.com/free/svchost-analyzer/

Außerdem hat pdelvo einen Ansatz zum entfernen gepostet:
"...Abgesichert starten und in der Regestry den Schlüssel entfernen."

Das solltest du auf jeden Fall mal versuchen.

Gruß
NilsA

02.06.2009 - 15:08 Uhr

Hallo multitrust,
schau dir deine ASP/ASPX Seite mal an, indem du dir vom Browser den Quellcode zeiten lässt. ID ist nicht gleich ID. Die Controls haben für den Client eine andere ID.
Über "QuellCode Anzeigen" solltest du die richtige finden.

Gruß
Nils

EDIT:
Oh, zu langsam 😉
Der Link von Peter Bucher ist ja mal wunderbar in die Favoriten einfüg

19.05.2009 - 09:17 Uhr

Hi Progi123,
ich habe da mal eine kleine Frage. Woher hast du die PartyPoker API bekommen? Ich will mir schon längere Zeit ein eigenes kleines Programm schreiben. Ich habe PartyPoker sogar schon angemailt, aber keine brauchbare antwort erhalten außer: "...hierfür gibt es bereits software...".

Dein Tool werde ich bei der nächsten Einzahlung mal testen 😃

06.05.2009 - 11:19 Uhr

Hi Mosspower 😉

wie wäre es mit: yoursportbet

Von deinen Vorschlägen finde ich übrigens betpope sehr gut. Das hat so was überlegenes/etabliertes durch die ergänzung pope.
Außerdem stell ich mir das design echt witzig vor. Der Papst, der aus seinem Papamobil (oder wie es heißt) beim Fußball/Pferderennen... mitfiebert 😄

Gruß
Nils

24.04.2009 - 15:57 Uhr

Hallo paranoia,
ich vermute mal dir geht es um die Erzeugung von Versandlabels, oder?
Meines Wissens nach gibt es da nur 2 möglichkeiten. 1 du nutzt die UPS-Software, die kannst du dann aber nicht beeinflussen, oder 2. du erzeugst das Label aus einer eigenen Software, aber das ist nicht gerade einfach, weil die Abstände auf den mm genau sein müssen, sonst genehmigt UPS den Aufkleber nicht.

Oder willst du etwas anderes machen? Wenn ja, was genau?

Gruß
Nils

EDIT:
gX|progs hat natürlich recht, einfach mal bei UPS fragen schadet ja nicht 😉

22.04.2009 - 14:45 Uhr

Huhu,
es gibt noch einige weitere Operatoren. Eine übersicht findest du in der MSDN.

Gruß
Nils

03.04.2009 - 20:11 Uhr

Äh, nein. Das war eine Javascript-Prüfung auf der Intranetseite eines Kunden. Die komischerweise nicht ging.

Das ist aber äußerst komisch 😛 . Da ist wohl das Beste, sie kaufen einen neuen Webserver, danach gehts bestimmt 😉

20.03.2009 - 09:32 Uhr

Hallo LaTino,
mit deiner Vermutung liegst du genau richtig. Ich wollte es so lösen, da ich ein bestehendes Programm erweitern wollte. Im Prinzip gibt es schon eine Abfrage in C# auf einer folgeseite, jedoch endet diese direkt in einer Exception und dann folglich in der Fehlerbehandlung. Ich wollte eigentlich ungern so tief in das Programm eingreifen und hier erst noch prüfungen vornehmen, aber wahrscheinlich bleibt mir nicht wirklich etwas anderes übrig.

Na mal sehen, es ist noch nicht 100% sicher ob ich das überhaupt machen muss. Ich wollte es nur schon vorher geklärt haben.

Vielen Dank nochma!

Gruß
Nils

19.03.2009 - 13:11 Uhr

Vielen vielen Dank! 😃

Das werde ich mir gleich mal ansehen.

Gruß
Nils

19.03.2009 - 11:30 Uhr

Hallo burning snow,
vielen Dank erstmal für deine Antwort.

Ich habe mittlerweile noch ein weiteres Problem.

Daten sind im XML
Style ist im XSL
Ausgabe ist XHTML

Wie kann ich jetzt (ohne javascript, das ist in meinem Fall nicht möglich) Eingabefelder validieren?
Geht das überhaupt noch anders?

Danke!
Gruß
Nils

17.03.2009 - 17:46 Uhr

verwendetes Datenbanksystem: <XML mit XSL>

Hallo,
ich muss mich gerade recht schnell in das Thema XML mit XSL einarbeiten. Jetzt wollte ich u.a. mal nachfragen, ob ich das richtig verstanden habe.

Also:
XML -> enthält Daten
XSL -> enthält Style

Das ganze wird miteinander "verschmolzen" und der Ausgabetyp kann im XSL festgelegt werden. (z.B. HTML oder auch XHTML).

Das müsste soweit grob stimmen, oder?

Dann habe ich noch folgende Fragen:
Ist es möglich anstelle des XML-Files auch ein XHTML-File zu nehmen? Das hätte doch den Vorteil, das man XHTML-"Funktionen" nutzen kann (z.B. aus dem MathML namespace), oder?

Gibt es auch XHTML-"Standardnamespaces" die von allen gängigen Browsern unterstützt werden?

Vielen Dank schonmal!
Gruß
Nils

13.03.2009 - 09:53 Uhr

Hallo iced-t89,
eine schönere GUI wird es noch geben. Ich war erstmal sehr damit beschäftigt überhaupt eine funktionierende zu erstellen 😉
Ist halt alles noch recht neu für mich.

Gibts sonst noch Anregungen?
Wie findet ihr z.B. die Struktur des Quellcodes?

EDIT: Findet ihr die Anwendung nützlich? Ich vermute mal für leute die Täglich mit dem PC arbeiten ist es meißt nicht so wichtig, aber ich denke da z.B. an Leute die technisch nicht so versiert sind.

Gruß
Nils

11.03.2009 - 09:49 Uhr

hi,
hab den Link entfernt.
Anbei mal ein Bild von der Plattformauswahl

Gruß
Nils

10.03.2009 - 22:06 Uhr

Hallo,
da mein Projekt PasswordReminder vor kurzem schon sehr früh einiges an Verbesserungen nötig hatte, habe ich es komplett neu Entwickelt.
Jetzt aber was zu dem Tool:

Was macht der PasswordReminder?
Das Tool dient dazu, Passwörter für z.B. Email, FTP-Server, Foren usw. zu speichern. Damit das ganze möglichst viel Sicherheit bietet, sind die Passwörter natürlich verschlüsselt (später mehr dazu). In dem Tool müsst ihr euch über ein "Masterpasswort" anmelden, dies ist zukünftig das einzige Passwort das ihr euch merken müsst.

Welche Features Bietet der PasswodReminder?

  1. Speichern von wichtigen Informationen für o.g. Dienste (im folgenden Plattformen genannt.
  • Plattformname, User, Passwort, Email, Antwort auf evtl. Sicherheitsabfrage
  1. Anlegen / Ändern des Masterpassworts

  2. Hinzufügen, bearbeiten und löschen kompletter "Plattformen" inkl aller Daten

  3. Kleines "Einstellungen" - Menü mit bisher 2 Optionen

  • Kennwort verschlüsselt anzeigen, Kennwort in Zwischenablage kopieren

Wie werden die Daten Verschlüsselt?
Hierzu werden 3 verschiedene Verschlüsselungen benutzt (2 verschiede Mechanismen)

  1. Das Masterkennwort wird als Hash mittels bcrypt gespeichert.
  2. Die einzelnen kennwörter/user/mailadressen werden mit Rijndael Symmetric ver- und entschlüsselt.
  3. Das gesamte XML-Dokument, welches alle Daten enthält wird zusätzlich auch mit Rijndael Symmetric ver- und entschlüsselt (jedoch mit anderem key, hash, vector...)

Die verschiedenen keys, vectoren und co. sind momentan fest im Code hinterlegt. Sollte jemand eine fertige .exe wollen, ohne Source, werde ich hier eine Version mit anderen Parametern posten, die nicht veröffentlich werden.

EDIT:
Bilder folgen
/EDIT:

So, ich hoffe mein Tool schneidet diesmal besser ab als beim letzten mal. (den alten Thread habe ich löschen lassen)

Gruß
Nils

09.03.2009 - 09:43 Uhr

Hallo,
ich glaube den Fehler gefunden zu haben.
Wahrscheinlich habe ich nach dem Verschlüsseln was am IV oder am Key geändert. Ich werd das morgen nochmal nachprüfen können.

Trotzdem danke für eure Hilfe!

Gruß
Nils

07.03.2009 - 19:58 Uhr

Hi,

ich mache mir gerade Gedanken über die sinnvolle Verwendung von Try/Catch.

Irgendwie bin ich mir nicht sicher ob ich zu viel potenzielle Fehlerquellen in meinem Programm sehe oder nicht.
Ich hatte in meinem Tool folgenden Plan:

DAL:

  • Dateien erzeugen -> Try/Catch
  • In Dateien schreiben -> Try/Catch

BLL:

  • Zugriff auf externe komponenten -> Try/Catch
  • Übergabe und Entgegennahme der DAL Methoden - KEIN Try/Catch

Das ist jetzt eine sehr grobe Zusammenfassung, aber ist die Verwendung so richtig?
Mich stört eigentlich die Fehlerabfrage im DAL. Sollte ich diese besser auch im Try/Catch machen? So das im BLL die einzigen Try/Catch sind?

Wie handhabt ihr das?

Danke
Gruß
Nils

06.03.2009 - 15:25 Uhr

Bei meinem Tool geht es darum, Passwörter z.B. für Mail-Accounts, Foren usw. abzuspeichern, damit man sich nicht jedes merken muss. Hierfür muss ich sie ja auch wieder entschlüsseln können, daher verwende ich nur 1 Hash und das ist der für das "Masterkennwort" mit dem man die Anwendung überhaupt erst starten können soll.

Gruß
Nils

06.03.2009 - 15:20 Uhr

Hallo,
ich wollte mal fragen, wie es bei euren Entwicklungen um die Sicherheit (Angreifbarketi) des Codes steht.
Verwendet ihr Analyse-Codes, wie Hyper-Source um eure Code-Sicherheit zu erhöhen? Bzw. habt ihr Erfahrungen mit solchen Programmen?
Sind sie wirklich sinnvoll und ihr Geld wert?

Gruß
Nils

06.03.2009 - 15:05 Uhr

Hallo,
für mein Passwort-Verschlüsselungstool verwende ich unteranderem eine Symmetrische-Verschlüsselung von Rijndael Rijndael Symmetric.

Eigentlich klappt alles sehr gut. Ich kann Passwörter ver- und entschlüsseln, ABER..

wenn ich das tool auf einem anderen PC starte und dort mein Kennwort entschlüsseln will (obwohl Salt, Key usw gleich sind) bekomme ich einen Fehler:
"Zeichenabstände sind ungültig und können nicht entfernt werden."

Hier mal ein Code-Ausschnitt. Es kracht in der letzten Zeile.


// Define cryptographic stream (always use Read mode for encryption).
            CryptoStream  cryptoStream = new CryptoStream(memoryStream, 
                                                          decryptor,
                                                          CryptoStreamMode.Read);

            // Since at this point we don't know what the size of decrypted data
            // will be, allocate the buffer long enough to hold ciphertext;
            // plaintext is never longer than ciphertext.
            byte[] plainTextBytes = new byte[cipherTextBytes.Length];
            
            // Start decrypting.
            int decryptedByteCount = cryptoStream.Read(plainTextBytes, 0, plainTextBytes.Length);

Jetzt meine Frage. Ist so eine Ver- und entschlüsselung irgendwie abhängig vom PC? (z.B. Thema System/Hardware-ID)

Das würde mich nämlich vor ganz andere Probleme stellen... :\

Danke schonmal

Gruß
Nils

EDIT:
Folgende werte habe ich vorerst Hardcoded in den Quelltext geschrieben, weil ich damit eigentlich solche Probleme umgehen wollte... hilft jedoch nix.

private string passPhrase = "Pas5pr@se";
       private string salt = "s@1tValue"; //BCrypt.GenerateSalt(5);
       private string vector = "dkwWEhaX38G@OPnj";
       private string hash = "SHA1";
       private int key = 192;
       private int iteration = 2;
03.03.2009 - 19:16 Uhr

Hallo nochmal!

So, ich habe das Problem vorerst gelöst, jedoch - wie ich finde- unschön.
Anbei der Code mit Erklärung des Problems + "Lösung".

Die Problemlösung geschieht jetzt im event lbMenu_SelectedIndexChanged


public PasswordReminder()
        {
            InitializeComponent();

            //diese Einstellungen verstecken die Reiter erst zur Laufzeit
            //zur Design-Zeit sind die Reiter ja sehr nützlich 
            tcMenu.SizeMode = TabSizeMode.Fixed;
            tcMenu.ItemSize = new Size(0, 1);
            tcMenu.Appearance = TabAppearance.Buttons;

            this.lbMenu.SelectedIndexChanged += new EventHandler(lbMenu_SelectedIndexChanged);
            // beim ersten Login nur Masterpasswort-Tab anzeigen
            if (bll.CheckFirstLogin())
            {
                ShowMenuTabs(tpFirstLogin);
                tcMenu.SelectedIndex = 0;
            }
            // ansonsten alle Tabs anzeigen
            else
            {
                ShowMenuTabs(tpLogin);
                tcMenu.SelectedIndex = 1;
                //ToDo: ALT... löschen!
                //foreach (TabPage tp in this.tpLogin.TabPages)
                //{
                //    lbMenu.Items.Add(tp);
                //}
            }
            this.lbMenu.DisplayMember = "Text";
            
        }


// sorgt dafür das im Menü nur 1 Tab angezeigt wird
        private void ShowMenuTabs(TabPage Page)
        {
            lbMenu.Items.Clear();
            lbMenu.Items.Add(Page);
        }


//für mehrere Tabs
        private void ShowMenuTabs(List<TabPage> Pages)
        {
            for (int i = 0; i < Pages.Count; i++)
            {
                lbMenu.Items.Clear();
                lbMenu.Items.Add(Pages[i]);
            }
        }
[CSHARP]

[CSHARP]
private void lbMenu_SelectedIndexChanged(object sender, EventArgs e)
        {
            //Problem: Durch ausblenden von "Masterpasswort" hat "Login" im Menü eine
            //          andere ID als der zugehörige TAB
            //Lösung: Alle TABs auslesen und Name + ID in Dict schreiben.
            //          anschließend über Name vom Menü (== TabName) die ID holen

            Dictionary<string, int> TabIndex = new Dictionary<string, int>();
            int counter = 0;
            
            foreach(TabPage Page in tcMenu.TabPages)
            {
                TabIndex.Add(Page.Text, counter);
                counter++;
            }
            this.tcMenu.SelectedIndex = TabIndex[lbMenu.Text];
            //TabControl ist bisserl doof - es nimmt den Focus, auch wenn nur per Code selektiert wurde
            lbMenu.Focus();
        }

Was sagt ihr zu dieser Lösung?

Gruß
Nils

03.03.2009 - 11:41 Uhr

Hallo und danke für die Antworten,

Eigentlich ist schon ein Menü erwünscht, aber erst nach dem Login.
Dort soll es dann den "Content", also die eigentliche Aufgabe meines Tools geben und zusätzlich noch ein Tab mit "Masterpasswort ändern". Das wird es zwar wahrscheinlich nicht sofort geben, aber ich werde diese Funktion auf jeden Fall integrieren.

Das bedeutet ich brauche später schon ein Menü. Ich konnte mir deine Lösung noch nicht ansehen, werde es aber heute Abend mal machen. Vermutlich komme ich damit sogar schon weiter.

@mosspower
Ich hab gehört du hast meinen Saustall schon aufgeräumt und alles neu gemacht. Das war wohl auch die beste Lösung. Irgendwie hat meine Software durch die ständige Erweiterung schon 2 Wasserköpfe gehabt 😉

Gruß
Nils

28.02.2009 - 23:13 Uhr

Hallo jaensen,
vielen dank erstmal für deine Antwort!
Leider hänge ich schon gleich wieder fest. Ich habe jetzt die Umsetzung von ErfinderDesRades genommen, da sie einfacher aussah. ABER:

Mein Problem bleibt bestehen. Ich habe jetzt
Tab1 (Masterpasswort erstellen)
Tab2 (Login)
Tab3 (eigentlicher inhalt)

Ich prüfe nun in meinem Tool ob es sich um den ersten login handelt, wenn ja dann Zeige nur Tab1, wenn nein zeige Tab2

Das geht leider schon nicht.
Ich kann zwar jeweils im "Menü" Tab1 oder Tab2 anzeigen, aber im eigentlichen Content-Bereich wird immer Tab1 angezeigt.

Lasse ich im Menü alle Tabs anzeigen und wähle sie manuell an, passt wieder alles. Aber ich möchte ja nicht, das man nach dem Login nochmal auf den "Masterpasswort erstellen" oder "Login" Tab kann.

Anbei ein paar Code-Auszüge (da ich das ganze leicht angepasst habe)

Bei Programmstart:


public PasswordReminder()
        {
            InitializeComponent();

            //diese Einstellungen verstecken die Reiter erst zur Laufzeit
            //zur Design-Zeit sind die Reiter ja sehr nützlich 
            tcMenu.SizeMode = TabSizeMode.Fixed;
            tcMenu.ItemSize = new Size(0, 1);
            tcMenu.Appearance = TabAppearance.Buttons;

            this.lbMenu.SelectedIndexChanged += new EventHandler(lbMenu_SelectedIndexChanged);
            // beim ersten Login nur Masterpasswort-Tab anzeigen
            if (bll.CheckFirstLogin())
            {
                ShowMenuTabs(tpFirstLogin);
            }
            // ansonsten alle Tabs anzeigen
            else
            {
                //ToDo
            }
            this.lbMenu.DisplayMember = "Text";
            lbMenu.SelectedIndex = 0;
        }

Zeige Tabs in Menü + Tab auswählen


private void ShowMenuTabs(TabPage Page)
        {
            lbMenu.Items.Clear();
            lbMenu.Items.Add(Page);
            tcMenu.SelectTab(Page.Name);
        }

Gruß
Nils

27.02.2009 - 19:54 Uhr

Hallo,
WinForms sind nun wirklich nicht mein Gebiet, aber ich versuche mich doch immer wieder daran.
Leider scheitern meine kleinen Tools immer an der Umsetzung des Forms.

Meine bisherigen Versuche mit z.B. Tabs sahen so aus:

TabPage 1. eine "Loginseite" welche bei erstmaligem Start des Programms das Masterpasswort haben möchte.

TabPage 2. hier erscheinen ein paar Dropdown Listen, Buttons und Eingabefelder.

TabPage 3. hier soll der User die Möglichkeit haben das Masterpasswort zu ändern.

Mein Plan war beim Start alle TabPages zu Deaktivieren, so dass der Login erzwungen wird. Das geht ja leider schon gar nicht. 😦

Dann hatte ich auch mal eine Lösung mit Panels, die Alle übereinander lagen und die verschiedenen "Formulare" enthalten haben. Das ist noch schlechter, weil ich bei jeder Änderung ein riesen hin- und hergeschiebe habe.

Mache ich hier im aufbau grundsätzlich etwas falsch? Ich wollte die 3 TabPages nicht auf 3 Formulare verteilen, weil das optisch nicht so schön ist. 1 Formular ist offen, 2. geht auf, oft leicht versetzt, bzw. man "merkt" einfach das man auf einem neuen Formular ist.
Wie macht ihr das, bzw. wie macht man sowas richtig?

Gruß
Nils

24.02.2009 - 12:00 Uhr

Hiho,
jetzt bringt ihr mich grad total durcheinander.
ich schreibe gerade meinen PasswortReminder neu, um besser Verschlüsselungen zu nehmen und den Code in 3 Schichten auf zu bauen.

Meine Idee war:

Class DAL:
Enthält Methoden -> speichern, edit und löschen

Class BLL:
instanziiert DAL
Enthalt Methoden -> speichern, edit und löschen
Diese Methoden machen Prüfungen und rufen die jeweilige DAL Methode auf

Class PWReminder
instanziiert BLL
Enthält Methoden ala ShowLoginWindow()...
Nutzt die Methoden von BLL

Ist das jetzt falsch?
Müsste das so aussehen:

Class DAL
Enthält Methoden -> speichern, edit und löschen

Class BLL hat DAL als Interface
Ruft methoden des Interface auf und macht Prüfungen

Class PWReminder hat BLL als Interface
...

Gruß
Nils

14.01.2009 - 17:15 Uhr

Rauchen: nö, noch nie
Trinken: 1-2 mal im Jahr
Sport: Die letzten 3 Jahre nicht mehr, aber in diesem Sommer gehts wieder mit Fußball los
Ernährung: sehr unterschiedlich. momentan wieder weniger fastfood, aber fleisch ist eigentlich immer dabei.

08.01.2009 - 10:01 Uhr

Folgendes sollte funktionieren:


private void test()
        {
            string teststring = @"bla
huhu
ja ja";
            string[] delimArray = { "\r\n", "\n", "\r" };

            string[] splitparts = teststring.Split(delimArray, StringSplitOptions.None);
        }

EDIT: Oh, etwas zu spät 😃
EDIT2: Code tags gesetzt.

06.01.2009 - 21:11 Uhr

jap, es ist ein standard button den ich zur laufzeit erstelle.
das Abonnieren von Ereignissen werde ich mir gleich mal ansehen.

danke dir!

Gruß
Nils

06.01.2009 - 20:44 Uhr

Erst einmal vielen dank!! 🙂
Es geeeeht.

Mein Button besitzt kein OnClick, müsste ich dieses event auch erst noch erstellen?
Ich bin leider noch nicht so fit in winforms und in den events schon gar nicht, daher muss ich immer etwas blöd nachfragen 😜

Und was ist an meiner Lösung nicht so gut? sorry, wie gesagt ich kenne mich noch nicht wirklich gut aus.

Danke!
Gruß
Nils

06.01.2009 - 20:03 Uhr

Hallo,
nachdem ich jetzt stunden an x verschiedenen beispielen rum probiert habe weiß ich nicht weiter.

Ich gehe nach dem Beispiel in folgendem Link (letzter Post von Programmierhans) vor.
[Lösung] Problem mit EventHandler

Um es kurz zu machen. Wie weise ich button.click nun mein eigenen event zu?
Bei mir sieht das ganze so aus:


btnLogin.Click += new EventHandler<TextIOEventArgs>(btnLogin_Click(this,new TextIOEventArgs("test")));

"test" soll später durch eine Variable ersetzt werden, aber so weit bin ich ja noch gar nicht. Als Fehler bekomme ich "Methodenname erwartet".

Ich hoffe mir kann da einer helfen 😃

Gruß
Nils

EDIT: Thema als "gelöst" markiert. Ich habe vorerst die lösung von See Sharp genommen. Das Tool wird für eine zweite Version komplett überarbeitet und da werde ich mich verbesserungen in der Umsetzung widmen.

24.12.2008 - 10:31 Uhr

Hallo und Frohe Weihnachten!

Ich bin gerade dabei bzw. habe gestern angefangen ein Tool zu erstellen in dem ich meine ganzen Passwörter speichern kann.
Da ich einfach nur eine kleine .exe wollte, ohne viel Drumherum habe ich überlegt ob ich nicht die settings.settings "vergewohltätigen" kann um darin meine Kennwörter zu speichern.

Das "Masterpasswort" kann ich ja ohne probleme da rein schreiben und auch abfragen. Aber was mach ich jetzt wenn ich ein neues passwort einfügen will? Natürlich könnte ich in der Settings eine Zeile anlegen
Name = "Passwoerter" und Value = "MyCSharp.de:Passwort1", "EMails:Passwort2"

Aber das gefällt mir garnicht. Schöner wäre
Name = "MyCShapr.de" Value= "Passwort1"

Leider scheint es nicht zu funktionieren während der Laufzeit einen neuen Datensatz in dieser Settings zu erstellen.

Habt ihr das vielleicht schonmal gemacht? Habe ich die Lösung nur nicht gefunden?
Oder muss ich doch ein externes z.B. .dat-File nehmen und die daten dort eintragen? Gibt es evtl. andere elegante Lösungen?
Natürlich wird alles verschlüsselt (Masterpasswort MD5 und alle anderen z.B. BlowFish)

Ich hoffe ich konnte meine Frage halbweg rüber bringen.

Gruß
Nils

05.12.2008 - 16:40 Uhr

Hi tkrasinger,
was du meinst ist - wenn ich dich richtig verstehe - Captcha

http://de.wikipedia.org/wiki/CAPTCHA

wenn du danach suchst, solltest du auch schon c# codebeispiele finden. und ja, das "verwurschteln" ist nötig, da meines wissen die einfachen captcha schon geknackt wurden.

Gruß
Nils

03.12.2008 - 11:38 Uhr

Vielen dank für die Hilfe!
Ich werde die Regex lösung versuchen, da ich noch nie damit gearbeitet habe und so gleich noch etwas neues lerne 😃

Gruß
Nils

03.12.2008 - 11:30 Uhr

Hallo,
einen String in ca. folgendem Format:

Len=123&Data=34kj348398d83h39g0

Mein Ziel ist eigentlich ein Dictionary<string,string> mit folgendem Format:

Key | Value
Len | 123
Data | 34kj348398d83h39g0

Ich habe den String schon mittels Split ein ein Array geschrieben. Das sieht so aus:

meinarray[0] <- Len=123
meinarray[1] <- Data=34kj348398d83h39g0

um das ganze in mein dictionary zu schreiben müsste ich ja jetzt ein weiteres array machen um die werte in meinarray[0] und meinarray[1] erneut beim "=" zu splitten.

dann könnte ich sagen
meindictionary.add(meinarray2[0],meinarray2[1])
meindictionary.add(meinarray2[2],meinarray2[3])

So, nun meine Frage: Geht das nicht leichter?
Schön wäre quasi ein
meindictionary.add(meinarray[0].Split("="))

Aber das funktioniert ja nicht. habt ihr eine Idee?

Danke
Gruß
Nils