Register for your free account! | Forgot your password?

You last visited: Today at 21:09

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[HOW-TO] MYSQL in Python

Discussion on [HOW-TO] MYSQL in Python within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.

Reply
 
Old   #1
 
Weedend's Avatar
 
elite*gold: 10
Join Date: Feb 2013
Posts: 40
Received Thanks: 47
[HOW-TO] MYSQL in Python

Hallo Elitepvpers,

Ich möchte euch heute zeigen wie ihr MySQL direkt in Python einbindet und euch somit den Weg über Quests spart.
Dies ist zum einen wesentlich sauberer als über eine zweite Programmiersprache zu gehen und zum anderen wesentlich einfacher.

ladet euch das Archiv aus dem Anhang herunter und packt es bei eurem Client in den "lib"-Ordner. Das MySQLdb-Modul wurde nicht von mir erstellt, jedoch vorkompiliert und leicht abgeändert.

In euren Python-Files könnt ihr nun mit
PHP Code:
import MySQLdb 
das Modul einbinden.

Achtung: Solltet Ihr eine MySQL-Datenbank mit einer Version höher als 4.1 besitzen muss ein User auf die OLD_PASSWORD_ENCRYPTION gesetzt werden, da in Python 2.0 - Python 2.2 nur MySQL 4.1 verwaltet werden kann und die neueren Versionen eine andere Passwort-Verschlüsselung verwenden.

Das ganze geht so:
PHP Code:
CREATE USER 'test'@'host';

SET PASSWORD FOR 'test'@'host' OLD_PASSWORD('password'); 



ACHTUNG: Die folgenden Befehle findet ihr alle im Internet !!!


Die Datenbankverbindung stellt ihr wie folgt her:
PHP Code:
    self.mysql MySQLdb.connect("host""username""passwort""datenbank"
Anschließend noch einen Cursor erstellen auf dem SQL-Statements ausgeführt werden:
PHP Code:
self.cursor self.mysql.cursor() 
Das Statement wird dann wie folgt abgesetzt:
PHP Code:
self.cursor.execute("SELECT * FROM tabelle WHERE something = 'irgendwas'"
Die Daten daraus erhalten wir so:
PHP Code:
self.daten self.cursor.fetchall() 
oder:
PHP Code:
self.daten self.cursor.fetchone() 
die Auswertung der Daten erfolgt so:
PHP Code:
        for row in self.daten:
             
row0 row[0]    
             
row1 row[1
mfG
Weedend
Attached Files
File Type: zip lib.zip (233.6 KB, 34 views)
Weedend is offline  
Thanks
6 Users
Old 06/15/2014, 13:15   #2

 
elite*gold: 0
Join Date: Mar 2013
Posts: 2,449
Received Thanks: 6,446
Quote:
Originally Posted by Weedend View Post
Ich möchte euch heute zeigen wie ihr MySQL direkt in Python einbindet und euch somit den Weg über Quests spart.
Dies ist zum einen wesentlich sauberer als über eine zweite Programmiersprache zu gehen und zum anderen wesentlich einfacher.
Über Quests ist es um ein vielfaches sicherer.
Einmal den Client entpackt kann man mit deiner Methode alles mögliche anstellen.
Nett gemeint, aber es ist viel zu unsicher.
Lord iRemix is offline  
Thanks
10 Users
Old 06/15/2014, 13:19   #3
 
Weedend's Avatar
 
elite*gold: 10
Join Date: Feb 2013
Posts: 40
Received Thanks: 47
Naja du kannst die Connection ja compilen. Die pyc sind ja kein plaintext. Zudem sind die Clients mittlerweile doch eh alle verschlüsselt.

Wie sieht es bei Quests aus mit nem return?
wenn ich die zurückgelieferten Daten vom Server wieder in python verarbeiten möchte. Gibt es da eine Möglichkeit?
Weedend is offline  
Old 06/15/2014, 13:23   #4
 
.CHHorny's Avatar
 
elite*gold: 168
The Black Market: 146/0/0
Join Date: Feb 2010
Posts: 4,333
Received Thanks: 2,640
Quote:
Originally Posted by Weedend View Post
Naja du kannst die Connection ja compilen. Die pyc sind ja kein plaintext. Zudem sind die Clients mittlerweile doch eh alle verschlüsselt.

Wie sieht es bei Quests aus mit nem return?
wenn ich die zurückgelieferten Daten vom Server wieder in python verarbeiten möchte. Gibt es da eine Möglichkeit?
Du glaubst doch nicht wirklich das du es soweit verschlüsselst bekommst das es sicher ist? Zudem eine pyc ist nicht die Lösung dann.
.CHHorny is offline  
Thanks
3 Users
Old 06/15/2014, 13:24   #5

 
IgorGlock's Avatar
 
elite*gold: 1862
Join Date: Jan 2009
Posts: 3,725
Received Thanks: 7,671
Finger davon lassen!
Außerdem hat's sehr wenig mit M2 zutun...
IgorGlock is offline  
Old 06/15/2014, 13:27   #6
 
Mr.Xhater's Avatar
 
elite*gold: 0
Join Date: Nov 2013
Posts: 401
Received Thanks: 132
wenn mann denn clienten auf bekommt würde ich sagen server in die tonne schmeißen
Mr.Xhater is offline  
Old 06/15/2014, 13:53   #7
 
.Inya's Avatar
 
elite*gold: 50
Join Date: Mar 2013
Posts: 2,401
Received Thanks: 1,613
Naja solange man Cython verwendet sollte das klappen. Aber jmd der weis wie man Cython anwendet baut sich stumpf ein neues Packet dafür ein und machts über die game
.Inya is offline  
Thanks
1 User
Old 06/15/2014, 13:58   #8

 
elite*gold: 0
Join Date: Mar 2013
Posts: 2,449
Received Thanks: 6,446
Quote:
Originally Posted by Weedend View Post
Naja du kannst die Connection ja compilen. Die pyc sind ja kein plaintext. Zudem sind die Clients mittlerweile doch eh alle verschlüsselt.

Wie sieht es bei Quests aus mit nem return?
wenn ich die zurückgelieferten Daten vom Server wieder in python verarbeiten möchte. Gibt es da eine Möglichkeit?
cmdchat
Lord iRemix is offline  
Thanks
1 User
Old 06/15/2014, 14:25   #9
 
elite*gold: 139
Join Date: Sep 2010
Posts: 583
Received Thanks: 546
Schau dir lieber nochmal an was überhaupt mit Strings in .pyc datein passiert^^.

Screen:
.XXShuzZzle is offline  
Thanks
3 Users
Old 06/15/2014, 14:49   #10
 
DasSchwarzeT's Avatar
 
elite*gold: 399
Join Date: Sep 2011
Posts: 5,323
Received Thanks: 3,937
Vor ca. 1,5 Jahren habe ich auch in Python mit MySql gearbeitet.. Aber bei den unsicheren Metin2 Clienten ist es viel zu gefährlich und über LUA funktioniert es ebenso gut.
DasSchwarzeT is offline  
Thanks
1 User
Old 06/15/2014, 16:42   #11
 
αddι's Avatar
 
elite*gold: 21
Join Date: Jan 2010
Posts: 640
Received Thanks: 532
Man könnte einen neuen MySQL-Benutzer erstellen, dessen Rechte so weit eingeschränkt sind (GRANT / REVOKE), dass er eh nicht mehr machen kann, als die gewissen Daten zu verarbeiten, die er über Python verarbeitet.

Allerdings braucht dann jede Schnittstelle einen Nutzer und es wird extrem schnell sehr unübersichtlich und schon kleine Änderungen sind umständlich umzusetzen.

Ich persönlich würde mich für diese Methode auch niemals entscheiden, alleine aus Prinzip irgendwo irgendwelche heikle Daten zu hinterlegen, aber für jemanden der als Lösung nur diese Option sieht, wäre es eine Möglichkeit die Libary halbwegs sicher zu verwenden.
αddι is offline  
Old 06/15/2014, 17:18   #12
 
elite*gold: 1435
Join Date: Apr 2014
Posts: 362
Received Thanks: 786
useless

Sehr unsicher und braucht man auch nicht
.Kori is offline  
Thanks
1 User
Old 06/15/2014, 17:26   #13
 
[uLow]Beni's Avatar
 
elite*gold: 0
Join Date: May 2011
Posts: 1,781
Received Thanks: 618
In einem Game Client darf man niemals Username oder Passwort einer DB speichern.

Da man auf jeden System die Send Funktion hooken kann und schon kann man mithilfe des Source Codes von MySQL den Usernamen und das Pwd auslesen.
[uLow]Beni is offline  
Old 06/15/2014, 17:33   #14
 
Antigene's Avatar
 
elite*gold: 25
Join Date: Jun 2011
Posts: 1,637
Received Thanks: 353
Naja ich danke dir trotzdem wenn man ein bissn Brain.exe anwendet kann man damit viel anstellen und wenn dein Client verschlüsselt ist brauchste dir keine Sorgen machen

Allerdings sollte man RSA verschlüsselt die Daten speichern
Antigene is offline  
Old 06/15/2014, 17:48   #15
 
elite*gold: 39
Join Date: Jun 2009
Posts: 500
Received Thanks: 212
Quote:
Originally Posted by Antigene View Post
Naja ich danke dir trotzdem wenn man ein bissn Brain.exe anwendet kann man damit viel anstellen und wenn dein Client verschlüsselt ist brauchste dir keine Sorgen machen

Allerdings sollte man RSA verschlüsselt die Daten speichern
Falsch.... Nur weil der Client verschlüsselt ist, kommt keiner an die Daten? Ich sag dir: wenn du die Methode verwendest, wirst du - falls du etwas höher kommst mit deinem Server, riesige Sicherheitsprobleme kriegen. Glaub mir oder glaub mir nicht - deine Entscheidung.

Kind Regards
.HC'Destrox is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
[Python] Fake-MySQL-Server snippet
04/14/2014 - Coding Snippets - 0 Replies
Weils mir vor einiger etwas Langweilig war und ich gerne mal das MySQL-Protokoll untersuchen wollte, hatte ich mir für diese Zwecke einen kleinen Spielserver geschrieben. Den Snippet dafür kann man hier finden: https://github.com/GiR-Zippo/PyMySQL Prinzipiell kann das Snippet nicht wirklich viel, man kann sich jedoch mit dem normalen mysql-Client ohne PAM einloggen. Navicat, Heidi und co gehen nicht, die verwenden keine textbasierten Querries, sondern gehen direkt über Opcodes und...
Help to make a python file works with python loader
03/03/2013 - Metin2 - 2 Replies
Hey epvp! I want make a very. Little hack works on pythonn loader can anybody help me please?
Metin2 - Python - Wie Python Hacks verschlüsseln und Server überprüfen (GF/PServe)
09/23/2012 - Metin2 - 2 Replies
Ich wollte fragen, wie man Python Hacks am besten Verschlüsselt ? und wie man feststellen kann ob man auf einem GF / Pserver spielt. ?
Freebsd+Mysql+Python
06/20/2011 - Metin2 Private Server - 1 Replies
hey kann mir iner mal nen link zu FreeBSD mit paython und Mysql geben ohne SF's weil das ja ne anfrage ist ich amche die sowieso seolber drauf aber ich brauch ne basis für daroo's 1677 Files



All times are GMT +1. The time now is 21:11.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.