Поиск исходников

Chartbreaker

Ословед
Эта тема предназначена для поиска исходников, написанных на любом языке программирования или скриптинга.
 

Serge

Ословед
Ищутся любые примеры организации работы со сканерами штрих-кодов, можно на Delphi, C#
 

Serge

Ословед
Поиск каких-нибудь бесплатных 3D движков, примеры работы с ними на любых языках (кроме асма...)
 
B

Boss Artem

Ищу пример построения диаграммы на основе инфы из интербейза.
 

cz

Ословед
.... есть у кого-нибудь исходники алгоритмов шифрования (любых)?...
 

Serge

Ословед
Recipe 14.2 Encrypting/Decrypting a String
Problem
You have a string you want to be able to encrypt and decrypt—perhaps a password or software key—which will be stored in some form accessible by users, such as in a file, the registry, or even a field, that may be open to attack from malicious code.

Solution
Encrypting the string will prevent users from being able to read and decipher the information. The following class, CryptoString, contains two static methods to encrypt and decrypt a string and two static properties to retrieve the generated key and inititialization vector (IV—a random number used as a starting point to encrypt data) after encryption has occurred:

using System;
using System.Security.Cryptography;

public sealed class CryptoString
{
private CryptoString( ) {}

private static byte[] savedKey = null;
private static byte[] savedIV = null;

public static byte[] Key
{
get { return savedKey; }
set { savedKey = value; }
}

public static byte[] IV
{
get { return savedIV; }
set { savedIV = value; }
}

private static void RdGenerateSecretKey(RijndaelManaged rdProvider)
{
if (savedKey == null)
{
rdProvider.KeySize = 256;
rdProvider.GenerateKey( );
savedKey = rdProvider.Key;
}
}

private static void RdGenerateSecretInitVector(RijndaelManaged rdProvider)
{
if (savedIV == null)
{
rdProvider.GenerateIV( );
savedIV = rdProvider.IV;
}
}

public static string Encrypt(string originalStr)
{
// Encode data string to be stored in memory
byte[] originalStrAsBytes = Encoding.ASCII.GetBytes(originalStr);
byte[] originalBytes = {};

// Create MemoryStream to contain output
MemoryStream memStream = new MemoryStream(originalStrAsBytes.Length);

RijndaelManaged rijndael = new RijndaelManaged( );

// Generate and save secret key and init vector
RdGenerateSecretKey(rijndael);
RdGenerateSecretInitVector(rijndael);

if (savedKey == null || savedIV == null)
{
throw (new NullReferenceException(
"savedKey and savedIV must be non-null."));
}

// Create encryptor, and stream objects
ICryptoTransform rdTransform = rijndael.CreateEncryptor((byte[])savedKey.
Clone( ),(byte[])savedIV.Clone( ));
CryptoStream cryptoStream = new CryptoStream(memStream, rdTransform,
CryptoStreamMode.Write);

// Write encrypted data to the MemoryStream
cryptoStream.Write(originalStrAsBytes, 0, originalStrAsBytes.Length);
cryptoStream.FlushFinalBlock( );
originalBytes = memStream.ToArray( );

// Release all resources
memStream.Close( );
cryptoStream.Close( );
rdTransform.Dispose( );
rijndael.Clear( );

// Convert encrypted string
string encryptedStr = Convert.ToBase64String(originalBytes);
return (encryptedStr);
}

public static string Decrypt(string encryptedStr)
{
// Unconvert encrypted string
byte[] encryptedStrAsBytes = Convert.FromBase64String(encryptedStr);
byte[] initialText = new Byte[encryptedStrAsBytes.Length];

RijndaelManaged rijndael = new RijndaelManaged( );
MemoryStream memStream = new MemoryStream(encryptedStrAsBytes);

if (savedKey == null || savedIV == null)
{
throw (new NullReferenceException(
"savedKey and savedIV must be non-null."));
}

// Create decryptor, and stream objects
ICryptoTransform rdTransform = rijndael.CreateDecryptor((byte[])savedKey.
Clone( ),(byte[])savedIV.Clone( ));
CryptoStream cryptoStream = new CryptoStream(memStream, rdTransform,
CryptoStreamMode.Read);

// Read in decrypted string as a byte[]
cryptoStream.Read(initialText, 0, initialText.Length);

// Release all resources
memStream.Close( );
cryptoStream.Close( );
rdTransform.Dispose( );
rijndael.Clear( );

// Convert byte[] to string
string decryptedStr = Encoding.ASCII.GetString(initialText);
return (decryptedStr);
}
}
Discussion
The CryptoString class follows a singleton design pattern. This class contains only static members, except for the private instance constructor, which prevents anyone from directly creating an object from this class.

This class uses the Rijndael algorithm to encrypt and decrypt a string. This algorithm is found in the System.Security.Cryptography.RijndaelManaged class. This algorithm requires a secret key and an initialization vector; both are byte arrays. A random secret key can be generated for you by calling the GenerateKey method on the RijndaelManaged class. This method accepts no parameters and returns void. The generated key is placed in the Key property of the RijndaelManaged class. The GenerateIV method generates a random initialization vector and places this vector in the IV property of the RijndaelManaged class.

The byte array values in the Key and IV properties must be stored for later use and not modified. This is due to the nature of private-key encryption classes, such as RijndaelManaged. The Key and IV values must be used by both the encryption and decryption routines to successfully encrypt and decrypt data.

The SavedKey and SavedIV private static fields contain the secret key and initialization vector, respectively. The secret key is used by the encryption and decryption methods to encrypt and decrypt data. This key must be used by both the encryption and decryption methods in order to successfully encrypt and then decrypt the data. This is why there are public properties for these values, so they can be stored somewhere secure for later use. This means that any strings encrypted by this object must be decrypted by this object. The initialization vector is used to prevent anyone from attempting to decipher the secret key.

There are two methods in the CryptoString class, RdGenerateSecretKey and RdGenerateSecretInitVector, that are used to generate a secret key and initialization vector, when none exist. The RdGenerateSecretKey method generates the secret key, which is placed in the SavedKey field. Likewise, the RdGenerateSecretInitVector generates the initialization vector, which is placed in the SavedIV field. There is only one key and one IV generated for this class. This enables the encryption and decryption routines to have access to the same key and IV information at all times.

The Encrypt and Decrypt methods of the CryptoString class do the actual work of encrypting and decrypting a string, respectively. The Encrypt method accepts a string that you want to encrypt and returns an encrypted string. The following code calls this method and passes in a string to be encrypted:

string encryptedString = CryptoString.Encrypt("MyPassword");
Console.WriteLine("encryptedString: " + encryptedString);
// get the key and IV used so you can decrypt it later
byte [] key = CryptoString.Key;
byte [] IV = CryptoString.IV;
Once the string is encrypted, the key and IV are stored for later decryption. This method displays:

encryptedString: Ah4vkmVKpwMYRT97Q8cVgQ==
The following code sets the key and IV used to encrypt the string, then calls the Decrypt method to decrypt the previously encrypted string:

CryptoString.Key = key;
CryptoString.IV = IV;
string decryptedString = CryptoString.Decrypt(encryptedString);
Console.WriteLine("decryptedString: " + decryptedString);
This method displays:

decryptedString: MyPassword
There does not seem to be any problems with using escape sequences such as \r, \n, \r\n, or \t in the string to be encrypted. In addition, using a quoted string literal, with or without escaped characters, works without a problem:

@"MyPassword"
Recipe 14.3 Encrypting and Decrypting a File
Problem
You have sensitive information that must be encrypted before it is written to a file that might be in a nonsecure area. This information must also be decrypted before it is read back in to the application.

Solution
Use multiple cryptography providers and write the data to a file in encrypted format. This is accomplished in the following class, whose constructor expects an instance of the System.Security.Cryptography.SymmetricAlgorithm class and a path for the file. The SymmetricAlgorithm class is an abstract base class for all cryptographic providers in .NET, so we can be reasonably assured that this class could be extended to cover all of them. This example implements support for TripleDES and Rijndael. It could easily be extended for DES and RC2, which are also provided by the framework.

The following namespaces are needed for this solution:

using System;
using System.Text;
using System.IO;
using System.Security.Cryptography;
The class SecretFile can be used for TripleDES as shown:

// Use TripleDES
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider( );
SecretFile secretTDESFile = new SecretFile(tdes,"tdestext.secret");

string encrypt = "My TDES Secret Data!";

Console.WriteLine("Writing secret data: {0}",encrypt);
secretTDESFile.SaveSensitiveData(encrypt);
// save for storage to read file
byte [] key = secretTDESFile.Key;
byte [] IV = secretTDESFile.IV;

string decrypt = secretTDESFile.ReadSensitiveData( );
Console.WriteLine("Read secret data: {0}",decrypt);

// release resources
tdes.Clear( );
To use SecretFile with Rijndael, just substitute the provider in the constructor like this:

// Use Rijndael
RijndaelManaged rdProvider = new RijndaelManaged( );
SecretFile secretRDFile = new SecretFile(rdProvider,"rdtext.secret");

string encrypt = "My Rijndael Secret Data!";

Console.WriteLine("Writing secret data: {0}",encrypt);
secretRDFile.SaveSensitiveData(encrypt);
// save for storage to read file
byte [] key = secretRDFile.Key;
byte [] IV = secretRDFile.IV;

string decrypt = secretRDFile.ReadSensitiveData( );
Console.WriteLine("Read secret data: {0}",decrypt);

// release resources
rdProvider.Clear( );
Here is the implementation of SecretFile:

public class SecretFile
{
private byte[] savedKey = null;
private byte[] savedIV = null;
private SymmetricAlgorithm symmetricAlgorithm;
string path;

public byte[] Key
{
get { return savedKey; }
set { savedKey = value; }
}

public byte[] IV
{
get { return savedIV; }
set { savedIV = value; }
}

public SecretFile(SymmetricAlgorithm algorithm, string fileName)
{
symmetricAlgorithm = algorithm;
path = fileName;
}

public void SaveSensitiveData(string sensitiveData)
{
// Encode data string to be stored in encrypted file
byte[] encodedData = Encoding.Unicode.GetBytes(sensitiveData);

// Create FileStream and crypto service provider objects
FileStream fileStream = new FileStream(path,
FileMode.Create,
FileAccess.Write);

// Generate and save secret key and init vector
GenerateSecretKey( );
GenerateSecretInitVector( );

// Create crypto transform and stream objects
ICryptoTransform transform = symmetricAlgorithm.CreateEncryptor(savedKey,
savedIV);
CryptoStream cryptoStream =
new CryptoStream(fileStream, transform, CryptoStreamMode.Write);

// Write encrypted data to the file
cryptoStream.Write(encodedData, 0, encodedData.Length);

// Release all resources
cryptoStream.Close( );
transform.Dispose( );
fileStream.Close( );
}

public string ReadSensitiveData( )
{
// Create file stream to read encrypted file back
FileStream fileStream = new FileStream(path,
FileMode.Open,
FileAccess.Read);

//print out the contents of the encrypted file
BinaryReader binReader = new BinaryReader(fileStream);
Console.WriteLine("---------- Encrypted Data ---------");
int count = (Convert.ToInt32(binReader.BaseStream.Length));
byte [] bytes = binReader.ReadBytes(count);
char [] array = Encoding.Unicode.GetChars(bytes);
string encdata = new string(array);
Console.WriteLine(encdata);
Console.WriteLine("---------- Encrypted Data ---------\r\n");

// reset the file stream
fileStream.Seek(0,SeekOrigin.Begin);

// Create Decryptor
ICryptoTransform transform = symmetricAlgorithm.CreateDecryptor(savedKey,
savedIV);
CryptoStream cryptoStream = new CryptoStream(fileStream,
transform,
CryptoStreamMode.Read);

//print out the contents of the decrypted file
StreamReader srDecrypted = new StreamReader(cryptoStream,
new UnicodeEncoding( ));
Console.WriteLine("---------- Decrypted Data ---------");
string decrypted = srDecrypted.ReadToEnd( );
Console.WriteLine(decrypted);
Console.WriteLine("---------- Decrypted Data ---------");

// Release all resources
binReader.Close( );
srDecrypted.Close( );
cryptoStream.Close( );
transform.Dispose( );
fileStream.Close( );
return decrypted;
}

private void GenerateSecretKey( )
{
if(null != (symmetricAlgorithm as TripleDESCryptoServiceProvider))
{
TripleDESCryptoServiceProvider tdes;
tdes = symmetricAlgorithm as TripleDESCryptoServiceProvider;
tdes.KeySize = 192; // Maximum key size
tdes.GenerateKey( );
savedKey = tdes.Key;
}
else if(null != (symmetricAlgorithm as RijndaelManaged))
{
RijndaelManaged rdProvider;
rdProvider = symmetricAlgorithm as RijndaelManaged;
rdProvider.KeySize = 256; // Maximum key size
rdProvider.GenerateKey( );
savedKey = rdProvider.Key;
}
}

private void GenerateSecretInitVector( )
{
if(null != (symmetricAlgorithm as TripleDESCryptoServiceProvider))
{
TripleDESCryptoServiceProvider tdes;
tdes = symmetricAlgorithm as TripleDESCryptoServiceProvider;
tdes.GenerateIV( );
savedIV = tdes.IV;
}
else if(null != (symmetricAlgorithm as RijndaelManaged))
{
RijndaelManaged rdProvider;
rdProvider = symmetricAlgorithm as RijndaelManaged;
rdProvider.GenerateIV( );
savedIV = rdProvider.IV;
}
}
}
If the SaveSensitiveData method is used to save the following text to a file:

This is a test
This is sensitive data!
the ReadSensitiveData method will display the following information from this same file:

---------- Encrypted Data ---------
????????????????????????????????????????
---------- Encrypted Data ---------

---------- Decrypted Data ---------
This is a test
This is sensitive data!
---------- Decrypted Data ---------
Discussion
Encrypting data is essential to many applications, especially ones that store information in easily accessible locations. Once data is encrypted, a decryption scheme is required to restore the data back to an unencrypted form without losing any information. The same underlying algorithms can be used to authenticate the source of a file or message.

The encryption schemes used in this recipe are TripleDES and Rijndael. The reason for using Triple DES are:

TripleDES employs symmetric encryption, meaning that a single private key is used to encrypt and decrypt data. This process allows much faster encryption and decryption, especially as the streams of data become larger.

TripleDES encryption is much harder to crack than the older DES encryption.

If you wish to use another type of encryption, this recipe can be easily converted using any provider derived from the SymmetricAlgorithm class.

The main drawback to TripleDES is that both the sender and receiver must use the same key and Initialization Vector (IV) in order to encrypt and decrypt the data successfully. If you wish to have an even more secure encryption scheme, use the Rijndael scheme. This type of encryption scheme is highly regarded as a solid encryption scheme, since it is fast and can use larger key sizes than TripleDES. However, it is still a symmetric cryptosystem, which means that it relies on shared secrets. Use an asymmetric cryptosystem, such as RSA or DSA, for a cryptosystem that uses shared public keys with private keys that are never shared between parties.
.
 
B

Boss Artem

Ищу исходники сниффера на делфи, желательно умеющего спуффить.
P.S. Чисто в образовательных целях, вы не подумайте чего =).
 
ищу алгоритм нелинейного (возможно экспоненциального) генератора случайных чисел. то есть генератора для чисел от 0 до n, в котором вероятность выпадения двух любых чисел из диапазона от 0 до n не равна друг другу.
 
S

Serg153

на любом генераторе случайных чисел - сгенерировать для чисел от 0 до n - вероятности выпадения от 0 до 1 - и выбрать из чисел 2 числа с максимальными или мини-макс вероятностями.....
 
не понял :) можно подробнее?

как я себе вижу, нелинейный генератор можно реализовать в виде двух этапов: на первом - генерируется число от 1 до n, на втором - это число подставляется в формулу экспоненты через коэффициенты таким образом, чтобы на выходе было число от 1 до 100 (при этом из-за формы кривой экспоненты вероятность выпадания числа 100 будет меньше вероятности выпадания числа 99 и много меньше вероятности выпадания чисел на промежутке от 1 до 10)
 

Jezebel

Ословед
ищу исходники програмы SMS sender , вроде даже была тема развита на эту тему
 

Chartbreaker

Ословед
Nex написал(а):
Ищу исходники любой браузерной игры
Я не совсем понял, что тебе нужно. Вот тебе исходник "любой браузерной игры":
Код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0033)http://srg.pp.ru/diff/escapar.htm -->
<HTML><HEAD><TITLE>Убеги!</TITLE>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<SCRIPT language=JavaScript type=text/javascript>

isNS4 = (document.layers) ? true : false;
isIE4 = (document.all && !document.getElementById) ? true : false;
isIE5 = (document.all && document.getElementById) ? true : false;
isNS6 = (!document.all && document.getElementById) ? true : false;

var curX, curY, curX2, curY2, boxX, boxY, moving=0, touch=0;
var gametime=0, started=0, speed;
var starttime, endtime, finaltime=0; //pass finaltime to popup window to ask for initials
var enemyxdir = new Array(1,1,1,1);
var enemyydir = new Array(1,1,1,1);

if (isNS4 || isNS6){
document.captureEvents(Event.MOUSEUP|Event.MOUSEDOWN|Event.MOUSEMOVE);
}
document.onmousedown = start;
document.onmousemove = checkLocation;
document.onmouseup = stop;

function startclock() {var today = new Date(); starttime = today.getTime();}
function endclock() {var today = new Date(); endtime = today.getTime();}
function calctime() {var time = (endtime - starttime - 0)/1000;    return time;}

function giveposX(divname) {
    if (isNS4) var posLeft = document.layers[divname].left;
    else if (isIE4 || isIE5) var posLeft = document.all(divname).style.pixelLeft;
    else if (isNS6) var posLeft = parseInt(document.getElementById(divname).style.left + "");
    return posLeft;
}

function giveposY(divname) {
    if (isNS4) var posTop = document.layers[divname].top;
    else if (isIE4 || isIE5) var posTop = document.all(divname).style.pixelTop;
    else if (isNS6) var posTop = parseInt(document.getElementById(divname).style.top + "");
    return posTop;
}

function setposX(divname, xpos) {
    if (isNS4) document.layers[divname].left = xpos;
    else if (isIE4 || isIE5) document.all(divname).style.pixelLeft = xpos;
    else if (isNS6) document.getElementById(divname).style.left = xpos;
}

function setposY(divname, ypos) {
    if (isNS4) document.layers[divname].top = ypos;
    else if (isIE4 || isIE5) document.all(divname).style.pixelTop = ypos;
    else if (isNS6) document.getElementById(divname).style.top = ypos;
}

function givesize(divname, dimension) {
    var divsize = 0;
        if (dimension == 'y') {
            if (isNS4) divsize = document.layers[divname].clip.height;
            else if (isIE4 || isIE5) divsize = document.all(divname).style.pixelHeight;
            else if (isNS6) divsize = parseInt(document.getElementById(divname).style.height + "");
        }
        else if (dimension == 'x') {
            if (isNS4) divsize = document.layers[divname].clip.width;
            else if (isIE4 || isIE5) divsize = document.all(divname).style.pixelWidth;
            else if (isNS6) divsize = parseInt(document.getElementById(divname).style.width + "");
        }

    return divsize;
}

// check to see if 'box' is touching 'enemy1'    
function checktouching(num) {
    
    var enemy = "enemy" + num + ""
    var difX = giveposX('box') - giveposX(enemy) - 0; // -0 converts to integer
    var difY = giveposY('box') - giveposY(enemy) - 0;
    
    // set touch = 1 if it is touching an enemy
    if (difX > (-1 * givesize('box', 'x')) && difX < givesize(enemy, 'x') && difY > (-1 * givesize('box', 'y')) && difY < givesize(enemy, 'y')) {
        touch = 1;
    }
    else touch = 0;

}

function movenemy(num,step_x,step_y){

    var enemy = "enemy" + num + ""
    var enemyx = givesize(enemy, 'x');
    var enemyy = givesize(enemy, 'y');

    if (giveposX(enemy) >= (450 - enemyx) || giveposX(enemy) <= 0) {
        enemyxdir[num] = -1 * enemyxdir[num];
        }
    if (giveposY(enemy) >= (450 - enemyy) || giveposY(enemy) <= 0) {
        enemyydir[num] = -1 * enemyydir[num];
        }

    var newposx = giveposX(enemy) + (step_x*enemyxdir[num]) + 0;
    var newposy = giveposY(enemy) + (step_y*enemyydir[num]) + 0;
    
    setposX(enemy, newposx);
    setposY(enemy, newposy);

    checktouching(num + "");
    if (touch == 1) {
        stop(); reset();
        }
}

function movenemies() {

    gametime = gametime + 1
    
    if (gametime >= 0 && gametime < 100) speed = 80;
    else if (gametime >= 100 &&  gametime < 200) speed = 60;
    else if (gametime >= 200 &&  gametime < 300) speed = 40;
    else if (gametime >= 300 &&  gametime < 400) speed = 30;
    else if (gametime >= 400 &&  gametime < 500) speed = 20;
    else speed = 10;
    // window.status = "speed:  " + speed + "   gametime: " + gametime;
    
    movenemy(0,-10,12);
    movenemy(1,-12,-20);
    movenemy(2,15,-13);
    movenemy(3,17,11);
    
    setTimeout(movenemies,speed);
}

function start(e) { 

    if (started == 0) {    movenemies();     startclock();     started = 1;    }
        
    curX = (isNS4 || isNS6) ? e.pageX : window.event.x ;
    curY = (isNS4 || isNS6) ? e.pageY : window.event.y ;
        
    curX2 = eval(curX - 40);
    curY2 = eval(curY - 40);
        
    boxX = eval(curX - 20);
    boxY = eval(curY - 20);    
        
    var boxleft = giveposX('box');
    var boxtop = giveposY('box');
                
    if (curX > boxleft && curX2 < boxleft && curY > boxtop && curY2 < boxtop) {
        
        moving = 1;
        setposX('box', boxX);
        setposY('box', boxY);

        if (isNS4 || isNS6){
        document.captureEvents(Event.MOUSEMOVE);
        }
    }
}

function stop(e){
    moving=0;
    if (isNS4 || isNS6){
    document.releaseEvents(Event.MOUSEMOVE);
    }
}

function reset(e){
    endclock();
    moving=0;
    if (isNS4 || isNS6){
        document.releaseEvents(Event.MOUSEMOVE);
        }
    if (finaltime == 0) {
        finaltime = calctime();
        window.alert('Ты продержался ' + finaltime + ' секунд!'); 
//        var entername = window.confirm('Enter your name?');
//            if (entername) {
//            window.open("?" + finaltime,'winwin','width=300,height=500,left=40,top=40,status=1,resizable');
//            document.location.reload();
//            }
//            else document.location.reload();
            document.location.reload();
        }
}

function checkLocation(e){
        
        curX = (isNS4 || isNS6) ? e.pageX : window.event.x ;
        curY = (isNS4 || isNS6) ? e.pageY : window.event.y ;        
        
        boxX = eval(curX - 20);
        boxY = eval(curY - 20);    
    
    checktouching('1');

    if (moving == 1 && touch == 0){
    
            setposX('box',boxX);
            setposY('box',boxY);
            
            if (curY > 69 && curX > 69 && curY < 381 && curX < 381) return false;
            else stop(); reset();
    }
    
    else if (touch == 1){
    stop(); reset();
    }

}

</SCRIPT>

<META content="MSHTML 6.00.2745.2800" name=GENERATOR></HEAD>
<BODY text=#000000 bgColor=#ffffff leftMargin=0 topMargin=0 marginwidth="0" 
marginheight="0">
<DIV id=box 
style="LEFT: 205px; WIDTH: 40px; POSITION: absolute; TOP: 205px; HEIGHT: 40px; BACKGROUND-COLOR: #990000; layer-background-color: #990000">
<TABLE height=40 width=40>
  <TBODY>
  <TR>
    <TD>&nbsp;</TD></TD></TR></TBODY></TABLE></DIV>
<DIV id=enemy0 
style="LEFT: 270px; WIDTH: 60px; POSITION: absolute; TOP: 60px; HEIGHT: 50px; BACKGROUND-COLOR: #000099; layer-background-color: #000099">
<TABLE height=50 width=60>
  <TBODY>
  <TR>
    <TD>&nbsp;</TD></TR></TBODY></TABLE></DIV>
<DIV id=enemy1 
style="LEFT: 300px; WIDTH: 100px; POSITION: absolute; TOP: 330px; HEIGHT: 20px; BACKGROUND-COLOR: #000099; layer-background-color: #000099">
<TABLE height=20 width=100>
  <TBODY>
  <TR>
    <TD>&nbsp;</TD></TR></TBODY></TABLE></DIV>
<DIV id=enemy2 
style="LEFT: 70px; WIDTH: 30px; POSITION: absolute; TOP: 320px; HEIGHT: 60px; BACKGROUND-COLOR: #000099; layer-background-color: #000099">
<TABLE height=60 width=30>
  <TBODY>
  <TR>
    <TD>&nbsp;</TD></TR></TBODY></TABLE></DIV>
<DIV id=enemy3 
style="LEFT: 70px; WIDTH: 60px; POSITION: absolute; TOP: 70px; HEIGHT: 60px; BACKGROUND-COLOR: #000099; layer-background-color: #000099">
<TABLE height=60 width=60>
  <TBODY>
  <TR>
    <TD>&nbsp;</TD></TR></TBODY></TABLE></DIV>
<TABLE cellSpacing=0 cellPadding=0 border=0><!-- row 1 -->
  <TBODY>
  <TR>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD></TR><!-- row 2 -->
  <TR>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD></TR><!-- row 3 -->
  <TR>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD></TR><!-- row 4 -->
  <TR>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD></TR><!-- row 5 -->
  <TR>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD></TR><!-- row 6 -->
  <TR>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD></TR><!-- row 7 -->
  <TR>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD></TR><!-- row 8 -->
  <TR>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD></TR><!-- row 9 -->
  <TR>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD>
    <TD width=50 bgColor=#000000 height=50>
      <TABLE>
        <TBODY>
        <TR>
          <TD></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>Схвати левой кнопкой 
красный квадрат и перемещей его <BR>столько сколько сможешь, не касаясь синих 
фигур <BR>и краев поля. <BR>Продержишья более 20 секунд - считай себя феноменом! 

<P></P>
<CENTER><BR>
<P align=center><SMALL><EM>Автор: Не известен<BR><BR>Прислал(а): Andrei Koulikov 
21 апреля 2004 г. 12:03</EM></SMALL></P>
<P align=center><FONT face=Tahoma color=#000000 
size=2><BR><BR><BR></FONT></P></CENTER></BODY></HTML>
:)
 
Да, я плохо выразился, я ищу что-то наподобе браузерных текстовых рпг, коих полно в инете. Желательно квест какой-нить. Только вот исходники я нигде найти немагу
 

cz

Ословед
кроче есть книга "Delphi глазами хакера", и есть диск с исходниками к этой книге..мож у кого завалялось?
 
Сверху