⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 service.c

📁 Linux系统下著名的个人防火墙
💻 C
字号:
/*---[ service.c ]---------------------------------------------------- * Copyright (C) 2000 Tomas Junnonen (majix@sci.fi) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Return the service used, based on the port and protocol given *--------------------------------------------------------------------*/#include <netdb.h>#include <netinet/in.h>#include <ctype.h>#include "service.h"typedef struct{	gchar *name;	gchar *ports;} Service;Service user_services[] = {	{"BitTorrent", "6881-6889"},	{"DHCP", "67-68"},	{"DNS", "53"},	{"FTP", "20-21"},	{"HTTP", "80"},	{"HTTPS", "443"},	{"IMAP", "143"},	{"NFS", "111 2049"},	{"NNTP", "119"},	{"NTP", "123"},	{"POP3", "110"},		{"Samba (SMB)", "137-139 445"},	{"SMTP", "25"},	{"SSH", "22"},	{"Telnet", "23"},	{"Xwindows", "6000-6015"},};Service misc_services[] = {	{"DCOM-scm", "135"},	{"PhAse zero", "555"},	{"PC server backdoor", "600"},	{"Mountd bug", "635"},	{"Kazaa", "1214"},	{"Nessus", "1241"},	{"Subseven", "1234,1243,2772,2773"},	{"Trin00", "1524,27444,31335"},	{"SSDP", "1900"},	{"Backdoor-g/Subseven", "1999"},	{"CPQ-Wbem", "2301"},	{"Master's paradise", "3129"},	{"HotU chat", "3449"},	{"MS IPSec NAT-T", "4500"},	{"eDonkey", "4662"},	{"uPNP", "5000"},	{"SIP", "5060"},	{"SIP over TLS", "5061"},	{"AOL IM", "5190-5193"},	{"pcAnywhere", "5623"},	{"VNC reflector", "5999"},	{"VNC", "5900,5500,5800"},	{"Gnutella", "6346"},	{"Deep throat", "6670"},	{"Sub-7", "6711-6713,6776,16959"},	{"Gatecrasher", "6969"},	{"RealAudio", "6970"},	{"Sub-7 matrix chat", "7215"},	{"Unreal", "7777-7778"},	{"SHOUTcast", "8000"},	{"Teamspeak server", "8767"},	{"Webadmin", "10000"},	{"Cheeseworm", "10008"},	{"Netbus", "12345,12346"},	{"PowWow", "13223"},	{"Teamspeak server", "14534"},	{"Stacheldraht", "16660,60001,65000"},	{"Conducent", "17027"},	{"Kuang2", "17300"},	{"Useradmin", "20000"},	{"Netbus 2 pro", "20034"},	{"Acidkor", "20002"},	{"Girlfriend", "21544"},	{"Evilftp", "23456"},	{"Half-life", "27015"},	{"Backdoor-G or Sub-7", "27374"},	{"Quake", "27910-27961"},	{"Netsphere", "30100"},	{"Back orifice", "31337-31338"},	{"Hack'a'tack", "31789"},	{"Sun-RPC portmap", "32770-32900"},	{"Trinity v3", "33270"},	{"Traceroute", "33434-33600"},	{"Inoculan", "41508"},	{"Teamspeak network", "45647"},	{"Sockets de troi", "50505"},	{"Teamspeak query port", "51234"},	{"Sub-7 spy port", "54283"},	{"Back orifice 2K", "54320-54321"},};GtkListStore*services_get_model (void){	static GtkListStore *model = NULL;	gint num_services = sizeof (user_services) / sizeof (Service);	gint i;	if (model != NULL)		return model;	model = gtk_list_store_new (2,		G_TYPE_STRING, G_TYPE_STRING);	for (i = 0; i < num_services; i++) {		GtkTreeIter iter;		gtk_list_store_append (model, &iter);		gtk_list_store_set (model, &iter,			0, user_services[i].name,			1, user_services[i].ports,			-1);	}	return model;}static voidtable_append_services (GHashTable *table, const Service *services, gint num_services){	gint i;	for (i = 0; i < num_services; i++) {		gchar **tokens;		gint j;		tokens = g_strsplit_set (services[i].ports, ",", -1);		for (j = 0; tokens[j] != NULL; j++) {						if (g_strrstr (tokens[j], "-")) { /* Token is a port range */				gint start, end, port;				gchar **range;				range = g_strsplit_set (tokens[j], "-", 2);				start = atoi(range[0]);				end = atoi(range[1]);				for (port = start; port <= end; port++) {					g_hash_table_replace (table, GINT_TO_POINTER (port), services[i].name);				}				 g_strfreev (range);			} else { /* Token is a port number */				gint port = atoi (tokens[j]);				g_hash_table_insert (table, GINT_TO_POINTER (port), services[i].name);			}		}		g_strfreev (tokens);	}}/* [ service_get_name ] * Return the service/exploit used, based on the port and protocol given */gchar *service_get_name (gint port, gchar *proto){	static GHashTable *services_table = NULL;	gchar *name = NULL;	if (port == 0 || proto == NULL)		return (g_strdup (_("Unknown")));	/* Initialize services table */	if (services_table == NULL) {		gint elements;		services_table = g_hash_table_new (g_direct_hash, NULL);		elements = sizeof (user_services) / sizeof(Service);		table_append_services (services_table, user_services, elements);		elements = sizeof (misc_services) / sizeof(Service);		table_append_services (services_table, misc_services, elements);	}	name = (gchar *)g_hash_table_lookup (services_table, GINT_TO_POINTER (port));	if (!name) { /* The service was not in our table, revert to system's service list */		struct servent *ent;		gchar *lowercase_proto;				lowercase_proto =  g_ascii_strdown (proto, -1);		ent = getservbyport (htons (port), lowercase_proto);		g_free (lowercase_proto);		if (ent && ent->s_name != "") {			name = ent->s_name;			name[0] = toupper(name[0]);			/* Register the retrieved service with the table for future reference */			g_hash_table_insert (services_table, GINT_TO_POINTER (port), g_strdup(name));		}	}	if (name)		return g_strdup(name);	else		return (g_strdup (_("Unknown")));}gchar *service_get_icmp_name (gint type) {		if (type==0) return (g_strdup ("Echo reply"));	if (type==1 || type == 2) return (g_strdup ("Unassigned"));	if (type==3) return (g_strdup ("Dest. unreachable"));	if (type==4) return (g_strdup ("Source quench"));	if (type==5) return (g_strdup ("Redirect"));	if (type==6) return (g_strdup ("Alternate host address"));	if (type==7) return (g_strdup ("Unassigned"));	if (type==8) return (g_strdup ("Echo"));	if (type==9) return (g_strdup ("Router advertisement"));	if (type==10) return (g_strdup ("Router selection"));	if (type==11) return (g_strdup ("Time exceeded"));	if (type==12) return (g_strdup ("Parameter problem"));	if (type==13) return (g_strdup ("Timestamp"));	if (type==14) return (g_strdup ("Timestamp reply"));	if (type==15) return (g_strdup ("Information request"));	if (type==16) return (g_strdup ("Information reply"));	if (type==17) return (g_strdup ("Address mask request"));	if (type==18) return (g_strdup ("Address mask reply"));	if (type==19) return (g_strdup ("Reserved"));	if (type >= 20 && type <= 29) return (g_strdup ("Reserved"));	if (type==30) return (g_strdup ("Traceroute"));	if (type==31) return (g_strdup ("Datagram conversion error"));	if (type==32) return (g_strdup ("Mobile host redirect"));	if (type==33) return (g_strdup ("IPv6 where-are-you"));	if (type==34) return (g_strdup ("IPv6 I-am-here"));	if (type==35) return (g_strdup ("Mobile registration request"));	if (type==36) return (g_strdup ("mobile registration reply"));	if (type >= 37 && type <= 255) return (g_strdup ("Reserved"));		return (g_strdup (_("Unknown")));}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -