From a07969e954ab9c16f33f610e325fe89b4eb69feb Mon Sep 17 00:00:00 2001 From: Martin Ger Date: Sun, 24 Jun 2018 11:19:06 +0200 Subject: [PATCH] added basic DNS support --- firmware/0x00000.bin | Bin 43376 -> 43440 bytes firmware/0x10000.bin | Bin 309372 -> 312172 bytes firmware/sha1sums | 4 +- user/dns_responder.c | 807 +++++++++++++++++++++++++++++++++++++++++++ user/dns_responder.h | 8 + user/user_config.h | 4 +- user/user_main.c | 5 - 7 files changed, 819 insertions(+), 9 deletions(-) create mode 100644 user/dns_responder.c create mode 100644 user/dns_responder.h diff --git a/firmware/0x00000.bin b/firmware/0x00000.bin index e121372650099e1fce02b8714b64e60a3187de64..18cba3c0b9eed70b25b7681644e2586caf266ffc 100644 GIT binary patch delta 5446 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 c@v>D5H4Uck`P=RbeZ-+sae*DjR?zQ(`=d5-1 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 diff --git a/firmware/0x10000.bin b/firmware/0x10000.bin index 3b7a6d41038b9671db9ca7f5eed876f1dacb92b2..e4a34fc8d0b74d9b2875f6e8614407b214939b0c 100644 GIT binary patch delta 84888 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%0DsT6@2} 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 Oy$e1!WtOisW&R($=SeOA delta 81832 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 diff --git a/firmware/sha1sums b/firmware/sha1sums index e22535a..2698582 100644 --- a/firmware/sha1sums +++ b/firmware/sha1sums @@ -1,2 +1,2 @@ -6d0d78a5dcacc730d09bdaec896fd17ff46c71a5 0x00000.bin -22155ab48cdc32157e0750b275cc0ffaf8d54a81 0x10000.bin +10e10e08f05ad126cf205ec87f50412f8642841f 0x00000.bin +4831e82954d459e4efc2fd470c8e7cb4d28e528a 0x10000.bin diff --git a/user/dns_responder.c b/user/dns_responder.c new file mode 100644 index 0000000..3be8e8a --- /dev/null +++ b/user/dns_responder.c @@ -0,0 +1,807 @@ +#include "c_types.h" +#include "mem.h" +#include "ets_sys.h" +#include "osapi.h" +#include "gpio.h" +#include "os_type.h" +#include "lwip/def.h" + +#include "user_interface.h" + +#include "espconn.h" + +#include "dns_responder.h" + +//#define DNS_RESP_DEBUG 1 + +/* +* This software is licensed under the CC0. +* +* This is a _basic_ DNS Server for educational use. +* It does not prevent invalid packets from crashing +* the server. +* +* Originating from: +* https://github.com/mwarning/SimpleDNS +* +*/ + + +LOCAL struct espconn dns_espconn; +struct Message msg; +LOCAL uint8_t dns_mode; + +/* +* Masks and constants. +*/ + +static const uint32_t QR_MASK = 0x8000; +static const uint32_t OPCODE_MASK = 0x7800; +static const uint32_t AA_MASK = 0x0400; +static const uint32_t TC_MASK = 0x0200; +static const uint32_t RD_MASK = 0x0100; +static const uint32_t RA_MASK = 0x8000; +static const uint32_t RCODE_MASK = 0x000F; + +/* Response Type */ +enum { + Ok_ResponseType = 0, + FormatError_ResponseType = 1, + ServerFailure_ResponseType = 2, + NameError_ResponseType = 3, + NotImplemented_ResponseType = 4, + Refused_ResponseType = 5 +}; + +/* Resource Record Types */ +enum { + A_Resource_RecordType = 1, + NS_Resource_RecordType = 2, + CNAME_Resource_RecordType = 5, + SOA_Resource_RecordType = 6, + PTR_Resource_RecordType = 12, + MX_Resource_RecordType = 15, + TXT_Resource_RecordType = 16, + AAAA_Resource_RecordType = 28, + SRV_Resource_RecordType = 33 +}; + +/* Operation Code */ +enum { + QUERY_OperationCode = 0, /* standard query */ + IQUERY_OperationCode = 1, /* inverse query */ + STATUS_OperationCode = 2, /* server status request */ + NOTIFY_OperationCode = 4, /* request zone transfer */ + UPDATE_OperationCode = 5 /* change resource records */ +}; + +/* Response Code */ +enum { + NoError_ResponseCode = 0, + FormatError_ResponseCode = 1, + ServerFailure_ResponseCode = 2, + NameError_ResponseCode = 3 +}; + +/* Query Type */ +enum { + IXFR_QueryType = 251, + AXFR_QueryType = 252, + MAILB_QueryType = 253, + MAILA_QueryType = 254, + STAR_QueryType = 255 +}; + +/* +* Types. +*/ + +/* Question Section */ +struct Question { + char *qName; + uint16_t qType; + uint16_t qClass; + struct Question* next; // for linked list +}; + +/* Data part of a Resource Record */ +union ResourceData { + struct { + char *txt_data; + } txt_record; + struct { + uint8_t addr[4]; + } a_record; + struct { + char* MName; + char* RName; + uint32_t serial; + uint32_t refresh; + uint32_t retry; + uint32_t expire; + uint32_t minimum; + } soa_record; + struct { + char *name; + } name_server_record; + struct { + char name; + } cname_record; + struct { + char *name; + } ptr_record; + struct { + uint16_t preference; + char *exchange; + } mx_record; + struct { + uint8_t addr[16]; + } aaaa_record; + struct { + uint16_t priority; + uint16_t weight; + uint16_t port; + char *target; + } srv_record; +}; + +/* Resource Record Section */ +struct ResourceRecord { + char *name; + uint16_t type; + uint16_t class; + uint16_t ttl; + uint16_t rd_length; + union ResourceData rd_data; + struct ResourceRecord* next; // for linked list +}; + +struct Message { + uint16_t id; /* Identifier */ + + /* Flags */ + uint16_t qr; /* Query/Response Flag */ + uint16_t opcode; /* Operation Code */ + uint16_t aa; /* Authoritative Answer Flag */ + uint16_t tc; /* Truncation Flag */ + uint16_t rd; /* Recursion Desired */ + uint16_t ra; /* Recursion Available */ + uint16_t rcode; /* Response Code */ + + uint16_t qdCount; /* Question Count */ + uint16_t anCount; /* Answer Record Count */ + uint16_t nsCount; /* Authority Record Count */ + uint16_t arCount; /* Additional Record Count */ + + /* At least one question; questions are copied to the response 1:1 */ + struct Question* questions; + + /* + * Resource records to be send back. + * Every resource record can be in any of the following places. + * But every place has a different semantic. + */ + struct ResourceRecord* answers; + struct ResourceRecord* authorities; + struct ResourceRecord* additionals; +}; + +/* +int ICACHE_FLASH_ATTR get_A_Record(uint8_t addr[4], const char domain_name[]) +{ + if (strcmp("foo.bar.com", domain_name) == 0) + { + addr[0] = 192; + addr[1] = 168; + addr[2] = 1; + addr[3] = 1; + return 0; + } + else + { + return -1; + } +} + +int ICACHE_FLASH_ATTR get_AAAA_Record(uint8_t addr[16], const char domain_name[]) +{ + if (strcmp("foo.bar.com", domain_name) == 0) + { + addr[0] = 0xfe; + addr[1] = 0x80; + addr[2] = 0x00; + addr[3] = 0x00; + addr[4] = 0x00; + addr[5] = 0x00; + addr[6] = 0x00; + addr[7] = 0x00; + addr[8] = 0x00; + addr[9] = 0x00; + addr[10] = 0x00; + addr[11] = 0x00; + addr[12] = 0x00; + addr[13] = 0x00; + addr[14] = 0x00; + addr[15] = 0x01; + return 0; + } + else + { + return -1; + } +} +*/ + +/* +* Debugging functions. +*/ + +#ifdef DNS_RESP_DEBUG +void ICACHE_FLASH_ATTR print_hex(uint8_t* buf, size_t len) +{ + int i; + os_printf("%zu bytes:\n", len); + for(i = 0; i < len; ++i) + os_printf("%02x ", buf[i]); + os_printf("\n"); +} + +void print_resource_record(struct ResourceRecord* rr) +{ + int i; + while (rr) + { + os_printf(" ResourceRecord { name '%s', type %u, class %u, ttl %u, rd_length %u, ", + rr->name, + rr->type, + rr->class, + rr->ttl, + rr->rd_length + ); + + union ResourceData *rd = &rr->rd_data; + switch (rr->type) + { + case A_Resource_RecordType: + os_printf("Address Resource Record { address "); + + for(i = 0; i < 4; ++i) + os_printf("%s%u", (i ? "." : ""), rd->a_record.addr[i]); + + os_printf(" }"); + break; + case NS_Resource_RecordType: + os_printf("Name Server Resource Record { name %s }", + rd->name_server_record.name + ); + break; + case CNAME_Resource_RecordType: + os_printf("Canonical Name Resource Record { name %u }", + rd->cname_record.name + ); + break; + case SOA_Resource_RecordType: + os_printf("SOA { MName '%s', RName '%s', serial %u, refresh %u, retry %u, expire %u, minimum %u }", + rd->soa_record.MName, + rd->soa_record.RName, + rd->soa_record.serial, + rd->soa_record.refresh, + rd->soa_record.retry, + rd->soa_record.expire, + rd->soa_record.minimum + ); + break; + case PTR_Resource_RecordType: + os_printf("Pointer Resource Record { name '%s' }", + rd->ptr_record.name + ); + break; + case MX_Resource_RecordType: + os_printf("Mail Exchange Record { preference %u, exchange '%s' }", + rd->mx_record.preference, + rd->mx_record.exchange + ); + break; + case TXT_Resource_RecordType: + os_printf("Text Resource Record { txt_data '%s' }", + rd->txt_record.txt_data + ); + break; + case AAAA_Resource_RecordType: + os_printf("AAAA Resource Record { address "); + + for(i = 0; i < 16; ++i) + os_printf("%s%02x", (i ? ":" : ""), rd->aaaa_record.addr[i]); + + os_printf(" }"); + break; + default: + os_printf("Unknown Resource Record { ??? }"); + } + os_printf("}\n"); + rr = rr->next; + } +} + +void ICACHE_FLASH_ATTR print_query(struct Message* msg) +{ + os_printf("QUERY { ID: %02x", msg->id); + os_printf(". FIELDS: [ QR: %u, OpCode: %u ]", msg->qr, msg->opcode); + os_printf(", QDcount: %u", msg->qdCount); + os_printf(", ANcount: %u", msg->anCount); + os_printf(", NScount: %u", msg->nsCount); + os_printf(", ARcount: %u,\n", msg->arCount); + + struct Question* q = msg->questions; + while (q) + { + os_printf(" Question { qName '%s', qType %u, qClass %u }\n", + q->qName, + q->qType, + q->qClass + ); + q = q->next; + } + + print_resource_record(msg->answers); + print_resource_record(msg->authorities); + print_resource_record(msg->additionals); + + os_printf("}\n"); +} +#endif + +/* +* Basic memory operations. +*/ + +size_t ICACHE_FLASH_ATTR get16bits(const uint8_t** buffer) +{ + uint16_t value; + + os_memcpy(&value, *buffer, 2); + *buffer += 2; + + return ntohs(value); +} + +void ICACHE_FLASH_ATTR put8bits(uint8_t** buffer, uint8_t value) +{ + os_memcpy(*buffer, &value, 1); + *buffer += 1; +} + +void ICACHE_FLASH_ATTR put16bits(uint8_t** buffer, uint16_t value) +{ + value = htons(value); + os_memcpy(*buffer, &value, 2); + *buffer += 2; +} + +void ICACHE_FLASH_ATTR put32bits(uint8_t** buffer, uint32_t value) +{ + value = htons(value); + os_memcpy(*buffer, &value, 4); + *buffer += 4; +} + + +/* +* Deconding/Encoding functions. +*/ + +// 3foo3bar3com0 => foo.bar.com +char* ICACHE_FLASH_ATTR decode_domain_name(const uint8_t** buffer) +{ + char name[256]; + const uint8_t* buf = *buffer; + int j = 0; + int i = 0; + + while (buf[i] != 0) + { + //if (i >= buflen || i > sizeof(name)) + // return NULL; + + if (i != 0) + { + name[j] = '.'; + j += 1; + } + + int len = buf[i]; + i += 1; + + os_memcpy(name+j, buf+i, len); + i += len; + j += len; + } + + name[j] = '\0'; + + *buffer += i + 1; //also jump over the last 0 + + //return strdup(name); + uint8_t *ret = os_malloc(os_strlen(name)+1); + os_strcpy(ret, name); + return ret; +} + +char ICACHE_FLASH_ATTR *_strchr(const char *s, int c) { + while (*s != (char)c) + if (!*s++) + return 0; + return (char *)s; +} + +// foo.bar.com => 3foo3bar3com0 +void ICACHE_FLASH_ATTR encode_domain_name(uint8_t** buffer, const char* domain) +{ + uint8_t* buf = *buffer; + const char* beg = domain; + const char* pos; + int len = 0; + int i = 0; + + while ((pos = _strchr(beg, '.'))) + { + len = pos - beg; + buf[i] = len; + i += 1; + os_memcpy(buf+i, beg, len); + i += len; + + beg = pos + 1; + } + + len = os_strlen(domain) - (beg - domain); + + buf[i] = len; + i += 1; + + os_memcpy(buf + i, beg, len); + i += len; + + buf[i] = 0; + i += 1; + + *buffer += i; +} + + +void ICACHE_FLASH_ATTR decode_header(struct Message* msg, const uint8_t** buffer) +{ + msg->id = get16bits(buffer); + + uint32_t fields = get16bits(buffer); + msg->qr = (fields & QR_MASK) >> 15; + msg->opcode = (fields & OPCODE_MASK) >> 11; + msg->aa = (fields & AA_MASK) >> 10; + msg->tc = (fields & TC_MASK) >> 9; + msg->rd = (fields & RD_MASK) >> 8; + msg->ra = (fields & RA_MASK) >> 7; + msg->rcode = (fields & RCODE_MASK) >> 0; + + msg->qdCount = get16bits(buffer); + msg->anCount = get16bits(buffer); + msg->nsCount = get16bits(buffer); + msg->arCount = get16bits(buffer); +} + +void ICACHE_FLASH_ATTR encode_header(struct Message* msg, uint8_t** buffer) +{ + put16bits(buffer, msg->id); + + int fields = 0; + fields |= (msg->qr << 15) & QR_MASK; + fields |= (msg->rcode << 0) & RCODE_MASK; + // TODO: insert the rest of the fields + put16bits(buffer, fields); + + put16bits(buffer, msg->qdCount); + put16bits(buffer, msg->anCount); + put16bits(buffer, msg->nsCount); + put16bits(buffer, msg->arCount); +} + +int ICACHE_FLASH_ATTR decode_msg(struct Message* msg, const uint8_t* buffer, int size) +{ + int i; + + decode_header(msg, &buffer); + + if (msg->anCount != 0 || msg->nsCount != 0) + { + os_printf("Only questions expected!\n"); + return -1; + } + + // parse questions + uint32_t qcount = msg->qdCount; + struct Question* qs = msg->questions; + for (i = 0; i < qcount; ++i) + { + struct Question* q = os_malloc(sizeof(struct Question)); + + q->qName = decode_domain_name(&buffer); + q->qType = get16bits(&buffer); + q->qClass = get16bits(&buffer); + + // prepend question to questions list + q->next = qs; + msg->questions = q; + } + + // We do not expect any resource records to parse here. + + return 0; +} + +// For every question in the message add a appropiate resource record +// in either section 'answers', 'authorities' or 'additionals'. +void ICACHE_FLASH_ATTR resolver_process(struct Message* msg) +{ + struct ResourceRecord* beg; + struct ResourceRecord* rr; + struct Question* q; + int rc; + + // leave most values intact for response + msg->qr = 1; // this is a response + msg->aa = 1; // this server is authoritative + msg->ra = 0; // no recursion available + msg->rcode = Ok_ResponseType; + + // should already be 0 + msg->anCount = 0; + msg->nsCount = 0; + msg->arCount = 0; + + // for every question append resource records + q = msg->questions; + while (q) + { + rr = os_malloc(sizeof(struct ResourceRecord)); + os_memset(rr, 0, sizeof(struct ResourceRecord)); + + //rr->name = strdup(q->qName); + rr->name = os_malloc(os_strlen(q->qName)+1); + os_strcpy(rr->name, q->qName); + rr->type = q->qType; + rr->class = q->qClass; + rr->ttl = 60*60; // in seconds; 0 means no caching +#ifdef DNS_RESP_DEBUG + os_printf("Query for '%s'\n", q->qName); +#endif + // We only can only answer two question types so far + // and the answer (resource records) will be all put + // into the answers list. + // This behavior is probably non-standard! + switch (q->qType) + { + case A_Resource_RecordType: + rr->rd_length = 4; + rc = get_A_Record(rr->rd_data.a_record.addr, q->qName); + if (rc < 0) + { + os_free(rr->name); + os_free(rr); + goto next; + } + break; + /* + case AAAA_Resource_RecordType: + rr->rd_length = 16; + rc = get_AAAA_Record(rr->rd_data.aaaa_record.addr, q->qName); + if (rc < 0) + { + os_free(rr->name); + os_free(rr); + goto next; + } + break; + */ + /* + case NS_Resource_RecordType: + case CNAME_Resource_RecordType: + case SOA_Resource_RecordType: + case PTR_Resource_RecordType: + case MX_Resource_RecordType: + case TXT_Resource_RecordType: + */ + default: + os_free(rr); + msg->rcode = NotImplemented_ResponseType; +#ifdef DNS_RESP_DEBUG + os_printf("Cannot answer question of type %d.\n", q->qType); +#endif + goto next; + } + + msg->anCount++; + + // prepend resource record to answers list + beg = msg->answers; + msg->answers = rr; + rr->next = beg; + + // jump here to omit question + next: + + // process next question + q = q->next; + } +} + +/* @return 0 upon failure, 1 upon success */ +int ICACHE_FLASH_ATTR encode_resource_records(struct ResourceRecord* rr, uint8_t** buffer) +{ + int i; + while (rr) + { + // Answer questions by attaching resource sections. + encode_domain_name(buffer, rr->name); + put16bits(buffer, rr->type); + put16bits(buffer, rr->class); + put32bits(buffer, rr->ttl); + put16bits(buffer, rr->rd_length); + + switch (rr->type) + { + case A_Resource_RecordType: + for(i = 0; i < 4; ++i) + put8bits(buffer, rr->rd_data.a_record.addr[i]); + break; +/* + case AAAA_Resource_RecordType: + for(i = 0; i < 16; ++i) + put8bits(buffer, rr->rd_data.aaaa_record.addr[i]); + break; +*/ + default: + os_printf("Unknown type %u. => Ignore resource record.\n", rr->type); + return 1; + } + + rr = rr->next; + } + + return 0; +} + +/* @return 0 upon failure, 1 upon success */ +int ICACHE_FLASH_ATTR encode_msg(struct Message* msg, uint8_t** buffer) +{ + struct Question* q; + int rc; + + encode_header(msg, buffer); + + q = msg->questions; + while (q) + { + encode_domain_name(buffer, q->qName); + put16bits(buffer, q->qType); + put16bits(buffer, q->qClass); + + q = q->next; + } + + rc = 0; + rc |= encode_resource_records(msg->answers, buffer); + rc |= encode_resource_records(msg->authorities, buffer); + rc |= encode_resource_records(msg->additionals, buffer); + + return rc; +} + +void ICACHE_FLASH_ATTR free_resource_records(struct ResourceRecord* rr) +{ + struct ResourceRecord* next; + + while (rr) { + os_free(rr->name); + next = rr->next; + os_free(rr); + rr = next; + } +} + +void ICACHE_FLASH_ATTR free_questions(struct Question* qq) +{ + struct Question* next; + + while (qq) { + os_free(qq->qName); + next = qq->next; + os_free(qq); + qq = next; + } +} + +LOCAL void ICACHE_FLASH_ATTR +user_udp_recv(void *arg, char *pusrdata, unsigned short length) +{ + uint8_t hwaddr[6]; + uint8_t buffer[1024]; + + struct ip_info ipconfig; + struct espconn *pespconn = (struct espconn *)arg; + remot_info *premot = NULL; + + if (espconn_get_connection_info(pespconn,&premot,0) == ESPCONN_OK){ + pespconn->proto.udp->remote_port = premot->remote_port; + pespconn->proto.udp->remote_ip[0] = premot->remote_ip[0]; + pespconn->proto.udp->remote_ip[1] = premot->remote_ip[1]; + pespconn->proto.udp->remote_ip[2] = premot->remote_ip[2]; + pespconn->proto.udp->remote_ip[3] = premot->remote_ip[3]; + } else { + return; + } + + if (wifi_get_opmode() == STATION_MODE) { + //udp packet is received from ESP8266 station + if (!(dns_mode & DNS_MODE_STA)) + return; + + } else { + + wifi_get_ip_info(SOFTAP_IF, &ipconfig); + wifi_get_macaddr(SOFTAP_IF, hwaddr); + + if (!ip_addr_netcmp((struct ip_addr *)pespconn->proto.udp->remote_ip, &ipconfig.ip, &ipconfig.netmask)) { + //udp packet is received from ESP8266 station + + if (!(dns_mode & DNS_MODE_STA)) + return; + } else { + //udp packet is received from ESP8266 softAP + + if (!(dns_mode & DNS_MODE_AP)) + return; + } + } + + if (pusrdata == NULL) + return; + + free_questions(msg.questions); + free_resource_records(msg.answers); + free_resource_records(msg.authorities); + free_resource_records(msg.additionals); + os_memset(&msg, 0, sizeof(struct Message)); + + if (decode_msg(&msg, pusrdata, length) != 0) { + return; + } +#ifdef DNS_RESP_DEBUG + /* Print query */ + print_query(&msg); +#endif + + resolver_process(&msg); + +#ifdef DNS_RESP_DEBUG + /* Print response */ + print_query(&msg); +#endif + + uint8_t *p = buffer; + if (encode_msg(&msg, &p) != 0) { + return; + } + + espconn_sent(pespconn, buffer, p - buffer); +} + +void ICACHE_FLASH_ATTR +dns_resp_init(uint8_t mode) +{ + dns_mode = mode; + dns_espconn.type = ESPCONN_UDP; + dns_espconn.proto.udp = (esp_udp *)os_zalloc(sizeof(esp_udp)); + dns_espconn.proto.udp->local_port = 53; // DNS udp port + espconn_regist_recvcb(&dns_espconn, user_udp_recv); // register a udp packet receiving callback + espconn_create(&dns_espconn); // create udp +} + diff --git a/user/dns_responder.h b/user/dns_responder.h new file mode 100644 index 0000000..7e499a6 --- /dev/null +++ b/user/dns_responder.h @@ -0,0 +1,8 @@ +#define DNS_MODE_STA 0x01 +#define DNS_MODE_AP 0x02 +#define DNS_MODE_STATIONAP 0x03 + +void dns_resp_init(uint8_t mode); + +int get_A_Record(uint8_t addr[4], const char domain_name[]); + diff --git a/user/user_config.h b/user/user_config.h index f302b01..08b7f67 100644 --- a/user/user_config.h +++ b/user/user_config.h @@ -1,7 +1,7 @@ #ifndef _USER_CONFIG_ #define _USER_CONFIG_ -#define ESP_UBROKER_VERSION "V2.0.3" +#define ESP_UBROKER_VERSION "V2.0.4" #define WIFI_SSID "ssid" #define WIFI_PASSWORD "password" @@ -92,7 +92,7 @@ // Define this if you want to have access the DNS responder. // Experimental feature - not yet tested // -//#define DNS_RESP 1 +#define DNS_RESP 1 // // Define this to support the "scan" command for AP search diff --git a/user/user_main.c b/user/user_main.c index 4b172b0..c3d7a43 100644 --- a/user/user_main.c +++ b/user/user_main.c @@ -766,11 +766,6 @@ int ICACHE_FLASH_ATTR get_A_Record(uint8_t addr[4], const char domain_name[]) return -1; } } - -int ICACHE_FLASH_ATTR get_AAAA_Record(uint8_t addr[16], const char domain_name[]) -{ - return -1; -} #endif