[gopher] Capability files are dangerous
Damien Carol
damien.carol at gmail.com
Mon May 14 16:58:09 UTC 2012
Still safe, GOGOPH Server is not in the list... XD
2012/5/14 Kim Holviala <kim at holviala.com>
> On May 14, 2012, at 19:27 , Kim Holviala wrote:
>
> > And related to the above; I can determine with 100% reliability all of
> the existing gopher servers. Got code too to prove it.
>
> Still one more before I go see teh ladies.
>
> /*
> * Figure out gopher server software
> */
> char *get_gopherd(char *host, int port)
> {
> static char result[128];
> char page[BUFSIZE];
> char *c;
>
> /* Try fingerprinting hURL reply */
> if (tcp_request(host, port, "URL:http://www.google.com/" CRLF,
> page, sizeof(page)) == ERROR) return NA;
>
> if (strstr(page, "pygopherd")) return
> "PyGopherd";
> if (strstr(page, "bucktooth")) return
> "Bucktooth";
> if (strstr(page, "Gophernicus")) return
> "Gophernicus";
> if (strstr(page, "GopherBlock")) return
> "GopherBlock";
> if (strstr(page, "You'll be redirected")) return
> "mgod";
> if (strstr(page, "This page is for redirecting you")) return
> "Geomyidae";
> if (strstr(page, "It appears that you clicked on a")) return
> "Grumpy";
> if (strstr(page, "refresh\" content=\"0;URL=") &&
> !strstr(page, "</HTML>")) return
> "Gophserv";
>
> if (sstrncmp(page, "3Server error: Sorry, access denied") == MATCH
> &&
> strstr(page, "\terror.host")) return "GN";
>
> /* Synchronet? */
> if (page[0] == '.') {
> if (tcp_request(host, port, "ver" CRLF,
> page, sizeof(page)) == ERROR) return NA;
> if (strstr(page, "Synchronet")) return
> "Synchronet";
> }
>
> /* VenVen */
> if (page[0] == '\0') {
> if (tcp_request(host, port, CRLF,
> page, sizeof(page)) == ERROR) return NA;
> if (strstr(page, "0./") || strstr(page, "1./")) return
> "VenVen";
> }
>
> /* Do one more detection test */
> if (tcp_request(host, port, "lkjsdflkjsadlflksjdflkjasdfklj" CRLF,
> page, sizeof(page)) == ERROR) return NA;
>
> if (strstr(page, "no handler found")) return
> "PyGopherd";
> if (strstr(page, "[pselect]")) return "GN";
> if (strstr(page, "<html") || strstr(page, "<HTML")) return
> "g2httpd";
>
> /* Try /server-status */
> if (tcp_request(host, port, "/server-status" CRLF,
> page, sizeof(page)) == ERROR) return NA;
>
> if ((c = strstr(page, "Server: "))) {
> sstrlcpy(result, c + 8);
> if ((c = strchr(result, '/'))) *c = '\0';
> if ((c = strchr(result, '('))) *c = '\0';
> return result;
> }
>
> /* Damn */
> return "Unknown";
> }
>
>
>
> _______________________________________________
> Gopher-Project mailing list
> Gopher-Project at lists.alioth.debian.org
> http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/gopher-project
>
--
Damien CAROL
gopher://dams.zapto.org/1/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.alioth.debian.org/pipermail/gopher-project/attachments/20120514/3c92e9dc/attachment.html>
More information about the Gopher-Project
mailing list