Hello World

Ici on trouve de l'actu, des essais sur les technos de l'information, de l'étrange et pas mal de bazard...

Ce blog véhicule des images, quelques videos, des sons, du code et des outils.

Bon surf.

Samedi 10 février 2007

Toujours dans le domaine de la visualisation 3D de données, on peut rechercher des patterns caractéristiques.

On attribue une couleur a chaque pattern et on place un cube en (x,y,z) ,ce triplet étant fonction de la position de l'octet dans le fichier.

Un code de visu simplissime:

If (IntegerArray%(k)=Pattern8%) Then
red%=0
green%=128
blue%=255
;Place un Cube-Copie
NewSpcell=CopyEntity(Spcell,trinity)
PositionEntity NewSpcell,xx,yy,zz
EntityColor NewSpcell,red%,green%,blue%
End If

Si on charge un fichier de pattern représentant des OpCodes caractéristiques (manipulation de l'accumulateur,sauts, subs) de microprocesseur (ici du 6502) on peut obtenir des résultats interessants.

Visualisation d'une image disque contenant du binaire Oric:

Prochaine étape: Exploration de code viral, d'ou le nom "Pluto Kiss".

Par Franck Balmer - Publié dans : Crypto et Terato
Ecrire un commentaire - Voir les commentaires - Recommander
Vendredi 9 février 2007

Pour chercher un ordre caché dans un flot de données qui semblent aléatoires, rien de tel qu'une petite balade dans l'espace des phases:

On visualise (en 3D, merci Blitz) des triplets (x,y,z) de valeurs successives.

Ex, si IntegerArray% contient les valeurs du fichier données:

xx=IntegerArray%(a2*k-b2)-IntegerArray%(a3*k-b3)
yy=IntegerArray%(a1*k-b1)-IntegerArray%(a2*k-b2)
zz=IntegerArray%(a0*k-b0)-IntegerArray%(a1*k-b1)

(ou a1=a2=a3=1 et b1=1,b2=2,b3=3)

Autre variante, ou pseudox et pseudoy parcourent un plan 800x600 quand on balaye les valeurs:

pseudocos=pseudox/Sqr(pseudox^2+pseudoy^2)
pseudosin=pseudoy/Sqr(pseudox^2+pseudoy^2)

xx=IntegerArray%(a2*k-b2)-IntegerArray%(a3*k-b3)
yy=Int(pseudocos*(IntegerArray%(a1*k-b1)-IntegerArray%(a2*k-b2)))
zz=Int(pseudosin*(IntegerArray%(a0*k-b0)-IntegerArray%(a1*k-b1)))

Apres, ce n'est que de la manipulation d'objets 3d en Blitz.

 Exemple de "nebulisation" d'un code source:

 

Par Franck Balmer - Publié dans : Crypto et Terato
Ecrire un commentaire - Voir les commentaires - Recommander
Lundi 8 janvier 2007

C'est peut-étre déja connu, mais voici un moyen que j'utilise pour récupérer les octets d'un échantillon sonore chargé en Blitz.

La bidouille consiste à utiliser les commandes dédiées aux "Bank" mémoire sur les Descripteurs Son.

Brutal, mais ça à l'air de marcher.

Maintenant il faut vérifier que ce n'est pas n'importe quoi qui est renvoyé par PEEK et trouver comment les échantillons sont stockés/codés en RAM.

Si c'est cohérent et donc exploitable, encore une nouvelle possibilité du Blitz...

Un chtio bout de code:

AppTitle "Blitz Basic Bank Hack

Graphics 640,480,16,2

;On prend un prog Casio FX602p

SndFileName$="number.mp3"

SndBank=LoadSound(SndFileName$)

;A partir de maintenant, on traite le handle Son

;Comme un handle Bank

;Bare Metal Coding Style...

SndLength=BankSize(SndBank)

x1=0

y1=0

Color 255,0,0

For cursor=1 To 639 ;SndLength pour tout parcourir

CurrentByte=PeekByte (SndBank,cursor)

y1=480-CurrentByte

Line x1,480,x1,y1

Delay 5

x1=x1+1

If (x1>639) Then

;Cls

x1=0

End If

Next

Et son résultat:

Du Grenouillage en perspective...

Par Franck Balmer - Publié dans : Bidouille Grenouille
Ecrire un commentaire - Voir les commentaires - Recommander
Lundi 8 janvier 2007

Bon c'est un lecteur pour C64, mais il est quand meme plus beau que ceux des PCs.

Encore du OldSchool en QuickBasic: Bidouillage de formats spéciaux et création d'erreurs:

'Implantation de protection

'Sur une D7.

'Formattage non standard

'Uniquement par le BIOS.

'Donc fonctionne sur toute machine.

'A soumettre au scanner ecrit en QB.

'

'Franck Balmer, Janvier 2007.

'Ben oui...

'

'BIOS Sub

DECLARE SUB GetDPT ()

DECLARE SUB SetDPT (sectsize%, nbrsect%)

DECLARE SUB ResetDrive (Drive%)

DECLARE SUB FormatTrack (Drive%, track%, head%, nbrsect%)

DECLARE SUB InitIDTable ()

DECLARE SUB InitIDTable2 ()

'$INCLUDE: 'QB.BI'

DIM reg AS RegTypeX, reg2 AS RegTypeX

DIM databuffer%(9216) '18 Secteurs = 9216

DIM formattable%(72) '18 Secteurs * 4 Octets

'Table pour 18 (max) IDs: Piste/Face/Secteur/Taille

DIM TrackInError%(2, 90) 'Attention sup a maxtrack

DIM SectorInError%(2, 90, 22)

CLS

INPUT "Side (0/1) : ", head%

INPUT "Track (0..79) : ", track%

'INPUT "To Track : ", maxtrack%

maxsect% = 9

size% = 512

nbrsect% = maxsect%

sectsize% = 2

'Always Floppy A:

Drive% = 0

rerr% = 0

GetDPT

CALL SetDPT(sectsize%, nbrsect%)

ResetDrive (Drive%)

InitIDTable2

CALL FormatTrack(Drive%, track%, head%, nbrsect%)

CALL SetDPT(2, 18)

ResetDrive (Drive%)

PRINT "Protection implented (Not Verified :) !"

'Happy New Year

END

 

SUB FormatTrack (Drive%, track%, head%, nbrsect%)

SHARED formattable%(), rerr%, reg AS RegTypeX, reg2 AS RegTypeX

intnum% = &H13

numsectors% = nbrsect%

reg.ds = -1

reg.es = VARSEG(formattable%(0))

reg.bx = VARPTR(formattable%(0))

reg.cx = 256 * track% + 0

reg.dx = 256 * head% + Drive%

reg.ax = 5 * 256 + numsectors% 'Fonction 5: Format

CALL INTERRUPTX(intnum%, reg, reg2)

reg.ax = &H100

CALL INTERRUPTX(intnum%, reg, reg2)

rerr% = INT((reg2.ax) / 256)

END SUB

SUB GetDPT

SHARED SegDPT, OffDPT

'On calcule adresse DPT

DEF SEG = &H0

OffDPT = PEEK(4 * &H1E) + 256 * PEEK(4 * &H1E + 1)

SegDPT = PEEK(4 * &H1E + 2) + 256 * PEEK(4 * &H1E + 3)

DEF SEG

'PRINT ">>DPT at: "; HEX$(SegDPT); ":"; HEX$(OffDPT)

END SUB

 

SUB InitIDTable2

SHARED formattable%(), track%, head%, nbrsect%, sectsize%

'On Poke comme des malades

SegIDTable = VARSEG(formattable%(0))

OffIDTable = VARPTR(formattable%(0))

DEF SEG = SegIDTable

'Initialisation (Pseudo) Table

s% = 1

FOR k% = 1 TO 4 * nbrsect% STEP 4

POKE OffIDTable + k% - 1, track%

POKE OffIDTable + k% + 0, head%

POKE OffIDTable + k% + 1, s%

POKE OffIDTable + k% + 2, sectsize%

s% = s% + 1

NEXT k%

'Ici on trafique la table des IDs

'Secteur par secteur

'Secteur 2

POKE OffIDTable + 4, track%

POKE OffIDTable + 5, head%

POKE OffIDTable + 6, 2

POKE OffIDTable + 7, 3

'Secteur 6

'POKE OffIDTable + 20, track%

'POKE OffIDTable + 21, head%

'POKE OffIDTable + 22, 6

'POKE OffIDTable + 23, 0

'Fin des manips...

DEF SEG

END SUB

 

SUB ResetDrive (Drive%)

DIM reg AS RegTypeX, reg2 AS RegTypeX

reg.ax = &H0 ' function number 0

reg.dx = Drive%

CALL INTERRUPTX(&H13, reg, reg2)

END SUB

SUB SetDPT (sectsize%, nbrsect%)

SHARED SegDPT, OffDPT

'On change des valeurs dans la Table des Params Disk

'Gére maintenant la taille des secteurs

DEF SEG = SegDPT

'Sector Size

POKE OffDPT + &H3, sectsize%

'Number of Sectors

POKE OffDPT + &H4, nbrsect%

DEF SEG

END SUB

Yop !

Par Franck Balmer - Publié dans : Code Memories
Ecrire un commentaire - Voir les commentaires - Recommander
Dimanche 7 janvier 2007

 

Par Franck Balmer - Publié dans : Actualité
Ecrire un commentaire - Voir les commentaires - Recommander
Créer un blog sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus