Esta lista de exercícios resolvidos é um manual para ajudar todo aluno iniciante e não só, a adquirir e aprimorar as habilidades necessárias para se trabalhar com Python, de forma rápida e consistente. Estude e desfrute do conteúdo. 1º Exercício Faça um programa que informe a versão do Python que você está utilizando Solução import sys print ( "Versão do Python" ) print (sys.version) print ( "Informação da versão instalada" ) print (sys.version_info) Atenção : - O módulo sys fornece funções e variáveis usadas para manipular diferentes partes do ambiente de tempo de execução do Python; - Pra quem ainda não está familiarizado com a linguagem, um módulo é um arquivo contendo definições e comandos em Python para serem usados em outros programas. 2º Exercício Faça um programa em linguagem Python que converta metros para centímetros. Solução print ( ' \t ----Conversão de medida---- ' ) metros = int ( in...
Afinal , o que é o buffer overflow? ou estouro de buffer - transbordamento de dados e que tipo de cuidados devo ter?
O buffer overflow ou estouro de buffer é um ato de violação de segurança da memória que ocorre quando de alguma maneira é inserido mais dados de entrada do que o tamanho esperado pelo seu programa causando um estouro de memória. Suponhamos que eu defina uma vetor de string de tamanho 120 e um usuário/hacker tente inserir 190 caracteres. Dessa forma, caso eu não utilize uma função que limita o tamanho a ser recebido, o meu programa vai estar estourando o buffer desta variável, permitindo sobrescrever a memória do meu Sistema Operacional, ou seja, os caracteres além dos 119 já que o caractere 120 é por regra o caractere nulo, deverão ser escritos em uma área reservada para outra coisa.
Por isso, sempre que escrevemos um programa em C, devemos evitar o uso de qualquer função que não limita o número de caracteres a serem lidos.
Lembre-se, o buffer é o espaço que cada variável tem num programa, por exemplo cada char é representado através de um byte na memória.
A melhor solução é :
Utilizar | Em vez de |
---|---|
fgets() | gets() |
strncpy() | strcpy() |
strncat() | strcat() |
snprintf() | sprintf() |
Exemplo: utilizando fgets()
Aqui está o código-fonte para entendermos como funciona a função fgets(). O programa foi compilado e executado com sucesso usando o compilador Dev C++, no ambiente Windows. Ao executar o programa vou digitar uma string contendo mais de 27 caracteres e, como a função fgets() nos permite especificar um tamanho de buffer específico , ela impede qualquer ataque de estouro de buffer.
#include<stdlib.h>
int main() {
char string_nome[27];
printf("Entre com a string: \n");
fgets(string_nome,27,stdin); //substitui a função gets()
/* A função fgets pega uma string e armazena em string_nome, com tamanho de 27 caracteres, de stdin. - stdin é o dispositivo de entrada padrão (geralmente o teclado)*/
printf("\n\n String digitada: %s\n\n",string_nome);
system("pause");
return 0;
}
Comentários
Postar um comentário