summaryrefslogtreecommitdiff
path: root/oracles/encoder.php
blob: 00b5ad0d5450dee6dacc9831409d9c26c7065d6c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
include_once("oracles/base.php");
class encoder extends oracle {
	public $info = [
		"name" => "text encoder/hasher"
	];
	private $special_types = [
		"rot13",
		"base64"
	];
	public function check_query($q) {
		$types = array_merge($this->special_types, hash_algos());
		foreach ($types as $type) {
			$type .= " ";
			if (str_starts_with($q, $type)) {
				return true;
			}
		}
		return false;
	}
	public function generate_response($q)
	{
		$type = explode(" ", $q)[0];
		$victim = substr($q, strlen($type)+1);
		if (in_array($type, hash_algos())) {
			return [$type." hash" => hash($type, $victim)];
		}
		switch ($type) {
			case "rot13":
				return ["rot13 encoded" => str_rot13($victim)];
			case "base64":
				return [
					"base64 encoded" => base64_encode($victim),
					"base64 decoded" => base64_decode($victim)
				];
		}
		return "";
	}
}
?>