MD5 – algoritmo criptográfico que gera uma chave 128bits, útil para guardar senhas, ou para verificar a integridade de arquivos. (para mais detalhes de uma busca pela net) Prisma já tinha uma biblioteca md5 feita em prisma puro. Como seu desempenho não era bom com arquivos grandes, acabei portando uma da linguagem C: a pmd5.,…
Continue readingprisma
Biblioteca jpginfo.pris
Essa biblioteca é feita puramente em Prisma, não há outras dependências nem código em C. Com ela é possível extrair informações de imagens jpg, como a altura, largura, tipo de canal de cor etc. Há apenas duas funções, segue um exemplo de uso:
1 2 3 4 5 6 7 8 9 10 11 12 |
local jpg = inclua'jpginfo' local info = jpg.info('p4.jpg'); se nao info entao imprima(jpg.erro()); sis.saia(1); fim imprima('Dimensão[larg x alt]:',info.larg .. ' x '.. info.alt); imprima('Canal:', info.cs); imprima('bits por componentes:', info.bpc); imprima('Decoder:', info.f); imprima('Id:', info.id); imprima("Tam:", info.tam); imprima('versao', info.versao); //versão do jpeg; imprima('versão maior:', info.versao_maior); imprima('versão menor:', info.versao_menor); |
clique aqui para Baixar;
Continue readingMonitor de bateria em Prisma (Linux)
Uma boa função em Prisma é a es.pabra() que chama um programa externo capturando sua saída. Aproveitando isso criei um simples script que monitora a bateria, mostrando uma mensagem quando estiver descarregando. Segue o código para análise, bons estudos. Qualquer dúvida posta nos comentários!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
/* * Monitor de bateria simples em Prisma usando es.pabra() com o programa upower (linux); * e xmessage para a mensagem. */ //Sem licença (use como bem entender - o autor não será responsabilizado!) //2017 - 12 Adalberto Amorim Felipe // linguagemprisma@gmail.com //Biblioteca para permitir o uso de acentos e alguns caracteres especiais no cmd e gui do windows. //Não converte todos os tipos de utf8, basico pt-br //estou criando em C uma biblioteca mais completa para esta funcionalidade. //ATENÇÃO este arquivo deverá ser salvo no formato utf8 funcao parse(s) local tmp; a = s:analise('\n'); local info = {}; para i,v em pares(a) inicio se v <> '\n' entao tmp = v:analise(':'); se tipo(tmp)=='tabela' entao se tmp[1] e tmp[3] entao info[tmp[1]:apare()] = tmp[3]:apare(); fim fim fim // -- imprima(i,v); fim retorne info; fim//fim funcao local term = inclua'terminal'; local funcao mensagem(titulo,txt, ...) local botoes = {...}; local bts = ''; para i,v em ipares(botoes) inicio bts = bts .. '"' .. v .. '",' fim bts = bts:corte(1,-2); local cmd = 'xmessage -title ' .. titulo .. ' "' .. txt .. '" -center -buttons ' .. bts .. ' "$@" "" ;' // imprima(cmd); local ret,_,num = sis.execute(cmd); se num entao retorne convnumero(num); senao retorne falso; fim fim local cmd = 'upower -i /org/freedesktop/UPower/devices/battery_BAT0'; local a; local cont = 1; local info; enquanto 1 inicio term.defCorletra(term.verde); a, err = es.pabra(cmd); se a entao info = a:leia'*t'; a:feche(); info = parse(info); se info.present == 'yes' entao info.present = verdadeiro; senao info.present = falso; fim imprima('bateria presente?',info.present); se info.state == 'charging' entao info.state = 'carregando'; senaose info.state=='discharging' entao info.state='descarregando'; fim imprima('Estado:', (info.state:troque('charging','carregando'))); imprima('Porcentagem:',info.percentage); local perc = convnumero(info.percentage:corte(1,info.percentage:procure('%%') -1 )); // imprima(perc); se perc < 13 e info.state == 'descarregando' entao local aviso = string.formate('Bateria em estado critico, conecte o carregador agora!\n\ndescarregando: %0.2f%%',perc); imprima('Aviso::',aviso); mensagem("Aviso", aviso, ' ok '); fim senao imprima('Erro', err); fim sis.durma(1000); //term.limpeTela(); term.cursorInicio(); local alt,larg = term.tamanho(); para i = 1,alt inicio es.escreva((' '):nconcat(larg)); fim term.cursorInicio(); imprima('------['..cont..']------'); cont=cont+1; fim term.defPadrao(); |
Por enquanto é isso, até mais!
Continue readingXmessage – Linux
Cria uma caixa de mensagem sem a necessidade de biblioteca gráfica Prisma, funciona apenas em Linux. Para quem é do mundo Linux talvez deva saber o que é Xmessage, Zenity e tantos outros diálogos para linha de comando. Esses programas acima são chamados por scripts sh em linux produzindo uma caixa de mensagem para uma interação…
Continue readingGui básico em terminal | guiterminal.pris
Fiz uma correção na mensagem questão (botões) e reupei:(4/11/2017) Muitas vezes por algum motivo é necessário abrir mão da interface gráfica e usar apenas o terminal de comandos, seja por questão de memória, seja em um servidor etc. Que tal unir um pouco dos dois mundos, criando mensagens box, diálogos e listagem no terminal, usando…
Continue readingppdf – nova biblioteca de gerar pdf
Esta biblioteca é uma alternativa a lib pdf.pris. Suporta: Cabeçalho de informação. Texto linha e retângulo. imagens – jpeg e ppm. código de barra. marcadores de página. Baixe o código fonte com binário aqui: ppdf Caso use Prisma em Linux 32bits instale o ppdf.so já compilado, para outras distros incompatíveis, é necessário compilar. Para Windows instale…
Continue readingAdicionando o caminho C:\Prisma\1.0\bin na variável path do Windows
Ao adicionar o caminho da pasta bin Prisma no path de buscas do Windows, podemos usar “prisma.exe” ao invés de “C:\Prisma\1.0\bin\prisma.exe”. Ou seja, encurtamos o comando tanto para prisma quanto para qualquer programa que esteja nesta pasta. Vamos lá: Abra o painel de controle, vá para Sistema e Segurança, depois em Sistema. (Ou clique com…
Continue readingAES (encriptação e decriptação de dados)
Biblioteca para encriptar e decriptar dados, usando uma senha. Muito útil para ofuscar arquivos, assim somente com a senha será possível recuperar o arquivo encriptado. Na verdade, esta lib possui funções que encriptam apenas strings, fica a cargo do programador ler e gravar os arquivos em modo binário. Baixe arqui: http://br4.biz/arqs/wl/?id=pykln5Xyxfxw6NpV80TKzYIBS0uoVd8H&mode=regular Link corrigido(2020): https://www.mediafire.com/file/jqvcp3xdnnvr2xm/aesprisma.zip/file (clique…
Continue readingBiblioteca sha1, sha256 e md5
São bibliotecas de encriptação de dados, para ofuscar dados. Não há como reverter o processo, sendo apenas usadas para arquivar senhas e compará-las em um processo de login, também servem para verificar a integridade de um arquivo. Veja os exemplos: (link alternativo: baixar todos); SHA1: (BAIXAR)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
local sha1 = inclua'sha1' //incluindo a lib local msg = 'Olá mundo em Prisma' s = sha1(msg); //codifica em Hex imprima('Hex:', s); local bin_s = sha1.binario(msg) // codifica em formato byte bin imprima( bin_s); //outras funções que combinam o sha1 com hmac usando uma chave dando mais proteção: local hmac_hex = sha1.hmac('chave1', msg) // retorna em hexadecimal imprima(hmac_hex); local hmac_bin = sha1.hmac_binario('chave1', msg) // retorna em byte imprima(hmac_bin); |
SHA256: (BAIXAR)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
local sha256 = inclua'sha256' src = 'uma string para ser codificada'; local sha256_hash = sha256(src); imprima('Hash gerada:\n', sha256_hash); local sha256_bin = sha256.binario(src); imprima('Hash gerada bin:\n', sha256_bin); poe'\n\nEnter para continuar...' leia(); |
MD5: (BAIXAR)
1 2 3 4 5 |
local md5 = inclua'md5'; str = 'ola mundo em Prisma'; bin = md5.soma(str); imprima(bin); leia(); |
Bom,…
Continue readingConjunto de ferramentas arq (arquivamento)
Estou criando um conjunto de bibliotecas referentes a compressão, empacotamento, descompressão e extração de arquivos. Já tenho três boas libs, todas vão ficar em uma pasta chamada ‘arq’. Baixe <arqui>. As bibliotecas que já tenho desenvolvidas são: 1 – Compressão e extração lzw.pris: lzw = inclua’arq.lzw’; Apenas para texto, não é eficiente para mídias como fotos…
Continue reading