[NOTE: ARJ files and other binaries that came with this publication are not included in this text-only archive.] MINOTAURO MAGAZINE #10 % DELAYER % Hises, como ya es costumbre, esta editorial debio haber salido mucho antes, pero por motivos que no les vienen al caso se retraso unos meses :) En realidad no solo la editorial sino toda la revista. O fue entonces problema del resto de la revista? bueh, no queda claro :) Lo unico que queda claro es que cada vez tardamos mas en salir y dentro de todo es bastante logico. Sin embargo, seguimos con la misma actitud que cuando comenzamos. Pero como dice Trurl, y HBO ya lo dijo en un articulo 'hacking for dummies' o similar, parece que el "under" se esta auto-consumiendo. Pareciera que hay como una "carrera hacker" donde uno empieza golpeando las puertas de algun bbs under, manguea de forma lastimosa un PBX, forma un grupo y como broche final saca una revista. Es patetico. Volviendo a lo nuestro, hay infinidad de cosas por hacer, y mas todavia por investigar. Asi que no creo que nos quedemos sin material nunca :) pero es seguro que tardemos cada vez mas a medida que vamos investigando. Por eso les invitamos a enviar articulos para que la revista salga mas periodicamente. En este numero seguramente salgan algunas cosas interesantes, pero en realidad todo depende del nivel de las mareas en combinacion (lineal) con la temperatura en marte, ustedes entienden. Cambiando de tema, parece que a pesar de los costos, hay mucha gente interesada en lo nuestro en el interior. Mucha gente del Sur (Comodoro Rivadavia especialmente) Cordoba, Tucuman y Santa Fe. Estabamos viendo la posibilidad de instalar algunos dionysios definitivos por esos lares, y mantenernos en contacto, para que las comunicaciones sean mas fluidas y menos esporadicas. Por favor hagannos llegar informacion de bbs de las zonas que les interese y vamos a ver que podemos hacer. Dionysios I paso a mejor vida Dionysios II paso a manos privadas Dionysios III sigue en el 451-2986 % SALUDOS Y AGRADECIMIENTOS % Left Blank Intensionally Index: ======================================================================== Windows #2: diseccion de un windows NE .......................... 001 Numeros Ordinales de las APIs ................................... 002 Prefetch Queue use & desuse ..................................... 003 Redes Neuronales: perceptron .................................... 004 Quimica Explosiva #1: ........................................... 005 Telefonia Celular #1: conceptos basicos ......................... 006 Tarjetas Aroundeworldenses ...................................... 007 =============================================================================== drako, digital anarchy MINOTAURO MAGAZINE #10 Disecci¢n de un NE (new executable) de windows por Trurl % Intro % Para hacer esta nota, tomamos el ejemplo de una aplicaci¢n Windows que viene con el TASM 4.0, lo simplificamos un poco, le agregamos un par de cositas, lo ensamblamos con el mismo TASM, y procedimos a explicar cada byte del EXE as¡ generado. En esta nota veremos todas las tablitas y detalles que hacen un NE. ¨Por que? Porque no ten¡amos nada mejor que hacer. Si quer¡an una explicaci¢n de la ca¡da del indice Dow Jones, esta no es la revista para buscarla. % El Source % El c¢digo fuente consta de un .ASM y un .DEF; el ASM es el c¢digo en si, y el DEF es un file de definici¢n que sirve para especificarle al linker ciertas caracter¡sticos de la aplicaci¢n (como si los segmentos de datos van a ser descartables, el nombre del modulo, especificar los exports, etc). El programa lo £nico que hace es crear una ventana; y si uno clickea sobre el area cliente de la ventana, saca un message box que dice "Minotauro Magazine by [DAN]". Mis intentos de comentar el fuente se vieron frustrados por el hecho de que resulta imposible explicar desde cero como funciona una aplica- cion Windows desde un comentario. En todo caso sera en otro articulo. Solo tomen en cuenta una cosa, que la rutina "WndProc" esta exportada; eso significa que es una rutina que debera ser llamada por el sistema, y que por lo tanto hay que poner a su disposicion la posicion dentro del file de la rutina, de modo que pueda llamarla. En este articulo veremos como se hace eso (exportar una rutina) en un NE, ademas de muchas otras cosas. Van los dos files; = SAMPLE.ASM ================================================================= locals jumps .model large, WINDOWS PASCAL include windows.inc extrn BEGINPAINT:PROC extrn CREATEWINDOW:PROC extrn DEFWINDOWPROC:PROC extrn DISPATCHMESSAGE:PROC extrn ENDPAINT:PROC extrn GETMESSAGE:PROC extrn GETSTOCKOBJECT:PROC extrn INITAPP:PROC extrn INITTASK:PROC extrn INVALIDATERECT:PROC extrn LOADCURSOR:PROC extrn MESSAGEBEEP:PROC extrn MESSAGEBOX:PROC extrn POSTQUITMESSAGE:PROC extrn REGISTERCLASS:PROC extrn SHOWWINDOW:PROC extrn TEXTOUT:PROC extrn TRANSLATEMESSAGE:PROC extrn UPDATEWINDOW:PROC extrn WAITEVENT:PROC .data db 16 dup (0) ; Parametros de WinMain psp dw ? pszCmdline dw ? hPrev dw ? hInstance dw ? cmdShow dw ? newhwnd dw 0 ; Handle de la ventana de la aplicaci¢n msg MSGSTRUCT <0> ; MSG para el loop de mensajes wc WNDCLASS <0> ; WNDCLASS para RegisterClass szTitleName db 'Sample Application',0; Titulo de la ventana szClassName db 'MINOCLASS',0 ; Clase de ventana mensaje db "Minotauro Magazine by [DAN]",0 titulo db "dis is a mesech bocs",0 .code .286 ;----------------------------------------------------------------------------- start: mov ax, @data mov ds, ax ; set up data segment ;Windows initialization. Sets up registers and stack. ;INITTASK returns: ; Failure: ; AX = zero if it failed ; Success: ; AX = 1 ; CX = stack limit ; DX = cmdShow parameter to CreateWindow ; ES:BX = -> DOS format command line (ES = PSP address) ; SI = hPrevinstance ; DI = hinstance call INITTASK or ax,ax jnz @@OK jmp @@Fail @@OK: mov [psp],es mov word ptr [pszCmdline],bx mov [hPrev],si mov [hInstance],di mov [cmdShow],dx ;Initialize the Windows App xor ax,ax push ax call WAITEVENT push [hInstance] call INITAPP or ax,ax jnz @@InitOK @@Fail: mov ax, 4CFFh int 21h @@InitOK: ;----------------------------------------------------------------------------- ; This is generally where WinMain is called. We won't use a WinMain, since ; this app is 100% assembly. cmp [hPrev], 0 jne already_running mov [wc.clsStyle], CS_HREDRAW + CS_VREDRAW mov word ptr [wc.clsLpfnWndProc], offset WndProc mov word ptr [wc.clsLpfnWndProc+2], seg WndProc mov [wc.clsCbClsExtra], 0 mov [wc.clsCbWndExtra], 0 mov ax, [hInstance] mov [wc.clsHInstance], ax mov [wc.clsHIcon], 0 push 0 push IDC_ARROW call LOADCURSOR mov [wc.clsHCursor], ax push WHITE_BRUSH call GETSTOCKOBJECT mov [wc.clsHbrBackground], ax mov word ptr [wc.clsLpszMenuName], 0 mov word ptr [wc.clsLpszMenuName+2], 0 mov word ptr [wc.clsLpszClassName], offset szClassName mov word ptr [wc.clsLpszClassName+2], ds push ds push offset wc call REGISTERCLASS already_running: push ds push offset szClassName ; Class name push ds push offset szTitleName ; Title string push WS_OVERLAPPEDWINDOW+WS_VISIBLE ; high word of Style push 0 ; low word of Style push CW_USEDEFAULT ; x push CW_USEDEFAULT ; y push CW_USEDEFAULT ; width push CW_USEDEFAULT ; height push 0 ; parent hwnd push 0 ; menu push [hInstance] ; hInstance push 0 ; lpParam push 0 ; lpParam call CREATEWINDOW mov [newhwnd], ax push [newhwnd] push [cmdShow] call SHOWWINDOW push [newhwnd] call UPDATEWINDOW msg_loop: push ds push offset msg push 0 push 0 push 0 call GETMESSAGE cmp ax, 0 je end_loop push ds push offset msg call TRANSLATEMESSAGE push ds push offset msg call DISPATCHMESSAGE jmp msg_loop end_loop: mov ax, [msg.msWPARAM] mov ah, 4Ch int 21h ;----------------------------------------------------------------------------- WndProc proc hwnd:WORD, wmsg:WORD, wparam:WORD, lparam:DWORD cmp [wmsg], WM_DESTROY je wmdestroy cmp [wmsg], WM_CREATE je wmcreate cmp [wmsg], WM_LBUTTONDOWN je wmlbuttdown jmp defwndproc wmlbuttdown: push [hwnd] push ds push offset mensaje push ds push offset titulo push MB_OK call MESSAGEBOX ; neat, uh? jmp finish wmcreate: mov ax, 0 jmp finish defwndproc: push hwnd push wmsg push wparam push lparam call DEFWINDOWPROC jmp finish wmdestroy: push 0 call POSTQUITMESSAGE mov ax, 0 jmp finish finish: mov dx, 0 ret WndProc endp ;----------------------------------------------------------------------------- public WndProc ends end start = FIN DE SAMPLE.ASM ========================================================== = SAMPLE.DEF ================================================================= NAME DESCRIPTION 'Basic Stub' CODE PRELOAD MOVEABLE DISCARDABLE DATA LOADONCALL MOVEABLE MULTIPLE EXETYPE WINDOWS HEAPSIZE 1024 STACKSIZE 8192 EXPORTS WndProc = FIN DE SAMPLE.DEF ========================================================== % El binario % Este es un dump del EXE generado haciendo "tasm /ml /m3 /ic:\tasm\inclu- de" y luego "tlink /Twe sample.obj, sample,, import.lib, sample.def". Ahora lo iremos viendo por partes. 0000 4D 5A 50 00 02 00 00 00-04 00 0F 00 FF FF 00 00 MZP............. 0010 B8 00 00 00 00 00 00 00-40 00 00 00 00 00 00 00 ........@....... 0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0030 00 00 00 00 00 00 00 00-00 00 00 00 90 00 00 00 ................ 0040 BA 10 00 0E 1F B4 09 CD-21 B8 01 4C CD 21 90 90 ........!..L.!.. 0050 54 68 69 73 20 70 72 6F-67 72 61 6D 20 6D 75 73 This program mus 0060 74 20 62 65 20 72 75 6E-20 75 6E 64 65 72 20 4D t be run under M 0070 69 63 72 6F 73 6F 66 74-20 57 69 6E 64 6F 77 73 icrosoft Windows 0080 2E 0D 0A 24 00 00 00 00-00 00 00 00 00 00 00 00 ...$............ 0090 4E 45 06 00 78 00 0A 00-00 00 00 00 0A 00 02 00 NE..x........... 00A0 00 04 00 20 00 00 01 00-00 00 02 00 02 00 03 00 ... ............ 00B0 0E 00 40 00 50 00 50 00-61 00 67 00 12 01 00 00 ..@.P.P.a.g..... 00C0 01 00 09 00 00 00 02 00-00 00 00 00 00 00 00 03 ................ 00D0 01 00 7A 01 50 1D 7A 01-03 00 96 00 11 0C 96 00 ..z.P.z......... 00E0 03 57 41 50 00 00 07 57-4E 44 50 52 4F 43 01 00 .WAP...WNDPROC.. 00F0 00 01 00 05 00 0C 00 00-03 47 44 49 06 4B 45 52 .........GDI.KER 0100 4E 45 4C 04 55 53 45 52-01 FF 01 CD 3F 01 17 01 NEL.USER....?... 0110 00 00 0A 42 61 73 69 63-20 53 74 75 62 00 00 00 ...Basic Stub... 0120 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0130 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0140 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0150 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0160 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0170 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0180 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0190 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 01A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 01B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 01C0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 01D0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 01E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 01F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0200 B8 00 00 8E D8 9A FF FF-00 00 0B C0 75 02 EB 29 ............u..) 0210 8C 06 10 00 89 1E 12 00-89 36 14 00 89 3E 16 00 .........6...>.. 0220 89 16 18 00 33 C0 50 9A-FF FF 00 00 FF 36 16 00 ....3.P......6.. 0230 9A FF FF 00 00 0B C0 75-05 B8 FF 4C CD 21 83 3E .......u...L.!.> 0240 14 00 00 75 60 C7 06 2E-00 03 00 C7 06 30 00 17 ...u`........0.. 0250 01 C7 06 32 00 FF FF C7-06 34 00 00 00 C7 06 36 ...2.....4.....6 0260 00 00 00 A1 16 00 A3 38-00 C7 06 3A 00 00 00 6A .......8...:...j 0270 00 68 00 7F 9A FF FF 00-00 A3 3C 00 6A 00 9A FF .h........<.j... 0280 FF 00 00 A3 3E 00 C7 06-40 00 00 00 C7 06 42 00 ....>...@.....B. 0290 00 00 C7 06 44 00 5B 00-8C 1E 46 00 1E 68 2E 00 ....D.[...F..h.. 02A0 9A FF FF 00 00 1E 68 5B-00 1E 68 48 00 68 CF 10 ......h[..hH.h.. 02B0 6A 00 68 00 80 68 00 80-68 00 80 68 00 80 6A 00 j.h..h..h..h..j. 02C0 6A 00 FF 36 16 00 6A 00-6A 00 9A FF FF 00 00 A3 j..6..j.j....... 02D0 1A 00 FF 36 1A 00 FF 36-18 00 9A FF FF 00 00 FF ...6...6........ 02E0 36 1A 00 9A FF FF 00 00-1E 68 1C 00 6A 00 6A 00 6........h..j.j. 02F0 6A 00 9A FF FF 00 00 3D-00 00 74 14 1E 68 1C 00 j......=..t..h.. 0300 9A FF FF 00 00 1E 68 1C-00 9A FF FF 00 00 EB D8 ......h......... 0310 A1 20 00 B4 4C CD 21 1E-58 90 45 55 8B EC 1E 8E . ..L.!.X.EU.... 0320 D8 83 7E 0C 02 74 3E 83-7E 0C 01 74 1D 81 7E 0C ..~..t>.~..t..~. 0330 01 02 74 02 EB 19 FF 76-0E 1E 68 65 00 1E 68 81 ..t....v..he..h. 0340 00 6A 00 9A FF FF 00 00-EB 27 B8 00 00 EB 22 FF .j.......'....". 0350 76 0E FF 76 0C FF 76 0A-FF 76 08 FF 76 06 9A FF v..v..v..v..v... 0360 FF 00 00 EB 0C 6A 00 9A-FF FF 00 00 B8 00 00 EB .....j.......... 0370 00 BA 00 00 1F 5D 4D CA-0A 00 11 00 02 00 55 00 .....]M.......U. 0380 01 00 00 00 02 04 01 00-02 00 00 00 03 01 06 00 ................ 0390 02 00 5B 00 03 01 28 00-02 00 1E 00 03 01 31 00 ..[...(.......1. 03A0 03 00 05 00 03 01 75 00-03 00 AD 00 03 01 7F 00 ......u......... 03B0 01 00 57 00 03 01 A1 00-03 00 39 00 03 01 CB 00 ..W.......9..... 03C0 03 00 29 00 03 01 DB 00-03 00 2A 00 03 01 E4 00 ..).......*..... 03D0 03 00 7C 00 03 01 F3 00-03 00 6C 00 03 01 01 01 ..|.......l..... 03E0 03 00 71 00 03 01 0A 01-03 00 72 00 03 01 44 01 ..q.......r...D. 03F0 03 00 01 00 03 01 5F 01-03 00 6B 00 03 01 68 01 ......_...k...h. 0400 03 00 06 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0410 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0420 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0430 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0440 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0450 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0460 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0470 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0480 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0490 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 04A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 04B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 04C0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 04D0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 04E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 04F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0500 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0510 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0520 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0530 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0540 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0550 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0560 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0570 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0580 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0590 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 05A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 05B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 05C0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 05D0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 05E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 05F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0600 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0610 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0620 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0630 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 0640 00 00 00 00 00 00 00 00-53 61 6D 70 6C 65 20 41 ........Sample A 0650 70 70 6C 69 63 61 74 69-6F 6E 00 4D 49 4E 4F 43 pplication.MINOC 0660 4C 41 53 53 00 4D 69 6E-6F 74 61 75 72 6F 20 4D LASS.Minotauro M 0670 61 67 61 7A 69 6E 65 20-62 79 20 5B 44 41 4E 5D agazine by [DAN] 0680 00 64 69 73 20 69 73 20-61 20 6D 65 73 65 63 68 .dis is a mesech 0690 20 62 6F 63 73 bocs % El stub % El stub es un programa DOS com£n y corriente, id‚ntico a cualquier otro EXE excepto por un detalle. El header de un EXE de DOS com£n define hasta el offset 1Eh (ah¡ termina el £ltimo campo del header). Por lo tanto los linkers pueden empezar a poner a partir de ese offset la tabla de realocaci¢n del EXE. Pero en un EXE de Windows, el header MZ tiene definido un campo mas, que esta en el offset 3C del header (quedando el espacio entre 1Eh y 3Ch como reser- ved). Este campo es un DWORD y especifica el offset del NE dentro del file. Por lo tanto, todo EXE cuya tabla de realocaci¢n empiece antes del offset 40h no puede ser un NE. Si empieza en 40h o mas, entonces tomamos la dword en el offset 3Ch y vamos al offset que nos indica; ah¡ leemos dos bytes y si son iguales a NE, eureka. Por lo general los stubs de las aplicaciones Windows son el programa est ndar que muestra "This program must be run under Microsoft Windows", porque este es el default que te pone el linker, pero no hay nada que fuerce a que el stub sea siempre as¡. El stub puede ser un programa DOS totalmente distinto; de hecho algunas versiones del control de volumen de las sound blaster vienen con un programa que es al mismo tiempo una aplicaci¢n Windows y un programa DOS; esto se debe a que por un lado esta la aplicaci¢n Windows, y por el otro, el mismo programa pero para DOS, como su stub. El QCD, que tambi‚n viene con algunas SoundBlaster, es lo mismo, una aplicaci¢n DOS- Windows. En el caso de nuestro programita, el stub es el est ndar, que te muestra el mensajito, y va del offset 0 al 90h que es donde esta el NE seg£n podemos ver en el offset 3Ch. % El header NE (NewExe) % En 90h vemos claramente el NE, que explicaremos campo a campo; offset size contenido descripcion 090h 2 4E45 Signature NE (igual a "NE" :)) 092h 2 0006 Version del linker (6.0 en este caso) 094h 2 0078 Offset de la Entry Table 096h 2 000A Largo de la entry table en bytes 098h 4 00000000 Reservado (el checksum.. no usado) 09Ch 2 000A Flags que describen el EXE. Los £nicos bits prendidos son reservados as¡ que ?. El EXE es SINGLEDATA (un solo segmento de datos) 09Eh 2 0002 N£mero del segmento de datos autom tico. 0A0h 2 0400 Tama¤o inicial de la heap local en bytes (1k) 0A2h 2 2000 Tama¤o inicial de la stack 0A4h 4 0001:0000 CS:IP inicial; apunta al primer segmento del EXE 0A8h 4 0002:0000 SS:SP inicial; apunta al segmento de datos 0ACh 2 0002 N£mero de entradas en la Segment Table 0AEh 2 0003 N£mero de entradas en la module-reference table 0B0h 2 000E N£mero de bytes en la nonresident name table 0B2h 2 0040 Offset a la segment table, relativo al principio del NE (osea en realidad 40h + 90h = D0h) 0B4h 2 0050 Offset a la resource table relativo 0B6h 2 0050 Offset a la resident name table relativo 0B8h 2 0061 Offset a la module reference table relativo 0BAh 2 0067 Offset a la imported name table relativo 0BCh 4 00000112 Offset a la nonresident name table relativo al principio del file 0C0h 2 0001 N£mero de entry points movibles 0C2h 2 0009 Shift Count usado para alineamiento de sectores. Como 1 << 9 = 512, un offset de sector de "1" significa que esta en 512. Un offset 2 es 1024, etc. 0C4h 2 0000 N£mero de segmentos de recursos 0C6h 1 02 Sistema operativo target: MS Windows (dumb) 0C7h 1 00 Otras flags.. no usadas. 0C8h 2 0000 Offset en sectores a la fast load area 0CAh 2 0000 Largo en sectores de la fast load area 0CCh 2 0000 Reservado.. (Uh?) 0CEh 2 0300 Version esperada de Windows. (3.0) Varias observaciones. Primero el shift count; entienden como es el esquema: Los "offsets en sectores" usan este shift count y un offset X es igual al offset X << Shift Count dentro del file. En este caso el shift count es nueve lo cual significa que esta todo puesto a cachos de 512 bytes. Despu‚s la stack; como ven SS apunta al segmento n£mero dos, que es el segmento de datos (£nico) de la aplicaci¢n. SP es cero; esto significa que Windows autom ticamente asigna a SP el valor del tama¤o del segmento + el tama¤o reservado de stack. En este caso el segmento es de 96h bytes (se lo ve en la segment table) y la stack es de 2000h (offset A2h) por lo que inicial- mente SP valdr  2096h. Y por £ltimo, vemos todos los offsets y dem s yerbas concernientes a las diversas tablas a saber: tabla offset NE offset real n£mero de entradas Segment table 40h D0h 2 entradas Resource table 50h E0h 0 entradas Resident name 50h E0h varia Module reference 61h F1h 3 entradas Imported name 67h F7h varia Entry Table 78h 108h varia (10 bytes) Nonresident Name - 112h varia (14 bytes) Ahora veamos tabla por tabla. % Segment Table % En esta tabla est n definidos todos los segmentos en este caso dos. La tabla esta en D0h y cada entrada son ocho bytes, por lo tanto el primer segmento es (01 00 8A 01 50 1D 7A 01) y el segundo (03 00 96 00 11 0C 96 00). Veamos en mas detalle el primer segmento: offset valor descripci¢n 0 0001 offset del segmento, en segmentos; osea 1 << 9 = 200h 2 017A largo del segmento en bytes (en el FILE osea cuanto hay que leer) 4 1D50 Flags: - bit 0 clear: segmento de c¢digo - bit 4 set : segmento m¢vil - bit 6 set : segmento PRELOAD - bit 8 set : el segmento contiene realocaci¢n - bit 12 set : el segmento es descartable 6 017A largo del segmento en bytes (en MEMORIA, osea cuanto hay que alocatear) Osea el primer segmento es el segmento de c¢digo. Y el segundo es el de datos: offset valor descripci¢n 0 0003 offset del segmento (3 << 9 = 600h) 2 0096 largo del segmento en bytes en file 4 0C11 Flags: - bit 0 set: segmento de datos - bit 4 set: segmento m¢vil 6 0096 largo del segmento en bytes en memoria % Resident name table % La siguiente tabla (en el offset E0h) es la resident name table. En esta tabla se especifican los "nombres" que Windows mantendr  siempre en memoria de la aplicaci¢n. Estos "nombres" son funciones exportadas, osea funciones que el sistema podr  llamar, o que otras aplicaciones pueden llamar. Es as¡ como funcionan las DLL y todo el linkeo dinamico. La primera entrada en vez de especificar una funci¢n exportada, contiene el nombre del modulo de la aplicaci¢n, en este caso WAP (Windows Assembly Program :)). Cada nombre empieza con un byte que especifica el n£mero de bytes del nombre, luego el nombre, y por £ltimo un n£mero que identificara a ese nombre; de este modo otra aplicaci¢n puede referenciar a esta funci¢n tanto por el nombre como por el n£mero (as¡ es como se llaman a las API por lo general, usando los numeros; esto se ver  en la tabla de realocaci¢n). Adem s este n£mero permite identifi- car qu‚ entry point corresponde a qu‚ nombre en la Entry Table. El primer nombre entonces es (WAP, 0): 00E0 03 57 41 50 00 00 .WAP.. Y el segundo es (WNDPROC, 1), y luego hay un cero que termina la tabla: 00E6 07 57-4E 44 50 52 4F 43 01 00 .WNDPROC.. 00F0 00 Porque WndProc esta ac ? Recuerden que es un nombre exportado; es una rutina que es llamada solamente por el sistema, encargada de procesar los mensajes de la aplicaci¢n. Ponerlo aca en esta lista es una forma de especifi- carle al sistema la direccion de la rutina. (Esta direcci¢n esta en la segment table). % Module reference table e Imported Name Table % Cada entrada de la module reference table es un word que contiene un offset dentro de otra tabla, la imported names table. La module reference table especifica que m¢dulos (DLLs) necesita la aplicaci¢n para funcionar. Cuando Windows carga la aplicaci¢n, verifica que todos los m¢dulos necesarios est‚n en memoria, y si no est n los carga (cargando una DLL impl¡citamente; tambi‚n se pueden cargar expl¡citamente). Si ya esta en memoria, el sistema mantiene una cuenta con todos los programas que usan la DLL de modo que la DLL no es sacada de memoria hasta que hay 0 m¢dulos que la usen. En este caso los £nicos m¢dulos que se usan son los tres m¢dulos del sistema, que est n siempre en memoria, y son GDI (Graphical Device Interface), KERNEL (el kernel del sistema, que provee todas las apis de manejo de memoria etc) y USER (el modulo que contiene todas las APIs de ventanas y dem s yerbas). A su vez la imported name table es parecida a la resident name table excepto que no termina en un byte 0 sino que contiene cualquier n£mero de entradas y se la referencia solo con offsets dentro de la tabla, tanto en la module reference table como en las tablas de realocaci¢n. En este caso la module reference table (que sabemos tiene 3 entradas, por el header offset AEh), es: 00F1 01 00 05 00 0C 00 Osea que los tres offsets son 1, 5, Ch. La imported name table es: 00F7 00 03 47 44 49 06 4B 45 52 ..GDI.KER 0100 4E 45 4C 04 55 53 45 52 NEL.USER Por lo tanto en offset 1 tenemos GDI, en offset 5 KERNEL, y en offset 12 (Ch) USER. % Entry Table % Los diez bytes a partir del offset 108h son la Entry Table. En esta tabla est n contenidos todos los entry points al ejecutable (es decir, las direccio- nes a donde buscar cada una de las funciones exportadas). En este caso hay una sola entrada en la entry table, que es la correspondiente a nuestra £nica rutina exportada, WndProc. A ver: 0108 01 FF 01 CD 3F 01 17 01 ....?... 0110 00 00 La entry table esta organizada por paquetes, cada uno comienza con dos bytes. El primero indica cuantas entradas hay en el paquete, y el segundo indica si los segmentos (todos) referenciados en el paquete son moviles o no. En nuestro caso el valor es FF, lo que significa que el segmento de WndProc es m¢vil. Luego viene cada entrada individual para cada entry point. Para los segmentos m¢viles cada entrada son 6 bytes, el primero son flags, el segundo y tercero una INT 3F (!?), el cuarto es el n£mero de segmento de la referencia, y el quinto y sexto son el offset dentro de este segmento. En nuestro caso, el segmento es 1, y el offset 117h (osea 0001:0117). Esto apunta justamente al comienzo de nuestra rutina WndProc. Recuerden que en la resident-name table establecimos que el n£mero identificador de WndProc era 1: bueno aqui encontramos que la primera entrada es WndProc. Una rutina con n£mero de identificaci¢n 2, estar¡a en segundo lugar en la entry table, y as¡ todos los entry points estan puestos uno a continuacion del otro. Por otro lado no olviden que la entry table empieza en uno, no en cero. Esto plantea un problema, que es el siguiente; si nos ponemos a ver alguna DLL cualquiera con muchas rutinas exportadas, por ejemplo, WING.DLL, veremos que tiene "agujeros" de ordinales no definidos; por ejemplo WING.DLL define el entry point #1, #2, y luego empieza a partir del #3E9. Que pasa en la entry table con los entry points entre 2 y 3E9? Podr¡an estar definidos (como entry points legales en la entry table) en cuyo caso serian como unas APIs medio indocumentadas, probablemente accesibles (solo como ordinales). Pero por lo general no est n definidos, y son "salteados" con un mecanismo (que ojo, es INDOCUMENTADO, o al menos no esta en la especificaci¢n que yo tengo, que es la que distribuye Microsoft y es la que les dimos en el n£mero anterior) y que consiste en lo siguiente: si el segundo de los dos bytes del header del paquete de entry points es cero, el primero especifica el n£mero de entry points que hay que "saltearse", o si prefieren, el primer byte especifi- ca como siempre el n£mero de entry points definidos en ese paquete, y si el segundo byte es cero significa que esos entry points no est n definidos (como prefieran interpretarlo). Entonces veamos por ejemplo como seria la entry table de WING.DLL: <02 FF XX XX XX XX XX XX YY YY YY YY YY YY> <- entry points 1 y 2 FF 00 FF 00 FF 00 E9 00 as¡ como vemos: 3+FF+FF+FF+E9 = 3E9. Bueno y esto es todo con la entry table (al fin no?). % Non-resident name table % Esta tabla es igual a la resident name table en formato, y la £nica diferencia es que los nombres que est‚n contenidos en esta tabla pueden ser descartados de memoria. Por otro lado es igual. La primera entrada de esta tabla en vez de especificar una funci¢n exportada contiene el nombre descrip- tivo de la aplicaci¢n (especificado en el DEF) y que aparenta no servir absolutamente para nada excepto para que aparezca en el Task Manager y cuando uno apreta ctrl-tab. En nuestro caso, esta es la £nica entrada en la tabla: 0112 0A 42 61 73 69 63 20 53 74 75 62 00 00 00 .Basic Stub... 0120 00 % Los segmentos % Los segmentos son f ciles de encontrar aun a simple vista, y como ya observamos en la segment table, est n en 200h el segmento de c¢digo y en 600h el segmento de datos. El de datos es bastante sencillo; en el vemos exactamen- te lo que nosotros pusimos y nada mas, no tiene mucho misterio. El de c¢digo es otra historia. Lo vemos claramente en el offset 200h, pero en la segment table dec¡a que el segmento tiene 17Ah bytes, y ac  vemos mas bytes despu‚s de 37Ah; se trata de la tabla de realocaci¢n, que esta al final del segmento. Y en el c¢digo tambi‚n van a ver una cosa rara que es que las llamadas a APIs se compilaron as¡: call MESSAGEBOX -> 9A 00 00 FF FF = call FFFF:0000 Esto es porque esos cuatro bytes (00 00 FF FF) van a ser realocateados por el sistema usando la tabla de realocaci¢n para apuntar a la API cuando el programa sea cargado a memoria. % La tabla de realocaci¢n % La reproducimos ac  en una forma mas entendible. El primer word es el n£mero de items en la tabla, y luego viene cada item, cada uno ocho bytes. El primer byte de estos ocho especifica el tipo de direcci¢n que hay que realocar. Si es 2 es "16-bit selector"; como todos uds. saben un selector es algo as¡ como un segmento de modo protegido (si no lo saben es hora de que lo vayan sabiendo), de modo que se trata de realocar un segmento, un valor de 16 bits. Si este byte es 3, se trata de un "32-bit pointer" osea que hay que realocar segmento y offset. El segundo byte establece el tipo de realizaci¢n; un 1 especifica un ordinal importado, osea una llamada a API hecha usando su n£mero. Si es 0 (o 4) es una referencia interna, osea una referencia a un segmento dentro del propio ejecutable. En cualquier caso, el tercer y cuarto bytes especifican el offset en donde hay que hacer la realocaci¢n dentro del segmento. Si es internal reference, el quinto y el sexto byte indican el n£mero de segmento; el s‚ptimo y el octavo contendr¡an un offset, pero en nuestro caso se trata de realocar solo el segmento, as¡ que son cero. Si es imported ordinal, el quinto y sexto byte contienen un ¡ndice dentro de la module-reference table que especifica indirectamente de que modulo es el ordinal en cuesti¢n. (De esta tabla a su vez se obtiene un offset a la imported-names table, y all¡ se obtiene el nombre del modulo). En nuestro caso y como vimos en la module-reference table, el ¡ndice 1 es GDI, el 2 es KERNEL, y el 3 es USER. El s‚ptimo y octavo byte por £ltimo definen el n£mero de la funci¢n en cuesti¢n. 11 00 = 17 entradas 02 00 55 00 01 00 00 00 - 16 bit selector (mov [..], seg WndProc) = Code Segm 02 04 01 00 02 00 00 00 - 16 bit selector (mov ax, @data) = Data Segment 03 01 06 00 02 00 5B 00 - 32 bit ptr, imported #, KERNEL, 5B (INITTASK) 03 01 28 00 02 00 1E 00 - 32 bit ptr, imported #, KERNEL, 1E (WAITEVENT) 03 01 31 00 03 00 05 00 - 32 bit ptr, imported #, USER, 5, (INITAPP) 03 01 75 00 03 00 AD 00 - 32 bit ptr, imported #, USER, AD, (LOADCURSOR) 03 01 7F 00 01 00 57 00 - 32 bit ptr, imported #, GDI, 57, (GETSTOCKOBJECT) 03 01 A1 00 03 00 39 00 - 32 bit ptr, imported #, USER, 39 (REGISTERCLASS) 03 01 CB 00 03 00 29 00 - 32 bit ptr, imported #, USER, 29 (CREATEWINDOW) 03 01 DB 00 03 00 2A 00 - 32 bit ptr, imported #, USER, 2A (SHOWWINDOW) 03 01 E4 00 03 00 7C 00 - 32 bit ptr, imported #, USER, 7C (UPDATEWINDOW) 03 01 F3 00 03 00 6C 00 - 32 bit ptr, imported #, USER, 6C (GETMESSAGE) 03 01 01 01 03 00 71 00 - 32 bit ptr, imported #, USER, 71 (TRANSLATEMESSAGE) 03 01 0A 01-03 00 72 00 - 32 bit ptr, imported #, USER, 72 (DISPATCHMESSAGE) 03 01 44 01 03 00 01 00 - 32 bit ptr, imported #, USER, 1 (MESSAGEBOX) 03 01 5F 01-03 00 6B 00 - 32 bit ptr, imported #, USER, 6B (DEFWINDOWPROC) 03 01 68 01 03 00 06 00 - 32 bit ptr, imported #, USER, 6 (POSTQUITMESSAGE) % Para finalizar % Ahora ya saben para que es cada byte de un NE y porque esta all¡. No se sienten mejor, no se sienten realizados? No? Bueno al menos ahora entienden todo como para no sentirse amedrentados ante ning£n NE que se encuentren en su camino! Tampoco? Bueno, magia no puedo hacer. Por si no lo aclare antes, una DLL es un NE tambi‚n. La £nica diferencia es en el c¢digo en si, no en el formato (por ejemplo en una DLL DS!=SS siempre, adem s tienen que definir una funci¢n llamada WEP y exportarla, etc) pero en el formato, es exactamente igual. Lo mismo corre para los DRV. Tambi‚n son NE. Ah¡ ya no se bien cual es la diferencia con un EXE y una DLL, pero es el mismo formato. Trurl, tgc NOTA: WING.DLL es una dll para manejo mas r pido de gr ficos bajo Windows (?) pensada para hacer juegos. Por lo tanto si tienen alg£n juego mas o menos grande para windows (3.1 o cualquier otro de 16 bits) probablemente la tengan; si no es as¡ no importa, para ver el salteo de entry points pueden fijarse en los mismos KRNL386.EXE o USER.EXE, etc, que tambi‚n tienen un poco.MINOTAURO MAGAZINE #10 Numeros ordinales de APIs por Trurl En la VLAD 5 sali¢ una nota muy interesante que tra¡a todos los numeros ordinales de las APIs de KERNEL. Aparentemente Quantum iba cambiando a mano los numeros en el file y viendo que API produc¡an, hasta que termino la lista. Yo no tuve mejor idea que hacer un programita que te muestra todas las funciones exportadas de un ejecutable, con sus numeros, y me di cuenta de que se le habian escapado algunas API, porque paro en el n£mero F0h y hay APIs exportadas en KRNL386.EXE hasta 160h. As¡ que les mando de nuevo una lista mejor; y adem s de yapa el programa que te muestra los exports de un EXE de Windows, de modo que con solo usar el programa pueden descubrir ustedes mismo los numeros ordinales de todos los exports de GDI, USER, o de hecho de cualquier DLL o EXE (o DRV incluso) que se les cruce por adelante. Los ordinales son (est n en orden creciente): File: krnl386.exe Nombre descriptivo: Microsoft Windows Kernel Interface Version 3.10 (0000) Nombre del modulo: KERNEL (0000) FATALEXIT (0001) EXITKERNEL (0002) GETVERSION (0003) LOCALINIT (0004) LOCALALLOC (0005) LOCALREALLOC (0006) LOCALFREE (0007) LOCALLOCK (0008) LOCALUNLOCK (0009) LOCALSIZE (000A) LOCALHANDLE (000B) LOCALFLAGS (000C) LOCALCOMPACT (000D) LOCALNOTIFY (000E) GLOBALALLOC (000F) GLOBALREALLOC (0010) GLOBALFREE (0011) GLOBALLOCK (0012) GLOBALUNLOCK (0013) GLOBALSIZE (0014) GLOBALHANDLE (0015) GLOBALFLAGS (0016) LOCKSEGMENT (0017) UNLOCKSEGMENT (0018) GLOBALCOMPACT (0019) GLOBALFREEALL (001A) 1B : Indefinida GLOBALMASTERHANDLE (001C) YIELD (001D) WAITEVENT (001E) POSTEVENT (001F) SETPRIORITY (0020) LOCKCURRENTTASK (0021) SETTASKQUEUE (0022) GETTASKQUEUE (0023) GETCURRENTTASK (0024) GETCURRENTPDB (0025) SETTASKSIGNALPROC (0026) 27 : Indefinida 28 : Indefinida ENABLEDOS (0029) DISABLEDOS (002A) 2B - Indefinida 2C - Indefinida LOADMODULE (002D) FREEMODULE (002E) GETMODULEHANDLE (002F) GETMODULEUSAGE (0030) GETMODULEFILENAME (0031) GETPROCADDRESS (0032) MAKEPROCINSTANCE (0033) FREEPROCINSTANCE (0034) CALLPROCINSTANCE (0035) GETINSTANCEDATA (0036) CATCH (0037) THROW (0038) GETPROFILEINT (0039) GETPROFILESTRING (003A) WRITEPROFILESTRING (003B) FINDRESOURCE (003C) LOADRESOURCE (003D) LOCKRESOURCE (003E) FREERESOURCE (003F) ACCESSRESOURCE (0040) SIZEOFRESOURCE (0041) ALLOCRESOURCE (0042) SETRESOURCEHANDLER (0043) INITATOMTABLE (0044) FINDATOM (0045) ADDATOM (0046) DELETEATOM (0047) GETATOMNAME (0048) GETATOMHANDLE (0049) OPENFILE (004A) OPENPATHNAME (004B) DELETEPATHNAME (004C) RESERVED1 (004D) RESERVED2 (004E) RESERVED3 (004F) RESERVED4 (0050) _LCLOSE (0051) _LREAD (0052) _LCREAT (0053) _LLSEEK (0054) _LOPEN (0055) _LWRITE (0056) RESERVED5 (0057) LSTRCPY (0058) LSTRCAT (0059) LSTRLEN (005A) INITTASK (005B) GETTEMPDRIVE (005C) GETCODEHANDLE (005D) DEFINEHANDLETABLE (005E) LOADLIBRARY (005F) FREELIBRARY (0060) GETTEMPFILENAME (0061) GETLASTDISKCHANGE (0062) GETLPERRMODE (0063) VALIDATECODESEGMENTS (0064) NOHOOKDOSCALL (0065) DOS3CALL (0066) NETBIOSCALL (0067) GETCODEINFO (0068) GETEXEVERSION (0069) SETSWAPAREASIZE (006A) SETERRORMODE (006B) SWITCHSTACKTO (006C) SWITCHSTACKBACK (006D) PATCHCODEHANDLE (006E) GLOBALWIRE (006F) GLOBALUNWIRE (0070) __AHSHIFT (0071) __AHINCR (0072) OUTPUTDEBUGSTRING (0073) INITLIB (0074) OLDYIELD (0075) GETTASKQUEUEDS (0076) GETTASKQUEUEES (0077) UNDEFDYNLINK (0078) LOCALSHRINK (0079) ISTASKLOCKED (007A) KBDRST (007B) ENABLEKERNEL (007C) DISABLEKERNEL (007D) MEMORYFREED (007E) GETPRIVATEPROFILEINT (007F) GETPRIVATEPROFILESTRING (0080) WRITEPRIVATEPROFILESTRING (0081) FILECDR (0082) GETDOSENVIRONMENT (0083) GETWINFLAGS (0084) GETEXEPTR (0085) GETWINDOWSDIRECTORY (0086) GETSYSTEMDIRECTORY (0087) GETDRIVETYPE (0088) FATALAPPEXIT (0089) GETHEAPSPACES (008A) DOSIGNAL (008B) SETSIGHANDLER (008C) INITTASK1 (008D) 8E - 95 : Indefinidas DIRECTEDYIELD (0096) WINOLDAPCALL (0097) GETNUMTASKS (0098) 99 : Indefinida GLOBALNOTIFY (009A) GETTASKDS (009B) LIMITEMSPAGES (009C) GETCURPID (009D) ISWINOLDAPTASK (009E) GLOBALHANDLENORIP (009F) EMSCOPY (00A0) LOCALCOUNTFREE (00A1) LOCALHEAPSIZE (00A2) GLOBALLRUOLDEST (00A3) GLOBALLRUNEWEST (00A4) A20PROC (00A5) WINEXEC (00A6) GETEXPWINVER (00A7) DIRECTRESALLOC (00A8) GETFREESPACE (00A9) ALLOCCSTODSALIAS (00AA) ALLOCDSTOCSALIAS (00AB) ALLOCALIAS (00AC) __ROMBIOS (00AD) __A000H (00AE) ALLOCSELECTOR (00AF) FREESELECTOR (00B0) PRESTOCHANGOSELECTOR (00B1) __WINFLAGS (00B2) __D000H (00B3) LONGPTRADD (00B4) __B000H (00B5) __B800H (00B6) __0000H (00B7) GLOBALDOSALLOC (00B8) GLOBALDOSFREE (00B9) GETSELECTORBASE (00BA) SETSELECTORBASE (00BB) GETSELECTORLIMIT (00BC) SETSELECTORLIMIT (00BD) __E000H (00BE) GLOBALPAGELOCK (00BF) GLOBALPAGEUNLOCK (00C0) __0040H (00C1) __F000H (00C2) __C000H (00C3) SELECTORACCESSRIGHTS (00C4) GLOBALFIX (00C5) GLOBALUNFIX (00C6) SETHANDLECOUNT (00C7) VALIDATEFREESPACES (00C8) REPLACEINST (00C9) REGISTERPTRACE (00CA) DEBUGBREAK (00CB) SWAPRECORDING (00CC) CVWBREAK (00CD) ALLOCSELECTORARRAY (00CE) ISDBCSLEADBYTE (00CF) D0 - 135 : Indefinidas LOCALHANDLEDELTA (0136) GETSETKERNELDOSPROC (0137) 138 - 139 : Indefinidas DEBUGDEFINESEGMENT (013A) WRITEOUTPROFILES (013B) GETFREEMEMINFO (013C) 13D : Indefinida FATALEXITHOOK (013E) FLUSHCACHEDFILEHANDLE (013F) ISTASK (0140) 141 : Indefinida ISROMMODULE (0143) LOGERROR (0144) LOGPARAMERROR (0145) ISROMFILE (0146) K327 (0147) _DEBUGOUTPUT (0148) K329 (0149) 149 - 14B : Indefinidas THHOOK (014C) 14D : Indefinida ISBADREADPTR (014E) ISBADWRITEPTR (014F) ISBADCODEPTR (0150) ISBADSTRINGPTR (0151) HASGPHANDLER (0152) DIAGQUERY (0153) DIAGOUTPUT (0154) TOOLHELPHOOK (0155) 156 : Indefinida REGISTERWINOLDAPHOOK (0157) GETWINOLDAPHOOKS (0158) ISSHAREDSELECTOR (0159) ISBADHUGEREADPTR (015A) ISBADHUGEWRITEPTR (015B) HMEMCPY (015C) _HREAD (015D) _HWRITE (015E) BUNNY_351 (015F) 160 : Indefinida __GP (0156) [Nota: Esta est  en la resident name table] LSTRCPYN (0161) GETAPPCOMPATFLAGS (0162) GETWINDEBUGINFO (0163) SETWINDEBUGINFO (0164) 165 - 192 : Indefinidas K403 (0193) K404 (0194) 195 - FFFF : Indefinidas Como es obvio la mayor parte de estas APIs no est n en la documentaci¢n (son "indocumentadas"). Algunas son realmente intrigantes.. por ejemplo: BUNNY_351. Que es eso macaya? __GP, ser  acaso el (G)eneral (P)rotection [Fault] Handler de Win? Hay otra que se llama HasGPHandler.. mhm. Adem s __GP es la £nica que esta en la resident names table; las dem s son nonresident, lo cual refuerza esta idea ya que un handler de GPF debe estar siempre en memoria etc. Otras interesantes son las que hacen obvia alusi¢n a alg£n segmento com£n de memoria: __0040 (Variables de BIOS), __A000 (Video), _0000 (IVT); ser n APIs que retornan selectores que dan acceso a esas areas de memoria? Quiz . (De todos modos yo no las usar¡a porque en la API de Win32 es casi seguro que no est n mas). En cuanto a que fin practico sirve esta lista, es muy sencillo; ninguno en principio. Pero quiz  en alg£n momento hagan un virus de Windows y necesi- ten hacer la tabla de realocaci¢n "a mano" en el source; en ese caso van a tener que usar esta tabla (y otra similar por cada modulo que necesiten adem s del kernel; para lo cual les va a ser muy £til el programita). Ya se que las posibilidades de que uds. hagan un virus de Windows en este milenio o en el que viene son remotas, pero por algo hay que empezar. (Je Je Je). ¨Aparte, quien invento eso de que para publicarlo en una revista tiene que ser £til? ¨Acaso el under argentino no esta poblado de revistas que prueban lo contra- rio? (pregunta que tambi‚n puede articularse como: ¨queda alguien en la galaxia que no haya le¡do al menos cinco art¡culos distintos sobre como hacer una bomba ansi?) En fin... lindo e interesante y etc. Enjoy Trurl MINOTAURO MAGAZINE #10 Prefectch Queue Use & Desuse by Drako % LA INTRODUCCION % hi. como siempre primero tengo que agradecer a trurl tgc por haberme roto las pelotas durante meses para que de una vez por todas termine el dichoso articulo de usos y desusos de la prefetch queue... Ok, aqui estamos de nuevo Que es esto de la prefetch? No creo que nadie que se precie de tal *eh?* no haya escuchado alguna vez el termino de "prefetch queue de mierda" Como su nombre lo indica es una Cola Pre-Llenada si se puede decir asi, esto es una zona del procesador donde se almacenan las proximas instrucciones a ejecutarse... La cantidad de instrucciones o el tama¤o de la queue varian segun el dise¤o del micro y es dificil por no decir imposible conseguir informacion especifica sobre su tama¤o por parte de los fabricantes... Igualmente hay maneras de poder determinarlo pero los resultados pueden verse afectados por el factor sorpresa, lease algun dispositivo instalado especialmente para que no se pueda medir hehe, etc La idea de esto es acelerar un poco el sistema. Si por cada vez que el micro trae informacion de la memoria para ejecutarla pudiera traer un poco mas y mantenerla en algun lado para no tener que acceder a ram de nuevo, se ganaria algo de velocidad. Este procedimiento es transparente para el usuario comun o para el programador convencional, pero seguramente si alguno de ustedes trabajo con polimorficos o codigo que se modifica en memoria tuvo problemas con la prefetch. Esto no quiere decir que sea algo del otro mundo, que sea algo que nos va a hacer la vida imposible ni mucho menos, vamos a ver hasta para que se puede llegar a usar para sacarle algun provecho. el tema es asi: Cuando se esta ejecutando una serie de instrucciones, como ya dijimos, en el momento de ejecutarse la instruccion del offset X, ya estan cargadas las instrucciones hasta el offset X+Tama¤o_de_la_prefetch en la pref. Imaginense tener el siguiente codigo: ;========= Cut here =========================================================== ; medidor en pfetch.arj ;======= Cut here ============================================================= Ok? todo lo que no esta prefetcheado termina siendo nops no transformados en incs ... mientras menos termina valiendo bx, mas grande es la prefetch por la mitad del source vieron que se flushea el prefetch... esto sirve por si no te diste cuenta para volver a cargarlo, osea que estoy asegurandome que el primer byte de la queue sea el primer byte que se esta por ejecutar (en otras palabras donde cae el salto) esto tiene bastante sentido... un jump incondicional y se recarga el queue. es una medida de seguridad ... imaginense el siguiente codigo y que pasaria con el pfetch: xor ax, ax jmp salir inc ax salir: ret es bastante evidente lo que pasaria no? ax antes de salir (si no se reacomodara el pfetch) terminaria en 1 cuando en realidad tendria que terminar en 0. el micro entonces recarga el pfetch a partir de la direccion que indica el salto. % UN CASO ESPECIAL: EL PENTIUM % si probaran el codigo anterior en un pentium, notarian que no pueden medir correctamente el size del prefetch. esto se debe a que este micro toma una medida de seguridad extra, chequea, en las escrituras a memoria, si la informacion a modificar se encuentra dentro del alcance del prefetch y si asi fuese lo modifica. lo que redunda en la imposibilidad de medir el tama¤o de la prefetch de la manera tradicional... no se me ocurre ninguna otra manera, salvando que haya algun registro interno que indique su tama¤o o que se pueda hacer algun artilugio para transferir informacion de memoria a memoria por dma, y el micro no se entere, no se, pero no me gusta usar el termino "imposible" ;) ... ejercicio que dejamos para vostros, nuestros estimados lectores % APLICACIONES % es evidente que la mejor aplicacion de esto son trucos anti-debugging, y cosas por el estilo. por ejemplo en la VLAD #1 - otra muy buena revista de virus por si no la conocen - publicaron una combinacion de uso de pfetch y stack, pero solamente nos es relevante a modo de ejemplo el manejo del pfetch para detectar si nuestro virus fue TBCleaneado... la idea era algo asi: mov byte ptr check+1, 01h check: mov ax, 00h cmp ax, 01h je tbcleaned_or_pentium ok: [...] tbcleaned_or_pentium: call fuck_hd (or not) lo que aca pasa es lo siguiente: si se ejecuta el programa normalmente, el mov byte ptr check+1, 01h unicamente modificaria en la imagen de memoria al mov ax, 00h por un mov ax, 01h. la pfetch por mas que se modifique la imagen, ya tiene en su cola un mov ax, 00h y es lo que va a ejecutar. mas adelante se compara ax contra 1. si fue igual, puede significar dos cosas: caso 1) el programa que se esta corriendo es una TBCleaneada: si se le pasara el TBClean, cuando ‚ste quisiera grabar la copia "limpia" a disco, grabaria la IMAGEN, por lo tanto grabaria a disco un mov ax, 01h. la proxima vez que se ejecute normalmente la copia "limpiada", efectivamente la comparacion de ax contra 1 va a dar Ok y procederemos a hacer mierda el disco. caso 2) el pobre boludo ni siquiera tiene el TBClean, pero se le hizo mierda el disco igual. que paso? seguramente el pobre boludo tiene un Pentium. Cuando con el primer mov quizo escribir en memoria que ya estaba prefetcheada, el micro actualizo el contenido del pfetch, reemplazando el mov ax, 00h por un mov ax, 01h. que problema eh? a esto le veo dos soluciones posibles (seguro hay mas, pero dos es un numero ideal): caso a) que el programa determine si el micro es un pentium y si asi fuese no haga uso de ningun truco por pfetch. caso b) defecarme en el hecho de que tenga un pentium y utilizar este metodo como playload dedicandole un "mala leche por haberte comprado un super intel pentium, boludo" :-) see you, drako, digital anarchy MINOTAURO MAGAZINE #10 Introduccion a las Redes Neuronales por Zarpex El objetivo de esta nota es informar a los lectores sobre las redes neuronales artificiales, explicarles como se forman, como trabajan y como estas podrian llegar a crear finalmente.... [musica de 2001 odisea del espacio, por favor] ....LA INTELIGENCIA ARTIFICIAL.... Desde que existe, el hombre ha deseado crear vida inteligente que imite a si mismo (en la forma de aprender, pensar, etc). [quien alguna vez no quiso hacer un programita que use inteligencia artificial, eh?] Esto lo podemos observar tanto en libros, peliculas y ahora ... EN LA REALIDAD. Los robots son un ejemplo de esto. Por ejemplo, imaginemos una fabrica de latas. Muy bien. Ahora imaginemos una cinta transportadora y un brazo a su lado. Bien, la cinta contiene, en uno de sus costados, un sensor magnetico. Este, al estar frente a una pieza metalica, envia una pequenisima corriente. Ahora, ese sensor esta conectado al brazo y a la cinta. Cuando por la cinta viene una lata, el sensor la detecta y envia senales al brazo y a la cinta. La cinta se detiene y el brazo procedera a agarrar la lata y tirarla a un tacho (o llevarla a otro lugar, da lo mismo :) ). Se podria llegar a decir que en cierta forma y con mucha voluntad, este robot (integrado por el sensor y el brazo) es "inteligente". Por que ? y bueno, sencillamente porque el robot al "ver" (recordemos, detectar) la lata toma una decision (y no lo hace hasta que necesite o "decida" por medio del sensor hacerla). La transporta. Es lo mismo que haria un ser humano encargado de esa tarea. Veamos: esta la cinta. esta el chabon. esta el interruptor de la cinta. y esta el tacho. El chabon esta comodamente sentado en una silla esperando algo. Cuando ese algo llega (la lata) el la ve (en este caso en lugar de un sensor magnetico utiliza la vista), detiene la cinta mediante el interruptor, recoge la lata y la lanza al tacho. Bueno, hasta ahora la inteligencia artificial se resumia a eso y a un mediocre psicologo de sound blaster. Pero ahora se ha comenzado a desarollar una teoria mas que interesante. Se estudio (como siempre para estos casos) paso por paso al ser humano y se vio que lo que hace que el ser humano aprenda, es su red neuronal. Como funciona ? veamos: el cerebro consta de aproximadamente 100.000.000.000 (cien mil millones puf!) de neuronas conectadas entre si por medio de dendritas. Supngo que los que leen esto habran terminado la primaria, pero por las dudas refresquemos: ÍÍÍÍÍÍÍËÍÍÍ» / º º A /_ _ ÍÍÍÍÍÍ͹ B ÌÍÍÍÍÍÍÍ C \ º º \ ÍÍÍÍÍÍÍÊÍÍͼ Bueno, eso que parece un enchufe, es una neurona. (fuaa !). Las tres patitas (A) son las dendritas. Estas se encargan de conectar las neruronas entre si y transportar informarcion (impulsos electricos) de nerurona en neurona. El bloque del medio (B) es el nucleo. Este es el encargado de almacenar informacion (si, impulsos electricos) de una forma que ahora no viene al caso (es muy dificil. quiza en otra nota, si les interesa pidanlo :) ) Y la pata final (C) es el axon. Por aqui sale informacion (muy bien, impulsos electricos nuevamente) si la neurona lo decide. (ya van a ver como) Resumiendo. Todos nosotros tenemos en el cerebro (o lo que sea que este ahi dentro) muchas neuronas. A cada neurona se le conectan tres mas (esto se llama sinapsis*) y esta a su vez se conecta con otra neurona (que a su vez tiene conectadas dos mas) y asi sucesivamente, formando una red neuronal. *sinapsis: a cada dendrita se le une (por medio del axon) otra neurona.* fuuf... que largo..... tomemos un descanso y despues seguimos.......no hay que cansar las neuronas...... Bueno, volvamos a lo nuestro. Esta red neuronal se encarga de transportar informacion (podria compararse con el bus) desde y hacia el cerebro. Por ejemplo, muevan el brazo. Acaban de ver actuando una red neuronal. El cerebro envio la orden al brazo y el brazo se movio. Bueno, las neuronas del cerebro son las que hacen que ustedes, (si ustedes) aprendan y puedan programar, moverse, hablar y todo eso. REDES NEURONALES ARTIFICIALES ----- ---------- ------------ Bien, es un poco idiota preguntar que significa el titulo. Pero como siempre, por las dudas, explico: es una red neuronal no natural que imita a la red neuronal natural, capisce ? bueno, segun una revista, (PCMANIA 40), hubo dos chabones (Mc Culloch y Walter Pitts), de ahora en mas "dos chabones", que hicieron un modelo matematico de una neurona. Se doto a este modelo de entradas y salidas (tal como a una neurona natural). A cada entrada se le dio un peso (si, algun chistoso habra dicho "y fueron a comprarse una lata a la fabrica del robot". pero no, un peso numerico.) Bueno, el funcionamiento de la neurona es simple, para saber si una entrada de informacion (por dendritas) merece respuesta (por axon), se multiplica la entrada de cada dendrita por su peso. Si la suma de todos esos productos (de las 3 dendritas) es mayor que un cierto valor se emitira respuesta por el axon. Sino, no pasa nada. Pensemos, tenemos 3 entradas y una salida, que se puede hacer ? facil, imitar cualquier funcion logica como AND u OR. Por ejemplo, para la funcion AND, debemos hacer que las entradas sean 0 o 1, determinar el valor para el cual habra respuesta (1) poner las entradas de las dendritas en 1, 1 y 0.5. Asi observaremos que solamente hay respuesta (igual a 1) cuando dos entradas son igual a 1. En otro caso no. Ej: O A -> 1 ÍÍÍÍÍÍÍËÍÍÍ» T X º º R O -> 1 ÍÍÍÍÍÍ͹ ÌÍÍÍÍÍÍÍ 1 O N º º S E -> 0.5 ÍÍÍÍÍÍÍÊÍÍͼ S respuesta por axon: 1 (o sea hay respuesta) Queda en ustedes hacer la funcion OR y NAND. Ahhh... Me olvidaba de decir que hay un programa (hecho en basic pero programa al fin) que demuestra todo esto... (publicado con la pcmania 40) Paso a resumir su teoria..... En una zona (de la pantalla) que imita un habitat, vive un ser "vivo" (valga la redundancia) llamado zoobit. Este bicharraco (queda en ustedes imaginar su forma y demas), posee olfato y gusto. No asi vision, tacto ni oido. En este habitat tambien hay comida identificada por puntitos azul (sin olor ni gusto), verdes (sin olor pero con sabor), celestes (con olor pero sin sabor), y rojas (con olor y sabor). El asunto es que las tres primeras (azul, verde y celeste) no son nutritivas, o sea que la energia del bicho este no aumenta, sino que disminuye por el gasto de digerirlas (hehe). En cambio la roja si lo alimenta incrementando su energia. Bueno la cosa es que el coso este aprenda a distinguir la particula que lo alimenta (para morfarla y desechar las otras) mediante una red neuronal (llamada percepton -de una sola neurona-). El bicho gasta energia al moverse tambien. Bueno, eso fue toda una introduccion..... hay mas cosas que explicar (mas interesantes y profundas) pero todo depende de ustedes (si les gusto o no dejen mensajes en dionysios 3 que es el unico que anda) y de drako. Experimenten, hagan programas tratando de hacer una pequena red como la del ejemplo y todo eso. y recuerden : "El progreso no consiste en reemplazar una teoria equivocada por otra correcta, sino en sustituir una teoria falsa por otra mas sutilmente erronea" Hawkin. y bueno ya que estamos, para los programadores de assembler que laburan mucho con direccionamiento, stack y demas: "Cuando ponga algo en la memoria, recuerde donde lo puso" Beiser. Saludos........................ zarpex MINOTAURO MAGAZINE #10: Curso de quimica explosiva Por Kender Sip, por primera vez en la mino, se publica una nota de explosivos. Vamos a empezar por un cursito basico de explosivos y asi en cada numero vamos a ir agregando formulas para que todos ustedes !VUELEN! de alegria ;) Bue, vamo a empezar.. para que tengan una idea los explosivos son sustancias quimicas que al detonarse (Por corriente electrica, impacto, o llama) cambian repentinamente a gases calientes. Estos gases se expanden con terrible fuerza y presion hacia sus alrededores. Cuando la polvora se detona la presion aumenta hasta 6000 veces de lo normal Los explosivos mas "Fuertes"como la dinamita el T.N.T (Trinitotolueno) y la nitroglicerina generas mucha mas cantidad de presion alrededor de 300 toneladas por centimetro cuadrado!. Que causa esta tremenda liberacion de gases ? Bueno, para entenderlo tenes que pensar que muchos liquidos y solidos estan compuestos por gases, como el agua que esta compuesto por Oxigeno e Hidrogeno. El fulminato de Mercurio esta compuesto por Mercurio, Oxigeno, Carbon y Nitrogeno. El agua Obviamente no es explosiva (Aclaracion para los que van a acercar un fosforito a la canilla) pero el fulminato de mercurio si.Esto es porque el Hidrogeno y el oxigeno generan una gran fuerza de atraccion y no pueden ser separados sin energia. Sin embargo el fulminato de Mercurio es un compuesto inestable y sus componentes no generan mucha atraccion entre si, y estan buscando siempre una excusa para separarse. Al Detonarse el fulminato de mercurio se generan dos gases , nitrogeno y monoxido de carbono, ademas se genera vapor de mercurio. Estos gases ocupan mas espacio que cuando estaban en estado solido y su repentina y violenta expansion es la que causa la explosion. (me salio con versito nomas) Una definicion de explosivo puede ser "cualquier substancia que al romperse generan rapida y violentamente, grandes cantidades de gas." Tomando en cuenta la velocidad de explosion, los explosivos se pueden clasificar en dos tipos. El primero es el de los rapidos. como el fulminato de mercurio el segundo es el de los lentos como la piroxilina y etc. Tambien se puede hablar de un tercer tipo, el de los que segun el tipo de detonacion reaccionan mas o menos, como el Trinitotolueno que solo no es un gran explosivo, pero que acompa¤ado por un explosivo primario como detonador puede llegar a generar una gran explosion. COMPARACION DE VELOCIDADES DE DETONACION +------------------------------------------------------------------------+ 8600 ! ! 8500 ! %%%%%%%%%% ! 8400 ! %%%%%%%%%% ! 8300 ! %%%%%%%%%% ! 8200 ! %%%%%%%%%% ! 8100 ! %%%%%%%%%% %%%%%%%%%% ! 8000 ! %%%%%%%%%% %%%%%%%%%% ! 7900 ! %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% ! 7800 ! %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% ! 7700 ! %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% ! 7600 ! %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% ! 7500 ! %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% ! 7400 ! %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% ! 7300 ! %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% ! 7200 ! %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% ! 7100 ! %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% ! 7000 ! %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% ! 6900 ! %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% ! 6800 ! %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% %%%%%%%%%% ! +------------------------------------------------------------------------+ T.N.T R.D.X. "C" "C-2" "C-3" "C-4" Precauciones para el manejo de los explosivos La preparacion de explosivos no tiene porque ser dificil o riesgosa, si se toman en cuenta estas 20 reglas esenciales. 1) Cuando se hacen explosivos tratar de preparar poca cantidad, (no te zarpes haciendo 5 kilos de R.D.X porque si llega a pasar algo vas a volar la manzana). Acordate, mientras mas grande es la cantidad, mas "Fuerte" explota 2) Cuando se usa papel en la preparacion, no hay que tirarlo en el tacho, lavarlo con agua. Asi se disuelven los compuestos y no son peligrosos. 3) Trata de tener lo mas ordenado posible tu lugar de trabajo, y no dejes los frascos abiertos. 4) Si se va a usar un mortero, lavarlo y !No piques los quimicos juntos! 5) Al mezclar quimicos se lo debe hacer al aire libre, cuidando de no usar recipientes de metal(por las chispas), de la temperatura, de no tener ninguna llama cerca y de la estatica. 6) Al guardar los quimicos cuidar de que al tapar el tubo. no este frotando con el mismo. 7) Guardar los ingredientes en envases de plastico. lejos del fuego, del calor y si puede ser al aire libre (pero a la sombra) 8) Usar siempre envases limpios. 9) Usar siempre una anteojos de trabajo, para cubrir los ojos. 10) Si se trabaja con gases, vapores y polvo. usar una mascara antigas. 11) Siempre usa guantes. 12) Siempre usa guardapolvo o impermeable. 13) Si se va a trabajar dentro de una casa. tener buena ventilacion. 14) Siempre trabaja con alguien mas. 15) Siempre tene cerca agua y un matafuego. 16) Nunca se debe usar frascos de metal para guardar los explosivos. Mucha gente murio por las famosas bombas de los cartuchos de CO2 que al explotar salen volando pedazos cortantes de metal. 17) Lavarse las manos y cara antes y despues de trabajar. 18) Si una aparto falla, dejarlo, hasta estar seguro que no explotara. 19) Saber bien el procedimiento antes de intentar algo. 20) Nunca golpear o dejar caer mezclas que tienen percloratos o nitratos. Ejemplos simples ---------------- Triyodo amoniaco (Explosivo de contacto) ---------------------------------------- 1) Poner Yodo solido (en cristales) en un recipiente. 2) Introducir Amoniaco en el recipiente hasta cubrir el Yodo. 3) Dejar reposar de 1 a 2 hs. 4) Filtrar la solucion con un filtro de papel. lo que queda en el filtro, unos cristales marrones, es nuestro explosivo.. 5) Dejar secar los cristales Aclaraciones: 1)El tipo de amoniaco influye en la sensibilidad del explosivo. Si se utiliza Peroxido amoniaco, el explosivo sera "Intocable" con tan solo un soplido puede estallar. Si se utiliza Amoniaco puro pierde sensibilidad, igualmente !Es muy sensible! asi que yo recomiendo usar el segundo 2) Hay que tener en cuenta que el yodo mancha muchisimo asi que tanto como el recipiente o sus manos pueden quedar manchadas. asi que usen de recipiente un vaso de porqueria u otra cosa, y cuando saquen los cristales del filtro usen una cuchara o algo por el estilo. 3)Cuando los cristales queden secos. el explosivo ya esta listo, acuerdense de que es !MUY SENSIBLE! y tengan cuidado. Polvora ------- Existen tres tipos distintos de polvora. F FF FFF De menor a mayor velocidad de detonacion La formula del mas simple y mas usado (Petardos etc.) es : 75% Nitrato de potasio 15% Carbon 10% Azufre esta mezcla se puede hacer en seco o para mayor homogeneidad en mojado y despues dejandolo secar. (tengan en cuenta que todo esto es en polvo) Clorato de potasio ------------------ El clorato de potasio se puede combinar con azucar o azufre para hacer un componente muy parecido a la polvora. Con azufre se convierte en un explosivo de friccion o impacto. Con azucar se quema rapidamente con una llama muy fuerte. Nitrocelulosa ------------- La nitrocelulosa is usualmente llamada "algodon polvora" o "piroxilina". Es mas estable que la polvora, produce mucho mas gas caliente y se quema mas rapido que la polvora. 1) Poner 10 cc de acido sulfurico con 10 cc de acido nitico en un recipiente. (no de metal porque se lo morfa) 2) Inmediatamente poner 0.5 gm de algodon y dejarlo reposar por 3 minutos. 3) Sacar la nitrocelulosa y lavarla con agua. repetir este proceso varias veces (Lo ideal seria fijarse si es neutro con un reactivo, pero...) 4) Dejar secar el material y usar! En los proximos numeros se incluiran formulas mas avanzadas como T.N.T., R.D.X. C-4, PETN y etc. Kender. MINOTAURO MAGAZINE #10 Telefonia Celular Conceptos Basicos % Introduccion % Actualmente en Argentina (mas precisamente en Buenos Aires) se esta utilizando el sistema NAMPS (New Advanced Movile Phone System) que puede manejar 832 canales. Este sistema es el sucesor del AMPS que solo soportaba 666 canales. El total de canales es dividido en dos bandas A y B, cada una a cargo de un provider (Movicom y Miniphone en Bs. As.) y cada banda recibe el nombre de Non-Wireline y Wireline respectivamente ya que la segunda estaria reservada para la compa¤ia de telefonos local (Telefonica y/o Telecom). Cada banda consta de 416 canales (832/2) y cada uno tiene un uso especifico. Por ejemplo, de cada banda, 21 canales son usados como Canales de Control (CC) y el resto como Canales de Voz (VC). Pero todo esto lo vamos a hablar mas adelante. Lo importante es que todo el sistema de celulares esta conectado (OBVIAMENTE) al sistema telefonico convencional por medio de COs (Central Offices u Oficinas Centrales) que hacen las veces de Switches comunes y corrientes, pero que estan conectadas a MTSOs (Movile Telephone Switching Offices) que es desde donde se maneja toda la asignacion de canales, y por donde pasan todas las comunicaciones de una determinada zona. % Providers % Cada proveedor (o carrier) tiene arreglos con fabricantes para que los provea de equipo. En el caso de Movi, ni siquiera, ya que no es propiedad de Juan Movicom, sino es una empresa conjunta de dos empresas yankees y dos nacionales: Motorola, Southern Bell, BGH y Socatel. La inversion inicial fue de $150 millones, y en 1993 ya estaban facturando esa cantidad por A¥O. Mal negocio eh? En el caso de Miniphone, es una empresa de Movistar, formada 50% y 50% por Telefonica Y Telecom. Estos dos carriers son los que brindan el servicio en Capital Federal y Conurbano Bonaerense. Toda la Zona Norte del pais la controla CPPI y la Zona Sur y Gran Bs. As. la maneja Unifon, empresa de Telefonica. Estas tres ultimas empresas son "socias" para no decir que son lo mismo. Por cada zona siempre hay dos empresas que compiten, por ejemplo en Capital y Conurbano Miniphone y Movicom se viven tirando mierda ;) En el Norte la competidora de CPPI es CTI (Comunicaciones Telefonicas del Interior) y asi cada carrier tiene su competencia. En el Sur no tengo informacion sobre quien es la competencia de Unifon, pero despues de todo no es un tema demasiado imporante. Bueno como ya dijimos, Movicom se maneja con equipamiento Motorola, mientras que Miniphone se tendria que manejar con Ericson. Aunque digo tendria porque tambien manejan muchos equipos Motorola. % Seguridad % Eh, bueno. Son mis comunicaciones celulares confiables? o cualquier boludo con un handy, scanner, o incluso con cualquier celular puede escucharme? Efectivamente, cualquiera (no con _cualquier_ handy o scanner, pero) puede escuchar asi de facil cualquier comunicacion celular. (no se si habra legislacion al respecto, pero por las dudas no lo hagan :-). Asi que quizas uno sea muy capo pero en cuanto se ponga a hablar por un movi hay grandes posibilidades que lo esten escuchando... Ah, pero esto es un problema. Entonces se reunieron los expertos de USA y convirtieron la escucha de la banda de 800mhz en ilegal, y solucionaron el problema. hahaha O como cuando querian prohibir el uso de beepers en Estados Unidos, porque los usaban los narcos. haha, un tipo que trafica merca va a dejar de usar un beeper porque es ilegal? bueh, asi estamos no? % Asignacion de canales (frecuencias) % Como dijimos antes, cada provider tiene asignada una banda de 416 canales, venidos de un total de 832 canales. Estos estan numerados desde el 1 hasta el 1023 con un agujero en el medio desde el canal 800 al 990 que estan sin uso, para poder codificar cada canal con una palabra de 10 bits. Sin embargo parece que tienen pensado upgradear o al menos lo tuvieron en cuenta, ya que todas las palabras transmitidas que se refieren a channel numbers, son palabras de 11 bits con el MSB en 0. Cada canal tiene una frecuencia asociada, por lo que hablar de canal es lo mismo que hablar de frecuencia. A continuacion la tabla de asignacion de frecuencias por canal: Chan Mobile Cell Site RECs: Reverse Channels n§ RECs FOCs (de Movi A Torre) ------------------------- FOCs: Forward Channels 1 -- 825.03 -- 870.03 (de Torre A Movi) 2 -- 825.06 -- 870.06 Entre RECs y FOCs hay una diferencia 3 -- 825.09 -- 870.09 de 45 Mhz 4 -- 825.12 -- 870.12 5 -- 825.15 -- 870.15 (Frecuencias en Mhz) 6 -- 825.18 -- 870.18 7 -- 825.21 -- 870.21 Banda A: 8 -- 825.24 -- 870.24 de canal 1 hasta canal 333 + 9 -- 825.27 -- 870.27 + de canal 667 hasta canal 716 + 10 -- 825.30 -- 870.30 + de canal 991 hasta canal 1023 = 11 -- 825.33 -- 870.33 = 416 canales 12 -- 825.36 -- 870.36 13 -- 825.39 -- 870.39 Banda B: 14 -- 825.42 -- 870.42 todo el resto de los canales asignados 15 -- 825.45 -- 870.45 16 -- 825.48 -- 870.48 Canales separados entre si por 30Khz 17 -- 825.51 -- 870.51 18 -- 825.54 -- 870.54 19 -- 825.57 -- 870.57 20 -- 825.60 -- 870.60 21 -- 825.63 -- 870.63 22 -- 825.66 -- 870.66 23 -- 825.69 -- 870.69 24 -- 825.72 -- 870.72 25 -- 825.75 -- 870.75 26 -- 825.78 -- 870.78 27 -- 825.81 -- 870.81 28 -- 825.84 -- 870.84 29 -- 825.87 -- 870.87 30 -- 825.90 -- 870.90 31 -- 825.93 -- 870.93 32 -- 825.96 -- 870.96 33 -- 825.99 -- 870.99 34 -- 826.02 -- 871.02 35 -- 826.05 -- 871.05 36 -- 826.08 -- 871.08 37 -- 826.11 -- 871.11 38 -- 826.14 -- 871.14 39 -- 826.17 -- 871.17 40 -- 826.20 -- 871.20 41 -- 826.23 -- 871.23 42 -- 826.26 -- 871.26 43 -- 826.29 -- 871.29 44 -- 826.32 -- 871.32 45 -- 826.35 -- 871.35 46 -- 826.38 -- 871.38 47 -- 826.41 -- 871.41 48 -- 826.44 -- 871.44 49 -- 826.47 -- 871.47 50 -- 826.50 -- 871.50 51 -- 826.53 -- 871.53 52 -- 826.56 -- 871.56 53 -- 826.59 -- 871.59 54 -- 826.62 -- 871.62 55 -- 826.65 -- 871.65 56 -- 826.68 -- 871.68 57 -- 826.71 -- 871.71 58 -- 826.74 -- 871.74 59 -- 826.77 -- 871.77 60 -- 826.80 -- 871.80 61 -- 826.83 -- 871.83 62 -- 826.86 -- 871.86 63 -- 826.89 -- 871.89 64 -- 826.92 -- 871.92 65 -- 826.95 -- 871.95 66 -- 826.98 -- 871.98 67 -- 827.01 -- 872.01 68 -- 827.04 -- 872.04 69 -- 827.07 -- 872.07 70 -- 827.10 -- 872.10 71 -- 827.13 -- 872.13 72 -- 827.16 -- 872.16 73 -- 827.19 -- 872.19 74 -- 827.22 -- 872.22 75 -- 827.25 -- 872.25 76 -- 827.28 -- 872.28 77 -- 827.31 -- 872.31 78 -- 827.34 -- 872.34 79 -- 827.37 -- 872.37 80 -- 827.40 -- 872.40 81 -- 827.43 -- 872.43 82 -- 827.46 -- 872.46 83 -- 827.49 -- 872.49 84 -- 827.52 -- 872.52 85 -- 827.55 -- 872.55 86 -- 827.58 -- 872.58 87 -- 827.61 -- 872.61 88 -- 827.64 -- 872.64 89 -- 827.67 -- 872.67 90 -- 827.70 -- 872.70 91 -- 827.73 -- 872.73 92 -- 827.76 -- 872.76 93 -- 827.79 -- 872.79 94 -- 827.82 -- 872.82 95 -- 827.85 -- 872.85 96 -- 827.88 -- 872.88 97 -- 827.91 -- 872.91 98 -- 827.94 -- 872.94 99 -- 827.97 -- 872.97 100 -- 828.00 -- 873.00 101 -- 828.03 -- 873.03 102 -- 828.06 -- 873.06 103 -- 828.09 -- 873.09 104 -- 828.12 -- 873.12 105 -- 828.15 -- 873.15 106 -- 828.18 -- 873.18 107 -- 828.21 -- 873.21 108 -- 828.24 -- 873.24 109 -- 828.27 -- 873.27 110 -- 828.30 -- 873.30 111 -- 828.33 -- 873.33 112 -- 828.36 -- 873.36 113 -- 828.39 -- 873.39 114 -- 828.42 -- 873.42 115 -- 828.45 -- 873.45 116 -- 828.48 -- 873.48 117 -- 828.51 -- 873.51 118 -- 828.54 -- 873.54 119 -- 828.57 -- 873.57 120 -- 828.60 -- 873.60 121 -- 828.63 -- 873.63 122 -- 828.66 -- 873.66 123 -- 828.69 -- 873.69 124 -- 828.72 -- 873.72 125 -- 828.75 -- 873.75 126 -- 828.78 -- 873.78 127 -- 828.81 -- 873.81 128 -- 828.84 -- 873.84 129 -- 828.87 -- 873.87 130 -- 828.90 -- 873.90 131 -- 828.93 -- 873.93 132 -- 828.96 -- 873.96 133 -- 828.99 -- 873.99 134 -- 829.02 -- 874.02 135 -- 829.05 -- 874.05 136 -- 829.08 -- 874.08 137 -- 829.11 -- 874.11 138 -- 829.14 -- 874.14 139 -- 829.17 -- 874.17 140 -- 829.20 -- 874.20 141 -- 829.23 -- 874.23 142 -- 829.26 -- 874.26 143 -- 829.29 -- 874.29 144 -- 829.32 -- 874.32 145 -- 829.35 -- 874.35 146 -- 829.38 -- 874.38 147 -- 829.41 -- 874.41 148 -- 829.44 -- 874.44 149 -- 829.47 -- 874.47 150 -- 829.50 -- 874.50 151 -- 829.53 -- 874.53 152 -- 829.56 -- 874.56 153 -- 829.59 -- 874.59 154 -- 829.62 -- 874.62 155 -- 829.65 -- 874.65 156 -- 829.68 -- 874.68 157 -- 829.71 -- 874.71 158 -- 829.74 -- 874.74 159 -- 829.77 -- 874.77 160 -- 829.80 -- 874.80 161 -- 829.83 -- 874.83 162 -- 829.86 -- 874.86 163 -- 829.89 -- 874.89 164 -- 829.92 -- 874.92 165 -- 829.95 -- 874.95 166 -- 829.98 -- 874.98 167 -- 830.01 -- 875.01 168 -- 830.04 -- 875.04 169 -- 830.07 -- 875.07 170 -- 830.10 -- 875.10 171 -- 830.13 -- 875.13 172 -- 830.16 -- 875.16 173 -- 830.19 -- 875.19 174 -- 830.22 -- 875.22 175 -- 830.25 -- 875.25 176 -- 830.28 -- 875.28 177 -- 830.31 -- 875.31 178 -- 830.34 -- 875.34 179 -- 830.37 -- 875.37 180 -- 830.40 -- 875.40 181 -- 830.43 -- 875.43 182 -- 830.46 -- 875.46 183 -- 830.49 -- 875.49 184 -- 830.52 -- 875.52 185 -- 830.55 -- 875.55 186 -- 830.58 -- 875.58 187 -- 830.61 -- 875.61 188 -- 830.64 -- 875.64 189 -- 830.67 -- 875.67 190 -- 830.70 -- 875.70 191 -- 830.73 -- 875.73 192 -- 830.76 -- 875.76 193 -- 830.79 -- 875.79 194 -- 830.82 -- 875.82 195 -- 830.85 -- 875.85 196 -- 830.88 -- 875.88 197 -- 830.91 -- 875.91 198 -- 830.94 -- 875.94 199 -- 830.97 -- 875.97 200 -- 831.00 -- 876.00 201 -- 831.03 -- 876.03 202 -- 831.06 -- 876.06 203 -- 831.09 -- 876.09 204 -- 831.12 -- 876.12 205 -- 831.15 -- 876.15 206 -- 831.18 -- 876.18 207 -- 831.21 -- 876.21 208 -- 831.24 -- 876.24 209 -- 831.27 -- 876.27 210 -- 831.30 -- 876.30 211 -- 831.33 -- 876.33 212 -- 831.36 -- 876.36 213 -- 831.39 -- 876.39 214 -- 831.42 -- 876.42 215 -- 831.45 -- 876.45 216 -- 831.48 -- 876.48 217 -- 831.51 -- 876.51 218 -- 831.54 -- 876.54 219 -- 831.57 -- 876.57 220 -- 831.60 -- 876.60 221 -- 831.63 -- 876.63 222 -- 831.66 -- 876.66 223 -- 831.69 -- 876.69 224 -- 831.72 -- 876.72 225 -- 831.75 -- 876.75 226 -- 831.78 -- 876.78 227 -- 831.81 -- 876.81 228 -- 831.84 -- 876.84 229 -- 831.87 -- 876.87 230 -- 831.90 -- 876.90 231 -- 831.93 -- 876.93 232 -- 831.96 -- 876.96 233 -- 831.99 -- 876.99 234 -- 832.02 -- 877.02 235 -- 832.05 -- 877.05 236 -- 832.08 -- 877.08 237 -- 832.11 -- 877.11 238 -- 832.14 -- 877.14 239 -- 832.17 -- 877.17 240 -- 832.20 -- 877.20 241 -- 832.23 -- 877.23 242 -- 832.26 -- 877.26 243 -- 832.29 -- 877.29 244 -- 832.32 -- 877.32 245 -- 832.35 -- 877.35 246 -- 832.38 -- 877.38 247 -- 832.41 -- 877.41 248 -- 832.44 -- 877.44 249 -- 832.47 -- 877.47 250 -- 832.50 -- 877.50 251 -- 832.53 -- 877.53 252 -- 832.56 -- 877.56 253 -- 832.59 -- 877.59 254 -- 832.62 -- 877.62 255 -- 832.65 -- 877.65 256 -- 832.68 -- 877.68 257 -- 832.71 -- 877.71 258 -- 832.74 -- 877.74 259 -- 832.77 -- 877.77 260 -- 832.80 -- 877.80 261 -- 832.83 -- 877.83 262 -- 832.86 -- 877.86 263 -- 832.89 -- 877.89 264 -- 832.92 -- 877.92 265 -- 832.95 -- 877.95 266 -- 832.98 -- 877.98 267 -- 833.01 -- 878.01 268 -- 833.04 -- 878.04 269 -- 833.07 -- 878.07 270 -- 833.10 -- 878.10 271 -- 833.13 -- 878.13 272 -- 833.16 -- 878.16 273 -- 833.19 -- 878.19 274 -- 833.22 -- 878.22 275 -- 833.25 -- 878.25 276 -- 833.28 -- 878.28 277 -- 833.31 -- 878.31 278 -- 833.34 -- 878.34 279 -- 833.37 -- 878.37 280 -- 833.40 -- 878.40 281 -- 833.43 -- 878.43 282 -- 833.46 -- 878.46 283 -- 833.49 -- 878.49 284 -- 833.52 -- 878.52 285 -- 833.55 -- 878.55 286 -- 833.58 -- 878.58 287 -- 833.61 -- 878.61 288 -- 833.64 -- 878.64 289 -- 833.67 -- 878.67 290 -- 833.70 -- 878.70 291 -- 833.73 -- 878.73 292 -- 833.76 -- 878.76 293 -- 833.79 -- 878.79 294 -- 833.82 -- 878.82 295 -- 833.85 -- 878.85 296 -- 833.88 -- 878.88 297 -- 833.91 -- 878.91 298 -- 833.94 -- 878.94 299 -- 833.97 -- 878.97 300 -- 834.00 -- 879.00 301 -- 834.03 -- 879.03 302 -- 834.06 -- 879.06 303 -- 834.09 -- 879.09 304 -- 834.12 -- 879.12 305 -- 834.15 -- 879.15 306 -- 834.18 -- 879.18 307 -- 834.21 -- 879.21 308 -- 834.24 -- 879.24 309 -- 834.27 -- 879.27 310 -- 834.30 -- 879.30 311 -- 834.33 -- 879.33 312 -- 834.36 -- 879.36 313 -- 834.39 -- 879.39 +----------> Start: Canales de Control banda A 314 -- 834.42 -- 879.42 | 315 -- 834.45 -- 879.45 | 316 -- 834.48 -- 879.48 | 317 -- 834.51 -- 879.51 | 318 -- 834.54 -- 879.54 | 319 -- 834.57 -- 879.57 | 320 -- 834.60 -- 879.60 | 321 -- 834.63 -- 879.63 | 322 -- 834.66 -- 879.66 | 323 -- 834.69 -- 879.69 | 324 -- 834.72 -- 879.72 | 325 -- 834.75 -- 879.75 | 326 -- 834.78 -- 879.78 | 327 -- 834.81 -- 879.81 | 328 -- 834.84 -- 879.84 | 329 -- 834.87 -- 879.87 | 330 -- 834.90 -- 879.90 | 331 -- 834.93 -- 879.93 | 332 -- 834.96 -- 879.96 | 333 -- 834.99 -- 879.99 +------------------------------> End 334 -- 835.02 -- 880.02 +----------> Start: Canales de Control Banda B 335 -- 835.05 -- 880.05 | 336 -- 835.08 -- 880.08 | 337 -- 835.11 -- 880.11 | 338 -- 835.14 -- 880.14 | 339 -- 835.17 -- 880.17 | 340 -- 835.20 -- 880.20 | 341 -- 835.23 -- 880.23 | 342 -- 835.26 -- 880.26 | 343 -- 835.29 -- 880.29 | 344 -- 835.32 -- 880.32 | 345 -- 835.35 -- 880.35 | 346 -- 835.38 -- 880.38 | 347 -- 835.41 -- 880.41 | 348 -- 835.44 -- 880.44 | 349 -- 835.47 -- 880.47 | 350 -- 835.50 -- 880.50 | 351 -- 835.53 -- 880.53 | 352 -- 835.56 -- 880.56 | 353 -- 835.59 -- 880.59 | 354 -- 835.62 -- 880.62 +------------------------------> End 355 -- 835.65 -- 880.65 356 -- 835.68 -- 880.68 357 -- 835.71 -- 880.71 358 -- 835.74 -- 880.74 359 -- 835.77 -- 880.77 360 -- 835.80 -- 880.80 361 -- 835.83 -- 880.83 362 -- 835.86 -- 880.86 363 -- 835.89 -- 880.89 364 -- 835.92 -- 880.92 365 -- 835.95 -- 880.95 366 -- 835.98 -- 880.98 367 -- 836.01 -- 881.01 368 -- 836.04 -- 881.04 369 -- 836.07 -- 881.07 370 -- 836.10 -- 881.10 371 -- 836.13 -- 881.13 372 -- 836.16 -- 881.16 373 -- 836.19 -- 881.19 374 -- 836.22 -- 881.22 375 -- 836.25 -- 881.25 376 -- 836.28 -- 881.28 377 -- 836.31 -- 881.31 378 -- 836.34 -- 881.34 379 -- 836.37 -- 881.37 380 -- 836.40 -- 881.40 381 -- 836.43 -- 881.43 382 -- 836.46 -- 881.46 383 -- 836.49 -- 881.49 384 -- 836.52 -- 881.52 385 -- 836.55 -- 881.55 386 -- 836.58 -- 881.58 387 -- 836.61 -- 881.61 388 -- 836.64 -- 881.64 389 -- 836.67 -- 881.67 390 -- 836.70 -- 881.70 391 -- 836.73 -- 881.73 392 -- 836.76 -- 881.76 393 -- 836.79 -- 881.79 394 -- 836.82 -- 881.82 395 -- 836.85 -- 881.85 396 -- 836.88 -- 881.88 397 -- 836.91 -- 881.91 398 -- 836.94 -- 881.94 399 -- 836.97 -- 881.97 400 -- 837.00 -- 882.00 401 -- 837.03 -- 882.03 402 -- 837.06 -- 882.06 403 -- 837.09 -- 882.09 404 -- 837.12 -- 882.12 405 -- 837.15 -- 882.15 406 -- 837.18 -- 882.18 407 -- 837.21 -- 882.21 408 -- 837.24 -- 882.24 409 -- 837.27 -- 882.27 410 -- 837.30 -- 882.30 411 -- 837.33 -- 882.33 412 -- 837.36 -- 882.36 413 -- 837.39 -- 882.39 414 -- 837.42 -- 882.42 415 -- 837.45 -- 882.45 416 -- 837.48 -- 882.48 417 -- 837.51 -- 882.51 418 -- 837.54 -- 882.54 419 -- 837.57 -- 882.57 420 -- 837.60 -- 882.60 421 -- 837.63 -- 882.63 422 -- 837.66 -- 882.66 423 -- 837.69 -- 882.69 424 -- 837.72 -- 882.72 425 -- 837.75 -- 882.75 426 -- 837.78 -- 882.78 427 -- 837.81 -- 882.81 428 -- 837.84 -- 882.84 429 -- 837.87 -- 882.87 430 -- 837.90 -- 882.90 431 -- 837.93 -- 882.93 432 -- 837.96 -- 882.96 433 -- 837.99 -- 882.99 434 -- 838.02 -- 883.02 435 -- 838.05 -- 883.05 436 -- 838.08 -- 883.08 437 -- 838.11 -- 883.11 438 -- 838.14 -- 883.14 439 -- 838.17 -- 883.17 440 -- 838.20 -- 883.20 441 -- 838.23 -- 883.23 442 -- 838.26 -- 883.26 443 -- 838.29 -- 883.29 444 -- 838.32 -- 883.32 445 -- 838.35 -- 883.35 446 -- 838.38 -- 883.38 447 -- 838.41 -- 883.41 448 -- 838.44 -- 883.44 449 -- 838.47 -- 883.47 450 -- 838.50 -- 883.50 451 -- 838.53 -- 883.53 452 -- 838.56 -- 883.56 453 -- 838.59 -- 883.59 454 -- 838.62 -- 883.62 455 -- 838.65 -- 883.65 456 -- 838.68 -- 883.68 457 -- 838.71 -- 883.71 458 -- 838.74 -- 883.74 459 -- 838.77 -- 883.77 460 -- 838.80 -- 883.80 461 -- 838.83 -- 883.83 462 -- 838.86 -- 883.86 463 -- 838.89 -- 883.89 464 -- 838.92 -- 883.92 465 -- 838.95 -- 883.95 466 -- 838.98 -- 883.98 467 -- 839.01 -- 884.01 468 -- 839.04 -- 884.04 469 -- 839.07 -- 884.07 470 -- 839.10 -- 884.10 471 -- 839.13 -- 884.13 472 -- 839.16 -- 884.16 473 -- 839.19 -- 884.19 474 -- 839.22 -- 884.22 475 -- 839.25 -- 884.25 476 -- 839.28 -- 884.28 477 -- 839.31 -- 884.31 478 -- 839.34 -- 884.34 479 -- 839.37 -- 884.37 480 -- 839.40 -- 884.40 481 -- 839.43 -- 884.43 482 -- 839.46 -- 884.46 483 -- 839.49 -- 884.49 484 -- 839.52 -- 884.52 485 -- 839.55 -- 884.55 486 -- 839.58 -- 884.58 487 -- 839.61 -- 884.61 488 -- 839.64 -- 884.64 489 -- 839.67 -- 884.67 490 -- 839.70 -- 884.70 491 -- 839.73 -- 884.73 492 -- 839.76 -- 884.76 493 -- 839.79 -- 884.79 494 -- 839.82 -- 884.82 495 -- 839.85 -- 884.85 496 -- 839.88 -- 884.88 497 -- 839.91 -- 884.91 498 -- 839.94 -- 884.94 499 -- 839.97 -- 884.97 500 -- 840.00 -- 885.00 501 -- 840.03 -- 885.03 502 -- 840.06 -- 885.06 503 -- 840.09 -- 885.09 504 -- 840.12 -- 885.12 505 -- 840.15 -- 885.15 506 -- 840.18 -- 885.18 507 -- 840.21 -- 885.21 508 -- 840.24 -- 885.24 509 -- 840.27 -- 885.27 510 -- 840.30 -- 885.30 511 -- 840.33 -- 885.33 512 -- 840.36 -- 885.36 513 -- 840.39 -- 885.39 514 -- 840.42 -- 885.42 515 -- 840.45 -- 885.45 516 -- 840.48 -- 885.48 517 -- 840.51 -- 885.51 518 -- 840.54 -- 885.54 519 -- 840.57 -- 885.57 520 -- 840.60 -- 885.60 521 -- 840.63 -- 885.63 522 -- 840.66 -- 885.66 523 -- 840.69 -- 885.69 524 -- 840.72 -- 885.72 525 -- 840.75 -- 885.75 526 -- 840.78 -- 885.78 527 -- 840.81 -- 885.81 528 -- 840.84 -- 885.84 529 -- 840.87 -- 885.87 530 -- 840.90 -- 885.90 531 -- 840.93 -- 885.93 532 -- 840.96 -- 885.96 533 -- 840.99 -- 885.99 534 -- 841.02 -- 886.02 535 -- 841.05 -- 886.05 536 -- 841.08 -- 886.08 537 -- 841.11 -- 886.11 538 -- 841.14 -- 886.14 539 -- 841.17 -- 886.17 540 -- 841.20 -- 886.20 541 -- 841.23 -- 886.23 542 -- 841.26 -- 886.26 543 -- 841.29 -- 886.29 544 -- 841.32 -- 886.32 545 -- 841.35 -- 886.35 546 -- 841.38 -- 886.38 547 -- 841.41 -- 886.41 548 -- 841.44 -- 886.44 549 -- 841.47 -- 886.47 550 -- 841.50 -- 886.50 551 -- 841.53 -- 886.53 552 -- 841.56 -- 886.56 553 -- 841.59 -- 886.59 554 -- 841.62 -- 886.62 555 -- 841.65 -- 886.65 556 -- 841.68 -- 886.68 557 -- 841.71 -- 886.71 558 -- 841.74 -- 886.74 559 -- 841.77 -- 886.77 560 -- 841.80 -- 886.80 561 -- 841.83 -- 886.83 562 -- 841.86 -- 886.86 563 -- 841.89 -- 886.89 564 -- 841.92 -- 886.92 565 -- 841.95 -- 886.95 566 -- 841.98 -- 886.98 567 -- 842.01 -- 887.01 568 -- 842.04 -- 887.04 569 -- 842.07 -- 887.07 570 -- 842.10 -- 887.10 571 -- 842.13 -- 887.13 572 -- 842.16 -- 887.16 573 -- 842.19 -- 887.19 574 -- 842.22 -- 887.22 575 -- 842.25 -- 887.25 576 -- 842.28 -- 887.28 577 -- 842.31 -- 887.31 578 -- 842.34 -- 887.34 579 -- 842.37 -- 887.37 580 -- 842.40 -- 887.40 581 -- 842.43 -- 887.43 582 -- 842.46 -- 887.46 583 -- 842.49 -- 887.49 584 -- 842.52 -- 887.52 585 -- 842.55 -- 887.55 586 -- 842.58 -- 887.58 587 -- 842.61 -- 887.61 588 -- 842.64 -- 887.64 589 -- 842.67 -- 887.67 590 -- 842.70 -- 887.70 591 -- 842.73 -- 887.73 592 -- 842.76 -- 887.76 593 -- 842.79 -- 887.79 594 -- 842.82 -- 887.82 595 -- 842.85 -- 887.85 596 -- 842.88 -- 887.88 597 -- 842.91 -- 887.91 598 -- 842.94 -- 887.94 599 -- 842.97 -- 887.97 600 -- 843.00 -- 888.00 601 -- 843.03 -- 888.03 602 -- 843.06 -- 888.06 603 -- 843.09 -- 888.09 604 -- 843.12 -- 888.12 605 -- 843.15 -- 888.15 606 -- 843.18 -- 888.18 607 -- 843.21 -- 888.21 608 -- 843.24 -- 888.24 609 -- 843.27 -- 888.27 610 -- 843.30 -- 888.30 611 -- 843.33 -- 888.33 612 -- 843.36 -- 888.36 613 -- 843.39 -- 888.39 614 -- 843.42 -- 888.42 615 -- 843.45 -- 888.45 616 -- 843.48 -- 888.48 617 -- 843.51 -- 888.51 618 -- 843.54 -- 888.54 619 -- 843.57 -- 888.57 620 -- 843.60 -- 888.60 621 -- 843.63 -- 888.63 622 -- 843.66 -- 888.66 623 -- 843.69 -- 888.69 624 -- 843.72 -- 888.72 625 -- 843.75 -- 888.75 626 -- 843.78 -- 888.78 627 -- 843.81 -- 888.81 628 -- 843.84 -- 888.84 629 -- 843.87 -- 888.87 630 -- 843.90 -- 888.90 631 -- 843.93 -- 888.93 632 -- 843.96 -- 888.96 633 -- 843.99 -- 888.99 634 -- 844.02 -- 889.02 635 -- 844.05 -- 889.05 636 -- 844.08 -- 889.08 637 -- 844.11 -- 889.11 638 -- 844.14 -- 889.14 639 -- 844.17 -- 889.17 640 -- 844.20 -- 889.20 641 -- 844.23 -- 889.23 642 -- 844.26 -- 889.26 643 -- 844.29 -- 889.29 644 -- 844.32 -- 889.32 645 -- 844.35 -- 889.35 646 -- 844.38 -- 889.38 647 -- 844.41 -- 889.41 648 -- 844.44 -- 889.44 649 -- 844.47 -- 889.47 650 -- 844.50 -- 889.50 651 -- 844.53 -- 889.53 652 -- 844.56 -- 889.56 653 -- 844.59 -- 889.59 654 -- 844.62 -- 889.62 655 -- 844.65 -- 889.65 656 -- 844.68 -- 889.68 657 -- 844.71 -- 889.71 658 -- 844.74 -- 889.74 659 -- 844.77 -- 889.77 660 -- 844.80 -- 889.80 661 -- 844.83 -- 889.83 662 -- 844.86 -- 889.86 663 -- 844.89 -- 889.89 664 -- 844.92 -- 889.92 665 -- 844.95 -- 889.95 666 -- 844.98 -- 889.98 667 -- 845.01 -- 890.01 668 -- 845.04 -- 890.04 669 -- 845.07 -- 890.07 670 -- 845.10 -- 890.10 671 -- 845.13 -- 890.13 672 -- 845.16 -- 890.16 673 -- 845.19 -- 890.19 674 -- 845.22 -- 890.22 675 -- 845.25 -- 890.25 676 -- 845.28 -- 890.28 677 -- 845.31 -- 890.31 678 -- 845.34 -- 890.34 679 -- 845.37 -- 890.37 680 -- 845.40 -- 890.40 681 -- 845.43 -- 890.43 682 -- 845.46 -- 890.46 683 -- 845.49 -- 890.49 684 -- 845.52 -- 890.52 685 -- 845.55 -- 890.55 686 -- 845.58 -- 890.58 687 -- 845.61 -- 890.61 688 -- 845.64 -- 890.64 689 -- 845.67 -- 890.67 690 -- 845.70 -- 890.70 691 -- 845.73 -- 890.73 692 -- 845.76 -- 890.76 693 -- 845.79 -- 890.79 694 -- 845.82 -- 890.82 695 -- 845.85 -- 890.85 696 -- 845.88 -- 890.88 697 -- 845.91 -- 890.91 698 -- 845.94 -- 890.94 699 -- 845.97 -- 890.97 700 -- 846.00 -- 891.00 701 -- 846.03 -- 891.03 702 -- 846.06 -- 891.06 703 -- 846.09 -- 891.09 704 -- 846.12 -- 891.12 705 -- 846.15 -- 891.15 706 -- 846.18 -- 891.18 707 -- 846.21 -- 891.21 708 -- 846.24 -- 891.24 709 -- 846.27 -- 891.27 710 -- 846.30 -- 891.30 711 -- 846.33 -- 891.33 712 -- 846.36 -- 891.36 713 -- 846.39 -- 891.39 714 -- 846.42 -- 891.42 715 -- 846.45 -- 891.45 716 -- 846.48 -- 891.48 717 -- 846.51 -- 891.51 718 -- 846.54 -- 891.54 719 -- 846.57 -- 891.57 720 -- 846.60 -- 891.60 721 -- 846.63 -- 891.63 722 -- 846.66 -- 891.66 723 -- 846.69 -- 891.69 724 -- 846.72 -- 891.72 725 -- 846.75 -- 891.75 726 -- 846.78 -- 891.78 727 -- 846.81 -- 891.81 728 -- 846.84 -- 891.84 729 -- 846.87 -- 891.87 730 -- 846.90 -- 891.90 731 -- 846.93 -- 891.93 732 -- 846.96 -- 891.96 733 -- 846.99 -- 891.99 734 -- 847.02 -- 892.02 735 -- 847.05 -- 892.05 736 -- 847.08 -- 892.08 737 -- 847.11 -- 892.11 738 -- 847.14 -- 892.14 739 -- 847.17 -- 892.17 740 -- 847.20 -- 892.20 741 -- 847.23 -- 892.23 742 -- 847.26 -- 892.26 743 -- 847.29 -- 892.29 744 -- 847.32 -- 892.32 745 -- 847.35 -- 892.35 746 -- 847.38 -- 892.38 747 -- 847.41 -- 892.41 748 -- 847.44 -- 892.44 749 -- 847.47 -- 892.47 750 -- 847.50 -- 892.50 751 -- 847.53 -- 892.53 752 -- 847.56 -- 892.56 753 -- 847.59 -- 892.59 754 -- 847.62 -- 892.62 755 -- 847.65 -- 892.65 756 -- 847.68 -- 892.68 757 -- 847.71 -- 892.71 758 -- 847.74 -- 892.74 759 -- 847.77 -- 892.77 760 -- 847.80 -- 892.80 761 -- 847.83 -- 892.83 762 -- 847.86 -- 892.86 763 -- 847.89 -- 892.89 764 -- 847.92 -- 892.92 765 -- 847.95 -- 892.95 766 -- 847.98 -- 892.98 767 -- 848.01 -- 893.01 768 -- 848.04 -- 893.04 769 -- 848.07 -- 893.07 770 -- 848.10 -- 893.10 771 -- 848.13 -- 893.13 772 -- 848.16 -- 893.16 773 -- 848.19 -- 893.19 774 -- 848.22 -- 893.22 775 -- 848.25 -- 893.25 776 -- 848.28 -- 893.28 777 -- 848.31 -- 893.31 778 -- 848.34 -- 893.34 779 -- 848.37 -- 893.37 780 -- 848.40 -- 893.40 781 -- 848.43 -- 893.43 782 -- 848.46 -- 893.46 783 -- 848.49 -- 893.49 784 -- 848.52 -- 893.52 785 -- 848.55 -- 893.55 786 -- 848.58 -- 893.58 787 -- 848.61 -- 893.61 788 -- 848.64 -- 893.64 789 -- 848.67 -- 893.67 790 -- 848.70 -- 893.70 791 -- 848.73 -- 893.73 792 -- 848.76 -- 893.76 793 -- 848.79 -- 893.79 794 -- 848.82 -- 893.82 795 -- 848.85 -- 893.85 796 -- 848.88 -- 893.88 797 -- 848.91 -- 893.91 798 -- 848.94 -- 893.94 799 -- 848.97 -- 893.97 ;------------------------------------------------------ ; canales sin asignacion de frecuencias del 800 al 990 ;------------------------------------------------------ 991 -- 824.04 -- 869.04 992 -- 824.07 -- 869.07 993 -- 824.10 -- 869.10 994 -- 824.13 -- 869.13 995 -- 824.16 -- 869.16 996 -- 824.19 -- 869.19 997 -- 824.22 -- 869.22 998 -- 824.25 -- 869.25 999 -- 824.28 -- 869.28 1000 -- 824.31 -- 869.31 1001 -- 824.34 -- 869.34 1002 -- 824.37 -- 869.37 1003 -- 824.40 -- 869.40 1004 -- 824.43 -- 869.43 1005 -- 824.46 -- 869.46 1006 -- 824.49 -- 869.49 1007 -- 824.52 -- 869.52 1008 -- 824.55 -- 869.55 1009 -- 824.58 -- 869.58 1010 -- 824.61 -- 869.61 1011 -- 824.64 -- 869.64 1012 -- 824.67 -- 869.67 1013 -- 824.70 -- 869.70 1014 -- 824.73 -- 869.73 1015 -- 824.76 -- 869.76 1016 -- 824.79 -- 869.79 1017 -- 824.82 -- 869.82 1018 -- 824.85 -- 869.85 1019 -- 824.88 -- 869.88 1020 -- 824.91 -- 869.91 1021 -- 824.94 -- 869.94 1022 -- 824.97 -- 869.97 1023 -- 825.00 -- 870.00 Como veran, son dos frecuencias por canal: Una para que el movi se comunique con la Torre, y una para que la Torre se comunique con el movi. A los primeros se los conoce con el nombre de REVERSE Channels o RECs. A los segundos, como FORWARD Channels o FOCs. Como se nota en la tabla, entre un FOC asociado a un canal determinado y su REC hay una diferencia de 45Mhz. Interesante. Fijense tambien que el desplazamiento entre canales adyasentes es de 30 Khz. Se preguntaran por que todo el quilombo de frecuencias, que por ejemplo el canal 1023 esta por los 825 Mhz pegado al canal 1? Supongo que se debe a que originalmente el sistema estaba dise¤ado para 666 canales, y despues con el advenimiento de los nuevos canales del NAMPS (y como era de esperar), los metieron d¢nde y c¢mo pudieron: banda original de 666 canales: 825.03/870.03Mhz 834.99/879.99Mhz canal 1-----------canal 333 +==================+==================+ | Banda A | Banda B | +==================+==================+ canal 334---------canal 666 835.02/880.02Mhz 844.98/899.98Mhz banda manoseada y re-cogida de 832 canales: canal 1---------canal 333 canal 667-canal 716 +=======+==================+==================+=======+==============+ |Banda A| Banda A org. | Banda B org. |Banda A| Banda B | +=======+==================+==================+=======+==============+ canal 991---canal 1023 canal 334------canal 666 canal 717-canal 799 % Conceptos de Celdas, y asignacion de canales por Celda % Ya que estamos hablando de esto vamos a explicarlo. El nombre de Telefonia Celular deriva de la forma en que estan geograficamente dispuestas las antenas de un sistema. Como todos sabran existe una antena por zona, dedicada a manejar ciertos canales. Por lo menos existe 1 Canal de Control por Torre, Celda, Antena o como quieran decirle, un sistema puede ser el siguiente: __ __/D \__ Como ven hay solo 4 tipos de /B \__/C \__ celdas: A, B, C y D. Cada TIPO \__/A \__/D \__ maneja frecuencias distintas. /C \__/B \__/C \ nunca hay dos celdas que usen \__/D \__/A \__/ el mismo set de frecuencias /B \__/C \__/ juntas. Siempre al menos hay \__/ \__/ otra celda distinta en medio. El total de canales se dividiria en 4 grupos, uno para cada tipo de celda: A, B, C y D. Este modelo se lo conoce como "Patron de Reutilizacion de 4 Celdas" y al menos hasta 1993 estaba en uso por Movicom con un total de 60 celdas (ahora manejran segun ellos unas 150 antenas). SUPONGAMOS que de los 416 canales (21 de control y 395 de voz) los repartimos en 4 juegos distintos: 6 de control : desde 313 hasta 318 ;<==== Juego A 100 de voz : desde 1 hasta 100 5 de control : desde 319 hasta 323 ;<==== Juego B 100 de voz : desde 101 hasta 200 5 de control : desde 324 hasta 328 ;<==== Juego C 100 de voz : desde 201 hasta 300 5 de control : desde 329 hasta 333 ;<==== Juego D 95 de voz : desde 301 hasta 312 + + desde 667 hasta 716 + + desde 991 hasta 1023 ----------------- ----------------------- 416 canales 416 canales La forma con la que se asocia comunmente el termino Celda, es un hex gono. En realidad debido a la naturaleza de las radio se¤ales, son circulares, pero gracias a la ubicacion de las antenas se puede analizar como si fueran hexagonos perfectamente. Hay entonces, zonas donde hay un solapamiento de se¤ales de dos o mas antenas, zonas donde no queda claro si se va a quedar con una antena o con la otra (siempre tiende a quedarse con la de mas potencia) justamente por los bordes de los hexagonos. Si nosotros estuviesemos hablando en un cierto canal, de una cierta antena (celda) y nos pasaramos a otra celda (es muy comun cuando uno esta manejando), se produciria lo que se llama un handoff. Esto es posible gracias a varios sistemas que interactuan: Primero, la base de la celda esta constantemente chequeando la potencia con que llega la se¤al del movi y esta continuamente pasandosela al MTSO pertinente. Esta informacion la transmite por se¤ales de micro-onda o whatever que recibe el MTSO. Al MTSO, asi como le llega esta informaciom, le llega el mismo tipo de informacion de las otras antenas, y tiene los datos suficientes para determinar a que celda se paso, haciendo los arreglos para que el movi empiece a trabajar en el nuevo canal de la nueva antena. Esta informacion de alguna manera se la tiene que hacer llegar la antena ACTUAL al movi, por medio del canal de VOZ ACTUAL (porque seria ridiculo mantener un canal asociado de control por cada canal de voz que se esta usando). Si se pudiera interceptar ese mensaje, se podria determinar el nuevo canal en el que sigue la conversacion y evitar que se perdiera por un handoff. Interesante. El mayor problema es determinar que canal pertenece a que antena. Para esto es fundamental saber donde esta cada antena, al menos las de su zona de accion o de la zona que quieras intervenir. Intervenir? hahaha suena muy FBI. Pero todo depende de que es lo que se quiera hacer, obviamente. Generalmente no es necesario saber todo esto. % Una Comunicacion Tipica % Encendemos el aparato, discamos el numero al que nos queremos comunicar, no nos atienden, puteamos, cortamos. Y redial hasta que nos atienden. Parece un procedimiento absolutamente normal, como si fuese lo mas normal del mundo. Pero si se ponen a pensar en lo complejo del sistema que permite ese accionar, dirian uh, mierda. Por ejemplo en el primer paso, en algo tan bobo como encender el aparato y discar, ya se estan poniendo en funcionamiento un monton de transmisores, receptores, decodificadores, se ponen en funcionamiento un monton de cosas. Evidentemente, en el momento de querer iniciar una comunicacion, el movil debe identificarse con el sistema. Se puede decir entonces que cada movil, tiene una identificacion unica (hehehe) Esta identificacion consiste en some data, pero en realidad solo dos datos son verificados para habilitar la llamada: Movile Identification Number (MIN): Numero telefonico de la unidad Electronic Serial Number (ESN): Numero de serie electronico de la unidad Con esta informacion se transmite tambien el SCM (Station Class Mark) que indica las caracteristicas del movil, pero que para el caso no son relevantes. Lo normal seria abonarse al servicio y que nuestro Provider nos tuviera registrados en sus bases de datos. Nosotros llamariamos presentando nuestras identidades (MIN/ESN) y nos facturarian. Pero hay casos donde se le facturan sumas disparatadas a abonados que practicamente no utilizaron el movil... Claro, seguramente algun "hacker" pudo obtenerle los datos del movil, y pudo reprogramar su unidad para hacerse pasar por la unidad registrada, creando asi un movil GEMELO (Clon) % Que Garcha es el Roaming ? % El Roaming basicamente consiste en la habilitacion para efectuar o recibir llamadas FUERA del sistema del que uno es abonado. Una onda de compatibilidad mundial donde uno podria irse a Japon con su propio movil y efectuar llamadas desde su propio numero telefonico. Aunque asi de interesante como suena deja de serlo al ver los precios que se manejan. Los proveedores se aprovechan de esta situacion y te/le rompen el orto al que este Roameando. Porque siempre el abonado es el que paga todo el ruteo fuera de su Sistema Hogar. Por ejemplo, supongamos que Federico Gido se va para Tucuman con su telefono celular y alguien lo quiere llamar. Este lo llama y pueden suceder dos cosas dependiendo del cliente: a) Que el titular tenga habilitado el servicio de Call Delivery: El sistema de Call Delivery es un sistema de rastreo de celular mediante una red de computadoras llamada Red Nacional Celular. Una vez que se lo localiza el cliente paga: a) la utilizacion de las antenas locales (facturada por el carrier de tucuman al carrier local del cliente que a su vez se lo fRactura al cliente) b) la comunicacion telefonica terrestre desde el Home System hasta donde el se encuentra. b) O que sencillamente lo tenga desactivado: Si este fuese el caso todavia tiene metodos de ser localizado, pero ahora el que hace la llamada necesita saber a donde fue a parar. Previo aviso o como sea. Entonces el interesado en comunicarse debe bancarse la llamada interurbana hasta el Numero de Acceso Local de la zona donde se encuentre el cliente y este solo pagaria un uso normal del telefono. El roaming se puede usar tambien para la generacion de llamadas. Estando fuera del area de servicio local, poder usar el propio movil para hacer llamadas. El problema (hehe) es que el carrier al no tener una lista de abonados de TODOS los sistemas con acuerdo mutuo de roaming, primero permitiria efectuar la llamada y despues la cobraria. Muchas veces cuando quieren cobrarle al carrier home, le dicen que esa identificacion de abonado no es valida y queda la cuenta pagando. Lei que en USA estaban por implementar una base de datos Nacional donde cada carrier pudiera chequear los datos del movil ANTES de habilitar la llamada pero no se hasta que punto se podria implementar a nivel internacional. % Palabras finales % Ok, este tema de telefonia celular es muy interesante. Mas alla del cloning o del phreaking. Este articulo fue mas bien de Background sobre el sistema telefonico celular. Si algo estuviese erroneo o faltaria precisar no duden en hacermelo saber que me interesaria saberlo. En el proximo numero vamos a intentar profundizar un poco mas. % Saludos, fuentes y agradecimientos % - a mi vieja que me esta mirando - a mi mismo por ser como soy - a pixel y manzanita por siempre andar consiguiendo cosas interesantes - a todos los que donaron "sus" telefonos celulares para experimentos :) - a todos los que me molestan todos los dias :) - un caluroso saludo a todos de los que aprendi bocha from: dr.who, damien thorn, tattooman, bootleg, brian oblivion y muchos mas drako, digital anarchy MINOTAURO MAGAZINE #10 Algunas tarjetas compatibles con el sistema argentino de tarjetas telefonicas Estos son mapas de algunas tarjetas que me hicieron llegar, compatibles con el sistema que se utiliza en telefonia en la argentina. Son archivos de 32 bytes con la informacion del MAPA de las tarjetas. En base a esta informacion podrian re-programar el archiconocido 705K1 y emularlas tranquilamente. * Telefonica de Argentina y Telecom Argentina * Ok, a modo de meter todo junto les damos algunas lecturas de tarjetas de telefonica de argentina y telecom argentina. Son tarjetas de uso corriente que se pueden conseguir en cualquier kiosco. La informacion de que significa cada byte (o casi) del header ya lo publicamos antes. Asi que si no tuvieron tiempo o ganas de armar el lector, aca les damos algunas lecturas de tarjetas comunes para que analicen. Todos los .MEM los levantan con el programa lector tambien ya publicado. ===== Start: Cut here ========================================================= ; mapas en mapas.arj ===== End: Cut here =========================================================== * Telefonica de Espa¤a * En este numero publicamos 2 tarjetas de Telefonica de Espa¤a: una de 1000 pts y la otra de (2000+100) pts (100 de yapa). En el byte 09h de la segunda tarjeta donde tenemos la informacion de cantidad de creditos, tenemos el byte 06h (interpretado como 60 creditos), pero en la de 1000 pts (poco menos de la mitad que la otra) marca A8h y no tengo ni idea de como interpretarlo. La tarjeta igualmente ya paso a mejor vida, asi que tampoco puedo saber si estaba cagada o qu‚. Pero es un dato para que tengan en cuenta nada mas. Quizas all  hubiera andado lo mas bien, quien sabe. Volviendo al tema, la forma de quemar los creditos es igual que la de Telefonica de Argentina, o deberiamos decir que T. de Arg. usa el mismo sistema que T. de Esp.? What the hell Logicamente el codigo de pais es distinto, pero todo lo demas se mantiene igual. La proteccion por fusible de los primeros 96 bits tambien se mantiene. ===== Start: Cut here ========================================================= ; mapas en mapas.arj ===== End: Cut here =========================================================== * France Telecom * Con esta (solo me llego una) tuve problemas para leerla. Pudieron haber pasado dos cosas: a) Que la tarjeta halla estado hecha mierda, lo mas probable b) Que sencillamente alla se use otro sistema, lo veo poco probable, teniendo en cuenta que telecom de argentina utiliza el mismo sistema. bah, no estoy seguro. La forma del conector es de cintura de avispa, pero con la misma distribucion de contactos que cualquier tarjeta comun pero de color plateado onda transparente (son las que se usan aca hace unos meses) ===== Start: Cut here ========================================================= ; no hay mapas disponibles ===== End: Cut here =========================================================== * Tarjeta Acceso Cerro Catedral, Bariloche * Cuentan que esta tarjeta se utiliza para el acceso a las aerosillas del Cerro Catedral en Bariloche. Tiene el mismo conector que la de France Telecom, por eso al verla hubo un poco de desilusion, pero cuando la qusimos leer anduvo lo mas bien. No tenemos idea de que significa la informacion de header que tiene mas que nada por el hecho de tener una sola y no poder compararla con ninguna otra. Su estado es de "uso normal". Se uso por lo menos una vez, y eso es todo lo que sabemos sobre estas tarjetas. Si alguien quiere mandarnos algun mapa quizas nos tomemos el laburo de hacer los s19 para el circuito de la mino 8. ===== Start: Cut here ========================================================= ;mapa en mapas.arj ===== End: Cut here =========================================================== Saludos, drako