Número de série físico do HD... :: Solução :: !
Acredito, ter conseguido um código definitivo para leitura do número de série físico do HD... apenas, não tenho certeza se funcionará em todos os discos, pois pelo que pude perceber ele opera com comandos S.M.A.R.T e os discos mais antigos não suportam esta funcionalidade... é necessário verificar ainda se mesmo o disco suportando, se o desligamento dessa ´feature´ no setup da placa-mãe não afeta a leitura...
Quem se interessar em testar...
// Extracting IDE(ATA) disk serial number.
// (c) 2000-2003 Alex Konshin
// mailto:akonshin@earthlink.net
// http://home.earthlink.net/~akonshin/index.htm
//
// 30 Jul 2000 created
// 22 Oct 2003 refactoring
unit IdeSN;
interface
//-------------------------------------------------------------
// Tries to extract the serial number from the first IDE disk that is found in the system.
// Returns an empty string if IDE disk is not found.
function GetIdeSN : String;
//-------------------------------------------------------------
// Tries to extract the serial number from specified IDE disk.
//
// Parameters:
// ControllerNumber - SCSI port number of the controller.
// DriveNumber - Device index (0..4).
//
// Raises OSError exception in case of any error during this operation.
//
// Notes:
// 1. The parameter ControllerNumber is ignored on Windows 9x/ME platforms and should be 0.
// 2. This function CAN NOT extract SCSI disk serial number.
//
function GetIdeDiskSerialNumber( ControllerNumber, DriveNumber : Integer ) : String;
//=============================================================
implementation
uses
Windows,
SysUtils; // only for Win32Platform, SysErrorMessage and class Exception
{$IFDEF VER150}
{$DEFINE VER140}
{$ENDIF}
{$IFNDEF VER140}
procedure RaiseLastOSError;
begin
RaiseLastWin32Error;
end;
{$ENDIF}
//-------------------------------------------------------------
// Tries to extract the serial number from specified IDE disk.
//
// Parameters:
// ControllerNumber - SCSI port number of the controller.
// DriveNumber - SCSI port number of the controller.
// Notes:
// 1. The parameter ControllerNumber is ignored on Windows 9x/ME platforms and should be 0.
// 2. This function CAN NOT extract SCSI disk serial number.
//
function GetIdeDiskSerialNumber( ControllerNumber, DriveNumber : Integer ) : String;
type
TSrbIoControl = packed record
HeaderLength : ULONG;
Signature : Array[0..7] of Char;
Timeout : ULONG;
ControlCode : ULONG;
ReturnCode : ULONG;
Length : ULONG;
end;
SRB_IO_CONTROL = TSrbIoControl;
PSrbIoControl = ^TSrbIoControl;
TIDERegs = packed record
bFeaturesReg : Byte; // Used for specifying SMART "commands".
bSectorCountReg : Byte; // IDE sector count register
bSectorNumberReg : Byte; // IDE sector number register
bCylLowReg : Byte; // IDE low order cylinder value
bCylHighReg : Byte; // IDE high order cylinder value
bDriveHeadReg : Byte; // IDE drive/head register
bCommandReg : Byte; // Actual IDE command.
bReserved : Byte; // reserved for future use. Must be zero.
end;
IDEREGS = TIDERegs;
PIDERegs = ^TIDERegs;
TSendCmdInParams = packed record
cBufferSize : DWORD; // Buffer size in bytes
irDriveRegs : TIDERegs; // Structure with drive register values.
bDriveNumber : Byte; // Physical drive number to send command to (0,1,2,3).
bReserved : Array[0..2] of Byte; // Reserved for future expansion.
dwReserved : Array[0..3] of DWORD; // For future use.
bBuffer : Array[0..0] of Byte; // Input buffer.
end;
SENDCMDINPARAMS = TSendCmdInParams;
PSendCmdInParams = ^TSendCmdInParams;
TIdSector = packed record
wGenConfig : Word;
wNumCyls : Word;
wReserved : Word;
wNumHeads : Word;
wBytesPerTrack : Word;
wBytesPerSector : Word;
wSectorsPerTrack : Word;
wVendorUnique : Array[0..2] of Word;
sSerialNumber : Array[0..19] of Char;
wBufferType : Word;
wBufferSize : Word;
wECCSize : Word;
sFirmwareRev : Array[0..7] of Char;
sModelNumber : Array[0..39] of Char;
wMoreVendorUnique : Word;
wDoubleWordIO : Word;
wCapabilities : Word;
wReserved1 : Word;
wPIOTiming : Word;
wDMATiming : Word;
wBS : Word;
wNumCurrentCyls : Word;
wNumCurrentHeads : Word;
wNumCurrentSectorsPerTrack : Word;
ulCurrentSectorCapacity : ULONG;
wMultSectorStuff : Word;
ulTotalAddressableSectors : ULONG;
wSingleWordDMA : Word;
wMultiWordDMA : Word;
bReserved : Array[0..127] of Byte;
end;
PIdSector = ^TIdSector;
const
IDE_ID_FUNCTION = $EC;
IDENTIFY_BUFFER_SIZE = 512;
DFP_RECEIVE_DRIVE_DATA = $0007c088;
IOCTL_SCSI_MINIPORT = $0004d008;
IOCTL_SCSI_MINIPORT_IDENTIFY = $001b0501;
DataSize = sizeof(TSendCmdInParams)-1+IDENTIFY_BUFFER_SIZE;
BufferSize = SizeOf(SRB_IO_CONTROL)+DataSize;
W9xBufferSize = IDENTIFY_BUFFER_SIZE+16;
var
hDevice : THandle;
cbBytesReturned : DWORD;
s : String;
pInData : PSendCmdInParams;
pOutData : Pointer; // PSendCmdInParams;
Buffer : Array[0..BufferSize-1] of Byte;
srbControl : TSrbIoControl absolute Buffer;
procedure ChangeByteOrder( var Data; Size : Integer );
var ptr : PChar;
i : Integer;
c : Char;
begin
ptr := @Data;
for i := 0 to (Size shr 1)-1 do
begin
c := ptr^;
ptr^ := (ptr+1)^;
(ptr+1)^ := c;
Inc(ptr,2);
end;
end;
begin
Result := ´´;
FillChar(Buffer,BufferSize,#0);
if Win32Platform=VER_PLATFORM_WIN32_NT then
begin // Windows NT, Windows 2000
Str(ControllerNumber,s);
// Get SCSI port handle
hDevice := CreateFile(
PChar(´\\.\Scsi´+s+´:´),
GENERIC_READ or GENERIC_WRITE,
FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0 );
if hDevice=INVALID_HANDLE_VALUE then RaiseLastOSError;
try
srbControl.HeaderLength := SizeOf(SRB_IO_CONTROL);
System.Move(´SCSIDISK´,srbControl.Signature,8);
srbControl.Timeout := 2;
srbControl.Length := DataSize;
srbControl.ControlCode := IOCTL_SCSI_MINIPORT_IDENTIFY;
pInData := PSendCmdInParams(PChar(@Buffer)+SizeOf(SRB_IO_CONTROL));
pOutData := pInData;
with pInData^ do
begin
cBufferSize := IDENTIFY_BUFFER_SIZE;
bDriveNumber := DriveNumber;
with irDriveRegs do
begin
bFeaturesReg := 0;
bSectorCountReg := 1;
bSectorNumberReg := 1;
bCylLowReg := 0;
bCylHighReg := 0;
bDriveHeadReg := $A0 or ((DriveNumber and 1) shl 4);
bCommandReg := IDE_ID_FUNCTION;
end;
end;
if not DeviceIoControl( hDevice, IOCTL_SCSI_MINIPORT, @Buffer, BufferSize, @Buffer, BufferSize, cbBytesReturned, nil ) then RaiseLastOSError;
finally
CloseHandle(hDevice);
end;
end
else
begin // Windows 95 OSR2, Windows 98
hDevice := CreateFile( ´\\.\SMARTVSD´, 0, 0, nil, CREATE_NEW, 0, 0 );
if hDevice=INVALID_HANDLE_VALUE then RaiseLastOSError;
try
pInData := PSendCmdInParams(@Buffer);
pOutData := PChar(@pInData^.bBuffer);
with pInData^ do
begin
cBufferSize := IDENTIFY_BUFFER_SIZE;
bDriveNumber := DriveNumber;
with irDriveRegs do
begin
bFeaturesReg := 0;
bSectorCountReg := 1;
bSectorNumberReg := 1;
bCylLowReg := 0;
bCylHighReg := 0;
bDriveHeadReg := $A0 or ((DriveNumber and 1) shl 4);
bCommandReg := IDE_ID_FUNCTION;
end;
end;
if not DeviceIoControl( hDevice, DFP_RECEIVE_DRIVE_DATA, pInData, SizeOf(TSendCmdInParams)-1, pOutData, W9xBufferSize, cbBytesReturned, nil ) then RaiseLastOSError;
finally
CloseHandle(hDevice);
end;
end;
with PIdSector(PChar(pOutData)+16)^ do
begin
ChangeByteOrder(sSerialNumber,SizeOf(sSerialNumber));
SetString(Result,sSerialNumber,SizeOf(sSerialNumber));
end;
Result := Trim(Result);
end;
//-------------------------------------------------------------
function GetIdeSN : String;
var
iController, iDrive, maxController : Integer;
begin
Result := ´´;
maxController := 15;
if Win32Platform<>VER_PLATFORM_WIN32_NT then maxController := 0;
for iController := 0 to maxController do
begin
for iDrive := 0 to 4 do
begin
try
Result := GetIdeDiskSerialNumber(iController,iDrive);
if Result<>´´ then Exit;
except
// ignore exceptions
end;
end;
end;
end;
end.Exemplo de utilização :
procedure GetIDESerial; var S: String; begin S:= GetIdeSN; if S <> ´´ then edtSN.Text:= S; end;
Peço que postem os resultados dos testes e em qual equipamento (HD e Sistema Operacional)... eu já testei com Windows 95R2 / 98 / 98SE / 2000 e só consegui extrair o serial de HDs >= 4GB...
Espero ter ajudado.
T+
Vinicius
Vinicius2k
Respostas
Vinicius2k
10/05/2004
T+
Marco Salles
10/05/2004
Rodei e Beleza...Agradecemos a solidariedade de nosso amigo Vinicius.2K
por esta relevante contribuição...
Uso delphi 5.0 e Sistema Operacional :WINDOWS-XP
[b:5ecbba1c2a]So uma observação[/b:5ecbba1c2a]: Isto não ocorreu...Não sei se é porque , eu criei um a aplicação e Depois criei uma unit onde eu [b:5ecbba1c2a]colei[/b:5ecbba1c2a] os métodos sugeridos, e depois no form Principal eu Chamei os Métodos da Unit [b:5ecbba1c2a]UIdeSN[/b:5ecbba1c2a]......O resultado é que [b:5ecbba1c2a]Não houve exceção [/b:5ecbba1c2a] :?: :?: :?:
Vinicius2k
10/05/2004
Sobre a exceção, acredito que tenha alguma relação com as diretivas de compilação existentes no código e talvez com o conjunto Delphi + OS... o meu Delphi é o 7... mas ele só levanta a exceção com o debug ligado, no meu caso...
T+
Vinicius
Marco Salles
10/05/2004
[URL=http://www.imageshack.us][img:4217f5bf1c]http://img35.echo.cx/img35/808/imagemaplicativohd3pm.jpg[/img:4217f5bf1c][/URL]
Porém , gerei um executavel , e o Gravei no Disquete... Ao rodar o Aplicativo Via Disquete No Computador Do Cliente (Windows 98 Com HD >4.0G) eu não obtenho Numero Nenhum.. O Que sera que estou fazendo de errado :cry: :cry: :cry:
Gandalf.nho
10/05/2004
Marco Salles
10/05/2004
:wink: É o que eu Tb pensei a principio.. Vou voltar la e depois eu Post
Vinicius2k
10/05/2004
- O disco precisa ter suporte a S.M.A.R.T, mas ele não precisa estar habilitado no BIOS... basta que o suporte exista.
- Este código não é suportado Windows 95 (primeira versão). Só funciona em Windows 95 OSR2/98/98SE/Me/NT4/2000/XP.
- Windows 9x: SMARTVSD.VXD precisa estar instalado. É necessário copiá-lo da pasta C:\Windows\System para a pasta C:\Windows\System\IoSubsys e reiniciar a máquina.
:wink:
T+
Cabelo
10/05/2004
blz?
Cara testei aqui e blz.. rodou legal..
Rodei num micro com HD de 40 GB e um com 8 GB e nos dois ele leu perfeitamente..
Cabelo
10/05/2004
No meu micro tenho dois HD´s..
Quando tento ler o serial, trava o micro..
Estou no SO win98..
tem idéia do pq?
Vinicius2k
10/05/2004
Nunca testei este código em máquinas com mais de um disco físico (apenas com mais de uma partição), por isso não sei o que pode ser.
Vou tentar testar isto também, mas como vc disse que é Win 9X, vc observou a necessidade do SMARTVSD.VXD na \system\iosubsys ?
T+
Marco Salles
10/05/2004
Como saber isto :?: :?: :?: :?: :cry: :cry: :cry:
Cabelo:
Viniciu:
Esta nun entendi :?: :?: :?:
Christian_adriano
10/05/2004
Também tinha colocado algo parecido nesse tópico : [url]http://forum.devmedia.com.br/viewtopic.php?t=58960&highlight=scsisn&sid=5cd283bbe592f0cf221b136382f13541[/url]
Nesse post coloquei tb algo para pegar seriais de HD ´Scsi´ tb.
t+
Christian.
Marco Salles
10/05/2004
Do tópico
http://forum.devmedia.com.br/viewtopic.php?t=58960&highlight=scsisn&sid=5cd283bbe592f0cf221b136382f13541
[b:48160374a0]Ultima dica do Cristian....[/b:48160374a0]
Favor me comunicar...
[b:48160374a0]Não da para entender qual a função , que modifica o valor da variável Resultado [/b:48160374a0]:cry: :cry: :cry:
Desse modo , [b:48160374a0]PegarserialASCSI [/b:48160374a0]a gente so ta lendo o Valor Da VAriavel Resultado, que a principio e LIXO :?: :?: :?: :?:
:arrow: :arrow: Note que[b:48160374a0] Resultado [/b:48160374a0]não é um método , mas sim uma variável
Agora quanto a função [b:48160374a0]GetIdeSN[/b:48160374a0] Retornou o [b:48160374a0]mesmo valor [/b:48160374a0]que a função originau [b:48160374a0]GetIDESerial[/b:48160374a0] do [b:48160374a0]Vinicius[/b:48160374a0] :P :P :P :P :P Como era de se esperar :wink:
Christian_adriano
10/05/2004
procedure RetornarSerial; begin sDeviceName := ParamStr(1); if Trim(sDeviceName) = ´´ then begin Resultado := ´´; Exit; end; hDevice := GetDeviceHandle(sDeviceName); if hDevice=INVALID_HANDLE_VALUE then Resultado := ´´ //(´Error on GetDeviceHandle: ´ + SysErrorMessage(GetLastError)) else try sSerNum := ScsiHddSerialNumber(hDevice); if Trim(sSerNum) = ´´ then Resultado := ´´ //(´Error on DeviceIoControl: ´ + SysErrorMessage(GetLastError)) else Resultado := Trim(sSerNum); finally CloseHandle(hDevice); end; end;
Usar esse para pegar seriais de HD ´Scsi´ :
function RetornarSerial : String; begin sDeviceName := ParamStr(1); if Trim(sDeviceName) = ´´ then begin result := ´´; Exit; end; hDevice := GetDeviceHandle(sDeviceName); if hDevice=INVALID_HANDLE_VALUE then Result := ´´ //(´Error on GetDeviceHandle: ´ + SysErrorMessage(GetLastError)) else try sSerNum := ScsiHddSerialNumber(hDevice); if Trim(sSerNum) = ´´ then Result := ´´ //(´Error on DeviceIoControl: ´ + SysErrorMessage(GetLastError)) else Result := Trim(sSerNum); finally CloseHandle(hDevice); end; end;
´
É só vc alterar a forma de pegar o serial:
De:
[color=red:5f0c460cc4]procedure RetornarSerial;[/color:5f0c460cc4]
Para:
[color=red:5f0c460cc4]function RetornarSerial : String;[/color:5f0c460cc4]
implementei daquela forma conforme a minha necessidade.
t+
Christian.
Marco Salles
10/05/2004
I Mais , declarei a Função
type TScsiPassThrough = record Length : Word; ........... .......... end; Function RetornarSerial : String; var hDevice : THandle = 0; sSerNum, sDeviceName, Resultado : String;
:arrow: Para ela ser visto em outro formulário
Mas ao chamar a Função em outra Unit
procedure TForm1.Button1Click(Sender: TObject); begin Edit1.Text:=RetornarSerial; end;
Não obtenho nada no edit1.text :cry: :cry: :cry: :cry:
Dr. Interbase
10/05/2004
procedure TFrmDesbloqueador.BitBtn1Click(Sender: TObject);
begin
IF (SERIALNUM(´C´)=´84809C5B´) or (SERIALNUM(´D´)=´84809C5B´) Then
Showmessage(´numero ok´);
Else
showmessage(´Numero do hd não confere´);
End;
Function SerialNum(FDrive:String) :String;
Var
Serial:DWord;
DirLen,Flags: DWord;
DLabel : Array[0..11] of Char;
begin
Try
GetVolumeInformation(PChar(FDrive+´:\´),dLabel,12,@Serial,DirLen,Flags,nil,0);
Result := IntToHex(Serial,8);
Except
Result :=´´;
end;
end;
Vinicius2k
10/05/2004
Mas seu disco é SCSI ?
Vinicius2k
10/05/2004
Realmente utilizar a API GetVolumeInformation é muito mais simples, porém, é retornado o número de série do volume e não do disco.
O número de série de volume é alterado a cada formatação e também pode ser facilmente modificado por programas que realizam operações no disco.
Além disso é ´clonado´ juntamente com o clone de discos utilizados por muitas empresas como forma de backup.
T+
Marco Salles
10/05/2004
Como saber isto :cry: :cry: :cry: :cry:
Como vou saber isto tb :oops: :oops: :oops:
Vinicius2k
10/05/2004
1. Geralmente, discos com tamanho superior a 2.1 GB já tem suporte à S.M.A.R.T, mas não dá para garantir isso até 4.3 GB. Sendo discos maiores (6.4 GB em diante) ou mais novos, com certeza terão o suporte. Esta tecnologia existe em todos os discos há cerca de 9 anos.
2. Discos SCSI são discos de alta performance utilizados mais comumente em servidores. A única forma de saber se um disco é SCSI é analisando a própria máquina, seja visualmente ou através de algum software.
Quando utilizar funções de extração de serial, faça de várias formas diferentes como contingência.
Por exemplo: caso a primeira função não retorne, passe para a segunda, se a segunda não retornar, passe para a terceira e assim por diante, até que chegue ao ponto em que vc precisa utilizar o serial do volume através da API GetVolumeInformation (que nunca falha), já que as demais tentativas de extração do serial não foram bem sucedidas.
T+
Cabelo
10/05/2004
Tem suporte sim.. S.M.A.R.T.
o problema está quando uso em um micro com dois HD´s, parece que a função se perde.. outro problema..
Não consigo debugar.. vc conseguiu?
Vinicius2k
10/05/2004
Eu ainda não consegui testar em máquinas com mais de um disco...
Sobre o debug, não consegui... até mencionei isto no post original e ainda não sei a causa do problema.
T+
Cabelo
10/05/2004
Vou tentar aqui e se conseguir dou um toque..
Valeu pela dica desta rotina.. é exatamente como deve funcionar..
Um abraço.
Marco Salles
10/05/2004
Aqui voce mencionou [color=darkred:73caa7b8a5][b:73caa7b8a5]quatro formas [/b:73caa7b8a5][/color:73caa7b8a5], sendo tres de extração do numero Serial Fisico e Uma Forma de Extração de Volume.
Mas quais seriam estas tres formas de extração de Serial :?: :?:
:wink: , se para conseguir [b:73caa7b8a5]uma função [/b:73caa7b8a5], foi uma luta :lol: (Ate voce aparecer com esta dica)
Mesmo que eu considere [b:73caa7b8a5]e Devo Considerar a Função [/b:73caa7b8a5]do Cristian so Tem Duas Formas :arrow: :arrow: Voce por acaso conhece uma terceira :?: :?:
Vinicius2k
10/05/2004
Foi só uma ilustração...
Não precisa necessariamente existir 3 formas... só quis dizer que vc não deve ficar preso à apenas uma.
T+
Edilcimar
10/05/2004
http://www.activedelphi.com.br/modules.php?op=modload&name=News&file=article&sid=214&mode=thread&order=0&thold=0
Marco Salles
10/05/2004
:?: :?: [b:570a6d987c]GetIdeDiskSerialNumber[/b:570a6d987c] não é a[b:570a6d987c][color=darkred:570a6d987c] mesma coisa [/color:570a6d987c][/b:570a6d987c]que o Vinicius Indicou em sua promeira apresentação , Neste Tópico...
Edilcimar
10/05/2004
Vinicius2k
10/05/2004
[b:2419127151]GetIdeDiskSerialNumber[/b:2419127151] não é a[b:2419127151][color=darkred:2419127151] mesma coisa [/color:2419127151][/b:2419127151]que o Vinicius Indicou em sua promeira apresentação , Neste Tópico...[/quote:2419127151]
Sim. Com algumas modificações, que por sinal fizeram o código apresentado lá não funcionar muito bem, segundo o próprio colega que postou.
Algum dos colegas já testou o código que propus em discos SATA ? Eu ainda não, mas tenho a impressão que não irá funcionar...
T+
Edilcimar
10/05/2004
Edilcimar
10/05/2004
Vinicius2k
10/05/2004
Bem que eu já venho buscando uma outra solução baseada em WMI, mas estou ´apanhando´...
Obrigado pelo teste Edilcimar ! :wink:
Alves
10/05/2004
Tava testanto essa função e percebi que ela nao funcionaou no Windows ME 4.90.300 Full. Simplesmente me retorna em branco. Ja no Windows ME atualizado em cima do 98se funciona legal... é isso ai
abraço a todos
Marco Salles
10/05/2004
Mas qual função .. Foram Várias aqui apresentadas
Vinicius2k, cristian, Edicilmar ...
Voce testou todas :?: :?: :?:
Alves
10/05/2004
[quote:4115f94f97=´Marco Salles´]Citação do Alves:
Mas qual função .. Foram Várias aqui apresentadas
Vinicius2k, cristian, Edicilmar ...
Voce testou todas :?: :?: :?:[/quote:4115f94f97]
Marco Salles
10/05/2004
Citacção de Vinicius2.k
Então alves , tente com as outras Funções , para ver se a gente consegue chega nun entedimento , pois afinal esta questão é antiga e de dificil solução...Precisamos de um maior número de OPiniões e testes
Citação de Vinicius:
Vinicius2k
10/05/2004
- Das duas do Christian, a destinada a discos IDE é igual a que postei, mas a destinada a SCSI eu não testei (não é fácil encontrar discos SCSI ´de bobeira´ para testar).
- A indicada pelo Edilcimar é igual à que postei, porém um pouco modificada e *acho* que devido à essa modificação, tem um bug no retorno.
Até hoje, o único código ´puro´ capaz de extrair o serial do disco IDE que encontrei foi o que postei inicialmente.
Existe um código com o auxílio de uma DLL que testei e funciona 100¬ (não testei com SCSI). A DLL e alguns exemplos de código para utilizá-la em várias linguagens podem ser baixados em: http://www.caishen168.com/DiskSerial/DiskSerial/DiskSerial.zip
Esta DLL utiliza um mecanismo de leitura do disco que *deve* ser igual ao que postei inicialmente, porém ela embute em seus resources o SMARTVSD.VXD dispensando o procedimento de cópia necessário no Win9X.
Eu não testei o código em Windows ME, mas *talvez* ele necessite do mesmo procedimento de cópia do SMARTVSD.VXD requerido pelo Win9X.
T+
Alves
10/05/2004
Eu não testei o código em Windows ME, mas *talvez* ele necessite do mesmo procedimento de cópia do SMARTVSD.VXD requerido pelo Win9X.
T+[/quote:f6da75f244]
Vinicius2k
10/05/2004
http://forum.clubedelphi.net/viewtopic.php?p=220519#220519
Quanto mais testes, melhor para todos. ;)
N_informatica
10/05/2004
Se alguem tiver alguma coisa ai agradeço.
N_informatica
10/05/2004
Perguto então tem algem utilizando esse código com sucesso?
O que preciso alterar para funcionar com WinXP sp3 e em HD SATA?
Obrigado.
Paullsoftware
10/05/2004
eu passei a usar o componente mxPortect
Missterpe
10/05/2004
Oi! Eu tenho ótimas notícias que devem demorar uns três minutos para ler. Você alguma vez pensou ´Como eu posso faturar alto em pouco tempo???´, ou esteve devendo muita grana, pronto a realizar qualquer coisa para conseguir pagar suas contas? Então, leia este texto realmente interessante, um verdadeiro achado . Eu estava lendo umas mensagens na rede quando eu vi um artigo que começava dizendo CONSIGA GRANA FÁCIL!! Eu pensei... ´Aqui na Internet?? Que tipo de esquema de grana fácil poderia haver na Internet? Eu tenho que ver´. O artigo descrevia um modo que dizia MANDE DOIS REAIS PARA APENAS SEIS PESSOAS E FAÇA R$ 25.000 EM DINHEIRO VIVO EM APENAS 4 SEMANAS! Bem, quanto mais eu pensava nisso, mais eu ficava curiosa. Por quê? Por causa do modo de funcionamento desse sistema e porque SÓ IRIA ME CUSTAR DOZE REAIS E ISSO SERIA TUDO A PAGAR... PRA SEMPRE!!! Tudo bem, os R$ 25.000 em grana poderiam ser uma grana dificílima de alcançar, mas eram possíveis. Pode parecer mais uma daquelas falsas notícias que você vê por aí, mas, por favor, LEIA ESTE TEXTO COM ATENÇÃO para entender é muito fácil, simples e o melhor... Funciona!!! REALMENTE VALE A PENA!!! COMPROVADO PELA REVISTA EXAME... ISTO PODE MUDAR SUA VIDA!!! Você deve seguir as instruções e mandar este artigo para todos os lugares que você puder e imaginar! O quanto você mandar vai determinar a quantidade de dinheiro que VOCÊ irá GANHAR!! É simplesmente m
Depoimento: ´Ora, é só uma brincadeira: eu dou 2 reais para 6 pessoas e mando uns 100 E-mails só para ver no que vai dar´ pensei comigo quando resolvi entrar. Foi a brincadeira mais lucrativa que eu participei (tomei um banho de Shopping com o dinheiro que ganhei). Ana Paula Resende - Volta Redonda - Rio de Janeiro ´Bem eu já conhecia este programa por cartas, o investimento era maior (torno de 200,00 R$, cartas envelopes e xerox), mesmo assim mandei, tive um retorno modesto, torno de 2000,00 R$, esse de E-mail, lógico que vou tentar.´ Anderson - Anápolis - Goiás
**************LISTA DOS NOMES*****************
01- J.M.R.C. BANCO BRASIL AGÊNCIA 2360-4 CONT. POUPANÇA OURO 9693-8 VAR. 01 DEMAISJ@hotmail.com
02- Marcus V. S. Correa BANCO BRASIL AGÊNCIA 4592-6 CC: 7636-8 mvscorrea83@hotmail.com
03- Marcelo D. Brandão BANCO SANTANDER AGÊNCIA 2175 CC: 01-021985-3 olecramxp@hotmail.com´
04- CIBELI CASTRO DE FREITAS - Banco do Brasil, Ag. 0045-0, Poupança 31.830-2, Variação 01,cibelifreitas@hotmail.com
05- Mirian F. Draghi Lobo - Banco do Brasil - ag. 0427-8 conta poupança 141517-4 - variação 1
mdraghi40@hotmail.com
06-C.M.M.BANCO DO BRASIL AGÊNCIA 0363-8 CONTA POUPANÇA
13933-5 missterpe@gmail.com
´MUITO OBRIGADO POR LER ESTE TEXTO E ESPERO QUE PARTICIPE´
OBS: Ver Parecer Jurídico
Art. 2º, IX da Lei nº 1.521/51.
1) CRIME CONTRA A ECONOMIA POPULAR -´Pirâmide da fortuna´ - Necessidade da ciência da fraude do jogo - Inconfiguração - Inteligência: art. 2º, IX da Lei nº 1.521/51 109 - O simples envolvimento dos acusados com a chamada ´pirâmide da fortuna´ não se mostra apto à caracterização do crime contra a economia popular capitulado no art. 2º, IX da Lei nº 1.521/51, sendo necessário que os agentes tenham ciência da fraude do jogo, pois, para que alguém seja apenado por crimes contra a economia popular é preciso que o ato lhe possa ser imputado por dolo ou culpa e não somente por conexão física entre a ação ou omissão e o resultado.
(Recurso de Ofício nº 627.241/1, Julgado em 17/10/1. 990, 6ª Câmara, Relator: - Rubens Gonçalves, RJDTACRIM 9/215 no site: http://www.tacrim.sp.gov.br/jurisprudencia...l/volume9.html) Aconselho que todos visitem esse site e confiram. É necessário, como diz acima, que haja ´fraude no jogo´, para haver crime. Se todo o esclarecimento de probabilidades está claro, como em seu e-mail, não há fraude, portanto, não há crime.
2) Vejamos se poderia ser estelionato.
Diz o Código Penal, Art. 171:
´Obter, para si ou para outrem, vantagem ilícita, em prejuízo alheio, induzindo ou mantendo alguém em erro, mediante artifício, ardil, ou qualquer outro meio fraudulento´ - Não há muito que se dizer aqui. Onde está o ´meio fraudulento´ de seu e-mail? Não o vejo, pois tudo está explicado claramente. Onde está a ilicitude da vantagem? (visto que é uma cooperação acumulativa) Não a vejo. Onde está o prejuízo alheio? Não há, pois foi explicado que quem enviar poucos e-mails não terá retorno, e só poderá culpar a seu próprio desleixo. Nenhum dos elementos normativos, objetivos ou subjetivos do estelionato se enquadra em seu e-mail. Logo, não é estelionato.
3) Vejamos se seria ´enriquecimento sem causa´.
- Todo ganho tem de ter uma causa, se não, a lei veda. No entanto, existe o instituto da ´doação´, que permite que cada um doe os R$ 12,00 de sua livre vontade, sem ser coagido a nada. Seria uma ´taxa´ para participar do programa de cooperação. Eis a causa. Também, para que uma pessoa ganhe muito dinheiro, os demais também estarão ganhando, já que os depósitos de 12 reais são feitos
Missterpe
10/05/2004
Carlosrm
10/05/2004
Aproveitando a idéia genial (simples e eficaz) da colega missterpe (pirâmide), gastei os últimos 15 minutos para desenvolver um programa que envia e-mails para todo e qualquer computador do mundo, estando logado na rede ou não, funcionando ou quebrado, em qualquer país e sistema de governo, com qualquer tipo de sistema de segurança.
No conteúdo do e-mail é reproduzido o conteúdo do citado e-mail. Por questões de segurança, a conta bancária aonde serão depositados os milionários valores deverá ser preenchida manualmente por você. A tela do sistema é super simples e muito fácil de usar: se você é capaz de entender esse texto, também é capaz de dominar todos os segredos deste programa que vai fazer você a pessoa mais rica e feliz do mundo!
Tem apenas um campo para informar em qual conta bancária quer receber a fortuna e apenas dois botões ([COMECE A GANHAR DINHEIRO] e [CHEGA DE GANHAR DINHEIRO}). Dica: escolha um banco que tenha cofres grandes.
E mais, enviando um e-mail agora, eu te envio a conta aonde você deve fazer o depósito (nas Ilhas Caiman, pois é lá que mora minha querida avozinha) e o programa que vai fazer sua independência financeira de uma vez por todas!!! Por apenas R$10,00 (DEZ REAIS) você pode ser a pessoa mais rica do mundo!!! Não espere mais: envie agora mesmo o seu pedido e você ainda recebe inteiramente grátis um folheto com as melhores opções para gastar dinheiro no mundo todo!!!
Enviando seu e-mail agora eu te explico (mas não ensino) como o meu infalível sistema acessa, traduz e envia e-mail para todas as contas telefônicas do mundo, todos os endereços cadastrados nas prefeituras e órgãos equivalentes e outros cadastros que contenham endereços não contemplados anteriormente. Importante, até quem não tem computador recebe e-mail, pois este inédito sistema transforma os e-mails em correspondência comum, quando o e-mail não é entregue.
LEIA COM ATENÇÃO: Nos casos em que a entrega é feita por corresponência, pode haver demora de até 2 dias, dependendo do local.
Invista seus últimos R$10,00 e daí para a frente seja apenas um feliz gastador! Trabalhe pela última vez na sua vida!!!
DICA FINAL: ESPERE RECEBER O CD (ou disquete, se preferir, ou a autorização e endereço para fazer o download) ANTES DE SE DESPEDIR DO SEU CHEFE...! Dependendo da sua localidade (se não tiver um computador próprio, pode atrasar um ou dois dias...). NÃO CONTE PARA NINGUÉM. SE APENAS VOCÊ USAR O SISTEMA, TODAS AS PESSOAS DO MUNDO VÃO RETORNAR PARA VOCÊ!!!!!!!!!!!!
carlosrm (vinde a mim os inocentes...)
(Peço desculpas a todos, por desrespeitar as regras deste Fórum. Se os Moderadores me penalizarem, compreenderei perfeitamente).