# 楓之谷私服筆記 感謝各位研究私服的前輩 ## 楓之谷私服 新增帳號 請於sql->account 中新增 id:(勿填) name:(待創建之帳號) password:(待創建之帳號之sha加密,稍後會解釋) salt:設定為null 2ndpassword:(還沒研究,不影響登入) salt2:設定為null loggedin:0 banned:0 gm:(0,若有其他GM權限需求請更改此欄) 上述未提到的請參考資料庫欄位名稱 ### password 其中有可能會有問題的為password欄 參考原始碼MapleClient.java:(節錄) ```java= public int login(String login, String pwd, boolean ipMacBanned) { int loginok = 5; /* * 中略 * * else */if (salt == null && LoginCrypto.checkSha1Hash(passhash, pwd)) { loginok = 0; } } ``` LoginCrypto.java (節錄) ```java= public class LoginCrypto { //按照呼叫順序 //1 public static boolean checkSha1Hash(final String hash, final String password) { return hash.equals(makeSaltedSha1Hash(password)); } //2 public static String makeSaltedSha1Hash(final String password) { return hexSha1(password); } //3 public static String hexSha1(final String in) { return hashWithDigest(in, "SHA-1"); } //4 private static String hashWithDigest(final String in, final String digest) { try { MessageDigest Digester = MessageDigest.getInstance(digest); Digester.update(in.getBytes("UTF-8"), 0, in.length()); byte[] sha1Hash = Digester.digest(); return toSimpleHexString(sha1Hash); } catch (NoSuchAlgorithmException ex) { throw new RuntimeException("Hashing the password failed", ex); } catch (UnsupportedEncodingException e) { throw new RuntimeException("Encoding the string failed", e); } } } ``` 可得知 1.salt為原始密碼長度不足時補上的 2.資料庫儲存的密碼為加密過之密碼且其中一項加密方法為SHA-1 >其實還有支援蠻多其他方法,就不一一列舉了 ### SHA-1產生器 [網址](https://www.ez2o.com/App/Coder/SHA) 記得選小寫 ex: >fuckgama to >46977f2e560d29d336a47035103af0a2e223e4d3