Buenas,
Resulta que en el programa taller 2015 tengo una pequeña herramienta que me ayuda a verificar los cheksum de las .iso de sistemas operativos que cada tanto hay que bajar.
Se puede usar de forma manual, es decir pegar el cheksum en un cuadro de texto, despues simplemente le damos al programa la ubicacion de la .iso y el programa hace la comprobación cuando termina veremos si esta todo bien o hubo error.
Pues bien tambien le di a esta herramienta la posiblilidad de extraer los cheksum de los archivos... ejemplo de archivo:
En ese archivo no parece complicado extraer la informacion y mostrarla en un tableview.....
pero... en el archivo siguiente el asunto se complica por su formato y por que varia el hash, indicado en una etiqueta 'hash:'
Ejemplo:
Bueno esta clase lo que hace es extraer los nombres de las distribuciones
indicado con la flecha azul de la derecha, y sus correspondientes hashes.
bueno les dejo el codigo para que experimenten.
la clase esta fresquita aun, seguramente tiene muchisimas mejoras, pero ya hace su tarea para lo cual fue creada.
Saludos.
' gambas class file
'Clase txtasc by postapase 28/12/2016
Public Const SHA1 As String = "SHA1"
Public Const SHA256 As String = "SHA256"
Public Const SHA512 As String = "SHA512"
Private Const COMIENZO As String = "-----BEGIN PGP SIGNED MESSAGE-----"
Private Const HASH As String = "Hash:"
Private Const FINAL As String = "-----BEGIN PGP SIGNATURE-----"
Property TipoHash As String
Property HashDistro As Collection
Private $TipoHash As String
Private $HashDistro As New Collection
Public Sub _new(RutaArchivo As String) ''Ingresar ruta de archivo *.txt.asc
Dim archivo As File
Dim parrafo As String
Dim tipo As String
Dim CorteTipoHash As New String[]
Dim CorteHash As New String[]
Dim Contenido As String
If Not Exist(RutaArchivo) Then
Debug Error.Text
Return
Endif
archivo = Open RutaArchivo For Read
While Not Eof(archivo)
Line Input #archivo, parrafo
If InStr(parrafo, FINAL) <> 0 Then Break
If InStr(parrafo, HASH) <> 0 Then
CorteTipoHash = Split(parrafo, " ", Null, True)
QueTipoDeHashEs(Trim(CorteTipoHash[1]))
Endif
If InStr(parrafo, COMIENZO) = 0 And If InStr(parrafo, HASH) = 0 And If Not IsNull(parrafo) Then
CorteHash = Split(parrafo, " ", Null, True)
$HashDistro.Add(Trim(CorteHash[0]), Trim(CorteHash[1]))
Endif
Wend
Close #archivo
HashDistro_Write($HashDistro)
End
Private Function TipoHash_Read() As String
Return $TipoHash
End
Private Sub TipoHash_Write(Value As String)
$TipoHash = Value
End
Private Function HashDistro_Read() As Collection
Return $HashDistro
End
Private Sub HashDistro_Write(Value As Collection)
$HashDistro = Value
End
Private Sub QueTipoDeHashEs(texto As String)
Select Case texto
Case SHA1
$TipoHash = SHA1
Case SHA256
$TipoHash = SHA256
Case SHA512
$TipoHash = SHA512
Case Else
$TipoHash = ""
End Select
TipoHash_Write($TipoHash)
End
'Clase txtasc by postapase 28/12/2016
Public Const SHA1 As String = "SHA1"
Public Const SHA256 As String = "SHA256"
Public Const SHA512 As String = "SHA512"
Private Const COMIENZO As String = "-----BEGIN PGP SIGNED MESSAGE-----"
Private Const HASH As String = "Hash:"
Private Const FINAL As String = "-----BEGIN PGP SIGNATURE-----"
Property TipoHash As String
Property HashDistro As Collection
Private $TipoHash As String
Private $HashDistro As New Collection
Public Sub _new(RutaArchivo As String) ''Ingresar ruta de archivo *.txt.asc
Dim archivo As File
Dim parrafo As String
Dim tipo As String
Dim CorteTipoHash As New String[]
Dim CorteHash As New String[]
Dim Contenido As String
If Not Exist(RutaArchivo) Then
Debug Error.Text
Return
Endif
archivo = Open RutaArchivo For Read
While Not Eof(archivo)
Line Input #archivo, parrafo
If InStr(parrafo, FINAL) <> 0 Then Break
If InStr(parrafo, HASH) <> 0 Then
CorteTipoHash = Split(parrafo, " ", Null, True)
QueTipoDeHashEs(Trim(CorteTipoHash[1]))
Endif
If InStr(parrafo, COMIENZO) = 0 And If InStr(parrafo, HASH) = 0 And If Not IsNull(parrafo) Then
CorteHash = Split(parrafo, " ", Null, True)
$HashDistro.Add(Trim(CorteHash[0]), Trim(CorteHash[1]))
Endif
Wend
Close #archivo
HashDistro_Write($HashDistro)
End
Private Function TipoHash_Read() As String
Return $TipoHash
End
Private Sub TipoHash_Write(Value As String)
$TipoHash = Value
End
Private Function HashDistro_Read() As Collection
Return $HashDistro
End
Private Sub HashDistro_Write(Value As Collection)
$HashDistro = Value
End
Private Sub QueTipoDeHashEs(texto As String)
Select Case texto
Case SHA1
$TipoHash = SHA1
Case SHA256
$TipoHash = SHA256
Case SHA512
$TipoHash = SHA512
Case Else
$TipoHash = ""
End Select
TipoHash_Write($TipoHash)
End