SYMBOL INDEX (379 symbols across 48 files) FILE: dlr/main.c type sockaddr_in (line 47) | struct sockaddr_in function __start (line 70) | void __start(void) function run (line 86) | inline void run(void) function sstrlen (line 173) | int sstrlen(char *str) function utils_inet_addr (line 182) | unsigned int utils_inet_addr(unsigned char one, unsigned char two, unsig... function xsocket (line 193) | int xsocket(int domain, int type, int protocol) function xread (line 221) | int xread(int fd, void *buf, int len) function xwrite (line 226) | int xwrite(int fd, void *buf, int len) function xconnect (line 231) | int xconnect(int fd, struct sockaddr_in *addr, int len) function xopen (line 261) | int xopen(char *path, int flags, int other) function xclose (line 266) | int xclose(int fd) function x__exit (line 271) | void x__exit(int code) FILE: loader/src/binary.c type binary (line 9) | struct binary function BOOL (line 11) | BOOL binary_init(void) type binary (line 44) | struct binary function BOOL (line 57) | static BOOL load(struct binary *bin, char *fname) FILE: loader/src/connection.c function connection_open (line 13) | void connection_open(struct connection *conn) function connection_close (line 33) | void connection_close(struct connection *conn) function connection_consume_iacs (line 87) | int connection_consume_iacs(struct connection *conn) function connection_consume_login_prompt (line 149) | int connection_consume_login_prompt(struct connection *conn) function connection_consume_password_prompt (line 182) | int connection_consume_password_prompt(struct connection *conn) function connection_consume_prompt (line 213) | int connection_consume_prompt(struct connection *conn) function connection_consume_verify_login (line 236) | int connection_consume_verify_login(struct connection *conn) function connection_consume_psoutput (line 246) | int connection_consume_psoutput(struct connection *conn) function connection_consume_mounts (line 351) | int connection_consume_mounts(struct connection *conn) function connection_consume_written_dirs (line 414) | int connection_consume_written_dirs(struct connection *conn) function connection_consume_copy_op (line 456) | int connection_consume_copy_op(struct connection *conn) function connection_consume_arch (line 465) | int connection_consume_arch(struct connection *conn) function connection_consume_arm_subtype (line 538) | int connection_consume_arm_subtype(struct connection *conn) function connection_consume_upload_methods (line 556) | int connection_consume_upload_methods(struct connection *conn) function connection_upload_echo (line 573) | int connection_upload_echo(struct connection *conn) function connection_upload_wget (line 601) | int connection_upload_wget(struct connection *conn) function connection_upload_tftp (line 611) | int connection_upload_tftp(struct connection *conn) function connection_verify_payload (line 630) | int connection_verify_payload(struct connection *conn) function connection_consume_cleanup (line 643) | int connection_consume_cleanup(struct connection *conn) function BOOL (line 652) | static BOOL can_consume(struct connection *conn, uint8_t *ptr, int amount) FILE: loader/src/headers/binary.h type binary (line 7) | struct binary { type binary (line 14) | struct binary type binary (line 16) | struct binary FILE: loader/src/headers/connection.h type connection (line 8) | struct connection { type connection (line 46) | struct connection type connection (line 47) | struct connection type connection (line 49) | struct connection type connection (line 50) | struct connection type connection (line 51) | struct connection type connection (line 52) | struct connection type connection (line 53) | struct connection type connection (line 54) | struct connection type connection (line 55) | struct connection type connection (line 56) | struct connection type connection (line 57) | struct connection type connection (line 58) | struct connection type connection (line 59) | struct connection type connection (line 60) | struct connection type connection (line 61) | struct connection type connection (line 62) | struct connection type connection (line 63) | struct connection type connection (line 64) | struct connection type connection (line 65) | struct connection type connection (line 67) | struct connection FILE: loader/src/headers/includes.h type BOOL (line 11) | typedef char BOOL; type ipv4_t (line 13) | typedef uint32_t ipv4_t; type port_t (line 14) | typedef uint16_t port_t; FILE: loader/src/headers/server.h type server (line 8) | struct server { type server_worker (line 22) | struct server_worker { type server (line 29) | struct server type server (line 30) | struct server type server (line 31) | struct server type telnet_info (line 31) | struct telnet_info type server (line 32) | struct server type telnet_info (line 32) | struct telnet_info type server_worker (line 36) | struct server_worker type server_worker (line 37) | struct server_worker type epoll_event (line 37) | struct epoll_event FILE: loader/src/headers/telnet_info.h type telnet_info (line 5) | struct telnet_info { type telnet_info (line 17) | struct telnet_info type telnet_info (line 17) | struct telnet_info type telnet_info (line 18) | struct telnet_info type telnet_info (line 18) | struct telnet_info FILE: loader/src/headers/util.h type elf_hdr (line 63) | struct elf_hdr { type server (line 69) | struct server FILE: loader/src/main.c type server (line 17) | struct server function main (line 21) | int main(int argc, char **args) FILE: loader/src/server.c type server (line 19) | struct server type server (line 21) | struct server type server (line 21) | struct server type server_worker (line 22) | struct server_worker type server_worker (line 22) | struct server_worker type connection (line 32) | struct connection type server_worker (line 33) | struct server_worker type connection (line 45) | struct connection type server_worker (line 57) | struct server_worker function server_destroy (line 78) | void server_destroy(struct server *srv) function server_queue_telnet (line 89) | void server_queue_telnet(struct server *srv, struct telnet_info *info) function server_telnet_probe (line 103) | void server_telnet_probe(struct server *srv, struct telnet_info *info) function bind_core (line 155) | static void bind_core(int core) type server_worker (line 167) | struct server_worker type server_worker (line 167) | struct server_worker type epoll_event (line 168) | struct epoll_event function handle_event (line 184) | static void handle_event(struct server_worker *wrker, struct epoll_event... type server (line 599) | struct server type server (line 599) | struct server type connection (line 608) | struct connection FILE: loader/src/telnet_info.c type telnet_info (line 8) | struct telnet_info type telnet_info (line 8) | struct telnet_info type telnet_info (line 25) | struct telnet_info type telnet_info (line 25) | struct telnet_info FILE: loader/src/util.c function hexDump (line 12) | void hexDump (char *desc, void *addr, int len) { function util_socket_and_bind (line 64) | int util_socket_and_bind(struct server *srv) function util_memsearch (line 111) | int util_memsearch(char *buf, int buf_len, char *mem, int mem_len) function BOOL (line 132) | BOOL util_sockprintf(int fd, const char *fmt, ...) FILE: mirai/bot/attack.c type attack_method (line 19) | struct attack_method function BOOL (line 22) | BOOL attack_init(void) function attack_kill_all (line 44) | void attack_kill_all(void) function attack_parse (line 64) | void attack_parse(char *buf, int len) function attack_start (line 155) | void attack_start(int duration, ATTACK_VECTOR vector, uint8_t targs_len,... type attack_option (line 193) | struct attack_option function attack_get_opt_int (line 206) | int attack_get_opt_int(uint8_t opts_len, struct attack_option *opts, uin... function attack_get_opt_ip (line 216) | uint32_t attack_get_opt_ip(uint8_t opts_len, struct attack_option *opts,... function add_attack (line 226) | static void add_attack(ATTACK_VECTOR vector, ATTACK_FUNC func) function free_opts (line 237) | static void free_opts(struct attack_option *opts, int len) FILE: mirai/bot/attack.h type attack_target (line 20) | struct attack_target { type attack_option (line 26) | struct attack_option { type attack_target (line 31) | struct attack_target type attack_option (line 31) | struct attack_option type ATTACK_VECTOR (line 32) | typedef uint8_t ATTACK_VECTOR; type attack_method (line 73) | struct attack_method { type attack_stomp_data (line 78) | struct attack_stomp_data { type attack_http_state (line 108) | struct attack_http_state { type attack_cfnull_state (line 134) | struct attack_cfnull_state { type attack_target (line 148) | struct attack_target type attack_option (line 148) | struct attack_option type attack_option (line 149) | struct attack_option type attack_option (line 150) | struct attack_option type attack_option (line 151) | struct attack_option type attack_target (line 154) | struct attack_target type attack_option (line 154) | struct attack_option type attack_target (line 155) | struct attack_target type attack_option (line 155) | struct attack_option type attack_target (line 156) | struct attack_target type attack_option (line 156) | struct attack_option type attack_target (line 157) | struct attack_target type attack_option (line 157) | struct attack_option type attack_target (line 159) | struct attack_target type attack_option (line 159) | struct attack_option type attack_target (line 160) | struct attack_target type attack_option (line 160) | struct attack_option type attack_target (line 161) | struct attack_target type attack_option (line 161) | struct attack_option type attack_target (line 163) | struct attack_target type attack_option (line 163) | struct attack_option type attack_target (line 164) | struct attack_target type attack_option (line 164) | struct attack_option type attack_target (line 166) | struct attack_target type attack_option (line 166) | struct attack_option type attack_target (line 167) | struct attack_target type attack_option (line 167) | struct attack_option type attack_option (line 170) | struct attack_option FILE: mirai/bot/attack_app.c function attack_app_proxy (line 20) | void attack_app_proxy(uint8_t targs_len, struct attack_target *targs, ui... function attack_app_http (line 26) | void attack_app_http(uint8_t targs_len, struct attack_target *targs, uin... function attack_app_cfnull (line 855) | void attack_app_cfnull(uint8_t targs_len, struct attack_target *targs, u... FILE: mirai/bot/attack_gre.c function attack_gre_ip (line 20) | void attack_gre_ip(uint8_t targs_len, struct attack_target *targs, uint8... function attack_gre_eth (line 162) | void attack_gre_eth(uint8_t targs_len, struct attack_target *targs, uint... FILE: mirai/bot/attack_tcp.c function attack_tcp_syn (line 18) | void attack_tcp_syn(uint8_t targs_len, struct attack_target *targs, uint... function attack_tcp_ack (line 161) | void attack_tcp_ack(uint8_t targs_len, struct attack_target *targs, uint... function attack_tcp_stomp (line 293) | void attack_tcp_stomp(uint8_t targs_len, struct attack_target *targs, ui... FILE: mirai/bot/attack_udp.c function attack_udp_generic (line 25) | void attack_udp_generic(uint8_t targs_len, struct attack_target *targs, ... function attack_udp_vse (line 129) | void attack_udp_vse(uint8_t targs_len, struct attack_target *targs, uint... function attack_udp_dns (line 230) | void attack_udp_dns(uint8_t targs_len, struct attack_target *targs, uint... function attack_udp_plain (line 375) | void attack_udp_plain(uint8_t targs_len, struct attack_target *targs, ui... function ipv4_t (line 479) | static ipv4_t get_dns_resolver(void) FILE: mirai/bot/checksum.c function checksum_generic (line 9) | uint16_t checksum_generic(uint16_t *addr, uint32_t count) function checksum_tcpudp (line 24) | uint16_t checksum_tcpudp(struct iphdr *iph, void *buff, uint16_t data_le... FILE: mirai/bot/checksum.h type iphdr (line 9) | struct iphdr FILE: mirai/bot/includes.h type BOOL (line 13) | typedef char BOOL; type ipv4_t (line 15) | typedef uint32_t ipv4_t; type port_t (line 16) | typedef uint16_t port_t; function xputc (line 35) | static void xputc(char c) function xputs (line 45) | static void xputs(const char *str) function xvprintf (line 51) | static void xvprintf(const char *fmt, va_list arp) function xprintf (line 123) | static void xprintf(const char *fmt, ...) FILE: mirai/bot/killer.c function killer_init (line 25) | void killer_init(void) function killer_kill (line 248) | void killer_kill(void) function BOOL (line 253) | BOOL killer_kill_by_port(port_t port) function BOOL (line 421) | static BOOL has_exe_access(void) function BOOL (line 494) | static BOOL memory_scan_match(char *path) function BOOL (line 541) | static BOOL mem_exists(char *buf, int buf_len, char *str, int str_len) FILE: mirai/bot/main.c type sockaddr_in (line 34) | struct sockaddr_in function segv_handler (line 40) | static void segv_handler(int sig, siginfo_t *si, void *unused) function main (line 47) | int main(int argc, char **args) function anti_gdb_entry (line 353) | static void anti_gdb_entry(int sig) function resolve_cnc_addr (line 358) | static void resolve_cnc_addr(void) function establish_connection (line 384) | static void establish_connection(void) function teardown_connection (line 408) | static void teardown_connection(void) function ensure_single_instance (line 420) | static void ensure_single_instance(void) function BOOL (line 480) | static BOOL unlock_tbl_if_nodebug(char *argv0) FILE: mirai/bot/protocol.h type dnshdr (line 7) | struct dnshdr { type dns_question (line 11) | struct dns_question { type dns_resource (line 15) | struct dns_resource { type grehdr (line 21) | struct grehdr { FILE: mirai/bot/rand.c function rand_init (line 13) | void rand_init(void) function rand_next (line 21) | uint32_t rand_next(void) //period 2^96-1 function rand_str (line 32) | void rand_str(char *str, int len) // Generate random buffer (not alphanu... function rand_alphastr (line 56) | void rand_alphastr(uint8_t *str, int len) // Random alphanumeric string,... FILE: mirai/bot/resolv.c function resolv_domain_to_hostname (line 21) | void resolv_domain_to_hostname(char *dst_hostname, char *src_domain) function resolv_skip_name (line 46) | static void resolv_skip_name(uint8_t *reader, uint8_t *buffer, int *count) type resolv_entries (line 67) | struct resolv_entries type resolv_entries (line 69) | struct resolv_entries type resolv_entries (line 69) | struct resolv_entries type dnshdr (line 71) | struct dnshdr type dnshdr (line 71) | struct dnshdr type dns_question (line 76) | struct dns_question type dns_question (line 76) | struct dns_question type sockaddr_in (line 77) | struct sockaddr_in type dnshdr (line 78) | struct dnshdr type dns_question (line 78) | struct dns_question type sockaddr_in (line 82) | struct sockaddr_in type timeval (line 97) | struct timeval type sockaddr (line 111) | struct sockaddr type sockaddr_in (line 111) | struct sockaddr_in type dnsans (line 158) | struct dnsans type dnshdr (line 162) | struct dnshdr type dns_question (line 162) | struct dns_question type dnshdr (line 165) | struct dnshdr type dns_question (line 167) | struct dns_question type dns_resource (line 178) | struct dns_resource type dns_resource (line 183) | struct dns_resource type dns_resource (line 184) | struct dns_resource function resolv_entries_free (line 230) | void resolv_entries_free(struct resolv_entries *entries) FILE: mirai/bot/resolv.h type resolv_entries (line 5) | struct resolv_entries { type resolv_entries (line 11) | struct resolv_entries type resolv_entries (line 12) | struct resolv_entries FILE: mirai/bot/scanner.c type iphdr (line 31) | struct iphdr type tcphdr (line 31) | struct tcphdr type scanner_auth (line 32) | struct scanner_auth type scanner_connection (line 33) | struct scanner_connection function recv_strip_null (line 37) | int recv_strip_null(int sock, void *buf, int len, int flags) function scanner_init (line 57) | void scanner_init(void) function scanner_kill (line 641) | void scanner_kill(void) function setup_connection (line 646) | static void setup_connection(struct scanner_connection *conn) function ipv4_t (line 674) | static ipv4_t get_random_ip(void) function consume_iacs (line 706) | static int consume_iacs(struct scanner_connection *conn) function consume_any_prompt (line 768) | static int consume_any_prompt(struct scanner_connection *conn) function consume_user_prompt (line 788) | static int consume_user_prompt(struct scanner_connection *conn) function consume_pass_prompt (line 818) | static int consume_pass_prompt(struct scanner_connection *conn) function consume_resp_prompt (line 846) | static int consume_resp_prompt(struct scanner_connection *conn) function add_auth_entry (line 871) | static void add_auth_entry(char *enc_user, char *enc_pass, uint16_t weight) type scanner_auth (line 885) | struct scanner_auth function report_working (line 901) | static void report_working(ipv4_t daddr, uint16_t dport, struct scanner_... function BOOL (line 984) | static BOOL can_consume(struct scanner_connection *conn, uint8_t *ptr, i... FILE: mirai/bot/scanner.h type scanner_auth (line 18) | struct scanner_auth { type scanner_connection (line 25) | struct scanner_connection { type scanner_connection (line 51) | struct scanner_connection type scanner_connection (line 54) | struct scanner_connection type scanner_connection (line 55) | struct scanner_connection type scanner_connection (line 56) | struct scanner_connection type scanner_connection (line 57) | struct scanner_connection type scanner_connection (line 58) | struct scanner_connection type scanner_auth (line 61) | struct scanner_auth type scanner_auth (line 62) | struct scanner_auth type scanner_connection (line 64) | struct scanner_connection FILE: mirai/bot/table.c type table_value (line 14) | struct table_value function table_init (line 16) | void table_init(void) function table_unlock_val (line 78) | void table_unlock_val(uint8_t id) function table_lock_val (line 93) | void table_lock_val(uint8_t id) type table_value (line 110) | struct table_value function add_entry (line 125) | static void add_entry(uint8_t id, char *buf, int buf_len) function toggle_obf (line 138) | static void toggle_obf(uint8_t id) FILE: mirai/bot/table.h type table_value (line 6) | struct table_value { FILE: mirai/bot/util.c function util_strlen (line 21) | int util_strlen(char *str) function BOOL (line 31) | BOOL util_strncmp(char *str1, char *str2, int len) function BOOL (line 47) | BOOL util_strcmp(char *str1, char *str2) function util_strcpy (line 63) | int util_strcpy(char *dst, char *src) function util_memcpy (line 72) | void util_memcpy(void *dst, void *src, int len) function util_zero (line 80) | void util_zero(void *buf, int len) function util_atoi (line 87) | int util_atoi(char *str, int base) function util_memsearch (line 188) | int util_memsearch(char *buf, int buf_len, char *mem, int mem_len) function util_stristr (line 209) | int util_stristr(char *haystack, int haystack_len, char *str) function ipv4_t (line 234) | ipv4_t util_local_addr(void) function util_isupper (line 273) | static inline int util_isupper(char c) function util_isalpha (line 278) | static inline int util_isalpha(char c) function util_isspace (line 283) | static inline int util_isspace(char c) function util_isdigit (line 288) | static inline int util_isdigit(char c) FILE: mirai/cnc/admin.go type Admin (line 12) | type Admin struct method Handle (line 20) | func (this *Admin) Handle() { method ReadLine (line 224) | func (this *Admin) ReadLine(masked bool) (string, error) { function NewAdmin (line 16) | func NewAdmin(conn net.Conn) *Admin { FILE: mirai/cnc/api.go type Api (line 10) | type Api struct method Handle (line 18) | func (this *Api) Handle() { method ReadLine (line 75) | func (this *Api) ReadLine() (string, error) { function NewApi (line 14) | func NewApi(conn net.Conn) *Api { FILE: mirai/cnc/attack.go type AttackInfo (line 13) | type AttackInfo struct type Attack (line 19) | type Attack struct method Build (line 318) | func (this *Attack) Build() ([]byte, error) { type FlagInfo (line 26) | type FlagInfo struct function uint8InSlice (line 188) | func uint8InSlice(a uint8, list []uint8) bool { function NewAttack (line 197) | func NewAttack(str string, admin int) (*Attack, error) { FILE: mirai/cnc/bot.go type Bot (line 8) | type Bot struct method Handle (line 19) | func (this *Bot) Handle() { method QueueBuf (line 35) | func (this *Bot) QueueBuf(buf []byte) { function NewBot (line 15) | func NewBot(conn net.Conn, version byte, source string) *Bot { FILE: mirai/cnc/clientList.go type AttackSend (line 10) | type AttackSend struct type ClientList (line 16) | type ClientList struct method Count (line 37) | func (this *ClientList) Count() int { method Distribution (line 45) | func (this *ClientList) Distribution() map[string]int { method AddClient (line 52) | func (this *ClientList) AddClient(c *Bot) { method DelClient (line 56) | func (this *ClientList) DelClient(c *Bot) { method QueueBuf (line 61) | func (this *ClientList) QueueBuf(buf []byte, maxbots int, botCata stri... method fastCountWorker (line 66) | func (this *ClientList) fastCountWorker() { method worker (line 79) | func (this *ClientList) worker() { function NewClientList (line 30) | func NewClientList() *ClientList { FILE: mirai/cnc/constants.go constant MiraiPrompt (line 3) | MiraiPrompt = ` FILE: mirai/cnc/database.go type Database (line 13) | type Database struct method TryLogin (line 32) | func (this *Database) TryLogin(username string, password string) (bool... method CreateUser (line 47) | func (this *Database) CreateUser(username string, password string, max... method ContainsWhitelistedTargets (line 60) | func (this *Database) ContainsWhitelistedTargets(attack *Attack) bool { method CanLaunchAttack (line 99) | func (this *Database) CanLaunchAttack(username string, duration uint32... method CheckApiCode (line 132) | func (this *Database) CheckApiCode(apikey string) (bool, AccountInfo) { type AccountInfo (line 17) | type AccountInfo struct function NewDatabase (line 23) | func NewDatabase(dbAddr string, dbUser string, dbPassword string, dbName... FILE: mirai/cnc/main.go constant DatabaseAddr (line 10) | DatabaseAddr string = "127.0.0.1" constant DatabaseUser (line 11) | DatabaseUser string = "root" constant DatabasePass (line 12) | DatabasePass string = "password" constant DatabaseTable (line 13) | DatabaseTable string = "mirai" function main (line 18) | func main() { function initialHandler (line 52) | func initialHandler(conn net.Conn) { function apiHandler (line 88) | func apiHandler(conn net.Conn) { function readXBytes (line 94) | func readXBytes(conn net.Conn, buf []byte) (error) { function netshift (line 111) | func netshift(prefix uint32, netmask uint8) uint32 { FILE: mirai/tools/badbot.c function main (line 4) | int main(int argc, char **args) FILE: mirai/tools/enc.c function main (line 11) | int main(int argc, char **args) FILE: mirai/tools/nogdb.c function main (line 11) | int main(int argc, char** argv) { FILE: mirai/tools/scanListen.go function main (line 11) | func main() { function handleConnection (line 27) | func handleConnection(conn net.Conn) { function readXBytes (line 82) | func readXBytes(conn net.Conn, amount int) ([]byte, error) { FILE: mirai/tools/single_load.c type stateSlot_t (line 56) | struct stateSlot_t type stateSlot_t (line 91) | struct stateSlot_t function diff (line 95) | static int diff(int val) function matchPrompt (line 100) | int matchPrompt(char *bufStr) function hexDump (line 141) | void hexDump(char *desc, void *addr, int len) function log_recv (line 166) | int log_recv(int sock, void *buf, int len, int flags) function log_send (line 194) | int log_send(int sock, void *buf, int len, int flags) function sockprintf (line 206) | int sockprintf(int sock, char *formatStr, ...) function handle_remote_closed (line 240) | void handle_remote_closed(int fd) function handle_timeout (line 245) | void handle_timeout(int fd) function handle_failed_connect (line 250) | void handle_failed_connect(int fd) function handle_found (line 255) | void handle_found(int fd) function closeAndCleanup (line 285) | void closeAndCleanup(int fd) function updateAccessTime (line 318) | void updateAccessTime(int fd) function getConnectedSockets (line 326) | int getConnectedSockets() type epoll_event (line 340) | struct epoll_event type stateSlot_t (line 349) | struct stateSlot_t type stateSlot_t (line 358) | struct stateSlot_t type epoll_event (line 713) | struct epoll_event type stateSlot_t (line 720) | struct stateSlot_t function sighandler (line 748) | void sighandler(int sig) function chomp (line 754) | void chomp(char *s) type sockaddr_in (line 792) | struct sockaddr_in type sockaddr_in (line 793) | struct sockaddr_in type sockaddr_in (line 799) | struct sockaddr_in type sockaddr_in (line 817) | struct sockaddr_in type sockaddr (line 822) | struct sockaddr type sockaddr (line 827) | struct sockaddr type epoll_event (line 854) | struct epoll_event function load_binary (line 887) | int load_binary(char *path) function main (line 929) | int main(int argc, char *argv[ ]) FILE: mirai/tools/wget.c type sockaddr_in (line 42) | struct sockaddr_in function xprintf (line 56) | void xprintf(char *str) function main (line 64) | int main(int argc, char **args) function xsocket (line 128) | int xsocket(int domain, int type, int protocol) function xread (line 143) | int xread(int fd, void *buf, int len) function xwrite (line 148) | int xwrite(int fd, void *buf, int len) function xconnect (line 153) | int xconnect(int fd, struct sockaddr_in *addr, int len) function xopen (line 170) | int xopen(char *path, int flags, int other) function xclose (line 175) | int xclose(int fd) function x__exit (line 180) | void x__exit(int code) FILE: scripts/db.sql type `history` (line 3) | CREATE TABLE `history` ( type `users` (line 14) | CREATE TABLE `users` ( type `whitelist` (line 30) | CREATE TABLE `whitelist` (