Beiträge von Tion

    Hey ihr,


    habe meinen Laptop mal aufgerüstet, das CD-Laufwerk wieder rausgeschmissen und wieder eine zweite Festplatte eingebaut.
    Meine aktuelle Konfiguration sieht also so aus:
    HDD0: Windows 7, mit Veracrypt vollverschlüsselt
    Bootloader: Veracrypt
    HDD1: Windows 7 (unverschlüsselt) + Debian
    Bootmanager: Grub2


    Mein Rechner ist so eingestellt, dass er den MBR von HDD1 nutzt, Grub also sichtbar ist. Dort ist dann Windows 7, der Veracrypt-Bootloader auf HDD0 und Debian aufgelistet.
    Den Veracrypt-Bootloader starte ich in Grub über Chainloading. Funktioniert auch, der prompt kommt, ich möge bitte mein Passwort eingeben. Er überprüft das Passwort, aber startet dann bei Erfolg das unverschlüsselte Windows 7 von HDD1 statt dem Verschlüsselten von HDD0.
    Warum macht er das? ?(


    Ich habe testweise HDD1 mal rausgenommen, dann startet er von HDD0 den Veracrypt-Bootloader und alles ist super.
    Stecke ich HDD1 während der Laufzeit wieder rein hat Veracrypt damit auch kein Problem.


    TL;DR: Veracrypt startet ein Windows von einer anderen Platte anstatt das auf seiner eigenen.
    Kann ich dem Veracrypt-Bootloader irgendwie sagen, dass er seine Griffel auf seiner Platte lassen soll und das unverschlüsselte 7 bitte in Ruhe lassen soll? :(


    Liebe Grüße,


    Tion

    Auch wenn du das Problem gelöst hast, solltest du deine Indentation auf Leerzeichen statt Tabulator stellen und zum Zurückgeben der Daten eher Callbacks nutzen und nicht direkt eine neue Instanz erzeugen.

    Die Keys werden nur beim Starten erzeugt, daher macht es an sich während der Laufzeit keinen Unterschied, zudem habe ich bei node-rsa keinen Hinweis von der Existenz von Callbacks gefunden; neue Instanzen muss ich bei node-rsa erzeugen, weil pro Instanz nur ein Schlüsselpaar verwalten kann; und ich bin mehr Fan von Tabs als von Leerzeichen.
    Aber trotzdem Danke für die Hinweise :)

    Hey ihr,


    ich melde mich mit einem Problem, was es ganz schön in sich hat. Ich sitze hier seit 19:00 und finde meinen Fehler nicht :(


    Ich habe einen Server, der auf node.js-Basis läuft. Ich möchte von diesem per request eine Anfrage an eine Webseite senden, die Webseite soll antworten.
    Dabei wird ein temporärer RSA-Schlüssel generiert, der öffentliche Schlüssel davon wird an den Webserver gesendet. Um zu beweisen, dass der Server wirklich der Server ist, unterschreibt er den öffentlichen Schlüssel und ein paar andere Daten mit einem Master-Schlüssel, der Client hat den zu den Master-Schlüssel passenden öffentlichen Schlüssel.


    Geladen wird der Schüssel beim Start wie folgt:

    JavaScript
    console.log("[RSA] Found. Importing it...");
    			AuthHelper.key = new NodeRSA(fs.readFileSync("./setup/private.key"), "pkcs1", {encryptionScheme: "pkcs1", signingScheme: "pkcs1-md5"});
    			console.log("[RSA] Keys imported!");



    Der Code zum Generieren des temporären Schlüssels:



    Die Daten, die er an den Server senden, stimmen mit denen überein, die der Client generiert. Das ganze sieht beispielsweise so aus:

    Code
    data: eyJrZXkiOiItLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLVxuTUlHZU1BMEdDU3FHU0liM0RRRUJBUVVBQTRHTUFEQ0JpQUtCZ0g3cHJCNzFYQmc0K1U5ckZCM2h1eStKcXZCblxuU3IrdUVWM3ZRYlRodXlzWWV1TGErQXlwSTd4MWdVVkFmdUN1VEUvb0pMSDhUTlZtNjlyS2NNcFFWaGRDdVpHS1xuZDFudTY4Ky9LWjFtd1ZSRURGU0QyNlVMSjRKLzBZS2Q4WnRPb2hBMDRlSG9QZEVmd1pObWZHeElpM2tteThnL1xuUjBoVDgrWEFISmo4eTZodkFnTUJBQUU9XG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0iLCJ1dWlkIjoiMTg4ZTg0YjItNTg2Yy00ZmZkLTgzNWMtN2IyNmViM2E0NTRkIiwiZGF0ZSI6MTQ1MjI4ODMwMH0=
    signature: NJMGwDjaX3saFNgzlFGSVOOiQ2hNn5iUnHmILULOvElgt7ZRTzysIcmz+GHdgdaYFv4qsWKzpR+kfaDuu9gF6sMl3gSmStP9mZTz4l9ZtbJaWaYbN1m9PXBAdxfDES9Cu07o1UZ/H5W+hLrF5rpcq5xRuBvG/WLTGWQctSZvOrWhNRXl1jidoMrR7TsapqqqImXwRPBTYkrODcFoGv/5UAseanZoM3nad/CyVUSQIUepDMvr5ZHedL8FKddP9GecKrTFM49M6kXoAmfZCuVCVkXbD988Qdy/1KCjbgMeDCp8K//OWpGu0AGMcHiL6Zg1/mxXZz6ajeStyFy/J9pO4Q==


    In "data" steckt der temporäre öffentliche Schlüssel, die aktuelle Uhrzeit als *nix-Timestamp und eine UUID, die unwesentlich ist. Signature ist wohl selbsterklärend, das ist einfach nur die Signatur base64-kodiert.


    Clientseitig wird das ganze überprüft, doch bei der Überprüfung gibt phpseclib immer false zurück


    Die "typischen" Fehler bin ich schon durchgegangen

    • Die Daten werden erfolgreich und unverändert übertragen
    • Der öffentliche Schlüssel von dem Clienten passt zu dem Masterschlüssel des Servers
    • Der Server lädt den privaten Schlüssel erfolgreich
    • Der Client lädt den öffentlichen Schlüssel erfolgreich
    • Beide benutzen PKCS1 und md5. Einen Umstieg auf PKCS1 sha1 oder PKCS1 sha256 brachte keinen Erfolg.
    • Eine direkte Überprüfung der Signatur auf Serverseite ist natürlich erfolgreich

    Wenn ich das "@" in Zeile 9 weg nehme, also die entsprechende Fehlermeldung anzeigen lasse, gibt er nur einen Notice, dass die Signatur falsch ist.



    error_reporting ist auf E_ALL, er würde mir also eventuelle Fehler anzeigen. Selbes gilt für display_errors.


    Benutzt werden vom Server node.js, aktuellste Version, zusammen mit node-rsa.
    Der Client benutzt PHP mit der aktuellsten Version von phpseclib.
    Die Daten werden über HTTP übertragen, ich nutze dazu request in der aktuellsten Version und eine POST-Anfrage.
    Die Post-Anfrage wird wie folgt gesendet:

    JavaScript
    self.encryptionhelper = AuthHelper.createSignedRequest(self.get("uuid"));
    	request.post({
    		"url": "http://url.zur.php.seite/",
    		"form": {
    			"data": self.encryptionhelper.getData(),
    			"signature": self.encryptionhelper.getSignature()
    		}
    	}, function(error, response, body) {  });


    Als Antwort bekommt er "INVALID_POST_DATA" und der Client schreibt in die Log-Datei, dass die Signatur falsch ist.


    Kann mir einer einen Denkanstoß geben? :/



    EDIT: Hat sich erledigt. Sollte jemand ähnliche Probleme bekommen, die POST-Daten müssen erst zu UTF8 umgewandelt werden, also:

    PHP
    $_POST['data'] = utf8_encode($_POST['data']);
    	$_POST['signature'] = utf8_encode($_POST['signature']);

    Hast du mal versucht, nur die craftbukkit zu starten? Idr wird ein Screen terminiert, wenn der Prozess da drinne fertig ist.
    Was gibt

    Code
    java -Xmx1G -Xms1G -jar craftbukkit.jar

    aus?


    Ich würde den Parameter "-d" an Screen anhängen, um ihn danach zu detatchen ;)

    Wie man der letzten Quelle entnehmen kann, wurden bis jetzt 2 Todesopfern Cannabis als Auslöser des Todes nachgewiesen. Wenn man sich mal als Vergleich Alkohol herbeiholt ( welches übrigens auch eine Droge ist ) sieht man, dass
    74.000 Menschen alleine in Deutschland an dieser Droge sterben.
    http://www.t-online.de/lifesty…hrlich-durch-alkohol.html
    Damit wäre das mit "Cannabis ist eine tödliche Droge" geklärt.

    Etwa 33% aller Autounfälle passieren, weil ein Fahrer betrunken ist. Würden also alle Leute immer betrunken Auto fahren, würde die Anzahl der Unfälle um 67% zurückgehen.
    Es sind nur 2 Leute gestorben, weil wesentlich weniger Leute kiffen als Alkohol trinken. Ich kann dir ohne Probleme 80 Personen vorstellen, die mindestens ein mal im Monat Alkohol trinken; hingegen vielleicht nur 10, die mindestens einmal im Monat kiffen.


    Ich bin zwar für eine Legalisierung, genau so wie ich für eine Legaisierung aller Drogen, die keine Aggressionen hervorrufen, bin; aber hochgerechnet gab es wohl auch weniger Tote durch Speed als durch Alkohol, was Speed nicht zu einer ungefährlicheren Droge macht. Die Argumentation hinkt für mich einfach.


    Ich war bereits ein paar mal in Amsterdamm und es laufen dort auch Personen kiffend durch die Straßen, aber es sind nicht ur viele, wie man es befürchten könnte. Ich war sogar im "The Students Hotel", also fast Innenstadt und jugendlastig, trotzdem hat dort kaum einer gekifft. Und passives Einatmen im Vorbeigehen sollte kaum breit/high machen; der Dampf ist übrigens leichter als Luft, wodurch er sich schnell verflüchtigt.


    [DT]Sniper: Minderjährige kommen auch jetzt ohne Probleme ran. Ich gehe davon aus, dass jeder Mensch mindestens eine Person kennt, die dealt. Ich für meinen Teil kenne vier, die aktuell noch verkaufen, zusätzlich einen Pusher und zwei, bei denen ich mir nicht mehr sicher bin.


    .HellYeah: Doch, ein paar Beiträge über dir :D

    Erzähl mehr über dein Projekt. Ist es SA:MP bezogen? Eine Launchpage, eine statische Homepage, oder mit Login- und Registrierungssystem?

    Das liegt daran, dass du sie mit Notepad öffnest, welches ein zweites Steuerzeichen für Zeilenumbrüche benötigt (sollte eig jeder Windows-Editor).
    Dazu einfach das "\n" am Ende durch "\r\n" ersetzen, dann erkennen alle Editoren das als Zeilenumbrüche.

    PHP
    <?php	namespace tsa\http;	/**	* HTTP Wrapper for CURL Library	* Part of account system. Do not distribute.	*	* @author     Tion <admin@tionsys.de>	*/	class HTTPCURLLib {// implements HTTPLibInterface {		private $ch = null;		private $url = null;		private $postdata = null;		private $header = null;		private $response = null;		public function __construct() {			$this->ch = curl_init();			curl_setopt($this->ch, CURLOPT_FAILONERROR, true);			curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, true);			curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, 1);			curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, 2);		}		public function setURL($url) {			$this->url = $url;			curl_setopt($this->ch, CURLOPT_URL, $this->url);			curl_setopt($this->ch, CURLOPT_POST, 0);			curl_setopt($this->ch, CURLOPT_POSTFIELDS, null);			curl_setopt($this->ch, CURLOPT_HTTPHEADER, null);		}		public function setPostData($post) {			$this->postdata = $post;			curl_setopt($this->ch, CURLOPT_POST, 1);			curl_setopt($this->ch, CURLOPT_POSTFIELDS, $this->postdata);		}		public function setHeaderData($header) {			$this->header = $header;			curl_setopt($this->ch, CURLOPT_HTTPHEADER, $this->header);			}		public function submit() {			$this->response = curl_exec($this->ch);			if(curl_errno($this->ch) > 0) 				throw new \tsa\HTTPException(curl_error($this->ch));			return $this->response;		}	}?>

    Das wäre ne Library, die ich mir damals geschrieben habe.


    Dann kannst du einfach

    PHP
    $lib = new \tsa\http\HTTPCURLLib();
    $lib->setURL("http://api.sandbox.paypal.com/....");
    $lib->setPostData(array(
     'grant_type' => 'client_...');
    ));
    $lib->setHHeaderData(array(
      'Accept' =>'application/json',
      //...
    ));
    echo $lib->submit();

    Man siehe in diesem <input> wird gesetzt das man maximal 10 Zeichen eintragen darf, aber durch z.B Chrome's "Element untersuchen" ist die Einschränkung doch leicht zu umgehen (Einfach Wert ändern)?!

    Es lässt sich auch ohne Probleme jedes Input-Element durch ein Textarea ersetzen und damit Texte mit Zeilenumbruch angeben. Es geht sogar soweit, dass man mit Tampermonkey komplette Anfragen verfälschen kann, mit anderen Plugins Cookies manipulieren kann und so weiter.


    Wie Klemmlampe: schon sagte, es muss im Prinzip alles serverseitig kontrolliert werden, was in $_POST, $_GET, $_REQUEST und $_COOKIE steht und im eigenem Code benutzt wird.
    Zudem in $_SERVER alles, was mit "HTTP_" anfängt, lässt sich über die HTTP-Header überschreiben, das muss dann auch vertifiziert werden ;)

    Ich schlage vor du lagerst den Code in den Konstruktor aus, splittest dann den Code in weitere Methoden für ne bessere Übersicht, und im Abschluss instanziierst du dann einfach die Klasse an der Aufrufstelle.

    Oder er ändert einfach die Zeile, in der der Fehler ist, zu folgender:

    Code
    (new Login()).main(player, inputtext);

    jedoch musst du bei header eine ganze url angeben

    Nein, solange sie im selben Verzeichnis liegen, nicht :D
    Bei meiner Boardsoftware wird man in der mobilen Version nach dem Erstellen eines Threads weitergeleitet.
    Code dazu lautet in etwa:

    PHP
    header('Location: t/'. $topic->getID());

    Wenn du willst, kannst du sogar testen:
    board[dot]nsnx[dot]org/m/t/f67fe419-55623bd0-4d8b-a094-728686a87ce1
    Tampermonkey drüber und fertig ;)

    PHP
    session_start();
    isset($_SESSION['name']) ? $_SESSION['name'] = $name : $name = $_SESSION['name'];
    isset($_SESSION['email']) ? $_SESSION['email'] = $email : $email = $_SESSION['email'];
    isset($_SESSION['betreff']) ? $_SESSION['betreff'] = $betreff : $betreff = $_SESSION['betreff'];
    isset($_SESSION['telefon']) ? $_SESSION['telefon'] = $telefon : $telefon = $_SESSION['telefon'];
    isset($_SESSION['nachricht']) ? $_SESSION['nachricht'] = $nachricht : $nachricht = $_SESSION['nachricht'];

    Wenn $_SESSION['name']) gesetzt
    - setze $_SESSION['name'] = $name
    else
    - setze $name = $_SESSION['name']


    Der letzte Teil macht kaum Sinn; denn wenn der Teil ausgeführt wird, ist $_SESSION[name] nicht gesetzt ^^

    ich hab mal sowas angefangen auf iOS für einen Server... ist echt viel Arbeit, aber z.B. Push-Benachrichtigungen bein Events, Gangwar, etc sind schon ein nettes Feature. Würde aber nicht sagen, dass sowas ein normales UCP komplett ersetzen würde. Zudem ist die Entwicklun ziemlich aufwendig, da man erst eine API schreiben muss. Es müsste sich also ein Scripter alleine mit der App beschäftigen und dieser bräuchte Einsicht ins Script und in die Datenbank um die API vernünftig schreiben zu können.

    APIs sind schnell geschrieben. Ist ja nicht so, dass selbst ich es schaffe, in etwas mehr als einer Stunde einen groben API-Server bereitzustellen, der sich an RESTful-Standarts hällt.
    Mit GCM sind Clients auch schnell über ein Update informiert. Man müsste sich nur was einfallen lassen, wie man die Device-ID, die GCM braucht, in die Datenbank bekommt; aber auch da fällt mir auf Anhieb was ein :D


    Sowas öffentlich bereit zu stellen ist denke ich nicht unbedingt die beste Idee.

    Kommt drauf an, was man bereitstellt, würde ich sagen. Wenn man nen Handshake ausgeführt hat, kann man ja auch PMs etc verwalten :D

    Ist das Projekt jetzt tot oder wie ist das? Scheint ja nichts mehr großartig hier zu kommen...

    Nein, gab ein paar technische Probleme, die auf mich zurückzuführen sind.


    @RoBoy: ist auf neue Server umgezogen und ich hatte leider noch nicht die Zeit, die Domain umzurouten.
    Wir sind aber gerade am Austauschen der neuen Serverdetails, damit die Standby-Seite wieder online und danach später das Projekt wieder erreichbar sein wird ;)

    Cr1me:
    Und wie wurde das Problem nun gelöst?

    Als Anhang für die, die eventuell durch recherchen auf diesen Thread stoßen ^^


    Das Problem ist, dass der Content-Type-Header "application/php" statt "text/html" enthält. Ergo denkt der Browser des Clients, dass er keine Website vorliegen hat, sondern irgendwas neues, was auf ".php" enden muss -> er bietet die Datei zum Download an.


    Eine Möglichkeit, das zu umgehen, wäre, dass man in der install.php ganz oben folgende Zeile einfügt:

    PHP
    <?php header('Content-Type: text/html;charset=utf-8'); ?>


    Eine andere (und elegantere) wäre, eine Datei, die ".htaccess" heißt, in den Ordner zu packen und da folgendes reinzuschreiben:

    Code
    <Files "*.php">
    	ForceType 'text/html; charset=UTF-8'
    </Files>

    .


    Sorry für die Totengräberei, aber als ich damals das Problem hatte kam ich auf auf unbeantwortete Threads. Und hier ist jetzt mal einer, der eine Antwort enthält :P