He portat la nena al cine a veure aquesta castanya de peli. Per que, és una castanya!
Als nens potser els agrada, però el guió fluix fluix... I quan dic fluix em refereixo a que un nen li costa d'entendre. Quan va acabar li pregunto: "De que anava la peli?" I no va haver-hi una resposta coherent. Els agrada per que hi ha "monstrus monstruossus", gags de porrazos i tortazos, però ja prou. Es a dir, Shrek o Cars o Frozen els preguntes de que va i t'expliquen pels i senyals de tot. No amb aquesta.
En teoria tracta del net del Dracula a veure si li surten les dents de vampir o no, ja que és mig humà. Aleshores envien la mare fora i el fan un entrenament "monstruós" a veure si es converteix (en contra dels desitjos de la mare que vol que sigui "normal"). També surt el besavi del nen que no tolera humans i vampirs vivint junts però es torna bo quan veu lo bé que va...
En resum, un petardo de flim, a evitar. O veure una tarda plujosa de diumenge si no queda cap altra remei.
Ja he llegit la segona part del "señor de la guerra". La primera part va estar bé, però no molt bé. Aquesta millora, potser és que ja coneixes als personatges, que l'ambient ja és conegut, no se, però m'ha agradat més que l'anterior. L'únic però que se li pot posar és que a vegades (i això és comú en aquesta autor) fa resums breus de situacions que estan en el llibre anterior, potser hi ha gent que li va bé fer memòria, però a mi a vegades s'hem fa repetitiu.
En aquesta segona part tracta de la traïció de Lancelot quan li posa les banyes amb la seva dona, la Ginebra. Explica els moviments estratègics dels reis i de com molts anys de pau van permetre l'expansió del cristianisme. I el títol del llibre ve d'aquí, que els cristians anomenen a Artur "enemigo de Dios", per permetre el paganisme, i ell és pagà. Clar que l'Artur tolera el cristianisme... no és una relació bidireccional. També comenta que aquesta expansió cristiana tampoc va ser pacífica. En aquest llibre també en Mordred arriba a la majoria d'edat i el fan rei, però mana poca estona per que no pren decisions gaire encertades.
Aquest sí que és recomanable, però clar, s'ha de llegir l'anterior...
Després de molts anys (uns 8 o 9) el e-Reader Hanlin V5 que tinc ha començat a donar problemes de bateria. Normalment li durava un mes, amb un us intensiu. Però recentment va començar a durar menys i no només això si no que al posar-lo a carregar no carregava. He intentat buscar la bateria online, però no he trobat on comprar-la, seria fàcil de substituir.
Aquest nou e-Reader BQ té coses que m'agraden i coses que no.
La principal avantatge és que la bateria dura lo seu, i que quan carrega ho fa com toca.
El pes del BQ és força lleuger i no cansa portar-lo amunt i avall (és el que té llegir caminant). A partir d'aquí ja és un tema personal, té coses que m'agraden i coses que no.
Per començar la he pifiat amb la funda. Es adhesiva. He vist que hi ha altres fundes normals que enganxen mecànicament el e-reader, però vaig agafar la oficial i no mola. Tampoc queda tancada, es a dir, la tapa no té cap mecanisme, un imàn, un velcro, un algo, que la mantingui tancada. A veure quan dura la funda i quan la desenganxi quin pringue deixa.
Respecte el e-reader en sí: té Wifi. Suposo que per la gent que compra ebooks és necessària. Per mi no. Té també un navegador, tampoc li veig la punta a un e-reader, no és una tablet. Però bé, s'apaga la Wifi i s'ignora el navegador.
La llum de la pantalla està molt bé, es pot graduar la intensitat, i em permet llegir pel carrer ara que es fa de nit tan d'hora. Ja no cal que vagi fent esses buscant la millor llum dels fanals.
El Hanlin tenia problemes obrint fitxers grans FB2, a vegades he tingut que trocejar un fitxer en varis més petits. De moment el BQ no ha tingut aquest problema.
La mida del text i la qualitat de la pantalla també m'agraden, no és que el Hanlin fossin dolents, tampoc és que noti diferència al respecte amb aquest.
El que porto més malament és el tema tàctil. D'acord, per definir interfaces d'usuari flexibles és necessari que sigui tàctil. Així pots crear més botons, o moure'ls de lloc, o el que calgui sense necessitat de modificar el hardware. Però clar, amb un e-reader tampoc és que es facin moltes que no siguin canviar de pàgina. Vull botons físics per poder fer això. Odio tenir que tocar la pantalla. I que a sobre que tinc que fer-ho, que el tema tàctil no sigui precís, a vegades canvia de pàgina, a vegades surt un menú d'accessos ràpids... A vegades tinc que agafar la targeta del bus, o el mòbil, o les claus i clar si toques la pantalla el e-reader comença a fer les seves coses. [Tacos i paraules malsonants variades aquí]. I resulta que l'únic botó que té serveix per "minimitzar" el llibre, WTF?! Es a dir tampoc es pot tocar. Aquest e-reader algun dia pot tenir un accident...
La diferència de pes respecte a una tablet Samsung S2 de 8.0 polzades tampoc és tanta, 163gr vs 265gr... I la bateria la tinc que carregar cada pocs dies enlloc de cada dues setmanes... Clar que també és tàctil i estaria en lo mateix. Pfffff... A veure com acaba tot plegat.
#06/11/2015 11:20 Llibres Hardware Autor: Alex Canalda
Dissabte passat hem anat al Zoo. Hem comprat un passi anual per tota la família per 85 EUR.
Ens han acompanyat companys del cole de la nena, hem vist l'espectacle dels dofins i el dels lleons marins. Una pena que estiguin remodelant la zona de la sabana, ja que no hem vist els elefants ni les girafes.
Un cop vistos els espectacles hem anat a dinar a la zona de la granja on els nens s'han pogut pintar la cara, cadascú d'un animal diferent del zoo. Un cop pintats hem anat a jugar al parc infantil que hi ha dins del zoo, on hi ha tirolines i diferents castells de fusta amb tobogans.
El cert és que el dia ha acompanyat molt ja que no feia ni fred ni calor, no feia vent i un cel blau radiant. Els nens s'ho han passat molt bé i hem acabat tots cansats de caminar tant. Un dia estupendu!
Recentment m'ha tocat barallar-me amb aquest tipus de criptografia. I realment és interessant com encaixen les diferents peces del puzle.
La motivació del PKCS#7 és que els algoritmes d'encriptació asimètrics (els que fan servir clau pública i clau privada) no poden xifrar quantitats grans de dades. Al contrari els algoritmes simètrics (la mateix clau es fa servir per encriptar que per desencriptar) són "bons" xifrant quantitats grans de dades.
Per això el que es fa és el següent: les dades es xifren amb un algoritme simètric fent servir una clau generada aleatòriament que només es fa servir en un missatge. Aquesta clau simètrica és petita i es xifra amb la clau pública d'una algoritme asimètric.
La informació arriba en Base64, que és un tipus de codificació, per la que C# ja té una forma fàcil de gestionar. Es fa amb el Convert, que retorna un array de bytes.
Aquests bytes no són ASCII, són ASN.1 (Abstract Syntax Notation 1) que és un format binari d'encapsular informació. De fet és molt similar al XML, però amb binari. Té TAGs, longitud del TAG i valor del TAG. Apart del tema del BER i el DER (però no vull explicar aquí tot l'estàndard ASN.1). El ASN.1 és antic i mig internet el fa servir (i jo sense saber-ho).
Per donar estructura a un missatge ASN.1 hi ha un llenguatge que defineix les estructures el formen. És el Encoding Control Notation (ECN), seria l'equivalent a un XSD/DTD del XML. Aleshores per rebre un missatge ASN.1 que segueixi un estàndard ha de complir una estructura ECN determinada, concretament el PKCS#7 fa servir el Cryptographic Message Syntax (RFC 5652).
Aleshores, el que defineix aquest RFC 5652 és el format en que han de posar-se les parts del missatge, es a dir:
Les dades xifrades amb l'algoritme simètric.
La clau simètrica feta servir per xifrar les dades.
El vector d'inicialització del xifrat simètric (aquest està en clar, sense xifrar).
Dades de la clau pública emprada per xifrar la clau simètrica, normalment aquesta clau està guardada en un certificat X509, aleshores en les dades s'inclou la informació típica sobre el certificat, email, dades de l'emissor del certificat (país, adreça,...), etc...
Igual que el XML posa noms a les marques, el ASN.1 té OID (Object Identifier), que identifiquen el contingut d'un tag. Aleshores cada un dels punts anteriors queda identificat dins del missatge. En format ASCII i PrettyPrint un missatge PKCS#7 pot quedar:
Per implementar tot això en C# he fet servir la llibreria BouncyCastle en la versió C#, et simplifica la vida el no tenir que batallar amb el ASN.1 ja que la llibreria m'ha permès transformar el ASN.1 a un string normal. I un cop ja tinc l'string m'he buscat la vida per desencriptar-lo amb llibreries .NET normals. He trobat altres llibreries que permeten processar el ASN.1 però cap m'ha permès obtenir el string normal i que posteriorment no hagi de parsejar-lo. Per exemple hi ha una implementació del projecte Mono que et fa un PrettyPrint del text ASN.1. També cal comentar que durant l'encriptació depenent del format en la que tenim la clau pública el ASN.1 generat té un format o un altra, no és el mateix disposar del certificat X509 o de la clau pública en format PEM.
El codi d'encriptació és força senzill. Únicament cal veure si encriptem fent servir un certificat X509 amb totes les dades o bé un fitxer PEM que conté la clau pública.
CmsEnvelopedDataGenerator gen = new CmsEnvelopedDataGenerator();
X509CertificateParser Parser = new X509CertificateParser();
StreamReader sr = new StreamReader(FitxerCertificat);
X509Certificate Cert = Parser.ReadCertificate(sr.BaseStream);
gen.AddKeyTransRecipient(Cert);
/*
byte[] KeyId = new byte[] { 1, 2, 3, 4, 5 };
TextReader TxtRead = File.OpenText(@"c:\Ruta_al_fitxer\Public.txt");
Org.BouncyCastle.OpenSsl.PemReader PubCert =
new Org.BouncyCastle.OpenSsl.PemReader(TxtRead);
Org.BouncyCastle.Crypto.Parameters.RsaKeyParameters RSAParams =
(Org.BouncyCastle.Crypto.Parameters.RsaKeyParameters)PubCert.ReadObject();
gen.AddKeyTransRecipient(RSAParams, KeyId);
*/
CmsProcessableByteArray ByteArr = new CmsProcessableByteArray(OrigenBytes);
CmsEnvelopedData Data2 = gen.Generate(ByteArr, AES256_OID_STR);
txtEncrypted.Text = Convert.ToBase64String(Data2.GetEncoded());
Per desencriptar el codi és el següent:
byte[] Base64 = Convert.FromBase64String(Origen);
/*
Codi pel Pretty Parser
ASN1Element ASN = new ASN1Element(Base64, 0);
StringBuilder SB = new StringBuilder();
ASN.BuildString(SB, 3);
string Resultat2 = SB.ToString();
PrettyPrinter P = new PrettyPrinter(ASN);
string Resultat = P.ToString();
*/
CmsEnvelopedData Data = new CmsEnvelopedData(Base64);
Content = Data.ContentInfo.Content.ToString();
string[] Splitted = Content.Split('#');
int Posicio = 0;
string ClauAESEncriptadaRSA = "";
string strIV = "";
string DadesEncriptadesAES = "";
switch(Splitted.Length)
{
//Si s'encripta amb una clau PEM sense les dades d'un certificat aleshores hi 5 parts, per que s'especifica el keyID//Queda algo com://[2, [[2, [0]#0102030405, [1.2.840.113549.1.1.1, NULL],
#88ed9a2dc3f6f520a955dda3b3460c2e72b232f0cebb20aeeb5e9a7d27e7df3d1a026b017414c61483484fb7877
d466fc8bf47b20a1a6a9b4caf314f7862ea9cdcd4c7fdea168b07748d6bd13866df1c2319c07650a4a14c697b215
982007804b49a6c7f673b928f0417d44900bedb3f97bd5c4f6a08efce136e88f7b2fa714b2c03baad24ce51a3ad0
96649393ac71af2d6bcba3d42b108b5ec9b106028fd782b29162144c01f1fbca81200006b6c1c1513929b1d8b82d
ae2ec4bd0b37d2aaa08a4f1c8901ec23ad7e4d4eda522137fec9a00d34ef25c8f5f00fbe9a3cdce83bcdede83c9d
dff7b91c0c46d6394f4150b98782c12380cccd06d06858548c872]], [1.2.840.113549.1.7.1, [2.16.840.1.101.3.4.1.42,
#dd65197a345a16990dba5e3b60653a23],
[0]#1af48e832434616b6d16e235a28690fb8b506753525e91eb0674e20cd6224e1ebe13346b6cc01cc10ecf8442
12291077750569e09986dea001beec448fb66b69c878eebae45e1303f05518705c0a0626]]case 5:
{
Posicio = Splitted[2].IndexOf(']');
ClauAESEncriptadaRSA = Splitted[2].Substring(0, Posicio);
Posicio = Splitted[3].IndexOf(']');
strIV = Splitted[3].Substring(0, Posicio);
Posicio = Splitted[4].IndexOf(']');
DadesEncriptadesAES = Splitted[4].Substring(0, Posicio);
break;
}
//Si s'encripta amb un fitxer CRT que només té la clau publica hi ha menys trossos binaris//Queda algo com://[0, [[0, [[[[1.2.840.113549.1.9.1, email@email.es]],
[[2.5.4.6, ES]], [[2.5.4.8, Barcelona]], [[2.5.4.7, Carrer A 33]],
[[2.5.4.10, La meva empresa]], [[2.5.4.11, El meu departament]], [[2.5.4.3, Projecte]]], 1444401454],
[1.2.840.113549.1.1.1, NULL],
#9a5aff081265f8a5ec74a5ec10173758c8520a74c6373455f74ce5fa35699bd036028b6999b9a5303486e95fa39da
87215e14e273639c8ad76854e9d9b3b1ef6c4d00a8f0c9b6be1c0d0f92a5298c7fcd0c4ae782ce08545d3693810655
bc7fcbfea2dd2093b8de1c7af7b930e27d72b2b4e0bb45b3624923c791bc429160b0717cc7867698f4ee991f175812
58dfd8a53b6207e482f8840ff832a721188043f849d561d4115195a664f8baacdab2d75ccb486a4107e94c8d4d3c3f
f542cb997a8c9d444a53ceb21434b48c85bbf18d45131b9d5998cbb06911537bc1f8413cf3e669d3289a42fd699cc8
8e1b0d2d5b399bf40c2b4c2aefa5967c66516cfba0c]], [1.2.840.113549.1.7.1, [2.16.840.1.101.3.4.1.42,
#6ab63f859a84a8422708ceed3a4d3244],
[0]#242d87bbf418ab8773945fedc0e38761e111827e298a72998a5e52e241b723df86e9804ef373118d4ba951b2e0
bea96f41bc6da80a5131dc8fc6d98d97d378cc25d5b6f8c2b0baf42506dd1a7bf9f9de]]case 4:
{
Posicio = Splitted[1].IndexOf(']');
ClauAESEncriptadaRSA = Splitted[1].Substring(0, Posicio);
Posicio = Splitted[2].IndexOf(']');
strIV = Splitted[2].Substring(0, Posicio);
Posicio = Splitted[3].IndexOf(']');
DadesEncriptadesAES = Splitted[3].Substring(0, Posicio);
break;
}
}
byte[] ClauAESEncriptadaRSA_bytes = ConvertHexStringToByteArray(ClauAESEncriptadaRSA);
OrigenBytes = ConvertHexStringToByteArray(DadesEncriptadesAES);
//Desencriptador de la Clau AES
RSACryptoServiceProvider KeyImporter = new RSACryptoServiceProvider();
//Carreguem la clau
KeyImporter.LoadPrivateKeyPEM(PrivateKeyPEM);
//Obtenim la clau AESbyte[] PrivateKey = KeyImporter.Decrypt(ClauAESEncriptadaRSA_bytes, false);
AesCryptoServiceProvider Decrypter = new AesCryptoServiceProvider();
byte[] IV = ConvertHexStringToByteArray(strIV);
ICryptoTransform EncDec = null;
Decrypter.Key = PrivateKey;
Decrypter.IV = IV;
Decrypter.Mode = CipherMode.CBC;
Decrypter.Padding = PaddingMode.None;
EncDec = Decrypter.CreateDecryptor();
DecryptedBytes = newbyte[OrigenBytes.Length];
for (int i = 0; i < OrigenBytes.Length; i = i + 16) EncDec.TransformBlock(OrigenBytes, i, 16, DecryptedBytes, i);
if (chkCopyToClipboard.Checked) Clipboard.SetText(txtDecrypt.Text);
txtBase64.Text = Content;
txtDecrypt.Text = ConvertByteArrayASCIIToString(DecryptedBytes);
txtDecrypt.Text = txtDecrypt.Text.Replace("[03]", "");
txtDecrypt.Text = txtDecrypt.Text.Replace("[04]", "");
txtDecrypt.Text = txtDecrypt.Text.Replace("[05]", "");
txtDecrypt.Text = txtDecrypt.Text.Replace("[06]", "");
txtDecrypt.Text = txtDecrypt.Text.Replace("[07]", "");
txtDecrypt.Text = txtDecrypt.Text.Replace("[08]", "");
txtDecrypt.Text = txtDecrypt.Text.Replace("[09]", "");
#02/11/2015 10:22 Programació C# Autor: Alex Canalda
Segueixo llegint l'autor de les novel·les d'en Sharpe i del Grial, en Bernard Cornwell. Aquest cop és una trilogia que tracta la llegenda del rey Artur, però des d'un punt de vista històric, sense màgia.
Està explicada des del punt de vista d'un dels capitans de l'exèrcit d'Artur, un tal Derfel, que quan escriu la història és un monjo vell. Així que ja es sap que ell sobreviu (és com el Sharpe, que com hi ha un munt de llibres el personatge no pot morir). Descriu una societat medieval miserable, molt, molt, molt supersticiosa i batalles no gaire èpiques. La mida dels exercits res té a veure amb els d'en Sharpe, són 200 "lanceros". Les armes també, escuts, espases i llances. Els arcs no estan desenvolupats. I la cavalleria és escassa i quan es topa amb una barrera d'escuts no funciona.
L'aventura d'aquest primer llibre és curta, és el Derfel quan era petit, com va conèixer a l'Artur i com aquest per casar-se amb la Ginebra va trencar un compromís de casament amb el regne de Powys i causa una guerra. També descriu el rei Benoic que vivia a Mont St. Michel i que té dos fills, el covard però guapo Lancelot i el valent Galahad. En la guerra contra els francs perd el rei Benoic i tots surten per cames altra cop cap a Britania. El Merlin és un druida que té els seus objectius i tots respecten molt, amics i enemics. També hi ha un odi molt gran contra els "sajones" que són els alemanys. Uns beuen hidromiel i els altres cervesa...
El llibre no està malament, bon ritme però no mata molt. Els del Sharpe i els del Grial em van agradar més. Ara vaig pel segon.
He anat al cine a veure aquesta peli i m'ha agradat força. Es surt del guió habitual de bo molt bo i dolent molt dolent. També es veuen les pifies que fan el USA i tot!
[Spoilers] La peli tracta d'una teòrica missió a Mart. Quan l'equip d'investigació està allí hi ha una tempesta que els obliga a evacuar. Durant l'evacuació un d'ells es veu arrossegat per una antena i queda enrere, els altres el donen per mort. Quan desperta, ferit, aconsegueix arrossegar-se fins la base i curar-se. S'adona que està sol i abandonat. Però enlloc de caure en el desanim i la desesperació, lluita per sobreviure. A base de solucions enginyoses va recuperant la forma de viure i aconsegueix comunicar-se amb la Terra, que torna a rescatar-lo. Inclús els USA la pifien en un llançament i han de recórrer als xinesos per arreglar el problema, i tothom col·labora![/Spoilers]
La peli està molt bé i val la pena, esperant que surti en FullHD.
La festa dels Supers va estar molt bé, ja vam rescatar la Lila del malvat senyor Pla. De fet la festa aquesta té truc. I estigues atent per si et toca a tu algun dia:
No anar amb cotxe. Ideal si algú et puja en cotxe i marxa.
No anar a cap activitat que s'hagi de fer cua, perque per 5 minuts d'activitat faràs hores de cua.
Anar al concert i marxar caminant sense pressa quan acaba.
Si els nens et diuen que volen pujar a algun inflable o colchoneta els dius que al costat del GV2 hi ha uns que no cal fer cua (tampoc són tontos), no és gratis però seràn els 12EUR més ben invertits del dia. Si no és al GV2, algun lloc que es conegui.
Aquest cap de setmana hem vist aquesta peli Disney. És el que s'anomena un "Flop", una pifia. Igual que John Carter. Pelis amb uns molt bons efectes especials i alt pressupost però que no encaixen amb el públic objectiu amb el que tenen que connectar i fallen.
[Spoilers]La peli comença pel final, on els personatges van explicant la història que els ha portat allí. Després comença el misteri de Tomorrowland que és un lloc molt avançat però difícil de trobar. El per que existeix, a que es dediquen etc... es resol a mitja pel·lícula, però no queda gaire clar. I al final de tot expliquen el per que de tot plegat d'una forma molt condensada i són conceptes molt avançats per nens de 6+ (com el lliure albir).
Resumint, a Tomorrowland han inventat una màquina que veu el futur i és un futur dolent que destruirà el món. I assumeixen que és invariable. En realitat aquesta màquina és el que va construint aquest futur dolent, però destruïda la màquina la cosa canvia, i el futur és millor però s'ha de treballar per aconseguir-lo. Tota aquesta explicació és molt breu, per que la major part de la pel·lícula se la passen fugint de robots humanoides molt dolents...[/Spoilers]
Resultat: bons efectes, bon casting, mal guió, enfoc incorrecte de public objectiu. No recomanable per nens 6+, mínim 12. I així i tot pse, pse.