Mais um blog inútil.

Setembro 3, 2010

Cena de Urso da Tipp-Ex

Filed under: Fail,Useless,lulz — armorfist @ 0:01

Boas amiguinhos!

Já não blogo há algum tempo, portanto aqui vai um post sobre uma coisa completamente inútil:

Um amigo meu mostrou-me nas internets uma cena fofi, que podem ver aqui:
http://www.youtube.com/profile?user=tippexperience&feature=iv&annotation_id=annotation_820885

Basicamente tens alto player etc e depois metes palavras (verbos) na caixinha de texto e mostra-te um video se existir. O problema é que eu sou preguiçoso e não me apetecia tar a pensar em palavras. Então decidi fazer alto scripte em php. Fui às internets, saquei uma lista de 600 e tais verbos mais usados em inglês e fiz o seguinte:

<?php
/*
Output:

No match:
<?xml version="1.0" encoding="utf-8" ?><datas><status>NO MATCH</status><url>gaC_66xPvBc</url><id>1</id><duration>0.001227855682373</duration></datas>
Match:
<?xml version="1.0" encoding="utf-8" ?><datas><status>MATCH</status><url>Ks_2nKOKVGg</url><cost>0</cost><id>38</id><duration>0.00061297416687012</duration></datas>
*/

//No execution timeout
set_time_limit(0); 

// Open Verb list
$handle = @fopen("verb_list.txt", "r");

if ($handle)
    while (!feof($handle))
    {
		// Get word
        $word = fgets($handle, 4096);

		//Filter Word
		$word = trim(str_replace(array("\r\n", "\n", "\r"),'',$word));

		// Create a stream
		$opts = array(
		  'http' =>array(
			'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
			'method' =>"POST",
			'content' => http_build_query(array('words' => $word, 'language' => 'en')),
			'timeout' => 5,
		  )
		);

		$context = stream_context_create($opts);

		// Open the file using the HTTP headers set above
		$file = file_get_contents('http://217.174.206.135/tippex/scripts/matchfinder.php', false, $context);

		// Make an Object out of the XML
		$xmlobj = simplexml_load_string($file);

		// Is it a MATCH?
		if ($xmlobj->status == 'MATCH')
			echo "<a href='http://www.youtube.com/watch?v=".$xmlobj->url."'>".$word."</a> - http://www.youtube.com/watch?v=".$xmlobj->url."<br/>";

		// No flood
		sleep(1);
    }

// Close file
fclose($handle);
?>

Os comentários estão em inglês porque estou habituado a faze-los em inglês. Basicamente deu-me a seguinte lista:

Lista Completa

Muitos vídeos estão repetidos, o que poderia ter sido evitado pois eles dão o ID do video no XML, mas só me lembrei disso depois e não me apetece fazer a filtragem agora. Talvez amanhã.

Espero que gostem!

Beijinhos abraços e muitos palhaços.

Setembro 2, 2010

Bus Pirate – Firmware update

Filed under: Drama,Fail,Useless — thread @ 0:04

Bom noite amiguinhos!! (disseram-me que "amiguinhos" ficava muito gay, então decidi editar).

Estive quase para blogar sobre a aventura que foi conseguir recuperar a password neste blog inútil... mas fica para outra vez.

Ora estava eu hoje com vontade de arranjar problemas e decidi fazer um firmware update ao meu Bus Pirate. Dei uma vista de olhos na diagonal no site mas como não estava com muita paciencia para ler, decidi logo zergar à campeão e fiz logo o download do maior numero que sufixava o nome dos ficheiros de firmware disponiveis para download no repositório.

Mal aquilo acabou de sacar a coisa, liguei-me via serie ao Bus Pirate, activei o bootloader mode, e em seguida fiz logo cócó:

Fail1 Tratado2 Bus Pirate   Firmware update

Pronto... depois de rapidamente perceber que tinha brickado o Bus Pirate, também percebi que esta coisa ia tentar rescrever o bootloader que por sua vez estava activo.. e não ia poder ser re-escrito!

Agora sim, tinha um desafio e uma vontade enorme de fazer serão à volta disto para o unbrickar.
E decidi também blogar sobre isto caso alguem faça o mesmo cócó que eu fiz... pode ser que seja uma coisa pouco útil dentro desta vasta inutiilidade que estão para ver!

Comecei pelo que pensei ser o caminho mais simples... dado que o Bus Pirate tem uma interface ICSP, decidi tentar aceder directamente à pic com o auxilio dum pic debugger/programmer.

Portanto peguei então no lixo seguinte:

Tralha1 300x225 Bus Pirate   Firmware update

Montei o estaminé seguinte:

Bench2 300x267 Bus Pirate   Firmware update

Alimentado pela besta seguinte:

PowerSupply 300x225 Bus Pirate   Firmware update

Ora resumindo pseudo-tecnicamente a coisa, fiz o seguinte:
Interliguei o pickit3 ao interface ICSP do bus pirate com os cabinhos e alimentado por uma fonte de alimentação... (que podia ser 2 pilhas ou usar o próprio pickit3.. mas achei que assim ficava mais giro e tenho de dar uso as inutilidades cá de casa!) E as relações de cor/função na foto são:

amarelo -> MCLR | vermelho -> 3.3V | preto -> ground | azul -> PGD | verde -> PGC

Após esta cangalhada estar bem ligada, deve acender um led vermelhinho e outro verde no bus pirate. Se não acender e se eventualmente cheirar a queimado significa que têm de encomendar umas coisinhas na farnell ou assim.
Dado isto, está na altura de aproveitar o que o opensource tem de bom, e descarregar uma versão qualquer das sources do bus pirate para a sua amada pic. Decidi descarregar primeiro as sources da versão 4.3 e abri no mplab. (Nota... se realmente estiverem a salvar um bus pirate e queiram poupar tempo e trabalho... passem já para a parte final do post onde tem uns procedimentos de 1 a 15, que indica como flashar um bootloader e firmware com hex files, poupando assim a trabalhera de compilar as coisas todas.)

Algo importante a referir aqui, é que caso estejam a fazer este procedimento, devem instalar o mplab juntamente com outro pacote da microchip -> O mplab c30 (pode ser a versão LITE) que contem o toolkit para compilar e linkar os projects para pic24's (que vêm no bus pirate v3).

Caso tudo esteja correcto, indo a Project -> Build all deverão obter o resultado seguinte:

BuildSuccess Tratado1 300x162 Bus Pirate   Firmware update

Agora só se tem que selecionar o programador que vai ser usado para escrever o firmware.. que neste caso é um pickit3: Programmer -> Select Programmer -> 4 Pickit3.

E selecionar o pic em questão... que no caso do meu bus pirate v3 é o PIC24FJ64GA002 (mais alguem que esteja a fazer isto, deverá conferir a sopa de letras na pic do seu bus pirate e selecionar a correspondente): Configure -> Select Device -> Device: <escolher o device na dropdown box>

Com isto, penso que é seguro dizer que se pode ir a Programmer -> Program, que deverá dar o seguinte resultado:

SucessProgram Tratado1 Bus Pirate   Firmware update

Agora só têm que desligar a fonte de alimentação, desligar o pickit3, retirar os cabinhos todos do interface ICSP, ligar por usb ao pc, e abrir um terminal na COMx correspondente e ver se o gajo respira:

BusPirate AliveAgain Tratado Bus Pirate   Firmware update

E parece que sim! De novo à vida inútil, pronto para ir para a prateleira mais uns meses apanhar pó...

Agora já só falta colocar um bootloader nisto, que como podem ver está com a v255.255 que quer dizer isso mesmo que estão a pensar.

Para poupar espaço no blog, vou apenas referir os procedimentos sem estar a largar mais screenshots.

1 - ligar novamente o bus pirate ao pickit3 com os passinhos todos anteriores.
2 - abrir o mplab
3 - ir a File -> Import -> selecionar o .hex file que contem o bootloader desejado. No meu caso: BPv3-Bootloader-v4.4.hex
4 - Selecionar o programador em Programmer -> Select Programmer e selecionar o device em Configure -> Select Device
5 - ir a Programmer -> Program
6 - se não houver erros, desligar o bus pirate do pickit3 e da alimentação (verificar que o bus pirate está mesmo desligado)
7 - short entre PDC e PGD (basicamente, ligar o cabo azul ao verde)
8 - Ligar o bus pirate por usb
9 - tentar pingar o bootloader com: pirate-loader.exe --dev=COM3 --hello
10 - Se não houver erros até aqui, estamos prontos para colocar novamente um firmware, neste caso será o último, o 5.7
11 - Abrir o ds30 Loader GUI.exe (esta util bem como o pirate-loader encontram-se no pacote de update de firmware/bootloader que se pode descarregar do repositorio de code do bus pirate).
12 - Selecionar o BPv3-Firmware-v5.7.hex e pressionar "Download" (claro está que se quiserem uma versão custom da coisa, têm que sacar a source, compilar, etc.. basicamente seguir os passos descritos anteriormente neste post).
13 - Se não houver erros, desligar o bus pirate do usb
14 - retirar o short entre o PDC e PGD (melhor ainda -> desligar todos os cabos... já não vão ser necessários)
15 - Ligar o bus pirate por usb novamente e aceder à consola pela respectiva COMx

Deverão ter o seguinte aspecto:

newfirmware Bus Pirate   Firmware update

E pronto...

Agora que já vos gastei 5 ou 10 minutos do vosso tempo, já posso ir jogar Starcraft II.

Agosto 22, 2010

McEliece e a QFT

Filed under: Fail,Serious Business — dongs @ 5:17

Nos últimos dias, tem andado uma notícia a passar pelos sites de notícias "científicas" que me chamou a atenção. Pela negativa. Pois parece que uns gajos quaisquer descobriram que o algoritmo proposto pelo McEliece em 1978 é resistente a "todos os ataques quânticos". Que valente merda de "jornalismo".

Quem se tivesse dado ao trabalho de ler o artigo tinha reparado que só foram considerados ataques baseados na QFT (Quantum Fourier Transform). A QFT é extremamente útil na análise de sistemas criptográficos, dado que permite detectar períodos de uma função consideravelmente mais rápido que um computador clássico. Isto é posto em uso no algoritmo de Shor e extensões do mesmo para quebrar sistemas baseados em factorização de inteiros (RSA), logaritmo discreto (DH, DSA), logaritmo discreto em curvas elípticas (ECDH, ECDSA), etc.

No caso do algoritmo de McEliece (mal escrito num dos artigos --- será assim tão difícil?), o problema a resolver é consideravelmente diferente --- trata-se de descodificar um código de Goppa aleatório. No caso genérico, este problema está na classe NP-hard, e não vai ter nenhuma aceleração exponencial no futuro. Como tal, o resultado obtido não é nenhuma surpresa, e nem sequer justifica chegar às notícias.

Finalmente, o argumento que o McEliece resiste a todos os ataques quânticos conhecidos simplesmente não é verdade. É sabido que o algoritmo de Grover acelera o processo de pesquisa quadraticamente; isto é usado eficientemente para acelerar o algoritmo clássico que quebra o McEliece, de forma a que sejam necessárias chaves 4 vezes maiores.

Agosto 13, 2010

Desenvolvimentos no SHA-3

Filed under: Serious Business,Useless — dongs @ 1:06

Ora viva,

Como os leitores deste blog devem certamente lembrar-se, decorre neste momento uma competição para seleccionar uma função de hashing adequada para servir como um novo standard, denominado SHA-3.

As funções restantes neste momento são: BLAKE, Blue Midnight Wish, CubeHash, ECHO, Fugue, Grøstl, Hamsi, JH, Keccak, Luffa, Shabal, SHAvite-3, SIMD e Skein. No próximo dia 24, serão anunciados os 5 finalistas da competição.

Quais destas funções serão escolhidas é impossível de saber ao certo. Das funções listadas, não foram encontrados ataques que reduzissem dramaticamente a segurança de qualquer uma delas. Existem algumas decisões no design destas funções que podem afectar a segurança, no entanto.

A função CubeHash torna mais fácil obter preimages de 512 bits do que o esperado; ao invés de O(2^512) operações, são apenas necessárias O(2^384). A relevância deste problema é bastante discutível --- mesmo com computadores quânticos e transformando todos os átomos em qubits, seria difícil encontrar 2^192 no universo inteiro. No entanto, este nível de segurança vai contra as regras da competição, que especificavam um nível de segurança mínimo de 2^512. Isto põe a passagem desta função para o próximo passo em risco.

Outro ponto a considerar é o desempenho das funções. O NIST especificou que qualquer função escolhida terá de ser mais ou igualmente rápida que o SHA-2. Isto deixa-nos com as seguintes funções: BLAKE, Blue Midnight Wish, Shabal, Skein, CubeHash, Keccak, SIMD, Luffa (parcialmente). Algumas destas (i.e., ECHO e SHAvite-3) são extremamente acelerada se existirem instruções específicas de AES no sistema (AES-NI).

Dito isto, é uma decisão difícil escolher as 5 funções finalistas. Um palpite pode ser: BLAKE, Shabal, Skein, Blue Midnight Wish, Keccak. Existe um problema com este palpite, dado que as primeiras 4 funções são todas bastante semelhantes e pode ser vantajoso ter mais variedade, mas vou ignorar esse pequeno detalhe.

Agosto 11, 2010

Arvorezinha – POSTSCRIPT

Filed under: Arvorezinha — jsaramago @ 17:42

Boas,
depois de ver estas novas arvorezinhas, deu-me uma vontade de fazer uma. O postscript é muito marado, é uma maquina de stack, e ainda por cima, a origem das coordenadas é no canto inferior esquerdo. Aqui vai...

%!PS

/cm {28.34645669 mul} def %definir centrimetros
/size{2 cm}def %definir uma constante
/w{595}def %width da folha em pontos
/h{842}def %height da folha em pontos
/PageSize [ w h ]
/movetoTop{
	/yy exch def
	/xx exch def

	h yy sub
	/aux2 exch def

	xx aux2 moveto
}def % O (0,0) é no canto inferior esquerdo, então esta função transforma o (0,0) no canto superior esquerdo com as coordenadas positivas para baixo

/Courier             % Nome do tipo de letra
size selectfont      % Definir o tamanho da letra

0 1 4{
	/i exch def
	i size mul
	size add
	/yy exch def
	0 1 i{
		/j exch def
		j size mul
		size add
		/xx exch def
		xx yy movetoTop
		(*) show
		clear
	}for %colunas
}for %linhas

showpage             % imprimir página

O resultado final é este:

ps Arvorezinha – POSTSCRIPT

Arvorezinha em Windows PowerShell

Filed under: Arvorezinha,Coding,Windows — amg @ 15:17

Após colocar a ideia da arvorezinha, vi muitos ports a aparecerem aqui. No entanto não estão mesmo na RFC da "primeira", pois é pedido o numero maximo de bases da arvore (ler N e ir com um for ate N).

Hoje lembrei-me que ainda não colocaram aqui uma em Windows PowerShell, por isso aqui vai:

# This program is free software. It comes without any warranty, to
# the extent permitted by applicable law. You can redistribute it
# and/or modify it under the terms of the Do What The Fuck You Want
# To Public License, Version 2, as published by Sam Hocevar. See
# http://sam.zoy.org/wtfpl/COPYING for more details.

$str = "*"
$max = read-host "Num: "
For ($i=1;$i -le $max;$i++)
{
echo $str
$str += "*"
}

Agosto 10, 2010

Arvorezinha em AppleScript

Filed under: Arvorezinha,Coding,OSX,lulz — gatuno @ 16:52

Boas tardes a todos,

Ontem à noite, pelas 4 ou 5 e tal da matina, provavelmente devido aos líquidos de Baco e afins, não consegui, por questões várias, colocar aqui a primeira versão da arvorezinha em AppleScript. Como poderá ver o leitor, trata-se de uma linguagem de programação altamente sofisticada e complexa, que não é para qualquer um...
Quem quiser faço um bundle para correr como aplicação :-)

(*
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004

Copyright (C) 2004 Sam Hocevar

Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.

DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

0. You just DO WHAT THE FUCK YOU WANT TO.

*)

set title to "\\m/ 4rV0R321NH4 4ppL3scR1p7 V1.0 H4rD3N3D \\m/"
set sloc to text returned of (display dialog "How many lines?
RFC is lines=5" with title title with icon 1 default answer "5" buttons {"Generate!"} default button 1)
set arv to ""
set j to sloc
set i to 1
try
repeat j times
repeat i times
set arv to arv & "*"
end repeat
set i to i + 1
set arv to arv & "
"
end repeat

display dialog arv with title title buttons {"Save the arvorezinha!"} default button 1
on error
display dialog "7H3R3 w42 4 3RR0r P4RS1N' 73h NUMb3R 0f l1N32. 7ry 4941n!" with title title buttons {"OK"} default button 1
end try

Finalmente, ao executarmos o script, de acordo com o RFC, obtemos o seguinte resultado:

shot 300x148 Arvorezinha em AppleScript

Salvem a arvorezinha!...

source

Julho 23, 2010

Maquinas Fotográficas Vintage

Filed under: Serious Business,Useless,lulz — falso @ 0:37

Ora viva amigalhaços!
Eu desde há uns tempos que ando fascinado com maquinas fotográficas clássicas, e então há coisa de uns meses atrás vi alta pérola no eBay, uma Kodak Junior II por um preço mesmo bacano, o gajo la dizia que estava boa, e o rating dele era 100% então comprei logo à fome.

Pronta a disparar Detalhe da lente

Quando a recebi é que descobri que havia um drama maior, esta maquina usa rolos de 620, que já não são fabricados, mas com ajuda das Internets descobri que existem os rolos de 120, mas há um pequeno problema, o "carreto" dos rolos de 120 é um bocado mais comprido e mais largo que os de 620, e não cabe na minha maquina. E de novo, Internets to the rescue, achei uns documentos a explicar que se pode limar e cortar um bocado do plástico dos rolos de 120 ate atingirem o tamanho dos clássicos de 620.
Comprei então um pack de 5 rolos de 120 a PB no eBay por alta preço, pedi uma lima toda xpto a um amigo, e eu mais a minha namorada aplicamos-nos a lixar até aquilo caber na maquina.

Depois entretanto parti uma perna e tal, e o rolo teve mil anos na maquina, até que houve um dia que fui com uns amigos até aos Algarves, e eu mandei logo a dica que tínhamos de passar na Praínha de Alvor para tirar umas fotos, porque há uns aninhos atrás o grande Xumpi levou-me la e amei mesmo aquilo.

Andei lá de tripé e tal na praia a tirar fotos com esta relíquia :-P Quando voltei, pus o rolo a revelar, e DUAS SEMANAS E MEIA depois estava revelado, e o resultado foi melhor do que eu esperava!

nameNNNN-001 nameNNNN-003
nameNNNN-006 nameNNNN-004

As fotos estão todas aqui.


Agora há umas semanas atrás novamente no eBay vi alta SLR classica dos anos 70 fabricada na RDA, uma Praktica Super TL 1000, o preço era tão apetecível que não resisti e comprei.

praktica super TL1000 Maquinas Fotográficas Vintage

Esta maquina já é mais profissional, é a minha primeira SLR, e pelo que descobri um pouco tempo depois de a ter é que existem MONTES de lentes para ela, usa o tipo de rosca M42. Tem alta "light-meter" para dizer como esta o nível de luz, bem, é uma maravilha! Comprei um rolo, e nestas ferias tenho estado a tirar fotografias com ela. Revelei-as hoje, e para mim ficaram mesmo baris! Estão com alta aspecto vintage, parece que foram tiradas nos anos 70 ou 80.

prakticaNNNN-004 prakticaNNNN-001
prakticaNNNN-012 prakticaNNNN-021
prakticaNNNN-025 prakticaNNNN-008

As fotos estão todas aqui.

Espero que tenham curtido, fiquem bem e joguem muito!

Junho 14, 2010

Arvorezinha – OCTAVE

Filed under: Arvorezinha — jsaramago @ 23:04

Boas,
Noutro dia, estava eu muito bem a trabalhar para middleware na faculdade, até que veio ter comigo uma gaja das quimicas a perguntar se eu sabia como chamar uma função em octave. Tive que dizer que não sabia, mas pensei, ainda não existe uma arvorezinha em octave. Aqui vai ela.

C:\Octave\3.2.4_gcc-4.4.0\bin>cat arvorezinha-octave.txt
for i=1:5
	for j=1:i
		printf("*")
	endfor
	printf("\n")
endfor
C:\Octave\3.2.4_gcc-4.4.0\bin>octave.exe arvorezinha-octave.txt
GNU Octave, version 3.2.4
Copyright (C) 2009 John W. Eaton and others.
This is free software; see the source code for copying conditions.
There is ABSOLUTELY NO WARRANTY; not even for MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  For details, type `warranty'.

Octave was configured for "i686-pc-mingw32".

Additional information about Octave is available at http://www.octave.org.

Please contribute if you find this software useful.
For more information, visit http://www.octave.org/help-wanted.html

Report bugs to  (but first, please read
http://www.octave.org/bugs.html to learn how to write a helpful report).

For information about changes from previous versions, type `news'.

*
**
***
****
*****

Junho 7, 2010

Arvorezinha paralela – pthreads

Filed under: Arvorezinha — jsaramago @ 17:12

Boas. Como meu primeiro post neste belíssimo blog decidi fazer uma arvorezinha nunca vista. Uma Arvorezinha paralela usando pthreads do C. Completamente inutil....

/*
*  arvorezinha_pthread.c
*
*  Created on: 28/5/2010
*  Author: João Saramago
*  Versão da arvorezinha paralela com pthreads
*/

#include <pthread.h>
#include <stdlib.h>
#include <stdio.h>
#define LINHAS 5

void* arvorezinha(void*  arg){
	int i;
	int n=*(int*)arg;
	char* out = malloc(sizeof(char)*n+1);
	for (i = 0; i <n; ++i) {
		*(out+i)='*';
	}
	*(out+i)='\0';
	return (void*)out;
}

int main(int argc, char **argv) {
	int i;
	pthread_t t[LINHAS];

	for(i=1;i<=LINHAS;i++){
		pthread_create(&t[i-1],NULL,arvorezinha,&i);
	}

	for(i=0;i<LINHAS;i++){
		void* out;
		pthread_join(t[i],&out);
		printf("%s\n",(char*)out);
		free(out);
	}
}
« Posts anteriores