Trang 2 / 3 FirstFirst 123 LastLast
Hiển thị kết quả từ 11 đến 20 / 21
  1. #11
    Tham gia
    20-02-2009
    Location
    Ninh Bình
    Bài viết
    567
    Like
    0
    Thanked 34 Times in 31 Posts
    Thật là bố láo!

    Cái link mà bạn đưa ra http://www.sqlservercentral.com/Foru...24-1526-1.aspx chỉ là một message thread, mà người đầu tiên khởi động là vanhien62, hỏi một câu về decrypt(). Mà người ta cũng trả lời rằng, trong MS-SQL không có decrypt().

    Đây hoàn toàn không phải là chứng minh của undocument decrypt(). Bạn VH ơi, bạn cần nên học thêm về thuyết chứng minh. Cái link này không có một giá trị cỏn con nào để chứng minh decrypt() là một hàm của Microsoft, undocumented.

    Ngược lại, tôi đã đưa cho bạn một cái link, trong đó có những hàm undocumented của Microsoft, và tuyệt đối không có decrypt().

    Tôi cho bạn một cơ hội thứ hai. Nếu bạn có thể chỉ cho mọi người (mà tôi có thể cam đoan rằng ban không thể, bởi vì không có cái hàm nào gọi là decrypt() được viết bởi MS hết), sau khi đã cài đặt SQL, thì làm cách nào để dùng cái hàm "undocumented" decrypt() đó. Bởi vì nói có sách, mách có chứng. Cha mẹ ông bà đã dạy mình như thế. Bạn đưa lên một doạn code "vô thừa nhận" để "dạy" cho mọi người cách bảo vệ code, mà không thể "dạy" thêm cho chúng tôi biết cách lấy cái hàm decrypt() ở đâu ra, e rằng bạn hơi hấp tấp và thiếu sót rồi.

    Căn cứ vào cái link mà bạn VH đưa ra, trong đó có một người là Jones, là chủ biên (Editor) và cũng là administrator của SQLServerCentrol.com, nói là SQL không có hàm decrypt. Nhưng cũng có một người chạy được decrypt().

    Tôi chạy thử decrypt() trên máy chủ SQL của tôi, và SQL báo lỗi như sau:
    Msg 102, Level 15, State 1, Line 2
    Incorrect syntax near 'decrypt'.
    Msg 103, Level 15, State 4, Line 3
    The identifier that starts with 'B10B0CC46648A5ED011C474BC6C69A498B68F4FB2500D3D12 BE7CB60CC7C20A0B31069EBF931B5B422CBE8D9B961011917C AF9F697503E29FDE8B15004A24CD3' is too long. Maximum length is 128.
    Msg 103, Level 15, State 4, Line 3

    [=========> Bổ sung bài viết <=========]

    Nhưng mà thôi, để kết thúc cuộc tranh luận vô bổ này, tôi xin đưa ra đây "hồ sơ" của decrypt(),

    MICROSOFT SQL SERVER
    Decrypt encrypted stored procedures
    Joseph Gama & ShoeBoy
    07.25.2002
    Rating: -2.75- (out of 5)

    This stored procedure will decrypt stored procedures, views or triggers that were encrypted using "with encryption". It is adapted from a script by Joseph Gama and ShoeBoy. There are two versions: one for SP's only and the other one for SP's, triggers and views. For version 1, the input is object name (stored procedure, view or trigger), and for version 2, the input is object name (stored procedure, view or trigger), object type ('T'-trigger, 'P'-stored procedure or 'V'-view).

    From PlanetSourceCode.com
    Tưởng cũng nên cho bạn VH biết rõ hơn, SQLPIE không phải là một phần mềm dùng để decrypt những stored procedures mà người ta đã encrypted, vì đây không phải là mục đích của tác giả. Nó chỉ có thể dùng để scripting out những function/stored proc không có encrypted. Còn khi gặp những hàm được encrypted, thì SMO sẽ báo lỗi, và SQL sẽ báo lỗi là không thể scripting một hàm đã được encrypted. 3 năm trước đây, cái phần scripting chạy ok: SQLPIE có thể scripting tất cả những store proc mà người ta không có mã hoá. Sau này, sau khi tôi cài đặt SQL-2008 và update SMO library, thì cái hàm script() không còn xử lý được nữa, nó luôn luôn báo lỗi khi lấy ra cái phần chính của một stored procedure hay của một function.

    và dưới đây là hàm dùng để scripting out SQL proc. hay function, dùng SMO.script(). Lỗi nằm trên hàng đã được highlight.
    Code:
    public int GenerateSQLProcedureScript(string szDatabase,string szFolder)
    		{
                int RetVal = 0;
    			ScriptingOptions ProcDropOption = new ScriptingOptions();
    			ScriptingOptions ProcCreateOption = new ScriptingOptions();
    
    
                // Create a folder to store all table script files
                if(!Directory.Exists(string.Format("{0}\\Procedures",szFolder)))
                {
                    this.UpdateProcess("Creating procedures folder", true);
                    Directory.CreateDirectory(string.Format("{0}\\Procedures",szFolder));
                }
    
                // Create the table manifest file
                this.UpdateProcess("Creating manifest file for procedures", true);
                string ManifestFile = string.Format("{0}\\{1}.Procedures.mnf",szFolder,szDatabase);
                StreamWriter swManifest = new StreamWriter(ManifestFile); 
    
                
                ProcCreateOption.IncludeIfNotExists = true;
                //ProcCreateOption.ContinueScriptingOnError = true;
    			ProcDropOption.IncludeIfNotExists = true;
    			ProcDropOption.ScriptDrops = true;
                //ProcDropOption.ContinueScriptingOnError = true;
    			foreach (StoredProcedure Proc in this.smoServer.Databases[szDatabase].StoredProcedures)
    			{
    				if (!Proc.IsSystemObject)
    				{
                        string ProcFile = string.Format("{0}\\Procedures\\{1}.sql",szFolder,Proc.Name);
                        StreamWriter swSQLWriter = new StreamWriter(ProcFile);
                        swManifest.WriteLine(ProcFile);
    
                        this.UpdateProcess(string.Format("Generating {0} source file", ProcFile), true);
                        try
                        {
                            foreach (string procscript in Proc.Script(ProcDropOption))
                            {
                                swSQLWriter.WriteLine(procscript);
                            }
                            swSQLWriter.WriteLine("GO");
                            swSQLWriter.WriteLine();
    
    
                            // Trick: Have to call twice, one for generate the header, one for generate
                            //		the body so that it won't wrap the body between single quotes and 
                            //		call sp_executeSQL.
                            // First write header
                            ProcCreateOption.DdlHeaderOnly = true;
                            ProcCreateOption.DdlBodyOnly = false;
                            foreach (string procscript in Proc.Script(ProcCreateOption))
                            {
                                swSQLWriter.WriteLine(procscript);
                            }
    
                            //Second write body
                            ProcCreateOption.DdlHeaderOnly = false;
                            ProcCreateOption.DdlBodyOnly = true;
                            foreach (string procscript in Proc.Script(ProcCreateOption))
                            {
                                swSQLWriter.WriteLine(procscript);
                            }
    
                            this.LogProcess(Proc.Name, "Script", true, "Success");
                        }
                        catch (SmoException smoError)
                        {
                            swSQLWriter.WriteLine(string.Format("--Error : {0}", smoError.Message));
                            UpdateProcess(string.Format("Error : {0}", smoError.Message), true);
                            this.LogProcess(Proc.Name, "Script", false, string.Format("{0} - The SQL code may be encrypted", smoError.Message));
                        }
    
    					swSQLWriter.WriteLine("GO");
    					swSQLWriter.WriteLine();
    
                        swSQLWriter.Flush();
                        swSQLWriter.Close();
    				}
                    else
                    {
                        this.UpdateProcess(string.Format("Skipping system procedure {0}", Proc.Name), true);
                    }
    			}
    
                swManifest.Flush();
                swManifest.Close();
    
    			return RetVal;
    		}


    Và đây là cái link qua một trang của microsoft. Tại trang này, Microsoft đã công nhận đây là một cái bug của họ. Tưởng cũng nên nói rõ, bạn phải là một "thân chủ" của Microsoft, có mật mã mới vào dược trang này.

    https://connect.microsoft.com/SQLSer...&wa=wsignin1.0
    Được sửa bởi dq_ninh lúc 23:05 ngày 26-06-2009 Reason: Bổ sung bài viết

  2. #12
    Tham gia
    01-04-2009
    Location
    Việt Nam
    Bài viết
    251
    Like
    0
    Thanked 10 Times in 10 Posts
    Bạn cố "chứng minh cho bằng được" việc đã hết sức rõ ràng. Với kiểu đọc "phúc thống phục nhân sâm" mà bỏ trang sau "tắc tử" thì đọc làm chi.

    1/ Ở sqlservercentral.com, tôi đã hỏi decrypt() ở trong file DLL nào. Jones lần đầu nói là không có nhưng sau đó trả lời rằng "It's possible that it's undocumented, in which case, I can't point you to a reference. I would not recommend you use this. "

    2/ Bạn hiểu thế nào là undocument functions ? unDocunent thì làm gì có tài liệu về cách dùng ! 'làm cách nào để dùng cái hàm "undocumented" decrypt() đó', tôi không hẹp hòi gì vấn đề này. Ngay cả khi tranh luận gay gắt hơn thế này, tôi sẽ cung cấp tài liệu, kể cả cho đối phương dùng để chống lại tôi.
    - Tôi không hề biết đoạn nào có subString "B10B0CC46648.." nó báo :
    The identifier that starts with 'B10B0CC46648.." là tôi không có trách nhiệm.
    - Tôi đã nói script trên bị biến dạng, nó là chuỗi varBinary thì làm gì có Line 2, Line 3 nào ở đây ?! Bạn không biết varBinary là thế nào sao mà lắm dòng thế?

  3. #13
    Tham gia
    20-02-2009
    Location
    Ninh Bình
    Bài viết
    567
    Like
    0
    Thanked 34 Times in 31 Posts
    hhaha. Nếu mà undocumented khong có document, thì nó là tối mật, chóp bu còn không biết được, huống chi là VH62. Mà nếu VH62 biết được, nó phải có document ở đâu đó.

    Cái document mà tôi muốn có ở đây là decrypt() của Microsoft. Nếu không có document, thì căn cứ vào đâu mà bạn VH của tôi lại có thể khẳng định rất hùng hồn rằng decrypt() đó là của Microsoft, và tất cả máy nào có cài SQL server đều có nó?

    Điều thứ hai là tôi muốn biết, tại sao khi tôi chạy cái hàm đó trên những máy của tôi (tôi có tất cả là 7 máy, tátcả đều có SQL Server), tất cả đều báo lỗi decrypt() là một hàm unknown.

    Sau cùng, cho phép tôi nói thật lòng, cái "kỹ thuật bảo vệ code" dùng encrypt/decrypt này là một kỹ thuật... vất đi. Chúng ta có cần phải tranh luận thêm nhiều hơn cho cái kỹ thuật vất đi này không nhỉ?

  4. #14
    Tham gia
    20-12-2004
    Bài viết
    324
    Like
    56
    Thanked 44 Times in 27 Posts
    "It's possible that it's undocumented, in which case, I can't point you to a reference. I would not recommend you use this. "
    Người ta không hề biết chắc rằng đó có phải là một undocumented SP hay function không. Nếu đó là undocumented thì người ta biết phải chỉ bạn reference ở đâu.

    Nói thêm với bạn rằng cái gọi là kỹ thuật bảo vệ của bạn chỉ là một trò hài không hơn không kém chỉ có những người mới học mới dùng mà thôi. Nó là ổ khóa mà người ta biết ra hình dạng chìa khóa ra sao. Chỉ có thể gọi là bảo vệ nếu bạn tạo ra một khóa riêng và khóa đó chỉ mình bạn biết.

  5. #15
    Tham gia
    08-09-2008
    Location
    HN-SG
    Bài viết
    135
    Like
    0
    Thanked 0 Times in 0 Posts
    lắm thầy thì nhiều ...ma

  6. #16
    Tham gia
    16-06-2008
    Bài viết
    310
    Like
    0
    Thanked 2 Times in 1 Post
    hay quá, 1 cuộc tranh luận soi nổi. Nhưng sẽ hay hơn nếu 2 bạn không công kích nhau bằng những từ đệm khó nghe

  7. #17
    Tham gia
    01-04-2009
    Location
    Việt Nam
    Bài viết
    251
    Like
    0
    Thanked 10 Times in 10 Posts
    Tôi thấy " cái kỹ thuật vất đi này " có giá trị cao. Bạn dq_ninh chưa nói chạy trên phiên bản nào của sql serv, còn 7 hay 70 nhân bản vô tính thì chẳng có giá trị khác 1 máy. Xem lại này :


    3 năm trước đây, cái phần scripting chạy ok, .. Sau này, sau khi tôi cài đặt SQL-2008 và update SMO library, thì cái hàm script() không còn xử lý được nữa, nó luôn luôn báo lỗi khi lấy ra cái phần chính của một stored procedure hay của một function.

    Có lẽ vì thế nên "người Việt Nam không phải trả tiền" cho SP bị lỗi này ....(thôi, hhehehe, không nói đâu).

  8. #18
    Tham gia
    20-02-2009
    Location
    Ninh Bình
    Bài viết
    567
    Like
    0
    Thanked 34 Times in 31 Posts
    Quote Được gửi bởi Van8Hien62 View Post
    Tôi thấy " cái kỹ thuật vất đi này " có giá trị cao. Bạn dq_ninh chưa nói chạy trên phiên bản nào của sql serv, còn 7 hay 70 nhân bản vô tính thì chẳng có giá trị khác 1 máy. Xem lại này :


    3 năm trước đây, cái phần scripting chạy ok, .. Sau này, sau khi tôi cài đặt SQL-2008 và update SMO library, thì cái hàm script() không còn xử lý được nữa, nó luôn luôn báo lỗi khi lấy ra cái phần chính của một stored procedure hay của một function.

    Có lẽ vì thế nên "người Việt Nam không phải trả tiền" cho SP bị lỗi này ....(thôi, hhehehe, không nói đâu).
    hahaha...
    Dĩ nhiên là 7 máy phải có những phiên bản khác nhau của SQL chứ. Chứ nếu không, 7 máy để làm gì? Nhưng mà phải nói rõ hơn, tôi chỉ chạy decrypt() trên SQL-2008 là biết nó đáng vất đi rồi.

    Còn cái hàm script() đó, thú thật là không có thời gian để sửa nó thôi, cho nên ngồi chờ MS nó sửa lỗi của nó. Hơn nữa, nếu bạn có đọc được manual, thì bạn cũng nên biết là người xử dụng bỏ 99% vào việc dùng SQL cho packaging và installing. Cái phần scripting đó, thật ra không quan trọng.

    Dĩ nhiên là người VN không phải trả tiền. Còn người Mỹ muốn lấy license key phải trả khoảng 1000 đô thôi.

    Nhưng mà cái SQLPIE của tôi đâu có liên quan gì đến cái chủ để "kỹ thuật bảo vệ code" của bạn đâu, sao lại cứ bươi móc ra (để đánh lạc hướng chăng?) Hơn thế nữa, bạn không cần phải dùng SQLOIE. Và hơn thế nữa, bạn có thể viết được một cái gì đó cống hiến cho anh em không?
    Được sửa bởi dq_ninh lúc 23:08 ngày 26-06-2009

  9. #19
    Tham gia
    01-04-2009
    Location
    Việt Nam
    Bài viết
    251
    Like
    0
    Thanked 10 Times in 10 Posts
    Cám ơn các bạn đã bổ xung những thiếu sót của bài viết này, đặc biệt là anh dq_ninh, a very IP.
    Xin lỗi vì vấn đề chỉ mới nói được một chi tiết nhỏ nhoi là hàm decript(), có trong 2000 / 2005, không còn hỗ trợ trong Ms Sql Srv 2008 ( cụ thể là version 10.0.1600.22 ). Phiên bản này vẫn support kỹ thuật từ thời Vc9x, của thế kỷ trước:
    - With Encryption
    - Extended Stored Procedure DLL
    , cho chúng ta phát triển kỹ thuật tốt hơn trong việc bảo vệ code, tránh bị thay đổi ngoài ý muốn.
    Chỉ bằng with encryption của Sql, các ver 8.x, 9.y, 10.z độ khó cũng tăng dần, nhất là với DAC- dedicated admin connection. Dù không phải là nhân viên của Activecrypt Software nhưng tôi thấy rằng sqlshield, xp_crypt với một kỹ thuật mã hóa khác, gồm cả code và data, không dễ gì bẻ gãy.

  10. #20
    Tham gia
    29-11-2004
    Location
    Vung tau
    Bài viết
    128
    Like
    0
    Thanked 1 Time in 1 Post

    Buồn quá đi ! Các anh cho em xin cách để bẻ khoá xem các stored procedure

    Các anh cho em xin cách để bẻ khoá xem các stored procedure
    Em đang xì SQL 2008

Trang 2 / 3 FirstFirst 123 LastLast

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •