Oracle UnWrapping – chuyện một thời mang gươm đi mở cõi

Hi cả nhà, lâu lắm rồi chưa viết gì liên quan đén IT. Hôm nay nhân dịp dọn dẹp máy tính ngày nghỉ lễ, viết một chút để hồi tưởng và kể câu chuyện về một thời đã qua.

Chả là đã cũng có một thời gian tôi được mang danh CIO, mang gươm đi tiếp quản hệ thống từ tay một người khác. Tất nhiên, tôi nói mang gươm là vì cuộc tiếp quản đó không bình thường như cân đường hộp sữa mà là một cuộc chiến đấu nhẹ nhẹ để giành lại quyền kiểm soát (tất nhiên nói vui thế, chứ gươm không dùng, chứ dùng thì lên phường mất rồi).

Trong quá trình chiến đấu, có một món mà tôi khá đau đầu đó là:

  • Hệ thống không có documents cho bất cứ việc gì, cái gì
  • Toàn bộ hệ thống mã nguồn STORED PROCEDURE và PACKAGE đã lâu không cập nhật, mã nguồn trên server thì đã được mã hoá (mà về sau tôi biết là bị WRAPPED), không thể đọc nổi.

Cũng ban căng phết, không thể sửa chữa bất cứ hàm nào, không thể thêm mới bất cứ chức năng nào trừ khi đập đi xây lại ;(.

Thế rồi cái khó ló cái khôn, chả hiểu sao, bâng quơ như nào lại kiếm được cái Tool UNWRAPPING ngon vãi lúa. Và mọi thứ lại đẹp như chưa hề có cuộc chia ly =))

Tranh thủ ngày nhàn rỗi chia sẻ cùng cả nhà cái tool này.

Ví dụ : Đây là một hàm chưa mã hoá:

CREATE OR REPLACE FUNCTION fibonacci (
n PLS_INTEGER
) RETURN PLS_INTEGER
AUTHID DEFINER
IS
fib_1 PLS_INTEGER := 0;
fib_2 PLS_INTEGER := 1;
BEGIN
IF n = 1 THEN — terminating condition
RETURN fib_1;
ELSIF n = 2 THEN
RETURN fib_2; — terminating condition
ELSE
RETURN fibonacci(n-2) + fibonacci(n-1); — recursive invocations
END IF;
END;

Và sau khi mã hoá thì nó như này đây, khóc tiếng mán 😦

1 CREATE OR REPLACE FUNCTION fibonacci wrapped
2 a000000
3 b2
4 abcd
5 abcd
6 abcd
7 abcd
8 abcd
9 abcd
10 abcd
11 abcd
12 abcd
13 abcd
14 abcd
15 abcd
16 abcd
17 abcd
18 abcd
19 8
20 14a fb
21 e1Yq3QQJoEoNKIeJlbgLoLdSgogwgxDcf8vWfHSKbuowFOXFKoj9MqYGqWyRxeeCUVqNVIO1
22 ICqJa3yPr6e7z8GZpMH3J0Cx0uQ0B1JuysymdNDlzfTvb7QWsrLU4jGs3h8Mm49/L9nyO4Xh
23 Ae06nawFpOJIAYpBf9wBVC+ZrjU/nuEtokBqCce6HWIoF6rYgz0V0W/47x5KpOnQ2i7X3kFe
24 FR8K7jT7X58k8xK9uYlZv5LhV71a7A==

Tuy nhiên vỏ quýt dày có móng tay nhọn, dùng thuốc tải tại link này là xong con ong hết:

 

. Connect vào DB (nếu sợ thì backup DB ra một server test cho yên cái bụng) và giải mã thôi. Giờ thì các thánh bất hợp tác với mình cũng phải chào thua 😀

Thôi yên bụng rồi thì chúc cả nhà nghỉ lễ vui vẻ nhé!!!

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s