40 lines
954 B
Plaintext
40 lines
954 B
Plaintext
FUNCTION checkHV18teaser(FLAG VARCHAR2) RETURN NUMBER IS
|
|
A VARCHAR2(4);
|
|
B NUMBER(10);
|
|
C NUMBER(10);
|
|
H VARCHAR(40);
|
|
BEGIN
|
|
A := SUBSTR(FLAG,1,4);
|
|
IF NOT (A = 'HV18') THEN
|
|
RETURN 0;
|
|
END IF;
|
|
|
|
B := TO_NUMBER(SUBSTR(FLAG,6,2));
|
|
C := TO_NUMBER(SUBSTR(FLAG,8,2));
|
|
IF NOT (((B * C) = 6497) AND (B < C)) THEN
|
|
RETURN 0;
|
|
END IF;
|
|
|
|
A := SUBSTR(FLAG,11,4);
|
|
SELECT STANDARD_HASH(A, 'MD5') INTO H FROM DUAL;
|
|
IF NOT (H = 'CF945B5A36D1D3E68FFF78829CC8DBF6') THEN
|
|
RETURN 0;
|
|
END IF;
|
|
|
|
IF NOT ((UTL_RAW.CAST_TO_VARCHAR2(
|
|
UTL_RAW.BIT_XOR (
|
|
UTL_RAW.CAST_TO_RAW(SUBSTR(FLAG,16,4)),
|
|
UTL_RAW.CAST_TO_RAW(SUBSTR(FLAG,21,4)))
|
|
) = 'zvru') AND
|
|
(TO_NUMBER(SUBSTR(FLAG,21,4)) = SQRT(8814961))) THEN
|
|
RETURN 0;
|
|
END IF;
|
|
|
|
IF NOT ( UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_ENCODE(UTL_RAW.CAST_TO_RAW(SUBSTR(FLAG,26,4)))) = 'RjBtMA==') THEN
|
|
RETURN 0;
|
|
END IF;
|
|
|
|
DBMS_OUTPUT.PUT_LINE(A);
|
|
RETURN 1;
|
|
END;
|